From e856205c2ec7b85fa5a5c86f4f26f260127c451e Mon Sep 17 00:00:00 2001 From: MinRK Date: Fri, 2 Aug 2013 21:12:06 -0700 Subject: [PATCH 001/146] Updated website (automated commit) --- _sources/index.txt | 10 ++++---- _sources/news.txt | 2 +- _static/basic.css | 2 +- _static/doctools.js | 16 +++++++++++-- _static/underscore.js | 50 ++++++++++++++++----------------------- _static/websupport.js | 2 +- citing.html | 5 ++-- documentation.html | 5 ++-- donate.html | 5 ++-- faq.html | 5 ++-- index.html | 13 +++++----- install.html | 5 ++-- news.html | 7 +++--- notebook.html | 5 ++-- presentation.html | 5 ++-- pyreadline.html | 5 ++-- roadmap-announcement.html | 5 ++-- screenshots/index.html | 2 +- search.html | 7 +++--- searchresults.html | 5 ++-- showmedo.html | 5 ++-- sloan-grant.html | 5 ++-- usersurvey2011.html | 5 ++-- videos.html | 5 ++-- whatsnew082.html | 5 ++-- whatsnew083.html | 5 ++-- 26 files changed, 105 insertions(+), 86 deletions(-) diff --git a/_sources/index.txt b/_sources/index.txt index 04fc735..0525ad0 100644 --- a/_sources/index.txt +++ b/_sources/index.txt @@ -66,13 +66,11 @@ Announcements ============= -.. _100alpha: http://archive.ipython.org/testing/1.0.0/ - - **IPython 1.0** We are getting ready to release IPython 1.0. - We have an alpha release `ready for testing <100alpha>`_, out on July 21, 2013, - and should have a release candidate around August 1. - The alpha has gone fairly smoothly, so assuming all goes well with the release candidate - IPython 1.0.0 should be released by around August 15, 2013. + We have a Release Candidate `ready for testing `_, + out on August 2, 2013. + The alpha went fairly smoothly, so assuming all goes well with the release candidate + IPython 1.0.0 should be released by around August 10, 2013. - **Book**: Cyrille Rossant has published the first IPython-focused book: `Learning IPython for Interactive Computing and Data Visualization diff --git a/_sources/news.txt b/_sources/news.txt index d5d14b9..6f2d45a 100644 --- a/_sources/news.txt +++ b/_sources/news.txt @@ -43,7 +43,7 @@ details. This will probably be the last release before 1.0. Roadmap to 1.0 and Beyond ------------------------- -IPython 1.0 is coming mid-July 2013. See the grant_ which is funding the bulk +IPython 1.0 is coming Summer 2013. See the grant_ which is funding the bulk of the work, as well as our roadmap_ for achieving the grant's objectives. `Read on for more details `_. diff --git a/_static/basic.css b/_static/basic.css index 5562f68..1e02c5d 100644 --- a/_static/basic.css +++ b/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/_static/doctools.js b/_static/doctools.js index 8614442..d4619fd 100644 --- a/_static/doctools.js +++ b/_static/doctools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for all documentation. * - * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -32,7 +32,7 @@ if (!window.console || !console.firebug) { */ jQuery.urldecode = function(x) { return decodeURIComponent(x).replace(/\+/g, ' '); -}; +} /** * small helper function to urlencode strings @@ -61,6 +61,18 @@ jQuery.getQueryParameters = function(s) { 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. diff --git a/_static/underscore.js b/_static/underscore.js index 5b55f32..5d89914 100644 --- a/_static/underscore.js +++ b/_static/underscore.js @@ -1,31 +1,23 @@ -// Underscore.js 1.3.1 -// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc. -// Underscore is freely distributable under the MIT license. -// Portions of Underscore are inspired or borrowed from Prototype, +// Underscore.js 0.5.5 +// (c) 2009 Jeremy Ashkenas, DocumentCloud Inc. +// Underscore is freely distributable under the terms of the MIT license. +// Portions of Underscore are inspired by or borrowed from Prototype.js, // Oliver Steele's Functional, and John Resig's Micro-Templating. // For all details and documentation: -// http://documentcloud.github.com/underscore -(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source== -c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c, -h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each= -b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e2;a== -null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect= -function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e= -e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck= -function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;bd?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a, -c,d){d||(d=b.identity);for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e=0;d--)b=[a[d].apply(this,b)];return b[0]}}; -b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments, -1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)}; -b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"}; -b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a), -function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+ -u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]= -function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain= -true;return this};m.prototype.value=function(){return this._wrapped}}).call(this); +// http://documentcloud.github.com/underscore/ +(function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;gf?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)}); +return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length); +var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false; +if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length== +0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&& +a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g, +" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments); +o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})(); diff --git a/_static/websupport.js b/_static/websupport.js index 19fcda5..e9bd1b8 100644 --- a/_static/websupport.js +++ b/_static/websupport.js @@ -4,7 +4,7 @@ * * sphinx.websupport utilties for all documentation. * - * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/citing.html b/citing.html index c8af354..d58a6cb 100644 --- a/citing.html +++ b/citing.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@ - - @@ -251,7 +250,7 @@

Search

diff --git a/searchresults.html b/searchresults.html index 1f5a418..adb585f 100644 --- a/searchresults.html +++ b/searchresults.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@ + + @@ -115,12 +116,12 @@

Versions

Stable

- 0.13.2 – April 2013
- Download + 1.0 – August 2013
+ Install

Development

- 1.0.dev
+ 2.0.dev
Github
@@ -250,7 +251,7 @@

Search

diff --git a/searchresults.html b/searchresults.html index adb585f..e057ccf 100644 --- a/searchresults.html +++ b/searchresults.html @@ -1,5 +1,4 @@ - @@ -27,7 +26,7 @@
-

Book

+

Notebook Viewer

- +Share your notebooks +
+ + + +
@@ -167,6 +166,15 @@

Community

+
+

Book

+ + + +
+

For developers

@@ -249,7 +257,7 @@

Citing IPython © Copyright the IPython development team. - Created using Sphinx 1.2b1. + Created using Sphinx 1.1.3.

diff --git a/documentation.html b/documentation.html index b6c9381..8af8203 100644 --- a/documentation.html +++ b/documentation.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
-

Book

+

Notebook Viewer

- +Share your notebooks +
+ + + +
@@ -167,6 +166,15 @@

Community

+
+

Book

+ + + +
+

For developers

@@ -234,6 +242,7 @@

Other useful documentationVideos and screencasts.
  • IPython screenshots.
  • +
  • ‘IPython quick referance card <http://damontallen.github.io/IPython-quick-ref-sheets/>`_.
  • An article about IPython, written by Fernando Perez and Brian Granger, published in the May/June 2007 issue of the journal Computing in Science and Engineering.
  • @@ -305,7 +314,7 @@

    Other projects using IPython © Copyright the IPython development team. - Created using Sphinx 1.2b1. + Created using Sphinx 1.1.3.

    diff --git a/donate.html b/donate.html index 231319f..688d9b4 100644 --- a/donate.html +++ b/donate.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
    -

    Book

    +

    Notebook Viewer

    - +Share your notebooks +
    + + + +
    @@ -166,6 +165,15 @@

    Community

    +
    +

    Book

    + + + +
    +

    For developers

    @@ -247,7 +255,7 @@

    Support IPython Development © Copyright the IPython development team. - Created using Sphinx 1.2b1. + Created using Sphinx 1.1.3.

    diff --git a/faq.html b/faq.html index 3637226..637947e 100644 --- a/faq.html +++ b/faq.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
    -

    Book

    +

    Notebook Viewer

    - +Share your notebooks +
    + + + +
    @@ -167,6 +166,15 @@

    Community

    +
    +

    Book

    + + + +
    +

    For developers

    @@ -275,7 +283,7 @@

    What is the best way to install IPython? © Copyright the IPython development team. - Created using Sphinx 1.2b1. + Created using Sphinx 1.1.3.

    diff --git a/gh-pages/build/Pygments/tests/examplefiles/functional.html b/gh-pages/build/Pygments/tests/examplefiles/functional.html new file mode 100644 index 0000000..d904f5f --- /dev/null +++ b/gh-pages/build/Pygments/tests/examplefiles/functional.html @@ -0,0 +1,1491 @@ + + + + + + + + + + Functional Programming HOWTO — IPython + + + + + + + + + + + + + +
    +
    + + +
    + Install Β· +Docs Β· +Videos Β· +Notebook Viewer Β· +News Β· +Cite Β· +Donate +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    Loading
    + + + + +
    +
    +

    Versions

    + +

    Stable

    + 1.0 – August 2013
    + Install +
    + +

    Development

    + 2.0.dev
    + Github +
    + +
    + + + + +
    +

    Notebook Viewer

    + +Share your notebooks + +
    + + + +
    +
    + +
    +

    Community

    + + + +
    + + + + + +
    + +
    + + +
    +

    Book

    + + + +
    + + + + +
    + + +
    +
    +
    + +
    + +
    +
    +
    + +
    +

    Functional Programming HOWTOΒΆ

    +

    Version 0.30

    +

    (This is a first draft. Please send comments/error +reports/suggestions to amk@amk.ca. This URL is probably not going to +be the final location of the document, so be careful about linking to +it – you may want to add a disclaimer.)

    +

    In this document, we’ll take a tour of Python’s features suitable for +implementing programs in a functional style. After an introduction to +the concepts of functional programming, we’ll look at language +features such as iterators and generators and relevant library modules +such as itertools and functools.

    + +
    +

    IntroductionΒΆ

    +

    This section explains the basic concept of functional programming; if +you’re just interested in learning about Python language features, +skip to the next section.

    +

    Programming languages support decomposing problems in several different +ways:

    +
      +
    • Most programming languages are procedural: +programs are lists of instructions that tell the computer what to +do with the program’s input. +C, Pascal, and even Unix shells are procedural languages.
    • +
    • In declarative languages, you write a specification that describes +the problem to be solved, and the language implementation figures out +how to perform the computation efficiently. SQL is the declarative +language you’re most likely to be familiar with; a SQL query describes +the data set you want to retrieve, and the SQL engine decides whether to +scan tables or use indexes, which subclauses should be performed first, +etc.
    • +
    • Object-oriented programs manipulate collections of objects. +Objects have internal state and support methods that query or modify +this internal state in some way. Smalltalk and Java are +object-oriented languages. C++ and Python are languages that +support object-oriented programming, but don’t force the use +of object-oriented features.
    • +
    • Functional programming decomposes a problem into a set of functions. +Ideally, functions only take inputs and produce outputs, and don’t have any +internal state that affects the output produced for a given input. +Well-known functional languages include the ML family (Standard ML, +OCaml, and other variants) and Haskell.
    • +
    +

    The designers of some computer languages have chosen one approach to +programming that’s emphasized. This often makes it difficult to +write programs that use a different approach. Other languages are +multi-paradigm languages that support several different approaches. Lisp, +C++, and Python are multi-paradigm; you can write programs or +libraries that are largely procedural, object-oriented, or functional +in all of these languages. In a large program, different sections +might be written using different approaches; the GUI might be object-oriented +while the processing logic is procedural or functional, for example.

    +

    In a functional program, input flows through a set of functions. Each +function operates on its input and produces some output. Functional +style frowns upon functions with side effects that modify internal +state or make other changes that aren’t visible in the function’s +return value. Functions that have no side effects at all are +called purely functional. +Avoiding side effects means not using data structures +that get updated as a program runs; every function’s output +must only depend on its input.

    +

    Some languages are very strict about purity and don’t even have +assignment statements such as a=3 or c = a + b, but it’s +difficult to avoid all side effects. Printing to the screen or +writing to a disk file are side effects, for example. For example, in +Python a print statement or a time.sleep(1) both return no +useful value; they’re only called for their side effects of sending +some text to the screen or pausing execution for a second.

    +

    Python programs written in functional style usually won’t go to the +extreme of avoiding all I/O or all assignments; instead, they’ll +provide a functional-appearing interface but will use non-functional +features internally. For example, the implementation of a function +will still use assignments to local variables, but won’t modify global +variables or have other side effects.

    +

    Functional programming can be considered the opposite of +object-oriented programming. Objects are little capsules containing +some internal state along with a collection of method calls that let +you modify this state, and programs consist of making the right set of +state changes. Functional programming wants to avoid state changes as +much as possible and works with data flowing between functions. In +Python you might combine the two approaches by writing functions that +take and return instances representing objects in your application +(e-mail messages, transactions, etc.).

    +

    Functional design may seem like an odd constraint to work under. Why +should you avoid objects and side effects? There are theoretical and +practical advantages to the functional style:

    +
      +
    • Formal provability.
    • +
    • Modularity.
    • +
    • Composability.
    • +
    • Ease of debugging and testing.
    • +
    +
    +

    Formal provabilityΒΆ

    +

    A theoretical benefit is that it’s easier to construct a mathematical proof +that a functional program is correct.

    +

    For a long time researchers have been interested in finding ways to +mathematically prove programs correct. This is different from testing +a program on numerous inputs and concluding that its output is usually +correct, or reading a program’s source code and concluding that the +code looks right; the goal is instead a rigorous proof that a program +produces the right result for all possible inputs.

    +

    The technique used to prove programs correct is to write down +invariants, properties of the input data and of the program’s +variables that are always true. For each line of code, you then show +that if invariants X and Y are true before the line is executed, +the slightly different invariants X’ and Y’ are true after +the line is executed. This continues until you reach the end of the +program, at which point the invariants should match the desired +conditions on the program’s output.

    +

    Functional programming’s avoidance of assignments arose because +assignments are difficult to handle with this technique; +assignments can break invariants that were true before the assignment +without producing any new invariants that can be propagated onward.

    +

    Unfortunately, proving programs correct is largely impractical and not +relevant to Python software. Even trivial programs require proofs that +are several pages long; the proof of correctness for a moderately +complicated program would be enormous, and few or none of the programs +you use daily (the Python interpreter, your XML parser, your web +browser) could be proven correct. Even if you wrote down or generated +a proof, there would then be the question of verifying the proof; +maybe there’s an error in it, and you wrongly believe you’ve proved +the program correct.

    +
    +
    +

    ModularityΒΆ

    +

    A more practical benefit of functional programming is that it forces +you to break apart your problem into small pieces. Programs are more +modular as a result. It’s easier to specify and write a small +function that does one thing than a large function that performs a +complicated transformation. Small functions are also easier to read +and to check for errors.

    +
    +
    +

    Ease of debugging and testingΒΆ

    +

    Testing and debugging a functional-style program is easier.

    +

    Debugging is simplified because functions are generally small and +clearly specified. When a program doesn’t work, each function is an +interface point where you can check that the data are correct. You +can look at the intermediate inputs and outputs to quickly isolate the +function that’s responsible for a bug.

    +

    Testing is easier because each function is a potential subject for a +unit test. Functions don’t depend on system state that needs to be +replicated before running a test; instead you only have to synthesize +the right input and then check that the output matches expectations.

    +
    +
    +

    ComposabilityΒΆ

    +

    As you work on a functional-style program, you’ll write a number of +functions with varying inputs and outputs. Some of these functions +will be unavoidably specialized to a particular application, but +others will be useful in a wide variety of programs. For example, a +function that takes a directory path and returns all the XML files in +the directory, or a function that takes a filename and returns its +contents, can be applied to many different situations.

    +

    Over time you’ll form a personal library of utilities. Often you’ll +assemble new programs by arranging existing functions in a new +configuration and writing a few functions specialized for the current +task.

    +
    +
    +
    +

    IteratorsΒΆ

    +

    I’ll start by looking at a Python language feature that’s an important +foundation for writing functional-style programs: iterators.

    +

    An iterator is an object representing a stream of data; this object +returns the data one element at a time. A Python iterator must +support a method called next() that takes no arguments and always +returns the next element of the stream. If there are no more elements +in the stream, next() must raise the StopIteration exception. +Iterators don’t have to be finite, though; it’s perfectly reasonable +to write an iterator that produces an infinite stream of data.

    +

    The built-in iter() function takes an arbitrary object and tries +to return an iterator that will return the object’s contents or +elements, raising TypeError if the object doesn’t support +iteration. Several of Python’s built-in data types support iteration, +the most common being lists and dictionaries. An object is called +an iterable object if you can get an iterator for it.

    +

    You can experiment with the iteration interface manually:

    +
    >>> L = [1,2,3]
    +>>> it = iter(L)
    +>>> print it
    +<iterator object at 0x8116870>
    +>>> it.next()
    +1
    +>>> it.next()
    +2
    +>>> it.next()
    +3
    +>>> it.next()
    +Traceback (most recent call last):
    +  File "<stdin>", line 1, in ?
    +StopIteration
    +>>>
    +
    +
    +

    Python expects iterable objects in several different contexts, the +most important being the for statement. In the statement for X in Y, +Y must be an iterator or some object for which iter() can create +an iterator. These two statements are equivalent:

    +
    for i in iter(obj):
    +    print i
    +
    +for i in obj:
    +    print i
    +
    +
    +

    Iterators can be materialized as lists or tuples by using the +list() or tuple() constructor functions:

    +
    >>> L = [1,2,3]
    +>>> iterator = iter(L)
    +>>> t = tuple(iterator)
    +>>> t
    +(1, 2, 3)
    +
    +
    +

    Sequence unpacking also supports iterators: if you know an iterator +will return N elements, you can unpack them into an N-tuple:

    +
    >>> L = [1,2,3]
    +>>> iterator = iter(L)
    +>>> a,b,c = iterator
    +>>> a,b,c
    +(1, 2, 3)
    +
    +
    +

    Built-in functions such as max() and min() can take a single +iterator argument and will return the largest or smallest element. +The "in" and "not in" operators also support iterators: X in +iterator is true if X is found in the stream returned by the +iterator. You’ll run into obvious problems if the iterator is +infinite; max(), min(), and "not in" will never return, and +if the element X never appears in the stream, the "in" operator +won’t return either.

    +

    Note that you can only go forward in an iterator; there’s no way to +get the previous element, reset the iterator, or make a copy of it. +Iterator objects can optionally provide these additional capabilities, +but the iterator protocol only specifies the next() method. +Functions may therefore consume all of the iterator’s output, and if +you need to do something different with the same stream, you’ll have +to create a new iterator.

    +
    +

    Data Types That Support IteratorsΒΆ

    +

    We’ve already seen how lists and tuples support iterators. In fact, +any Python sequence type, such as strings, will automatically support +creation of an iterator.

    +

    Calling iter() on a dictionary returns an iterator that will loop +over the dictionary’s keys:

    +
    >>> m = {'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6,
    +...      'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12}
    +>>> for key in m:
    +...     print key, m[key]
    +Mar 3
    +Feb 2
    +Aug 8
    +Sep 9
    +May 5
    +Jun 6
    +Jul 7
    +Jan 1
    +Apr 4
    +Nov 11
    +Dec 12
    +Oct 10
    +
    +
    +

    Note that the order is essentially random, because it’s based on the +hash ordering of the objects in the dictionary.

    +

    Applying iter() to a dictionary always loops over the keys, but +dictionaries have methods that return other iterators. If you want to +iterate over keys, values, or key/value pairs, you can explicitly call +the iterkeys(), itervalues(), or iteritems() methods to +get an appropriate iterator.

    +

    The dict() constructor can accept an iterator that returns a +finite stream of (key, value) tuples:

    +
    >>> L = [('Italy', 'Rome'), ('France', 'Paris'), ('US', 'Washington DC')]
    +>>> dict(iter(L))
    +{'Italy': 'Rome', 'US': 'Washington DC', 'France': 'Paris'}
    +
    +
    +

    Files also support iteration by calling the readline() +method until there are no more lines in the file. This means you can +read each line of a file like this:

    +
    for line in file:
    +    # do something for each line
    +    ...
    +
    +
    +

    Sets can take their contents from an iterable and let you iterate over +the set’s elements:

    +
    S = set((2, 3, 5, 7, 11, 13))
    +for i in S:
    +    print i
    +
    +
    +
    +
    +
    +

    Generator expressions and list comprehensionsΒΆ

    +

    Two common operations on an iterator’s output are 1) performing some +operation for every element, 2) selecting a subset of elements that +meet some condition. For example, given a list of strings, you might +want to strip off trailing whitespace from each line or extract all +the strings containing a given substring.

    +

    List comprehensions and generator expressions (short form: “listcomps” +and “genexps”) are a concise notation for such operations, borrowed +from the functional programming language Haskell +(http://www.haskell.org). You can strip all the whitespace from a +stream of strings with the following code:

    +
    line_list = ['  line 1\n', 'line 2  \n', ...]
    +
    +# Generator expression -- returns iterator
    +stripped_iter = (line.strip() for line in line_list)
    +
    +# List comprehension -- returns list
    +stripped_list = [line.strip() for line in line_list]
    +
    +
    +

    You can select only certain elements by adding an "if" condition:

    +
    stripped_list = [line.strip() for line in line_list
    +                 if line != ""]
    +
    +
    +

    With a list comprehension, you get back a Python list; +stripped_list is a list containing the resulting lines, not an +iterator. Generator expressions return an iterator that computes the +values as necessary, not needing to materialize all the values at +once. This means that list comprehensions aren’t useful if you’re +working with iterators that return an infinite stream or a very large +amount of data. Generator expressions are preferable in these +situations.

    +

    Generator expressions are surrounded by parentheses (“()”) and list +comprehensions are surrounded by square brackets (“[]”). Generator +expressions have the form:

    +
    ( expression for expr in sequence1
    +             if condition1
    +             for expr2 in sequence2
    +             if condition2
    +             for expr3 in sequence3 ...
    +             if condition3
    +             for exprN in sequenceN
    +             if conditionN )
    +
    +

    Again, for a list comprehension only the outside brackets are +different (square brackets instead of parentheses).

    +

    The elements of the generated output will be the successive values of +expression. The if clauses are all optional; if present, +expression is only evaluated and added to the result when +condition is true.

    +

    Generator expressions always have to be written inside parentheses, +but the parentheses signalling a function call also count. If you +want to create an iterator that will be immediately passed to a +function you can write:

    +
    obj_total = sum(obj.count for obj in list_all_objects())
    +
    +
    +

    The for...in clauses contain the sequences to be iterated over. +The sequences do not have to be the same length, because they are +iterated over from left to right, not in parallel. For each +element in sequence1, sequence2 is looped over from the +beginning. sequence3 is then looped over for each +resulting pair of elements from sequence1 and sequence2.

    +

    To put it another way, a list comprehension or generator expression is +equivalent to the following Python code:

    +
    for expr1 in sequence1:
    +    if not (condition1):
    +        continue   # Skip this element
    +    for expr2 in sequence2:
    +        if not (condition2):
    +            continue    # Skip this element
    +        ...
    +        for exprN in sequenceN:
    +             if not (conditionN):
    +                 continue   # Skip this element
    +
    +             # Output the value of
    +             # the expression.
    +
    +
    +

    This means that when there are multiple for...in clauses but no +if clauses, the length of the resulting output will be equal to +the product of the lengths of all the sequences. If you have two +lists of length 3, the output list is 9 elements long:

    +
    seq1 = 'abc'
    +seq2 = (1,2,3)
    +>>> [ (x,y) for x in seq1 for y in seq2]
    +[('a', 1), ('a', 2), ('a', 3),
    + ('b', 1), ('b', 2), ('b', 3),
    + ('c', 1), ('c', 2), ('c', 3)]
    +
    +

    To avoid introducing an ambiguity into Python’s grammar, if +expression is creating a tuple, it must be surrounded with +parentheses. The first list comprehension below is a syntax error, +while the second one is correct:

    +
    # Syntax error
    +[ x,y for x in seq1 for y in seq2]
    +# Correct
    +[ (x,y) for x in seq1 for y in seq2]
    +
    +
    +
    +

    GeneratorsΒΆ

    +

    Generators are a special class of functions that simplify the task of +writing iterators. Regular functions compute a value and return it, +but generators return an iterator that returns a stream of values.

    +

    You’re doubtless familiar with how regular function calls work in +Python or C. When you call a function, it gets a private namespace +where its local variables are created. When the function reaches a +return statement, the local variables are destroyed and the +value is returned to the caller. A later call to the same function +creates a new private namespace and a fresh set of local +variables. But, what if the local variables weren’t thrown away on +exiting a function? What if you could later resume the function where +it left off? This is what generators provide; they can be thought of +as resumable functions.

    +

    Here’s the simplest example of a generator function:

    +
    def generate_ints(N):
    +    for i in range(N):
    +        yield i
    +
    +
    +

    Any function containing a yield keyword is a generator function; +this is detected by Python’s bytecode compiler which compiles the +function specially as a result.

    +

    When you call a generator function, it doesn’t return a single value; +instead it returns a generator object that supports the iterator +protocol. On executing the yield expression, the generator +outputs the value of i, similar to a return +statement. The big difference between yield and a +return statement is that on reaching a yield the +generator’s state of execution is suspended and local variables are +preserved. On the next call to the generator’s .next() method, +the function will resume executing.

    +

    Here’s a sample usage of the generate_ints() generator:

    +
    >>> gen = generate_ints(3)
    +>>> gen
    +<generator object at 0x8117f90>
    +>>> gen.next()
    +0
    +>>> gen.next()
    +1
    +>>> gen.next()
    +2
    +>>> gen.next()
    +Traceback (most recent call last):
    +  File "stdin", line 1, in ?
    +  File "stdin", line 2, in generate_ints
    +StopIteration
    +
    +
    +

    You could equally write for i in generate_ints(5), or +a,b,c = generate_ints(3).

    +

    Inside a generator function, the return statement can only be used +without a value, and signals the end of the procession of values; +after executing a return the generator cannot return any further +values. return with a value, such as return 5, is a syntax +error inside a generator function. The end of the generator’s results +can also be indicated by raising StopIteration manually, or by +just letting the flow of execution fall off the bottom of the +function.

    +

    You could achieve the effect of generators manually by writing your +own class and storing all the local variables of the generator as +instance variables. For example, returning a list of integers could +be done by setting self.count to 0, and having the +next() method increment self.count and return it. +However, for a moderately complicated generator, writing a +corresponding class can be much messier.

    +

    The test suite included with Python’s library, test_generators.py, +contains a number of more interesting examples. Here’s one generator +that implements an in-order traversal of a tree using generators +recursively.

    +
    # A recursive generator that generates Tree leaves in in-order.
    +def inorder(t):
    +    if t:
    +        for x in inorder(t.left):
    +            yield x
    +
    +        yield t.label
    +
    +        for x in inorder(t.right):
    +            yield x
    +
    +
    +

    Two other examples in test_generators.py produce +solutions for the N-Queens problem (placing N queens on an NxN +chess board so that no queen threatens another) and the Knight’s Tour +(finding a route that takes a knight to every square of an NxN chessboard +without visiting any square twice).

    +
    +

    Passing values into a generatorΒΆ

    +

    In Python 2.4 and earlier, generators only produced output. Once a +generator’s code was invoked to create an iterator, there was no way to +pass any new information into the function when its execution is +resumed. You could hack together this ability by making the +generator look at a global variable or by passing in some mutable object +that callers then modify, but these approaches are messy.

    +

    In Python 2.5 there’s a simple way to pass values into a generator. +yield became an expression, returning a value that can be assigned +to a variable or otherwise operated on:

    +
    val = (yield i)
    +
    +
    +

    I recommend that you always put parentheses around a yield +expression when you’re doing something with the returned value, as in +the above example. The parentheses aren’t always necessary, but it’s +easier to always add them instead of having to remember when they’re +needed.

    +

    (PEP 342 explains the exact rules, which are that a +yield-expression must always be parenthesized except when it +occurs at the top-level expression on the right-hand side of an +assignment. This means you can write val = yield i but have to +use parentheses when there’s an operation, as in val = (yield i) ++ 12.)

    +

    Values are sent into a generator by calling its +send(value) method. This method resumes the +generator’s code and the yield expression returns the specified +value. If the regular next() method is called, the +yield returns None.

    +

    Here’s a simple counter that increments by 1 and allows changing the +value of the internal counter.

    +
    def counter (maximum):
    +    i = 0
    +    while i < maximum:
    +        val = (yield i)
    +        # If value provided, change counter
    +        if val is not None:
    +            i = val
    +        else:
    +            i += 1
    +
    +
    +

    And here’s an example of changing the counter:

    +
    >>> it = counter(10)
    +>>> print it.next()
    +0
    +>>> print it.next()
    +1
    +>>> print it.send(8)
    +8
    +>>> print it.next()
    +9
    +>>> print it.next()
    +Traceback (most recent call last):
    +  File ``t.py'', line 15, in ?
    +    print it.next()
    +StopIteration
    +
    +

    Because yield will often be returning None, you +should always check for this case. Don’t just use its value in +expressions unless you’re sure that the send() method +will be the only method used resume your generator function.

    +

    In addition to send(), there are two other new methods on +generators:

    +
      +
    • throw(type, value=None, traceback=None) is used to raise an exception inside the +generator; the exception is raised by the yield expression +where the generator’s execution is paused.

      +
    • +
    • close() raises a GeneratorExit +exception inside the generator to terminate the iteration. +On receiving this +exception, the generator’s code must either raise +GeneratorExit or StopIteration; catching the +exception and doing anything else is illegal and will trigger +a RuntimeError. close() will also be called by +Python’s garbage collector when the generator is garbage-collected.

      +

      If you need to run cleanup code when a GeneratorExit occurs, +I suggest using a try: ... finally: suite instead of +catching GeneratorExit.

      +
    • +
    +

    The cumulative effect of these changes is to turn generators from +one-way producers of information into both producers and consumers.

    +

    Generators also become coroutines, a more generalized form of +subroutines. Subroutines are entered at one point and exited at +another point (the top of the function, and a return +statement), but coroutines can be entered, exited, and resumed at +many different points (the yield statements).

    +
    +
    +
    +

    Built-in functionsΒΆ

    +

    Let’s look in more detail at built-in functions often used with iterators.

    +

    Two Python’s built-in functions, map() and filter(), are +somewhat obsolete; they duplicate the features of list comprehensions +but return actual lists instead of iterators.

    +

    map(f, iterA, iterB, ...) returns a list containing f(iterA[0], +iterB[0]), f(iterA[1], iterB[1]), f(iterA[2], iterB[2]), ....

    +
    def upper(s):
    +    return s.upper()
    +map(upper, ['sentence', 'fragment']) =>
    +  ['SENTENCE', 'FRAGMENT']
    +
    +[upper(s) for s in ['sentence', 'fragment']] =>
    +  ['SENTENCE', 'FRAGMENT']
    +
    +

    As shown above, you can achieve the same effect with a list +comprehension. The itertools.imap() function does the same thing +but can handle infinite iterators; it’ll be discussed later, in the section on +the itertools module.

    +

    filter(predicate, iter) returns a list +that contains all the sequence elements that meet a certain condition, +and is similarly duplicated by list comprehensions. +A predicate is a function that returns the truth value of +some condition; for use with filter(), the predicate must take a +single value.

    +
    def is_even(x):
    +    return (x % 2) == 0
    +
    +filter(is_even, range(10)) =>
    +  [0, 2, 4, 6, 8]
    +
    +

    This can also be written as a list comprehension:

    +
    >>> [x for x in range(10) if is_even(x)]
    +[0, 2, 4, 6, 8]
    +
    +
    +

    filter() also has a counterpart in the itertools module, +itertools.ifilter(), that returns an iterator and +can therefore handle infinite sequences just as itertools.imap() can.

    +

    reduce(func, iter, [initial_value]) doesn’t have a counterpart in +the itertools module because it cumulatively performs an operation +on all the iterable’s elements and therefore can’t be applied to +infinite iterables. func must be a function that takes two elements +and returns a single value. reduce() takes the first two elements +A and B returned by the iterator and calculates func(A, B). It +then requests the third element, C, calculates func(func(A, B), +C), combines this result with the fourth element returned, and +continues until the iterable is exhausted. If the iterable returns no +values at all, a TypeError exception is raised. If the initial +value is supplied, it’s used as a starting point and +func(initial_value, A) is the first calculation.

    +
    import operator
    +reduce(operator.concat, ['A', 'BB', 'C']) =>
    +  'ABBC'
    +reduce(operator.concat, []) =>
    +  TypeError: reduce() of empty sequence with no initial value
    +reduce(operator.mul, [1,2,3], 1) =>
    +  6
    +reduce(operator.mul, [], 1) =>
    +  1
    +
    +

    If you use operator.add with reduce(), you’ll add up all the +elements of the iterable. This case is so common that there’s a special +built-in called sum() to compute it:

    +
    reduce(operator.add, [1,2,3,4], 0) =>
    +  10
    +sum([1,2,3,4]) =>
    +  10
    +sum([]) =>
    +  0
    +
    +

    For many uses of reduce(), though, it can be clearer to just write +the obvious for loop:

    +
    # Instead of:
    +product = reduce(operator.mul, [1,2,3], 1)
    +
    +# You can write:
    +product = 1
    +for i in [1,2,3]:
    +    product *= i
    +
    +
    +

    enumerate(iter) counts off the elements in the iterable, returning +2-tuples containing the count and each element.

    +
    enumerate(['subject', 'verb', 'object']) =>
    +  (0, 'subject'), (1, 'verb'), (2, 'object')
    +
    +

    enumerate() is often used when looping through a list +and recording the indexes at which certain conditions are met:

    +
    f = open('data.txt', 'r')
    +for i, line in enumerate(f):
    +    if line.strip() == '':
    +        print 'Blank line at line #%i' % i
    +
    +
    +

    sorted(iterable, [cmp=None], [key=None], [reverse=False) +collects all the elements of the iterable into a list, sorts +the list, and returns the sorted result. The cmp, key, +and reverse arguments are passed through to the +constructed list’s .sort() method.

    +
    import random
    +# Generate 8 random numbers between [0, 10000)
    +rand_list = random.sample(range(10000), 8)
    +rand_list =>
    +  [769, 7953, 9828, 6431, 8442, 9878, 6213, 2207]
    +sorted(rand_list) =>
    +  [769, 2207, 6213, 6431, 7953, 8442, 9828, 9878]
    +sorted(rand_list, reverse=True) =>
    +  [9878, 9828, 8442, 7953, 6431, 6213, 2207, 769]
    +
    +

    (For a more detailed discussion of sorting, see the Sorting mini-HOWTO +in the Python wiki at http://wiki.python.org/moin/HowTo/Sorting.)

    +

    The any(iter) and all(iter) built-ins look at +the truth values of an iterable’s contents. any() returns +True if any element in the iterable is a true value, and all() +returns True if all of the elements are true values:

    +
    any([0,1,0]) =>
    +  True
    +any([0,0,0]) =>
    +  False
    +any([1,1,1]) =>
    +  True
    +all([0,1,0]) =>
    +  False
    +all([0,0,0]) =>
    +  False
    +all([1,1,1]) =>
    +  True
    +
    +
    +
    +

    Small functions and the lambda statementΒΆ

    +

    When writing functional-style programs, you’ll often need little +functions that act as predicates or that combine elements in some way.

    +

    If there’s a Python built-in or a module function that’s suitable, you +don’t need to define a new function at all:

    +
    stripped_lines = [line.strip() for line in lines]
    +existing_files = filter(os.path.exists, file_list)
    +
    +
    +

    If the function you need doesn’t exist, you need to write it. One way +to write small functions is to use the lambda statement. lambda +takes a number of parameters and an expression combining these parameters, +and creates a small function that returns the value of the expression:

    +
    lowercase = lambda x: x.lower()
    +
    +print_assign = lambda name, value: name + '=' + str(value)
    +
    +adder = lambda x, y: x+y
    +
    +
    +

    An alternative is to just use the def statement and define a +function in the usual way:

    +
    def lowercase(x):
    +    return x.lower()
    +
    +def print_assign(name, value):
    +    return name + '=' + str(value)
    +
    +def adder(x,y):
    +    return x + y
    +
    +
    +

    Which alternative is preferable? That’s a style question; my usual +course is to avoid using lambda.

    +

    One reason for my preference is that lambda is quite limited in +the functions it can define. The result has to be computable as a +single expression, which means you can’t have multiway +if... elif... else comparisons or try... except statements. +If you try to do too much in a lambda statement, you’ll end up +with an overly complicated expression that’s hard to read. Quick, +what’s the following code doing?

    +
    total = reduce(lambda a, b: (0, a[1] + b[1]), items)[1]
    +
    +
    +

    You can figure it out, but it takes time to disentangle the expression +to figure out what’s going on. Using a short nested +def statements makes things a little bit better:

    +
    def combine (a, b):
    +    return 0, a[1] + b[1]
    +
    +total = reduce(combine, items)[1]
    +
    +
    +

    But it would be best of all if I had simply used a for loop:

    +
    total = 0
    +for a, b in items:
    +    total += b
    +
    +
    +

    Or the sum() built-in and a generator expression:

    +
    total = sum(b for a,b in items)
    +
    +
    +

    Many uses of reduce() are clearer when written as for loops.

    +

    Fredrik Lundh once suggested the following set of rules for refactoring +uses of lambda:

    +
      +
    1. Write a lambda function.
    2. +
    3. Write a comment explaining what the heck that lambda does.
    4. +
    5. Study the comment for a while, and think of a name that captures +the essence of the comment.
    6. +
    7. Convert the lambda to a def statement, using that name.
    8. +
    9. Remove the comment.
    10. +
    +

    I really like these rules, but you’re free to disagree that this +lambda-free style is better.

    +
    +
    +

    The itertools moduleΒΆ

    +

    The itertools module contains a number of commonly-used iterators +as well as functions for combining several iterators. This section +will introduce the module’s contents by showing small examples.

    +

    The module’s functions fall into a few broad classes:

    +
      +
    • Functions that create a new iterator based on an existing iterator.
    • +
    • Functions for treating an iterator’s elements as function arguments.
    • +
    • Functions for selecting portions of an iterator’s output.
    • +
    • A function for grouping an iterator’s output.
    • +
    +
    +

    Creating new iteratorsΒΆ

    +

    itertools.count(n) returns an infinite stream of +integers, increasing by 1 each time. You can optionally supply the +starting number, which defaults to 0:

    +
    itertools.count() =>
    +  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ...
    +itertools.count(10) =>
    +  10, 11, 12, 13, 14, 15, 16, 17, 18, 19, ...
    +
    +

    itertools.cycle(iter) saves a copy of the contents of a provided +iterable and returns a new iterator that returns its elements from +first to last. The new iterator will repeat these elements infinitely.

    +
    itertools.cycle([1,2,3,4,5]) =>
    +  1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
    +
    +

    itertools.repeat(elem, [n]) returns the provided element n +times, or returns the element endlessly if n is not provided.

    +
    itertools.repeat('abc') =>
    +  abc, abc, abc, abc, abc, abc, abc, abc, abc, abc, ...
    +itertools.repeat('abc', 5) =>
    +  abc, abc, abc, abc, abc
    +
    +

    itertools.chain(iterA, iterB, ...) takes an arbitrary number of +iterables as input, and returns all the elements of the first +iterator, then all the elements of the second, and so on, until all of +the iterables have been exhausted.

    +
    itertools.chain(['a', 'b', 'c'], (1, 2, 3)) =>
    +  a, b, c, 1, 2, 3
    +
    +

    itertools.izip(iterA, iterB, ...) takes one element from each iterable +and returns them in a tuple:

    +
    itertools.izip(['a', 'b', 'c'], (1, 2, 3)) =>
    +  ('a', 1), ('b', 2), ('c', 3)
    +
    +

    It’s similiar to the built-in zip() function, but doesn’t +construct an in-memory list and exhaust all the input iterators before +returning; instead tuples are constructed and returned only if they’re +requested. (The technical term for this behaviour is +lazy evaluation.)

    +

    This iterator is intended to be used with iterables that are all of +the same length. If the iterables are of different lengths, the +resulting stream will be the same length as the shortest iterable.

    +
    itertools.izip(['a', 'b'], (1, 2, 3)) =>
    +  ('a', 1), ('b', 2)
    +
    +

    You should avoid doing this, though, because an element may be taken +from the longer iterators and discarded. This means you can’t go on +to use the iterators further because you risk skipping a discarded +element.

    +

    itertools.islice(iter, [start], stop, [step]) returns a stream +that’s a slice of the iterator. With a single stop argument, +it will return the first stop +elements. If you supply a starting index, you’ll get stop-start +elements, and if you supply a value for step, elements will be +skipped accordingly. Unlike Python’s string and list slicing, you +can’t use negative values for start, stop, or step.

    +
    itertools.islice(range(10), 8) =>
    +  0, 1, 2, 3, 4, 5, 6, 7
    +itertools.islice(range(10), 2, 8) =>
    +  2, 3, 4, 5, 6, 7
    +itertools.islice(range(10), 2, 8, 2) =>
    +  2, 4, 6
    +
    +

    itertools.tee(iter, [n]) replicates an iterator; it returns n +independent iterators that will all return the contents of the source +iterator. If you don’t supply a value for n, the default is 2. +Replicating iterators requires saving some of the contents of the source +iterator, so this can consume significant memory if the iterator is large +and one of the new iterators is consumed more than the others.

    +
    itertools.tee( itertools.count() ) =>
    +   iterA, iterB
    +
    +where iterA ->
    +   0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ...
    +
    +and   iterB ->
    +   0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ...
    +
    +
    +
    +

    Calling functions on elementsΒΆ

    +

    Two functions are used for calling other functions on the contents of an +iterable.

    +

    itertools.imap(f, iterA, iterB, ...) returns +a stream containing f(iterA[0], iterB[0]), f(iterA[1], iterB[1]), +f(iterA[2], iterB[2]), ...:

    +
    itertools.imap(operator.add, [5, 6, 5], [1, 2, 3]) =>
    +  6, 8, 8
    +
    +

    The operator module contains a set of functions +corresponding to Python’s operators. Some examples are +operator.add(a, b) (adds two values), +operator.ne(a, b) (same as a!=b), +and +operator.attrgetter('id') (returns a callable that +fetches the "id" attribute).

    +

    itertools.starmap(func, iter) assumes that the iterable will +return a stream of tuples, and calls f() using these tuples as the +arguments:

    +
    itertools.starmap(os.path.join,
    +                  [('/usr', 'bin', 'java'), ('/bin', 'python'),
    +                   ('/usr', 'bin', 'perl'),('/usr', 'bin', 'ruby')])
    +=>
    +  /usr/bin/java, /bin/python, /usr/bin/perl, /usr/bin/ruby
    +
    +
    +
    +

    Selecting elementsΒΆ

    +

    Another group of functions chooses a subset of an iterator’s elements +based on a predicate.

    +

    itertools.ifilter(predicate, iter) returns all the elements for +which the predicate returns true:

    +
    def is_even(x):
    +    return (x % 2) == 0
    +
    +itertools.ifilter(is_even, itertools.count()) =>
    +  0, 2, 4, 6, 8, 10, 12, 14, ...
    +
    +

    itertools.ifilterfalse(predicate, iter) is the opposite, +returning all elements for which the predicate returns false:

    +
    itertools.ifilterfalse(is_even, itertools.count()) =>
    +  1, 3, 5, 7, 9, 11, 13, 15, ...
    +
    +

    itertools.takewhile(predicate, iter) returns elements for as long +as the predicate returns true. Once the predicate returns false, +the iterator will signal the end of its results.

    +
    def less_than_10(x):
    +    return (x < 10)
    +
    +itertools.takewhile(less_than_10, itertools.count()) =>
    +  0, 1, 2, 3, 4, 5, 6, 7, 8, 9
    +
    +itertools.takewhile(is_even, itertools.count()) =>
    +  0
    +
    +

    itertools.dropwhile(predicate, iter) discards elements while the +predicate returns true, and then returns the rest of the iterable’s +results.

    +
    itertools.dropwhile(less_than_10, itertools.count()) =>
    +  10, 11, 12, 13, 14, 15, 16, 17, 18, 19, ...
    +
    +itertools.dropwhile(is_even, itertools.count()) =>
    +  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ...
    +
    +
    +
    +

    Grouping elementsΒΆ

    +

    The last function I’ll discuss, itertools.groupby(iter, +key_func=None), is the most complicated. key_func(elem) is a +function that can compute a key value for each element returned by the +iterable. If you don’t supply a key function, the key is simply each +element itself.

    +

    groupby() collects all the consecutive elements from the +underlying iterable that have the same key value, and returns a stream +of 2-tuples containing a key value and an iterator for the elements +with that key.

    +
    city_list = [('Decatur', 'AL'), ('Huntsville', 'AL'), ('Selma', 'AL'),
    +             ('Anchorage', 'AK'), ('Nome', 'AK'),
    +             ('Flagstaff', 'AZ'), ('Phoenix', 'AZ'), ('Tucson', 'AZ'),
    +             ...
    +            ]
    +
    +def get_state ((city, state)):
    +    return state
    +
    +itertools.groupby(city_list, get_state) =>
    +  ('AL', iterator-1),
    +  ('AK', iterator-2),
    +  ('AZ', iterator-3), ...
    +
    +where
    +iterator-1 =>
    +  ('Decatur', 'AL'), ('Huntsville', 'AL'), ('Selma', 'AL')
    +iterator-2 =>
    +  ('Anchorage', 'AK'), ('Nome', 'AK')
    +iterator-3 =>
    +  ('Flagstaff', 'AZ'), ('Phoenix', 'AZ'), ('Tucson', 'AZ')
    +
    +

    groupby() assumes that the underlying iterable’s contents will +already be sorted based on the key. Note that the returned iterators +also use the underlying iterable, so you have to consume the results +of iterator-1 before requesting iterator-2 and its corresponding key.

    +
    +
    +
    +

    The functools moduleΒΆ

    +

    The functools module in Python 2.5 contains some higher-order +functions. A higher-order function takes one or more functions as +input and returns a new function. The most useful tool in this module +is the partial() function.

    +

    For programs written in a functional style, you’ll sometimes want to +construct variants of existing functions that have some of the +parameters filled in. Consider a Python function f(a, b, c); you +may wish to create a new function g(b, c) that’s equivalent to +f(1, b, c); you’re filling in a value for one of f()‘s parameters. +This is called “partial function application”.

    +

    The constructor for partial takes the arguments (function, arg1, +arg2, ... kwarg1=value1, kwarg2=value2). The resulting object is +callable, so you can just call it to invoke function with the +filled-in arguments.

    +

    Here’s a small but realistic example:

    +
    import functools
    +
    +def log (message, subsystem):
    +    "Write the contents of 'message' to the specified subsystem."
    +    print '%s: %s' % (subsystem, message)
    +    ...
    +
    +server_log = functools.partial(log, subsystem='server')
    +server_log('Unable to open socket')
    +
    +
    +
    +
    +

    The operator moduleΒΆ

    +

    The operator module was mentioned earlier. It contains a set of +functions corresponding to Python’s operators. These functions +are often useful in functional-style code because they save you +from writing trivial functions that perform a single operation.

    +

    Some of the functions in this module are:

    +
      +
    • Math operations: add(), sub(), mul(), div(), floordiv(), +abs(), ...
    • +
    • Logical operations: not_(), truth().
    • +
    • Bitwise operations: and_(), or_(), invert().
    • +
    • Comparisons: eq(), ne(), lt(), le(), gt(), and ge().
    • +
    • Object identity: is_(), is_not().
    • +
    +

    Consult the operator module’s documentation for a complete +list.

    +
    +
    +

    The functional moduleΒΆ

    +

    Collin Winter’s functional module +provides a number of more +advanced tools for functional programming. It also reimplements +several Python built-ins, trying to make them more intuitive to those +used to functional programming in other languages.

    +

    This section contains an introduction to some of the most important +functions in functional; full documentation can be found at the +project’s website.

    +

    compose(outer, inner, unpack=False)

    +

    The compose() function implements function composition. +In other words, it returns a wrapper around the outer and inner callables, such +that the return value from inner is fed directly to outer. That is,

    +
    >>> def add(a, b):
    +...     return a + b
    +...
    +>>> def double(a):
    +...     return 2 * a
    +...
    +>>> compose(double, add)(5, 6)
    +22
    +
    +
    +

    is equivalent to

    +
    >>> double(add(5, 6))
    +22
    +
    +
    +

    The unpack keyword is provided to work around the fact that Python functions are not always +fully curried. +By default, it is expected that the inner function will return a single object and that the outer +function will take a single argument. Setting the unpack argument causes compose to expect a +tuple from inner which will be expanded before being passed to outer. Put simply,

    +
    compose(f, g)(5, 6)
    +
    +
    +

    is equivalent to:

    +
    f(g(5, 6))
    +
    +
    +

    while

    +
    compose(f, g, unpack=True)(5, 6)
    +
    +
    +

    is equivalent to:

    +
    f(*g(5, 6))
    +
    +
    +

    Even though compose() only accepts two functions, it’s trivial to +build up a version that will compose any number of functions. We’ll +use reduce(), compose() and partial() (the last of which +is provided by both functional and functools).

    +
    from functional import compose, partial
    +
    +multi_compose = partial(reduce, compose)
    +
    +
    +

    We can also use map(), compose() and partial() to craft a +version of "".join(...) that converts its arguments to string:

    +
    from functional import compose, partial
    +
    +join = compose("".join, partial(map, str))
    +
    +
    +

    flip(func)

    +

    flip() wraps the callable in func and +causes it to receive its non-keyword arguments in reverse order.

    +
    >>> def triple(a, b, c):
    +...     return (a, b, c)
    +...
    +>>> triple(5, 6, 7)
    +(5, 6, 7)
    +>>>
    +>>> flipped_triple = flip(triple)
    +>>> flipped_triple(5, 6, 7)
    +(7, 6, 5)
    +
    +
    +

    foldl(func, start, iterable)

    +

    foldl() takes a binary function, a starting value (usually some kind of ‘zero’), and an iterable. +The function is applied to the starting value and the first element of the list, then the result of +that and the second element of the list, then the result of that and the third element of the list, +and so on.

    +

    This means that a call such as:

    +
    foldl(f, 0, [1, 2, 3])
    +
    +
    +

    is equivalent to:

    +
    f(f(f(0, 1), 2), 3)
    +
    +
    +

    foldl() is roughly equivalent to the following recursive function:

    +
    def foldl(func, start, seq):
    +    if len(seq) == 0:
    +        return start
    +
    +    return foldl(func, func(start, seq[0]), seq[1:])
    +
    +
    +

    Speaking of equivalence, the above foldl call can be expressed in terms of the built-in reduce like +so:

    +
    reduce(f, [1, 2, 3], 0)
    +
    +
    +

    We can use foldl(), operator.concat() and partial() to +write a cleaner, more aesthetically-pleasing version of Python’s +"".join(...) idiom:

    +
    from functional import foldl, partial
    +from operator import concat
    +
    +join = partial(foldl, concat, "")
    +
    +
    +
    +
    +

    Revision History and AcknowledgementsΒΆ

    +

    The author would like to thank the following people for offering +suggestions, corrections and assistance with various drafts of this +article: Ian Bicking, Nick Coghlan, Nick Efford, Raymond Hettinger, +Jim Jewett, Mike Krell, Leandro Lameiro, Jussi Salmela, +Collin Winter, Blake Winton.

    +

    Version 0.1: posted June 30 2006.

    +

    Version 0.11: posted July 1 2006. Typo fixes.

    +

    Version 0.2: posted July 10 2006. Merged genexp and listcomp +sections into one. Typo fixes.

    +

    Version 0.21: Added more references suggested on the tutor mailing list.

    +

    Version 0.30: Adds a section on the functional module written by +Collin Winter; adds short section on the operator module; a few other +edits.

    +
    +
    +

    ReferencesΒΆ

    +
    +

    GeneralΒΆ

    +

    Structure and Interpretation of Computer Programs, by +Harold Abelson and Gerald Jay Sussman with Julie Sussman. +Full text at http://mitpress.mit.edu/sicp/. +In this classic textbook of computer science, chapters 2 and 3 discuss the +use of sequences and streams to organize the data flow inside a +program. The book uses Scheme for its examples, but many of the +design approaches described in these chapters are applicable to +functional-style Python code.

    +

    http://www.defmacro.org/ramblings/fp.html: A general +introduction to functional programming that uses Java examples +and has a lengthy historical introduction.

    +

    http://en.wikipedia.org/wiki/Functional_programming: +General Wikipedia entry describing functional programming.

    +

    http://en.wikipedia.org/wiki/Coroutine: +Entry for coroutines.

    +

    http://en.wikipedia.org/wiki/Currying: +Entry for the concept of currying.

    +
    +
    +

    Python-specificΒΆ

    +

    http://gnosis.cx/TPiP/: +The first chapter of David Mertz’s book Text Processing in Python +discusses functional programming for text processing, in the section titled +“Utilizing Higher-Order Functions in Text Processing”.

    +

    Mertz also wrote a 3-part series of articles on functional programming +for IBM’s DeveloperWorks site; see +part 1, +part 2, and +part 3,

    +
    +
    +

    Python documentationΒΆ

    +

    http://docs.python.org/lib/module-itertools.html: +Documentation for the itertools module.

    +

    http://docs.python.org/lib/module-operator.html: +Documentation for the operator module.

    +

    http://www.python.org/dev/peps/pep-0289/: +PEP 289: “Generator Expressions”

    +

    http://www.python.org/dev/peps/pep-0342/ +PEP 342: “Coroutines via Enhanced Generators” describes the new generator +features in Python 2.5.

    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/gh-pages/build/Pygments/tests/examplefiles/jinjadesignerdoc.html b/gh-pages/build/Pygments/tests/examplefiles/jinjadesignerdoc.html new file mode 100644 index 0000000..d896309 --- /dev/null +++ b/gh-pages/build/Pygments/tests/examplefiles/jinjadesignerdoc.html @@ -0,0 +1,892 @@ + + + + + + + + + + Designer Documentation — IPython + + + + + + + + + + + + + +
    +
    + + +
    + Install Β· +Docs Β· +Videos Β· +Notebook Viewer Β· +News Β· +Cite Β· +Donate +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    Loading
    + + + + +
    +
    +

    Versions

    + +

    Stable

    + 1.0 – August 2013
    + Install +
    + +

    Development

    + 2.0.dev
    + Github +
    + +
    + + + + +
    +

    Notebook Viewer

    + +Share your notebooks + +
    + + + +
    +
    + +
    +

    Community

    + + + +
    + + + + + +
    + +
    + + +
    +

    Book

    + + + +
    + + + + +
    + + +
    +
    +
    + +
    + +
    +
    +
    + +
    +

    Designer DocumentationΒΆ

    +

    This part of the Jinja documentaton is meant for template designers.

    +
    +

    BasicsΒΆ

    +

    The Jinja template language is designed to strike a balance between content +and application logic. Nevertheless you can use a python like statement +language. You don’t have to know how Python works to create Jinja templates, +but if you know it you can use some additional statements you may know from +Python.

    +

    Here is a small example template:

    +
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    +<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    +<head>
    +    <title>My Webpage</title>
    +</head>
    +<body>
    +    <ul id="navigation">
    +    {% for item in navigation %}
    +        <li><a href="{{ item.href|e }}">{{ item.caption|e }}</a></li>
    +    {% endfor %}
    +    </ul>
    +
    +    <h1>My Webpage</h1>
    +    {{ variable }}
    +</body>
    +</html>
    +
    +
    +

    This covers the default settings. The application developer might have changed +the syntax from {% foo %} to <% foo %> or something similar. This +documentation just covers the default values.

    +

    A variable looks like {{ foobar }} where foobar is the variable name. Inside +of statements ({% some content here %}) variables are just normal names +without the braces around it. In fact {{ foobar }} is just an alias for +the statement {% print foobar %}.

    +

    Variables are coming from the context provided by the application. Normally there +should be a documentation regarding the context contents but if you want to know +the content of the current context, you can add this to your template:

    +
    <pre>{{ debug()|e }}</pre>
    +
    +
    +

    A context isn’t flat which means that each variable can has subvariables, as long +as it is representable as python data structure. You can access attributes of +a variable using the dot and bracket operators. The following examples show +this:

    +
    {{ user.username }}
    +    is the same as
    +{{ user['username'] }}
    +    you can also use a variable to access an attribute:
    +{{ users[current_user].username }}
    +    If you have numerical indices you have to use the [] syntax:
    +{{ users[0].username }}
    +
    +
    +
    +
    +

    FiltersΒΆ

    +

    In the examples above you might have noticed the pipe symbols. Pipe symbols tell +the engine that it has to apply a filter on the variable. Here is a small example:

    +
    {{ variable|replace('foo', 'bar')|escape }}
    +
    +
    +

    If you want, you can also put whitespace between the filters.

    +

    This will look for a variable variable, pass it to the filter replace +with the arguments 'foo' and 'bar', and pass the result to the filter +escape that automatically XML-escapes the value. The e filter is an alias for +escape. Here is the complete list of supported filters:

    +

    [[list_of_filters]]

    +
    +

    note

    +

    Filters have a pretty low priority. If you want to add fitered values +you have to put them into parentheses. The same applies if you want to access +attributes:

    +
    correct:
    +    {{ (foo|filter) + (bar|filter) }}
    +wrong:
    +    {{ foo|filter + bar|filter }}
    +
    +correct:
    +    {{ (foo|filter).attribute }}
    +wrong:
    +    {{ foo|filter.attribute }}
    +
    +
    +
    +
    +
    +

    TestsΒΆ

    +

    You can use the is operator to perform tests on a value:

    +
    {{ 42 is numeric }} -> true
    +{{ "foobar" is numeric }} -> false
    +{{ 'FOO' is upper }} -> true
    +
    +
    +

    These tests are especially useful when used in if conditions.

    +

    [[list_of_tests]]

    +
    +
    +

    Global FunctionsΒΆ

    +

    Test functions and filter functions live in their own namespace. Global +functions not. They behave like normal objects in the context. Beside the +functions added by the application or framewhere there are two functions +available per default:

    +

    range

    +
    +
    Works like the python range function just that it doesn’t support +ranges greater than 1000000.
    +

    debug

    +
    +
    Function that outputs the contents of the context.
    +
    +
    +

    LoopsΒΆ

    +

    To iterate over a sequence, you can use the for loop. It basically looks like a +normal Python for loop and works pretty much the same:

    +
    <h1>Members</h1>
    +<ul>
    +{% for user in users %}
    +  <li>{{ loop.index }} / {{ loop.length }} - {{ user.username|escape }}</li>
    +{% else %}
    +  <li><em>no users found</em></li>
    +{% endfor %}
    +</ul>
    +
    +
    +

    Important Contrary to Python is the optional else block only +executed if there was no iteration because the sequence was empty.

    +

    Inside of a for loop block you can access some special variables:

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VariableDescription
    loop.indexThe current iteration of the loop.
    loop.index0The current iteration of the loop, +starting counting by 0.
    loop.revindexThe number of iterations from the end +of the loop.
    loop.revindex0The number of iterations from the end +of the loop, starting counting by 0.
    loop.firstTrue if first iteration.
    loop.lastTrue if last iteration.
    loop.evenTrue if current iteration is even.
    loop.oddTrue if current iteration is odd.
    loop.lengthTotal number of items in the sequence.
    loop.parentThe context of the parent loop.
    +

    Loops also support recursion. Let’s assume you have a sitemap where each item +might have a number of child items. A template for that could look like this:

    +
    <h1>Sitemap
    +<ul id="sitemap">
    +{% for item in sitemap recursive %}
    +  <li><a href="{{ item.url|e }}">{{ item.title|e }}</a>
    +  {% if item.children %}<ul>{{ loop(item.children) }}</ul>{% endif %}</li>
    +{% endfor %}
    +</ul>
    +
    +
    +

    What happens here? Basically the first thing that is different to a normal +loop is the additional recursive modifier in the for-loop declaration. +It tells the template engine that we want recursion. If recursion is enabled +the special loop variable is callable. If you call it with a sequence it will +automatically render the loop at that position with the new sequence as argument.

    +
    +
    +

    CyclingΒΆ

    +

    Sometimes you might want to have different text snippets for each row in a list, +for example to have alternating row colors. You can easily do this by using the +{% cycle %} tag:

    +
    <ul id="messages">
    +{% for message in messages %}
    +  <li class="{% cycle 'row1', 'row2' %}">{{ message|e }}</li>
    +{% endfor %}
    +</ul>
    +
    +
    +

    Each time Jinja encounters a cycle tag it will cycle through the list +of given items and return the next one. If you pass it one item jinja assumes +that this item is a sequence from the context and uses this:

    +
    <li style="color: {% cycle rowcolors %}">...</li>
    +
    +
    +
    +
    +

    ConditionsΒΆ

    +

    Jinja supports Python-like if / elif / else constructs:

    +
    {% if user.active %}
    +    user {{ user.name|e }} is active.
    +{% elif user.deleted %}
    +    user {{ user.name|e }} was deleted some time ago.
    +{% else %}
    +    i don't know what's wrong with {{ user.username|e }}
    +{% endif %}
    +
    +
    +

    If the user is active the first block is rendered. If not and the user was +deleted the second one, in all other cases the third one.

    +

    You can also use comparison operators:

    +
    {% if amount < 0 %}
    +    <span style="color: red">{{ amount }}</span>
    +{% else %}
    +    <span style="color: black">{{ amount }}</span>
    +{% endif %}
    +
    +
    +
    +

    Note

    +

    Of course you can use or / and and parentheses to create more complex +conditions, but usually the logic is already handled in the application and +you don’t have to create such complex constructs in the template code. However +in some situations it might be a good thing to have the abilities to create +them.

    +
    +
    +
    +

    OperatorsΒΆ

    +

    Inside {{ variable }} blocks, if conditions and many other parts you can +can use expressions. In expressions you can use any of the following operators:

    +
    +
    ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +add the right operand to the left one. +{{ 1 + 2 }} would return 3.
    -subtract the right operand from the left one. +{{ 1 - 1 }} would return 0.
    /divide the left operand by the right one. +{{ 1 / 2 }} would return 0.5.
    *multiply the left operand with the right one. +{{ 2 * 2 }} would return 4.
    **raise the left operand to the power of the right +operand. {{ 2**3 }} would return 8.
    inperform sequence membership test. {{ 1 in [1,2,3] }} would +return true.
    isperform a test on the value. See the section about +tests for more information.
    |apply a filter on the value. See the section about +filters for more information.
    andreturn true if the left and the right operand is true.
    orreturn true if the left or the right operand is true.
    notnegate a statement (see below)
    ()call a callable: {{ user.get_username() }}. Inside of the +parentheses you can use variables: {{ user.get(username) }}.
    +
    +

    Note that there is no support for any bit operations or something similar.

    +
      +
    • special note regarding not: The is and in operators support negation +using an infix notation too: foo is not bar and foo not in bar +instead of not foo is bar and not foo in bar. All other expressions +require a prefix notation: not (foo and bar).
    • +
    +
    +
    +

    Boolean ValuesΒΆ

    +

    In If-Conditions Jinja performs a boolean check. All empty values (eg: empty +lists [], empty dicts {} etc) evaluate to false. Numbers that are +equal to 0/0.00 are considered false too. The boolean value of other +objects depends on the behavior the application developer gave it. Usually +items are true.

    +

    Here some examples that should explain it:

    +
    {% if [] %}
    +    will always be false because it's an empty list
    +
    +{% if {} %}
    +    false too.
    +
    +{% if ['foo'] %}
    +    this is true. Because the list is not empty.
    +
    +{% if "foobar" %}
    +    this is also true because the string is not empty.
    +
    +
    +
    +
    +

    SlicingΒΆ

    +

    Some objects support slicing operations. For example lists:

    +
    {% for item in items[:5] %}
    +    This will only iterate over the first 5 items of the list
    +
    +{% for item in items[5:10] %}
    +    This will only iterate from item 5 to 10.
    +
    +{% for item in items[:10:2] %}
    +    This will only yield items from start to ten and only returing
    +    even items.
    +
    +
    +

    For more informations about slicing have a look at the slicing chapter +in the “Dive into Python” e-book.

    +
    +
    +

    MacrosΒΆ

    +

    If you want to use a partial template in more than one place, you might want to +create a macro from it:

    +
    {% macro show_user user %}
    +  <h1>{{ user.name|e }}</h1>
    +  <div class="test">
    +    {{ user.description }}
    +  </div>
    +{% endmacro %}
    +
    +
    +

    Now you can use it from everywhere in the code by passing it an item:

    +
    {% for user in users %}
    +    {{ show_user(user) }}
    +{% endfor %}
    +
    +
    +

    You can also specify more than one value:

    +
    {% macro show_dialog title, text %}
    +  <div class="dialog">
    +    <h1>{{ title|e }}</h1>
    +    <div class="test">{{ text|e }}</div>
    +  </div>
    +{% endmacro %}
    +
    +{{ show_dialog('Warning', 'something went wrong i guess') }}
    +
    +
    +
    +
    +

    InheritanceΒΆ

    +

    The most powerful part of Jinja is template inheritance. Template inheritance +allows you to build a base “skeleton” template that contains all the common +elements of your site and defines blocks that child templates can override.

    +

    Sounds complicated but is very basic. It’s easiest to understand it by starting +with an example.

    +
    +

    Base TemplateΒΆ

    +

    This template, which we’ll call base.html, defines a simple HTML skeleton +document that you might use for a simple two-column page. It’s the job of +“child” templates to fill the empty blocks with content:

    +
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    +<html xmlns="http://www.w3.org/1999/xhtml">
    +<head>
    +  <link rel="stylesheet" href="style.css" />
    +  <title>{% block title %}{% endblock %} - My Webpage</title>
    +  {% block html_head %}{% endblock %}
    +</head>
    +<body>
    +  <div id="content">
    +    {% block content %}{% endblock %}
    +  </div>
    +
    +  <div id="footer">
    +    {% block footer %}
    +    &copy; Copyright 2006 by <a href="http://mydomain.tld">myself</a>.
    +    {% endblock %}
    +  </div>
    +</body>
    +
    +
    +

    In this example, the {% block %} tags define four blocks that child templates +can fill in. All the block tag does is to tell the template engine that a +child template may override those portions of the template.

    +
    +
    +

    Child TemplateΒΆ

    +

    A child template might look like this:

    +
    {% extends "base.html" %}
    +{% block title %}Index{% endblock %}
    +
    +{% block html_head %}
    +  <style type="text/css">
    +    .important {
    +      color: #336699;
    +    }
    +  </style>
    +{% endblock %}
    +
    +{% block content %}
    +    <h1>Index</h1>
    +    <p class="important">
    +      Welcome on my awsome homepage.
    +    </p>
    +{% endblock %}
    +
    +
    +

    The {% extends %} tag is the key here. It tells the template engine that +this template “extends” another template. When the template system evaluates +this template, first it locates the parent.

    +

    The filename of the template depends on the template loader. For example the +FileSystemLoader allows you to access other templates by giving the +filename. You can access templates in subdirectories with an slash:

    +
    {% extends "layout/default.html" %}
    +
    +
    +

    But this behavior can depend on the application using Jinja.

    +

    Note that since the child template didn’t define the footer block, the +value from the parent template is used instead.

    +
    +

    Note

    +

    You can’t define multiple {% block %} tags with the same name in the +same template. This limitation exists because a block tag works in “both” +directions. That is, a block tag doesn’t just provide a hole to fill - it +also defines the content that fills the hole in the parent. If there were +two similarly-named {% block %} tags in a template, that template’s +parent wouldn’t know which one of the blocks’ content to use.

    +
    +
    +
    +
    +

    Template InclusionΒΆ

    +

    You can load another template at a given position using {% include %}. +Usually it’s a better idea to use inheritance but if you for example want to +load macros, include works better than extends:

    +
    {% include "myhelpers.html" %}
    +{{ my_helper("foo") }}
    +
    +
    +

    If you define a macro called my_helper in myhelpers.html, you can now +use it from the template as shown above.

    +
    +
    +

    Filtering BlocksΒΆ

    +

    Sometimes it could be a good idea to filter a complete block of text. For +example, if you want to escape some html code:

    +
    {% filter escape %}
    +    <html>
    +      <code>goes here</code>
    +    </html>
    +{% endfilter %}
    +
    +
    +

    Of course you can chain filters too:

    +
    {% filter lower|escape %}
    +    <B>SOME TEXT</B>
    +{% endfilter %}
    +
    +
    +

    returns "&lt;b&gt;some text&lt;/b&gt;".

    +
    +
    +

    Defining VariablesΒΆ

    +

    You can also define variables in the namespace using the {% set %} tag:

    +
    {% set foo = 'foobar' %}
    +{{ foo }}
    +
    +
    +

    This should ouput foobar.

    +
    +
    +

    ScopesΒΆ

    +

    Jinja has multiple scopes. A scope is something like a new transparent foil on +a stack of foils. You can only write to the outermost foil but read all of them +since you can look through them. If you remove the top foil all data on that +foil disappears. Some tags in Jinja add a new layer to the stack. Currently +these are block, for, macro and filter. This means that variables and +other elements defined inside a macro, loop or some of the other tags listed +above will be only available in that block. Here an example:

    +
    {% macro angryhello name %}
    +  {% set angryname = name|upper %}
    +  Hello {{ name }}. Hello {{ name }}!
    +  HELLO {{ angryname }}!!!!!!111
    +{% endmacro %}
    +
    +
    +

    The variable angryname just exists inside the macro, not outside it.

    +

    Defined macros appear on the context as variables. Because of this, they are +affected by the scoping too. A macro defined inside of a macro is just available +in those two macros (the macro itself and the macro it’s defined in). For set +and macro two additional rules exist: If a macro is defined in an extended +template but outside of a visible block (thus outside of any block) will be +available in all blocks below. This allows you to use include statements to +load often used macros at once.

    +
    +
    +

    Undefined VariablesΒΆ

    +

    If you have already worked with python you probably know about the fact that +undefined variables raise an exception. This is different in Jinja. There is a +special value called undefined that represents values that do not exist.

    +

    This special variable works complete different from any variables you maybe +know. If you print it using {{ variable }} it will not appear because it’s +literally empty. If you try to iterate over it, it will work. But no items +are returned. Comparing this value to any other value results in false. +Even if you compare it to itself:

    +
    {{ undefined == undefined }}
    +    will return false. Not even undefined is undefined :)
    +    Use `is defined` / `is not defined`:
    +
    +{{ undefined is not defined }}
    +    will return true.
    +
    +
    +

    There are also some additional rules regarding this special value. Any +mathematical operators (+, -, *, /) return the operand +as result:

    +
    {{ undefined + "foo" }}
    +    returns "foo"
    +
    +{{ undefined - 42 }}
    +    returns 42. Note: not -42!
    +
    +
    +

    In any expression undefined evaluates to false. It has no length, all +attribute calls return undefined, calling too:

    +
    {{ undefined.attribute().attribute_too[42] }}
    +    still returns `undefined`.
    +
    +
    +
    +
    +

    EscapingΒΆ

    +

    Sometimes you might want to add Jinja syntax elements into the template +without executing them. In that case you have quite a few possibilities.

    +

    For small parts this might be a good way:

    +
    {{ "{{ foo }} is variable syntax and {% foo %} is block syntax" }}
    +
    +
    +

    When you have multiple elements you can use the raw block:

    +
    {% raw %}
    +    Filtering blocks works like this in Jinja:
    +    {% filter escape %}
    +        <html>
    +          <code>goes here</code>
    +        </html>
    +    {% endfilter %}
    +{% endraw %}
    +
    +
    +
    +
    +

    Reserved KeywordsΒΆ

    +

    Jinja has some keywords you cannot use a variable names. This limitation +exists to make look coherent. Syntax highlighters won’t mess things up and +you will don’t have unexpected output.

    +

    The following keywords exist and cannot be used as identifiers:

    +
    +
    and, block, cycle, elif, else, endblock, endfilter, +endfor, endif, endmacro, endraw, endtrans, extends, filter, +for, if, in, include, is, macro, not, or, pluralize, +raw, recursive, set, trans
    +

    If you want to use such a name you have to prefix or suffix it or use +alternative names:

    +
    {% for macro_ in macros %}
    +    {{ macro_('foo') }}
    +{% endfor %}
    +
    +
    +

    If future Jinja releases add new keywords those will be “light” keywords which +means that they won’t raise an error for several releases but yield warnings +on the application side. But it’s very unlikely that new keywords will be +added.

    +
    +
    +

    InternationalizationΒΆ

    +

    If the application is configured for i18n, you can define translatable blocks +for translators using the trans tag or the special underscore function:

    +
    {% trans %}
    +    this is a translatable block
    +{% endtrans %}
    +
    +{% trans "This is a translatable string" %}
    +
    +{{ _("This is a translatable string") }}
    +
    +
    +

    The latter one is useful if you want translatable arguments for filters etc.

    +

    If you want to have plural forms too, use the pluralize block:

    +
    {% trans users=users %}
    +    One user found.
    +{% pluralize %}
    +    {{ users }} users found.
    +{% endtrans %}
    +
    +{% trans first=(users|first).username|escape, user=users|length %}
    +    one user {{ first }} found.
    +{% pluralize users %}
    +    {{ users }} users found, the first one is called {{ first }}.
    +{% endtrans %}
    +
    +
    +

    If you have multiple arguments, the first one is assumed to be the indicator (the +number that is used to determine the correct singular or plural form. If you +don’t have the indicator variable on position 1 you have to tell the pluralize +tag the correct variable name.

    +

    Inside translatable blocks you cannot use blocks or expressions (however you can +still use the raw block which will work as expected). The variable +print syntax ({{ variablename }}) is the only way to insert the variables +defined in the trans header. Filters must be applied in the header.

    +
    +

    note

    +

    Please make sure that you always use pluralize blocks where required. +Many languages have more complex plural forms than the English language.

    +

    Never try to workaround that issue by using something like this:

    +
    {% if count != 1 %}
    +    {{ count }} users found.
    +{% else %}
    +    one user found.
    +{% endif %}
    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/gh-pages/build/commando/AUTHORS.html b/gh-pages/build/commando/AUTHORS.html new file mode 100644 index 0000000..b241ee8 --- /dev/null +++ b/gh-pages/build/commando/AUTHORS.html @@ -0,0 +1,273 @@ + + + + + + + + + + Authors — IPython + + + + + + + + + + + + + +
    +
    + + +
    + Install Β· +Docs Β· +Videos Β· +Notebook Viewer Β· +News Β· +Cite Β· +Donate +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    Loading
    + + + + +
    +
    +

    Versions

    + +

    Stable

    + 1.0 – August 2013
    + Install +
    + +

    Development

    + 2.0.dev
    + Github +
    + +
    + + + + +
    +

    Notebook Viewer

    + +Share your notebooks + +
    + + + +
    +
    + +
    +

    Community

    + + + +
    + + + + + +
    + +
    + + +
    +

    Book

    + + + +
    + + + + +
    + + +
    +
    +
    + +
    + +
    +
    +
    + +
    +

    AuthorsΒΆ

    +
      +
    • Lakshmi Vyas

      +
        +
      • Maintainer.
      • +
      +
    • +
    • Brandon Philips

      +
        +
      • Clean up packaging issues.
          +
        • Use distribute to peek into the package to get the issue number. +{38e21c48680873fc7409effb654c0c733024e9e1}.
        • +
        • Get install_requires from the requirements.txt file. +{d8b29fa3fe2f0bdeeda91c445a9aea38b8fa5b70}.
        • +
        +
      • +
      +
    • +
    • Ben West

      +
        +
      • Allow parameterless subcommands and commands. (Pull #4).
      • +
      +
    • +
    • Julien Danjou

      +
        +
      • Support for nested subcommands. (Pull #7)
      • +
      +
    • +
    • fruch

      +
      +

      Use the parameters in the same order as provided. (Pulls #8)

      +
      +
    • +
    +
    + + +
    +
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/gh-pages/build/commando/CHANGELOG.html b/gh-pages/build/commando/CHANGELOG.html new file mode 100644 index 0000000..8f8c578 --- /dev/null +++ b/gh-pages/build/commando/CHANGELOG.html @@ -0,0 +1,302 @@ + + + + + + + + + + Version 0.3.2a — IPython + + + + + + + + + + + + + +
    +
    + + +
    + Install Β· +Docs Β· +Videos Β· +Notebook Viewer Β· +News Β· +Cite Β· +Donate +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    Loading
    + + + + +
    +
    +

    Versions

    + +

    Stable

    + 1.0 – August 2013
    + Install +
    + +

    Development

    + 2.0.dev
    + Github +
    + +
    + + + + +
    +

    Notebook Viewer

    + +Share your notebooks + +
    + + + +
    +
    + +
    +

    Community

    + + + +
    + + + + + +
    + +
    + + +
    +

    Book

    + + + +
    + + + + +
    + + +
    +
    +
    + +
    + +
    +
    +
    + +
    +

    Version 0.3.2aΒΆ

    +
      +
    • Add load_python_object to load a python object using a qualified name.
    • +
    +
    +
    +

    Version 0.3.1aΒΆ

    +

    Thanks to `fruch :

    +
      +
    • Preserve the order of parameters in declaration.
    • +
    +
    +
    +

    Version 0.3aΒΆ

    +

    Thanks to Julien Danjou :

    +
      +
    • Add support for nested sub commands. +{0e26a6fe2571accb78d26318ab1b8dc65636d2b0}. (Pull #7)
    • +
    +
    +
    +

    Version 0.2.1aΒΆ

    +

    Thanks to Ben West :

    +
      +
    • Allow commands to have no params.
    • +
    +
    +
    +

    Version 0.2aΒΆ

    +
      +
    • Bundle various frequently used utilities with commando. +(ShellCommand, ConfigDict, autoprop and logging helpers). +{63525646bb366f4def3c5065a51a404b18269873}. (Pull #4)
    • +
    +
    +
    +

    Version 0.1.3aΒΆ

    +
      +
    • Commando must consume exceptions by default. Any exception should be +communicated in a friendly manner to the user via the parser or the +given logger. {0e26a6fe2571accb78d26318ab1b8dc65636d2b0}.
    • +
    +
    +
    +

    Version 0.1.2aΒΆ

    +

    Thanks to Brandon Philips :

    +
      +
    • Use distribute_setup.py.
    • +
    • Derive version from pkg_resources.
    • +
    • Add argparse as a dependency.
    • +
    +
    +
    +

    Version 0.1.1aΒΆ

    +
      +
    • Add more decorators that map to argparse parameters.
    • +
    +
    +
    +

    Version 0.1aΒΆ

    +
      +
    • Create a simple meta programmed wrapper around argparse.
    • +
    +
    + + +
    +
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/gh-pages/build/commando/CONTRIBUTING.html b/gh-pages/build/commando/CONTRIBUTING.html new file mode 100644 index 0000000..ea309cd --- /dev/null +++ b/gh-pages/build/commando/CONTRIBUTING.html @@ -0,0 +1,276 @@ + + + + + + + + + + How do the pull requests get merged? — IPython + + + + + + + + + + + + + +
    +
    + + +
    + Install Β· +Docs Β· +Videos Β· +Notebook Viewer Β· +News Β· +Cite Β· +Donate +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    Loading
    + + + + +
    +
    +

    Versions

    + +

    Stable

    + 1.0 – August 2013
    + Install +
    + +

    Development

    + 2.0.dev
    + Github +
    + +
    + + + + +
    +

    Notebook Viewer

    + +Share your notebooks + +
    + + + +
    +
    + +
    +

    Community

    + + + +
    + + + + + +
    + +
    + + +
    +

    Book

    + + + +
    + + + + +
    + + +
    +
    +
    + +
    + +
    +
    +
    + +

    tl;dr Good (code + tests + commit message) = Great Pull Request.

    +
    +
    +

    How do the pull requests get merged?ΒΆ

    +

    The following points are considered as part of merging pull requests after +it is deemed necessary.

    +
      +
    1. Is there an issue tagged in the commit?
    2. +
    3. Do the existing tests pass?
    4. +
    5. Are there new tests added to verify any new functionality / issue?
    6. +
    7. Is the authors list up to date?
    8. +
    9. Is the changelog updated?
    10. +
    11. Is the version updated?
    12. +
    13. Does this require any changes to the documentation?
    14. +
    +
    +
    +

    GuidelinesΒΆ

    +

    If the following guidelines are observed as much as possible, it will +immensely help in verifying and merging the pull requests.

    +
      +
    1. One pull request = One feature or One bug.
    2. +
    3. Always tag an issue in the commit. If an issue does +not exist for a feature or a bug, please add one.
    4. +
    5. Use topic / feature branches.
    6. +
    7. Make sure a test exists to verify the committed code. A +good way to think about it is: if these commits were reversed +and only the test were added back in, it ought to fail.
    8. +
    9. Make the commit message as verbose as possible.
    10. +
    11. Add yourself to Authors list and update your contribution.
    12. +
    13. Cross update Changelog list as well.
    14. +
    15. Update version.py and README.rst with a version in this format: +<version>-<yourusername><issuenumber>.
    16. +
    17. If the change was complicated and resulted in a lot of commits, +consider rebase -i to sqash and/or rearrange them to make it easier +to review.
    18. +
    19. Update the Readme.
    20. +
    +
    + + +
    +
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/gh-pages/build/commando/README.html b/gh-pages/build/commando/README.html new file mode 100644 index 0000000..d3754d1 --- /dev/null +++ b/gh-pages/build/commando/README.html @@ -0,0 +1,301 @@ + + + + + + + + + + commando - argparse in style — IPython + + + + + + + + + + + + + +
    +
    + + +
    + Install Β· +Docs Β· +Videos Β· +Notebook Viewer Β· +News Β· +Cite Β· +Donate +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    Loading
    + + + + +
    +
    +

    Versions

    + +

    Stable

    + 1.0 – August 2013
    + Install +
    + +

    Development

    + 2.0.dev
    + Github +
    + +
    + + + + +
    +

    Notebook Viewer

    + +Share your notebooks + +
    + + + +
    +
    + +
    +

    Community

    + + + +
    + + + + + +
    + +
    + + +
    +

    Book

    + + + +
    + + + + +
    + + +
    +
    +
    + +
    + +
    +
    +
    + +
    +

    commando - argparse in styleΒΆ

    +

    Version 0.3.2a

    +

    A simple wrapper for argparse that allows commands and arguments +to be defined declaratively using decorators. Note that this does +not support all the features of argparse yet.

    +

    Commando also bundles a few utilities that are useful when building +command line applications.

    +
    +

    ExampleΒΆ

    +

    Without commando:

    +
    def main():
    +    parser = argparse.ArgumentParser(description='hyde - a python static website generator',
    +                                  epilog='Use %(prog)s {command} -h to get help on individual commands')
    +    parser.add_argument('-v', '--version', action='version', version='%(prog)s ' + __version__)
    +    parser.add_argument('-s', '--sitepath', action='store', default='.', help="Location of the hyde site")
    +    subcommands = parser.add_subparsers(title="Hyde commands",
    +                                     description="Entry points for hyde")
    +    init_command = subcommands.add_parser('init', help='Create a new hyde site')
    +    init_command.set_defaults(run=init)
    +    init_command.add_argument('-t', '--template', action='store', default='basic', dest='template',
    +                     help='Overwrite the current site if it exists')
    +    init_command.add_argument('-f', '--force', action='store_true', default=False, dest='force',
    +                     help='Overwrite the current site if it exists')
    +    args = parser.parse_args()
    +    args.run(args)
    +
    +def init(self, params):
    +    print params.sitepath
    +    print params.template
    +    print params.overwrite
    +
    +
    +

    With commando:

    +
    class Engine(Application):
    +
    +    @command(description='hyde - a python static website generator',
    +            epilog='Use %(prog)s {command} -h to get help on individual commands')
    +    @param('-v', '--version', action='version', version='%(prog)s ' + __version__)
    +    @param('-s', '--sitepath', action='store', default='.', help="Location of the hyde site")
    +    def main(self, params): pass
    +
    +    @subcommand('init', help='Create a new hyde site')
    +    @param('-t', '--template', action='store', default='basic', dest='template',
    +            help='Overwrite the current site if it exists')
    +    @param('-f', '--force', action='store_true', default=False, dest='overwrite',
    +            help='Overwrite the current site if it exists')
    +    def init(self, params):
    +        print params.sitepath
    +        print params.template
    +        print params.overwrite
    +
    +
    +
    + +
    + + +
    +
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/index.html b/index.html index 17fea2e..415f4fe 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
    -

    Book

    +

    Notebook Viewer

    - +Share your notebooks +
    + + + +
    @@ -166,6 +165,15 @@

    Community

    +
    +

    Book

    + + + +
    +

    For developers

    @@ -273,32 +281,7 @@

    AnnouncementsSee more details.

    More news...

    -

    John Hunter (1968-2012)

    - - - - - - - -
    - - -

    - On August 28 2012 at 10am, John D. Hunter, creator of matplotlib - and IPython contributor, died from complications - arising from cancer treatment, after a brief but intense battle with - this terrible illness. John is survived by his wife Miriam, his - three daughters Rahel, Ava and Clara, his sisters Layne and Mary, - and his mother Sarah.

    - -

    - If you have benefited from John's many contributions, please say - thanks in the way that would matter most to him: by making a donation to - the John Hunter Memorial - Fund.

    -
    +

    Citing IPythonΒΆ

    Several of the authors of IPython are connected with academic and scientific @@ -361,7 +344,7 @@

    Support © Copyright the IPython development team. - Created using Sphinx 1.2b1. + Created using Sphinx 1.1.3.

    diff --git a/install.html b/install.html index 138a8b0..ad3291d 100644 --- a/install.html +++ b/install.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
    -

    Book

    +

    Notebook Viewer

    - +Share your notebooks +
    + + + +
    @@ -167,6 +166,15 @@

    Community

    +
    +

    Book

    + + + +
    +

    For developers

    @@ -305,7 +313,7 @@

    Installing IPython © Copyright the IPython development team. - Created using Sphinx 1.2b1. + Created using Sphinx 1.1.3.

    diff --git a/news.html b/news.html index afe6e2a..8eed53a 100644 --- a/news.html +++ b/news.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
    -

    Book

    +

    Notebook Viewer

    - +Share your notebooks +
    + + + +
    @@ -167,6 +166,15 @@

    Community

    +
    +

    Book

    + + + +
    +

    For developers

    @@ -507,7 +515,7 @@

    IPython 0.7.2 is released (June 6, 2006) © Copyright the IPython development team. - Created using Sphinx 1.2b1. + Created using Sphinx 1.1.3.

    diff --git a/notebook.html b/notebook.html index 17ee4c9..1c44027 100644 --- a/notebook.html +++ b/notebook.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
    -

    Book

    +

    Notebook Viewer

    - +Share your notebooks +
    + + + +
    @@ -167,6 +166,15 @@

    Community

    +
    +

    Book

    + + + +
    +

    For developers

    @@ -243,7 +251,7 @@

    Support IPython

    diff --git a/presentation.html b/presentation.html index ce8bc5a..6de6a6b 100644 --- a/presentation.html +++ b/presentation.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
    -

    Book

    +

    Notebook Viewer

    - +Share your notebooks +
    + + + +
    @@ -167,6 +166,15 @@

    Community

    +
    +

    Book

    + + + +
    +

    For developers

    @@ -344,7 +352,7 @@

    2003ΒΆ

    diff --git a/pyreadline.html b/pyreadline.html index 9520274..0d3a0ff 100644 --- a/pyreadline.html +++ b/pyreadline.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
    -

    Book

    +

    Notebook Viewer

    - +Share your notebooks +
    + + + +
    @@ -167,6 +166,15 @@

    Community

    +
    +

    Book

    + + + +
    +

    For developers

    @@ -260,7 +268,7 @@

    Status and development © Copyright the IPython development team. - Created using Sphinx 1.2b1. + Created using Sphinx 1.1.3.

    diff --git a/roadmap-announcement.html b/roadmap-announcement.html index 9ac1f0f..37b2120 100644 --- a/roadmap-announcement.html +++ b/roadmap-announcement.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
    -

    Book

    +

    Notebook Viewer

    - +Share your notebooks +
    + + + +
    @@ -167,6 +166,15 @@

    Community

    +
    +

    Book

    + + + +
    +

    For developers

    @@ -263,7 +271,7 @@

    Roadmap to 1.0 and Beyond © Copyright the IPython development team. - Created using Sphinx 1.2b1. + Created using Sphinx 1.1.3.

    diff --git a/screenshots/index.html b/screenshots/index.html index 54e77be..04f099a 100644 --- a/screenshots/index.html +++ b/screenshots/index.html @@ -100,13 +100,6 @@ width: 100%; } - -
    -

    John Hunter

    - 1968–2012
    - J. Hunter Memorial Fund -
    -

    Versions

    @@ -133,12 +126,17 @@

    Versions

    -

    Book

    +

    Notebook Viewer

    - +Share your notebooks +
    + + + +
    @@ -169,6 +167,15 @@

    Community

    +
    +

    Book

    + + + +
    +

    For developers

    @@ -238,7 +245,7 @@

    HTML Notebook

    diff --git a/search.html b/search.html index 4827aa1..9b66896 100644 --- a/search.html +++ b/search.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
    -

    Book

    +

    Notebook Viewer

    - +Share your notebooks +
    + + + +
    @@ -173,6 +172,15 @@

    Community

    +
    +

    Book

    + + + +
    +

    For developers

    @@ -251,7 +259,7 @@

    Search

    diff --git a/searchresults.html b/searchresults.html index e057ccf..1ecdf23 100644 --- a/searchresults.html +++ b/searchresults.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
    -

    Book

    +

    Notebook Viewer

    - +Share your notebooks +
    + + + +
    @@ -127,6 +133,15 @@

    Community

    +
    +

    Book

    + + + +
    +

    For developers

    @@ -349,7 +364,7 @@

    Search results © Copyright the IPython development team. - Created using Sphinx 1.2b1. + Created using Sphinx 1.1.3.

    diff --git a/showmedo.html b/showmedo.html index 86e5e1d..54b506f 100644 --- a/showmedo.html +++ b/showmedo.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
    -

    Book

    +

    Notebook Viewer

    - +Share your notebooks +
    + + + +
    @@ -167,6 +166,15 @@

    Community

    +
    +

    Book

    + + + +
    +

    For developers

    @@ -254,7 +262,7 @@

    A note about ShowMeDo © Copyright the IPython development team. - Created using Sphinx 1.2b1. + Created using Sphinx 1.1.3.

    diff --git a/sloan-grant.html b/sloan-grant.html index 880300e..1f1007e 100644 --- a/sloan-grant.html +++ b/sloan-grant.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
    -

    Book

    +

    Notebook Viewer

    - +Share your notebooks +
    + + + +
    @@ -167,6 +166,15 @@

    Community

    +
    +

    Book

    + + + +
    +

    For developers

    @@ -272,7 +280,7 @@

    Sloan Foundation Grant © Copyright the IPython development team. - Created using Sphinx 1.2b1. + Created using Sphinx 1.1.3.

    diff --git a/usersurvey2011.html b/usersurvey2011.html index aff21ca..500db92 100644 --- a/usersurvey2011.html +++ b/usersurvey2011.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
    -

    Book

    +

    Notebook Viewer

    - +Share your notebooks +
    + + + +
    @@ -167,6 +166,15 @@

    Community

    +
    +

    Book

    + + + +
    +

    For developers

    @@ -318,7 +326,7 @@

    Design of the survey © Copyright the IPython development team. - Created using Sphinx 1.2b1. + Created using Sphinx 1.1.3.

    diff --git a/videos.html b/videos.html index feea8d7..f1afc16 100644 --- a/videos.html +++ b/videos.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
    -

    Book

    +

    Notebook Viewer

    - +Share your notebooks +
    + + + +
    @@ -167,6 +166,15 @@

    Community

    +
    +

    Book

    + + + +
    +

    For developers

    @@ -295,7 +303,7 @@

    More videos and screencasts © Copyright the IPython development team. - Created using Sphinx 1.2b1. + Created using Sphinx 1.1.3.

    diff --git a/whatsnew082.html b/whatsnew082.html index 37f3c54..ea4ba09 100644 --- a/whatsnew082.html +++ b/whatsnew082.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
    -

    Book

    +

    Notebook Viewer

    - +Share your notebooks +
    + + + +
    @@ -167,6 +166,15 @@

    Community

    +
    +

    Book

    + + + +
    +

    For developers

    @@ -297,7 +305,7 @@

    Known issues © Copyright the IPython development team. - Created using Sphinx 1.2b1. + Created using Sphinx 1.1.3.

    diff --git a/whatsnew083.html b/whatsnew083.html index e182078..16bb45d 100644 --- a/whatsnew083.html +++ b/whatsnew083.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
    -

    Book

    +

    Notebook Viewer

    - +Share your notebooks +
    + + + +
    @@ -167,6 +166,15 @@

    Community

    +
    +

    Book

    + + + +
    +

    For developers

    @@ -280,7 +288,7 @@

    New features in 0.8.3 © Copyright the IPython development team. - Created using Sphinx 1.2b1. + Created using Sphinx 1.1.3.

    From 3adcf158878e39d81d26a519cef03eb4724f5f9b Mon Sep 17 00:00:00 2001 From: Fernando Perez Date: Thu, 12 Sep 2013 01:43:34 -0700 Subject: [PATCH 006/146] Updated website (automated commit) --- _images/sloan-logo.png | Bin 0 -> 15217 bytes _sources/documentation.txt | 40 +- _sources/donate.txt | 2 + .../tests/examplefiles/functional.txt | 1472 ---------------- .../tests/examplefiles/jinjadesignerdoc.txt | 713 -------- _sources/gh-pages/build/commando/AUTHORS.txt | 35 - .../gh-pages/build/commando/CHANGELOG.txt | 66 - .../gh-pages/build/commando/CONTRIBUTING.txt | 46 - _sources/gh-pages/build/commando/README.txt | 76 - _sources/index.txt | 84 +- _sources/install.txt | 14 +- _sources/microsoft-donation-2013.txt | 13 + _sources/sloan-grant.txt | 2 + _sources/sponsors.txt | 72 + _static/microsoft-logo.png | Bin 0 -> 7314 bytes _static/simons-logo.jpg | Bin 0 -> 131255 bytes _static/simons-logo.png | Bin 0 -> 13369 bytes _static/sloan-logo.jpg | Bin 0 -> 138765 bytes _static/sloan-logo.png | Bin 0 -> 15217 bytes citing.html | 30 +- documentation.html | 66 +- donate.html | 35 +- faq.html | 32 +- .../tests/examplefiles/functional.html | 1491 ----------------- .../tests/examplefiles/jinjadesignerdoc.html | 892 ---------- gh-pages/build/commando/CONTRIBUTING.html | 276 --- gh-pages/build/commando/README.html | 301 ---- index.html | 74 +- install.html | 45 +- links.txt | 43 + ...THORS.html => microsoft-donation-2013.html | 111 +- news.html | 34 +- notebook.html | 34 +- objects.inv | Bin 286 -> 421 bytes presentation.html | 32 +- pyreadline.html | 32 +- roadmap-announcement.html | 34 +- screenshots/index.html | 30 +- search.html | 30 +- searchresults.html | 34 +- showmedo.html | 34 +- sloan-grant.html | 36 +- .../commando/CHANGELOG.html => sponsors.html | 176 +- usersurvey2011.html | 32 +- videos.html | 30 +- whatsnew082.html | 30 +- whatsnew083.html | 31 +- 47 files changed, 657 insertions(+), 6003 deletions(-) create mode 100644 _images/sloan-logo.png delete mode 100644 _sources/gh-pages/build/Pygments/tests/examplefiles/functional.txt delete mode 100644 _sources/gh-pages/build/Pygments/tests/examplefiles/jinjadesignerdoc.txt delete mode 100644 _sources/gh-pages/build/commando/AUTHORS.txt delete mode 100644 _sources/gh-pages/build/commando/CHANGELOG.txt delete mode 100644 _sources/gh-pages/build/commando/CONTRIBUTING.txt delete mode 100644 _sources/gh-pages/build/commando/README.txt create mode 100644 _sources/microsoft-donation-2013.txt create mode 100644 _sources/sponsors.txt create mode 100644 _static/microsoft-logo.png create mode 100644 _static/simons-logo.jpg create mode 100644 _static/simons-logo.png create mode 100644 _static/sloan-logo.jpg create mode 100644 _static/sloan-logo.png delete mode 100644 gh-pages/build/Pygments/tests/examplefiles/functional.html delete mode 100644 gh-pages/build/Pygments/tests/examplefiles/jinjadesignerdoc.html delete mode 100644 gh-pages/build/commando/CONTRIBUTING.html delete mode 100644 gh-pages/build/commando/README.html create mode 100644 links.txt rename gh-pages/build/commando/AUTHORS.html => microsoft-donation-2013.html (64%) rename gh-pages/build/commando/CHANGELOG.html => sponsors.html (50%) diff --git a/_images/sloan-logo.png b/_images/sloan-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b508e60c7e0c7b08dd485ff661754290c934044c GIT binary patch literal 15217 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 +* `Current Stable Version (1.1.0) `_ * `Current Development Version (2.0) `_ -`This introduction to some key features `_ -is a good place to start if you haven't used IPython before. +`This introduction to some key features +`_ is a good +place to start if you haven't used IPython before. -The manuals for previous releases are here: +See below_ for links to all versions of the documentation. + +.. _below: docs_all_releases_ -* 0.13.2: `HTML `__. -* 0.12.1: `HTML `__. -* 0.11: `HTML `__ and `PDF `__. -* 0.10.2: `HTML `__ and `PDF `__. Other useful documentation -------------------------- @@ -27,7 +24,8 @@ Other useful documentation given at various venues regarding IPython over the years. * `Videos and screencasts `_. * IPython `screenshots `_. -* 'IPython quick referance card `_. +* `IPython quick reference card + `_. * An `article about IPython `_, written by Fernando Perez and Brian Granger, published in the `May/June 2007 issue @@ -99,3 +97,23 @@ please `provide a citation to IPython `_. These documents themselves are maintained as a `git repository `_ on GitHub, using the `GitHub project pages feature `_. + + +.. _docs_all_releases: + +Docs for all releases +--------------------- + +* `1.1.0 `__ +* `1.0.0 `__ +* `0.13.2 `__ +* `0.13.1 `__ +* `0.13 `__ +* `0.12.1 `__ +* `0.12 `__ +* 0.11: `HTML `__ and `PDF `__. +* 0.10.2: `HTML `__ and `PDF `__. +* 0.10.1: `HTML `__ and `PDF `__. +* 0.10: `HTML `__ and `PDF `__. +* 0.9.1: `HTML `__ and `PDF `__. +* 0.9: `HTML `__ and `PDF `__. diff --git a/_sources/donate.txt b/_sources/donate.txt index 891d483..41d3a9a 100644 --- a/_sources/donate.txt +++ b/_sources/donate.txt @@ -1,3 +1,5 @@ +.. _donate: + ============================= Support IPython Development ============================= diff --git a/_sources/gh-pages/build/Pygments/tests/examplefiles/functional.txt b/_sources/gh-pages/build/Pygments/tests/examplefiles/functional.txt deleted file mode 100644 index bfe67d1..0000000 --- a/_sources/gh-pages/build/Pygments/tests/examplefiles/functional.txt +++ /dev/null @@ -1,1472 +0,0 @@ -Functional Programming HOWTO -================================ - -**Version 0.30** - -(This is a first draft. Please send comments/error -reports/suggestions to amk@amk.ca. This URL is probably not going to -be the final location of the document, so be careful about linking to -it -- you may want to add a disclaimer.) - -In this document, we'll take a tour of Python's features suitable for -implementing programs in a functional style. After an introduction to -the concepts of functional programming, we'll look at language -features such as iterators and generators and relevant library modules -such as ``itertools`` and ``functools``. - - -.. contents:: - -Introduction ----------------------- - -This section explains the basic concept of functional programming; if -you're just interested in learning about Python language features, -skip to the next section. - -Programming languages support decomposing problems in several different -ways: - -* Most programming languages are **procedural**: - programs are lists of instructions that tell the computer what to - do with the program's input. - C, Pascal, and even Unix shells are procedural languages. - -* In **declarative** languages, you write a specification that describes - the problem to be solved, and the language implementation figures out - how to perform the computation efficiently. SQL is the declarative - language you're most likely to be familiar with; a SQL query describes - the data set you want to retrieve, and the SQL engine decides whether to - scan tables or use indexes, which subclauses should be performed first, - etc. - -* **Object-oriented** programs manipulate collections of objects. - Objects have internal state and support methods that query or modify - this internal state in some way. Smalltalk and Java are - object-oriented languages. C++ and Python are languages that - support object-oriented programming, but don't force the use - of object-oriented features. - -* **Functional** programming decomposes a problem into a set of functions. - Ideally, functions only take inputs and produce outputs, and don't have any - internal state that affects the output produced for a given input. - Well-known functional languages include the ML family (Standard ML, - OCaml, and other variants) and Haskell. - -The designers of some computer languages have chosen one approach to -programming that's emphasized. This often makes it difficult to -write programs that use a different approach. Other languages are -multi-paradigm languages that support several different approaches. Lisp, -C++, and Python are multi-paradigm; you can write programs or -libraries that are largely procedural, object-oriented, or functional -in all of these languages. In a large program, different sections -might be written using different approaches; the GUI might be object-oriented -while the processing logic is procedural or functional, for example. - -In a functional program, input flows through a set of functions. Each -function operates on its input and produces some output. Functional -style frowns upon functions with side effects that modify internal -state or make other changes that aren't visible in the function's -return value. Functions that have no side effects at all are -called **purely functional**. -Avoiding side effects means not using data structures -that get updated as a program runs; every function's output -must only depend on its input. - -Some languages are very strict about purity and don't even have -assignment statements such as ``a=3`` or ``c = a + b``, but it's -difficult to avoid all side effects. Printing to the screen or -writing to a disk file are side effects, for example. For example, in -Python a ``print`` statement or a ``time.sleep(1)`` both return no -useful value; they're only called for their side effects of sending -some text to the screen or pausing execution for a second. - -Python programs written in functional style usually won't go to the -extreme of avoiding all I/O or all assignments; instead, they'll -provide a functional-appearing interface but will use non-functional -features internally. For example, the implementation of a function -will still use assignments to local variables, but won't modify global -variables or have other side effects. - -Functional programming can be considered the opposite of -object-oriented programming. Objects are little capsules containing -some internal state along with a collection of method calls that let -you modify this state, and programs consist of making the right set of -state changes. Functional programming wants to avoid state changes as -much as possible and works with data flowing between functions. In -Python you might combine the two approaches by writing functions that -take and return instances representing objects in your application -(e-mail messages, transactions, etc.). - -Functional design may seem like an odd constraint to work under. Why -should you avoid objects and side effects? There are theoretical and -practical advantages to the functional style: - -* Formal provability. -* Modularity. -* Composability. -* Ease of debugging and testing. - -Formal provability -'''''''''''''''''''''' - -A theoretical benefit is that it's easier to construct a mathematical proof -that a functional program is correct. - -For a long time researchers have been interested in finding ways to -mathematically prove programs correct. This is different from testing -a program on numerous inputs and concluding that its output is usually -correct, or reading a program's source code and concluding that the -code looks right; the goal is instead a rigorous proof that a program -produces the right result for all possible inputs. - -The technique used to prove programs correct is to write down -**invariants**, properties of the input data and of the program's -variables that are always true. For each line of code, you then show -that if invariants X and Y are true **before** the line is executed, -the slightly different invariants X' and Y' are true **after** -the line is executed. This continues until you reach the end of the -program, at which point the invariants should match the desired -conditions on the program's output. - -Functional programming's avoidance of assignments arose because -assignments are difficult to handle with this technique; -assignments can break invariants that were true before the assignment -without producing any new invariants that can be propagated onward. - -Unfortunately, proving programs correct is largely impractical and not -relevant to Python software. Even trivial programs require proofs that -are several pages long; the proof of correctness for a moderately -complicated program would be enormous, and few or none of the programs -you use daily (the Python interpreter, your XML parser, your web -browser) could be proven correct. Even if you wrote down or generated -a proof, there would then be the question of verifying the proof; -maybe there's an error in it, and you wrongly believe you've proved -the program correct. - -Modularity -'''''''''''''''''''''' - -A more practical benefit of functional programming is that it forces -you to break apart your problem into small pieces. Programs are more -modular as a result. It's easier to specify and write a small -function that does one thing than a large function that performs a -complicated transformation. Small functions are also easier to read -and to check for errors. - - -Ease of debugging and testing -'''''''''''''''''''''''''''''''''' - -Testing and debugging a functional-style program is easier. - -Debugging is simplified because functions are generally small and -clearly specified. When a program doesn't work, each function is an -interface point where you can check that the data are correct. You -can look at the intermediate inputs and outputs to quickly isolate the -function that's responsible for a bug. - -Testing is easier because each function is a potential subject for a -unit test. Functions don't depend on system state that needs to be -replicated before running a test; instead you only have to synthesize -the right input and then check that the output matches expectations. - - - -Composability -'''''''''''''''''''''' - -As you work on a functional-style program, you'll write a number of -functions with varying inputs and outputs. Some of these functions -will be unavoidably specialized to a particular application, but -others will be useful in a wide variety of programs. For example, a -function that takes a directory path and returns all the XML files in -the directory, or a function that takes a filename and returns its -contents, can be applied to many different situations. - -Over time you'll form a personal library of utilities. Often you'll -assemble new programs by arranging existing functions in a new -configuration and writing a few functions specialized for the current -task. - - - -Iterators ------------------------ - -I'll start by looking at a Python language feature that's an important -foundation for writing functional-style programs: iterators. - -An iterator is an object representing a stream of data; this object -returns the data one element at a time. A Python iterator must -support a method called ``next()`` that takes no arguments and always -returns the next element of the stream. If there are no more elements -in the stream, ``next()`` must raise the ``StopIteration`` exception. -Iterators don't have to be finite, though; it's perfectly reasonable -to write an iterator that produces an infinite stream of data. - -The built-in ``iter()`` function takes an arbitrary object and tries -to return an iterator that will return the object's contents or -elements, raising ``TypeError`` if the object doesn't support -iteration. Several of Python's built-in data types support iteration, -the most common being lists and dictionaries. An object is called -an **iterable** object if you can get an iterator for it. - -You can experiment with the iteration interface manually:: - - >>> L = [1,2,3] - >>> it = iter(L) - >>> print it - - >>> it.next() - 1 - >>> it.next() - 2 - >>> it.next() - 3 - >>> it.next() - Traceback (most recent call last): - File "", line 1, in ? - StopIteration - >>> - -Python expects iterable objects in several different contexts, the -most important being the ``for`` statement. In the statement ``for X in Y``, -Y must be an iterator or some object for which ``iter()`` can create -an iterator. These two statements are equivalent:: - - for i in iter(obj): - print i - - for i in obj: - print i - -Iterators can be materialized as lists or tuples by using the -``list()`` or ``tuple()`` constructor functions:: - - >>> L = [1,2,3] - >>> iterator = iter(L) - >>> t = tuple(iterator) - >>> t - (1, 2, 3) - -Sequence unpacking also supports iterators: if you know an iterator -will return N elements, you can unpack them into an N-tuple:: - - >>> L = [1,2,3] - >>> iterator = iter(L) - >>> a,b,c = iterator - >>> a,b,c - (1, 2, 3) - -Built-in functions such as ``max()`` and ``min()`` can take a single -iterator argument and will return the largest or smallest element. -The ``"in"`` and ``"not in"`` operators also support iterators: ``X in -iterator`` is true if X is found in the stream returned by the -iterator. You'll run into obvious problems if the iterator is -infinite; ``max()``, ``min()``, and ``"not in"`` will never return, and -if the element X never appears in the stream, the ``"in"`` operator -won't return either. - -Note that you can only go forward in an iterator; there's no way to -get the previous element, reset the iterator, or make a copy of it. -Iterator objects can optionally provide these additional capabilities, -but the iterator protocol only specifies the ``next()`` method. -Functions may therefore consume all of the iterator's output, and if -you need to do something different with the same stream, you'll have -to create a new iterator. - - - -Data Types That Support Iterators -''''''''''''''''''''''''''''''''''' - -We've already seen how lists and tuples support iterators. In fact, -any Python sequence type, such as strings, will automatically support -creation of an iterator. - -Calling ``iter()`` on a dictionary returns an iterator that will loop -over the dictionary's keys:: - - >>> m = {'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6, - ... 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12} - >>> for key in m: - ... print key, m[key] - Mar 3 - Feb 2 - Aug 8 - Sep 9 - May 5 - Jun 6 - Jul 7 - Jan 1 - Apr 4 - Nov 11 - Dec 12 - Oct 10 - -Note that the order is essentially random, because it's based on the -hash ordering of the objects in the dictionary. - -Applying ``iter()`` to a dictionary always loops over the keys, but -dictionaries have methods that return other iterators. If you want to -iterate over keys, values, or key/value pairs, you can explicitly call -the ``iterkeys()``, ``itervalues()``, or ``iteritems()`` methods to -get an appropriate iterator. - -The ``dict()`` constructor can accept an iterator that returns a -finite stream of ``(key, value)`` tuples:: - - >>> L = [('Italy', 'Rome'), ('France', 'Paris'), ('US', 'Washington DC')] - >>> dict(iter(L)) - {'Italy': 'Rome', 'US': 'Washington DC', 'France': 'Paris'} - -Files also support iteration by calling the ``readline()`` -method until there are no more lines in the file. This means you can -read each line of a file like this:: - - for line in file: - # do something for each line - ... - -Sets can take their contents from an iterable and let you iterate over -the set's elements:: - - S = set((2, 3, 5, 7, 11, 13)) - for i in S: - print i - - - -Generator expressions and list comprehensions ----------------------------------------------------- - -Two common operations on an iterator's output are 1) performing some -operation for every element, 2) selecting a subset of elements that -meet some condition. For example, given a list of strings, you might -want to strip off trailing whitespace from each line or extract all -the strings containing a given substring. - -List comprehensions and generator expressions (short form: "listcomps" -and "genexps") are a concise notation for such operations, borrowed -from the functional programming language Haskell -(http://www.haskell.org). You can strip all the whitespace from a -stream of strings with the following code:: - - line_list = [' line 1\n', 'line 2 \n', ...] - - # Generator expression -- returns iterator - stripped_iter = (line.strip() for line in line_list) - - # List comprehension -- returns list - stripped_list = [line.strip() for line in line_list] - -You can select only certain elements by adding an ``"if"`` condition:: - - stripped_list = [line.strip() for line in line_list - if line != ""] - -With a list comprehension, you get back a Python list; -``stripped_list`` is a list containing the resulting lines, not an -iterator. Generator expressions return an iterator that computes the -values as necessary, not needing to materialize all the values at -once. This means that list comprehensions aren't useful if you're -working with iterators that return an infinite stream or a very large -amount of data. Generator expressions are preferable in these -situations. - -Generator expressions are surrounded by parentheses ("()") and list -comprehensions are surrounded by square brackets ("[]"). Generator -expressions have the form:: - - ( expression for expr in sequence1 - if condition1 - for expr2 in sequence2 - if condition2 - for expr3 in sequence3 ... - if condition3 - for exprN in sequenceN - if conditionN ) - -Again, for a list comprehension only the outside brackets are -different (square brackets instead of parentheses). - -The elements of the generated output will be the successive values of -``expression``. The ``if`` clauses are all optional; if present, -``expression`` is only evaluated and added to the result when -``condition`` is true. - -Generator expressions always have to be written inside parentheses, -but the parentheses signalling a function call also count. If you -want to create an iterator that will be immediately passed to a -function you can write:: - - obj_total = sum(obj.count for obj in list_all_objects()) - -The ``for...in`` clauses contain the sequences to be iterated over. -The sequences do not have to be the same length, because they are -iterated over from left to right, **not** in parallel. For each -element in ``sequence1``, ``sequence2`` is looped over from the -beginning. ``sequence3`` is then looped over for each -resulting pair of elements from ``sequence1`` and ``sequence2``. - -To put it another way, a list comprehension or generator expression is -equivalent to the following Python code:: - - for expr1 in sequence1: - if not (condition1): - continue # Skip this element - for expr2 in sequence2: - if not (condition2): - continue # Skip this element - ... - for exprN in sequenceN: - if not (conditionN): - continue # Skip this element - - # Output the value of - # the expression. - -This means that when there are multiple ``for...in`` clauses but no -``if`` clauses, the length of the resulting output will be equal to -the product of the lengths of all the sequences. If you have two -lists of length 3, the output list is 9 elements long:: - - seq1 = 'abc' - seq2 = (1,2,3) - >>> [ (x,y) for x in seq1 for y in seq2] - [('a', 1), ('a', 2), ('a', 3), - ('b', 1), ('b', 2), ('b', 3), - ('c', 1), ('c', 2), ('c', 3)] - -To avoid introducing an ambiguity into Python's grammar, if -``expression`` is creating a tuple, it must be surrounded with -parentheses. The first list comprehension below is a syntax error, -while the second one is correct:: - - # Syntax error - [ x,y for x in seq1 for y in seq2] - # Correct - [ (x,y) for x in seq1 for y in seq2] - - -Generators ------------------------ - -Generators are a special class of functions that simplify the task of -writing iterators. Regular functions compute a value and return it, -but generators return an iterator that returns a stream of values. - -You're doubtless familiar with how regular function calls work in -Python or C. When you call a function, it gets a private namespace -where its local variables are created. When the function reaches a -``return`` statement, the local variables are destroyed and the -value is returned to the caller. A later call to the same function -creates a new private namespace and a fresh set of local -variables. But, what if the local variables weren't thrown away on -exiting a function? What if you could later resume the function where -it left off? This is what generators provide; they can be thought of -as resumable functions. - -Here's the simplest example of a generator function:: - - def generate_ints(N): - for i in range(N): - yield i - -Any function containing a ``yield`` keyword is a generator function; -this is detected by Python's bytecode compiler which compiles the -function specially as a result. - -When you call a generator function, it doesn't return a single value; -instead it returns a generator object that supports the iterator -protocol. On executing the ``yield`` expression, the generator -outputs the value of ``i``, similar to a ``return`` -statement. The big difference between ``yield`` and a -``return`` statement is that on reaching a ``yield`` the -generator's state of execution is suspended and local variables are -preserved. On the next call to the generator's ``.next()`` method, -the function will resume executing. - -Here's a sample usage of the ``generate_ints()`` generator:: - - >>> gen = generate_ints(3) - >>> gen - - >>> gen.next() - 0 - >>> gen.next() - 1 - >>> gen.next() - 2 - >>> gen.next() - Traceback (most recent call last): - File "stdin", line 1, in ? - File "stdin", line 2, in generate_ints - StopIteration - -You could equally write ``for i in generate_ints(5)``, or -``a,b,c = generate_ints(3)``. - -Inside a generator function, the ``return`` statement can only be used -without a value, and signals the end of the procession of values; -after executing a ``return`` the generator cannot return any further -values. ``return`` with a value, such as ``return 5``, is a syntax -error inside a generator function. The end of the generator's results -can also be indicated by raising ``StopIteration`` manually, or by -just letting the flow of execution fall off the bottom of the -function. - -You could achieve the effect of generators manually by writing your -own class and storing all the local variables of the generator as -instance variables. For example, returning a list of integers could -be done by setting ``self.count`` to 0, and having the -``next()`` method increment ``self.count`` and return it. -However, for a moderately complicated generator, writing a -corresponding class can be much messier. - -The test suite included with Python's library, ``test_generators.py``, -contains a number of more interesting examples. Here's one generator -that implements an in-order traversal of a tree using generators -recursively. - -:: - - # A recursive generator that generates Tree leaves in in-order. - def inorder(t): - if t: - for x in inorder(t.left): - yield x - - yield t.label - - for x in inorder(t.right): - yield x - -Two other examples in ``test_generators.py`` produce -solutions for the N-Queens problem (placing N queens on an NxN -chess board so that no queen threatens another) and the Knight's Tour -(finding a route that takes a knight to every square of an NxN chessboard -without visiting any square twice). - - - -Passing values into a generator -'''''''''''''''''''''''''''''''''''''''''''''' - -In Python 2.4 and earlier, generators only produced output. Once a -generator's code was invoked to create an iterator, there was no way to -pass any new information into the function when its execution is -resumed. You could hack together this ability by making the -generator look at a global variable or by passing in some mutable object -that callers then modify, but these approaches are messy. - -In Python 2.5 there's a simple way to pass values into a generator. -``yield`` became an expression, returning a value that can be assigned -to a variable or otherwise operated on:: - - val = (yield i) - -I recommend that you **always** put parentheses around a ``yield`` -expression when you're doing something with the returned value, as in -the above example. The parentheses aren't always necessary, but it's -easier to always add them instead of having to remember when they're -needed. - -(PEP 342 explains the exact rules, which are that a -``yield``-expression must always be parenthesized except when it -occurs at the top-level expression on the right-hand side of an -assignment. This means you can write ``val = yield i`` but have to -use parentheses when there's an operation, as in ``val = (yield i) -+ 12``.) - -Values are sent into a generator by calling its -``send(value)`` method. This method resumes the -generator's code and the ``yield`` expression returns the specified -value. If the regular ``next()`` method is called, the -``yield`` returns ``None``. - -Here's a simple counter that increments by 1 and allows changing the -value of the internal counter. - -:: - - def counter (maximum): - i = 0 - while i < maximum: - val = (yield i) - # If value provided, change counter - if val is not None: - i = val - else: - i += 1 - -And here's an example of changing the counter: - - >>> it = counter(10) - >>> print it.next() - 0 - >>> print it.next() - 1 - >>> print it.send(8) - 8 - >>> print it.next() - 9 - >>> print it.next() - Traceback (most recent call last): - File ``t.py'', line 15, in ? - print it.next() - StopIteration - -Because ``yield`` will often be returning ``None``, you -should always check for this case. Don't just use its value in -expressions unless you're sure that the ``send()`` method -will be the only method used resume your generator function. - -In addition to ``send()``, there are two other new methods on -generators: - -* ``throw(type, value=None, traceback=None)`` is used to raise an exception inside the - generator; the exception is raised by the ``yield`` expression - where the generator's execution is paused. - -* ``close()`` raises a ``GeneratorExit`` - exception inside the generator to terminate the iteration. - On receiving this - exception, the generator's code must either raise - ``GeneratorExit`` or ``StopIteration``; catching the - exception and doing anything else is illegal and will trigger - a ``RuntimeError``. ``close()`` will also be called by - Python's garbage collector when the generator is garbage-collected. - - If you need to run cleanup code when a ``GeneratorExit`` occurs, - I suggest using a ``try: ... finally:`` suite instead of - catching ``GeneratorExit``. - -The cumulative effect of these changes is to turn generators from -one-way producers of information into both producers and consumers. - -Generators also become **coroutines**, a more generalized form of -subroutines. Subroutines are entered at one point and exited at -another point (the top of the function, and a ``return`` -statement), but coroutines can be entered, exited, and resumed at -many different points (the ``yield`` statements). - - -Built-in functions ----------------------------------------------- - -Let's look in more detail at built-in functions often used with iterators. - -Two Python's built-in functions, ``map()`` and ``filter()``, are -somewhat obsolete; they duplicate the features of list comprehensions -but return actual lists instead of iterators. - -``map(f, iterA, iterB, ...)`` returns a list containing ``f(iterA[0], -iterB[0]), f(iterA[1], iterB[1]), f(iterA[2], iterB[2]), ...``. - -:: - - def upper(s): - return s.upper() - map(upper, ['sentence', 'fragment']) => - ['SENTENCE', 'FRAGMENT'] - - [upper(s) for s in ['sentence', 'fragment']] => - ['SENTENCE', 'FRAGMENT'] - -As shown above, you can achieve the same effect with a list -comprehension. The ``itertools.imap()`` function does the same thing -but can handle infinite iterators; it'll be discussed later, in the section on -the ``itertools`` module. - -``filter(predicate, iter)`` returns a list -that contains all the sequence elements that meet a certain condition, -and is similarly duplicated by list comprehensions. -A **predicate** is a function that returns the truth value of -some condition; for use with ``filter()``, the predicate must take a -single value. - -:: - - def is_even(x): - return (x % 2) == 0 - - filter(is_even, range(10)) => - [0, 2, 4, 6, 8] - -This can also be written as a list comprehension:: - - >>> [x for x in range(10) if is_even(x)] - [0, 2, 4, 6, 8] - -``filter()`` also has a counterpart in the ``itertools`` module, -``itertools.ifilter()``, that returns an iterator and -can therefore handle infinite sequences just as ``itertools.imap()`` can. - -``reduce(func, iter, [initial_value])`` doesn't have a counterpart in -the ``itertools`` module because it cumulatively performs an operation -on all the iterable's elements and therefore can't be applied to -infinite iterables. ``func`` must be a function that takes two elements -and returns a single value. ``reduce()`` takes the first two elements -A and B returned by the iterator and calculates ``func(A, B)``. It -then requests the third element, C, calculates ``func(func(A, B), -C)``, combines this result with the fourth element returned, and -continues until the iterable is exhausted. If the iterable returns no -values at all, a ``TypeError`` exception is raised. If the initial -value is supplied, it's used as a starting point and -``func(initial_value, A)`` is the first calculation. - -:: - - import operator - reduce(operator.concat, ['A', 'BB', 'C']) => - 'ABBC' - reduce(operator.concat, []) => - TypeError: reduce() of empty sequence with no initial value - reduce(operator.mul, [1,2,3], 1) => - 6 - reduce(operator.mul, [], 1) => - 1 - -If you use ``operator.add`` with ``reduce()``, you'll add up all the -elements of the iterable. This case is so common that there's a special -built-in called ``sum()`` to compute it:: - - reduce(operator.add, [1,2,3,4], 0) => - 10 - sum([1,2,3,4]) => - 10 - sum([]) => - 0 - -For many uses of ``reduce()``, though, it can be clearer to just write -the obvious ``for`` loop:: - - # Instead of: - product = reduce(operator.mul, [1,2,3], 1) - - # You can write: - product = 1 - for i in [1,2,3]: - product *= i - - -``enumerate(iter)`` counts off the elements in the iterable, returning -2-tuples containing the count and each element. - -:: - - enumerate(['subject', 'verb', 'object']) => - (0, 'subject'), (1, 'verb'), (2, 'object') - -``enumerate()`` is often used when looping through a list -and recording the indexes at which certain conditions are met:: - - f = open('data.txt', 'r') - for i, line in enumerate(f): - if line.strip() == '': - print 'Blank line at line #%i' % i - -``sorted(iterable, [cmp=None], [key=None], [reverse=False)`` -collects all the elements of the iterable into a list, sorts -the list, and returns the sorted result. The ``cmp``, ``key``, -and ``reverse`` arguments are passed through to the -constructed list's ``.sort()`` method. - -:: - - import random - # Generate 8 random numbers between [0, 10000) - rand_list = random.sample(range(10000), 8) - rand_list => - [769, 7953, 9828, 6431, 8442, 9878, 6213, 2207] - sorted(rand_list) => - [769, 2207, 6213, 6431, 7953, 8442, 9828, 9878] - sorted(rand_list, reverse=True) => - [9878, 9828, 8442, 7953, 6431, 6213, 2207, 769] - -(For a more detailed discussion of sorting, see the Sorting mini-HOWTO -in the Python wiki at http://wiki.python.org/moin/HowTo/Sorting.) - -The ``any(iter)`` and ``all(iter)`` built-ins look at -the truth values of an iterable's contents. ``any()`` returns -True if any element in the iterable is a true value, and ``all()`` -returns True if all of the elements are true values:: - - any([0,1,0]) => - True - any([0,0,0]) => - False - any([1,1,1]) => - True - all([0,1,0]) => - False - all([0,0,0]) => - False - all([1,1,1]) => - True - - -Small functions and the lambda statement ----------------------------------------------- - -When writing functional-style programs, you'll often need little -functions that act as predicates or that combine elements in some way. - -If there's a Python built-in or a module function that's suitable, you -don't need to define a new function at all:: - - stripped_lines = [line.strip() for line in lines] - existing_files = filter(os.path.exists, file_list) - -If the function you need doesn't exist, you need to write it. One way -to write small functions is to use the ``lambda`` statement. ``lambda`` -takes a number of parameters and an expression combining these parameters, -and creates a small function that returns the value of the expression:: - - lowercase = lambda x: x.lower() - - print_assign = lambda name, value: name + '=' + str(value) - - adder = lambda x, y: x+y - -An alternative is to just use the ``def`` statement and define a -function in the usual way:: - - def lowercase(x): - return x.lower() - - def print_assign(name, value): - return name + '=' + str(value) - - def adder(x,y): - return x + y - -Which alternative is preferable? That's a style question; my usual -course is to avoid using ``lambda``. - -One reason for my preference is that ``lambda`` is quite limited in -the functions it can define. The result has to be computable as a -single expression, which means you can't have multiway -``if... elif... else`` comparisons or ``try... except`` statements. -If you try to do too much in a ``lambda`` statement, you'll end up -with an overly complicated expression that's hard to read. Quick, -what's the following code doing? - -:: - - total = reduce(lambda a, b: (0, a[1] + b[1]), items)[1] - -You can figure it out, but it takes time to disentangle the expression -to figure out what's going on. Using a short nested -``def`` statements makes things a little bit better:: - - def combine (a, b): - return 0, a[1] + b[1] - - total = reduce(combine, items)[1] - -But it would be best of all if I had simply used a ``for`` loop:: - - total = 0 - for a, b in items: - total += b - -Or the ``sum()`` built-in and a generator expression:: - - total = sum(b for a,b in items) - -Many uses of ``reduce()`` are clearer when written as ``for`` loops. - -Fredrik Lundh once suggested the following set of rules for refactoring -uses of ``lambda``: - -1) Write a lambda function. -2) Write a comment explaining what the heck that lambda does. -3) Study the comment for a while, and think of a name that captures - the essence of the comment. -4) Convert the lambda to a def statement, using that name. -5) Remove the comment. - -I really like these rules, but you're free to disagree that this -lambda-free style is better. - - -The itertools module ------------------------ - -The ``itertools`` module contains a number of commonly-used iterators -as well as functions for combining several iterators. This section -will introduce the module's contents by showing small examples. - -The module's functions fall into a few broad classes: - -* Functions that create a new iterator based on an existing iterator. -* Functions for treating an iterator's elements as function arguments. -* Functions for selecting portions of an iterator's output. -* A function for grouping an iterator's output. - -Creating new iterators -'''''''''''''''''''''' - -``itertools.count(n)`` returns an infinite stream of -integers, increasing by 1 each time. You can optionally supply the -starting number, which defaults to 0:: - - itertools.count() => - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ... - itertools.count(10) => - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, ... - -``itertools.cycle(iter)`` saves a copy of the contents of a provided -iterable and returns a new iterator that returns its elements from -first to last. The new iterator will repeat these elements infinitely. - -:: - - itertools.cycle([1,2,3,4,5]) => - 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... - -``itertools.repeat(elem, [n])`` returns the provided element ``n`` -times, or returns the element endlessly if ``n`` is not provided. - -:: - - itertools.repeat('abc') => - abc, abc, abc, abc, abc, abc, abc, abc, abc, abc, ... - itertools.repeat('abc', 5) => - abc, abc, abc, abc, abc - -``itertools.chain(iterA, iterB, ...)`` takes an arbitrary number of -iterables as input, and returns all the elements of the first -iterator, then all the elements of the second, and so on, until all of -the iterables have been exhausted. - -:: - - itertools.chain(['a', 'b', 'c'], (1, 2, 3)) => - a, b, c, 1, 2, 3 - -``itertools.izip(iterA, iterB, ...)`` takes one element from each iterable -and returns them in a tuple:: - - itertools.izip(['a', 'b', 'c'], (1, 2, 3)) => - ('a', 1), ('b', 2), ('c', 3) - -It's similiar to the built-in ``zip()`` function, but doesn't -construct an in-memory list and exhaust all the input iterators before -returning; instead tuples are constructed and returned only if they're -requested. (The technical term for this behaviour is -`lazy evaluation `__.) - -This iterator is intended to be used with iterables that are all of -the same length. If the iterables are of different lengths, the -resulting stream will be the same length as the shortest iterable. - -:: - - itertools.izip(['a', 'b'], (1, 2, 3)) => - ('a', 1), ('b', 2) - -You should avoid doing this, though, because an element may be taken -from the longer iterators and discarded. This means you can't go on -to use the iterators further because you risk skipping a discarded -element. - -``itertools.islice(iter, [start], stop, [step])`` returns a stream -that's a slice of the iterator. With a single ``stop`` argument, -it will return the first ``stop`` -elements. If you supply a starting index, you'll get ``stop-start`` -elements, and if you supply a value for ``step``, elements will be -skipped accordingly. Unlike Python's string and list slicing, you -can't use negative values for ``start``, ``stop``, or ``step``. - -:: - - itertools.islice(range(10), 8) => - 0, 1, 2, 3, 4, 5, 6, 7 - itertools.islice(range(10), 2, 8) => - 2, 3, 4, 5, 6, 7 - itertools.islice(range(10), 2, 8, 2) => - 2, 4, 6 - -``itertools.tee(iter, [n])`` replicates an iterator; it returns ``n`` -independent iterators that will all return the contents of the source -iterator. If you don't supply a value for ``n``, the default is 2. -Replicating iterators requires saving some of the contents of the source -iterator, so this can consume significant memory if the iterator is large -and one of the new iterators is consumed more than the others. - -:: - - itertools.tee( itertools.count() ) => - iterA, iterB - - where iterA -> - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ... - - and iterB -> - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ... - - -Calling functions on elements -''''''''''''''''''''''''''''' - -Two functions are used for calling other functions on the contents of an -iterable. - -``itertools.imap(f, iterA, iterB, ...)`` returns -a stream containing ``f(iterA[0], iterB[0]), f(iterA[1], iterB[1]), -f(iterA[2], iterB[2]), ...``:: - - itertools.imap(operator.add, [5, 6, 5], [1, 2, 3]) => - 6, 8, 8 - -The ``operator`` module contains a set of functions -corresponding to Python's operators. Some examples are -``operator.add(a, b)`` (adds two values), -``operator.ne(a, b)`` (same as ``a!=b``), -and -``operator.attrgetter('id')`` (returns a callable that -fetches the ``"id"`` attribute). - -``itertools.starmap(func, iter)`` assumes that the iterable will -return a stream of tuples, and calls ``f()`` using these tuples as the -arguments:: - - itertools.starmap(os.path.join, - [('/usr', 'bin', 'java'), ('/bin', 'python'), - ('/usr', 'bin', 'perl'),('/usr', 'bin', 'ruby')]) - => - /usr/bin/java, /bin/python, /usr/bin/perl, /usr/bin/ruby - - -Selecting elements -'''''''''''''''''' - -Another group of functions chooses a subset of an iterator's elements -based on a predicate. - -``itertools.ifilter(predicate, iter)`` returns all the elements for -which the predicate returns true:: - - def is_even(x): - return (x % 2) == 0 - - itertools.ifilter(is_even, itertools.count()) => - 0, 2, 4, 6, 8, 10, 12, 14, ... - -``itertools.ifilterfalse(predicate, iter)`` is the opposite, -returning all elements for which the predicate returns false:: - - itertools.ifilterfalse(is_even, itertools.count()) => - 1, 3, 5, 7, 9, 11, 13, 15, ... - -``itertools.takewhile(predicate, iter)`` returns elements for as long -as the predicate returns true. Once the predicate returns false, -the iterator will signal the end of its results. - -:: - - def less_than_10(x): - return (x < 10) - - itertools.takewhile(less_than_10, itertools.count()) => - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 - - itertools.takewhile(is_even, itertools.count()) => - 0 - -``itertools.dropwhile(predicate, iter)`` discards elements while the -predicate returns true, and then returns the rest of the iterable's -results. - -:: - - itertools.dropwhile(less_than_10, itertools.count()) => - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, ... - - itertools.dropwhile(is_even, itertools.count()) => - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ... - - -Grouping elements -''''''''''''''''' - -The last function I'll discuss, ``itertools.groupby(iter, -key_func=None)``, is the most complicated. ``key_func(elem)`` is a -function that can compute a key value for each element returned by the -iterable. If you don't supply a key function, the key is simply each -element itself. - -``groupby()`` collects all the consecutive elements from the -underlying iterable that have the same key value, and returns a stream -of 2-tuples containing a key value and an iterator for the elements -with that key. - -:: - - city_list = [('Decatur', 'AL'), ('Huntsville', 'AL'), ('Selma', 'AL'), - ('Anchorage', 'AK'), ('Nome', 'AK'), - ('Flagstaff', 'AZ'), ('Phoenix', 'AZ'), ('Tucson', 'AZ'), - ... - ] - - def get_state ((city, state)): - return state - - itertools.groupby(city_list, get_state) => - ('AL', iterator-1), - ('AK', iterator-2), - ('AZ', iterator-3), ... - - where - iterator-1 => - ('Decatur', 'AL'), ('Huntsville', 'AL'), ('Selma', 'AL') - iterator-2 => - ('Anchorage', 'AK'), ('Nome', 'AK') - iterator-3 => - ('Flagstaff', 'AZ'), ('Phoenix', 'AZ'), ('Tucson', 'AZ') - -``groupby()`` assumes that the underlying iterable's contents will -already be sorted based on the key. Note that the returned iterators -also use the underlying iterable, so you have to consume the results -of iterator-1 before requesting iterator-2 and its corresponding key. - - -The functools module ----------------------------------------------- - -The ``functools`` module in Python 2.5 contains some higher-order -functions. A **higher-order function** takes one or more functions as -input and returns a new function. The most useful tool in this module -is the ``partial()`` function. - -For programs written in a functional style, you'll sometimes want to -construct variants of existing functions that have some of the -parameters filled in. Consider a Python function ``f(a, b, c)``; you -may wish to create a new function ``g(b, c)`` that's equivalent to -``f(1, b, c)``; you're filling in a value for one of ``f()``'s parameters. -This is called "partial function application". - -The constructor for ``partial`` takes the arguments ``(function, arg1, -arg2, ... kwarg1=value1, kwarg2=value2)``. The resulting object is -callable, so you can just call it to invoke ``function`` with the -filled-in arguments. - -Here's a small but realistic example:: - - import functools - - def log (message, subsystem): - "Write the contents of 'message' to the specified subsystem." - print '%s: %s' % (subsystem, message) - ... - - server_log = functools.partial(log, subsystem='server') - server_log('Unable to open socket') - - -The operator module -------------------- - -The ``operator`` module was mentioned earlier. It contains a set of -functions corresponding to Python's operators. These functions -are often useful in functional-style code because they save you -from writing trivial functions that perform a single operation. - -Some of the functions in this module are: - -* Math operations: ``add()``, ``sub()``, ``mul()``, ``div()``, ``floordiv()``, - ``abs()``, ... -* Logical operations: ``not_()``, ``truth()``. -* Bitwise operations: ``and_()``, ``or_()``, ``invert()``. -* Comparisons: ``eq()``, ``ne()``, ``lt()``, ``le()``, ``gt()``, and ``ge()``. -* Object identity: ``is_()``, ``is_not()``. - -Consult `the operator module's documentation `__ for a complete -list. - - - -The functional module ---------------------- - -Collin Winter's `functional module `__ -provides a number of more -advanced tools for functional programming. It also reimplements -several Python built-ins, trying to make them more intuitive to those -used to functional programming in other languages. - -This section contains an introduction to some of the most important -functions in ``functional``; full documentation can be found at `the -project's website `__. - -``compose(outer, inner, unpack=False)`` - -The ``compose()`` function implements function composition. -In other words, it returns a wrapper around the ``outer`` and ``inner`` callables, such -that the return value from ``inner`` is fed directly to ``outer``. That is, - -:: - - >>> def add(a, b): - ... return a + b - ... - >>> def double(a): - ... return 2 * a - ... - >>> compose(double, add)(5, 6) - 22 - -is equivalent to - -:: - - >>> double(add(5, 6)) - 22 - -The ``unpack`` keyword is provided to work around the fact that Python functions are not always -`fully curried `__. -By default, it is expected that the ``inner`` function will return a single object and that the ``outer`` -function will take a single argument. Setting the ``unpack`` argument causes ``compose`` to expect a -tuple from ``inner`` which will be expanded before being passed to ``outer``. Put simply, - -:: - - compose(f, g)(5, 6) - -is equivalent to:: - - f(g(5, 6)) - -while - -:: - - compose(f, g, unpack=True)(5, 6) - -is equivalent to:: - - f(*g(5, 6)) - -Even though ``compose()`` only accepts two functions, it's trivial to -build up a version that will compose any number of functions. We'll -use ``reduce()``, ``compose()`` and ``partial()`` (the last of which -is provided by both ``functional`` and ``functools``). - -:: - - from functional import compose, partial - - multi_compose = partial(reduce, compose) - - -We can also use ``map()``, ``compose()`` and ``partial()`` to craft a -version of ``"".join(...)`` that converts its arguments to string:: - - from functional import compose, partial - - join = compose("".join, partial(map, str)) - - -``flip(func)`` - -``flip()`` wraps the callable in ``func`` and -causes it to receive its non-keyword arguments in reverse order. - -:: - - >>> def triple(a, b, c): - ... return (a, b, c) - ... - >>> triple(5, 6, 7) - (5, 6, 7) - >>> - >>> flipped_triple = flip(triple) - >>> flipped_triple(5, 6, 7) - (7, 6, 5) - -``foldl(func, start, iterable)`` - -``foldl()`` takes a binary function, a starting value (usually some kind of 'zero'), and an iterable. -The function is applied to the starting value and the first element of the list, then the result of -that and the second element of the list, then the result of that and the third element of the list, -and so on. - -This means that a call such as:: - - foldl(f, 0, [1, 2, 3]) - -is equivalent to:: - - f(f(f(0, 1), 2), 3) - - -``foldl()`` is roughly equivalent to the following recursive function:: - - def foldl(func, start, seq): - if len(seq) == 0: - return start - - return foldl(func, func(start, seq[0]), seq[1:]) - -Speaking of equivalence, the above ``foldl`` call can be expressed in terms of the built-in ``reduce`` like -so:: - - reduce(f, [1, 2, 3], 0) - - -We can use ``foldl()``, ``operator.concat()`` and ``partial()`` to -write a cleaner, more aesthetically-pleasing version of Python's -``"".join(...)`` idiom:: - - from functional import foldl, partial - from operator import concat - - join = partial(foldl, concat, "") - - -Revision History and Acknowledgements ------------------------------------------------- - -The author would like to thank the following people for offering -suggestions, corrections and assistance with various drafts of this -article: Ian Bicking, Nick Coghlan, Nick Efford, Raymond Hettinger, -Jim Jewett, Mike Krell, Leandro Lameiro, Jussi Salmela, -Collin Winter, Blake Winton. - -Version 0.1: posted June 30 2006. - -Version 0.11: posted July 1 2006. Typo fixes. - -Version 0.2: posted July 10 2006. Merged genexp and listcomp -sections into one. Typo fixes. - -Version 0.21: Added more references suggested on the tutor mailing list. - -Version 0.30: Adds a section on the ``functional`` module written by -Collin Winter; adds short section on the operator module; a few other -edits. - - -References --------------------- - -General -''''''''''''''' - -**Structure and Interpretation of Computer Programs**, by -Harold Abelson and Gerald Jay Sussman with Julie Sussman. -Full text at http://mitpress.mit.edu/sicp/. -In this classic textbook of computer science, chapters 2 and 3 discuss the -use of sequences and streams to organize the data flow inside a -program. The book uses Scheme for its examples, but many of the -design approaches described in these chapters are applicable to -functional-style Python code. - -http://www.defmacro.org/ramblings/fp.html: A general -introduction to functional programming that uses Java examples -and has a lengthy historical introduction. - -http://en.wikipedia.org/wiki/Functional_programming: -General Wikipedia entry describing functional programming. - -http://en.wikipedia.org/wiki/Coroutine: -Entry for coroutines. - -http://en.wikipedia.org/wiki/Currying: -Entry for the concept of currying. - -Python-specific -''''''''''''''''''''''''''' - -http://gnosis.cx/TPiP/: -The first chapter of David Mertz's book :title-reference:`Text Processing in Python` -discusses functional programming for text processing, in the section titled -"Utilizing Higher-Order Functions in Text Processing". - -Mertz also wrote a 3-part series of articles on functional programming -for IBM's DeveloperWorks site; see -`part 1 `__, -`part 2 `__, and -`part 3 `__, - - -Python documentation -''''''''''''''''''''''''''' - -http://docs.python.org/lib/module-itertools.html: -Documentation for the ``itertools`` module. - -http://docs.python.org/lib/module-operator.html: -Documentation for the ``operator`` module. - -http://www.python.org/dev/peps/pep-0289/: -PEP 289: "Generator Expressions" - -http://www.python.org/dev/peps/pep-0342/ -PEP 342: "Coroutines via Enhanced Generators" describes the new generator -features in Python 2.5. - -.. comment - - Topics to place - ----------------------------- - - XXX os.walk() - - XXX Need a large example. - - But will an example add much? I'll post a first draft and see - what the comments say. - -.. comment - - Original outline: - Introduction - Idea of FP - Programs built out of functions - Functions are strictly input-output, no internal state - Opposed to OO programming, where objects have state - - Why FP? - Formal provability - Assignment is difficult to reason about - Not very relevant to Python - Modularity - Small functions that do one thing - Debuggability: - Easy to test due to lack of state - Easy to verify output from intermediate steps - Composability - You assemble a toolbox of functions that can be mixed - - Tackling a problem - Need a significant example - - Iterators - Generators - The itertools module - List comprehensions - Small functions and the lambda statement - Built-in functions - map - filter - reduce - -.. comment - - Handy little function for printing part of an iterator -- used - while writing this document. - - import itertools - def print_iter(it): - slice = itertools.islice(it, 10) - for elem in slice[:-1]: - sys.stdout.write(str(elem)) - sys.stdout.write(', ') - print elem[-1] - - diff --git a/_sources/gh-pages/build/Pygments/tests/examplefiles/jinjadesignerdoc.txt b/_sources/gh-pages/build/Pygments/tests/examplefiles/jinjadesignerdoc.txt deleted file mode 100644 index b4b6c44..0000000 --- a/_sources/gh-pages/build/Pygments/tests/examplefiles/jinjadesignerdoc.txt +++ /dev/null @@ -1,713 +0,0 @@ -====================== -Designer Documentation -====================== - -This part of the Jinja documentaton is meant for template designers. - -Basics -====== - -The Jinja template language is designed to strike a balance between content -and application logic. Nevertheless you can use a python like statement -language. You don't have to know how Python works to create Jinja templates, -but if you know it you can use some additional statements you may know from -Python. - -Here is a small example template: - -.. sourcecode:: html+jinja - - - - - My Webpage - - - - -

    My Webpage

    - {{ variable }} - - - -This covers the default settings. The application developer might have changed -the syntax from ``{% foo %}`` to ``<% foo %>`` or something similar. This -documentation just covers the default values. - -A variable looks like ``{{ foobar }}`` where foobar is the variable name. Inside -of statements (``{% some content here %}``) variables are just normal names -without the braces around it. In fact ``{{ foobar }}`` is just an alias for -the statement ``{% print foobar %}``. - -Variables are coming from the context provided by the application. Normally there -should be a documentation regarding the context contents but if you want to know -the content of the current context, you can add this to your template: - -.. sourcecode:: html+jinja - -
    {{ debug()|e }}
    - -A context isn't flat which means that each variable can has subvariables, as long -as it is representable as python data structure. You can access attributes of -a variable using the dot and bracket operators. The following examples show -this: - -.. sourcecode:: jinja - - {{ user.username }} - is the same as - {{ user['username'] }} - you can also use a variable to access an attribute: - {{ users[current_user].username }} - If you have numerical indices you have to use the [] syntax: - {{ users[0].username }} - -Filters -======= - -In the examples above you might have noticed the pipe symbols. Pipe symbols tell -the engine that it has to apply a filter on the variable. Here is a small example: - -.. sourcecode:: jinja - - {{ variable|replace('foo', 'bar')|escape }} - -If you want, you can also put whitespace between the filters. - -This will look for a variable `variable`, pass it to the filter `replace` -with the arguments ``'foo'`` and ``'bar'``, and pass the result to the filter -`escape` that automatically XML-escapes the value. The `e` filter is an alias for -`escape`. Here is the complete list of supported filters: - -[[list_of_filters]] - -.. admonition:: note - - Filters have a pretty low priority. If you want to add fitered values - you have to put them into parentheses. The same applies if you want to access - attributes: - - .. sourcecode:: jinja - - correct: - {{ (foo|filter) + (bar|filter) }} - wrong: - {{ foo|filter + bar|filter }} - - correct: - {{ (foo|filter).attribute }} - wrong: - {{ foo|filter.attribute }} - -Tests -===== - -You can use the `is` operator to perform tests on a value: - -.. sourcecode:: jinja - - {{ 42 is numeric }} -> true - {{ "foobar" is numeric }} -> false - {{ 'FOO' is upper }} -> true - -These tests are especially useful when used in `if` conditions. - -[[list_of_tests]] - -Global Functions -================ - -Test functions and filter functions live in their own namespace. Global -functions not. They behave like normal objects in the context. Beside the -functions added by the application or framewhere there are two functions -available per default: - -`range` - - Works like the python `range function`_ just that it doesn't support - ranges greater than ``1000000``. - -`debug` - - Function that outputs the contents of the context. - -Loops -===== - -To iterate over a sequence, you can use the `for` loop. It basically looks like a -normal Python `for` loop and works pretty much the same: - -.. sourcecode:: html+jinja - -

    Members

    -
      - {% for user in users %} -
    • {{ loop.index }} / {{ loop.length }} - {{ user.username|escape }}
    • - {% else %} -
    • no users found
    • - {% endfor %} -
    - -*Important* Contrary to Python is the optional ``else`` block only -executed if there was no iteration because the sequence was empty. - -Inside of a `for` loop block you can access some special variables: - -+----------------------+----------------------------------------+ -| Variable | Description | -+======================+========================================+ -| `loop.index` | The current iteration of the loop. | -+----------------------+----------------------------------------+ -| `loop.index0` | The current iteration of the loop, | -| | starting counting by 0. | -+----------------------+----------------------------------------+ -| `loop.revindex` | The number of iterations from the end | -| | of the loop. | -+----------------------+----------------------------------------+ -| `loop.revindex0` | The number of iterations from the end | -| | of the loop, starting counting by 0. | -+----------------------+----------------------------------------+ -| `loop.first` | True if first iteration. | -+----------------------+----------------------------------------+ -| `loop.last` | True if last iteration. | -+----------------------+----------------------------------------+ -| `loop.even` | True if current iteration is even. | -+----------------------+----------------------------------------+ -| `loop.odd` | True if current iteration is odd. | -+----------------------+----------------------------------------+ -| `loop.length` | Total number of items in the sequence. | -+----------------------+----------------------------------------+ -| `loop.parent` | The context of the parent loop. | -+----------------------+----------------------------------------+ - -Loops also support recursion. Let's assume you have a sitemap where each item -might have a number of child items. A template for that could look like this: - -.. sourcecode:: html+jinja - -

    Sitemap -
      - {% for item in sitemap recursive %} -
    • {{ item.title|e }} - {% if item.children %}
        {{ loop(item.children) }}
      {% endif %}
    • - {% endfor %} -
    - -What happens here? Basically the first thing that is different to a normal -loop is the additional ``recursive`` modifier in the `for`-loop declaration. -It tells the template engine that we want recursion. If recursion is enabled -the special `loop` variable is callable. If you call it with a sequence it will -automatically render the loop at that position with the new sequence as argument. - -Cycling -======= - -Sometimes you might want to have different text snippets for each row in a list, -for example to have alternating row colors. You can easily do this by using the -``{% cycle %}`` tag: - -.. sourcecode:: html+jinja - -
      - {% for message in messages %} -
    • {{ message|e }}
    • - {% endfor %} -
    - -Each time Jinja encounters a `cycle` tag it will cycle through the list -of given items and return the next one. If you pass it one item jinja assumes -that this item is a sequence from the context and uses this: - -.. sourcecode:: html+jinja - -
  • ...
  • - -Conditions -========== - -Jinja supports Python-like `if` / `elif` / `else` constructs: - -.. sourcecode:: jinja - - {% if user.active %} - user {{ user.name|e }} is active. - {% elif user.deleted %} - user {{ user.name|e }} was deleted some time ago. - {% else %} - i don't know what's wrong with {{ user.username|e }} - {% endif %} - -If the user is active the first block is rendered. If not and the user was -deleted the second one, in all other cases the third one. - -You can also use comparison operators: - -.. sourcecode:: html+jinja - - {% if amount < 0 %} - {{ amount }} - {% else %} - {{ amount }} - {% endif %} - -.. admonition:: Note - - Of course you can use `or` / `and` and parentheses to create more complex - conditions, but usually the logic is already handled in the application and - you don't have to create such complex constructs in the template code. However - in some situations it might be a good thing to have the abilities to create - them. - -Operators -========= - -Inside ``{{ variable }}`` blocks, `if` conditions and many other parts you can -can use expressions. In expressions you can use any of the following operators: - - ======= =================================================================== - ``+`` add the right operand to the left one. - ``{{ 1 + 2 }}`` would return ``3``. - ``-`` subtract the right operand from the left one. - ``{{ 1 - 1 }}`` would return ``0``. - ``/`` divide the left operand by the right one. - ``{{ 1 / 2 }}`` would return ``0.5``. - ``*`` multiply the left operand with the right one. - ``{{ 2 * 2 }}`` would return ``4``. - ``**`` raise the left operand to the power of the right - operand. ``{{ 2**3 }}`` would return ``8``. - ``in`` perform sequence membership test. ``{{ 1 in [1,2,3] }}`` would - return true. - ``is`` perform a test on the value. See the section about - tests for more information. - ``|`` apply a filter on the value. See the section about - filters for more information. - ``and`` return true if the left and the right operand is true. - ``or`` return true if the left or the right operand is true. - ``not`` negate a statement (see below) - ``()`` call a callable: ``{{ user.get_username() }}``. Inside of the - parentheses you can use variables: ``{{ user.get(username) }}``. - ======= =================================================================== - -Note that there is no support for any bit operations or something similar. - -* special note regarding `not`: The `is` and `in` operators support negation - using an infix notation too: ``foo is not bar`` and ``foo not in bar`` - instead of ``not foo is bar`` and ``not foo in bar``. All other expressions - require a prefix notation: ``not (foo and bar)``. - -Boolean Values -============== - -In If-Conditions Jinja performs a boolean check. All empty values (eg: empty -lists ``[]``, empty dicts ``{}`` etc) evaluate to `false`. Numbers that are -equal to `0`/`0.00` are considered `false` too. The boolean value of other -objects depends on the behavior the application developer gave it. Usually -items are `true`. - -Here some examples that should explain it: - -.. sourcecode:: jinja - - {% if [] %} - will always be false because it's an empty list - - {% if {} %} - false too. - - {% if ['foo'] %} - this is true. Because the list is not empty. - - {% if "foobar" %} - this is also true because the string is not empty. - -Slicing -======= - -Some objects support slicing operations. For example lists: - -.. sourcecode:: jinja - - {% for item in items[:5] %} - This will only iterate over the first 5 items of the list - - {% for item in items[5:10] %} - This will only iterate from item 5 to 10. - - {% for item in items[:10:2] %} - This will only yield items from start to ten and only returing - even items. - -For more informations about slicing have a look at the `slicing chapter`_ -in the "Dive into Python" e-book. - -Macros -====== - -If you want to use a partial template in more than one place, you might want to -create a macro from it: - -.. sourcecode:: html+jinja - - {% macro show_user user %} -

    {{ user.name|e }}

    -
    - {{ user.description }} -
    - {% endmacro %} - -Now you can use it from everywhere in the code by passing it an item: - -.. sourcecode:: jinja - - {% for user in users %} - {{ show_user(user) }} - {% endfor %} - -You can also specify more than one value: - -.. sourcecode:: html+jinja - - {% macro show_dialog title, text %} -
    -

    {{ title|e }}

    -
    {{ text|e }}
    -
    - {% endmacro %} - - {{ show_dialog('Warning', 'something went wrong i guess') }} - -Inheritance -=========== - -The most powerful part of Jinja is template inheritance. Template inheritance -allows you to build a base "skeleton" template that contains all the common -elements of your site and defines **blocks** that child templates can override. - -Sounds complicated but is very basic. It's easiest to understand it by starting -with an example. - -Base Template -------------- - -This template, which we'll call ``base.html``, defines a simple HTML skeleton -document that you might use for a simple two-column page. It's the job of -"child" templates to fill the empty blocks with content: - -.. sourcecode:: html+jinja - - - - - - {% block title %}{% endblock %} - My Webpage - {% block html_head %}{% endblock %} - - -
    - {% block content %}{% endblock %} -
    - - - - -In this example, the ``{% block %}`` tags define four blocks that child templates -can fill in. All the `block` tag does is to tell the template engine that a -child template may override those portions of the template. - -Child Template --------------- - -A child template might look like this: - -.. sourcecode:: html+jinja - - {% extends "base.html" %} - {% block title %}Index{% endblock %} - - {% block html_head %} - - {% endblock %} - - {% block content %} -

    Index

    -

    - Welcome on my awsome homepage. -

    - {% endblock %} - -The ``{% extends %}`` tag is the key here. It tells the template engine that -this template "extends" another template. When the template system evaluates -this template, first it locates the parent. - -The filename of the template depends on the template loader. For example the -``FileSystemLoader`` allows you to access other templates by giving the -filename. You can access templates in subdirectories with an slash: - -.. sourcecode:: jinja - - {% extends "layout/default.html" %} - -But this behavior can depend on the application using Jinja. - -Note that since the child template didn't define the ``footer`` block, the -value from the parent template is used instead. - -.. admonition:: Note - - You can't define multiple ``{% block %}`` tags with the same name in the - same template. This limitation exists because a block tag works in "both" - directions. That is, a block tag doesn't just provide a hole to fill - it - also defines the content that fills the hole in the *parent*. If there were - two similarly-named ``{% block %}`` tags in a template, that template's - parent wouldn't know which one of the blocks' content to use. - -Template Inclusion -================== - -You can load another template at a given position using ``{% include %}``. -Usually it's a better idea to use inheritance but if you for example want to -load macros, `include` works better than `extends`: - -.. sourcecode:: jinja - - {% include "myhelpers.html" %} - {{ my_helper("foo") }} - -If you define a macro called ``my_helper`` in ``myhelpers.html``, you can now -use it from the template as shown above. - -Filtering Blocks -================ - -Sometimes it could be a good idea to filter a complete block of text. For -example, if you want to escape some html code: - -.. sourcecode:: jinja - - {% filter escape %} - - goes here - - {% endfilter %} - -Of course you can chain filters too: - -.. sourcecode:: jinja - - {% filter lower|escape %} - SOME TEXT - {% endfilter %} - -returns ``"<b>some text</b>"``. - -Defining Variables -================== - -You can also define variables in the namespace using the ``{% set %}`` tag: - -.. sourcecode:: jinja - - {% set foo = 'foobar' %} - {{ foo }} - -This should ouput ``foobar``. - -Scopes -====== - -Jinja has multiple scopes. A scope is something like a new transparent foil on -a stack of foils. You can only write to the outermost foil but read all of them -since you can look through them. If you remove the top foil all data on that -foil disappears. Some tags in Jinja add a new layer to the stack. Currently -these are `block`, `for`, `macro` and `filter`. This means that variables and -other elements defined inside a macro, loop or some of the other tags listed -above will be only available in that block. Here an example: - -.. sourcecode:: jinja - - {% macro angryhello name %} - {% set angryname = name|upper %} - Hello {{ name }}. Hello {{ name }}! - HELLO {{ angryname }}!!!!!!111 - {% endmacro %} - -The variable ``angryname`` just exists inside the macro, not outside it. - -Defined macros appear on the context as variables. Because of this, they are -affected by the scoping too. A macro defined inside of a macro is just available -in those two macros (the macro itself and the macro it's defined in). For `set` -and `macro` two additional rules exist: If a macro is defined in an extended -template but outside of a visible block (thus outside of any block) will be -available in all blocks below. This allows you to use `include` statements to -load often used macros at once. - -Undefined Variables -=================== - -If you have already worked with python you probably know about the fact that -undefined variables raise an exception. This is different in Jinja. There is a -special value called `undefined` that represents values that do not exist. - -This special variable works complete different from any variables you maybe -know. If you print it using ``{{ variable }}`` it will not appear because it's -literally empty. If you try to iterate over it, it will work. But no items -are returned. Comparing this value to any other value results in `false`. -Even if you compare it to itself: - -.. sourcecode:: jinja - - {{ undefined == undefined }} - will return false. Not even undefined is undefined :) - Use `is defined` / `is not defined`: - - {{ undefined is not defined }} - will return true. - -There are also some additional rules regarding this special value. Any -mathematical operators (``+``, ``-``, ``*``, ``/``) return the operand -as result: - -.. sourcecode:: jinja - - {{ undefined + "foo" }} - returns "foo" - - {{ undefined - 42 }} - returns 42. Note: not -42! - -In any expression `undefined` evaluates to `false`. It has no length, all -attribute calls return undefined, calling too: - -.. sourcecode:: jinja - - {{ undefined.attribute().attribute_too[42] }} - still returns `undefined`. - -Escaping -======== - -Sometimes you might want to add Jinja syntax elements into the template -without executing them. In that case you have quite a few possibilities. - -For small parts this might be a good way: - -.. sourcecode:: jinja - - {{ "{{ foo }} is variable syntax and {% foo %} is block syntax" }} - -When you have multiple elements you can use the ``raw`` block: - -.. sourcecode:: jinja - - {% raw %} - Filtering blocks works like this in Jinja: - {% filter escape %} - - goes here - - {% endfilter %} - {% endraw %} - -Reserved Keywords -================= - -Jinja has some keywords you cannot use a variable names. This limitation -exists to make look coherent. Syntax highlighters won't mess things up and -you will don't have unexpected output. - -The following keywords exist and cannot be used as identifiers: - - `and`, `block`, `cycle`, `elif`, `else`, `endblock`, `endfilter`, - `endfor`, `endif`, `endmacro`, `endraw`, `endtrans`, `extends`, `filter`, - `for`, `if`, `in`, `include`, `is`, `macro`, `not`, `or`, `pluralize`, - `raw`, `recursive`, `set`, `trans` - -If you want to use such a name you have to prefix or suffix it or use -alternative names: - -.. sourcecode:: jinja - - {% for macro_ in macros %} - {{ macro_('foo') }} - {% endfor %} - -If future Jinja releases add new keywords those will be "light" keywords which -means that they won't raise an error for several releases but yield warnings -on the application side. But it's very unlikely that new keywords will be -added. - -Internationalization -==================== - -If the application is configured for i18n, you can define translatable blocks -for translators using the `trans` tag or the special underscore function: - -.. sourcecode:: jinja - - {% trans %} - this is a translatable block - {% endtrans %} - - {% trans "This is a translatable string" %} - - {{ _("This is a translatable string") }} - -The latter one is useful if you want translatable arguments for filters etc. - -If you want to have plural forms too, use the `pluralize` block: - -.. sourcecode:: jinja - - {% trans users=users %} - One user found. - {% pluralize %} - {{ users }} users found. - {% endtrans %} - - {% trans first=(users|first).username|escape, user=users|length %} - one user {{ first }} found. - {% pluralize users %} - {{ users }} users found, the first one is called {{ first }}. - {% endtrans %} - -If you have multiple arguments, the first one is assumed to be the indicator (the -number that is used to determine the correct singular or plural form. If you -don't have the indicator variable on position 1 you have to tell the `pluralize` -tag the correct variable name. - -Inside translatable blocks you cannot use blocks or expressions (however you can -still use the ``raw`` block which will work as expected). The variable -print syntax (``{{ variablename }}``) is the only way to insert the variables -defined in the ``trans`` header. Filters must be applied in the header. - -.. admonition:: note - - Please make sure that you always use pluralize blocks where required. - Many languages have more complex plural forms than the English language. - - Never try to workaround that issue by using something like this: - - .. sourcecode:: jinja - - {% if count != 1 %} - {{ count }} users found. - {% else %} - one user found. - {% endif %} - -.. _slicing chapter: http://diveintopython.org/native_data_types/lists.html#odbchelper.list.slice -.. _range function: http://docs.python.org/tut/node6.html#SECTION006300000000000000000 diff --git a/_sources/gh-pages/build/commando/AUTHORS.txt b/_sources/gh-pages/build/commando/AUTHORS.txt deleted file mode 100644 index 366ac87..0000000 --- a/_sources/gh-pages/build/commando/AUTHORS.txt +++ /dev/null @@ -1,35 +0,0 @@ -------------------------- -Authors -------------------------- - -* `Lakshmi Vyas`_ - - - Maintainer. - -* `Brandon Philips`_ - - - Clean up packaging issues. - - * Use ``distribute`` to peek into the package to get the issue number. - {38e21c48680873fc7409effb654c0c733024e9e1}. - - * Get ``install_requires`` from the ``requirements.txt`` file. - {d8b29fa3fe2f0bdeeda91c445a9aea38b8fa5b70}. - -* `Ben West`_ - - - Allow parameterless subcommands and commands. (Pull #4). - -* `Julien Danjou`_ - - - Support for nested subcommands. (Pull #7) - -* `fruch`_ - - Use the parameters in the same order as provided. (Pulls #8) - -.. _Lakshmi Vyas: https://github.com/lakshmivyas -.. _Brandon Philips: https://github.com/philips -.. _Ben West: https://github.com/bewest -.. _Julien Danjou: https://github.com/jd -.. _fruch: https://github.com/fruch diff --git a/_sources/gh-pages/build/commando/CHANGELOG.txt b/_sources/gh-pages/build/commando/CHANGELOG.txt deleted file mode 100644 index da45f4d..0000000 --- a/_sources/gh-pages/build/commando/CHANGELOG.txt +++ /dev/null @@ -1,66 +0,0 @@ -Version 0.3.2a --------------- - -- Add `load_python_object` to load a python object using a qualified name. - -Version 0.3.1a --------------- - -Thanks to `fruch_ : - -- Preserve the order of parameters in declaration. - -Version 0.3a --------------- - -Thanks to `Julien Danjou`_ : - -- Add support for nested sub commands. - {0e26a6fe2571accb78d26318ab1b8dc65636d2b0}. (Pull #7) - -Version 0.2.1a --------------- - -Thanks to `Ben West`_ : - -- Allow commands to have no params. - -Version 0.2a --------------- - -- Bundle various frequently used utilities with commando. - (``ShellCommand``, ``ConfigDict``, ``autoprop`` and logging helpers). - {63525646bb366f4def3c5065a51a404b18269873}. (Pull #4) - - -Version 0.1.3a --------------- - -- Commando must consume exceptions by default. Any exception should be - communicated in a friendly manner to the user via the parser or the - given logger. {0e26a6fe2571accb78d26318ab1b8dc65636d2b0}. - -Version 0.1.2a ---------------- - -Thanks to `Brandon Philips`_ : - -- Use ``distribute_setup.py``. -- Derive version from ``pkg_resources``. -- Add ``argparse`` as a dependency. - -Version 0.1.1a ---------------- - -- Add more decorators that map to argparse parameters. - -Version 0.1a ------------- - -- Create a simple meta programmed wrapper around ``argparse``. - -.. _Lakshmi Vyas: https://github.com/lakshmivyas -.. _Brandon Philips: https://github.com/philips -.. _Ben West: https://github.com/bewest -.. _Julien Danjou: https://github.com/jd -.. _fruch: https://github.com/fruch diff --git a/_sources/gh-pages/build/commando/CONTRIBUTING.txt b/_sources/gh-pages/build/commando/CONTRIBUTING.txt deleted file mode 100644 index 1ed625c..0000000 --- a/_sources/gh-pages/build/commando/CONTRIBUTING.txt +++ /dev/null @@ -1,46 +0,0 @@ -**tl;dr** Good (code + tests + commit message) = Great Pull Request. - -***************************************************************************** - -How do the pull requests get merged? ------------------------------------- - -The following points are considered as part of merging pull requests after -it is deemed necessary. - -1. Is there an issue tagged in the commit? -2. Do the existing tests pass? -3. Are there new tests added to verify any new functionality / issue? -4. Is the authors list up to date? -5. Is the changelog updated? -6. Is the version updated? -7. Does this require any changes to the documentation? - -Guidelines ------------ - -If the following guidelines are observed as much as possible, it will -immensely help in verifying and merging the pull requests. - -1. One pull request = One feature or One bug. -2. Always tag an issue in the commit. If an issue does - not exist for a feature or a bug, please add one. -3. Use topic / feature branches. -4. Make sure a test exists to verify the committed code. A - good way to think about it is: if these commits were reversed - and only the test were added back in, it ought to fail. -5. Make the `commit message`_ as verbose as possible. -6. Add yourself to `Authors`_ list and update your contribution. -7. Cross update `Changelog`_ list as well. -8. Update ``version.py`` and ``README.rst`` with a version in this format: - -. -9. If the change was complicated and resulted in a lot of commits, - consider ``rebase -i`` to sqash and/or rearrange them to make it easier - to review. -10. Update the `Readme`_. - - -.. _commit message: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html -.. _Changelog: CHANGELOG.rst -.. _Authors: AUTHORS.rst -.. _Readme: README.rst \ No newline at end of file diff --git a/_sources/gh-pages/build/commando/README.txt b/_sources/gh-pages/build/commando/README.txt deleted file mode 100644 index 8bacf7f..0000000 --- a/_sources/gh-pages/build/commando/README.txt +++ /dev/null @@ -1,76 +0,0 @@ -============================ -commando - argparse in style -============================ - -**Version 0.3.2a** - -A simple wrapper for ``argparse`` that allows commands and arguments -to be defined declaratively using decorators. Note that this does -not support all the features of ``argparse`` yet. - -Commando also bundles a few utilities that are useful when building -command line applications. - -Example --------- - -Without commando:: - - - def main(): - parser = argparse.ArgumentParser(description='hyde - a python static website generator', - epilog='Use %(prog)s {command} -h to get help on individual commands') - parser.add_argument('-v', '--version', action='version', version='%(prog)s ' + __version__) - parser.add_argument('-s', '--sitepath', action='store', default='.', help="Location of the hyde site") - subcommands = parser.add_subparsers(title="Hyde commands", - description="Entry points for hyde") - init_command = subcommands.add_parser('init', help='Create a new hyde site') - init_command.set_defaults(run=init) - init_command.add_argument('-t', '--template', action='store', default='basic', dest='template', - help='Overwrite the current site if it exists') - init_command.add_argument('-f', '--force', action='store_true', default=False, dest='force', - help='Overwrite the current site if it exists') - args = parser.parse_args() - args.run(args) - - def init(self, params): - print params.sitepath - print params.template - print params.overwrite - - -With commando:: - - - class Engine(Application): - - @command(description='hyde - a python static website generator', - epilog='Use %(prog)s {command} -h to get help on individual commands') - @param('-v', '--version', action='version', version='%(prog)s ' + __version__) - @param('-s', '--sitepath', action='store', default='.', help="Location of the hyde site") - def main(self, params): pass - - @subcommand('init', help='Create a new hyde site') - @param('-t', '--template', action='store', default='basic', dest='template', - help='Overwrite the current site if it exists') - @param('-f', '--force', action='store_true', default=False, dest='overwrite', - help='Overwrite the current site if it exists') - def init(self, params): - print params.sitepath - print params.template - print params.overwrite - -Resources ---------- - -1. `Changelog`_ -2. `License`_ -3. `Contributing`_ -4. `Authors`_ - - -.. _Changelog: CHANGELOG.rst -.. _LICENSE: LICENSE -.. _Contributing: CONTRIBUTING.rst -.. _Authors: AUTHORS.rst - diff --git a/_sources/index.txt b/_sources/index.txt index a38b72e..cb49760 100644 --- a/_sources/index.txt +++ b/_sources/index.txt @@ -94,9 +94,9 @@ Announcements computing. - **Roadmap to 1.0 and beyond**: IPython 1.0 is coming mid-July 2013. See the - grant_ which is funding the bulk of the work, as well as our roadmap_ for - achieving the grant's objectives. - `Read on for more details `_. + `grant `_ which is funding the bulk of the work, as well as + our roadmap_ for achieving the grant's objectives. `Read on for more details + `_. - **Sloan Foundation grant**: IPython has been awarded a $1.15 million grant from the `Alfred P. Sloan Foundation`_. This will @@ -104,7 +104,10 @@ Announcements IPython Notebook into a tool for open, collaborative, reproducible scientific computing. We'll also be bringing developers together for two sprints each year in California. `See more details. `_ - + +.. _roadmap: https://github.com/ipython/ipython/wiki/Roadmap:-IPython +.. _Alfred P. Sloan Foundation: http://www.sloan.org/ + `More news... `_ .. _citing: @@ -121,85 +124,24 @@ please acknowledge this fact by citing the project. You can use this `ready-made citation entry `_. -Support -======= - -We gratefully acknowledge the support we've received over the years from the -following sources: - -- In December 2012, IPython was awarded a `$1.15 million grant - `_ from the `Alfred P. Sloan Foundation`_ that will fund - the core team for the 2012-2013 period. - -- Since 2011, we have had support from the US DoD High Performance Computing - Modernization Program (HPCMP_), which funds several IPython developers in - collaboration with the US Army Engineer Research and Development Center - (ERDC_) that provides computing resources and support from the staff. - -- `Enthought Inc`_ has supported IPython since its beginning in multiple forms, - including --but not limited to-- the funding of our Qt console, hosting our - website for many years, the continued hosting of our mailing lists, and the - inclusion of IPython in the `Enthought Python Distribution`_. - -- NiPy_/NIH: funding via the NiPy project (NIH grant 5R01MH081909-02) supported - our 2009 refactoring work. - -- Sage_/NSF: funding via the grant `Sage: Unifying Mathematical Software for - Scientists, Engineers, and Mathematicians - `_ (NSF grant - DMS-1015114) supported our Seattle 2011 developer meeting. - -- Microsoft's team working on `Python Tools for Visual Studio - `_ developed the integraton of IPython into the - Python plugin for Visual Studio 2010. - -- `Tech-X Corporation `__ supported in 2008 the development - of our parallel computing tools. - -- Google Summer of Code: in 2005 and 2010 we've had GSoC support for prototypes - in several areas of the project. - -- The Ohio Supercomputer Center and the Department of Defense High Performance - Computing Modernization Program (HPCMP), for sponsoring work in 2009 on our - parallel computing tools. - -- `Bivio Software `_ hosted an IPython sprint in 2006, in - addition to their support of the Front Range Pythoneers group in Boulder, CO. - -- `GitHub `_ hosts our development workflow and - documentation. - -- `ShiningPanda `_ gives us a free `continuous - integration service `_. - -.. _Alfred P. Sloan Foundation: http://www.sloan.org -.. _HPCMP: http://www.hpcmo.hpc.mil -.. _ERDC: http://www.erdc.usace.army.mil -.. _Enthought inc: http://enthought.com -.. _Enthought Python Distribution: http://www.enthought.com/products/epd.php -.. _nipy: http://nipy.org -.. _sage: http://sagemath.org -.. _grant: http://ipython.org/sloan-grant.html -.. _roadmap: https://github.com/ipython/ipython/wiki/Roadmap:-IPython - - .. toctree:: :hidden: citing documentation + donate faq install - notebook news + notebook presentation pyreadline + roadmap-announcement + searchresults showmedo + sloan-grant + sponsors usersurvey2011 videos whatsnew082 whatsnew083 - searchresults - sloan-grant - roadmap-announcement - donate diff --git a/_sources/install.txt b/_sources/install.txt index a96dbe2..8348b19 100644 --- a/_sources/install.txt +++ b/_sources/install.txt @@ -14,14 +14,14 @@ basic libraries for scientific computing and data analysis. .. note:: - We have just made a new release, and it will take a few days to appear - in Anaconda, EPD and Linux distributions. To get the latest - version, see :ref:`downloads`. + We have just made a new release, and it will take some time to appear in + Anaconda, Enthought Canopy and Linux distributions. **Mac or Windows** -1. Download and install `Anaconda `_ or the free edition of the `Enthought Python Distribution -(EPD) `_. +1. Download and install `Anaconda `_ or the +free edition of `Enthought Canopy +`_. 2. Update IPython to the current version: @@ -32,7 +32,7 @@ basic libraries for scientific computing and data analysis. conda update conda conda update ipython - EPD:: + Enthought Canopy:: sudo enpkg enstaller sudo enpkg ipython @@ -44,7 +44,7 @@ basic libraries for scientific computing and data analysis. conda update conda conda update ipython - EPD:: + Enthought Canopy:: enpkg enstaller enpkg ipython diff --git a/_sources/microsoft-donation-2013.txt b/_sources/microsoft-donation-2013.txt new file mode 100644 index 0000000..4330c6d --- /dev/null +++ b/_sources/microsoft-donation-2013.txt @@ -0,0 +1,13 @@ +.. _microsoft-donation-2013: + +========================================= + Microsoft Corporation sponsors IPythhon +========================================= + +We are thrilled to announce that in August 2013, Microsoft has completed a +donation of $100,000 to sponsor IPython's continued development. This donation +was received through NumFOCUS_ + +IPython + +.. include:: links.txt diff --git a/_sources/sloan-grant.txt b/_sources/sloan-grant.txt index b4e7091..bf113eb 100644 --- a/_sources/sloan-grant.txt +++ b/_sources/sloan-grant.txt @@ -1,3 +1,5 @@ +.. _sloan_grant: + ====================== Sloan Foundation Grant ====================== diff --git a/_sources/sponsors.txt b/_sources/sponsors.txt new file mode 100644 index 0000000..4fc5b8b --- /dev/null +++ b/_sources/sponsors.txt @@ -0,0 +1,72 @@ +========== + Sponsors +========== + +The following institutions support IPython with significant resources: + +.. image:: _static/sloan-logo.png + :target: sloan-grant.html + +In December 2012, IPython was awarded a `$1.15 million grant +`_ from the `Alfred P. Sloan Foundation`_ that will fund the +core team for the 2013-2014 period. + +Contributing +============ + +If you would like to support the project by making a substantial or periodic +contribution, please contact us directly (ipython@gmail.com). All donations to +IPython are handled by NumFOCUS_ and are tax-deductible in the USA. + +Individuals can also :ref:`donate to IPython `, and we are grateful for every +contribution! + + +Other support +============= + + +We gratefully acknowledge the support we've received over the years from the +following sources: + +- Since 2011, we have had support from the US DoD High Performance Computing + Modernization Program (HPCMP_), which funds several IPython developers in + collaboration with the US Army Engineer Research and Development Center + (ERDC_) that provides computing resources and support from the staff. + +- `Enthought Inc`_ has supported IPython since its beginning in multiple forms, + including --but not limited to-- the funding of our Qt console, hosting our + website for many years, the continued hosting of our mailing lists, and the + inclusion of IPython in the `Enthought Python Distribution`_. + +- NiPy_/NIH: funding via the NiPy project (NIH grant 5R01MH081909-02) supported + our 2009 refactoring work. + +- Sage_/NSF: funding via the grant `Sage: Unifying Mathematical Software for + Scientists, Engineers, and Mathematicians + `_ (NSF grant + DMS-1015114) supported our Seattle 2011 developer meeting. + +- Microsoft's team working on `Python Tools for Visual Studio + `_ developed the integraton of IPython into the + Python plugin for Visual Studio 2010. + +- `Tech-X Corporation `__ supported in 2008 the development + of our parallel computing tools. + +- Google Summer of Code: in 2005 and 2010 we've had GSoC support for prototypes + in several areas of the project. + +- The Ohio Supercomputer Center and the Department of Defense High Performance + Computing Modernization Program (HPCMP), for sponsoring work in 2009 on our + parallel computing tools. + +- `Bivio Software `_ hosted an IPython sprint in 2006, in + addition to their support of the Front Range Pythoneers group in Boulder, CO. + +- GitHub_ hosts our development workflow and documentation. + +- `ShiningPanda `_ gives us a free `continuous + integration service `_. + +.. include:: links.txt diff --git a/_static/microsoft-logo.png b/_static/microsoft-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3fd279cdeb47c9149383ec61fea115e6bc51daf6 GIT binary patch literal 7314 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

    *(OYPaFz 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 literal 0 HcmV?d00001 diff --git a/_static/simons-logo.png b/_static/simons-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f20ad8e00ad8b2ba1efb3406d22f8c9d7795120b GIT binary patch literal 13369 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 HQPBSZi$a?@ literal 0 HcmV?d00001 diff --git a/_static/sloan-logo.jpg b/_static/sloan-logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..18bf35b52788d556d13fa4ad754d427a66fd7a3d GIT binary patch literal 138765 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]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

    g z=Xk6O9j{4a?TN~5To71npafhd)M4)#u0SAH150}}2k%Ku*E2~KeO}NeYqssP@*x_x z!s+xJ1N20g>X-4np0|^IE!}0BNFBopv4KW@w&zIrw95r2i<8UWp1<*dcJ@%*%k{fT zYqDlyOqXed-E^c4rt1Zyhr6@S!-3^S#^O@kkne8RTLdz#mG_>@NQpYQ*J+`TNmopu zS<);PVaXO+i=6Png+kxm_IZ>PJ|Jg%s}m$_z&Oy?A;NWczY;-`Mf=7;*NB0cLd*re zObeHq!IV>@@BLS=S<}>d9U_)&zED*|wV$(pDBUe*%B`e^#U>u}4p6>o=#S9ZBhMO$ zc7&Fs&8%))b1j=}NKTb1SXW>=9z1HQtJzu9^ITcp2nl?uXhVH!uU7x*$RzO_^G?>` z24V`Hsc9px;gfvWyGhGI+NB7dE3{kJc_*zA)w^Q|P`J4#iidR^F(w52Hif^vA|?*7b>- zpUB~aUKnv%eeXu0P&D&fz5~4Z?~K!PKQez^$7;_p@8`uA$T9twliu?_xCaZ}^vh?G zK3|4?rmjF?mPU**89-`9qBhYdld4vy0MCs|k^Xgtm@H1hJeE4(Teh$}qVzow~ z5;kspjXq{jWAT}yD>f0Q7e`fYkh5Ez+h?irC`ev8{YyUBx2=%_F$|wT%zMWdV&pLb zo>zN+ehs9>>ohK27e~3HG;9!pU;8`^-+_6~)S7F|J-80MYuz#C5j=#=~7qyhCA6+_h2 zl+cmxi#tS5X=|b3&g|i%C*+jh-eU3NI$r;mrR@{YpdUNG#AH?MetLK+TA2Qx23>kY z-3B&pj)(jOAaZ-*nvZ7|H%4n50MhA~!CfRP!{b9u+3$Izsk6+~*-yIXDzJP7yGdwT z*Y$H~QWQX(id;QcYlhg}=Xr5F`xZEI8}JY5-0VAe{GkCR-)Ya*tk)mdP&xS^?7Zlk zNJgmL0NTCMv<$B0l8=geM_OM`GkIc|fkyB4KaVB1u6BH4q4+L79jq#l1vhc08v+1; z&I54y=o>VP#0jV~B#H)VML=Fl2N~R5Z4r~{{idY#TAra^QndEF4VSNeif5~-KMtp| z7%UN$)WW!xZ!71;wGZU3YpDHA*C3=JG&MvOJ5gCY0W%#!bUPYlX-0`!VxVe7}~rGZ@ee0xfKRka(h&0|5$ zb1T(>Yw3p6*VOgC+_~ccuXDgma1-rii?C6m%mUspe9FmSoGi7 zIr~SC^(TCpm(+$Css98qlbUANaFIM|YkRghxgl6*sN5b_EtCcP5{6MjVu1F766a^AN?VQ;!UC(LqH7LFh zqOKM6K%~@3Xw;)82$kaRp!0`c1C!1&jchaFv|lJY9zuRk-tIJIr)&&#`_w*Ne1r|E3H7(n)3qR=$3bHAeo@akl{wv2)Ej zQ6s>2M}==Ema8uAUlPC32VoUaN;P}U=A)mEN$(kT0b-IvWO^<+jVi|pM7h)y(U2Y> zW9w;3KEhpH4}Zz%0Jn7m37GXk$E^VVElTq8)AMI|$f?gjFhYuk;@P|uN+r|!b(r%- zEub$}c+jZZN|R23(YpQ7+#v|pypc1* zt%kWbz>=@v$YkKN;-{}tR3`G%msu&XY-~=;c_2zy^&SAIyL#Ra7tj4DGw?9ykl|% zd&Xskn4ESR_6AtI3^CFj1D|SA#*&M2x7~K^cEK5d=!HvKmK`N%em$jAe07u-<8=-A z0Z#Jw%XhPUYJUvTMV&xzkTSYS?KJNq;Ez%o^)aIeg?`0c#DVPK2NfGF#3VjCOz9^@eGLL6K~nGOBQL+M-^mw7jkk$s-feiQWD+~4TUgugjbKDbiMlK+vxK$ABx zg9ud0ju>k*UvY^m_udrA*T+~ik4=}7ztpkSQ?Y#-c@_*J@ zvA~tfs*+bqP^ybT9<*pT55Mj5&NES2e)KHY1s6Xe{scolB`?!TIBmbf_Kd;p&v}OY zkB8ugs2(Ma?pgR@Y9TP-O^ZB3D5X>^LVmyLHcdtU`Jwb4ivZ4c(`A6R2zZkLe)I}F z3$rwszc&bu3aiq;9`^t3;pR4VwqX8!KDiyANK!0eklGgZmQdiGYmOTTpA{OGT*sFE z+dK~Rdk};s^d(K6ev8uw@?S`6#bp>4C|C!*O|n2u9`lS9I{R&5`|T7-F`LD_#)u6 zsYl_#)kbhzy$6W`N+e9Y-=3O>jkBkgtn+P!#{*9KYWybIZkb?Y_UuM}bj@BSkw8t^>n`!PfV?un}WHjqdr#}?HkBmRMh0b3b0uW;@Pe#48J8FEI0#P zgIFmB!EdjKNvBm_V_KXANGoqmh;V9CEHMhpnNxjN zmJ#Z-5*)%1PEj!+E-=WgPDt4Goke9&G z*0Lfir11RxJNj3a9nN%x*DuefPHr-(O=wrUrB_X#eyo{&^H2~S+?|M+FQpQAQWOe( zwrnhuk98&<)V%jex3B}%%v@P*H4R+iI*%O3*Y-DnkntSq>NZ7|U_k|C*^I40Npf}t z>26io{h6bY@+mNfm4~s@T zuWFpib$nym$I`aWY8>A@b`;oOCE5Np$^*GrkC~TDDt?wYIKcknTmMVZHkImD-*MZG zi&Kf1)uL637K{XFB~Kx`Y`2HE_b%~}3+O>N=8A6nz5aAGpXwU}wgrl}4 zz5}WMt{lwiPYjYnZv3egG%G~7_|s;Pq~7DXk(XAv2!f^;y;+I-Y%5DPG1-#Q@KsNK z#12;oMI3lyx7Xe(J5DJOh#GH%^g5E`CpAfo$}HpE{$}KI&s(<7>x6IC06U=!+8R(B zN0b>8fuJ!hb4n4SsX|zVW$0C{pKpt=FQ;1e^RPL4t~yaQ6Pncu3BqzMr?9QCq>TP} zOMf-^JfO3B!r=jKSonOp@@e_*=ENn00cQOi=M*WD<`tuOD zUHkk@{Z9SZM{xp1&K$|Ekz!asx0d&e&c@h5c{eh;3YVDxJUx&X>P2U;N%j44MmNEr z+KArKz_{z6{!$WEd{OO*&vu$)J<%}z%h|y<vg49Q<8oDPbUosoy~@agG?C zVOK?|Q@9?c#6LjF$onfTMs2(ks>m{oTW{`9a)32HgUk`VXq^=nxqTPl z$&$}TE7F5Ef73nq5KZLob;bBGDCUw;zJcjl?Lgg#|uVy4VH$E=O{`z`pxbU z46PPmq}UHj;hiSZY2{!TV3J+pUK1zhKpwhX?mZ|LIVEBUigyjkwhB`f0+l>OQ-wOR z@H__V7JUlSY%;>mrtD9h=T-OxGlB&uj;bP(Ro*z? zdlDq^9hCG4G6IAYFghz$;wgcU{_MzzEv~2%%S=j&9Zy!>z4ZW>2a#f=v;j42J}b+n zko&hisl_Z%C_Rhza z-lUE`u20tVz-t|T_nWR(urH9H4cb@UyFdJv!?IkrLy1UP0F}TSk^bW z6!ZUOl#jdH#c}6!Q;crJ&bI%7mq$JV}W3jiOc2 zMd|VAS{GVELw-g1GjH+Av#rG}{m%q5>u6rM?%MVwK$OZi2;@Sdj(tXYec^hW#UT@4 z;d%Oy>-jIK3qpV*&CraBBdVu-YcFz3^T>-DzF+r@Gq;-Uu3PmT{%Ww!)Z$u5N1;3a zAkF%l2JA;>qC>YDNhE5XU(9*CYV^5WWqs!r9xb+(zr_{6D*rL}{Lhb^6qiZ@YQc=3>5r@*iMcoC=RKr+Q(b0 zHC1tr&)SUp!VDCYxXzjWzkpW!rMO9iXuiQ39^yE~BB;G}H2y>b{`?q*aA=bRWG~+= zJ{^#4tXlc7;wAuX$!5)h}zo*6nU1+T1m_i5^;KSAEM6p1jb1QGBz0V<2T`21>$L}^b1bpm>gyf)u8 zRx&AxC@DInwk!V}4|A=YkTXQtg3YY?*2~}e2X$?YKKB^L_d6A0a!P}Z`m64cNZ4!bq~_AKS-Pe@1+%PB$u3| z2Td^pVbss2)d1Jf*VNCgt$i_Z{Cgb_IlNh71ON~5#XPoyF01a}F$+`dwZq^_)S8FN z9bv7}rCu#)K+)Uwx~ok{6zQ053U)wAc+ht2K%bi4nNFF#yx6Uq<;yoKvMRJ_GQh1d zgXlwe10l8~SZEt@)5y>N$Huvrbl0w~WL*S1C8{h2M@s3A;0~m{dI9Ru3ceFQ+Lx;1 z2Q*OQpSk5}eK-&=V)-j8z;oFRth1z5^o9Z%A6{MTw2mD_Ya9+NprH=E_U*4IF<~=K z64lPSz1n<6i!s>A3cLVDI<|~XlDm~Say#bUgM%eK6^oexSR2QvE>3Q2rG!r}ca4F; zA?6GC&x)*&K9wR1byxobOAcF{gxoB>ocp%s*2EzvdPWoAVF#CXzeY`eg zqAAGwu0!@@)K)~P>SE?c1i3p_KFU|l(yH$OG|B&dO83vS1xxbQ7`N1J0h6oUjDdg$ z{|Pe{@FTx%UoxFK+`h*MYng40rOt0v=&gSkl4Xi^w=bY(G!cOAwwc*mzdh}tQroxf zKvJ`3pLtxit*Beq0+qi?d&0A4)Cx3gWH!w*Tjfys9UCzH7cuDd1Q~Tuq?eFn#$gl| z)?82NoHCR!N;`FQC;Vm&`yyaZOTu%B_BR?1xQFlNG>^b`{z!ttkfX#0yYN_&?98jg zdP-jFVcru8;rHBjoZgY{?@Qy|TQI4%xt(tCAiu}Q@=K-biOX6W6yGwGjTIc0;*mC! zku0IFr1Mx<9H23PEY&OfM$+bFVr4P2``(ci%d6|9D-OA|(C;}q0V+i0$R&>%lWaPZP0{5?eV7PIeW4%=BKRErMf2Q=qPN4z)MwT@d z?bPp=Z*AD~Fhoz#;L1_1P`go-?Yb7#Z&!!gsQMvv9RmZccu<1Mg9gWor;O|?iy2xx zkJv4$-`b$L$YRLme-KxbD`Tam-lSw(=mdufj72htw4Qhq)vx{l_Qz`G8Q>Z+9H`^O z-bX{5+z0R$?^5i~sLEe^WMIvUCCUP z)_rU{#+i~EyTi7t(Ua(&GLOreBBj`7&>$jw-hl#7sf;QTWUZ|BX1Q}9%&~~mu+giO z!eQH6N_n-4`O&@sswpahWMJin+}qT%v{cN3BP4}cvTyuN_k?FqdhdAY{OI1DfT=Zm ziqmU|Z~~H{k_n|f_Xq0Ri@r^nA3KWQcyre@t-{W-K;JNH?;k(i{coRs=s!OFd?v^p z`?_erI)~Z;w)QX#C|UiNF9V8pfBP~UXK3C>dMT?}Fk$=Q`nCY!mG$}>6`?mJZ5lI* zFV<}V2OOS#9u-Acz3x(r!XTM4tBOL8-za)mc+R)>qR4mFTL&-vrrQw1q}y)Zn1VjX zE=DSWjUh>{W+=KsVqIprJ9Ph$4wJL0^m#r-pmT!qUxYFnO?6DBURdO@#8AfT+JzMd zwr^-|*D;6?$mui4W2{=M_^&h zF6}sUXKH^5pua6a7)6~5nn-Lfn%duYik&F(J}&m8Awc9AZJy^r01wb|-w~#Y<(Fn{ z)XY8YlN^4g-(IJ5!4X1xIvqk@r8&=TUgBAgRaCorP03JMn!)L- zEg7J&di<$_)P_OHZIo$aN_N1E$b}t#0h*Y{6~Ne{icJOi9_WCUf!lY8jLsqN_HcTl zOD9#FJl;*I9Cw|KR6qCYc~rHk9$g3Yk4F37F2&!iA)OXxN^+yUkzd`pu_yk2y?6g< z?Lk5DZ`= zeo!~R*|dStlHu$7h`Mdhrya5r4prGavUx1c86@wjvD znDh1R4k*DUgxX`0&{eC`hGz^+4L>`>1ZGCx$b1Tn@ox>;CTkK9-BSAV4I(pb+>v=N z4&Ls8Io^L!e`oUZ-WsOM1|q><{!*Pvt`tl^s#Lh);0T7jtQA{giPmOL6)-*^QfNYR zu7LLpYh-rZ9-6kfY6v2d8zP;*={WA4JF=oyWQy~!v}!>zT207xGDLC%0YyhUV@JC( z18IhPHAgH`S2nr}b1pe(I5_gXy`XtS5v0-o=hbZ~1xO<^lr!1avT|6|-z{2ggo8eL zWcpEzk-Qjp<7p$R=q^)Rb-wu0k(c$GIWz|{YP6^Jcw%YdDvsMqL5+f<<(prL2)&i{%|2 zt(M`@0r8hoa`|}1*Ma^a(3#ATY=dP>)Gbwy-DqQJc);^3!I~%zfFt{a6IeC!^U{SP z;d?S2AWQc?)u8lEZ_jMzBvPK{BZ#}DT`2iep$!Vnqd;@Co@3vBU<4p6Kkcq_5XIHB z$6-e%9*}_)GZX32+6B+yXIg{)loKWJ%+HqtBa7|r4krd?Iy5wBbcB7oV;fn(s((@Q zd(~_vpDuNXN=|Bjj#7hkOwgXUO12| z{oo;YCLbZib}QFK+d=bc!Li+a>i(}MRIlKpPY;=(ixe)AlgRS(xK2^U(yaPa7jIwI z%ZVlV_2pRs!u zuv4D%jVwd1wG1VOSd(kaPeZIpH4s)1d7TU+j%tTFT=lU}l)2jk(x?j-MH^oUZt;>y zS~BmlK25{PSX^i3L0#f5d8GMJ43Y0RKPA5Wj8Ko+`u(da-DKZvU=pWL_g&BX5`)K= z6!Mbg3zPV-MIPYyrc1olD1iEeg%KpE+l2HLBeJ3L;A-CBN?vqcydc7uU-RyvVKcQJ z#W4fq&k!+ovK?@&g7darI6+JDgNbg=lDq2q0(rM~@?7K;bOzBe-pphx$}GyIAmjey z2epw~!H?V)Ung?No=%+JO0FCBT?)rf&9ma>VJU+KwPjgfZkr_*&pacm6`O?!R+0D9 z;S56{U9Srmg(`b%Sbx)LRNvf{Spx-PtPBnH4P|Tw&-)Bg2*>vVDM_DRpL;B<*aF0| zVuCKW(|nH@#!H?is~a9}Sh|X#-fNKr+o(J>qoUDh$ZTupIVjQxGLmRMOU@RU>6^D> zrT{|qU10bg6IJYjDY18|9^8}L_#_vd88_kzj$=kH2RY5|O*UC)2A5Yk_GIKa^)6Rb{9|zgkpMLTX^(R;pr+H}i-V$t+ z>2iou7Y_axkN@yL@c8dPTVV{C7YIgWk545AU0aZ2NF+(+a$ISFij)lAcx=tLvV?yV zr?qj-^KS!A!|gM5ni4OpzjxlhZ*S0}i%<9@^K}-Pp?+5A=PkWMngXv6DpmutL1~Sl zbdZY2Od}v&kjA{#xn&Vjc8kH*?ozGvUn6&nbTztQ<7eG_r z)tJ(NSyAH%Hw8$?y0@|%`tX}V2)+|fe|80l$^2Ys%8i}p;O(eRg$akG6F4{#*PXZ6 z2d^_a)>K8~Uw<`Fv$>bmi-rNbFvMG5N7nH#SZ*{{LD;>mDC=}J2kc#Rp89N;YGmw< zgaXB=uw&k~f^$x90f-NCQG&U*!BBrVWFRb5TKnX?iNn_}CEMKQVC-*@FvB&2}7E$9(xiLif08^wURLl;o}TFL+KPcHi*dcqrrcZFpK0 zl~O6hl)Y?aO_-^K5JHh9k}Z4oM$EJlvhVAZeV1LfX|azn*|Qh3*ky*e7}N9Beg8hs z{XF;m{(kTK{(%oJuI>9hm*YIn;|xkcUTBD-<~lUAWtv!Ycb*`KAF!Lcvg;yW-kxDP zkO(DDk`NJ)RLOU9$UDs|%|!Uo;&^DH#qRWsLTqp*|DE&QMF^=k)YOVuDyargQ6iN~ z-SjY|H3aa>b2!p0aGycVI45Ok`I*@&Rp?su8@(9t}1$H(CtW=d(GitU9TW{gGzuy zou!>RGBgY^SNq#QpJsh^_|iCU=&wTrp0;+z4Y5`&TA{mbzKZ7?u+?dvbbAv<3jGG3 zRd4W%ZI0O=X0a|shLcxNAgY9-)z^4B>R&2-sWZsgl)8k z-SJ-d%1*aep~FeWuKtZV z?KFqwGrsc7_k~3s#y_mbGQ~t)=bO{$>5v|tj;gTiTV=C5DF5DjU&f`GV%bpcm<2Zb zft_g>-4~h0DDFA5muet1wQ1qZGG$D$^$JV7j~sRWD|2TvnhWe7(OU_ zEKBPh|GP8SFGRc&wR|O|Wv@urU`)4>F)79AfRuH$EG+fd-01ac+Don7g0BSbI@CyN zFW!QjpdQE{7nlBYKsozN&Lih+OU;qgw;rt(8l5Q~$J*cLZ<*}vB$iIbPsXFQ8fiwM za^1l>c=0-yOeK|6@q3k`_sY&2iTe!+U=oq^H}JR#RJFTHZb_8?wV&>}&yN~1@9bGW zR5f>53{3C#CxbbR?*Z^7tlT_uq;^lCRKA=0X+-KujIO4|E8estGn1qhJ1TUUQOFpi z!^!&_`5MWyA(2^g7JX(-UMJxZ-J4=LNdz4KQNbK z4Q7T7(F_d^>1KuOEoiOSQdBu}tz@})>f@@!Eq6hu3qg16yyDVcd?4M)ZAoKcz7nC8 zZf_M}dT(IXw3XSQ7P1mMKWf>SHW6hLF_BrmOWeR#}c$;<5)s!vtDny;p2jr#)A-J_1!+KVD+IT*^2H4Qo1uX@9 z>Y#^Xj?bAk5Nm3bpR4YAv--@rc)48JM;c4Lp+>6Qxh)lU{rstfG!`0?Hja_^hjJhT z2U8xW1fTR9xk4d=4mLk;YslaE@v0Ek#l~vi?Y^Ntg%OaV+TER$Ipe|OTBaSX~cfR6*2Z;)3^21cJ^*JJg8Gx zUYUeUeWca)1l7c@MYEjA2*5c-eE9<-7uv9?JO`CX0Lv=Ek#SY0F+liC(S>vI#XbBv z&}N=vU3pjKTvGUWX3XdN?VCbjUM43ppLKqD#rv71tlJH=HMLFR+2za{8vz|?bxktM zFaDPxM@YyW%>x>Fi%tGHjDFe!Mm;^JknCmmq{uZZL;+LTGZcGk93jAE;4qnUL#7GS z4f=PlnKQMamveqG70|=&0oTm2O^F^?Yj{_qp#C-qL*_S}d!0Sr^xlnkJS$Y9p}ky# z|7d6X*XZ)7G9#Xsp$~mIe~o|ny?&rvl|R<&F&B`!E!$5h|b9?BbsjB z8K$P4KYE{v4vyTl-tvAU`VcwQ;*G47AuFUaibbN8iTNm3lfA{c;{=zv!!O^Aw)Y7v%atw z&^Azko2(Q6c|MGGs?KrlH&NDG5AV$7>s3^1%CbXkmUv5vg5to4-R{{3qDFVr z_F&rv8=ovbUxh<>WEZM9+RRPF!aV=>jnJpRtLLje&PR{x0sqzozuF-ZRmxTPZ2}Io zT!!HEcng0jo^j9zOAhebo?Mo{4EC5M)N`6kIl|*zvKs*Q?7lZx(i50297mbjwFl0B zZ2AtGcB=vBh@Q}7Z(zxQUxrsO(}tL7zvR{#lv9a6!*e^2Up~u$Xw=&}^{Esr?f?oO zq6n>>MARw8EleuULsd|VFO)`UJm)6s(>o%eK6u@9dO-NK5q7*qr%8M>nB;3B%VuPF z`z~(ECHf37z0ZN%Lgjo4w%bjz{M_03gL(l!xRxv>Zv1lKEUTTubG%@8=JmDT$57{q zW#@W-cFP9kUr5G@3nqtE6+OO^$uZS3sm2@XCBed_FO}G>-r7m^J4;!pL;CnTM(5QZ*k_FS zuRt86lL>lZ_hYT>orA3r**-#Q2G`&xcWo3_2e5zh5|ffL(Xh4VZsX=J=ERl1e;V^M z5X8^jwh(lxm=yYYH?A>=DJ(0?h^Ej#iQXn#Nu=>GL9!)rMJ$l_lCky8_Bc}$s- zH@aHgw%+Fj&Vho{-KZ?2!%K1AZVuMAg2l%Vd`h-5(5SPqW{}xu=IWZT9NF28 zt8TlC@9|$DH18jM$LoOAcwE?JVczH8_i)4~pOxS`pln*X|Fu&YybJW{reNqV>(YY* z5M`v4;6vB0h4)T$C7%edS4;|~%rhFzE<4ab57&_wts@gd_k#C-Ixrlt8K5Xi8zLD~ z^(gwAHHkci)z#>8$xl7`zYP@DYm9>oo(5hQ%{b4ME%=}lo_gPy(adIr~; z*18F$6B<_8_swrUDNsFE+M!7dwoI<0L8S!Gxl0Q9b46M}>^1LHF-u?opl+pJ=s{{Q z?>HzFRidU6d2#U+{lSkjUBmw{P%oH17*Yitxn1TB-wcdF$WVy7U~BIGzb2T0gP*Mh z81-H6TawdWKQ?08B1l)9DQgAx`t@FF>yB_X zzt6I*=|%;R^OJxyL9#XnLfZXU?XE>DU*HYWQfl!-@twCi>N3wOiD?G7Rjt&}e7 zW2OZK`v1Vvk!1UC%EQyk(1!V4no)!Z?~s95XPOw>q9qz=oh@||-&xX^Nc!aMfKO+_ z#%o0y_qyl}dX6Yo*aJ{zD*wI$-c2{gf_3BWLuS&Cw_8b0&hd{mTuugD9?*9h3=zHL zJWTInqPatqhchnkiTV(EeBy;6_y=uVCNq{$iyPFgi4y^deUD$|+XOEw%57`OJhLNKPR8MAFJ_Rx@!;LW9E|SzIZ2NLbWiV z+Rj_^{((I`DiDF%i@{?>D*iIP58~v7Xd3AW_*2oxvYoOYOzC!bA#2^4O}~-@GG;By zusU=*!fOkA`r(AwN;AS!eOLMTi<<7|iV>&#%XZ@`9n@BwH>xO;(i14WMH7AhJ11|9 zyHImFti7c+f@aiU%t#gaN)$%rtatEPeW3HDJ9t{TpP5lo*kh2(NH__iJ3;D*l*IgR z3&);CIf5KCJn@;gS!XI*)XFkooj05t^k#AWfhi$rb|@@!)HGuIMhEtRf4*zA-w~{9 zR$Tbt-o0xXt(k}EBz6X=l&MpC2?XMv%=f8~0UeAYhCl2lRcP69LIgeVE# zMl-IkE6=xPe1TPie!l%26507k{m0wQaS-L9x1ea{yu-*(H zhed;jDUs;Y-I0RWNdaukcre{*&MU0tYzn4^ek0cpj<&qCKY%AXf?u8j9~y`G9^oVy zeaOu-#cj9JRV!WFwkZ$&1h7juu!4Mhh9YpDcEm_PHj3KBq*z#+x&t+i$llnwU8P{6 zv=rk<>_G*}C!cvftOuT6AT?)=)%E-jT#|oUqJRDJk50_tFJQ2nas~4oBX3Ye=&(oB zm*ci2>z6z-6?7`57yA!8DMum*Jkr=i*&WrDx9Khs1g4sHmaD}p%H(g{Ls8-)rkK`^ z2UQ??E|8)m{eB6#(5qt79Sg6o}GJlM>=BU3n0dqcHdW}D`?7(G%rgq z+zDcS(V7D89IseX_Jv8DJ4CxM|# z`p3OP*$wIRFL=!?{RotO=wfSUw`Yok=h=-;O{if|aO5e`dy8Jv)qrUgvj$$CNdnVT ziT3U5%E)XB=Fo%?yZ3=K|$GXNEXNAXUG(vYKzxd2&rvj2YNQQ@m3!GW+1kVR^UB z_vzjMTFkBn*zSZCpO}~dl+qKG%Iwl=3Q%1gDpq{X@4gNggu=% zdDf5nin@&k>S3Jq!%AB(Ihz88S@?!Gi5*W6p{?th@ggpFJ*%=i#;>&B)m+o!D>ZuI z1*(mf3Hn$tM!yfJ=!FzL2#bekM;|&?}BJ z3eXZ$yc1^{E++IyqXmb6X55s3SN3feGBo{oR7uo(zan43y<&_{@t94{m(9ak}d)pV8ndGeYH^SlP%eeR1-RL z6?Vj+9!>nZWrF-?X{ud{YR}Y0g6MYi6tG8m4l>gS=hbD#4>zWc-5*%B3z4C#yy=vJ za0L@c(GGLDblLAHPovtviPlaYlu<9aN5$3SCgYV$TfaVkq3@X|)${2efi>3bU-pjZ z80T2mPd7`+M||uyNlP0^h!G_%Xmg9Qs#H|jr-6MU*Dx_*%*d^)dR39jN>gy3k7iwBBErJ`gh%%gWVb&V^s)I(_uo z$-R8<-fmz@XLHpCN>=+!NA<*&*0x9ECYQb}#G=iiYD<1py*6D?IIwl;eBu)z2YJe6 zX0}6*i0E(QzxCo~yUl|GXZw%(9d#cD4YnI1Ol=h;bM!W*U#{DK41_9JI%sHvG`ztl zFbhv7^*7pi7%1gz1Tiw}SQxE(z(KY8Gl+F274}3oXv3G0Z3<_6>HxrlXX~&DY7zY1 z7b4V7EKs(LM?XqgmvqSPrY?Y`A7O;-9Dnf3Z5-Wi6+lfv09Qx+4BRM)!hW~BWM;T} zMgu1xharuCQF3h}bBb$Qpq>ucDvHG*l86D-*SGT6wIfN?v7#+K$P6@9O1=c+qUxof zi%H_0w#EiUy9`9H&8Yj|VYJd_Xc4J$0lUyGVQYlCts)QU{LMRu-cJ2i0Om&DVx&y_ z&3&7&pu0B8u@O;Rzi}Pu4?_t|^S*}9hj&|!T=Rg&PuDrzF0z2Utj>_Lg36EATrkvN< zNdBUd7QTMFdokol#dMj;`3Hb46Qdo|`dvP&oyJuhek@;O0-P;Rvf&h7xmX zx!v;SOnDN43Q=9SbWu($=Fs{w*_RXqdIg3_Jr+OHrXLZDtdVRNG3(~;>*n%|Q5p&D zL^CSP>M%7oZGZ7<53YWy>~))OVtpN1;Eswp&Uk>Ez&MmFQ8ln&Ez z+PP?*>o4s3+PK*_=r3_whdfbkG@l!#{g1>(2EiKbXmD;aWTdB`oiw+>F|;?MKn^uD(@H8Tvsy{9H8cv6K9nRYVu z%WMQoPi14K1#EEt=X(R+mGeUH&xPWnKfoC7Ac6tzlO1YhZ=aN6+K-!CIMyh9&=RWE zTXhh)rY5Q}8m_tp%5R&;ONC=$b5|P0%GQ3CG7{Tr7(XXtxSkx=zE=SL$IT#So)s`3 z-A5tCT#l0b;@iTSBEE$_;8nLTtzp*>u0<5P%Wc*m{C!H-F{k*F0LM2n^be@m?(~}WLEm-4#RGY$M1*SuH%CR6WF5Wsey`Wr4Qd}i>Pn&Z*NpEyxUY4LuMGX%Rz(?Z zo;-~&!hF(_cm*66(s^aI#D8>0X8=R$>iYv*3}xBAF-8>vdl#f;9aZH2J=l+iV|s$E zBO;vp2X@*8ImatQOhWxmq17;N-)CVC`&iPfq)k!~nqbr11NJ`?si^$9(#P}#6(Z4cums7<-jGn@)@k+#%6+6TSQR-9_hKcS^+qX z?c<2Ywp0u7Ya2!fKp(82m|RECj@j8Eoi!ywyQS8{Qz@936X~hA1)2H3GGl-9N*pBL z0M^MR;$|S2C;p#3uPrqb*m2-`-OT>C>y5zCqecpy;3<4IwRR-K+sUk3R|8;Ij-;o_ zB-m2FOF?ZswpEN=+L)6mFXGf>OPkC_wfCXnR-k3$g8m5V<_9)tSrHrm{IhGwSC zq4Oz9dSIe($%q1#^R?)fjJ8BQ`!QLm(_2Y#O>Z~*QV_=A5j$Z>B!E9nAKsB#^dRDq zc!CC9+k(%$mrIQisV9D6i{+8EL%tBHa316d}>a|1Jf+ZxUAC;W*3BNgZ z(#Bia#6M z6)#-(vY2q0Q>%p5kxQ1QFB=T{@=BPou@c9h+!Z6huY~(Yf=3UwR7VR14!wzB-fD{} z{X5{3@LvNySO3O4|AXV+u^fMe3x+F5A`A*kY*1{&2LEjb&oc=snp>XjO3xV|1;Ckj z>5Ie!#zviUQO4)uk~1N!bXS=Fjfg{=Wq+H6UV}rzf@m3I!=`2yi1%mXte?CKzxg#I zf8WO|$^HO)Qee=ja9Ol3>b>9~%Tb#4tW3-7KI09d^fRC=>gR-?jDg2Dnb97mq>RkT zh;wLhEV2gKT6h_p3~Di-1)lHCWLndG%mrf3T#f#yxx^|tz&_;CCqXSl-%#;Wdv7`m zH6dEL!P-RXXIhr~X*1M&kAplMheE4$WL50?x{{quxAK5^&7Th5&=27i8!n< zBdbj=*NXPFo<^^1hMU=6MYzy5PF{JP&BCyRGX_!^X77$!_HqK#`*sC5ynBCOE9ya7 z+kS)Cl_X?|EUNIjiqs;8`Rqhs3>6XGR_wfx679&Jgh^0NWX7-~7j zyoxRv(i$4ztXJ8w?Gcf*dTDTTl&K-I*2*sb=&-3HXHFUh1I`<6DLbQAJ~@Jo?bvpo zr>O8Y5f(o}TG*kBbiTKvY&*iADu$bYYw^Ylls4g@BuA4&mKZ=0>TVTJUC{=)Yi(&y zwN4a|@vLsoEpL$1e6{xn&aq-Q$}lB{PIU$Wg|#f*YRr$SUEG@A?*m)g-p{P149Qk) z8Q*5zXvYoh9i1>6XZ_57Q(6D{wh0fT#rFPwgK@=NhBo3B^A=in9+|}5Oq)%Jm;VDh zf!EHz&;F%Tw=)_eKRgGfk~J?&x3P1{NeD(6RyE_+Gep#rV9B^KvZoWcbArp>@f8i^GTyX-@*O+j$xu&#p{f#X zM6(Xl{+5j*)gI9`&aPG47@((iRO3XrM!v+Of_rPvj!Y;vm$6*V96GbvvzN_`A3doxR2&7Ey0qk1zMPyx!V_G))9kE) zy9SIgI$0&N)4^zMv??ls&SGA3H_WQ~(4M4Md5_wgZ@(FZJm-gED&2l9CwMKMjnqlY z;v~Jex!v!W!m(=`dkDgTGcHpTy^)H%tlY8pB(jS+6cAf!HTJ<0Gx&gS< zUifi1&G$xm|AY9EIb?}vh>eYRF{w*Y4ECi!mEC#Kgid9m;WAj6NBYNqNyK)s)N6u( zhPZQ z@5y~HPqkWm)7CuLJ+W0OxKQpd64Ks6r#^SZcxtTom4~Q47SR8k{;UAu9GVkdpvz2Sc`F z+RoNFcXWRlVAlJV$?HqH-BW%?a=%Mq}u)*!VUYkuG+-;`wEVA;Q|cPM(Tl zu=vZ7^8q*8pbJfkt)BKnKqX45D*`f^jIZ;_RHFAwoSHNCmO~W5j_524+9~SQQ>}KE zGqeZn1TnB|oq!S#=mW^J7bEPvPeP<+H<1yKwg(8AWG1+^Ui()6;hAOVGm()3Bw<;+ zfw(;}FR5aRNQvz=hvqGk4Ldakq)Z}$Wj-o$5U_R_klD~oAZzCLI^S(ojhLcg@SsI- zG<{Sk^8t~e<4KaY@WMiEtzu9byXtU0(cFmKxVS@atK}_VACeM+@EVLy--`X)-r?u(-GArh`j%Z?171Ee z$yRFj7vPA)LYEtW*SmBKtc*k&cmV&l-~W3&;-3kT{67R!hATe9>A!I2*s!YI=X|QG zUJNC)4di+38h4n%C%8XOQSn;Fr?McSAI~5>sCPD)3Y?xEXI&2RA#|Xxn;%_ zAmNRi+&-$HvQ)yrOv|hBFds+IIz^;SX7hRAJSi2MWW|GYOU94lG)Bg}di2Oafd})1 zB_3}cXKnPLpFJ(K(|1ChW*hiCU#sH2nfUYZU92drCD8*cnTMu1c2GG}DrvPn zUB~d&EAjnuzE*Pt?y94Ad45X#j;rXx#rd70tYe+oX4CDS*r}>O5w5n`dl@f9oD`ewos))gy1pLW`??~$J`z{O()3tQV$L!JlRELxO-yLM zdvA1WADir@z*jQg5+CN3@>YEJb7M>$$*9hgT$V_FxJzU`vnKGnVG*YL;K;nO@YI}{ zv2fhR63aEcVS#-PV0XVZz9M?3Pjb;pEqkAxYYKBnToy?WuA4t1kv9^F9_)47upI-h zK*T9fl5^yB0r!y%RmKqq4D}?V*Xk!<{v+;2Eu`MY8FeJo0+%~CdAA}L^L!KYX(|k? ztX#@#zm@{i3mfhjC|433VJUkjNlsh!=Px9qFBr*~YD*PJWD79uc_`rixf|fcA}1n% zHg5Or=-I;Iz-+P4ILh0Drx;T;>AYtBgW}Ay8tcx;>03RRZXr~;C_&B)c{h;ya`_L8 zEqD~uEewquL@^V~r*v-q05_)2jrmpvO};I<0*2J=0_qZSOgD2)%ay|stOkMXoAlS~Sb7*d z)o6{A`Jh~~{)Ge>AdDMVq`DE5z=H)P9>>G1^Y_d~XYDSw@iu0uh4$Rsb?e;snv1(v zO7s{n0W${=-IYjNPigttBe}anD&LB?jvsbMtn*tbcSQ-Kv0@~7J!zp~h;+H?sjnu- zlf~?FyrzLyORpO{GEC^IG%?ybvB|C9E~O&@Z+{lmCh~Fse$e3Sg63dhdK5es4)hO( zA`%y&W7pB|u)lSJOG#7)$sfyx3Li7JHru;17oh?I7@?v7{F8E<>(x;g70`gqA_D5@ zq!(8%(@!?ubzuGy*^YT&{kNasV!0=u&5O$U%`3<);ci7}wgCME+TG%;OehM?lS&=+ zbFe;S+jx_374brT?g<0Q>8HeeY)`9aD3O;}?vg9MqVlhv3=KY6c%oNwZj#07x3LP6 zDkZB%TI36O_^2x%wl^d4VBx+w%pj2k{SZ9Dr%w7~I@XyZdJo$d-j9BZes3PqGqohs zjiG(ONMn@NWOD9Ls`S4)#adlv6!J(uP)^B{cny6A)4gZTxFX;w!DAF}^W_ESsbiPV zwKxF^enb9>eTi}eSil6xoAjusNcLL-n^tY@N2|MnB}B2qg=uzpy_&v^qoY!LVXzCj zUvmxIhkPTyH`}ER9KC(_jXv%p@eM9z!oy7kN?W_mF1cH37-^dVUFD^ZPtuo{MXM4L z^b*sBjgurLprc$O<~qf$~q&``=Z2jQ*wC18ngROK2ned4v&-ye1#dR$FM% zl+xOtTT_@WLP!UoKi129e-&M&Q98djrzt7F2fP)q8anKO7aMhC-wgan zOhKVm*_i>8pq{Y=qR~r{n2w5cA|U<)=o@(y3_I`z(N|&zz`(x~v8Z)D;HnqFZvfyL zTL@ylL@p$0mUwwba+cIZYum1_T;2?hKy=v$f|v~iH`FuRwh45Z&R@(Gw1mN4UJXW- z=nAjMrqCZ4TK8F8mG8O+7Q@3>!=P0tBu%hnmngSMX zF@+#PM7a0(e|_I2(zh(jgW`7|45UyBzW%a3pmmjn+kdV1n{Rd4V&v!g+w73tF{|oD{g#L4bE^%HI@(9fpL`jbWoeb%+lxZz|;Gr73m} zc4zd~bRyUOdMsWa%T6RSEn!I2bHNa>IS{61DU3M|E=Mb z6najx12&1zx@z~EK9KrNo0Y%Z&^E<(B4yKg{w;ANWnL1N`USn6>>jO$J*sZbBfP#Rb z@@>OXym!96(szmU#ZCxeGtEQ6wHXjk4pEjGm5-FG3HC@|IeIttGuNRk=WD!2 z^l;QY7@Cv9Ul|mAYM=T4bG_%k;wzA&*%ALrHw{-rgN|slqwO97ThYi$1 zsYRUS5S9zvs9L=%a_Qq?#7pcw43$lJbHa_$6eyM>ydqTVbBK}hCi>-v6{6PP#7}a_ z%L#MQfi_#?$j$Za(1E<~fh)YN{>Ai&c*Z*92ECSwuT(Ku`Z~Yt?vozV*wIo-nEAfRCn-Ry_LXJ)WV+Ad zS@2>UyGvm3dKVlizuOujWTV|7B|Lp%&Tk@DB3j6XV|V`V0po<$$x039c{m;TapBnB zDyfT(tfs#vSTwmF-Hboh{?dZcATx^kw=!AqnAX|XWS1BD)~l@4X96`Z0p#kzx1?0g zCn0sGD*o)`(XniY-%o}>_Am?hrISM6ov`tBVfku@&$x@bG^Yy;zD;J0IP?>wTYQi2 z8`G%9eIn7=%w?-;tt#~C0b?t@poP^*V|M#R>vIFgU? zFN@*X^B9mat0cSWE9Vv-_&qx0=mG>iE`c;E^)+KD>Xj4uuyF#T8B{kr-kJd6CIB}* zjPz^L8@L``Rf}9xl?GC8OpkL`%tQUD#-)Q1+c7@^RGA(x>3$RYQU34qz7$+AA5VJ* zr?aPCnIu}+fd7l72ZY6aOL|yUSM%{w#pVxD@8F1=4!`TD{mWt~zsb(J8{8_{DyR4C zd-rZ5u|})LXXUeLb%b@vh)Q@S2f^j+uAV~G>j!3+WP+hwraL3UNRxw8EISlT@8Dcxg|?yD1HP+iTr zlF|I>V1Q}x9=-;F*|x8sVnUCDC+agTp(9V5-Bu%vj$D90&(yr`)KW3MYGXbJ`;EG` zHHsKuYM>;g&Y`aJ@?G9WaCA1iPybGCyf9gMf~vZ=BrIqv%=m?xD! zQ5~?0kb*dm2JLS-{?kQsa^$r%^(9v`w{APf#TxW5cZ)jcR zSXbrZj0nj`M%>boMxBE^4>a_~&+6cQJRVgp1P)j4gbwvkk*Ct-UBTznU?T5|A0cAQ z=P>jzOHh#jB$G=Wo8bXy@W}oR_D8LYA^MmgqUmIN2Vx3IJoA>Ywv2siY4@Uo@>kIB z&#NwQFRQ=gI&Y0yWCm};U5(!)HtGC_C)G5+@4`CZ#FanzCy^TA_=U?Iw$^*4**D5= z`vuLSHG~rHm(ItdO?pe#iq&dOhOY@V7ypRL_sMPC?{7x0NnTc_Q^fwjq%Hrz8Wq+# zbid|VxZHlph&2T(F8rsCubVUu2iwiH z)`Cs08UYReff+AvdVn;w;4~Y!!_+dyTsuMqW=y1|>O>##4qm z6>sgnN=eQSH5m^q$~7u(SeWPmhUSlz54NRM>eGlGln5c-!jHBXlq5UN48^#{K&8SoZ&;Ew8lfjh`> z21O*n3_qE&Sq6JkdPBi|s5V;e2!`a?kt!k|0LsRx#{K(qAr4rO- zmkpKnJO9AZladqraKcqy#eC#ND~q%x0UrPvMn+)ISNtV*_}6U?QO2ugOxtos%*QXO zun2C}Z7b(8krmk6bbC;1h6rwq)MPBfsuDmp2mc)wnF~AtW#X?`rdB>JW-)v1D!bL* zWzahQd5Qh5t*njJioi4c${`32%|dboOf6K74hKE9nqyE~ELv1JuyOW76r!texJl|m zhlPC#uVA?@>SjwKtV%d1TPU#>3j$Bs4spZ)Ow5Q!Zwi*7lC|DtxN>Cgq4 zX(=#sguDS-dMcC6-NoHEkKxr0WR%=n)u{jgW;YwthDe^2)6N>}{L-y$&3(>ZtXuod z`hlw3<7m)Sks>c5+cVl~8`*P$Ll4hd372!=vyT|)%~^|nHT1GnRrU9m^{=VJpbmv6 zc0MJ_%vesr#lIZ4eAyGI_~m z^k(HFo@@ld8s4cxXe z^$cUH7o+4XYZgTJGSV2`!iA*Ep(0OWip?6-}|P>hSnI(Px@e>kcifyRk>USsf{xJ zHNZrKN0diYUU787wudhEJC<62(h&yi zqjQXin9dQs4Xk-(n46vEyG(KEW39Hfu8#K$e+6(YG=M?jp4U!(IZe6irF8VuQKtou zUDSvUOJQj4iukRFu^vvERev@;X z4dp!pr|+_2%eU-@_o}^hzY6=sWBp%|mc23qs^i4OP1r?--|clXz^+7dYHgn>#PZPS zy_57835Xy{r-s&M^{Ml;+*73t;Q-~GSN;rCB9Ag{(Ux;e)3(UYOG=|L`7kq_Mm|J+_*__%W1de1kC@NEi*7GxFuEUlrW-7=ayg zS-0;$^j(|E>#bZ$9@jAU*!_J(&%>#2T_2<}tshs;jb}ex(w5=SREpN~@TjQ9bc>=b zJD}%KW{&!7CtlY*&z$4J`v>PT4ZqV<`m`|Toi_<7mwg%J<@m`iTrBsO=7Y&yYELSE z1*$o)_ps+8b*U`&N4mJP@@-+k-Erly-rFl0!&#TH>*T*fh&n(;8A+at@7|X(AD^EFtNjmd=6Zgp*5$qcFfXbxgIT*;4O-HTeI62=US6 zH}?M|LPV8zNy%R$>0NL{+oV3L<}B~t<7Iyrk&LN8iy{Y!Ar(48UB$9RrWy~s+VTba zQ|)}*pcWh+g_Oogug)7^-3)jcx>dK0)!o1E_Qq!Prh6Y`60txX>>4H`q3-1_D>9b< zE7{CAn^GfjW)DbdgW+SIF}-@Ugnm9n>N4~N&?{uZ>hFq0`$064wW^t?GSRkjx)~y-Qvi_O#(!=MMTPq}Nf@kCpU+@H}^l6Q7)E@Z&7VzYD zF*>%z-c3RrEAxodKQJ>OX|i%YD?}wTWeQNHpq=geZ>&cP=dJAj9EfJ(s4VxSC~J9w zyImxot#627^*zDN9_kO!D@q$1o<*RlO+!7LC2#Vc?1d(Ohq+C8APziy>wU^O*kndKP#c`S>*EIWdYag z*m?XhV(M_kj6Guulrpwgu@a65&pIv5{7#9*V4ls3#wqMH3p+7-kV;qz!U)sta4VYW z>DU>V&0k^k8)+1VGdzT0{L}-PwG8tjsH62OQ3nnUcO#WBqO#cT2r->^bGxkTO*`y8 zwJK$H{i=!Bza=fTCoiHVZ#b6Od!;8Tuq#WR!|uO? zBL@E|9Fa-P`S@S<=Wo6WlHk97zWY+qXI-ZeRPyV>v^+a zF{5F=hHf~jyo=Q6YAH28Xxwv2pSMf0zvQRQ;qMWLwoD*Bswe}r{IbC>wu(x|t7@Ix z;*bqEXuZX!C`*V$c8di|_-A{qa1^(+Toc$HWOC6*X)GNGAHMsRDl;6iM0kOX<`R1j z2MYzwT8RB1wzAyxRElOyUxoThB1&4L9A{h1&04=8bV(9ipTB=waFxD^qzZs>MpSvWoRD2WSOwWaX7yFqG@V!)TFf9*9c6l4=%WkCO#WShG(82sd7jOf!KP7H)ldFne77?E^yHlxG^WRk&4MGar`&XJ^;8? zM;CyGb^yckyt{J}48A@X@%I9uWg<|A@ie4G2~2aw?^(Rb@*jPAQ|B*PFqYSjaZ(1kgsMAb`7-ob$g3*+oA~>^+S1W+cGo|3eU0Cu z_Kov-dghwxj$54mzJ1}yVZy5>7y4d{yFDdxC|v!s^Ge2x7cHJeP>3OxDSWOC^q}O@ zlBEsCspA=j3Bzk9uTh*UL?3Y1FtlZHX#$xpJA=DtRv7x=Yw(8F_5N8Rj&7(@1x(IA zHj9TF)IqrBHQ9;0q_t4kNys=;cU(;T0Xr=M88nGdwIg1`bf2_rvxZu7vfdVm1kRmn z@6Gzs1p^pvEU|!VXQv_Tz}X(5HML3Xay2QHwYV|93IQc|pzN+O6)*Fnd|4br?@{le zCX}m@^yJ1+JYAcm>i-mvb|RDlrzT@I9A6T#dEwDnxwcBV&} z^c#trGghw-^t3T-rhwVddoSjVooN{ELaN||y@=gJG0lu|_t4uR<-_Jth9@eQb+#2j8uW7|Aln=g zqF}`5(sc$Uy?7ltYx>1Wm$Z3&1Zq`SKV%9VPP%D3%IaAF%2pWC=)ZO^0K`Et2%Q{6 zMbuim3%c{%dv1FBMAe%sj6vN8TZ^eOVhB9?rXyPc+7#tFqaZz^6KSpG@5EXN$fbog z>wi13hoDI(iE^~bqv&8EN{pj(;QJ^3`esAWM*|a(qwiq-^FroW}W5 zoBiq2trosG=&M+}I5^A;d;iNpgE=|DZ=6o3%cX=mcFs{mA*Fp1%ZSTGKZG2&@Z5RD z#S7}vSM$}kGy(Dv$Mf2I-F#!7x-2j^nZWn3f!19GXTxi<9#?G{D!3Up7cIf7_q=_= z56^roL+6x|fV$^96QcLl3}#qrN5KLf9=R2Y({-=RWaJ!Z;#z$vzr*86B{4pS5+)Nv zGfZlq-sgZ9MjzHFp@LxQ7qUJK%p9a9((VJ{N#8=WBPyd0&wYitLsdfwT`0SOYyb&s zhuR<53s+HuFxPLXP7C9{hPd~`(9@fGx~;7z1BI5=;0_T!)+Y>`GqDK9D({^&=BeN+F~J zQby`dg~V5nP<(uq`M;QZ@2IA_H*FXzD)L|hlqyZ6i_%+^UWCvQ5K!qLy@rygND-t< zFA?d|l#Y~0lTM^djg$~+A_*;U$n$QW`TgdbXXbn7oo}u8n>By1SSy6H&)H}1d*9`{ zuPYQ3u&%6Zq3_?M|MW6Q^)zS*^>d&jdBz@1_9#5ky4<#L<-O5plI>%~Gv8j&c|`v| z&ETj*yO}?!Iu`#wcr(96dI2iSibUNfO0K(GKY}h+vz>{J3OV+b9UKg>RE7JEM21F* zR{_)|=W=)u^!uYyvu)YY^Vy5wj;W!^+T=Ma-r0}v5)~$;Zq64(&5gS=4U$uohkNLU zlXMVvLdY8Zgq}fgIh?~+8(rj-I>$d27scT&Fk>o*-6Ty6>oe& zAJ4{Tp0wD)l{ecXu}l!Joevv%2F5G5!k*oPE?mtx*mPs=y~-cgPiLe*6JWE)iA!a> zKLQ=*YUJV)yAX^~9&&A!Wxg=F&iQP1A}U>+j@+T`sZD30hF1E{_1g3ckDI=JqNs@E z7==x)%Ocj5JhNRv9)NMKI)54OGI}I4e3i~%L;5rFDR{t2V(>CrsPvOvW$$;ousODV zy2C>`4YE18p_pP!-VF{IAKcuwNs%HzmgKwC)B?lEPlC+ipbc5eppNcF zM#(GL@wtm%>GmyaeZyA1vhv5I~+-2xKxs-fX*RoX+5ug)o6pzsKUj^WA%V z>PKND_!lFOtAOGa%DUrmVU8~S_mw?BzF|;{EOY6EnqNcVWH`__2A#1sO=!%|pS2(v z$bL}rijLfaxsi4fnS_UvZvn`{!w2Ah)X8$^4*aZs{q+I(W@bFm6QF0s*M`Br#ITd% zTi}8w(VcfI)KRPD`XC#E5TDdfq54=riNV3<7AjGL%47-HR8sNx$1sxQF>P?C(n}F) zP>{H+$UD@ss~l?ZK7zB!S=`a`!|yRYf2-H;;^(#y7Ak(l2CRbh_jstjKEA@|3_XvM+ujNCeDX8!@z$&3a@*?EB1!PPCyk zuWjPb<=W4WYebAB7^w!6byXgJ~evvv!HPp;5YAH*XCv>t&?y z9K!n0@c^GLhMJIrGFYO97U9G;PqMH2eW64cpezr?vu5t}rm%CCX zvASzO3>f`J#x>h@-K`MQuxL~pHg1D7oYcA>uPpg3+Xe7)Ad%h_cV}3Zr5);)QzS>I z$#6}rv0$7stzt+Wul1JtHp_Hnk&$Ka`P&b>KeXj9dD0u*<9Q`Ub*zD#&;)eYfkKwB zSVpSc204_PCN(0VPbbdxwWMh|wY}xX_Cwx<#D)Dk(_~N>mI2!V09d3d2olNZUm`BS z?tJ68==trT%5F2Y+vFps$6gZC(0L>!F%XBU9kC(l)(5 zO;nTorsCSfbJJjb>@y)NVUrY2+-;kgeTWFxd|+sjGQk0J|3ia(o=67)s=#F(bcLe{ z8ysr%^Dj5-^eIZRIen)}&9$tP0;?oeRt*r(BQ_1o&7{|Jc;H9BTwq(X0a>crVQU(qQ542VucrA!5x-AkA@`1oAeLx^}s z=K3Lj<(I7ns;BaB{iwRI;Hyv$DGRsE9>0wdv+81zl>8M?9&hpjv;`p;oLpv>rX>Ji z)DwuYeM34rvM|j4@i#UfWyQ=ml zm4F;huoBLtCBPUD2t2tHbe0kV5&_zoh-@ZAtB9e6CkFxpdDZ9jJLni-wpaY@IMiZ- zFM`pX!H;ScRGuIrhN$lHTfQrB-U*@PsH&r4&FK84?^-oTK;2C5fc$&y$Nybrc z$Hj)>C{GDLC!2`NqhIcsa`HmqXUrFDtkGuPeFZHaU#xtl6;xmP<5^`$EhD+TUyrQR z_bE2j?sXqSmc9J6YTogMGgJC+vz|Yy#xgluk+!6osV$iM%GTnQ12b|un0y=-W6Ch= zuNaS>ZZTlW=Ex~VjpH?p1Vo@*%4JE-rq>qHvO#JEjLTSCBYkA0Oidijt`KAJ2_u5cs|;C)CcNu|m0V#7)+>aFP?M*_;H z0W8NIO9syT;H))KvTs+WCCbIkOMDDBHtDLAM6*&g8t^o%#)^f!M+W}0G#3FksLs%C zRUgAD{!m>==t9@U$6sr-dU)99~rNQR>T0VE!m)w_m1&q$j1Tc$dXH;3ClOr zAKWP12#t`7uR;z7JVp18?i-;qFr=((lacC%rx+1=Z6(7r&HT}LFSs9AsQJ?a5D-Znk&oq4R2{<3^v*h`+|$Mrm^``i^h|t0>EKgdTbT9t zzAQAwv*OWj_SBC#yz`^l<}u77El+^6kRS)NH+-UuYewcrwinjm##giOC-)5Q^jrlf z7?cho^0%>Q_w^E|b-_~GwsOE_efF^VOtvFd4_dvypHAlXq`qr z@AGiU$&!th!DHR{lS*PUsH_;R1ef^Qejy>gIKekeJ6mrcwgX2ek{rl|4Uki?Ar9^dwO zmj;NbED?a3M(;yax_OqESuV5x+h=iF7an5ru=lk03Vf%Ri6{u~mze#4;WDz=eM@a8 zVg2>{Cnf?Xgw!~jjnkItZaTD6JP7?G-^h)c*^657i?41RZ8Y&0DXCLRLYLkufKJ}_ z?2r$D11G8ZqPscVFgkHNJ(=0NusG~85G=QSpgv@lpyGU>mLG@;eAcy0xAanIwc0mw zG+(Fi$hJ2GBuwKy8(bwc9YRJ*^@bGxz6hHy%xZ)cp48#V5u--P_M7VB{ z&*R_W(hvZS#E>qVdJkc&hJoPhpHwGWFksOWOLWW-^uH(R2-U&U0;b7LL+jwvV}lQF zBg`h0gj+!-pr=;*jFMOW&~D*M?7^Q@(S^{Ww{U5dV^BDJ?-pu3mpLAP0zEl^kgiKHpL?`sXO^J8Yr@II@eL|+ecJ*H60en*Q&-KUy zhei0oL-r^CTx_K1sJ5Jrj~QXIZkU5B$}YOOd@wpDQf z17JmWqhA_vOp8z<0jdIr3y^@vOl2ZmS)=whl`K zpLHFx+wsOkOi*NnfLNW>Wk?o$_?d^mGNpSuA2Tz;ialcaer+2@{=#0WXFL44&}u{* ze(Vgu9@H*?|x0 z8TeC6Awo9pW@ zt}%~f4Jcfny>M(J97T$?A|(RPr(7a)NR0oI-MIl~laWQt=l3XQdGTy8OPMVs_=-HL z52;&s^u4JmecW6B>M&gS<|7613a;UBc^e78mr~4jZLLs5(92M(n%YRxq0wx_) zHrPy{xa&b6M{zv-BYP+po7Q;v3m0mZNy#Svg{au}d| zP?WYp4TEK#?uGgqh1CC(s-*(60vwnDsWJ@oeG@NV+9T(I^HM!8;2992cPPDb{N z`DUq*xR#^f=DV0cN5j&1&77gpo%3ZzkJr8W*;7%Z7f3~tVXPm%q2TLJv%;6w<8{R# zQJYy(ew1JYKQ%~S`kN&PRNNf;r!4aeEL3Hv9do=e!~;*>h9d$lR2OW!lN2Yd>#8YQ z(QsquS2q=cp4dUR{qV8my|A}LYLZ0rd5@TnlZwM&!^!iAZUOtEo&6T70I%B%YJu`> z8@`qXYbzgDX!KUD+N^6EHH>v_Nl>#SkNp+JdTsUtSqE;U%V#c<{0lAjk}tC0Rr|Sz zwAxxlRFLUisqEvg^=yg%HC`e+2i0PZ(TG(`j6hC||V8vjEw#xO%~ zQPE{%WOXYMkn8d$r5wRks>T%_5X+;M1|;O!`*!0^AE@j;2~~{Tvz|?*jEI{yW=a7p z{oyju&V}{Si8(W-FXyn%H(~0NSD)0KG8s+lkL~dI=4pK|6!SMRTa%+Rb$F4()k8`` zEHskw_eC(cwS?nyoKyblBG-^d%^;z7;Bl5Y(W6+l4p|?VA%Q3)fnF+fH!fA-Nj-^a zW_D$GHrq?dW#zyQJ{3o8ykJ#wtd75K;|Uwc4`lKX(Rh&9c^ZVZeQ!13@%UC6SK{#Z z4qw-sv@&#{nV|8{HO7*G@LC?ztT4~GwrxhxV z`cIxT>_8Hl4`14iTQC*t5uR~XsPei)w|~V(iPEFvixMWAC=#RJe*7xvvMyA6G+V88 zDM2>wnI{a-`U?km@3M1%g;OIN6rZU6{9Z{?>TzoFqaOtAmx#T7D^eILnayEbM0`L| zwjF`;5E|`tJy%hDCyhN~@x#)W5E|Iuu8RBHqy1fxSn_Z4mK|49t0l!%7um#Rq*7sa z^X+GaCtu6thH~c|0-jmhquhi_Tj31b%Sy~!^05qJ(gfV!%);L<_V3om!2kO@0cYU9 zT8%2C8O7{}RT9$$;%17m(MMBDT^^)M&r09I+h0A%yBKj4FH}SBDKuX}+MA}&O}SaZ zRN?nY3kF_FdaBYrAaD6^C-cAl*#GWMv6{;R@gfQoQv{qO)4uJOUdq|@%DFX_KH+v? z7yni~-9Z^yJZH-Vv(3XWH#hseOzXFam5wS*x)|s??--F|w@a7a5TmpuGQ?MMF6_%SV zfg@FyX$%>*CR(#zCxAR<$%;fkMbDfHk$|UUilGI+wOiXs@?HA+k>bcQw&X@!vU3ZH zTka??OCX*V!dDb>R*K6Eh5mtP|NB1uKN@T4zpu&d(6UO?RsfRSUIc66MdW!C30@C3 z+8Gfy_bBe$d}^TgAu06S2iXg%9V|p-8CdJbmV^`!0vlb_bZf#)uMMB+SK&JEbWw}L zRbU8lX>?Ub8wK20!sVt0ke#`+Y$2fA)KD)$H2;MjS?ughK%O$N3X!G!^I-aYLi}qD z`agVV|1T_7pm`*G*(zZ}ZV%r#z>hy6mP`^kjrN@e$2&ns4%c&6cJ@(@ zUO$#R1&g?qj2@j)xV~7`k0T|b6D}d%@@9Hd^_7}-3+HXW6DHC4x11q+9pl%#>q-m9 zO94*+gsm`}gCGSMQ2IMZyVT^*$86n|uhaHzE zer86#r}ZUr@PL2~`}VyOm6{S-5+xE;<46uAFYl%|DLz2oPo;N4S5C7=E~S&yMo}QY zcWW_NI#0o}B`{Fxo$jMo_rs)l9%-c3uFj;m?SR7|0BRsk5Y$p48e$}O7UNVz^&zbw zo@aP=k&oHuCNLabOW|3I4dY^8#^jp0i4AFS(_QDC4fS+KF0oXO6a;Yfje}OhIh!gS z-EUnm`W?ok)&=OEZAH5o>xW&dUcd|Kj9ku-|Hg5l)88=34xO}@iUPD^5k77Le5+A^Q^sZGphfUh*hlDlHN z7orXuRi-Ph0aoe)ZWMtTWNMi%%?JtTZEa<^<&O3NmE(4z=v}zx5S>+(C^%zM!9kPh z2qk7+DfKM~t63BVa3%vb;PhkSeaq$5g--ZQxqv>h0*fwa5&ZUErHUDH9GM4UZ-2i! z@GYb%8Z&xa=64;TN>HY_uK^=4fib6Gnxc+_H5F$Af|~Ew|JA+D6CwD@$#<>I>Y(Ix z3I%8_KTay%(KR$~$!rV+oWHMt0tya)a_bKf=lZo34Gfgj0i5Ux{H0>H{0b;Ck@9{4 zR8jaS@M9(k<1GrW(K{w5c|ofy{=zZkM@?!^)Nkj3%F0D6 zatF4T@0fcK!VJCP=5o^W8nI{o$@;|mz(7QBJF)WC}(AAK~1kAlMC!*fE?Q~ z0SNGA*itxtGkzPf%#?SQzl%fVpz*~6j>njyS<(P31szX$0?m-l#(eJgw&qq^>&Nph%Fl@2wS7~fXpwXztcKVJ&pV%O24RSWwknRh>c24_k9ja>YpDKxQseEDG4txTCG zHi~~nnTBd6R-_gw%-M26-r!BgP44Y$^CILyI&8g=3p`OQaZv4`vl(|*eX)m&ujgEl zg}EzYUW5msxrYtdsEu;$8~^0_JPDD$CA8~Qv$BY`!`zSybt4DknOS9Sog8p+wU_fx z8nPS6hJgh#4u!FK55YQ_%uY6p3@pK+jFZ}JIkBzELWM|QI%UA z$)7nr>=(x%2P(WIAwWt z!_v^C*nsjXX9_P=)R?_G?qjO#UTJ#$j--sf+Dl0E_Q*V_>P}0$;f+(gmRaH3YH2~( zV#m5ni)JxI0n0sITD{1h&W9FNf$jSSV(L(e&B-bR*5vGbHwYVhg4~YIqS6y&L^5}t zZ<*M0QS28$AS7kKTpmSWeRy~fPAOT0{m_C&i_Vd;50;TbAi6!+2ljpN8lpQ_WFKp) zK>voqj_C^lteS(bE~=7}t0r<%(PVTaaH6s4%W_Mk@=9vWgV)H|O(GVs5N2@}!)2WB z8oW(<#`Y%_ZUMG^qs2W-NsD0N6oOPW2DzMseKLwbD>pSX43l=Ic8M)gK`ph2VhFTB zKi)V%gwn7R)p@9Xh>;PRugfsmLoZs`i1Xd!LX8Cp#8TV|*i{Ji#cZlDq8?T<(FOca zDKCQ040*(S{}bg1v)b|yLyE9O+>Olk9&Z~d$_j_DpNCNZ9`+>U5F@qrx&>wmX5l;P z;0k+xoft~OIVcEOXGKQG0!{%&($yk+QdoV>^wBCW#U2lQP^oZoJo_XGS^r@BPby6? z@jXF~VC&q6uryy_l56>m6%%Lvr26<;cnoX^X3TAMR-)+9rC( zpK6Q>%@tiOdXkXqHYBllXgUr0S3&i;8plCq*YW3wk&WupGJh5MB{Ep`xwKK@Mml98 zh=^X&o?6AAvztr9l#f`Y=5pO}cmsJ4@)|kKp6rF!>U+ga<0aJG;r@ahASY1=>R0WteT84+2uX5Gasi@}~sTdu*d+sLHiAPkORcRDI z5E~%P$Ywu@j>j$JE|*f3hE+zS#Tno7|4H4cN5aNf2L2}B&)!+fay^>NYjDSFRZ;ne zPN(tK2If-St%nody47L|=w)Ol#raLS0`=6!Z5RULW%x(ypi zk~t|#lf;(82-?p=3i2O3%~w;5_b{tUGII4P<2%IeO0QPPQM??j($GnM0r_ujcdj=p zp0{;i;I(*ecZ2}JRisy^GvueuC6w|NVweus!9s8OCi#7>-fmcN|~1QXhUi zi<6d2*{%S)dQir3*YdHg#u-VN5K;|@9&ZEUxpxd`!au!rVsE_1O5#oVK?+Z zr}vtm9qs2HM;7Cs78gVm zr@7;h%1C!5&JX8&=juX$KfVCHgNTxB87kE0j4|L4u1J-E12Z*m7)VhKtD%XMZ1_U8*Evgm^jM5sze5yO|9ue&J2=)C#!8Fl|^oh^ZOse^I$HZF3A*%6KD~t~&OY_Si zXS>+!$SnYn#Pw^yZo*^@Qnzy!80TT;t8>(QX$;NaA)y0YQSB~ZcKMU){xn7Bdm&T? z?Q^K*xYgs1L?|uu$ysDu^5&BQl^5U2{P2F3xUG~EPMBm2TG7?lcy~}LlGs>?J({`| zw%84h(|88auT!R*AIgU0kp?ybgKYK?phBqH@#%h=8&Q(}D$h%qs%|m^DqRNULI9vz zR$C}IR~HM;N+YlL2orFL3|MxX)TX@DcJUR4gt?`z>m0#`ZZ4YIUTqX^En8j2&BYfdAAj zMW0ZgehP<25I%q#)4w=#|W;=lO??Vz!B5UMm6SCY!0|}q9hxu>D zJMs(UBl{?QNZe4ORMW>&O7N@}fleavbcieZ0lR+UDC4D0WAsw7k%g zPV5rd7J%;y&`uM&l+DrRnuT?%h1fT7O-B1^jZgWaTL0pgJNMa1tH2>_5_uh={dK$O zVDKzd0Pdongi4c}Wlt7ww2+Yyx?PuZW#=@vb(Ppph2ees+8UPtT1HJ5{neKAFAulq zf8>7(zD6{sc-m7uPm@T27T#5P0h(8rA|toD;dvL^L%7NW`rfvo$zR~TX4O} za3ePDI7}~I`c58-v7IZ zxl4+LN;mmF_0W#AU-^9b&egZd_Qw=|oxd;3Za|?1l@4ce-&^vgX4p!>K}}!CgP&$n z*-evozq8iuI}<@cCv^>v5_Mo?a{U;5(wO-Eg?5|T2OrnG{paXg+jIjWw~_jY1WMmM zH!IDApMGwNJedh+mG`4zHYX;eRh#j_`b$}gbHm>iwQml=_|vnW>7#X2dFmQIKB-b2 zs#9cDmxV}cbkICom9rn&G=F8N{?2qepHEQ{!HbXC7~|gtfPb_y+{2G2>`sTZ02jG+K006pJ6bBccw>@Jenjsx z+9P_79eaaYIdZP~_!G8xnyD5PL8ZAEj|9aw_NKo5Nj0e;8q^Lx;%*Dk9VrSh{_7(i zuM%M6G+w+qP}1HXpgXvOnp9Ar!H|0lxueyz3ZeG8qr?R+Bd~vyqN9X!3bsy;2Ah^x zxorpOiL;Y?7}%m#Wo(gS$nsIZp%+9GxJ*axK2(3{T(pt}&H^=gI_THuI|u+*r_+AL z;9_w9MDR;i1)rBTk^}6dL{w&rp4Ik%PUlp(!^R@-lVgYKEz+QHm@@^9UpjrTE(Vs` z1609Tx8F?&?KtZnOU#f2uXujn`hIN&7?t6~jLDXd59WsQ0sbm*(~&>whk z6y0+JkUd0ufAZY@p$z?cZk21wN9jNPW2+63(jaZpUBSHyXkA+DQwCaW9=YW1xWqDb zK=1hbDsy@Gcu6MmAe@mF^>Thk=BUOy1v|ixzfjRgU}W#Ar3KTc_Z6dvG;;XSmT;9o zT>({V20qV>qIj*+AmnNj8tF`hzTK>_!l_wQ5l%NQYXQF@*lMj4KKA$l*FyC>k-I@i z#0{uq)Vo61xm}lZg;C@Y=i|drmWEOKLtBOnl!RZj7Rkf{j1xx^Ls|?yRLXtD>B^{A z>Uwd%U8Iw-)Jdz3mGpxe&%3mnNH%@fS}>X7$fbWZjV5HPD$>Y=+;oeV;74GHBAepZ zqWT(W9=<#u|HaxK)@10!^~pH1ss~4k06Er`Wt_Mr(q^@AIEJP#Rx9ypk5=lpigulo zlsz)V2%L-%o&YUX2SAIx6f4j1;vaoI2@+<{Id3h;EMpk&6WQMceMBs8n9<%IK*&|9 zhTFaUW1inX?7AD;3PWIp@h(95#Qf&WJc+kMmG|`~bH$P-{Yi#ym2EZGzLEZK`PBdW zob!Ku1p7b#>g)e22JqO#V!8*oNKqQ1Gs=a!dQ9Bq#Ag?+(kw+kunt0AOIDdsVi|(k zP$E64dYmZ48vGzz<~W=+?*ti{xl0W#(m{A-zgw}qh*hHmY7;%dN+s9Of;U3Pj9!m& z)os`#NhoMBJ7d|8iGV*E$S-SW@W~iU@DaRuAu`Qi-qv-J3bfI}`mwh)cPaMc>*Y^N z?!IG)onIT{dc8w~lZE2}sDUmXBeJnt%Rf=7B=<_b^;G03ug<)}PR!G_fxK@KM-rMm ze7mu53B%N#$7h-j}WJF^l8>|gx=EEUE z!pg*)R^|B9*&Dq2H98(3u|1N8u}K;vkZG4AP`6+r#zZ~_xKa6&_my?30*B1@gV+Id zUsWJ^Pa?XQPG|7YC=B=J`Ovk8s(Io2+SEe5nd^X0V%{xn`?|Ol*W9$?yYi+>j(vth znk3VE?-IjNDX>g7SEyzD2@$;Pkaov0s=|D=+sZa2pWttIkmM$1N247oi6g_z7rXySFK zg5iYG^SN4!mW&{fAd&VVzg6JEYd<|UaYRQMAcCfbiRGvZec+Q~u)$%6lAlL_u{A<^ z3>L0Z9!%&aemr7hLT_(A>jK)7ON^=9e^RLq)inASk8Q`PsA0yAwrJs&V62oe+wJQv ziYJQ-2UekT_CplL<2HQA@(`!MKc9WrKD0G@Iq%91I0*c_QRHu~RsCHxIH0S%VCJNBhvM z)rE%cd0z7yfjhj{>GR(d3toOo^h?J8yxJ{{=;nkLR8`Xy){}NGf!U@hHi{~CDBjA zRVv5jM-v$mbdHx@2?m`#iJ597t3jqh0!UA|1U2Go9L1s)mZyHqD8KW!IHUYVFrM#_ zr`sAkpRH16;YHV*>N-ZYi zCoi162DmTj?eBH{Y@LcFUqphc@76on{bSEb=TuaFK}!N+4?R?i9ts@gjnnxVpe|QRz&AKTjl{ z{=3&@uCpimnO|Bz8QaBPbNpnPv&=l?Vtqb^@e)(gE1Ft@??Olcd54?U0M8Qpu_MoEn|}7< zL;A9tvofJa5A2b47uXe>R%Lv!84{>$O!}NZNtSHc8>~3~w@x_HnX1kB+zxQ?aRlsdR&nS;6_mFNY44xW3K-p*Ky+GpGI{s^SPnHF1@L>ye zCYPnf;ZjIbr%gdEk31dXoq)&n9|V34S68(6roskM8CHu|ITM_PnX2`;tt{?%c`2F5 z`HSqmtnoW4r7okmk#qaA&8&o0C%k4pC%zi(;k|yY`0jCo54=dz%~ooP%NuKwUyI}HNK?+zyYWzv|R0Wd+bDsI)62%hE9N+KUOKq8N z{05!L%mibI0M#^otr$J>oeK<&Ha$`mIM4t7Zl3onHfU=T4`14-EhI$6@{wcooCV!g zyKP^7ByhdeYfs-)tC+$nBC04JCRkj`#oFSf4ZELu^bha3I9S7|PMM^X5`1}gJ@1i! zKZQyu*+f6Q7nPb!x+fxfroORWF1Da-;0UIUuKALi9cZnMsT$wlY^iz7efwSaYXQab z6DRgq%$%76L+ANVn~jH4Y2ky}dU*o81i>Ov6 z4i;AMWj91s>h3C_*FxS_*40{yUN`!66~4SFy3(RM>?$6uGRF1d8qfYK`t7gH{3i@- ze_?45U8GzRFKNP*$s}%LvvfO`m#*CGzMZOuf5q)g&bQG?yFy!TBed0kw5c5>y7~)v z#hFb#Vnq(aJe^6%30?CEijyx^noL8i#F;_ERw9mDw-csTS$4>l2!kPn>0L>p($xOG+TU}rLxF&F2F+2)( zONtn@1S6$_42}Dw1MYj7z}{3?Ue#13*HBVK?6buVl2G5{9#1QnAv8SbAWwT&;~hU88aYnn!US#X!gs~l|9JRqRQiYcT}!$Z33kD^PmwT_wluR z#O0jpc{WYl6$<={=`T^s(zDwDSdSaPid^tP-*CEpoz=FHZz_Z$j}6K~0s}s1jUI6E z+deylERj6RhIzOHZ`H0p0Ee0+$-d-Q$;0~L>TiGKzE4swYfa2BnLklHEk_5IoD%p! zx+1IaZoCYyi3tpiFP2`M_vAC)?pNA)pVhF3y)gN}DcfoEzHxl>7_?5j&{)MfIlYsJ z)D>|BE{O zKN9#o7-`TWAlFQ;$?s$BZ2siL^02IHYyn}~e1|E>_1M1e0wPG7L``ZWidaDD4Usf8 zsC!u*`YDm6TtB5_9UY*0}PW`eJyTXZ-PO-ejn5ZxBw#0;zAZT7L+MraSHx@5TJa z_G^)o#;{jQ$cKy8yC(C6Kz;?5!cIzJ(}+j`by>!ra@vl>(C2 z@?ykG`0H*EFflBDts%O5etDfmh^%@InY(eBJX)-rpqR$tVtgoc^* zdCy?YON|jmxguu;Ix`{`e+Al`kDv%*yd$N9iG&|6>*cLi7I;(RUc5|(KQKv^CxwB1 zz)E?73WuQGlsmT_hm}0L{P<0Kj~&)jSTWgKgS#w)3dVzSmI1#!R9PB-^knv@{0()* zPPa={CQ*Vhm`}wzFplg9C>%N>0<^@J=<{^$74O}TwmGGXq}6-TEK!~Bsg80(QKWc) zEuJ#T-WG^fQ>zQZnZ0tp@Db-;R`Se7~faC%1OeVPmT*M&&ewaA|P| z$sAydyBoEcdaZcLPf$Rsl=iCbjaTF9Hj2HKdR&Jbb%guo6c2Nv9GOceaUft_b1E8o zL6nSt5t452=Dhc(|M<~1ev_7ZzjGvFGLUUUT zdjU~MF$NjwmZpQ445tZXn!he{(urqwsmFF+F+8I#V(*f{C7}pZP1vH=HK$6rHAi{x zIMMgYtnDUfu!VzXwSr2T>eBI++CqiVmVOStI&w=2>9V2=0yPSPy8wTbvV_7X=jWKN z8Go2uH8{5FmEERrx3pZKR~bKrRt-Snl!vxcrOeIDThBd{>bg`!3 zpOxkoJ^mK~1$6)c;XQl{nrHc=JBO{w&GVl1f<+JMW=nhug0R0sz|1NV`!ehHu9^5~ z?Uc5K?zFbYg?Ls&Hiu4M{eoxZ?ifLY8h}>^yq{dr6QAAQghwhH+g-2S6u4PFt7Sio zB7Z@VJAfibqrVSEw4L=!-YWNYImZi2wmc4tlaV(2Mo~eean1LU^moslqGF}$`RM>osGYi)oirsovO|EKGwLTL$w5GFO=j zV{$1T9_3_&rS{FL?hUyuqkHZjx0KZfp{73&&N}1bA_8-gV>UJk61E(s&nhNiHsyhE zqBF%Seq((?jg;R+OaI`+$xE`{MrLU@Y$>kh_V1tp^4TS;fkwMg?jS=|r6<<_Es0Unc#Tq96x47S!cr8*{6s^`gKT2C9o8-}oilY8I;Rs)^3MERIB zo_cQM$AWOfLkm}`A8YYZ1Cpef!jck)DZ%lz#x$00|Ja(3nUq0KT)%}^Zwdq4xuSK4 z)sDwKs<5M&vFNiwyxeqzr97RbX}eHRPjKGct94f%heh6JeohxPU5`DKCGlqLxJjCc zOmNhys2CEMK6ojaCG<~clbMFZO{>jEKRw%ebe9*IbaI=kT_F_#jyPPmRce613i3&q zUAkeC`AF?4Do^YEV71`=x-fTCKYO1Gf4iZ=Q>d=KX}R2f+m%~=;qv6Xo(tHVn`xu z=QMt>YkU*&Of*?9CI%NzDskjJ1LwQfD1f#E>F?>N4Z;5GS zugeYtrA=v+G)!*Pyw$m&%UYg6^?5<$-5CE%EqOl$er6p5BOJH`z6UTuryX) z&Q*h89N*@Cq`1!f?8)>PQ-X`@*{mI zkA6IKt#)C&8#5HnAHi)bmmH~XnzHNF@S9(E(Cr8EQPUB9#TV;_T*(9AzD`FlHg=Ti8t z23^cv-e#osV75M?sgTrO! zSmpF*+vWdphH>bhWyIeI7HghYc1q0N(s(QuMs9cEBFPZ8%aeEui$fP^JJvsb?Y7ue zUvit8R`8}+BXtmo#0foTT21jc&#sCcH#QR$n;nwe_xp@XL8pJ(!#8i6m?^#Uc-;5K zX{qAY(jVr=CE5E>CNQk{A-T?WIO%4CdGEWlU;+Pyl7_jK5BrKEDec*DqjEqV_ONfH z9ly3_T%UHKP+Ir7G3{1>ozku$pH+vg^VxHB;9)Z!Mq=F3uW-EoZzc8&WH+J)1M zI0ISP%de1O6O9BgFsCI?3%mB){Z{9Le39t zPc%6f?;OqA)L^seS3JYhA+X~cqheyKBe##aMGH7K+@k=6ImIJP)S51%=IC|F`P~(k zm{Mth@E!Wa%G6i8uE#e(zg6K8ix8W|fc}s=sRB@bg$-Q5@zJn&@9Q>xRgO_U1rz%0=bw1hC z?o?MQSU&-^-EkAiu;d}Ra41yhpz56?E?&WPbbWmH<{Q;k_4Ab>TU2W5*cgsHIvJ$l zD#mQ&yX~hlY9cDL4qd@%YD7XFOc+Lx-N6Yfv7$4TNw*Uom`}CQ(wOXKi+saAq*$T` z4G@>HzIwA!A@-~1LYo5p9|WoR9XFAb-i&O;L(be8E944Q>1lw40Ob9&-q zc4EB@`UV?7yc8PA=Ob)m)~K5niO#D2l&Yb~}3!K0XFF`-Q=}f{5k=R@_sP`c z&-LjvvF7A619z?VYd-BBcny7u1#q+5E5s?U+e)`(F0(va|6Dv{(xu=7Ocy}N4Z=(* zW{A0VL-);h7PE;W)OPWYBh&`-<1d=M_J<6&u#QM&vV9M1ep(A7(!0)dHMKO6O9r~} z{6(VDgshcR*;mg;@2Ti-q%GjceZgMD0dJhns>aWXzOD{4?aR-9^>ln#raci{R`n8$ zb$tz;D$(*tn@j!dsq~wU^8V)jQ{FpNt{@Ro8!SBvwH7$Iiyb8O-{L&3k)Wa-ZdGj} zw?eK1i!~Mx<8I|K0F@JC_u9A~UM|h|qV#`KJ^3RroCx|)?6l@jS1qq_Ei#jg>e4|T zznjm<|L$T38+j8YM0V=xt-ZK1g%VM`u1FG>O_)X6)BcYtto`Nh{VO#2AEmmNY)(YG zD1z)A>#}=mpSAr--ZTHJy6cQ;0$ajC1QcY^T|q?=k)jv@=?G|~hu%d(lU1n#0qH{G zqNtPr5^4k@H6S92LPSbfML|j;9Ylyq2}NX+&;lX*?!LFW`riK8vwPmrUpYxmaweHO z_ul#Dn{PJo(yQ_kFEqR5P?kvil+!MF%t^mXWg^YOG>QB&bSlH%GEEHHzIl-Zew;WUdO>ovY zU|)hcGx`p3YMb8C@Y5RsN${B$iAZu|1gTc&*jTQ|(Dh<|YcIKtoPS-~odDDM| zcxNubJjHj6Q)p>TLyi&g{qMd%Xr>lFYdFZ(6^fcBrHM1IQVSNnqA0X$F>5wSaKcGF zZ8Is%Y->Rl_I>OyM!6O!!hi&|Ethd+6%$*8t*-Yv18!o!Vh61OMO; z*S=Kg=sheWN&xvyU$fajKfh#tnQwM4m-+G{-+30uE{;k9_WCg=awy84{iwz^)c=*h zRU*!`V*FIIL1xaKm}2(P=v^~ZR*M4bnV%5IjZH4w_0MIPyXwbV=zQ3A*`CY)80dNh2;p~3jw0y58 zk7Q>K4P+_|4IdLOiMVLq)g)pad73}E1V-PFv|o&EEEaGYQP9W{-d|+5P4CgZ1q$HH zk-@GiJ1nIXL247Jm$Ft__QIda9_KIJ3Nec(cucndfJNg4OOK^PbKyC^SOx+eH)>M&=CbyxKhvv(dG568#LAl7r}(LlPELNglYEkll)Mto4Q zmE8HJ>Ylok;guqjvl+V(w_vVDnQ`scKsRTQ7RBVe!@||H>UU@Bx(n@Yv+c`j)+?)y zF%~GT$r4_Is}4*(hi?CQO-KM@2+SVUh}$Qo#~}+cJ=v2+ncCO3;KHznlaEWE4EH~i zs}nNeDlg5Ku(nhZ;mZ`_1SwOfS(S$oCAZF2MgFucW(2+k;@+mwM;V<^$FG2pS`XGBM6g+oen6TUzaWzvNoycM zVf&)8S+@SX31=m0S86powJx_R$Q9pMrIXA4iK_qqCZm6gM)n7}_mgo3QB=UOCTS0K zdR7dzAhA&Bg^8|Mp&@9V2^%y3<#2bao>WJjtasvZHJYJ2WP z9!j1`y&A)t81w{cY{tXI6@Pi@=A3QI(dz2{!iibD4X>9xq}T}Iu%=x4n<}ppQ=l!( zwQeRebL-q%rSq*do#gjKM7SpbtpKCFsSfn5oQ|~<=JgIJ@5SZqr`}s8gZ8*oH>?{j z!wAmg=_~yq*7k>omDFtEQ$6|C)T4&gAPn9X_&5mNK{>K+1h1y*ht}MAe%JWG%?`p^ zjX+PyR!Rhb$5}y*IX1qc-2*-%$sT}_O7%=;t8JeJ{pEmo?slwA_g? zjQ4aUCX(g}em$sj=L9u$mFx{>W~aJ%jP;}yH%m(y@4pdqA8o~uwzrtBiDW}~c+U@} zch)-~8|r67Ww#f~PT9w9S~Wz9s{!gi%9T}apJ{&)zCXhQmyRugOv3Zd$Ew!rkcAJjX$+|iK%!PCe-4m%O9`-#MG&piAT*fAmkk5BF9Lg-@ z1kRGFnVKUlIFj5%U4W~jzv%9R{97HT;$|X~P{N^w$W9PD*Z06HRR^C%Z$ zL%Hzmc46FL^T=~8JLWQtG6@$ARzo!2+$@n;E|KDQAF(l^QekoqOWFr^3mGq*NQo+- zE{oX*6eaQ&KP#6I+|7G({DJy=x#Q%pPD=nfF$j#wXDTbz(D1SAN0KCFxY*4Omx1Ad zZU9ZA`0*dT$)v#+rla5or z3v>x1BY-=E)-vlercz<`s#?M8;ocJgZ4~v0XJev+sakSBn&bDW-(v_0QZU%<$L=6hHf z$xFZHXOL_6_`LPPpj=g^-N^* zu${og2df1d(Z69coh&%$?tP`%b?S zM$-gpVrS$Q{VdeE-}m?b;=qBAt9Rg;_~VXStGr8IjptDWU-AXATWf!2cLIBJRmUqA z<+$Pg`gkkd8LCf%x#n`KS~+;fVRDvkYIUA8DH>6@Zk{4`hM7ru)se`YeN5opelUOl z?amcgZY}OFE1Ol~3JX+yiY1my9;dCJ!HUaqj3eedyY4(z!_O98(ph|Ca#dK|-{2SW z@;HgrL{*=Cxw$$mqZt>SEmt&Hf%b3{d(iXmJKAnWa{5*^!eIoq7w7D#+gqWwlCVG+ z%ew|HSAdR{&aT{=VBB-KLO0bY-*3B%IojPQnqmCu$oN}F&_DhypYh^8Gpvb-@JpY9 zUf39PxmOeFFu!Z_09rZ??ml-O1JX1PRfA}&7^)7YIV)Rk;n zHZ~%4j-|M>v`-^VHw;ni#=pAqmIRZF4nDrnq(8}i;=QsfzSKt}R+y~9*Q)edz z%wqfy>zux3!sOg~ph#`r8KWDx#={nSyz{Jjt525xG6kPd%)p3;_o}2u#Yv6FAyt#P5TizoxMi0$!(b~)HXI>hn8->OQkzqq&YH@ z*=uX9IJ1JurFlDVL$+CeN1du6)nSeKz{`z^;pn_{L}(f0l<_UoPpk`~sd}0+_zBDo z6U>iQRm503$Oip{9>Nf};5HFOeTa~|S?Fi}`KpktkAoWi?6y^Py|hHcg@qz7nwYjF z`gkGZ1KQ>I(KXV)LN0SUr0UsmjC5vDnzO?zxA#ppU=e6W$lJerGKr^Wa{QVdIDrpd z@XzksVQ+y4`XM)wqY8ktdPuk4&eC$_#d?;OCE%Za$f`g6gH6%AbmaQZ2=56owayLt zd*gi$4F(7oAuoy41wZ@x66P-sO!OD!?cb~1-`c|$MV@cX_}^FVM+J+oD!TsSj{o0K z%wPQYpT+S1-J73!D8EJHKdz-uEkd8JpI-$1*SeX1{+Ivx-Qe4bj?WpK-<$(JuBD-W E0oTaj;Q#;t literal 0 HcmV?d00001 diff --git a/_static/sloan-logo.png b/_static/sloan-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b508e60c7e0c7b08dd485ff661754290c934044c GIT binary patch literal 15217 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 Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate @@ -104,7 +104,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -192,21 +192,21 @@

    For developers

    -
    diff --git a/documentation.html b/documentation.html index 8af8203..9601ca6 100644 --- a/documentation.html +++ b/documentation.html @@ -39,7 +39,7 @@ - + @@ -53,9 +53,9 @@ Install Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate @@ -104,7 +104,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -192,21 +192,21 @@

    For developers

    -
    @@ -222,18 +222,12 @@

    Documentation

    IPython manualΒΆ

    -

    This introduction to some key features -is a good place to start if you haven’t used IPython before.

    -

    The manuals for previous releases are here:

    - +

    This introduction to some key features is a good +place to start if you haven’t used IPython before.

    +

    See below for links to all versions of the documentation.

    Other useful documentationΒΆ

    @@ -242,7 +236,7 @@

    Other useful documentationVideos and screencasts.
  • IPython screenshots.
  • -
  • ‘IPython quick referance card <http://damontallen.github.io/IPython-quick-ref-sheets/>`_.
  • +
  • IPython quick reference card.
  • An article about IPython, written by Fernando Perez and Brian Granger, published in the May/June 2007 issue of the journal Computing in Science and Engineering.
  • @@ -299,6 +293,24 @@

    Other projects using IPythonprovide a citation to IPython.

    +
    +

    Docs for all releasesΒΆ

    + +
    diff --git a/donate.html b/donate.html index 688d9b4..f7cf563 100644 --- a/donate.html +++ b/donate.html @@ -39,7 +39,8 @@ - + +
    @@ -52,9 +53,9 @@ Install Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate
    @@ -103,7 +104,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -191,21 +192,21 @@

    For developers

    -
    @@ -217,7 +218,7 @@

    Support IPython

    -

    Support IPython DevelopmentΒΆ

    +

    Support IPython DevelopmentΒΆ

    IPython will always be 100% open source software, free for all to use and released under the liberal terms of the modified BSD license. But while the whole team does its best to work efficiently, and we actively try to find diff --git a/faq.html b/faq.html index 637947e..a621b5b 100644 --- a/faq.html +++ b/faq.html @@ -40,7 +40,7 @@ - +

    @@ -53,9 +53,9 @@ Install Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate
    @@ -104,7 +104,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -192,21 +192,21 @@

    For developers

    -
    diff --git a/gh-pages/build/Pygments/tests/examplefiles/functional.html b/gh-pages/build/Pygments/tests/examplefiles/functional.html deleted file mode 100644 index d904f5f..0000000 --- a/gh-pages/build/Pygments/tests/examplefiles/functional.html +++ /dev/null @@ -1,1491 +0,0 @@ - - - - - - - - - - Functional Programming HOWTO — IPython - - - - - - - - - - - - - -
    -
    - - -
    - Install Β· -Docs Β· -Videos Β· -Notebook Viewer Β· -News Β· -Cite Β· -Donate -
    -
    -
    - -
    -
    - - -
    -
    -
    -
    Loading
    - - - - -
    -
    -

    Versions

    - -

    Stable

    - 1.0 – August 2013
    - Install -
    - -

    Development

    - 2.0.dev
    - Github -
    - -
    - - - - -
    -

    Notebook Viewer

    - -Share your notebooks - -
    - - - -
    -
    - -
    -

    Community

    - - - -
    - - - - - -
    - -
    - - -
    -

    Book

    - - - -
    - - - - -
    - - -
    -
    -
    - -
    - -
    -
    -
    - -
    -

    Functional Programming HOWTOΒΆ

    -

    Version 0.30

    -

    (This is a first draft. Please send comments/error -reports/suggestions to amk@amk.ca. This URL is probably not going to -be the final location of the document, so be careful about linking to -it – you may want to add a disclaimer.)

    -

    In this document, we’ll take a tour of Python’s features suitable for -implementing programs in a functional style. After an introduction to -the concepts of functional programming, we’ll look at language -features such as iterators and generators and relevant library modules -such as itertools and functools.

    - -
    -

    IntroductionΒΆ

    -

    This section explains the basic concept of functional programming; if -you’re just interested in learning about Python language features, -skip to the next section.

    -

    Programming languages support decomposing problems in several different -ways:

    -
      -
    • Most programming languages are procedural: -programs are lists of instructions that tell the computer what to -do with the program’s input. -C, Pascal, and even Unix shells are procedural languages.
    • -
    • In declarative languages, you write a specification that describes -the problem to be solved, and the language implementation figures out -how to perform the computation efficiently. SQL is the declarative -language you’re most likely to be familiar with; a SQL query describes -the data set you want to retrieve, and the SQL engine decides whether to -scan tables or use indexes, which subclauses should be performed first, -etc.
    • -
    • Object-oriented programs manipulate collections of objects. -Objects have internal state and support methods that query or modify -this internal state in some way. Smalltalk and Java are -object-oriented languages. C++ and Python are languages that -support object-oriented programming, but don’t force the use -of object-oriented features.
    • -
    • Functional programming decomposes a problem into a set of functions. -Ideally, functions only take inputs and produce outputs, and don’t have any -internal state that affects the output produced for a given input. -Well-known functional languages include the ML family (Standard ML, -OCaml, and other variants) and Haskell.
    • -
    -

    The designers of some computer languages have chosen one approach to -programming that’s emphasized. This often makes it difficult to -write programs that use a different approach. Other languages are -multi-paradigm languages that support several different approaches. Lisp, -C++, and Python are multi-paradigm; you can write programs or -libraries that are largely procedural, object-oriented, or functional -in all of these languages. In a large program, different sections -might be written using different approaches; the GUI might be object-oriented -while the processing logic is procedural or functional, for example.

    -

    In a functional program, input flows through a set of functions. Each -function operates on its input and produces some output. Functional -style frowns upon functions with side effects that modify internal -state or make other changes that aren’t visible in the function’s -return value. Functions that have no side effects at all are -called purely functional. -Avoiding side effects means not using data structures -that get updated as a program runs; every function’s output -must only depend on its input.

    -

    Some languages are very strict about purity and don’t even have -assignment statements such as a=3 or c = a + b, but it’s -difficult to avoid all side effects. Printing to the screen or -writing to a disk file are side effects, for example. For example, in -Python a print statement or a time.sleep(1) both return no -useful value; they’re only called for their side effects of sending -some text to the screen or pausing execution for a second.

    -

    Python programs written in functional style usually won’t go to the -extreme of avoiding all I/O or all assignments; instead, they’ll -provide a functional-appearing interface but will use non-functional -features internally. For example, the implementation of a function -will still use assignments to local variables, but won’t modify global -variables or have other side effects.

    -

    Functional programming can be considered the opposite of -object-oriented programming. Objects are little capsules containing -some internal state along with a collection of method calls that let -you modify this state, and programs consist of making the right set of -state changes. Functional programming wants to avoid state changes as -much as possible and works with data flowing between functions. In -Python you might combine the two approaches by writing functions that -take and return instances representing objects in your application -(e-mail messages, transactions, etc.).

    -

    Functional design may seem like an odd constraint to work under. Why -should you avoid objects and side effects? There are theoretical and -practical advantages to the functional style:

    -
      -
    • Formal provability.
    • -
    • Modularity.
    • -
    • Composability.
    • -
    • Ease of debugging and testing.
    • -
    -
    -

    Formal provabilityΒΆ

    -

    A theoretical benefit is that it’s easier to construct a mathematical proof -that a functional program is correct.

    -

    For a long time researchers have been interested in finding ways to -mathematically prove programs correct. This is different from testing -a program on numerous inputs and concluding that its output is usually -correct, or reading a program’s source code and concluding that the -code looks right; the goal is instead a rigorous proof that a program -produces the right result for all possible inputs.

    -

    The technique used to prove programs correct is to write down -invariants, properties of the input data and of the program’s -variables that are always true. For each line of code, you then show -that if invariants X and Y are true before the line is executed, -the slightly different invariants X’ and Y’ are true after -the line is executed. This continues until you reach the end of the -program, at which point the invariants should match the desired -conditions on the program’s output.

    -

    Functional programming’s avoidance of assignments arose because -assignments are difficult to handle with this technique; -assignments can break invariants that were true before the assignment -without producing any new invariants that can be propagated onward.

    -

    Unfortunately, proving programs correct is largely impractical and not -relevant to Python software. Even trivial programs require proofs that -are several pages long; the proof of correctness for a moderately -complicated program would be enormous, and few or none of the programs -you use daily (the Python interpreter, your XML parser, your web -browser) could be proven correct. Even if you wrote down or generated -a proof, there would then be the question of verifying the proof; -maybe there’s an error in it, and you wrongly believe you’ve proved -the program correct.

    -
    -
    -

    ModularityΒΆ

    -

    A more practical benefit of functional programming is that it forces -you to break apart your problem into small pieces. Programs are more -modular as a result. It’s easier to specify and write a small -function that does one thing than a large function that performs a -complicated transformation. Small functions are also easier to read -and to check for errors.

    -
    -
    -

    Ease of debugging and testingΒΆ

    -

    Testing and debugging a functional-style program is easier.

    -

    Debugging is simplified because functions are generally small and -clearly specified. When a program doesn’t work, each function is an -interface point where you can check that the data are correct. You -can look at the intermediate inputs and outputs to quickly isolate the -function that’s responsible for a bug.

    -

    Testing is easier because each function is a potential subject for a -unit test. Functions don’t depend on system state that needs to be -replicated before running a test; instead you only have to synthesize -the right input and then check that the output matches expectations.

    -
    -
    -

    ComposabilityΒΆ

    -

    As you work on a functional-style program, you’ll write a number of -functions with varying inputs and outputs. Some of these functions -will be unavoidably specialized to a particular application, but -others will be useful in a wide variety of programs. For example, a -function that takes a directory path and returns all the XML files in -the directory, or a function that takes a filename and returns its -contents, can be applied to many different situations.

    -

    Over time you’ll form a personal library of utilities. Often you’ll -assemble new programs by arranging existing functions in a new -configuration and writing a few functions specialized for the current -task.

    -
    -
    -
    -

    IteratorsΒΆ

    -

    I’ll start by looking at a Python language feature that’s an important -foundation for writing functional-style programs: iterators.

    -

    An iterator is an object representing a stream of data; this object -returns the data one element at a time. A Python iterator must -support a method called next() that takes no arguments and always -returns the next element of the stream. If there are no more elements -in the stream, next() must raise the StopIteration exception. -Iterators don’t have to be finite, though; it’s perfectly reasonable -to write an iterator that produces an infinite stream of data.

    -

    The built-in iter() function takes an arbitrary object and tries -to return an iterator that will return the object’s contents or -elements, raising TypeError if the object doesn’t support -iteration. Several of Python’s built-in data types support iteration, -the most common being lists and dictionaries. An object is called -an iterable object if you can get an iterator for it.

    -

    You can experiment with the iteration interface manually:

    -
    >>> L = [1,2,3]
    ->>> it = iter(L)
    ->>> print it
    -<iterator object at 0x8116870>
    ->>> it.next()
    -1
    ->>> it.next()
    -2
    ->>> it.next()
    -3
    ->>> it.next()
    -Traceback (most recent call last):
    -  File "<stdin>", line 1, in ?
    -StopIteration
    ->>>
    -
    -
    -

    Python expects iterable objects in several different contexts, the -most important being the for statement. In the statement for X in Y, -Y must be an iterator or some object for which iter() can create -an iterator. These two statements are equivalent:

    -
    for i in iter(obj):
    -    print i
    -
    -for i in obj:
    -    print i
    -
    -
    -

    Iterators can be materialized as lists or tuples by using the -list() or tuple() constructor functions:

    -
    >>> L = [1,2,3]
    ->>> iterator = iter(L)
    ->>> t = tuple(iterator)
    ->>> t
    -(1, 2, 3)
    -
    -
    -

    Sequence unpacking also supports iterators: if you know an iterator -will return N elements, you can unpack them into an N-tuple:

    -
    >>> L = [1,2,3]
    ->>> iterator = iter(L)
    ->>> a,b,c = iterator
    ->>> a,b,c
    -(1, 2, 3)
    -
    -
    -

    Built-in functions such as max() and min() can take a single -iterator argument and will return the largest or smallest element. -The "in" and "not in" operators also support iterators: X in -iterator is true if X is found in the stream returned by the -iterator. You’ll run into obvious problems if the iterator is -infinite; max(), min(), and "not in" will never return, and -if the element X never appears in the stream, the "in" operator -won’t return either.

    -

    Note that you can only go forward in an iterator; there’s no way to -get the previous element, reset the iterator, or make a copy of it. -Iterator objects can optionally provide these additional capabilities, -but the iterator protocol only specifies the next() method. -Functions may therefore consume all of the iterator’s output, and if -you need to do something different with the same stream, you’ll have -to create a new iterator.

    -
    -

    Data Types That Support IteratorsΒΆ

    -

    We’ve already seen how lists and tuples support iterators. In fact, -any Python sequence type, such as strings, will automatically support -creation of an iterator.

    -

    Calling iter() on a dictionary returns an iterator that will loop -over the dictionary’s keys:

    -
    >>> m = {'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6,
    -...      'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12}
    ->>> for key in m:
    -...     print key, m[key]
    -Mar 3
    -Feb 2
    -Aug 8
    -Sep 9
    -May 5
    -Jun 6
    -Jul 7
    -Jan 1
    -Apr 4
    -Nov 11
    -Dec 12
    -Oct 10
    -
    -
    -

    Note that the order is essentially random, because it’s based on the -hash ordering of the objects in the dictionary.

    -

    Applying iter() to a dictionary always loops over the keys, but -dictionaries have methods that return other iterators. If you want to -iterate over keys, values, or key/value pairs, you can explicitly call -the iterkeys(), itervalues(), or iteritems() methods to -get an appropriate iterator.

    -

    The dict() constructor can accept an iterator that returns a -finite stream of (key, value) tuples:

    -
    >>> L = [('Italy', 'Rome'), ('France', 'Paris'), ('US', 'Washington DC')]
    ->>> dict(iter(L))
    -{'Italy': 'Rome', 'US': 'Washington DC', 'France': 'Paris'}
    -
    -
    -

    Files also support iteration by calling the readline() -method until there are no more lines in the file. This means you can -read each line of a file like this:

    -
    for line in file:
    -    # do something for each line
    -    ...
    -
    -
    -

    Sets can take their contents from an iterable and let you iterate over -the set’s elements:

    -
    S = set((2, 3, 5, 7, 11, 13))
    -for i in S:
    -    print i
    -
    -
    -
    -
    -
    -

    Generator expressions and list comprehensionsΒΆ

    -

    Two common operations on an iterator’s output are 1) performing some -operation for every element, 2) selecting a subset of elements that -meet some condition. For example, given a list of strings, you might -want to strip off trailing whitespace from each line or extract all -the strings containing a given substring.

    -

    List comprehensions and generator expressions (short form: “listcomps” -and “genexps”) are a concise notation for such operations, borrowed -from the functional programming language Haskell -(http://www.haskell.org). You can strip all the whitespace from a -stream of strings with the following code:

    -
    line_list = ['  line 1\n', 'line 2  \n', ...]
    -
    -# Generator expression -- returns iterator
    -stripped_iter = (line.strip() for line in line_list)
    -
    -# List comprehension -- returns list
    -stripped_list = [line.strip() for line in line_list]
    -
    -
    -

    You can select only certain elements by adding an "if" condition:

    -
    stripped_list = [line.strip() for line in line_list
    -                 if line != ""]
    -
    -
    -

    With a list comprehension, you get back a Python list; -stripped_list is a list containing the resulting lines, not an -iterator. Generator expressions return an iterator that computes the -values as necessary, not needing to materialize all the values at -once. This means that list comprehensions aren’t useful if you’re -working with iterators that return an infinite stream or a very large -amount of data. Generator expressions are preferable in these -situations.

    -

    Generator expressions are surrounded by parentheses (“()”) and list -comprehensions are surrounded by square brackets (“[]”). Generator -expressions have the form:

    -
    ( expression for expr in sequence1
    -             if condition1
    -             for expr2 in sequence2
    -             if condition2
    -             for expr3 in sequence3 ...
    -             if condition3
    -             for exprN in sequenceN
    -             if conditionN )
    -
    -

    Again, for a list comprehension only the outside brackets are -different (square brackets instead of parentheses).

    -

    The elements of the generated output will be the successive values of -expression. The if clauses are all optional; if present, -expression is only evaluated and added to the result when -condition is true.

    -

    Generator expressions always have to be written inside parentheses, -but the parentheses signalling a function call also count. If you -want to create an iterator that will be immediately passed to a -function you can write:

    -
    obj_total = sum(obj.count for obj in list_all_objects())
    -
    -
    -

    The for...in clauses contain the sequences to be iterated over. -The sequences do not have to be the same length, because they are -iterated over from left to right, not in parallel. For each -element in sequence1, sequence2 is looped over from the -beginning. sequence3 is then looped over for each -resulting pair of elements from sequence1 and sequence2.

    -

    To put it another way, a list comprehension or generator expression is -equivalent to the following Python code:

    -
    for expr1 in sequence1:
    -    if not (condition1):
    -        continue   # Skip this element
    -    for expr2 in sequence2:
    -        if not (condition2):
    -            continue    # Skip this element
    -        ...
    -        for exprN in sequenceN:
    -             if not (conditionN):
    -                 continue   # Skip this element
    -
    -             # Output the value of
    -             # the expression.
    -
    -
    -

    This means that when there are multiple for...in clauses but no -if clauses, the length of the resulting output will be equal to -the product of the lengths of all the sequences. If you have two -lists of length 3, the output list is 9 elements long:

    -
    seq1 = 'abc'
    -seq2 = (1,2,3)
    ->>> [ (x,y) for x in seq1 for y in seq2]
    -[('a', 1), ('a', 2), ('a', 3),
    - ('b', 1), ('b', 2), ('b', 3),
    - ('c', 1), ('c', 2), ('c', 3)]
    -
    -

    To avoid introducing an ambiguity into Python’s grammar, if -expression is creating a tuple, it must be surrounded with -parentheses. The first list comprehension below is a syntax error, -while the second one is correct:

    -
    # Syntax error
    -[ x,y for x in seq1 for y in seq2]
    -# Correct
    -[ (x,y) for x in seq1 for y in seq2]
    -
    -
    -
    -

    GeneratorsΒΆ

    -

    Generators are a special class of functions that simplify the task of -writing iterators. Regular functions compute a value and return it, -but generators return an iterator that returns a stream of values.

    -

    You’re doubtless familiar with how regular function calls work in -Python or C. When you call a function, it gets a private namespace -where its local variables are created. When the function reaches a -return statement, the local variables are destroyed and the -value is returned to the caller. A later call to the same function -creates a new private namespace and a fresh set of local -variables. But, what if the local variables weren’t thrown away on -exiting a function? What if you could later resume the function where -it left off? This is what generators provide; they can be thought of -as resumable functions.

    -

    Here’s the simplest example of a generator function:

    -
    def generate_ints(N):
    -    for i in range(N):
    -        yield i
    -
    -
    -

    Any function containing a yield keyword is a generator function; -this is detected by Python’s bytecode compiler which compiles the -function specially as a result.

    -

    When you call a generator function, it doesn’t return a single value; -instead it returns a generator object that supports the iterator -protocol. On executing the yield expression, the generator -outputs the value of i, similar to a return -statement. The big difference between yield and a -return statement is that on reaching a yield the -generator’s state of execution is suspended and local variables are -preserved. On the next call to the generator’s .next() method, -the function will resume executing.

    -

    Here’s a sample usage of the generate_ints() generator:

    -
    >>> gen = generate_ints(3)
    ->>> gen
    -<generator object at 0x8117f90>
    ->>> gen.next()
    -0
    ->>> gen.next()
    -1
    ->>> gen.next()
    -2
    ->>> gen.next()
    -Traceback (most recent call last):
    -  File "stdin", line 1, in ?
    -  File "stdin", line 2, in generate_ints
    -StopIteration
    -
    -
    -

    You could equally write for i in generate_ints(5), or -a,b,c = generate_ints(3).

    -

    Inside a generator function, the return statement can only be used -without a value, and signals the end of the procession of values; -after executing a return the generator cannot return any further -values. return with a value, such as return 5, is a syntax -error inside a generator function. The end of the generator’s results -can also be indicated by raising StopIteration manually, or by -just letting the flow of execution fall off the bottom of the -function.

    -

    You could achieve the effect of generators manually by writing your -own class and storing all the local variables of the generator as -instance variables. For example, returning a list of integers could -be done by setting self.count to 0, and having the -next() method increment self.count and return it. -However, for a moderately complicated generator, writing a -corresponding class can be much messier.

    -

    The test suite included with Python’s library, test_generators.py, -contains a number of more interesting examples. Here’s one generator -that implements an in-order traversal of a tree using generators -recursively.

    -
    # A recursive generator that generates Tree leaves in in-order.
    -def inorder(t):
    -    if t:
    -        for x in inorder(t.left):
    -            yield x
    -
    -        yield t.label
    -
    -        for x in inorder(t.right):
    -            yield x
    -
    -
    -

    Two other examples in test_generators.py produce -solutions for the N-Queens problem (placing N queens on an NxN -chess board so that no queen threatens another) and the Knight’s Tour -(finding a route that takes a knight to every square of an NxN chessboard -without visiting any square twice).

    -
    -

    Passing values into a generatorΒΆ

    -

    In Python 2.4 and earlier, generators only produced output. Once a -generator’s code was invoked to create an iterator, there was no way to -pass any new information into the function when its execution is -resumed. You could hack together this ability by making the -generator look at a global variable or by passing in some mutable object -that callers then modify, but these approaches are messy.

    -

    In Python 2.5 there’s a simple way to pass values into a generator. -yield became an expression, returning a value that can be assigned -to a variable or otherwise operated on:

    -
    val = (yield i)
    -
    -
    -

    I recommend that you always put parentheses around a yield -expression when you’re doing something with the returned value, as in -the above example. The parentheses aren’t always necessary, but it’s -easier to always add them instead of having to remember when they’re -needed.

    -

    (PEP 342 explains the exact rules, which are that a -yield-expression must always be parenthesized except when it -occurs at the top-level expression on the right-hand side of an -assignment. This means you can write val = yield i but have to -use parentheses when there’s an operation, as in val = (yield i) -+ 12.)

    -

    Values are sent into a generator by calling its -send(value) method. This method resumes the -generator’s code and the yield expression returns the specified -value. If the regular next() method is called, the -yield returns None.

    -

    Here’s a simple counter that increments by 1 and allows changing the -value of the internal counter.

    -
    def counter (maximum):
    -    i = 0
    -    while i < maximum:
    -        val = (yield i)
    -        # If value provided, change counter
    -        if val is not None:
    -            i = val
    -        else:
    -            i += 1
    -
    -
    -

    And here’s an example of changing the counter:

    -
    >>> it = counter(10)
    ->>> print it.next()
    -0
    ->>> print it.next()
    -1
    ->>> print it.send(8)
    -8
    ->>> print it.next()
    -9
    ->>> print it.next()
    -Traceback (most recent call last):
    -  File ``t.py'', line 15, in ?
    -    print it.next()
    -StopIteration
    -
    -

    Because yield will often be returning None, you -should always check for this case. Don’t just use its value in -expressions unless you’re sure that the send() method -will be the only method used resume your generator function.

    -

    In addition to send(), there are two other new methods on -generators:

    -
      -
    • throw(type, value=None, traceback=None) is used to raise an exception inside the -generator; the exception is raised by the yield expression -where the generator’s execution is paused.

      -
    • -
    • close() raises a GeneratorExit -exception inside the generator to terminate the iteration. -On receiving this -exception, the generator’s code must either raise -GeneratorExit or StopIteration; catching the -exception and doing anything else is illegal and will trigger -a RuntimeError. close() will also be called by -Python’s garbage collector when the generator is garbage-collected.

      -

      If you need to run cleanup code when a GeneratorExit occurs, -I suggest using a try: ... finally: suite instead of -catching GeneratorExit.

      -
    • -
    -

    The cumulative effect of these changes is to turn generators from -one-way producers of information into both producers and consumers.

    -

    Generators also become coroutines, a more generalized form of -subroutines. Subroutines are entered at one point and exited at -another point (the top of the function, and a return -statement), but coroutines can be entered, exited, and resumed at -many different points (the yield statements).

    -
    -
    -
    -

    Built-in functionsΒΆ

    -

    Let’s look in more detail at built-in functions often used with iterators.

    -

    Two Python’s built-in functions, map() and filter(), are -somewhat obsolete; they duplicate the features of list comprehensions -but return actual lists instead of iterators.

    -

    map(f, iterA, iterB, ...) returns a list containing f(iterA[0], -iterB[0]), f(iterA[1], iterB[1]), f(iterA[2], iterB[2]), ....

    -
    def upper(s):
    -    return s.upper()
    -map(upper, ['sentence', 'fragment']) =>
    -  ['SENTENCE', 'FRAGMENT']
    -
    -[upper(s) for s in ['sentence', 'fragment']] =>
    -  ['SENTENCE', 'FRAGMENT']
    -
    -

    As shown above, you can achieve the same effect with a list -comprehension. The itertools.imap() function does the same thing -but can handle infinite iterators; it’ll be discussed later, in the section on -the itertools module.

    -

    filter(predicate, iter) returns a list -that contains all the sequence elements that meet a certain condition, -and is similarly duplicated by list comprehensions. -A predicate is a function that returns the truth value of -some condition; for use with filter(), the predicate must take a -single value.

    -
    def is_even(x):
    -    return (x % 2) == 0
    -
    -filter(is_even, range(10)) =>
    -  [0, 2, 4, 6, 8]
    -
    -

    This can also be written as a list comprehension:

    -
    >>> [x for x in range(10) if is_even(x)]
    -[0, 2, 4, 6, 8]
    -
    -
    -

    filter() also has a counterpart in the itertools module, -itertools.ifilter(), that returns an iterator and -can therefore handle infinite sequences just as itertools.imap() can.

    -

    reduce(func, iter, [initial_value]) doesn’t have a counterpart in -the itertools module because it cumulatively performs an operation -on all the iterable’s elements and therefore can’t be applied to -infinite iterables. func must be a function that takes two elements -and returns a single value. reduce() takes the first two elements -A and B returned by the iterator and calculates func(A, B). It -then requests the third element, C, calculates func(func(A, B), -C), combines this result with the fourth element returned, and -continues until the iterable is exhausted. If the iterable returns no -values at all, a TypeError exception is raised. If the initial -value is supplied, it’s used as a starting point and -func(initial_value, A) is the first calculation.

    -
    import operator
    -reduce(operator.concat, ['A', 'BB', 'C']) =>
    -  'ABBC'
    -reduce(operator.concat, []) =>
    -  TypeError: reduce() of empty sequence with no initial value
    -reduce(operator.mul, [1,2,3], 1) =>
    -  6
    -reduce(operator.mul, [], 1) =>
    -  1
    -
    -

    If you use operator.add with reduce(), you’ll add up all the -elements of the iterable. This case is so common that there’s a special -built-in called sum() to compute it:

    -
    reduce(operator.add, [1,2,3,4], 0) =>
    -  10
    -sum([1,2,3,4]) =>
    -  10
    -sum([]) =>
    -  0
    -
    -

    For many uses of reduce(), though, it can be clearer to just write -the obvious for loop:

    -
    # Instead of:
    -product = reduce(operator.mul, [1,2,3], 1)
    -
    -# You can write:
    -product = 1
    -for i in [1,2,3]:
    -    product *= i
    -
    -
    -

    enumerate(iter) counts off the elements in the iterable, returning -2-tuples containing the count and each element.

    -
    enumerate(['subject', 'verb', 'object']) =>
    -  (0, 'subject'), (1, 'verb'), (2, 'object')
    -
    -

    enumerate() is often used when looping through a list -and recording the indexes at which certain conditions are met:

    -
    f = open('data.txt', 'r')
    -for i, line in enumerate(f):
    -    if line.strip() == '':
    -        print 'Blank line at line #%i' % i
    -
    -
    -

    sorted(iterable, [cmp=None], [key=None], [reverse=False) -collects all the elements of the iterable into a list, sorts -the list, and returns the sorted result. The cmp, key, -and reverse arguments are passed through to the -constructed list’s .sort() method.

    -
    import random
    -# Generate 8 random numbers between [0, 10000)
    -rand_list = random.sample(range(10000), 8)
    -rand_list =>
    -  [769, 7953, 9828, 6431, 8442, 9878, 6213, 2207]
    -sorted(rand_list) =>
    -  [769, 2207, 6213, 6431, 7953, 8442, 9828, 9878]
    -sorted(rand_list, reverse=True) =>
    -  [9878, 9828, 8442, 7953, 6431, 6213, 2207, 769]
    -
    -

    (For a more detailed discussion of sorting, see the Sorting mini-HOWTO -in the Python wiki at http://wiki.python.org/moin/HowTo/Sorting.)

    -

    The any(iter) and all(iter) built-ins look at -the truth values of an iterable’s contents. any() returns -True if any element in the iterable is a true value, and all() -returns True if all of the elements are true values:

    -
    any([0,1,0]) =>
    -  True
    -any([0,0,0]) =>
    -  False
    -any([1,1,1]) =>
    -  True
    -all([0,1,0]) =>
    -  False
    -all([0,0,0]) =>
    -  False
    -all([1,1,1]) =>
    -  True
    -
    -
    -
    -

    Small functions and the lambda statementΒΆ

    -

    When writing functional-style programs, you’ll often need little -functions that act as predicates or that combine elements in some way.

    -

    If there’s a Python built-in or a module function that’s suitable, you -don’t need to define a new function at all:

    -
    stripped_lines = [line.strip() for line in lines]
    -existing_files = filter(os.path.exists, file_list)
    -
    -
    -

    If the function you need doesn’t exist, you need to write it. One way -to write small functions is to use the lambda statement. lambda -takes a number of parameters and an expression combining these parameters, -and creates a small function that returns the value of the expression:

    -
    lowercase = lambda x: x.lower()
    -
    -print_assign = lambda name, value: name + '=' + str(value)
    -
    -adder = lambda x, y: x+y
    -
    -
    -

    An alternative is to just use the def statement and define a -function in the usual way:

    -
    def lowercase(x):
    -    return x.lower()
    -
    -def print_assign(name, value):
    -    return name + '=' + str(value)
    -
    -def adder(x,y):
    -    return x + y
    -
    -
    -

    Which alternative is preferable? That’s a style question; my usual -course is to avoid using lambda.

    -

    One reason for my preference is that lambda is quite limited in -the functions it can define. The result has to be computable as a -single expression, which means you can’t have multiway -if... elif... else comparisons or try... except statements. -If you try to do too much in a lambda statement, you’ll end up -with an overly complicated expression that’s hard to read. Quick, -what’s the following code doing?

    -
    total = reduce(lambda a, b: (0, a[1] + b[1]), items)[1]
    -
    -
    -

    You can figure it out, but it takes time to disentangle the expression -to figure out what’s going on. Using a short nested -def statements makes things a little bit better:

    -
    def combine (a, b):
    -    return 0, a[1] + b[1]
    -
    -total = reduce(combine, items)[1]
    -
    -
    -

    But it would be best of all if I had simply used a for loop:

    -
    total = 0
    -for a, b in items:
    -    total += b
    -
    -
    -

    Or the sum() built-in and a generator expression:

    -
    total = sum(b for a,b in items)
    -
    -
    -

    Many uses of reduce() are clearer when written as for loops.

    -

    Fredrik Lundh once suggested the following set of rules for refactoring -uses of lambda:

    -
      -
    1. Write a lambda function.
    2. -
    3. Write a comment explaining what the heck that lambda does.
    4. -
    5. Study the comment for a while, and think of a name that captures -the essence of the comment.
    6. -
    7. Convert the lambda to a def statement, using that name.
    8. -
    9. Remove the comment.
    10. -
    -

    I really like these rules, but you’re free to disagree that this -lambda-free style is better.

    -
    -
    -

    The itertools moduleΒΆ

    -

    The itertools module contains a number of commonly-used iterators -as well as functions for combining several iterators. This section -will introduce the module’s contents by showing small examples.

    -

    The module’s functions fall into a few broad classes:

    -
      -
    • Functions that create a new iterator based on an existing iterator.
    • -
    • Functions for treating an iterator’s elements as function arguments.
    • -
    • Functions for selecting portions of an iterator’s output.
    • -
    • A function for grouping an iterator’s output.
    • -
    -
    -

    Creating new iteratorsΒΆ

    -

    itertools.count(n) returns an infinite stream of -integers, increasing by 1 each time. You can optionally supply the -starting number, which defaults to 0:

    -
    itertools.count() =>
    -  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ...
    -itertools.count(10) =>
    -  10, 11, 12, 13, 14, 15, 16, 17, 18, 19, ...
    -
    -

    itertools.cycle(iter) saves a copy of the contents of a provided -iterable and returns a new iterator that returns its elements from -first to last. The new iterator will repeat these elements infinitely.

    -
    itertools.cycle([1,2,3,4,5]) =>
    -  1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
    -
    -

    itertools.repeat(elem, [n]) returns the provided element n -times, or returns the element endlessly if n is not provided.

    -
    itertools.repeat('abc') =>
    -  abc, abc, abc, abc, abc, abc, abc, abc, abc, abc, ...
    -itertools.repeat('abc', 5) =>
    -  abc, abc, abc, abc, abc
    -
    -

    itertools.chain(iterA, iterB, ...) takes an arbitrary number of -iterables as input, and returns all the elements of the first -iterator, then all the elements of the second, and so on, until all of -the iterables have been exhausted.

    -
    itertools.chain(['a', 'b', 'c'], (1, 2, 3)) =>
    -  a, b, c, 1, 2, 3
    -
    -

    itertools.izip(iterA, iterB, ...) takes one element from each iterable -and returns them in a tuple:

    -
    itertools.izip(['a', 'b', 'c'], (1, 2, 3)) =>
    -  ('a', 1), ('b', 2), ('c', 3)
    -
    -

    It’s similiar to the built-in zip() function, but doesn’t -construct an in-memory list and exhaust all the input iterators before -returning; instead tuples are constructed and returned only if they’re -requested. (The technical term for this behaviour is -lazy evaluation.)

    -

    This iterator is intended to be used with iterables that are all of -the same length. If the iterables are of different lengths, the -resulting stream will be the same length as the shortest iterable.

    -
    itertools.izip(['a', 'b'], (1, 2, 3)) =>
    -  ('a', 1), ('b', 2)
    -
    -

    You should avoid doing this, though, because an element may be taken -from the longer iterators and discarded. This means you can’t go on -to use the iterators further because you risk skipping a discarded -element.

    -

    itertools.islice(iter, [start], stop, [step]) returns a stream -that’s a slice of the iterator. With a single stop argument, -it will return the first stop -elements. If you supply a starting index, you’ll get stop-start -elements, and if you supply a value for step, elements will be -skipped accordingly. Unlike Python’s string and list slicing, you -can’t use negative values for start, stop, or step.

    -
    itertools.islice(range(10), 8) =>
    -  0, 1, 2, 3, 4, 5, 6, 7
    -itertools.islice(range(10), 2, 8) =>
    -  2, 3, 4, 5, 6, 7
    -itertools.islice(range(10), 2, 8, 2) =>
    -  2, 4, 6
    -
    -

    itertools.tee(iter, [n]) replicates an iterator; it returns n -independent iterators that will all return the contents of the source -iterator. If you don’t supply a value for n, the default is 2. -Replicating iterators requires saving some of the contents of the source -iterator, so this can consume significant memory if the iterator is large -and one of the new iterators is consumed more than the others.

    -
    itertools.tee( itertools.count() ) =>
    -   iterA, iterB
    -
    -where iterA ->
    -   0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ...
    -
    -and   iterB ->
    -   0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ...
    -
    -
    -
    -

    Calling functions on elementsΒΆ

    -

    Two functions are used for calling other functions on the contents of an -iterable.

    -

    itertools.imap(f, iterA, iterB, ...) returns -a stream containing f(iterA[0], iterB[0]), f(iterA[1], iterB[1]), -f(iterA[2], iterB[2]), ...:

    -
    itertools.imap(operator.add, [5, 6, 5], [1, 2, 3]) =>
    -  6, 8, 8
    -
    -

    The operator module contains a set of functions -corresponding to Python’s operators. Some examples are -operator.add(a, b) (adds two values), -operator.ne(a, b) (same as a!=b), -and -operator.attrgetter('id') (returns a callable that -fetches the "id" attribute).

    -

    itertools.starmap(func, iter) assumes that the iterable will -return a stream of tuples, and calls f() using these tuples as the -arguments:

    -
    itertools.starmap(os.path.join,
    -                  [('/usr', 'bin', 'java'), ('/bin', 'python'),
    -                   ('/usr', 'bin', 'perl'),('/usr', 'bin', 'ruby')])
    -=>
    -  /usr/bin/java, /bin/python, /usr/bin/perl, /usr/bin/ruby
    -
    -
    -
    -

    Selecting elementsΒΆ

    -

    Another group of functions chooses a subset of an iterator’s elements -based on a predicate.

    -

    itertools.ifilter(predicate, iter) returns all the elements for -which the predicate returns true:

    -
    def is_even(x):
    -    return (x % 2) == 0
    -
    -itertools.ifilter(is_even, itertools.count()) =>
    -  0, 2, 4, 6, 8, 10, 12, 14, ...
    -
    -

    itertools.ifilterfalse(predicate, iter) is the opposite, -returning all elements for which the predicate returns false:

    -
    itertools.ifilterfalse(is_even, itertools.count()) =>
    -  1, 3, 5, 7, 9, 11, 13, 15, ...
    -
    -

    itertools.takewhile(predicate, iter) returns elements for as long -as the predicate returns true. Once the predicate returns false, -the iterator will signal the end of its results.

    -
    def less_than_10(x):
    -    return (x < 10)
    -
    -itertools.takewhile(less_than_10, itertools.count()) =>
    -  0, 1, 2, 3, 4, 5, 6, 7, 8, 9
    -
    -itertools.takewhile(is_even, itertools.count()) =>
    -  0
    -
    -

    itertools.dropwhile(predicate, iter) discards elements while the -predicate returns true, and then returns the rest of the iterable’s -results.

    -
    itertools.dropwhile(less_than_10, itertools.count()) =>
    -  10, 11, 12, 13, 14, 15, 16, 17, 18, 19, ...
    -
    -itertools.dropwhile(is_even, itertools.count()) =>
    -  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ...
    -
    -
    -
    -

    Grouping elementsΒΆ

    -

    The last function I’ll discuss, itertools.groupby(iter, -key_func=None), is the most complicated. key_func(elem) is a -function that can compute a key value for each element returned by the -iterable. If you don’t supply a key function, the key is simply each -element itself.

    -

    groupby() collects all the consecutive elements from the -underlying iterable that have the same key value, and returns a stream -of 2-tuples containing a key value and an iterator for the elements -with that key.

    -
    city_list = [('Decatur', 'AL'), ('Huntsville', 'AL'), ('Selma', 'AL'),
    -             ('Anchorage', 'AK'), ('Nome', 'AK'),
    -             ('Flagstaff', 'AZ'), ('Phoenix', 'AZ'), ('Tucson', 'AZ'),
    -             ...
    -            ]
    -
    -def get_state ((city, state)):
    -    return state
    -
    -itertools.groupby(city_list, get_state) =>
    -  ('AL', iterator-1),
    -  ('AK', iterator-2),
    -  ('AZ', iterator-3), ...
    -
    -where
    -iterator-1 =>
    -  ('Decatur', 'AL'), ('Huntsville', 'AL'), ('Selma', 'AL')
    -iterator-2 =>
    -  ('Anchorage', 'AK'), ('Nome', 'AK')
    -iterator-3 =>
    -  ('Flagstaff', 'AZ'), ('Phoenix', 'AZ'), ('Tucson', 'AZ')
    -
    -

    groupby() assumes that the underlying iterable’s contents will -already be sorted based on the key. Note that the returned iterators -also use the underlying iterable, so you have to consume the results -of iterator-1 before requesting iterator-2 and its corresponding key.

    -
    -
    -
    -

    The functools moduleΒΆ

    -

    The functools module in Python 2.5 contains some higher-order -functions. A higher-order function takes one or more functions as -input and returns a new function. The most useful tool in this module -is the partial() function.

    -

    For programs written in a functional style, you’ll sometimes want to -construct variants of existing functions that have some of the -parameters filled in. Consider a Python function f(a, b, c); you -may wish to create a new function g(b, c) that’s equivalent to -f(1, b, c); you’re filling in a value for one of f()‘s parameters. -This is called “partial function application”.

    -

    The constructor for partial takes the arguments (function, arg1, -arg2, ... kwarg1=value1, kwarg2=value2). The resulting object is -callable, so you can just call it to invoke function with the -filled-in arguments.

    -

    Here’s a small but realistic example:

    -
    import functools
    -
    -def log (message, subsystem):
    -    "Write the contents of 'message' to the specified subsystem."
    -    print '%s: %s' % (subsystem, message)
    -    ...
    -
    -server_log = functools.partial(log, subsystem='server')
    -server_log('Unable to open socket')
    -
    -
    -
    -
    -

    The operator moduleΒΆ

    -

    The operator module was mentioned earlier. It contains a set of -functions corresponding to Python’s operators. These functions -are often useful in functional-style code because they save you -from writing trivial functions that perform a single operation.

    -

    Some of the functions in this module are:

    -
      -
    • Math operations: add(), sub(), mul(), div(), floordiv(), -abs(), ...
    • -
    • Logical operations: not_(), truth().
    • -
    • Bitwise operations: and_(), or_(), invert().
    • -
    • Comparisons: eq(), ne(), lt(), le(), gt(), and ge().
    • -
    • Object identity: is_(), is_not().
    • -
    -

    Consult the operator module’s documentation for a complete -list.

    -
    -
    -

    The functional moduleΒΆ

    -

    Collin Winter’s functional module -provides a number of more -advanced tools for functional programming. It also reimplements -several Python built-ins, trying to make them more intuitive to those -used to functional programming in other languages.

    -

    This section contains an introduction to some of the most important -functions in functional; full documentation can be found at the -project’s website.

    -

    compose(outer, inner, unpack=False)

    -

    The compose() function implements function composition. -In other words, it returns a wrapper around the outer and inner callables, such -that the return value from inner is fed directly to outer. That is,

    -
    >>> def add(a, b):
    -...     return a + b
    -...
    ->>> def double(a):
    -...     return 2 * a
    -...
    ->>> compose(double, add)(5, 6)
    -22
    -
    -
    -

    is equivalent to

    -
    >>> double(add(5, 6))
    -22
    -
    -
    -

    The unpack keyword is provided to work around the fact that Python functions are not always -fully curried. -By default, it is expected that the inner function will return a single object and that the outer -function will take a single argument. Setting the unpack argument causes compose to expect a -tuple from inner which will be expanded before being passed to outer. Put simply,

    -
    compose(f, g)(5, 6)
    -
    -
    -

    is equivalent to:

    -
    f(g(5, 6))
    -
    -
    -

    while

    -
    compose(f, g, unpack=True)(5, 6)
    -
    -
    -

    is equivalent to:

    -
    f(*g(5, 6))
    -
    -
    -

    Even though compose() only accepts two functions, it’s trivial to -build up a version that will compose any number of functions. We’ll -use reduce(), compose() and partial() (the last of which -is provided by both functional and functools).

    -
    from functional import compose, partial
    -
    -multi_compose = partial(reduce, compose)
    -
    -
    -

    We can also use map(), compose() and partial() to craft a -version of "".join(...) that converts its arguments to string:

    -
    from functional import compose, partial
    -
    -join = compose("".join, partial(map, str))
    -
    -
    -

    flip(func)

    -

    flip() wraps the callable in func and -causes it to receive its non-keyword arguments in reverse order.

    -
    >>> def triple(a, b, c):
    -...     return (a, b, c)
    -...
    ->>> triple(5, 6, 7)
    -(5, 6, 7)
    ->>>
    ->>> flipped_triple = flip(triple)
    ->>> flipped_triple(5, 6, 7)
    -(7, 6, 5)
    -
    -
    -

    foldl(func, start, iterable)

    -

    foldl() takes a binary function, a starting value (usually some kind of ‘zero’), and an iterable. -The function is applied to the starting value and the first element of the list, then the result of -that and the second element of the list, then the result of that and the third element of the list, -and so on.

    -

    This means that a call such as:

    -
    foldl(f, 0, [1, 2, 3])
    -
    -
    -

    is equivalent to:

    -
    f(f(f(0, 1), 2), 3)
    -
    -
    -

    foldl() is roughly equivalent to the following recursive function:

    -
    def foldl(func, start, seq):
    -    if len(seq) == 0:
    -        return start
    -
    -    return foldl(func, func(start, seq[0]), seq[1:])
    -
    -
    -

    Speaking of equivalence, the above foldl call can be expressed in terms of the built-in reduce like -so:

    -
    reduce(f, [1, 2, 3], 0)
    -
    -
    -

    We can use foldl(), operator.concat() and partial() to -write a cleaner, more aesthetically-pleasing version of Python’s -"".join(...) idiom:

    -
    from functional import foldl, partial
    -from operator import concat
    -
    -join = partial(foldl, concat, "")
    -
    -
    -
    -
    -

    Revision History and AcknowledgementsΒΆ

    -

    The author would like to thank the following people for offering -suggestions, corrections and assistance with various drafts of this -article: Ian Bicking, Nick Coghlan, Nick Efford, Raymond Hettinger, -Jim Jewett, Mike Krell, Leandro Lameiro, Jussi Salmela, -Collin Winter, Blake Winton.

    -

    Version 0.1: posted June 30 2006.

    -

    Version 0.11: posted July 1 2006. Typo fixes.

    -

    Version 0.2: posted July 10 2006. Merged genexp and listcomp -sections into one. Typo fixes.

    -

    Version 0.21: Added more references suggested on the tutor mailing list.

    -

    Version 0.30: Adds a section on the functional module written by -Collin Winter; adds short section on the operator module; a few other -edits.

    -
    -
    -

    ReferencesΒΆ

    -
    -

    GeneralΒΆ

    -

    Structure and Interpretation of Computer Programs, by -Harold Abelson and Gerald Jay Sussman with Julie Sussman. -Full text at http://mitpress.mit.edu/sicp/. -In this classic textbook of computer science, chapters 2 and 3 discuss the -use of sequences and streams to organize the data flow inside a -program. The book uses Scheme for its examples, but many of the -design approaches described in these chapters are applicable to -functional-style Python code.

    -

    http://www.defmacro.org/ramblings/fp.html: A general -introduction to functional programming that uses Java examples -and has a lengthy historical introduction.

    -

    http://en.wikipedia.org/wiki/Functional_programming: -General Wikipedia entry describing functional programming.

    -

    http://en.wikipedia.org/wiki/Coroutine: -Entry for coroutines.

    -

    http://en.wikipedia.org/wiki/Currying: -Entry for the concept of currying.

    -
    -
    -

    Python-specificΒΆ

    -

    http://gnosis.cx/TPiP/: -The first chapter of David Mertz’s book Text Processing in Python -discusses functional programming for text processing, in the section titled -“Utilizing Higher-Order Functions in Text Processing”.

    -

    Mertz also wrote a 3-part series of articles on functional programming -for IBM’s DeveloperWorks site; see -part 1, -part 2, and -part 3,

    -
    -
    -

    Python documentationΒΆ

    -

    http://docs.python.org/lib/module-itertools.html: -Documentation for the itertools module.

    -

    http://docs.python.org/lib/module-operator.html: -Documentation for the operator module.

    -

    http://www.python.org/dev/peps/pep-0289/: -PEP 289: “Generator Expressions”

    -

    http://www.python.org/dev/peps/pep-0342/ -PEP 342: “Coroutines via Enhanced Generators” describes the new generator -features in Python 2.5.

    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    -
    - - - - - \ No newline at end of file diff --git a/gh-pages/build/Pygments/tests/examplefiles/jinjadesignerdoc.html b/gh-pages/build/Pygments/tests/examplefiles/jinjadesignerdoc.html deleted file mode 100644 index d896309..0000000 --- a/gh-pages/build/Pygments/tests/examplefiles/jinjadesignerdoc.html +++ /dev/null @@ -1,892 +0,0 @@ - - - - - - - - - - Designer Documentation — IPython - - - - - - - - - - - - - -
    -
    - - -
    - Install Β· -Docs Β· -Videos Β· -Notebook Viewer Β· -News Β· -Cite Β· -Donate -
    -
    -
    - -
    -
    - - -
    -
    -
    -
    Loading
    - - - - -
    -
    -

    Versions

    - -

    Stable

    - 1.0 – August 2013
    - Install -
    - -

    Development

    - 2.0.dev
    - Github -
    - -
    - - - - -
    -

    Notebook Viewer

    - -Share your notebooks - -
    - - - -
    -
    - -
    -

    Community

    - - - -
    - - - - - -
    - -
    - - -
    -

    Book

    - - - -
    - - - - -
    - - -
    -
    -
    - -
    - -
    -
    -
    - -
    -

    Designer DocumentationΒΆ

    -

    This part of the Jinja documentaton is meant for template designers.

    -
    -

    BasicsΒΆ

    -

    The Jinja template language is designed to strike a balance between content -and application logic. Nevertheless you can use a python like statement -language. You don’t have to know how Python works to create Jinja templates, -but if you know it you can use some additional statements you may know from -Python.

    -

    Here is a small example template:

    -
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    -<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    -<head>
    -    <title>My Webpage</title>
    -</head>
    -<body>
    -    <ul id="navigation">
    -    {% for item in navigation %}
    -        <li><a href="{{ item.href|e }}">{{ item.caption|e }}</a></li>
    -    {% endfor %}
    -    </ul>
    -
    -    <h1>My Webpage</h1>
    -    {{ variable }}
    -</body>
    -</html>
    -
    -
    -

    This covers the default settings. The application developer might have changed -the syntax from {% foo %} to <% foo %> or something similar. This -documentation just covers the default values.

    -

    A variable looks like {{ foobar }} where foobar is the variable name. Inside -of statements ({% some content here %}) variables are just normal names -without the braces around it. In fact {{ foobar }} is just an alias for -the statement {% print foobar %}.

    -

    Variables are coming from the context provided by the application. Normally there -should be a documentation regarding the context contents but if you want to know -the content of the current context, you can add this to your template:

    -
    <pre>{{ debug()|e }}</pre>
    -
    -
    -

    A context isn’t flat which means that each variable can has subvariables, as long -as it is representable as python data structure. You can access attributes of -a variable using the dot and bracket operators. The following examples show -this:

    -
    {{ user.username }}
    -    is the same as
    -{{ user['username'] }}
    -    you can also use a variable to access an attribute:
    -{{ users[current_user].username }}
    -    If you have numerical indices you have to use the [] syntax:
    -{{ users[0].username }}
    -
    -
    -
    -
    -

    FiltersΒΆ

    -

    In the examples above you might have noticed the pipe symbols. Pipe symbols tell -the engine that it has to apply a filter on the variable. Here is a small example:

    -
    {{ variable|replace('foo', 'bar')|escape }}
    -
    -
    -

    If you want, you can also put whitespace between the filters.

    -

    This will look for a variable variable, pass it to the filter replace -with the arguments 'foo' and 'bar', and pass the result to the filter -escape that automatically XML-escapes the value. The e filter is an alias for -escape. Here is the complete list of supported filters:

    -

    [[list_of_filters]]

    -
    -

    note

    -

    Filters have a pretty low priority. If you want to add fitered values -you have to put them into parentheses. The same applies if you want to access -attributes:

    -
    correct:
    -    {{ (foo|filter) + (bar|filter) }}
    -wrong:
    -    {{ foo|filter + bar|filter }}
    -
    -correct:
    -    {{ (foo|filter).attribute }}
    -wrong:
    -    {{ foo|filter.attribute }}
    -
    -
    -
    -
    -
    -

    TestsΒΆ

    -

    You can use the is operator to perform tests on a value:

    -
    {{ 42 is numeric }} -> true
    -{{ "foobar" is numeric }} -> false
    -{{ 'FOO' is upper }} -> true
    -
    -
    -

    These tests are especially useful when used in if conditions.

    -

    [[list_of_tests]]

    -
    -
    -

    Global FunctionsΒΆ

    -

    Test functions and filter functions live in their own namespace. Global -functions not. They behave like normal objects in the context. Beside the -functions added by the application or framewhere there are two functions -available per default:

    -

    range

    -
    -
    Works like the python range function just that it doesn’t support -ranges greater than 1000000.
    -

    debug

    -
    -
    Function that outputs the contents of the context.
    -
    -
    -

    LoopsΒΆ

    -

    To iterate over a sequence, you can use the for loop. It basically looks like a -normal Python for loop and works pretty much the same:

    -
    <h1>Members</h1>
    -<ul>
    -{% for user in users %}
    -  <li>{{ loop.index }} / {{ loop.length }} - {{ user.username|escape }}</li>
    -{% else %}
    -  <li><em>no users found</em></li>
    -{% endfor %}
    -</ul>
    -
    -
    -

    Important Contrary to Python is the optional else block only -executed if there was no iteration because the sequence was empty.

    -

    Inside of a for loop block you can access some special variables:

    - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    VariableDescription
    loop.indexThe current iteration of the loop.
    loop.index0The current iteration of the loop, -starting counting by 0.
    loop.revindexThe number of iterations from the end -of the loop.
    loop.revindex0The number of iterations from the end -of the loop, starting counting by 0.
    loop.firstTrue if first iteration.
    loop.lastTrue if last iteration.
    loop.evenTrue if current iteration is even.
    loop.oddTrue if current iteration is odd.
    loop.lengthTotal number of items in the sequence.
    loop.parentThe context of the parent loop.
    -

    Loops also support recursion. Let’s assume you have a sitemap where each item -might have a number of child items. A template for that could look like this:

    -
    <h1>Sitemap
    -<ul id="sitemap">
    -{% for item in sitemap recursive %}
    -  <li><a href="{{ item.url|e }}">{{ item.title|e }}</a>
    -  {% if item.children %}<ul>{{ loop(item.children) }}</ul>{% endif %}</li>
    -{% endfor %}
    -</ul>
    -
    -
    -

    What happens here? Basically the first thing that is different to a normal -loop is the additional recursive modifier in the for-loop declaration. -It tells the template engine that we want recursion. If recursion is enabled -the special loop variable is callable. If you call it with a sequence it will -automatically render the loop at that position with the new sequence as argument.

    -
    -
    -

    CyclingΒΆ

    -

    Sometimes you might want to have different text snippets for each row in a list, -for example to have alternating row colors. You can easily do this by using the -{% cycle %} tag:

    -
    <ul id="messages">
    -{% for message in messages %}
    -  <li class="{% cycle 'row1', 'row2' %}">{{ message|e }}</li>
    -{% endfor %}
    -</ul>
    -
    -
    -

    Each time Jinja encounters a cycle tag it will cycle through the list -of given items and return the next one. If you pass it one item jinja assumes -that this item is a sequence from the context and uses this:

    -
    <li style="color: {% cycle rowcolors %}">...</li>
    -
    -
    -
    -
    -

    ConditionsΒΆ

    -

    Jinja supports Python-like if / elif / else constructs:

    -
    {% if user.active %}
    -    user {{ user.name|e }} is active.
    -{% elif user.deleted %}
    -    user {{ user.name|e }} was deleted some time ago.
    -{% else %}
    -    i don't know what's wrong with {{ user.username|e }}
    -{% endif %}
    -
    -
    -

    If the user is active the first block is rendered. If not and the user was -deleted the second one, in all other cases the third one.

    -

    You can also use comparison operators:

    -
    {% if amount < 0 %}
    -    <span style="color: red">{{ amount }}</span>
    -{% else %}
    -    <span style="color: black">{{ amount }}</span>
    -{% endif %}
    -
    -
    -
    -

    Note

    -

    Of course you can use or / and and parentheses to create more complex -conditions, but usually the logic is already handled in the application and -you don’t have to create such complex constructs in the template code. However -in some situations it might be a good thing to have the abilities to create -them.

    -
    -
    -
    -

    OperatorsΒΆ

    -

    Inside {{ variable }} blocks, if conditions and many other parts you can -can use expressions. In expressions you can use any of the following operators:

    -
    -
    ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    +add the right operand to the left one. -{{ 1 + 2 }} would return 3.
    -subtract the right operand from the left one. -{{ 1 - 1 }} would return 0.
    /divide the left operand by the right one. -{{ 1 / 2 }} would return 0.5.
    *multiply the left operand with the right one. -{{ 2 * 2 }} would return 4.
    **raise the left operand to the power of the right -operand. {{ 2**3 }} would return 8.
    inperform sequence membership test. {{ 1 in [1,2,3] }} would -return true.
    isperform a test on the value. See the section about -tests for more information.
    |apply a filter on the value. See the section about -filters for more information.
    andreturn true if the left and the right operand is true.
    orreturn true if the left or the right operand is true.
    notnegate a statement (see below)
    ()call a callable: {{ user.get_username() }}. Inside of the -parentheses you can use variables: {{ user.get(username) }}.
    -
    -

    Note that there is no support for any bit operations or something similar.

    -
      -
    • special note regarding not: The is and in operators support negation -using an infix notation too: foo is not bar and foo not in bar -instead of not foo is bar and not foo in bar. All other expressions -require a prefix notation: not (foo and bar).
    • -
    -
    -
    -

    Boolean ValuesΒΆ

    -

    In If-Conditions Jinja performs a boolean check. All empty values (eg: empty -lists [], empty dicts {} etc) evaluate to false. Numbers that are -equal to 0/0.00 are considered false too. The boolean value of other -objects depends on the behavior the application developer gave it. Usually -items are true.

    -

    Here some examples that should explain it:

    -
    {% if [] %}
    -    will always be false because it's an empty list
    -
    -{% if {} %}
    -    false too.
    -
    -{% if ['foo'] %}
    -    this is true. Because the list is not empty.
    -
    -{% if "foobar" %}
    -    this is also true because the string is not empty.
    -
    -
    -
    -
    -

    SlicingΒΆ

    -

    Some objects support slicing operations. For example lists:

    -
    {% for item in items[:5] %}
    -    This will only iterate over the first 5 items of the list
    -
    -{% for item in items[5:10] %}
    -    This will only iterate from item 5 to 10.
    -
    -{% for item in items[:10:2] %}
    -    This will only yield items from start to ten and only returing
    -    even items.
    -
    -
    -

    For more informations about slicing have a look at the slicing chapter -in the “Dive into Python” e-book.

    -
    -
    -

    MacrosΒΆ

    -

    If you want to use a partial template in more than one place, you might want to -create a macro from it:

    -
    {% macro show_user user %}
    -  <h1>{{ user.name|e }}</h1>
    -  <div class="test">
    -    {{ user.description }}
    -  </div>
    -{% endmacro %}
    -
    -
    -

    Now you can use it from everywhere in the code by passing it an item:

    -
    {% for user in users %}
    -    {{ show_user(user) }}
    -{% endfor %}
    -
    -
    -

    You can also specify more than one value:

    -
    {% macro show_dialog title, text %}
    -  <div class="dialog">
    -    <h1>{{ title|e }}</h1>
    -    <div class="test">{{ text|e }}</div>
    -  </div>
    -{% endmacro %}
    -
    -{{ show_dialog('Warning', 'something went wrong i guess') }}
    -
    -
    -
    -
    -

    InheritanceΒΆ

    -

    The most powerful part of Jinja is template inheritance. Template inheritance -allows you to build a base “skeleton” template that contains all the common -elements of your site and defines blocks that child templates can override.

    -

    Sounds complicated but is very basic. It’s easiest to understand it by starting -with an example.

    -
    -

    Base TemplateΒΆ

    -

    This template, which we’ll call base.html, defines a simple HTML skeleton -document that you might use for a simple two-column page. It’s the job of -“child” templates to fill the empty blocks with content:

    -
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    -<html xmlns="http://www.w3.org/1999/xhtml">
    -<head>
    -  <link rel="stylesheet" href="style.css" />
    -  <title>{% block title %}{% endblock %} - My Webpage</title>
    -  {% block html_head %}{% endblock %}
    -</head>
    -<body>
    -  <div id="content">
    -    {% block content %}{% endblock %}
    -  </div>
    -
    -  <div id="footer">
    -    {% block footer %}
    -    &copy; Copyright 2006 by <a href="http://mydomain.tld">myself</a>.
    -    {% endblock %}
    -  </div>
    -</body>
    -
    -
    -

    In this example, the {% block %} tags define four blocks that child templates -can fill in. All the block tag does is to tell the template engine that a -child template may override those portions of the template.

    -
    -
    -

    Child TemplateΒΆ

    -

    A child template might look like this:

    -
    {% extends "base.html" %}
    -{% block title %}Index{% endblock %}
    -
    -{% block html_head %}
    -  <style type="text/css">
    -    .important {
    -      color: #336699;
    -    }
    -  </style>
    -{% endblock %}
    -
    -{% block content %}
    -    <h1>Index</h1>
    -    <p class="important">
    -      Welcome on my awsome homepage.
    -    </p>
    -{% endblock %}
    -
    -
    -

    The {% extends %} tag is the key here. It tells the template engine that -this template “extends” another template. When the template system evaluates -this template, first it locates the parent.

    -

    The filename of the template depends on the template loader. For example the -FileSystemLoader allows you to access other templates by giving the -filename. You can access templates in subdirectories with an slash:

    -
    {% extends "layout/default.html" %}
    -
    -
    -

    But this behavior can depend on the application using Jinja.

    -

    Note that since the child template didn’t define the footer block, the -value from the parent template is used instead.

    -
    -

    Note

    -

    You can’t define multiple {% block %} tags with the same name in the -same template. This limitation exists because a block tag works in “both” -directions. That is, a block tag doesn’t just provide a hole to fill - it -also defines the content that fills the hole in the parent. If there were -two similarly-named {% block %} tags in a template, that template’s -parent wouldn’t know which one of the blocks’ content to use.

    -
    -
    -
    -
    -

    Template InclusionΒΆ

    -

    You can load another template at a given position using {% include %}. -Usually it’s a better idea to use inheritance but if you for example want to -load macros, include works better than extends:

    -
    {% include "myhelpers.html" %}
    -{{ my_helper("foo") }}
    -
    -
    -

    If you define a macro called my_helper in myhelpers.html, you can now -use it from the template as shown above.

    -
    -
    -

    Filtering BlocksΒΆ

    -

    Sometimes it could be a good idea to filter a complete block of text. For -example, if you want to escape some html code:

    -
    {% filter escape %}
    -    <html>
    -      <code>goes here</code>
    -    </html>
    -{% endfilter %}
    -
    -
    -

    Of course you can chain filters too:

    -
    {% filter lower|escape %}
    -    <B>SOME TEXT</B>
    -{% endfilter %}
    -
    -
    -

    returns "&lt;b&gt;some text&lt;/b&gt;".

    -
    -
    -

    Defining VariablesΒΆ

    -

    You can also define variables in the namespace using the {% set %} tag:

    -
    {% set foo = 'foobar' %}
    -{{ foo }}
    -
    -
    -

    This should ouput foobar.

    -
    -
    -

    ScopesΒΆ

    -

    Jinja has multiple scopes. A scope is something like a new transparent foil on -a stack of foils. You can only write to the outermost foil but read all of them -since you can look through them. If you remove the top foil all data on that -foil disappears. Some tags in Jinja add a new layer to the stack. Currently -these are block, for, macro and filter. This means that variables and -other elements defined inside a macro, loop or some of the other tags listed -above will be only available in that block. Here an example:

    -
    {% macro angryhello name %}
    -  {% set angryname = name|upper %}
    -  Hello {{ name }}. Hello {{ name }}!
    -  HELLO {{ angryname }}!!!!!!111
    -{% endmacro %}
    -
    -
    -

    The variable angryname just exists inside the macro, not outside it.

    -

    Defined macros appear on the context as variables. Because of this, they are -affected by the scoping too. A macro defined inside of a macro is just available -in those two macros (the macro itself and the macro it’s defined in). For set -and macro two additional rules exist: If a macro is defined in an extended -template but outside of a visible block (thus outside of any block) will be -available in all blocks below. This allows you to use include statements to -load often used macros at once.

    -
    -
    -

    Undefined VariablesΒΆ

    -

    If you have already worked with python you probably know about the fact that -undefined variables raise an exception. This is different in Jinja. There is a -special value called undefined that represents values that do not exist.

    -

    This special variable works complete different from any variables you maybe -know. If you print it using {{ variable }} it will not appear because it’s -literally empty. If you try to iterate over it, it will work. But no items -are returned. Comparing this value to any other value results in false. -Even if you compare it to itself:

    -
    {{ undefined == undefined }}
    -    will return false. Not even undefined is undefined :)
    -    Use `is defined` / `is not defined`:
    -
    -{{ undefined is not defined }}
    -    will return true.
    -
    -
    -

    There are also some additional rules regarding this special value. Any -mathematical operators (+, -, *, /) return the operand -as result:

    -
    {{ undefined + "foo" }}
    -    returns "foo"
    -
    -{{ undefined - 42 }}
    -    returns 42. Note: not -42!
    -
    -
    -

    In any expression undefined evaluates to false. It has no length, all -attribute calls return undefined, calling too:

    -
    {{ undefined.attribute().attribute_too[42] }}
    -    still returns `undefined`.
    -
    -
    -
    -
    -

    EscapingΒΆ

    -

    Sometimes you might want to add Jinja syntax elements into the template -without executing them. In that case you have quite a few possibilities.

    -

    For small parts this might be a good way:

    -
    {{ "{{ foo }} is variable syntax and {% foo %} is block syntax" }}
    -
    -
    -

    When you have multiple elements you can use the raw block:

    -
    {% raw %}
    -    Filtering blocks works like this in Jinja:
    -    {% filter escape %}
    -        <html>
    -          <code>goes here</code>
    -        </html>
    -    {% endfilter %}
    -{% endraw %}
    -
    -
    -
    -
    -

    Reserved KeywordsΒΆ

    -

    Jinja has some keywords you cannot use a variable names. This limitation -exists to make look coherent. Syntax highlighters won’t mess things up and -you will don’t have unexpected output.

    -

    The following keywords exist and cannot be used as identifiers:

    -
    -
    and, block, cycle, elif, else, endblock, endfilter, -endfor, endif, endmacro, endraw, endtrans, extends, filter, -for, if, in, include, is, macro, not, or, pluralize, -raw, recursive, set, trans
    -

    If you want to use such a name you have to prefix or suffix it or use -alternative names:

    -
    {% for macro_ in macros %}
    -    {{ macro_('foo') }}
    -{% endfor %}
    -
    -
    -

    If future Jinja releases add new keywords those will be “light” keywords which -means that they won’t raise an error for several releases but yield warnings -on the application side. But it’s very unlikely that new keywords will be -added.

    -
    -
    -

    InternationalizationΒΆ

    -

    If the application is configured for i18n, you can define translatable blocks -for translators using the trans tag or the special underscore function:

    -
    {% trans %}
    -    this is a translatable block
    -{% endtrans %}
    -
    -{% trans "This is a translatable string" %}
    -
    -{{ _("This is a translatable string") }}
    -
    -
    -

    The latter one is useful if you want translatable arguments for filters etc.

    -

    If you want to have plural forms too, use the pluralize block:

    -
    {% trans users=users %}
    -    One user found.
    -{% pluralize %}
    -    {{ users }} users found.
    -{% endtrans %}
    -
    -{% trans first=(users|first).username|escape, user=users|length %}
    -    one user {{ first }} found.
    -{% pluralize users %}
    -    {{ users }} users found, the first one is called {{ first }}.
    -{% endtrans %}
    -
    -
    -

    If you have multiple arguments, the first one is assumed to be the indicator (the -number that is used to determine the correct singular or plural form. If you -don’t have the indicator variable on position 1 you have to tell the pluralize -tag the correct variable name.

    -

    Inside translatable blocks you cannot use blocks or expressions (however you can -still use the raw block which will work as expected). The variable -print syntax ({{ variablename }}) is the only way to insert the variables -defined in the trans header. Filters must be applied in the header.

    -
    -

    note

    -

    Please make sure that you always use pluralize blocks where required. -Many languages have more complex plural forms than the English language.

    -

    Never try to workaround that issue by using something like this:

    -
    {% if count != 1 %}
    -    {{ count }} users found.
    -{% else %}
    -    one user found.
    -{% endif %}
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    -
    - - - - - \ No newline at end of file diff --git a/gh-pages/build/commando/CONTRIBUTING.html b/gh-pages/build/commando/CONTRIBUTING.html deleted file mode 100644 index ea309cd..0000000 --- a/gh-pages/build/commando/CONTRIBUTING.html +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - - - - - How do the pull requests get merged? — IPython - - - - - - - - - - - - - -
    -
    - - -
    - Install Β· -Docs Β· -Videos Β· -Notebook Viewer Β· -News Β· -Cite Β· -Donate -
    -
    -
    - -
    -
    - - -
    -
    -
    -
    Loading
    - - - - -
    -
    -

    Versions

    - -

    Stable

    - 1.0 – August 2013
    - Install -
    - -

    Development

    - 2.0.dev
    - Github -
    - -
    - - - - -
    -

    Notebook Viewer

    - -Share your notebooks - -
    - - - -
    -
    - -
    -

    Community

    - - - -
    - - - - - -
    - -
    - - -
    -

    Book

    - - - -
    - - - - -
    - - -
    -
    -
    - -
    - -
    -
    -
    - -

    tl;dr Good (code + tests + commit message) = Great Pull Request.

    -
    -
    -

    How do the pull requests get merged?ΒΆ

    -

    The following points are considered as part of merging pull requests after -it is deemed necessary.

    -
      -
    1. Is there an issue tagged in the commit?
    2. -
    3. Do the existing tests pass?
    4. -
    5. Are there new tests added to verify any new functionality / issue?
    6. -
    7. Is the authors list up to date?
    8. -
    9. Is the changelog updated?
    10. -
    11. Is the version updated?
    12. -
    13. Does this require any changes to the documentation?
    14. -
    -
    -
    -

    GuidelinesΒΆ

    -

    If the following guidelines are observed as much as possible, it will -immensely help in verifying and merging the pull requests.

    -
      -
    1. One pull request = One feature or One bug.
    2. -
    3. Always tag an issue in the commit. If an issue does -not exist for a feature or a bug, please add one.
    4. -
    5. Use topic / feature branches.
    6. -
    7. Make sure a test exists to verify the committed code. A -good way to think about it is: if these commits were reversed -and only the test were added back in, it ought to fail.
    8. -
    9. Make the commit message as verbose as possible.
    10. -
    11. Add yourself to Authors list and update your contribution.
    12. -
    13. Cross update Changelog list as well.
    14. -
    15. Update version.py and README.rst with a version in this format: -<version>-<yourusername><issuenumber>.
    16. -
    17. If the change was complicated and resulted in a lot of commits, -consider rebase -i to sqash and/or rearrange them to make it easier -to review.
    18. -
    19. Update the Readme.
    20. -
    -
    - - -
    -
    -
    -
    -
    -
    -
    - - - - - \ No newline at end of file diff --git a/gh-pages/build/commando/README.html b/gh-pages/build/commando/README.html deleted file mode 100644 index d3754d1..0000000 --- a/gh-pages/build/commando/README.html +++ /dev/null @@ -1,301 +0,0 @@ - - - - - - - - - - commando - argparse in style — IPython - - - - - - - - - - - - - -
    -
    - - -
    - Install Β· -Docs Β· -Videos Β· -Notebook Viewer Β· -News Β· -Cite Β· -Donate -
    -
    -
    - -
    -
    - - -
    -
    -
    -
    Loading
    - - - - -
    -
    -

    Versions

    - -

    Stable

    - 1.0 – August 2013
    - Install -
    - -

    Development

    - 2.0.dev
    - Github -
    - -
    - - - - -
    -

    Notebook Viewer

    - -Share your notebooks - -
    - - - -
    -
    - -
    -

    Community

    - - - -
    - - - - - -
    - -
    - - -
    -

    Book

    - - - -
    - - - - -
    - - -
    -
    -
    - -
    - -
    -
    -
    - -
    -

    commando - argparse in styleΒΆ

    -

    Version 0.3.2a

    -

    A simple wrapper for argparse that allows commands and arguments -to be defined declaratively using decorators. Note that this does -not support all the features of argparse yet.

    -

    Commando also bundles a few utilities that are useful when building -command line applications.

    -
    -

    ExampleΒΆ

    -

    Without commando:

    -
    def main():
    -    parser = argparse.ArgumentParser(description='hyde - a python static website generator',
    -                                  epilog='Use %(prog)s {command} -h to get help on individual commands')
    -    parser.add_argument('-v', '--version', action='version', version='%(prog)s ' + __version__)
    -    parser.add_argument('-s', '--sitepath', action='store', default='.', help="Location of the hyde site")
    -    subcommands = parser.add_subparsers(title="Hyde commands",
    -                                     description="Entry points for hyde")
    -    init_command = subcommands.add_parser('init', help='Create a new hyde site')
    -    init_command.set_defaults(run=init)
    -    init_command.add_argument('-t', '--template', action='store', default='basic', dest='template',
    -                     help='Overwrite the current site if it exists')
    -    init_command.add_argument('-f', '--force', action='store_true', default=False, dest='force',
    -                     help='Overwrite the current site if it exists')
    -    args = parser.parse_args()
    -    args.run(args)
    -
    -def init(self, params):
    -    print params.sitepath
    -    print params.template
    -    print params.overwrite
    -
    -
    -

    With commando:

    -
    class Engine(Application):
    -
    -    @command(description='hyde - a python static website generator',
    -            epilog='Use %(prog)s {command} -h to get help on individual commands')
    -    @param('-v', '--version', action='version', version='%(prog)s ' + __version__)
    -    @param('-s', '--sitepath', action='store', default='.', help="Location of the hyde site")
    -    def main(self, params): pass
    -
    -    @subcommand('init', help='Create a new hyde site')
    -    @param('-t', '--template', action='store', default='basic', dest='template',
    -            help='Overwrite the current site if it exists')
    -    @param('-f', '--force', action='store_true', default=False, dest='overwrite',
    -            help='Overwrite the current site if it exists')
    -    def init(self, params):
    -        print params.sitepath
    -        print params.template
    -        print params.overwrite
    -
    -
    -
    - -
    - - -
    -
    -
    -
    -
    -
    -
    - - - - - \ No newline at end of file diff --git a/index.html b/index.html index 415f4fe..45e9999 100644 --- a/index.html +++ b/index.html @@ -52,9 +52,9 @@ Install Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate @@ -103,7 +103,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -191,21 +191,21 @@

    For developers

    -
    @@ -270,11 +270,10 @@

    Announcementsgrant which is funding the bulk of the work, as well as our roadmap for -achieving the grant’s objectives. -Read on for more details. +grant which is funding the bulk of the work, as well as +our roadmap for achieving the grant’s objectives. Read on for more details.
  • Sloan Foundation grant: IPython has been awarded a $1.15 million grant -from the Alfred P. Sloan Foundation. This will +from the Alfred P. Sloan Foundation. This will support several core developers, allowing them to focus on building the IPython Notebook into a tool for open, collaborative, reproducible scientific computing. We’ll also be bringing developers together for two sprints each @@ -290,43 +289,6 @@

    Announcementsready-made citation entry.

    - -
    -

    SupportΒΆ

    -

    We gratefully acknowledge the support we’ve received over the years from the -following sources:

    -
      -
    • In December 2012, IPython was awarded a $1.15 million grant from the Alfred P. Sloan Foundation that will fund -the core team for the 2012-2013 period.
    • -
    • Since 2011, we have had support from the US DoD High Performance Computing -Modernization Program (HPCMP), which funds several IPython developers in -collaboration with the US Army Engineer Research and Development Center -(ERDC) that provides computing resources and support from the staff.
    • -
    • Enthought Inc has supported IPython since its beginning in multiple forms, -including –but not limited to– the funding of our Qt console, hosting our -website for many years, the continued hosting of our mailing lists, and the -inclusion of IPython in the Enthought Python Distribution.
    • -
    • NiPy/NIH: funding via the NiPy project (NIH grant 5R01MH081909-02) supported -our 2009 refactoring work.
    • -
    • Sage/NSF: funding via the grant Sage: Unifying Mathematical Software for -Scientists, Engineers, and Mathematicians (NSF grant -DMS-1015114) supported our Seattle 2011 developer meeting.
    • -
    • Microsoft’s team working on Python Tools for Visual Studio developed the integraton of IPython into the -Python plugin for Visual Studio 2010.
    • -
    • Tech-X Corporation supported in 2008 the development -of our parallel computing tools.
    • -
    • Google Summer of Code: in 2005 and 2010 we’ve had GSoC support for prototypes -in several areas of the project.
    • -
    • The Ohio Supercomputer Center and the Department of Defense High Performance -Computing Modernization Program (HPCMP), for sponsoring work in 2009 on our -parallel computing tools.
    • -
    • Bivio Software hosted an IPython sprint in 2006, in -addition to their support of the Front Range Pythoneers group in Boulder, CO.
    • -
    • GitHub hosts our development workflow and -documentation.
    • -
    • ShiningPanda gives us a free continuous -integration service.
    • -
    diff --git a/install.html b/install.html index ad3291d..ba2d327 100644 --- a/install.html +++ b/install.html @@ -39,7 +39,7 @@ - + @@ -53,9 +53,9 @@ Install Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate @@ -104,7 +104,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -192,21 +192,21 @@

    For developers

    -
    @@ -228,13 +228,12 @@

    Installing IPython

    Note

    -

    We have just made a new release, and it will take a few days to appear -in Anaconda, EPD and Linux distributions. To get the latest -version, see Downloads.

    +

    We have just made a new release, and it will take some time to appear in +Anaconda, Enthought Canopy and Linux distributions.

    Mac or Windows

    -

    1. Download and install Anaconda or the free edition of the Enthought Python Distribution -(EPD).

    +

    1. Download and install Anaconda or the +free edition of Enthought Canopy.

    1. Update IPython to the current version:
    @@ -244,7 +243,7 @@

    Installing IPython
    conda update conda
     conda update ipython
    -

    EPD:

    +

    Enthought Canopy:

    sudo enpkg enstaller
     sudo enpkg ipython
    @@ -254,7 +253,7 @@

    Installing IPython
    conda update conda
     conda update ipython
    -

    EPD:

    +

    Enthought Canopy:

    enpkg enstaller
     enpkg ipython
    diff --git a/links.txt b/links.txt new file mode 100644 index 0000000..89eeb9f --- /dev/null +++ b/links.txt @@ -0,0 +1,43 @@ +.. This (-*- rst -*-) format file contains commonly used link targets + and name substitutions. It may be included in many files, + therefore it should only contain link targets and name + substitutions. Try grepping for "^\.\. _" to find plausible + candidates for this list. + + NOTE: reST targets are + __not_case_sensitive__, so only one target definition is needed for + nipy, NIPY, Nipy, etc... + +.. +.. _grant: http://ipython.org/sloan-grant.html + +.. Python projects +.. _ipython: http://ipython.org +.. _numpy: http://numpy.scipy.org +.. _scipy: http://www.scipy.org +.. _scipy_conference: http://conference.scipy.org +.. _`ipython manual`: http://ipython.org/ipython-doc/stable/index.html +.. _matplotlib: http://matplotlib.org +.. _python: http://www.python.org +.. _sympy: http://code.google.com/p/sympy +.. _nipy: http://nipy.org +.. _sage: http://sagemath.org + +.. Other organizations +.. _Alfred P. Sloan Foundation: http://www.sloan.org +.. _Enthought inc: +.. _Enthought: http://www.enthought.co +.. _Enthought Python Distribution: http://www.enthought.com/products/epd.php +.. _numfocus: http://numfocus.org +.. _HPCMP: http://www.hpcmo.hpc.mil +.. _ERDC: http://www.erdc.usace.army.mil + + +.. Other tools and projects +.. _git: http://git-scm.com +.. _github: http://github.com + +.. Licenses +.. _BSD: http://www.opensource.org/licenses/bsd-license.php +.. _GPL: http://www.gnu.org/licenses/gpl.html +.. _LGPL: http://www.gnu.org/copyleft/lesser.html diff --git a/gh-pages/build/commando/AUTHORS.html b/microsoft-donation-2013.html similarity index 64% rename from gh-pages/build/commando/AUTHORS.html rename to microsoft-donation-2013.html index b241ee8..8f4ce38 100644 --- a/gh-pages/build/commando/AUTHORS.html +++ b/microsoft-donation-2013.html @@ -19,42 +19,42 @@ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); - Authors — IPython + Microsoft Corporation sponsors IPythhon — IPython - - - + + + - - - - - + + + + +
    -
    @@ -77,7 +77,7 @@ customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET); var options = new google.search.DrawOptions(); - options.enableSearchboxOnly("../../../searchresults.html"); + options.enableSearchboxOnly("searchresults.html"); customSearchControl.draw('cse-search-form', options); }, true); @@ -102,8 +102,8 @@

    Versions

    Stable

    - 1.0 – August 2013
    - Install + 1.1.0 – September 2013
    + Install

    Development

    @@ -190,21 +190,21 @@

    For developers

    -
    @@ -215,41 +215,12 @@

    Support IPython

    -
    -

    AuthorsΒΆ

    -
      -
    • Lakshmi Vyas

      -
        -
      • Maintainer.
      • -
      -
    • -
    • Brandon Philips

      -
        -
      • Clean up packaging issues.
          -
        • Use distribute to peek into the package to get the issue number. -{38e21c48680873fc7409effb654c0c733024e9e1}.
        • -
        • Get install_requires from the requirements.txt file. -{d8b29fa3fe2f0bdeeda91c445a9aea38b8fa5b70}.
        • -
        -
      • -
      -
    • -
    • Ben West

      -
        -
      • Allow parameterless subcommands and commands. (Pull #4).
      • -
      -
    • -
    • Julien Danjou

      -
        -
      • Support for nested subcommands. (Pull #7)
      • -
      -
    • -
    • fruch

      -
      -

      Use the parameters in the same order as provided. (Pulls #8)

      -
      -
    • -
    +
    +

    Microsoft Corporation sponsors IPythhonΒΆ

    +

    We are thrilled to announce that in August 2013, Microsoft has completed a +donation of $100,000 to sponsor IPython’s continued development. This donation +was received through NumFOCUS

    +

    IPython

    diff --git a/news.html b/news.html index 8eed53a..faec648 100644 --- a/news.html +++ b/news.html @@ -39,8 +39,8 @@ - - + +
    @@ -53,9 +53,9 @@ Install Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate
    @@ -104,7 +104,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -192,21 +192,21 @@

    For developers

    -
    diff --git a/notebook.html b/notebook.html index 1c44027..d1078ad 100644 --- a/notebook.html +++ b/notebook.html @@ -39,8 +39,8 @@ - - + +
    @@ -53,9 +53,9 @@ Install Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate
    @@ -104,7 +104,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -192,21 +192,21 @@

    For developers

    -
    diff --git a/objects.inv b/objects.inv index 7aef93b78519afee3140918f3f7411bbbac8aa74..9275ab1888cfe30fb56464b4b47d93b8edf3b37d 100644 GIT binary patch delta 313 zcmV-90mlBG0;L0xb$@k|K~KXl42AFc6_(gFh{28PCeRK;lZv=bS>v@4sa+-MVE>+^ zSt?q=Eqc%2vz^3SR&;Efq5wYVXRA(VL9W3kLypFM8#;UUOMoh!;e`j%Di|hsO|oc^ z3~BtHClxivz%HGI=Gq^XwMT~*l}A5kqCIp-VNB0pB4i}wM1O3f0%vv*RVb>s7>&G$ z%UaG^!AGu8q@k)EBGt+VFFMwLOy6H+F>VX&Sq~PcJ-#SjhF&x@$+Pph LZCdgNJG1p?`#F_h delta 177 zcmV;i08am<1D*nqb$@M+O$)*>42JLh6#;jh;MJ>Mc2EWr?_CqRVwcETKlblM+6o)q z!kg#K6HDwE=?x*`-s_$`)H|>_-41c|8)&|>dO9QtOE6^#tKgal%?O>Dh}h^5gBk_@ zIPP;@7Flx=e0a(>loxx^xDq-JQF~vE$3m$P2qLMoCNQGEiy2Iq%d5&@X#mx+YRb diff --git a/presentation.html b/presentation.html index 6de6a6b..2ffca32 100644 --- a/presentation.html +++ b/presentation.html @@ -40,7 +40,7 @@ - +
    @@ -53,9 +53,9 @@ Install Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate
    @@ -104,7 +104,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -192,21 +192,21 @@

    For developers

    -
    diff --git a/pyreadline.html b/pyreadline.html index 0d3a0ff..be9fe02 100644 --- a/pyreadline.html +++ b/pyreadline.html @@ -39,7 +39,7 @@ - + @@ -53,9 +53,9 @@ Install Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate @@ -104,7 +104,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -192,21 +192,21 @@

    For developers

    -
    diff --git a/roadmap-announcement.html b/roadmap-announcement.html index 37b2120..4a6a2b9 100644 --- a/roadmap-announcement.html +++ b/roadmap-announcement.html @@ -39,8 +39,8 @@ - - + +
    @@ -53,9 +53,9 @@ Install Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate
    @@ -104,7 +104,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -192,21 +192,21 @@

    For developers

    -
    diff --git a/screenshots/index.html b/screenshots/index.html index 04f099a..503d67e 100644 --- a/screenshots/index.html +++ b/screenshots/index.html @@ -54,9 +54,9 @@ Install Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate @@ -105,7 +105,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -193,21 +193,21 @@

    For developers

    -
    diff --git a/search.html b/search.html index 9b66896..c10fc35 100644 --- a/search.html +++ b/search.html @@ -59,9 +59,9 @@ Install Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate @@ -110,7 +110,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -198,21 +198,21 @@

    For developers

    -
    diff --git a/searchresults.html b/searchresults.html index 1ecdf23..1498e41 100644 --- a/searchresults.html +++ b/searchresults.html @@ -39,8 +39,8 @@ - - + +
    @@ -53,9 +53,9 @@ Install Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate
    @@ -71,7 +71,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -159,21 +159,21 @@

    For developers

    -
    diff --git a/showmedo.html b/showmedo.html index 54b506f..9af248e 100644 --- a/showmedo.html +++ b/showmedo.html @@ -39,8 +39,8 @@ - - + +
    @@ -53,9 +53,9 @@ Install Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate
    @@ -104,7 +104,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -192,21 +192,21 @@

    For developers

    -
    diff --git a/sloan-grant.html b/sloan-grant.html index 1f1007e..6fb58bb 100644 --- a/sloan-grant.html +++ b/sloan-grant.html @@ -39,8 +39,8 @@ - - + +
    @@ -53,9 +53,9 @@ Install Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate
    @@ -104,7 +104,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -192,21 +192,21 @@

    For developers

    -
    @@ -218,7 +218,7 @@

    Support IPython

    -

    Sloan Foundation GrantΒΆ

    +

    Sloan Foundation GrantΒΆ

    We are pleased to announce that the IPython project has received a $1.15M grant from the Alfred P. Sloan foundation, that will support IPython development for the next two years (1/1/2013-12/31/2014). The grant, diff --git a/gh-pages/build/commando/CHANGELOG.html b/sponsors.html similarity index 50% rename from gh-pages/build/commando/CHANGELOG.html rename to sponsors.html index 8f8c578..faec318 100644 --- a/gh-pages/build/commando/CHANGELOG.html +++ b/sponsors.html @@ -19,42 +19,44 @@ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); - Version 0.3.2a — IPython + Sponsors — IPython - - - + + + - - - - - + + + + + + +

    -
    @@ -77,7 +79,7 @@ customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET); var options = new google.search.DrawOptions(); - options.enableSearchboxOnly("../../../searchresults.html"); + options.enableSearchboxOnly("searchresults.html"); customSearchControl.draw('cse-search-form', options); }, true); @@ -102,8 +104,8 @@

    Versions

    Stable

    - 1.0 – August 2013
    - Install + 1.1.0 – September 2013
    + Install

    Development

    @@ -190,21 +192,21 @@

    For developers

    -
    @@ -215,70 +217,54 @@

    Support IPython

    -
    -

    Version 0.3.2aΒΆ

    -
      -
    • Add load_python_object to load a python object using a qualified name.
    • -
    -
    -
    -

    Version 0.3.1aΒΆ

    -

    Thanks to `fruch :

    -
      -
    • Preserve the order of parameters in declaration.
    • -
    -
    -
    -

    Version 0.3aΒΆ

    -

    Thanks to Julien Danjou :

    -
      -
    • Add support for nested sub commands. -{0e26a6fe2571accb78d26318ab1b8dc65636d2b0}. (Pull #7)
    • -
    -
    -
    -

    Version 0.2.1aΒΆ

    -

    Thanks to Ben West :

    -
      -
    • Allow commands to have no params.
    • -
    -
    -
    -

    Version 0.2aΒΆ

    -
      -
    • Bundle various frequently used utilities with commando. -(ShellCommand, ConfigDict, autoprop and logging helpers). -{63525646bb366f4def3c5065a51a404b18269873}. (Pull #4)
    • -
    -
    -
    -

    Version 0.1.3aΒΆ

    -
      -
    • Commando must consume exceptions by default. Any exception should be -communicated in a friendly manner to the user via the parser or the -given logger. {0e26a6fe2571accb78d26318ab1b8dc65636d2b0}.
    • -
    -
    -
    -

    Version 0.1.2aΒΆ

    -

    Thanks to Brandon Philips :

    -
      -
    • Use distribute_setup.py.
    • -
    • Derive version from pkg_resources.
    • -
    • Add argparse as a dependency.
    • -
    +
    +

    SponsorsΒΆ

    +

    The following institutions support IPython with significant resources:

    +_images/sloan-logo.png +

    In December 2012, IPython was awarded a $1.15 million grant from the Alfred P. Sloan Foundation that will fund the +core team for the 2013-2014 period.

    +
    +

    ContributingΒΆ

    +

    If you would like to support the project by making a substantial or periodic +contribution, please contact us directly (ipython@gmail.com). All donations to +IPython are handled by NumFOCUS and are tax-deductible in the USA.

    +

    Individuals can also donate to IPython, and we are grateful for every +contribution!

    -
    -

    Version 0.1.1aΒΆ

    +
    +

    Other supportΒΆ

    +

    We gratefully acknowledge the support we’ve received over the years from the +following sources:

      -
    • Add more decorators that map to argparse parameters.
    • +
    • Since 2011, we have had support from the US DoD High Performance Computing +Modernization Program (HPCMP), which funds several IPython developers in +collaboration with the US Army Engineer Research and Development Center +(ERDC) that provides computing resources and support from the staff.
    • +
    • Enthought Inc has supported IPython since its beginning in multiple forms, +including –but not limited to– the funding of our Qt console, hosting our +website for many years, the continued hosting of our mailing lists, and the +inclusion of IPython in the Enthought Python Distribution.
    • +
    • NiPy/NIH: funding via the NiPy project (NIH grant 5R01MH081909-02) supported +our 2009 refactoring work.
    • +
    • Sage/NSF: funding via the grant Sage: Unifying Mathematical Software for +Scientists, Engineers, and Mathematicians (NSF grant +DMS-1015114) supported our Seattle 2011 developer meeting.
    • +
    • Microsoft’s team working on Python Tools for Visual Studio developed the integraton of IPython into the +Python plugin for Visual Studio 2010.
    • +
    • Tech-X Corporation supported in 2008 the development +of our parallel computing tools.
    • +
    • Google Summer of Code: in 2005 and 2010 we’ve had GSoC support for prototypes +in several areas of the project.
    • +
    • The Ohio Supercomputer Center and the Department of Defense High Performance +Computing Modernization Program (HPCMP), for sponsoring work in 2009 on our +parallel computing tools.
    • +
    • Bivio Software hosted an IPython sprint in 2006, in +addition to their support of the Front Range Pythoneers group in Boulder, CO.
    • +
    • GitHub hosts our development workflow and documentation.
    • +
    • ShiningPanda gives us a free continuous +integration service.
    -
    -

    Version 0.1aΒΆ

    -
      -
    • Create a simple meta programmed wrapper around argparse.
    • -
    diff --git a/usersurvey2011.html b/usersurvey2011.html index 500db92..432c146 100644 --- a/usersurvey2011.html +++ b/usersurvey2011.html @@ -40,7 +40,7 @@ - +
    @@ -53,9 +53,9 @@ Install Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate
    @@ -104,7 +104,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -192,21 +192,21 @@

    For developers

    -
    diff --git a/videos.html b/videos.html index f1afc16..52ede0e 100644 --- a/videos.html +++ b/videos.html @@ -53,9 +53,9 @@ Install Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate
    @@ -104,7 +104,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -192,21 +192,21 @@

    For developers

    -
    diff --git a/whatsnew082.html b/whatsnew082.html index ea4ba09..6e95e4c 100644 --- a/whatsnew082.html +++ b/whatsnew082.html @@ -53,9 +53,9 @@ Install Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate @@ -104,7 +104,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -192,21 +192,21 @@

    For developers

    -
    diff --git a/whatsnew083.html b/whatsnew083.html index 16bb45d..2d54956 100644 --- a/whatsnew083.html +++ b/whatsnew083.html @@ -39,7 +39,6 @@ - @@ -53,9 +52,9 @@ Install Β· Docs Β· Videos Β· -Notebook Viewer Β· News Β· Cite Β· +Sponsors Β· Donate @@ -104,7 +103,7 @@

    Versions

    Stable

    - 1.0 – August 2013
    + 1.1.0 – September 2013
    Install
    @@ -192,21 +191,21 @@

    For developers

    -
    From 25a5b9864a1593d203889ca0c09147ee34dfef7d Mon Sep 17 00:00:00 2001 From: Fernando Perez Date: Thu, 12 Sep 2013 01:54:06 -0700 Subject: [PATCH 007/146] Updated website (automated commit) --- _sources/donate.txt | 2 -- _sources/sponsors.txt | 4 ++-- donate.html | 2 +- objects.inv | Bin 421 -> 397 bytes sponsors.html | 4 ++-- 5 files changed, 5 insertions(+), 7 deletions(-) diff --git a/_sources/donate.txt b/_sources/donate.txt index 41d3a9a..891d483 100644 --- a/_sources/donate.txt +++ b/_sources/donate.txt @@ -1,5 +1,3 @@ -.. _donate: - ============================= Support IPython Development ============================= diff --git a/_sources/sponsors.txt b/_sources/sponsors.txt index 4fc5b8b..70344de 100644 --- a/_sources/sponsors.txt +++ b/_sources/sponsors.txt @@ -18,8 +18,8 @@ If you would like to support the project by making a substantial or periodic contribution, please contact us directly (ipython@gmail.com). All donations to IPython are handled by NumFOCUS_ and are tax-deductible in the USA. -Individuals can also :ref:`donate to IPython `, and we are grateful for every -contribution! +Individuals can also `donate to IPython `_, and we are grateful +for every contribution! Other support diff --git a/donate.html b/donate.html index f7cf563..e17ca05 100644 --- a/donate.html +++ b/donate.html @@ -218,7 +218,7 @@

    Support IPython

    -

    Support IPython DevelopmentΒΆ

    +

    Support IPython DevelopmentΒΆ

    IPython will always be 100% open source software, free for all to use and released under the liberal terms of the modified BSD license. But while the whole team does its best to work efficiently, and we actively try to find diff --git a/objects.inv b/objects.inv index 9275ab1888cfe30fb56464b4b47d93b8edf3b37d..ac695b7a8906d9ca847fe1ea29b549b299804e43 100644 GIT binary patch delta 288 zcmV+*0pI?m1C0Zac7IY$Ps1<_z2{e0V%H!BH?EsNI}A-4;#y^i*G5b2D$aoYd)j81 zXa%?Eefimn1U6LF(NF?O?m3tP2GC28fzTsy-=sF&{Q_V=yy1n<Z6 zIcEVMSz*Y*-bO^SMv|zO-5>3{i!Q`Ur|5$pThcu-RQw!=#849+*#4M?s6}y}{yuw=1VwZzBsIlXgtw m)%D}U@@bm%j~S>0Zwn18jvdGRHKbz_j*@2%HGcqiB;QXF<&KH~ delta 312 zcmV-80muH01Em9yc7KvVPs1<_h41+lme@6j!Hw%C&<;bBinvZ$df(I(zp^fGVBgg$L3q7$$g4vS^SD zY5bli6*b4eE}ezu+8>p*M~4=bM?YtxJ#Pz{RO1Vha-d75Men_RFvTtmwwhy$LOKj%bI3-sP%A>i%i#XU#`Ts}h5 z3RVq$&n`^p7BMeqxlgYoI#WCLd=7GC;+x6GhxOAu?w_KPzb`gy*u_ryWBH!Rv-7!a KTJi@wv-M|LContributingipython@gmail.com). All donations to IPython are handled by NumFOCUS and are tax-deductible in the USA.

    -

    Individuals can also donate to IPython, and we are grateful for every -contribution!

    +

    Individuals can also donate to IPython, and we are grateful +for every contribution!

    Other supportΒΆ

    From 7f78d19e7e3b3b49e2856fff6342fb9c8e2e7e2d Mon Sep 17 00:00:00 2001 From: Fernando Perez Date: Thu, 26 Sep 2013 11:50:28 -0700 Subject: [PATCH 008/146] Updated website (automated commit) --- _images/microsoft-logo.png | Bin 0 -> 7314 bytes _sources/microsoft-donation-2013.txt | 35 +++++++++++++++++++++------ _sources/sponsors.txt | 7 ++++++ microsoft-donation-2013.html | 29 ++++++++++++++++------ objects.inv | Bin 397 -> 396 bytes sponsors.html | 2 ++ 6 files changed, 59 insertions(+), 14 deletions(-) create mode 100644 _images/microsoft-logo.png diff --git a/_images/microsoft-logo.png b/_images/microsoft-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3fd279cdeb47c9149383ec61fea115e6bc51daf6 GIT binary patch literal 7314 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 sX5;0f@ke9D<|hA9w*DVR)%Mv`_ to support all aspects of the IPython project. + .. image:: _static/sloan-logo.png :target: sloan-grant.html @@ -11,6 +17,7 @@ In December 2012, IPython was awarded a `$1.15 million grant `_ from the `Alfred P. Sloan Foundation`_ that will fund the core team for the 2013-2014 period. + Contributing ============ diff --git a/microsoft-donation-2013.html b/microsoft-donation-2013.html index 8f4ce38..8c35063 100644 --- a/microsoft-donation-2013.html +++ b/microsoft-donation-2013.html @@ -19,7 +19,7 @@ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); - Microsoft Corporation sponsors IPythhon — IPython + Microsoft Corporation sponsors IPython — IPython @@ -215,12 +215,27 @@

    Support IPython

    -
    -

    Microsoft Corporation sponsors IPythhonΒΆ

    -

    We are thrilled to announce that in August 2013, Microsoft has completed a -donation of $100,000 to sponsor IPython’s continued development. This donation -was received through NumFOCUS

    -

    IPython

    +
    +

    Microsoft Corporation sponsors IPythonΒΆ

    +_images/microsoft-logo.png +

    We are thrilled to announce that in August 2013, Microsoft made a donation of +$100,000 to sponsor IPython’s continued development.

    +

    This donation was received through NumFOCUS, and is the next step in a +fruitful collaboration IPython has had with Microsoft:

    +
      +
    • In 2009 we added integration with Windows HPC Server for IPython’s parallel +computing capabilities.
    • +
    • In 2010, the Python Tools for Visual Studio team developed integration +with IPython into the PTVS project.
    • +
    • In 2012, we showed how IPython could be integrated into an Azure-based +workflow, using the Notebook to easily control computational resources +in Microsoft’s cloud platform.
    • +
    +

    We are extremely grateful for this contribution, which we will use to continue +strengthening multiple aspects of IPython. While we have other sources of +funding and the support of the larger open source community, these new funds +will help us to focus effort in specific areas where we identify additional +challenges or opportunities beyond the scope of those resources.

    diff --git a/objects.inv b/objects.inv index ac695b7a8906d9ca847fe1ea29b549b299804e43..e49d478f491d490b3a479da51c2a1a0345f46d8e 100644 GIT binary patch delta 287 zcmV+)0pR|P1B?TZc7KvhPs1<_hVS_mme@6j!Hw%C&<;bBinvx;ZTRvJQqKNVL!19MOYbgA9Tmh5IJ9{_YomVmQMKU&xy1nBaB5sz!2T z@q6BsX{v$Ua8{NpDUJ7KK#xXH=9yl;v`BGmPr)If`-Gkn+kc+Gi39W$GF6|>A}{I^ zOFb+2NDf05iYg#dWh9Df+5Rzochy1 zRgdh}UL?c8)Tk;K9o5U`X_6Iel3{na#)e4|M?5m0=ZQ>n=)J+5fVZ2bT2}=YK1FSr l#;xnehxOCE=@=hVF5YJuHXJ$*>1#;GBphU#@&}i7-shl&j$;4- delta 288 zcmV+*0pI?N1C0Zac7IY$Ps1<_z2{e0V%H!BH?EsNI}A-4;#y^i*G5b2D$aoYd)j81 zXa%?Eefimn1U6LF(NF?O?m3tP2GC28fzTsy-=sF&{Q_V=yy1n<Z6 zIcEVMSz*Y*-bO^SMv|zO-5>3{i!Q`Ur|5$pThcu-RQw!=#849+*#4M?s6}y}{yuw=1VwZzBsIlXgtw m)%D}U@@bm%j~S>0Zwn18jvdGRHKbz_j*@2%HGcqiB;QZSupport IPython
  • SponsorsΒΆ

    The following institutions support IPython with significant resources:

    +_images/microsoft-logo.png +

    In the summer of 2013, Microsoft made a $100,000 donation to support all aspects of the IPython project.

    _images/sloan-logo.png

    In December 2012, IPython was awarded a $1.15 million grant from the Alfred P. Sloan Foundation that will fund the core team for the 2013-2014 period.

    From a4ae6391f174ef20d6b407edf11e06ae972d347f Mon Sep 17 00:00:00 2001 From: Fernando Perez Date: Thu, 26 Sep 2013 11:54:38 -0700 Subject: [PATCH 009/146] Updated website (automated commit) --- _sources/index.txt | 6 ++++++ _sources/news.txt | 6 ++++++ index.html | 5 ++++- news.html | 4 ++++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/_sources/index.txt b/_sources/index.txt index cb49760..61ebe9f 100644 --- a/_sources/index.txt +++ b/_sources/index.txt @@ -65,6 +65,10 @@ supports Python 2.5, and can be used with Python 2.4. Announcements ============= +- **Microsoft donates $100,000 to IPython:** in August 2013, Microsoft + `contributed $100,000 `_ to support the + continued development of IPython. + - **IPython 1.0** We are very pleased to announce the release of IPython 1.0, nearly twelve years after the first release of IPython 0.0.1. `Install `__ it now, or read about the changes in @@ -145,3 +149,5 @@ please acknowledge this fact by citing the project. You can use this videos whatsnew082 whatsnew083 + +.. include:: links.txt diff --git a/_sources/news.txt b/_sources/news.txt index 349a134..1a82e10 100644 --- a/_sources/news.txt +++ b/_sources/news.txt @@ -2,6 +2,12 @@ News ==== +Microsoft donation +------------------ + +In August 2013, Microsoft `contributed $100,000 +`_ to support the continued development of IPython. + IPython 1.0 ----------- diff --git a/index.html b/index.html index 45e9999..4679690 100644 --- a/index.html +++ b/index.html @@ -249,6 +249,9 @@

    Support IPython

    AnnouncementsΒΆ

      +
    • Microsoft donates $100,000 to IPython: in August 2013, Microsoft +contributed $100,000 to support the +continued development of IPython.
    • IPython 1.0 We are very pleased to announce the release of IPython 1.0, nearly twelve years after the first release of IPython 0.0.1. Install it now, or read about the changes in @@ -273,7 +276,7 @@

      Announcementsgrant which is funding the bulk of the work, as well as our roadmap for achieving the grant’s objectives. Read on for more details.

    • Sloan Foundation grant: IPython has been awarded a $1.15 million grant -from the Alfred P. Sloan Foundation. This will +from the `Alfred P. Sloan Foundation`_. This will support several core developers, allowing them to focus on building the IPython Notebook into a tool for open, collaborative, reproducible scientific computing. We’ll also be bringing developers together for two sprints each diff --git a/news.html b/news.html index faec648..7c805aa 100644 --- a/news.html +++ b/news.html @@ -219,6 +219,10 @@

      Support IPython

      NewsΒΆ

      +
      +

      Microsoft donationΒΆ

      +

      In August 2013, Microsoft contributed $100,000 to support the continued development of IPython.

      +

      IPython 1.0ΒΆ

      IPython 1.0 was released on August 8, 2013, after nearly twelve years of development. From 88e924074f1ebe7bc3a7bdfe4346c57f882aa940 Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Thu, 21 Nov 2013 16:14:28 -0800 Subject: [PATCH 010/146] Updated website (automated commit) --- _sources/install.txt | 5 ---- _sources/pyreadline.txt | 2 +- _static/simons-logo.jpg | Bin 131255 -> 0 bytes _static/sloan-logo.jpg | Bin 138765 -> 0 bytes _static/underscore.js | 63 ++++++++++++++++++++++------------------ install.html | 5 ---- pyreadline.html | 2 +- search.html | 2 -- 8 files changed, 36 insertions(+), 43 deletions(-) delete mode 100644 _static/simons-logo.jpg delete mode 100644 _static/sloan-logo.jpg diff --git a/_sources/install.txt b/_sources/install.txt index 8348b19..8d344ae 100644 --- a/_sources/install.txt +++ b/_sources/install.txt @@ -12,11 +12,6 @@ you follow the instructions on this page, which provide a setup based on Python 2.7. This includes all the dependencies to run the notebook and optionally the basic libraries for scientific computing and data analysis. -.. note:: - - We have just made a new release, and it will take some time to appear in - Anaconda, Enthought Canopy and Linux distributions. - **Mac or Windows** 1. Download and install `Anaconda `_ or the diff --git a/_sources/pyreadline.txt b/_sources/pyreadline.txt index 8169be2..ecc51bd 100644 --- a/_sources/pyreadline.txt +++ b/_sources/pyreadline.txt @@ -37,4 +37,4 @@ The current stable release is 1.7. Development is hosted at `github `_. The `issue tracker -`_ is hosted there as well. +`_ is hosted there as well. diff --git a/_static/simons-logo.jpg b/_static/simons-logo.jpg deleted file mode 100644 index 2a0f10ddebe82089b4ac404f5ff17b83e64c59e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131255 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

      *(OYPaFz z7*=%%@?8S=Vre&WT&iP{CYASVv)_~P8$BmK*S=GEw32E90BdhB7Ygb^{0{Lc^5P7O zlD&8-2?*1Cx2M*uG2EJSGqQQql?1S$nw!L+2cs6oxR_sSITPltk!n}Z_v~|jEOLu* zX?=6%Nq&6zcC24e&^6OXT!)0gKG&GgKX&%tB&L@6%pQYRW;A~tu_zOWbRINkL}O}e z@F`SzdvdOh@83wjI<{tdNn_7fa-{7w%f@}XwUpREpikt&BdE<%&3WP=(C2_a&wKVs z=Wuzst?Z27p|wq)#W)M0fbXr6m*fbg<2r|X)s!2x)?gsgHZi8}j?sGVW=M^3t_uBq%25I%+$dKkDqbXpYokh5B68<9gZq z^PAPzc(t-SgIJNCFTpU^;a@r?7QYjuXV#dLHECl>qk5%T)6efO81JcqBCsChXEctl z6R{Wv9_kqrWhE2FG&&nj$qqOfNaBu{g`7<>^vW~J@0v;o{M}zFeN8YUbKfJ|O!l11 z3T~vfwHwWquc0rRt(DuPovD_PsPXkHPoR{ez{2}`41(x{!0Una^LLbAdLpAe>A8rO z<;^%*2rbZji>>z#BHVS0?J{CkZw@9bG=&Gf@fR%BZ;Q?FvHupEixO-z6Zy|~(4MNR z@~uPTT$wOL&*0ZBwh`Ta=64%<9Euvg#daHUcVlH4aw+O58ij})lFN<_-eQZBy}nB= zXLkJ81;4!lGDjA6C@TAX$%sh`fz4{tI@}KlX|!$dfk<_X8f8zdrUvAA(KLdSyK_?l zFFg2@RdjDvLUSQK>3LP=P!aatf*()kpOAB|yl|rPf*0eSLD=K#lPHNng+)LsX8{Y_ zCD^@>Y(@(l8(C}qOc!V7b8m#Ix+4fFRbfL^xPHOl?5k)(g>DjF>BOW{l19UncSgFT zQmINh{|lD~W0tmEs!Jp?x4eByhl_W5OF3=#S1-gJVsX$_-pGYNKe}^zB<_(rvt2TT z_kHD#Sx)qdk}YU#eiY^%<$B^n;GP7%d-!dQqWYo5}r&4h3PF^Nr>oojirI_9=+h2EYeP>KB-KXC^tP)R#pt zk%cGbcxMo#C`g3rgD)4K`3~9$7Pw4GR%<&K4;7x@v0O8{VoOGt1ev|wFrekwWML$4 zsJ`khR#LGZmE$@yDUfBh`|cAlGoIH=d|I5#ZFl}Wc&dhs`^-gDb6{F^EB8LU;*Zx> zkXoC6ckW{KZwE0amEP~rH0|T|52KFm-Q~WY73eTXYO^!7_5$*xh6~l7dQ-3zZh5=O zGmU;1`=m1RW&5Jog%SP=F6QZ7dEY!BMRf+Ig^QA5)2El0pby=KsyVs83s$1yzxEgj z75;E{1S|;FU>=O_|H-XkoCERC4$*9hN78KXBbrF@c0kjlzKL1#NZ1a~8p^Yy&`6Xb zTg}5hwZI*jKfjPhPhx<^5v(6W}ppK&}aRAz;8p ztcL*`T+#xTdb6r?i_P%~Vvf%ht5VD)LVBS-6$|JT+IXsbROF`H;qke{nBCcDyR;>; zd3cT*6-s|)<7!emFeQ3KRQ<)`-tb^=Jv{;*28cwr5r!tn zgR7*2AP#l@D-LP@cX7xK{?9mc_rHllakH=(RfB$5XQv$FJW)5^artY+;zG!as#u9K zW=5mWuLJKjTS5=Ce_fK{i`BsEN!SZN{}FYaq!V0|lz!)&7_W5p2l#tV#7=pkf)PdB zdkcLro}N<%hmXP{prlX~=~dWFs2)M8vGa6W{DUUdPolhEjymZS=4ZWT(wvc0vl5GC zCCE_z=OFK3q!u`83T_nQvO9kwHqS^EmPviv+}NPF!{n~}u2O+&jMO>g3Q$N~o-jy;`@2H(KNqT48EWdP0 zrAAR+v?BR&z>sPuJu$w&S4xv1{ztV-aP%PLun$oH{WY6tlH`zg$9SV{iw%05o-Pa{ zNusEEsSU@m7JA>UR*&xY+(|#^H~q;u-VUPz8DJnj22ChWl`%6J8q03gsqc{x9}+@| z_Z|x*8enz1;Ao72L-Be%vBr{~(&vtn^jgA6$TD0mj$IhMFpE(^UplO&+Fa52$dP|4b@&D8v~86O5+2P(4fk ztHdR=#dZM&2xDn&oXp8c^tvI0b);HRn}(ZFn1Gkmw^M5L1|lj}5`B~EVAZuQFvcaG zWbd=9>$$mcnP~WR14CV^m8GzSdZ5c^q3J`aeFiOj&-Or%+eNnya3oRlr-RSnEoF>I zlEIE%PI$$yaRwzJnj`M_?magO`4fn@kmXC0ycEir@sXipCwuERGM1ZZqJg6@bYi&~ z^%oIyY1&kIC`p_d!AyC{N|Vd~pF|xEGXFonagDMPrd1+}R7fNqwTHFE9x~n?ET?4n zgUoHA@z@SPRp4DxS0~0)og4J1;Ays3?Att$ zUVW9nB`5my$PBa9dd9SI_)gmwO5F{@3Z5YU?bU( z?xZ^FS0C^M;Q@#EtZ1tk6Tl!Mg9T3Kvij0ZmSWa2usV;ZL=D}=S0d2Hm>ILxemZz5+ zD|sAn7p_aDpW5M?Ir55P$nU&r_(yNoZK+^gDy}+pn9rS9o=|b)1tf3GlF23eJh;Z$ zz3sjahCW5zVxziF^YIV2!5?=!I^C=Ky56UCT`0(f_`vT&TL`Maoj-VDFVDDfbFaCDe^7MFqj-ICJ1qOX~E*_+^>W$tHm+IBC7ol#vGKM;x%eKsX+RwD%lET6zj zhKMDI8B#yBoIC!Bujg1zn~C=Dd`5E9w^K*f)hjc=trVAFG2}_pd_T0rvtcd!_E4;%S-kiFFm}^JM>xpNO$F#M&`L&4F3ddfn}Zsv0Dj} zJl+Qtw!x0gRjTX2^H<@TJ_Pt|0?RI|@|YeybBj%A^a9gn5jsu8nK3{5AV;u}9+e4j zh2E>&U#(=qAFz>}BlQrShJfWlUxR_|aTTcbfRWis!)UmJ-Q&5qdUN(|U~}Q_f<9o` z!dPWs$UjPLR{Z>T-0lC)#r}8W)Blcq`X2((zY>MNqkWHUkswP(uuc5~>M~%I0qzqk zP*zOljUcE$Ah7nlctj$d~dp5_Tv*Dt}lheN;8!rPOOE z&$<<6;ehvvk399N>6OjUyg2Nfdsy?6XOPpo_nl>9|7mwk`z_#cA49=m@F!kb#9XQz z>f~H0zgzRKScRb4|p>1E^?!NZe++R30|&w6u`P@r4~=RMrNZLGfqglR(+{~yqLX&PF~tJ;|o zu-Zu~aS{aM2@e+QdY;Ag26S{>AX*OJrRS+y zksJf?aFme5`V2hJ?b?9l@L4vLXCMlyQ`lLJ?0*>@a-{tXW?gR%>XWu8VJs<0A>8sf zn6u51?*SnpuM5lucySN<+!=->ySpJJn`(Y)zkdvjv=@H~sL%lCEHS3R$0qj=Mv#4@ zRCS^S4<|SbMrX%(K4TzyiUs_HyQc2-JmN7o|4nKWbu*p1+lm=r)AgD@`S^y0%n#39 zeRKTB^PTY*uV7)_+5+11FLRS56!Jri4i*aq?-@SGVt?pe(uD5jpule^l`KJ=elNv^QJ~s1S9xSG(}Aris{3F9k>be>4S)T;FX%oOc7*OkqTo$pp|Z|k z-8MNBq_eQwAMaBP-Z*GZnxES7=eta&TdcCT=E~#;_Qj1v+pg(0iTBfv{;%&eJ#{&D zR0Z(yQ{eaE&R%F@;M&u~YrS^)%CEylggv@md28)A79d=!%jXNoS)iN$s*5~HT^F8e zt32*yqZ-Bl#GQChWX1pLL@OI8=ip_Lw@Keb&I}xx89g6ZI9%wgFaKnKD5P;ZQ`mVJ zj@7$9AMjm>VZ(6lZyK|A_rHR%rpbMIbT?$j-Luz64!Op;LIMz^I4CKolWF)gnRKK{ zf0dY+qiB|7urg>_egBovx9}IJ#-HiBe6wS19{mK-iASnsA&7S5yb#=P>62yZ3ii-6 z9P`WWYPtn0bh1W%EZGp~?`NXuG*FeC;Q*wjXX;yQ2GRtPMHGdHSvn($Enp@u!F%lD zl!^jc5+8T_4nLAZN{w7>OA0g9&Rb~OA3c4G^Lcagba`H$)Y^A)_u|Jjjqy>@R$p6ALk8E_e?Df8oW{UG?qFKMpL!J%)7IS)C!d1ck@WgyX!-Rs z>nWd$4SrFMt%yp?c?+87gTu*~8u2QbYLoB*xnqk>1WHg*&L_m#b|S8bl@gcGC)oQv zF4(v%<@T<{)mwCzxpsJMu|1_-2;VXJ%N6Ol%H6+0RZ4(9x#gp6LsmvIU6YwFOq#}A zh`$kEYObRLOe+(Y1U^;9*|hJmc^kP;46?sc?#kV3=KbD}>jvTVEdk=e5zk-kVI#@o zI^-PI4I*CJR1(8tMk_q60|bqMPy=+^>>#ZJ{U*?Rm;yD%wlN!s_pAvVOZ-s)`_Z$a zpoY$bh#;C}zHPA$U%@i(l8W#Gw(99t>j20-mk^K- z-F9QiS=0k=UY~1X5oc+I9gba<-Fi5P$CVs!2YT{SL+@BD*9Nju;9l+7ksTD9rw)y(h^eiRbSr?d&Sc^06`E(6E3fz zn>@pt67>RAOxl%qgqoo{7pPo8^*Uy=WgiS32P5uQL#=%jFM2Lt_I^li8O7oM%oQge zuXCk9`4E>7vdX>GOy40aYW;rjE$jL)MgGq>tvYMZet`DE5?njiVg=1v5f0)-0TJ#I zE5ex`JJ)?VHZIkBGVdC_irz!A!`&p#ja}b##pisE!96Jfx z7+DLw@bvCVWl50l6%$>L^GY|*(L}#N>wehs%_g>z2YWSsHTtQCGTjiSG>!Vs`L!y} zK;;?&Vaz?Gm?e#2*{c1JX4&X~u`DPRZUcVUI5EmAnK^iGoajs7TTG|uGxKQ)>9!1w z5k@HXs;3?mACCvQ4h;PlNNLn-Kn#%?*s*?Bf4peErGc{Og35dg=()q z*4m}ng&x$`q8|A3v(zc_i8&4#Q#22|G-H_Bp5U`j&-pTcR>S0XjSg>jp@U{oNAopn z)jr6o?KpfKvI8)%e{QjfV&avHA^1N3y^eO*ba`KM5C@Lj6aQU{0sZmGro{wUfo1xi z=@l`LD5-PsF{@2?Mv{M!%R!qZ_yy#%wWu4ctO494{sRt^`mb;pgBvjV6;%7l=HB`*tk*U2NCET0Hq(o1o2%ih z!h77TS#cR~%K^GTtv97(99*ewRQIR6<|VhHOp4wi#xf#|+P_0bGj>Q_H{+$}uX@z9 zdMv-ag*vx}N55>4{d~tm{`i;8xOR++`T;p7uq*i|@XHd5EtO?` zOt-kp0A#QDBlK)&6gqOnq2ldh6_eHwIll6Jm)^uXMlo;F5sC-BV8vILTjvgFob}c~ zZ`6#|a9{sgH&IKY_yiCr_@{7v>V7j4_B5|YA6`k$v2Ij*MeW@9T*pn=3SqdBX40y;J@rtcJ7KmSnc1SAr zFIk{4(R_Kl4MCs&CPmLdTs_Q5_gJb#d`WB@z|eUi>*}p@=&GpdNvrMLV&|k(Ez5f2 zoK1)R548MZSohB2z!Lf4W0Gm-Cu%l8Hpw?x1EtJ=0fQhLWB)H0q{nof+F}#y%K?%Y zZ)e6$OpI_dA{a9&RrX_%dkI^&4Bun-y^6+C(rWnL<0B-Bq# z?1RRR$EjM@g~0SUQ&0!GTGK60K*k3hax2q#A~ej4So9SOMpwJ8S`5adkWF=irZ z@WBjz3hs$$x1lbR-k7Zo3j}od7OWfpDEOS!h+6fn4VtDH)I*z8^wK=+3Zvbw9acyk zLtLAsRH)o4F}otb*(7pphE1{K{@bx#rzG+uWe2+rx*vxPEy)^xI zF(cyr1H1IK7Am^dZxpjYQBskAa$->h<3pCZ(YK)7^w2r)iM+IxeZNcg4-2(lT{j-; z8-)Lt}qq>=yFm+{e=aq&VufB$VoViW9t6}ckA;?pA?nW!uJ9eBW z>_rTly->z%-%xe-=Dqa8SbNtab+WqW^8_;Q-4pu75g@uZnnxsG;N2-Q0-R=`L5n!T z)byItCmM1%UO}66+d8&JhK0}ebQp)d6QHN&`I2=T7kA{=UUtVx%^yUlKExL*D4#QF znlx?;-zG?^64U9PZh2H>5dZ~RzSwP^UV^$RBlIZ&>+*>w)}0$b%%ld;Q)|qC$&w|8 zj>6s~OVI$>W$M=+SF9L-&-HN1WPwvvEU92N$XIs&5P`AKen2<}4k-)9n*eh7hqnfT zw8Q@Y?5)x9ZyS49z}3GyoBa>o8e=T=em0=1Z3BNSA_992h{k{AyFa9jb5A7iqTM*8 z`ce&@fojP)b&iqK$;yPS6eBpyn-A9iLt?V z+%<`5HQ;64tbU?zT{aLd7V>;JDI$q1c_@Kqcok+-G<^4I!qBC#Hxj^&B`e8UVw}dWqsJf^jrM98r^&w}>usZz zf$vMvS>y{$zoZmzVPleHg$ZM>_tY!7gOhu9q2WPvEdp zF!8{ufxK8uFNDUzBF)=F9Uv;V8=zet>gb%O`&WgR;=>t{56K**#MtOYqH6dOG^6ub z@8s%9je7dRx#=B3q=EfylA<8810%hRnZ2s)nN;h~%+Ck{7`tDD;tZJrrug0p-TO{ceL$auLnZxVC+hQ8ESs&LY3 zgs++8GGm6XN?8}&)56r8q$3xfSL%CTC&5+SvFdK1rmnXH3irRx75OF^%sX&1OXhQG z%WXQkn|gli4*#6-7MuHhja41-R>>Bofx-BtN^NslQ`?9&0k1^=)y_%|$Z<8PS?!k1 zV*y{*hV>+$T)J42V6*T3aP6DG(1x>L{n+z-SA)uJBX7O9qE%p(D9v*e0ztIffg`60 zovwM6Xi7{;@*U5)Rm&+5r;R9}9A#R=Pk?b}7QCKYePP@N?jtV9{6J!cE-}Q(W!|HD zZ_m0))$*P8N=S=|)w29lSuWA~yC+ioh1N)T4!%#^$Y4`6(^0UQT!Mg^G>Kmky-=KF~WWce(o!pGd0!-DjA1?am=@bj-3cRo;MJ zP2xzMMqH8-Qr9l`vDY~(cy7ZI(d3>imCv_$)$xwILW3spGkS1kn#A|u!5zI@7ov*) zy0HBXLa=Wz(jt-`%|Fh_=Vsi%#0QihMl?3ZzgDWYY$D5P28qv>#sS1a3IKOv5r=J) zl4I)58yf2Lx%=HB=uLZQH{xH+K&K?E(et;?RoeM1azEavcw&cCXgCGyO`<@md+lZV zw63k6L1pv(QZgaUgYz6tRor4b|B1A3c5R?qh0~IdG2n94NOBzg7Lh5EAr#uJ;xO3W zNyqO%82O2>K|au~do6l!AM|;lRHN5MdOLQ0@y`l%{gy8PB{$1)_9h}9+Jm0&WgsEMKNWxw%86UE_F@|-?r%Jsbx7tZCe&t z24+8RPZgy-JF9A!cIY!R)i*R%BgxBCv-4tq&^?diC3BU}L_ZpF)tF6G#3!E7(p(p# zxAgwh-?7q9r+c>bUzPvtHh#gZ{6=4~oLQsTi@?DHReP59uRs@E)5-F>;_<*j_J9W^ zp=SQM(rx#B%To3Hgw(6ztUL7AC#>%uGn8$=tyt^r+w~70L6(IU(3!B(7v`8@)Pj5? zGkcrEgutEnZ#hi#Ina&9Auvapp(G(67JzhdyWpHQyQ1Oje0a_1`gM|c zrb?Uc%Ld=BHW@_$u|e-Azi;UK=7IC@3A~O&#gvOGpiyFwNrt_ZlH}Xr8&|@nkwk}v zOCFLAW%u~1$)12=sS+NDxZy=j3}wKrD7kK<>4z&SV#)SW&Z%BYk3GW79$B|9 zHDtG9Sa&+{`>9iBp9#N=)2{{okqO}IX2b~$CtSu0Y2S&}_G$4tZu#kW6s#oyq1Y4#q*Xf1N@S+5;r3;Am% z%BUgXM*4f0UgyOr+&Cm)WX)VhBUp$U;+$MXz+F_r#tJ7*k4xV;(_MVQvovPU!eo4a z|GDII3)d9Wx}Tm-k8V2nVBm$_4(XfpPPh&AFpY?5<4^zWUf4XZUH(!<_w^hoDhA=2qgpv-1rVt0VebuXN*|G%X7w!2@f9u%W2_nyCp z8*PFn3{)%6le*Bx?a$%E2oPtK81tnId6OIPsJT?aKd-MQ$pc6A2cKY$j(4DGFE^>Y zuzp-X@Jn@7dGMIAb^$j1LXex&sU-njA{1A9>zim|7iA5~Q~Ily?BpZJnJzxNxERkL zTvg$>=5VoSwdgKDL}n&~QapF@3r>oP9)fr0#Yl%RfU z))w1Yy%^|X@HR#v1%@h+KIE7n9j!&-C2p}f7uhp2{sDnlRsLaFa)GW9{~0`V7fN0nAoz#c7nw> zsyr|b{s)o->Jj(D#2zbS_kV23vbgC{FEt=V{gp>;Hlufm(xd716_@8a8W1JWMm-n88ZG;<;w?Kp)Wrf@$1OPG(A$;Q<#y5s!bBz zQ<+)G8E`@H)3ox8ATLYS4IjudVzF@k(l^(}n~*I{XgS~IZ(jS3*&JgG?GHm2Izliq zemq%zvaOO`y}@VrY?lOlsNBVs98!ltSrOLNC$Q&Ke&KbYs)_z!lLwc`Ju#Ms#bc7>9fysQFG~x;gjcf{#Z4_k1zbfUL(t>*YVk@_=%1v zGKz_AjPxiM$fsXu0tZ?ainC-sHlLO6dfr8EKqa5aGPv=ZSZXs=#RR|_A9v%TUq%Ph zPWO>wU60CmJ=uB1WsR>)+>!?MB{f^UrV|nE58$9(Y5qaS_GahUOr*_W)`}B$^9I)) zIfb;1P@o#Bcn&T)j{-z7*eI{qjztAaAkyI+iaTD8WX7o4<8l z8JaMLqRR6!2fztfRd9_aSJF-BGt4MxA-ZaVcd5q96^*z8C50iVa;&o5u`+KX(nsC~ z5je%n@Cr7egi)#tujm|P9k~8umVr4eQ#Y2S8%REk1E9tMmDO|<5k;>BdMbmvgis$X zregS*>Yue(sU^%*7Ra{oRKOdM%R;n1jst(i1+P(nnsT9NFG(n=(+XE;<8O?x#$FVU zv~Am#u~8tFVbOGdzsppSHd%_I|B0G@!@N(G_9f-0@wN)vYA$h~PFA<;+f!Z6J}1A~ z%sq&eBBz5cP$sSp+09i=oI_}kt2z8R0|b;?7SJ-(C|#mQxDOsBeWzseF^YY};`ZpV zLq>G$1CHsA1B6Qt!Q|zJ*%|+sb9+8X5tK;FB(y1ggLGr;Y2W_3^jqc^ulz2)H?(iz zTu0*?$E_s~+Q}UYD&d2l7wFbJ1iD5QGnWwG^Yoy-8Lo5EtH31=xFmib0Y`Kh)F8i> zsZHn5lEr0+3(DiJFyL~$tH?`WqM-8gqWX}cX=lJqZ`EFJBD|Y?si&^t)j9^Xmb{4> zEp;vEcv{B2cN$Jv9P^5+g3BPVb%@j9E&S_w1deyS`?(yMIT_zy9g{M68s^Ak-UMu+ zb9?6oXPAxTs88%~ET*auS)(g}_F0`8@OCw%im}|buwZ%L#t~SYvb^cGZKh9Tp)+a^ zLwY$Qx7en_A8xT-`hob(@zTmUo7U2IP_G?)e(doR$BQu;3Y zs~^PROqyizJ+fjyO*}0mjn4%e@m6CT{j1;Oy?RiCdXiKPLW;ha4zic)9TGNb_{;nB zXHh(XJ(&+zMG+Cf#?H@O!+U2_)0!k+5RSl*KBy4u2Ryw*XF9=o`Uf3Dl%ZlZ{1ef* zuM|yvEdg?7CLb5!^af^Ca#_A2#J}K zQe6O^l9_;~0G+B#MYQ^*(-SSSpq)}Kw3w;QfGTKa_6jD8C3nEKLU9sAETdovI?eQ! z%14aqfpr#cqnWKxIoCpW?R?`RR{8Un+X5abu-V)uF<436UII|~p9X_I zQZevfgn#)%b^bdv@W1hg0#;?u7Fib=SX2SqU!cb&)tk%y^?I8COIyHT^4>hF(@H-n zk^TLNrmQOG9+S0Y>UI2C-{EP5BsHw99OIQbq-AA+l+se)>8rkzy9|4H@qqY2`=4u} zw6UzCW#72N@n|X*(Nc+4hMQ?+Jz16QPlQ$IXntGLDZ8gNqqKSt@Anx$KdAHISLQ_2 zxey3adb39I3Yste%53EdB6q6BI~*$yNH%Hb`DelJ1Ps1dnDPRs4p z{E$4ob`G+Ba1iTb$UGNaMmLouZ;AngIrdK;Ah1u?Ml=syNuL||)V^E$^PJSdO!$LBmLDtj^xig3a! zHF`X-7s;jK$1_4^UT-3_J3O9eBMv7b+C6~?6e=zk?eF5ywBUFxL$G{AlxMjhOygBE zBN9`eh5RhOAW@9Zk0QY6f4K4T8}g*HUgnFn1JuaDoITb+k+MGWz@Wksh`KPai1s4g*JG{w+b6@v2*vlm4#tF&IPB5svW zU5bdQ%ePhhM88esI{DjVRDU=|CI0*LG zT5>rq0a%mhd4tT-MH!z)jD~`aZs5hm>~8d?KSD9Jy9*@Sh87 zXI9@sK=$P7LTJJbi-|erb;bp#ud)ZsPdNK1%?^tp5K&Vx|ooxV9k(L%M0eQhQgtUQ?o;1 z{S%jTe{w=sgEy*ucdWKSon|-+_0FyfXV5V70*c2-zlUgG;u0z+m3X;5M&e05ncYoi_N%Bs?%bX+0i9*#>`rUyVVUUo?QR= z(TC4-t1xOSvI$2YrdL&MzV$6`J9H)W!L^O(hV$S9Rty3P{I%x4>f;w zK*!1FGl?4fI^mG%+geK8aVPrF)1mRaCEjgQuK=N1HLpRk!|V-Qy#3YBtglzGqrlI{ssm;j3xTuiD#P~B+lOTr7I_%i8S_q)%!W13-{I7*9>C$MMSwiMmo_}C9tXaEWUU>p7~C8YL%K(uDbdA5;eXi*|EQrcs$x#U)&_6j=YZu!WnIvf1xdEhZA z_{|ZjUm7?!cAaL>oD?;k$Q zO41ga{&IYcKWzqK4t?oLWB_hJ3mr0=zWG;$voHD>Sj}?++>(E|fs;kItwGPCV-brv z+zfR|FG2}=Onozb+0!y=4dt^4N=qqv6x;#4`&OyL8Rn zH55{+B-XvGN)vK%9Gh`6FeE_5mT><>67cQyWqB;9Zif!gX7&PS9t{}}ghoyT zah<9Ez)04TJmDLVhF&qN^RdfG5@ZKbGUTiWBj!_l4R`ON8k6gMpPw!RYzOXC?y7V% zx+(FS#&#k8=*h>|1Y1hZpjr`lR3d@iPJ$N_h6@}r$FyW`>kYgWzLZWoQ5!^VI~ZZ_ zqH&1H0~1C&wBVa2HJkj0Ep=>UO-dxK%U}1IrWmT_zP!wM_bb^CN*eH$)~~(X~_D;Bq>A_B#P|gZ5UL&Gmybrlhy1yvjMdMTD z68s_|hmX^rYFsXfX2vax)1p2OHBKTUCuIcmitf`R!FCfY1LI4<45Q0i410 z-}UAiO!aN{4nxz+#BoAb@(DNlj721er8WA|CT5FxM{MwBA1Fde)o*NLKm z!&a7AmOl5@4ix&$q;S8GVK0_LMf{RTxCSPR5C?c1x3Hsr7 zb-0BFHHYexOI7&lkm+ddaQWu#kzcgN59yzzjx1=l!W;YGhRQG8DpaTP?J_Wv*Xrs0 z`c3VvjqT(}N&ZAbY%@(7&F7ly=Gy(UyEmtnKZ zEyLT9>ON^gGmdA(zP&+=+eO$hEXb-2{Y=kYcKs3PY$!}Vws&GBO+y#Cr!6^X!T5hW zbx#B^RtX@p5fLi91L&o6#zV?grye{cc5tvFjb(ZbMl4{z-7^sUfb#@v)fUUz9>_ML zSuHl;;{D63{681Lln?#?+Gqj2v&MO+pH(o!H$Xi9D^kgOw%xD}uy*qRk~1jE%!iM` ze}N!giN2b%evu#1bn&TvMM!+t=xjWeQqm=VP89YsJ~EwHGkgxKLPi%Jcr3>=?GY6^ z0~cKsc3Lhh9QdQ6=z~fNyA>{a^Zff;yUk3E4tc-f)_48Lkr1~!#eCt)d~RaUk?T}N zp^7{8SKJ8dws^9-tWxZGW&}|wnxmIa?*B#)Kec5__XWMMVWf z1VjW96%`aDiqcC^M4Es|4JA`W!Ad|%q(-Dm6RFZ-qnAkUy@Xy82&DRt32X1O_TFoq zvoHP&y;#q)RFXNz_`bI$`kj*=+bnXy7%^W!ARQddHdv{AorzBvjtD3en9)diTUuf) zwA1`{;}+M|uKbGU>;sbzhAh{dl$=;7+1wujcj|h8S<(>gcbv`7d!Pbj3@6?IyeHq6 ztCHi`-3Stx)O(PH3V%@eGXEuo|0UPK5cI2p;Sq>m;af~EnRNubbLZ;ODtHV|von2n zNO@<@&s!An3S*86qA%+Fq=2Tfi3%0Fe^vd+z>n7+QCq>zc(8d*!caFc29fKLdZDYh z`efx#d$LxMjLn1{O7db{*LH^g03#q#H++_;(wxT0PSR(-y7G{i@AXsn`bpUXeGkSL zU(b2wmFm4y4_J+S75g;rnjc{l9BfgR+4P*p@i?;jfmAs~HM@c6)YXamNYZeJ_5skL zt*J*jsm4^kb@-=*Gaifrl*-?HQYfSp&l-e!sE^9O<{N1WS&6@>hVqxmVMyuE-$pkh z9k>FSS+g|aH|8ayX<->X@N>^M@Vru)xOrnK6HZ;h)hiyStU_KxJ=Z-Qw@%bnqFXIU zY^#(ns_RC_Q1nl1)Pi%{yOF(~$Pe8R-8tP~DLWb0q9r=UGLC4`Sf3!eZ(B0m?2-ue z4EIRH*eTUL)Pwvrt%D@KLvzr{_R@6c;f?GfNax`~OGA~j;$nsPZnK3zkjuBHZ0jBx z--;QWmHP8GJorv2dGj}1nHC=L+tl@KbVU=}?)u5EDoav!tSQQPX1!wiIeWbTJ@eX+ zeuh1>+E#R~Y>*n(x4xz?OFgbV4xfHXO>O2wQqqKY*tEsN2iASVHpA=enlH~1>4lCh zCbl4}zZG;jf%ljV=U7^mpVQCZ5ODxouge+02DX%wLqv3GGn(7dA~*l+eTg&}bg$R# z2@Hsm=`bKvTU$t-;?KK}q9!z`JmJGBb?_X0Ybk@2N@HV5Y(svti16`KXX|?dk0R+6 zSQ)Q(4Q{N&o}-<`M#b$mEq8lMJsA+1IgU63Qvn&v{{$iJ569P~ia!-+0bNRjBmD>d z4$pvTUqeLHj@hj1|6<)3+RJTx%4u8Aas*Zxb*AmbUImlxfjoA13?|TzkEulDIp$Wr z8pc)%>&%EL%)Lm>-a~Qj+kfR4fE>Cq(QWs6yFQ9Czm`pOOm05A=wOC2B(G#qla*Lfe1S-yy>O} zU1Ov`gOn`wN9|Ezg51UTl0VIcqm2+23gsT=?=yriy1Se6=6Hm_&lA<1y7agUk0JDGn@F5>0g%p~f`Z|fIwfcs> z<#lSoPqiPdUOWC^(UGQDY+lpg1L~oQgFSGk1HKfZ6hexU^KUlT zSJ*y$kRKIPZ)Ekje68UX!N3oT?;-*<3x#f)%hJgg(|7`g(1yK+WP1;En;hdqy&e`LKVSf_|Gb4SguD zkziefb}+I#S*ub47R5Sld>UNa{h~FhQT6Da`L%KN#t3pAlXfCp`@LurB9MOXqGf1w z@Kv?f+D(r)rJUaHohSO0dT(?7hhz7a&;wABDE_=;GkjSrF(b>Rk;^JFm>+?Obikp* zT@JvG&?5>S%mCVMPRu?jZYKDO2P>(**1!1*iSvZ+dH+FVB$iIMU+ib9^32kq!Fmhq zgl*GJExA{6AZj;IODm&}7cc7~%ad!SDF%m&{;UccZ`L5=pnUU$CJX~No zDX4v@CWhr2_O>kUoT@>Wh!nk@FU*6 zqXs0jf{sAYs|Q{|;1H_Zvr~EV<(-f!iTEo(re>PMPNyVgEYe-ggeGgGhUR6S54k9pLG^R(`m6M$EK01=F&B+}tJpbf;HGw&7 zpEkpX=RL0T;7GI|y#sU%+Rj%~e7O;&7f-=dR;xm8r)d0LS4o#n!W~zJE0aPT} zo{4gN&1hgJ0+gb*VacIXPK{Jdpfyo3OttxRwp9<*s6zc>MJ^!Bt9FWLdQu8AYQH${ z0%bzEp4u5?BM{b$O@!zZq{T6i!+ARe-T#ofbuztfITlEKu^7>^kuU|eOl`6bZV`R~ zia$X0Q|JLD@~lkMxPVG0uoQVK96I|BE+;Nn4xnyLp7-E+y=bT zy8vIwlky$Ke>8y{q*!lQnNJDw_py~8`?e`l#wo5iv57JeB}%v9s0_X8seGej&|`_2 ze|7R_h>b#fEW$GOkO%*bD91@3?;qtdszEv6vP$tP>2`6kJ313Za-755Xqe2lxiVLD zRW7W4Sj@*VLfcsQ>gRyo^U<}a?I#bayz5llCdp~UyW;gIOf=ONTQ0wXmu{utA&>uT zaAo$w{FGZ5lIFdM;aA=K=H8wm;mbTNp>B&Cfbk~uM`>%+S_1nGz8s=tl7|pPzi9p!ZimB`0`tHLf&nx!Y$t@kGZqoWvduHc8$k1AG2(aJ{e3UCS=b-sBBi z@TSzwd-sG3G;s=X(^ZH;@~LqYhL}c7G}b3L`{-z+uRe0@l>Nf-bf^I2LbXzw-UBti z{*qIST)6BR1Qfyba5g(1Y;w6IQD(}o<+0)=IS#=rgQ^}gZ!&SwxYHN=JT`x1GCP?oz>T_(QbP^VB&u|tM%+j!>HEqLhPzr9p4o4{$7u1XxmOA+tx>mwoys4{ z+F$u*)#~AHn)I8`NcS|V%91Rdv`r~`Y;lh5x+ptNn^Eb>oWaDqC)eh_BpX6702sQ` zL(-KN#ZnnFRLf6&OIqm6@^eOxw zb{xAZKjCe*>E`$(E4k!Gov07~g2VBzl}jDkjn6j>`l-=htZA!VY3kj?`C$`wxF;lA zoN~f?^gA1q7gF!69Q&+NzF(%p!F=x>F_DWal}m=qK}M~_UO1x`K5#9Ubg5vdEx|qj zvrZA3W(O|nY)K&4&=eY01}?vy;0nP1gXb>&cb+@>&pdbJA3V3F;>D#S73}KE?bSe- zEA;1Gn)p9F_uuc*f5&qxfL(fGxf7>9O%&{{*jN&M5;}GwdbkU!4cu?uAiJ1)@D8e) zsP#~cT6z$5kt#SD72~_ZVF7ICSJ5_E6M052K*qHYo#@1~AyW@}PV~HkLQTx+YW@}W zN1`Q*GQcP=Np=)QSqC#C82GXVydh>CPJbbi(oH{`65)8bpPAv%wS+~0ULH1hxv+6S z?Pq@$MH=>k%D3fC$%!AG?!U?7X5%+w!qmhEe!5xgos18ECG>D%-=aE$kloI>yCA(t zHp{GytYXH4S?e+F15S)CR)f-ieCE9UN6neU$sN?@*KYUIWZD(Q(1e7i6unn~+Ulh5 zOPr}D$ot>>7QMU{!{b~2&Eble)l+z4~x zXf4G!c3+`Z$%&XjcjRMdHyE3of;8F%axI39Pd8MbReEA0I3oJx$@#jN0F`5GKesd^ z)g8;IWa5kdT}U8sfc;QMfov)23W2^+<8@BbP>9vt4aZF?wN`&!;I?fP`-B*XM1MAp z?!7ld08e1PP_bvRCc^Ue0Ab7M0(#41$~C9W|HDRiTxj57PH2-xhF`hm3RNqpNayNMN3@tGFu1SLzb^^DZ=D5_z#WCO>BZNM}5Bhkv@(50?}Xh(BH9kQzcH~ zbZcsM1ye6wk9sA)M`|6?u8S}!GK+kUryOXgV%xM;jJ$|YzCJyUgvMQ2#->#nty~_p zV{eT@dL(p)Ox?xtW;T8{!TEhP7{7lsKkm)JFNuPVvIF}W0fu%@?+s)YIHG(l!wGcF z0fwiLXS<#`l~TmiWr7L(%mFIM5e_D5(>|t$X5CF1y7$bkj^8y`PI7vb$lNr=Mz=@o zBWZB?DWkvnuCYcNhbNdS4tZ?sb~VDrtnK25K*9=G!bKDJPa!gDgY0^>s;>hT!g8M> ztkwd9(w+2A5Op=0_Hd+!z7f8gER-iPi?Kzs>>rVBJ>8xg7Y3A~N07A;XDFSgi8u}X z%kE%_4WithK+J03r|V7Z4Y_?BC(p@n*PVY{Un=mE(E71L@TH93SFn9GP=*8oS^VYQ z26ZmK`7YH>9FR@de$4O14|L2mqwe!2VemG(_3$yV|xq^mQj2TOK!QyWJGglN~AR_`fg+P%J&9omz9Qz(I zEmD^zQF0ugVb5+IQaEWJwvRe_mE9Q}b6E60!0GV5p>=G+o%*@3tNDk8rt#L~_s&h9XGu#C4ke1x)l(il5T zuM)#`be=|m#?%gO>Y%B*%KCu9)pvx*@vzZ*sZYqk;4$O2w{6 z69-ngU-JXR0OUcmVg5vB2BMg(Fy{bl1=TERq2kP#p3*f6x8Ci061h-&GxMPvuJ6RC z>a@$=XFmxCd1f(oSL5>iWjZ!irhSD6o*Y-uHV=Hn-%4)eo0CQbJB*cXau2#i_uQV% z!wv*Qg|t8 z6T_RA!ulDLzJ%E4-aJhaW+!_)q3JFDoaY43SG)afEB|1KYi%gm0ocNfUkbT`-+*v5 z=Qy_<%tbENlZklkssy!8vg-J5|HMPLL{l6$=hvrodC{wtKb8GRDqaMB-(S=0)4GIy z)+>5}+P;OMg)pZlJ}Rg;_?Pcjs=IH}d9<)LXrV^z-rX7ccjJ0O_s~7U4mFz8@HN3O zpIJU?HZjD+y%#t;myld|vq`U$0+a$zW3xT4)tC3dtX8E1JtfMu|7A>Ca^oh#p6DSq zU6FTFN*d}g`OOEbRmqpQjp$@#o>C5!!mdQp*tIP^Aw2VX&H`|O7r7fZx*iXHA8@N~ zKz3q8ACvJTxk2@&pWaaA1+x9um|ZG<7gSB+m_aFCjUGY^|Tld3#ONt%rc2Yp;$CZh);e z-sAOLd7a|PL`9+W(|d+rJT39g*wiPp-7I_o&2vcRIc`748F_+~#6^Fo_Z)tIEazUV z{N2snT?EI*pP0jw<@Qn74wG8S1&zKjUr3LsK3_0-;*)vn1SCYVq@Erww&x6h&qbTY zPgM(Hn|xx0-*z}l!)I~qA%kjD;5iJnWU%iv672dzp z3k3V(;I7^K;7AREN%nPGyx78Lf6KAIhH6!z+B5o4?IrzD1DAx4l(@8D*#`0R+tiFI zAFC;q#~tf9ZTzM~EK}q8bK;g&jz(c}XKzRFT|?aj?H6|~p?P_02#9EtUg zNklLuT!~QKDOoft95|vcdb0+2Z~o{OD8n%oc`pK@p~kL6sQwVL1vzJno|gudK_QB~ zvVZ@d65v7tbcI=A;Y~V)_W!D z@&3^EhSOfeNh4?dwMqefVy5Rayh>uw77s3e%g4LES=ifhwsaO=_hHC0zyG6uNB9@5 zrt?R1^}eo*rOCFsjz0?P+Hc5;t(%*xmymRNcTKB#-FxGtEbAS%a~97ANkXp+YKlyE zaGJrX5^8fw1>iK|Ox*gdonyP@PbeZUY>6RbyC-w~T<|4kUuuoNB7o5=GaC_$kRRZ= zZ;t~U0bB#KR6zhvC^A4%sGa-TiaB2zom3A+qV-A7MNI=Q2|ZfH%RL3g?{xb;Tp383LgbquJTy@B=w~tmz#`y6IHsF~xBNpGnwoUn?Egc`e zdLeR&L%z^ihb=kJk?E+alwz7LV=cKYumX*R0WT`hM+OztAQ_c8KypJp17z3vzVn36 zNkyqKP^KD!YsiNrQI0*;1})sIY4X^C{|U+zLs@j|QL9b>9SWS{m!i!A3XZ>_`8z)6 z|ErX~6CLcOVpB!>Q%YvU7hp)$Fa&HCXMX)zYW_SxaBSNyu$S z%dqHO-5Nzio&%eH6CH{>|mkoRDfk(U_VrTM3{-n`^lMw`!XzTG?ZAF&7098H?<4Acj9?T1uH z9oc7^F>X@bO0+UO&kdrUa&q{KSY$CN3q}{`}o4 zZF%_vcl|lv-EHXn%8G5mNN?|-O2hbXpV+o_E+HnzW)@HznABV2kuQr{cn%5l-8^mk zVNLJh&_QWE!2k<)o7|=;$Yqdy?7(ln*5ULVCn&t3QrNnz(4H+6c?2t9N{&5elSdJB z*X>i~P^X8=7G>y%3mdGEo6*%F<8B*XB2r4!s7RR^h2MNwWz{xi3qnG#Qm;*~D>Bwo z7-2ck7r9U@TpQVv9}FMvup$*kQ{WY4VK;}}08CH4;MMwAio z?GreIB;GX${0$w})4an#oY~V4BsCvJEVSpVx@TotPHQSIea<@J%Qdk+aMVZcPDq7B z_dzoca}ofr2E@RPx4sOT)I)xE7YKREM_#cr7RSJMLPeoz*8uEG-whV$Mk8FnM8aaH zS3Uccz%Ske2er^kFq+pTJ=g>YUMtwyc*-xhvLK}?^>e!O*@aXa@a zLLjXNkE7%S7XBhQ;c3v#!ijGqVl@jbk@GIUlnRo^lNc#k?BsxK*Oy1|PohK=Dy=dW zLq$bs{M7~P!&Z|+N?d~0-<7jid>0iPS)ni`hdE-%1Q#HTwt)zOv;AoY^ODEV% zt#pB8_~}#RvtzUF_fC27O5M{x2lm&m=u~6d{&IPqLgHJboRweE1ZwW3!D|TflLj+P z*o^M`S7!9TfC8XOD4b=CwSEXXsF(H=_*9GS3E)vCu!7?=K+>DVy?(-aaLAm`7Dn~xWRb2mnr&-0`Z-f0=;Y*l zywdBrZ0*%Q(9xBWoL@XgyrB{P2D3$vLoQey_vRZbGgn_ScCpW$9StC-qe6_R+JB&< zJhDx-wX~a-G|rDJBNw;Cp3D9po^>Cd?cYe!lYr(EEa5=LwFr9wK^Fpe%q8#m%z{G< zZo)PcIg^~E0pBOK;FG8Z_Y;t&|3}Y>3-%QEDMiUub7{(l{-*1@g=e_LLpV%emUxJ< z0$u+_@&TUyh(Kt}QjzttpapPWddpn88_*CY^)3C^<@e6^ik9$|O|e_fN3V9;@Avc$ zu?u>Oq(_N3aB{bdpgeWxM;`B4w<*1pwNv;^wTnMuC=lOS`jDG2kt2Mq3i$y$f%%c} zV{qc6%hTwrT%^ss2Mq*CNtI(G%C}b-q}V1p46?i^Q+5qy3$~1;&S>+6+Kt#&<{Y+L z)o!*B52be8X;hV}H|Yy2U7(O6Nc7kEi<}9cE1p#esX3o@0>(m2FF7UT9$EPoLA$#- z_o^`6zO5^lbir$F**^h-Au1hz5|0OHssuBaw$0HaNo-U~QjKHUWc%ys&XLUcVKL>8 zSLG)%6fI&Hx_14OD^#qUUvPy7CTUJ#Zw`H8`YqI~lGhY{49eDEaSj}d2`v9nOEkPH zpy5yd_cXly-#O`F8a{1FcK;PF+6E$dRV$ZkNmzr?jF;IpKTkd;>kAznCF9%nRz2O` zx!!!mJyMf!YL?4&RSUagJJd4Xr&@kIDvxUG(;{yDJWnXaGMSq3CzR&jj~=&~w-t`P zt&$PuGW~198^jUk>8w{T#y;St5wnKIR#h-5Miat@lLY2h2u%{>S^ju$gcg*NHdMdU z8(DN$Bt?v>ZH^qL%1xRCmNqyDJdmFm1Q9H)E-spTTRawg({N_RkUWY07POS~&{D{! zINyfcZaxb%7VMDj_?6Ecdpr^M63U?5odBzR)(puYW?B&664o>@Gpt(Dr=R6Ox(L1+ zV7r8*!C+TNjxiEb6xXkfb6S@;H;Hyz!LV3I*0fgi&}G`n4gzsJy0&8~S6r3gXX=Tq z^KqlsqgRosXTgE38ikgfmMySSXl1(ZnJX`|zlEnc(uX?%b)W1Z89O8UHOf&5D*)W% z{d8`0pr3PB=78r&#O_gf4qNrs7G^nIyn%C^~9vffpV@Q&-( z@_A@Xw1T}AvL-fX>T5<1gvq}Ndii9}mh;ROrKxRw`~Ca|UqRwwZvsbiUH9F8@0$~) zwr8t~UT0F`WFE!ob>1W8exCi|1DE~19;(5&84Uga+C8O;*1ac9sb{Fe<7?`w@v{%h z1*n=;!fEw+wgMY0i8wecINZAU6SM-gF7FyHyLH4?{=aPPO=_X|Zj1vX8wIIc6 zETaX>^3|ZH+oFNv5W36>(vQd|}}MZvSIbBZl5zokzZMIDuEO40pPVeazk&~{PP zgC`TsZ(mq919F0aE%bI~46;iJg{2!2i$Pz0ux;lC;81*g z6$r)821NHV{r89{Sw2~NdixO zwASta_2ldpkF75|rlu>9ObYr8&zN-hS?da)wW8%v#AsPLE9D_}&CuazU+3%sOEXSS@VjWLPe+K5Gw37a zLcgv7Hx4iuyjI3caA2bZP_`1M=*Zmz2xVJiMb+y0=49(HC12`2DaxuSZYZdf0+%0i!BZ? zL<$sUjxY22)8LuV(ivQv#w>XBzqwOis?~Z?=#Tb~zjn^QZsD|jz}*lHuVw{DMFeik zkn5cNF7#My$CsV^o#Rz^Md6AcU2|QD9}HbbH^b6$IWItQ2MVlo4jUn6`U##Ug;N2= zp_2%&L}o!AN-8Muf*L6RkLtY8!?P)4Dx&F!m$Jmox=|o;B$zyiVTI0N+0PAs^VPV4 zOTvP8mkc7pEZZCNzIih_dEK-<2NPrj~Yj1S`K=JL&bE zOKno$%!STjR%py?(QA5jSYXIlLP->96po8i57RFjEWXLX!z{!5n zv3Y8~Qm9SG63EjAS0xxQ`_t=5Ool5buG_c!!sCEw5USf(ps;jGmqNDX5ko4@SMpADm)BWqwd}HbLUEUitcD<)odt{w*AT zGiKRzl;NbV1odMgN%!m+dWAe|neQ8v{c~PIPTb1&o^kSb z?c-|c4hG(>zo_Vh+6Nk%O5av{3RV16yD`SQt3)3h2aDzO$uYcY%Ni-Cf+WdU(U=G5 zjRXsWlMIDPcjJrBdj{Sr#Y)Xi;XL!I*S{DkdC16}AaK}g)~_T@zrmFOMV z=>y!G3k7LaEKCstY+gj3IvHT~9ovCCEYY>r;xpj%4sb2GQ$OV4){QE$HlW7`E_jzU z_B*ZLCBaO5&yIqQ9jIvVGMxzS=TK?6AJnLl{c?&)neQ5gKGle2J(&w!gz^PUeA(X? zM|eIm0{X*5WlW+_ONkW|-kKF#K8ED18 zj+)C_LLt&ydYBB#PbmJqRW>%4;$z^QFW0vjU>i zO2rg_O58iX)_A%eBW)8>tXH32Sn*MQqvA#@yLkK6FE-}(%DnzZSoLCog8EZ^NQ!r# zF4q$&SEOFMFKGz((YOXD>9N-+8+C3U2mt8u=KHq7Pw4{?!lhlAeT&giZjm$vlWN1G zuj$X@kMjs*>K^DMh+DM4>yL=s3)6J1vX+>ZPhyqiPDPMh`jOlaw`n`@qKPL(@QY_m z0Z1~TesFgG#!`riCZ8aeVnYbSHrlBRAyd1UYGbDEs%MyM4p3O384Qemuk{(kv6qW< zWO9F9`<}c$uMYACnI%j-MLXkV9vim)09SaEI9M-=`@p0CYv+-S5@4Wt@gt%vyQiN_ zMbuLn_HbT!D{x*;!_G^v4;~>$fLBttfcz&@`!dr(uJ->@Igjem04(4K2VEpAmUIG%m;l`;IT4s^wm}_sY@VnHj*x>Kzz!4Yr`hss z@(V99@bs(@|HiZ$Zo7TQPgb3EDr_q|WID{GVs~O0{Iu#o?}11r`dZMUcIxIe&jhqho{jwHMJyHQ5>qTj=E=FX^EZsT<+Jx=PvS zuG^0UF*V>b!jphhY9p5QB9EfMP~_+VZ3wr{$v9!2gEs6%dX5V_f&=;=Y8m?IF-Q+3e>vGE4p^Bl(OzyS? zfObHrijF&bRuLGht47vJaQI(+Z%B3ufQ$!7~U@~VXB zUC_OuUsb+G(*}OAU*(mADO@TUF(?i&Pj54_4C^X%)!BU`OXk}tpDSCRZTO_P+YX_kz?n3THr_r()wU)@_Ucv8-0evHML&ns3YsTG)=QoE8*rJHIyW z3MvVVMz+vV6(6h-j!B^6$?YR@`PkL1gV_Dl3%ww#IYXyt7DzN@QLzCTK6OV@~Em2=)MUFLU-kN`5L@= zYwp+pwN;BWR`iY1z*ZVA@=>eFtQOD?D@@hxJD2|zZ`}$7(4x`>nBtZyo!+jrGM{C zgv?2$Z=!?q(!?#fLsSkYvwRb>sweF9^Q-mO4o*I5bq-qz4Zde*<}svn=lg)p5QyT_ zv!!8C{B_3yr|D(@rjz_%>lEMNPzwBfaH938LLi{jR9y~r-wZi{$9-j6C1-9DO-Nkw zj#iby-qB<9vanRoH$#&*YtP24$!?GsE^rUit-tUMfBzEyms%P1N7M=-vxw(Nc?*RH zPcW)9?#Hp*v-9)KUy`J43fhLggeDtQh!gF9Mlcr5_I!Ol$hWGO_L;afYej{$7f>yr z7MgzZsp4%_?_j_r+5PQmK>m*K1V=Rrc00I2S{Ji&yY}N}fdi{XF0hx|wsec!q-O&C zGXj4bmwf5QrQGK9CcFrGeds&je&6ia&XyN@@nqZdYdn?MxFJ-;d{`l@z8QSsu%E@D zW2c6bO?Jb)pyI+#y%VNEge`B^qLW46D%}t*+;v^nmV4vdDWg*27Wt!t*T;V39ehuH zw$*TV3SJkY)XWhrl}Kri+z#b3Vp~k_>Ve*@uTRnwwEklC*W|Ir|Da zsmJBMHF9?gI-Hd-f;q?}>TTN5VYxtia_OA-s(@TiDjSV_5w&$X2tPAyF1O9|74!KU zw}T0fR?SdsrH+$V!u>HYqY41xu)V7+K)cN+ z`>4Cw${3n1{WO*4Q5%LCUK4DfsF2rn5#5#ZnX_Gt^7t@RxxtY?D@(=DM~`qLH$bSk zc@l-)Z~-%FbFEQw-a}2!`0S;S`r$)idv`RRRf`UOJhR_BO6ts>?c1yG&-HfDeR+5p z<~5dM6$2R_X5?H@r)PlO+SsnyvkJLbc8nd1+S}$KoIXPn;)h8npr5VH&H6N}`rL_4 z^4mEb^?VeWgrrYIX2bOYf3duCrJ9rfFFAbjGXc1CuMXT5!0wa`pV#1HOtp283##jG zE1&87`E4NN$kCA>(K=e|M1KmcUU_s1oXW0)6b`i|Qpx8wKwnNaGKrV8c2tS3Ccl9y zh!a(q_57kd&fY2)!e=*Ukra~`PzG9ngb4ift$mwceWzD?3sgy|MIOgL9L4q{_xHp# z9=$->D6swOpziC8$i_wFXXtJOo$G30UZ?)Y!Te?EV2-lcr%ZS!kx(aBWtlF^POQG! zQTuoxK=9+|uqQIxMXs0~ydkT4aIe2W$)YG2UK{{#-z7Du`fj(@ubqQ5e9Bbw3F~WF z-Yz*Va;a-)GrHc!e9WL|GoTz*OS2>|2P%~-)k2-daqkhopH@JYpf2zIbw(3r;g>61 z?h9$B0h|77I3wcjvM>ccQq#cMt$XL=!>|}nzb)xw>g8zKYfCbt1~4yy;!(oMJQ}tc z?a{2_k9Pvsf9;ObuZBda>w>LyLYhg5Ci zx~qTg+jmH!L!?V4wC)E%!mMXMszvcYBFT~I{B+Ap!Nipb-Jw%!hIXD52gD4}=#g@eN)6CT)`dQtvz;li+O56;oGlD4!ZRu`iq`$ zZ<;H8H>O!C_SlCp^pyOK?w1Eceb*y6W`VDuDcIEpU;QMG9 zC`^7yz5_mR673Z;f!F>E5Rj*+Q64tjLG(vFu%yA-{2mSsOf;^;WcD3v5ZA-3W?&b8 zqEnGYt@l`%JaVWdl1ds^$8bPx&5SrJnwX#p-Iame8x#_p{7)kRv z%@v(QR2MrIH(`9Q9OypBwx3hzijWffN?r~-13P)G%~(=0-Vyg!?TYw{%$&|27`CzFFoux*W8t1S_jHZ7|V2a6?t+jwK&6 z!tP5l>mDbFwgIn)6TCo^FkLSp5u;zuP3m+EEe_r5=ay~-h*!BVeZ|`DDU}KLh%=ls z&x;+wa?heqMBUVTCzhGXuXk6V88rH2#DWus0nC+Qww@dV^8 z@Af@&C2!y*IPjPt5T%Ca@O67u0d%i}W%g6C?iyEXfJ>L+ys{r9Y%#DI zBO<3mp+Q4P!_C*-iWLmMzVyLnqB~frU1IO*#b0c?-+b-@-Qdz0g9XtBYs5-N9|q;> zI=|Zh#vs&B7RZR5A$iQJV(V-@tKvpjJB?qLdx2S&W zP;=NIHN3GlN;{u+g8UIDbu+y=E4gB#lhi&Jk!a7j@LJi=!zKJo;{^r&V|;jf@wYAP?p$j;3c>Mt<7tC0KB}D@~k}M#3j*teAo751R`HaN- z5Jx%4AaLx(3cbFK%3`|+WjgRSJPS$?ZFE40NsT=3!$38`99=pvMeNjb@m;X!TOhA? zY%;;MCadnWdl#1imhFs}WJ_RMV7=|cAq?w(Y-8j%NNY8HsIuR>THvcc{;m)my5FZi zaAJ}B6C925E0ubjc&4LTHpM#4bL!Bvy=+I7(}_kUn_KYY^R7Z$#G4Lgacq3Z%}N}7|4q*k?Nu_ zzaeTs2A5vcIm~hEO!u&!ke6*&%A2AZUv`j-cI*L6hbaEbP;rwBG?Y0DV%Ip(t9g!z z_xW(Y9XP^QFAFN^s2&aggDm3P?2;j~r1mP?6JLV`vNnmcuUb}3t+kZRe_=)26hPf> zXViOSoietX6rq$14ca>1pxNa`NX=Cx+1_gpmd;*#AT0rBqhhMcL~QfA|wO% zKHfiflNKHS&nP#?rS;t5FSPS!f2W;?E$8sPX(zvw6|j_HnAWwNa0{MG0G@!g7{rMI z;GB|)9y&YIl<>?hVJj?Kkw)N7U}jMY45Op zeo1_&0UP%mmR^K3(CZ8SP4HC+>$S%2q;Ae#;^g6RaI8P2svP}pA2=O+viT!C1Kbz} zk;R=vr-0+@{ceqnG9k>zVZC zkf^7%1{WcTtDv|wh;ALCSv_%Y) zhj?EGN4Ll|=1`Qw_i3Mq7V6(06?_}WSKg}qXxrBiOA(4ZLCBlXy+Qc-0x_I@W&gIL z9)wK{3nDR+$Qk-wU8+w0H~JWCn z&o*DG`Vw9;h&Gh9^^g;P$D3mv@g4|Mv)+0$5ncMB!tNYh|6*L4Z729i$j%V8ryCNv z&-sjzG`dnrugcZZ->G~N!EVJ=zP=76X|@gVnn#s{F?)ujArV#ht;nP~Tqwu^$2w<7 zb!Y~ZN`IoS_1@-K^rW??-C3+93$WUn6FU;v5-l#f(rNkc)T3p+>N^;@))}*3ed&a1 zhxxVr!IV1*q0kjH{SE3oV1#U#Rzp4FSEKEkYwYY2k7_I&syPfbNtO-9DB0v>Lt%}Y zUMGC>?u(GF5q>;EkjT`&D9B!%XLM;uTz9~6Sg|q3^lZ2r+Dqz}+9mY(y^glcVy_Yh zl-^7AyCCDrCWRtSrY-cfP?QyZDem-=0h5d4N8WSJ04=LCZ#^}tG3p!$Ry+8}rr+{d zXM=2Uo!LM=rhFCcK-I6x&-`;LQ5WXysop$C32VCL+E@XLeqw}TEMC=tp{%)n_A64%2dZ^v9^i$K&_4%?zN$==7-1bU$#SFRg+mi?EXBUsBvep+*f{xrYT8WZ$tiW=@b3*`(~f z!?lwfGTs8g>?|w+W46a{J}_r9xVsll@>1};y}CK z6T-^soX1Lj+Tw%Wu2*^GWh5oO(|=JwL}56p#Rc+yXa2n16Tq4Z944o0!D4s-mPMh4 z=(-^(Kn{;(-Za917<${d>`0fc!&>pdQ{vY>fPeE_nBF}x5z{9q0jCd#j*>&6YNB%Kk|dCB*kwiPYn1;f?jZ)u+myAI8!H$RVHbHawGY{LRo+#$NhUDPh6K zob5LLRMm`qfF8`KV4$)_WlFtH5au<@<}(`a%e*Eg!lDq5=uIS76*iuO| z&Ns;Yc^szKdpVovlGjW-&Kmw4_kvoY*1M(A@#fC^V0tt-bac>V)lTSQ5B+(RMqqhQ zP`6?I)UPsU$NTM1E8Tqx98dChiXTNW2T{MQJ-u#~4{io_cX#7MXQUr5cJYHNE_gVb zMjS$fiXpz+jBM9@>GL$Z;W=2j9!X$6o$-ojSZvS3iAc>Aa7UUkzI!317-i?-u9kRl zO`xx1fY}v(SN}gW#ibdQv@T&kb|8R$OpL=8p*u_wav+sc^kZE{SBXAd(VwSLhhMm@V|DcusD|@-4 z*9T>oRF-?0=XWk?#H9rLOP-OKS7RV|K?Mf zBG+J<7d*l2df#>__uPwr;TPQfMje7zS>htPV7XeZWJp^8aK13A1awvXX#hd}Yc06P ze`vv(f3F2EXKrG=r6n(aB@y5)1tmi)A~=gFG@A;qVf*T1K`e($YlByb3{g^#BKK!_ zF@Jd2BqsjYU938VjO$>SpdK!w4G%fL(0IG=_>(Kjk81hsCVQ&ohZDlcWg?Dr{)iQa z<%BiI+$!X_ZT`lxp{ zHJqQEre9g(K~%GZ^7hp7gE7zI_O4)9T}33wcK-rvvSeI<5G59hWJ^|o+x{J`i@TKy z;Eg00u>9jU82aU$19YY@51c1H&`I0EaT}x{Mp{3)V8!|Qa06Ab`s<}$3zTaN72W>c zGn6yP&xVAYE~J%NA91%wuhCeSjq$7w%M;`nzf1+nRWApfd@zN-EC#lrzsg4YtF05D zeb`!v(Vh=(42w(``NcH!m~Uv4*TaQE3|KmWI2Cy4mP}Cl?Z@Kz0rA#%ab`xxZUkm-}t zM}!S)+sTpf7fkDA`|Jf>wi}bj`vkrC&w%$KTWOCOfmzDi%8gY-fliE5Q}}v|@Pb@A zpcoa74L_zz)kw*WXPj}!A`1a;WipRT6~T%O_^JkP4}klDoanXoM_6*;ylhhV)8fhbst>N`mRj)+>{Q=0 z`hiO%v6_5ah9cas1fO7kxBM@A=U@7^mpu?YdEg1nbGwtu0cR3Sdx96Q%m=KX;Myqi zJKp7>lcA1Z1iHdPkXZ*aJ9w~UQ9jSJ1DuB`;v$!;%PiarM8pr9oSr_Xf1$;8k+7++ zDEp_l5Nir0xZA$%;V?4w(5>rpwJSQvA)vIQ?MUSCH5<(HB)`p?47pf zFeANwkABc65_(CEaQeh0ck_vTTXh79{Wwkpo&jq9;)Qumb|#){mO zA#QrbkN7kuqTbl|UMY13PqiQxQ0e^4gZ-?!&UomxJx0j?LpC`8dx^9tc zDZS`+TV$kc3LzQM`GPLN4@z>mZm}pXIK5n$VEa>GdbcXl?y^D!0 zy^C~t7}YYWWVC8ObrnP1zBrO_Z?G?b0FB_gPWi48S{ZxYyVD|6v8-2^FsLZS89dIr zrgYJ2*2ahWVw9x})tA}L-tZKkjLJ9xraQh_)=Uet2h&X-z_6zf=*;kixefPaD!Lyp z0>BQvmQGzvpr6DUbX8>2=7U^*>e`z?J!(*|hRvKsqQ~Lb8K+K*h#Jn?A9ML9>MKgl zPI*d3s-!(AF^OXeCZBl5d^MzOT(N#_t|{f*`u=;`*1C32hY?l-v$9Olp1oc*?T$D3 ztI_eVVa9qFs3?$iOaK$Fe|)=7fQ8&S^uJoM!iqp~?sQ>sy?jvk72firW{- zMC}=kR7{7z9q{YEHjpdK>P`?jAiqUe4iX^OGk5)NS6(0#qcf*mBf~=mesprTwKy4KPFdwfnKT79W)$a!v^()EhqPX!1|obU z5`><{z_4g*x!wn!Ia)@^+ly&DoT^*CuNqN4)%2kW2i zaa1P9z;;46n*rO&Nux?@2k`#nf)IXi)|r6$`phKLP>PBm%|T-8+9s55J13qT$?@M( ze~UrQGV3a}@h~%HN^GlW{)lc?DmLN?TqYu3oJ84=9+%Y%Qr)xRCExWme5>BCQo1)e zN(um?9U7_nyd(6Ur=x#GJ4dz2e&;p3g7}UVzRz!nLZA7SSGCp%U)CpJ)!38~XW;~5 z5MHY4^^~v*KwFmB8F)kBZUxWYf1#mHUq8 z{p5@Q^PI?Cda)|nP7d0p9#1x3cB}qy$C8fF*i1f-rVfyUBm}~lO)({(2I9vG*RsPp zDtoS(iFHdyQZu@uDHy47RqhNIEq}9J52xYr65yOmK1tXhJuCvJe`7lA6JW|nm@TK-vVp84epfI zU3$|`Xww&Le3LYFAr-H324kDCp$t_($Sd%xB1%u;KYjLHV{~il1%%H7%{ERZ^K*q$ zjjMLU2RU^Qb{^6Ce&9(#m(eKd6Qk=drdRzx(%u8A$#q*7#)`TW?5LEeAShC#D4nP% zMFgaY(xRaB-fN%defQpHpZniC?r=oM zT0;!vd&`{9e9DriVfZJd1W2p?SP)R|HM}HAC6xLuClkOXs>$#JK8q~aUX%K-~EpC4Dj7`XkBIRcK`pA(S=2W!O^Zko3goJ-doZ{DHFJ7x}L$;9$~YGE#F z+5=sUl-(SWgB+cTb>-k2m-0nBS1z`d9rZ@1$CsgO^M(v(hZ9W~;)sznK zW~ra1O^)FpkdCD-c!=6gx1}2y!?iszk4XnVvkJ;j#IQk^M%=bOe()gOJ-nGoOzs)l z{+`pok(!BXT8BuWuz^$I!5z*bSzxl{D+$Q$3N`>O^;(|RmkdR zaojokAz52QE*onEmZpBaV)cwutzZNzm7xosSlK-6Dg%jz#ZX!a8N;Dhss zjErzFV3P#yBpb+jm?yofu%`3#c2o#jcZ$IMI2cbt?RD@0sdgmaUj1#)B4@tfyB*S-Lu)WJHS z6dgqDv?1*JbV>m;p`$+Ew$XV zNPpwpZ2WEu4X&{x)K6SmWY==MUHD-mi8j?Avzc3ux6gc(aalLrQ!`{pNcZL*=DNl0 zZ#dDqov{w-oRd*yJ^D2ORoUn*YBkh8bNV zD*7*me<~mgGHUpOplf`tZ^kaDq&*7^;%{rS$Yyp@NvV$?P5TR>3?YZ2qq#};U`YFb z+`(H)B7IN(jJMM+X&C(0Q#F1ggnfA-UZhZvBUy=6kOrF_*r_*&%4*!2&m<)i@|M-PFunZU(iA&f=&S@GpM^A@c6}Gz< zZhYtPmCIk>w@8QSiVxn%r#>-1H9XAPgqN&%-ISbCWh8HZ_Oix#@Q{`nHaYC{$K&%G zg=7qAEi0@3c8-_Iin_dU!dd7%D@e)^%vrg4nJ@$$|kEo9huPv+fVHtn1&z+ovr zFdZ5ceW1ha-_Xyk{ftR*=vnrJyzkQ6Jc(ZKe3ZPDm#j$?Hiv6ViENvH{RiH6l7aU% zl7mUztz_@!;ero0AMoRD-xCd|_0Fx{2d9$mH@S=K8zG5RZ|1`{YJhKOt_(rK2iblU#NpBC*Vv zHB4s6%4XJoWp@ew4?^kUVplZ={d)Hr1HXfN`wyTEN-NOrGHPaw8iGNE3HQvQKLd;R zpC`S>|264#V&Fw!()%yD-v2h~{f`|tum}Mr{D2j}aN-B@AyDNpc4J?Ip)6>(|A6*6 zhW?GkE}Oe)LXzNJTo@%qAr$xlUT*(Pu{WlEtG=6)J=SPxrFP$>jM z0vC#lc+stAv*51Q3wck%pax&#C;iH^XXbF}&SRHYn7BuQ@FOua;dV&Gg?xSh^W6hb z!BOz@FG2u2fSOqOKP7l|{2wNG^(Kyd1+(ry%rBs(0!Hg|Sn7`OgY}z$ma||^>oGOA zsRB_wFWqGjUjSHU9r5uHC6csny~?hYJ#q>D)tb#u{Yz!wniaT2CgiUUJS=J91GEnr5kzvuy0)!pB;BE z;gLuA9_ZS)5q{1qnBFWU+!MRqF4=1mBSyWA?As`tZ2o>pXp)Z3wSV4gJJBnUsA4Z` zDPSipDmk6z^BsF4>Y*AJQtMdtdnjM7Hu*ldaRXTMv(SomMDKGfZl1a4Tk+qSyx!Ro#tis0iD^rQyfl!ehPN>zf z@0%Dg7Rs5|Q8xf8e>GM*b?~GGl6+S)ULmc;%u>xl@92 zD&+%1*s;&(?bJW_ifOFvw9A&88{2ug7d|KPw_7@2P&=AwRlxqLrN#TrA#Pbaha0?n zCbxti9IFMxn?yW#*(H$09%!`Tt{BAmw5Q$GnjF8GGp@f^KjG%jaf+R#93H78$JMkU=slS>#(+CW;u>ohT=KrZ?1iU9Mwd= zxSg|RUNY+v-fa?gbqylcOI2+%1JNf<>(7)#VdQ1d0cfmZB41Fy_FtLFp;(7FIzdmzi0XCA^Yz>e*}AI1L55n( z$b4&`Yy^DKF;@ziQniG|HgcV6^Tn3vGi?zB7`j1->P z;(gODq}R z2+xVepQRHeiX-@ce z={E`)M>K=_hGQ6LjK15mIL3->1*MLw^)9|*zw2vU=7W@vp0RbtmIvzI3~nM4b6`Q& zZ-0+v-Ny}B3WdPx7^}kB+ndv~uDvj)9iny1Cds!`QnaPCS?;>l6v z#uVkw;!~u3l2ivNp3Bl7^dX)ED zpz-Ao-Z?*0+r9A(*r2~&Q=)}0)AoU+*=2~?nT`q8HV#K@O%Zz|8qHWP)a>ix^WuT zjux8NvpLyKGVd`n6K68Y3RR(~)PZ@PB}ODYmZLEfk$@SqGY;lEc!z|zH#E(vNCnj) z+MlkgHiMKlpqmZWBkoh)@PxTTUJ5@m=7F#{9=JZKOBL&;g%5;$RX^3ifyqW_(pVx( zzO1wcW0v9G=K2eqjDFxVf7kxSln6DZy=iDBS@mnIvuL`b1nD!Z1=8v(cDs*zZQZ*= zKXf}e=Vk-zzU2!C6qYh%{mR#;o@Pb`T$ZB*2yS8olKZ&gc$28h;PA{Gf zB|G-X`bKHlNArRN??6M%)EF6$z9?#7N5IJWkT{VR8Na`nTUrB#3Mck+ZH}P-1;}ug z{u{{X_%|TKvpT!n=EwxlG5jHyfJ_D(-5pkdtF{7m2CNeBq?r>kn6DhKLzDSHsi14<|v3K<;QXbqL;Ff?`!3Q zs=uPGyd4zzGy<34siV+@WjVO|$enb$ln>Nkoh-XP3Ox$YSy_xs4;j*Ncv^1nbKZ9| zpFPIHvm;@*y35AyDQucj3$z>MphL!O)O_KSFdcf+8n}9-g*vf~LMNJhm){m=xpwRV zq7QW$<1W1mNgvMIeRJjeaxR?)0Fn+U99A$BFtd!J#_NSPltwuj+1|C|r7iYB77E$7 z%tPGD3dm0hk=4W{cGkkVwJoY76J?nWXC^GKpl2dIt@_m^l1-|@T9Rl0mGleW@C z*V@t|x;=)I#ai~#WdjzrB!PX5|Cw>Bz+7?)c?l#r%mXyVU>~Dhr-54uZAE|X#TE}( zpD(A9#Xec}Td9AK2v=v?JSeutF;P>}HR%7mryHo$j4);|2$0})cfIbs(pL5)HtjoC zl14=h+5%E}f^-AASsXm@j!nwW2OGbSobZOmLgXllQ%&-webtefdIQ}B<|RDz&d@+W ztbS2qpCMPJnt36_u?ZTumo)VJJ2w}eUv#64VbNd!emw?%!W=zJt-ald}br5OsX!Z~x|$%!Xb6S3 z)SeR3gP0eRZQ9VL+R4xPHUwB8+~5%JmD}do)nrDVQzKY@paBC4p@;kSW_)6`!p*pKRiTOz>O_Pqk-o^$r~>ZX%?Q}Owtm8*sB|;V(7KRCSS2p?`>qj zsB!RpbVESw&{_uCCp;ZwStA~iG~y=LOU4w>`s*%bWLGA)h3vbwc)MK)r7d{tP6Wqy zOk+)R;{FD%0s<@9kA&8zqR4W%@aoQh-oQ9PJEl*DBZZfEHB2Aepv4@}c(@^t9jG%3 zc@a?W&P9mFzMVuJ_VhO^0qEiuqxE`{Lj(Y-2BlF7BS~#ZwjrNprb0eFj8Hf9k#Ikv zaHVn}+fNZye&Ny>IdKD7b}$&SUn5_^eikTQ3(!hXh0m+Uk`;*XHKx;#Yz}&AW8n9| zM7IGWmD;;3fVd(q<*D>y0g)XgLjJu|-N&aV`%qj;cD8mwC%jf6mfc1aTg8%Vu|Dy$$0$Om~DoPUo6Lm@D zg|ei7HEbJabk{vVb^}eUBbk!-_GtCah|FF{xd2ax6=f24Dm17jUZ?1H5FFh=En-IZ z-m`B$Y?a16DL?Ei{*($(VlqM@==-;q7qiancL$7mzG-tRfp5A3;G@YUkPfwz7c94b zetc=2xypWJQn@xUfG+y81UkbPY@V_sJZ#K+{uxU0jVaAI^%t0i@M-6L*FMFmT)vR+ zNiO>@h+#J#oB((xl-XLqwRD9puvYZAWr(c8tEFUv0~Ifs3T)A4jU?zFh_-i&3*oVfx@BaYI5 zy$ScmDLC&JwH(*cgXs5}-94QNJ!#-an||w(@vY`*6{oPZ8(s(-%1P*kt^#b>X>C~L zC5dwx2U;JB-b0dNsObzu@U~z{jr{)d^7r1CkJx!f_PrmCP#Gme&Wp9mw&86eU(P;1 zapDe1k4n(MuR%}$2 zR)~fx%gAy3hC9RBVhelKiJfRHm3*?prjgbTZgLuD{8G{HUh0Pr$m zdsTpy_tUdMY~PM<6p>oDe}OH~cfE|C{uV>{i@M=Mp{RXQbD%DZr~C5$O0Lec$bvba z2%$+$CwE&SgtMcaP??A%EU`ST>&4Vh*)m`4c)n{S2$jH={F~`JG-^Aqn)L@+-=ZYb z!opG{w}kUIlS{sQJmJpbPgG;yy=2XGNPuuzqMDofQFE;MFV;KBUv^p5Ix{yFGxUMG zQxCXMA7@q$L{O`8xDT>jPzyAU_aP z6#&R124Qre1mG>lJ6ZAsdbxVj;e_gmk7LT;j&0rw)9~u8o6?4mj!yVyFDhK`odQPA z%NQ88X4DOyvvp;KrqTcKmr*g$)Ew)B@_>!QdjnJkQ2Cszzp5O4*!t-Vujw)?D*OKpbiFMEF`9@Aj^1Z5+zxCvzyB=4Td9yvLHmBvWRVq~hp=-M>kC?EQ- zSjeAbCmWjrHgB+_m z8rQ4*%~bX^k2e-tvG*doM*e?69Xg&x2>#7F8ZTn2osX(as8agidCmFmgaTlG9n}Fc z;w%7y*Jgrx?IyJxY;tjgn82Eb0rcxO@p|P^`h#?nw=~>5)i?!QLrkgmf9Cxi}@}U+OOaK$fPe-8cRodi&P?}E0!YnQ2B@X0DzgO*zBZ{|qO8kN ztiyL&DUlUx>dhM&Txo~!Yps|qjrlF=*sav!nPVWd4|brLy^h|6VX z_s&3Fs%m!)ihyC7BjdUCfExoy#{f}e6;MSYX#NyP-~TRNE_|9g56=DsL?c@Zl+5W3 zEPo=w{x+$tPM+9A84RP9H!+urJB_ZJp0O(3707|L0R~Kf4h;WpeF3<__)|4HYi>Rd`Bb1O?cse_uefNi9KdK(F1qW&9#81m(tZ&uufrtFl}kjF$S9H9VDw@=3_2>^#yCrd(IA=)1`_cc$cJ z6PEzIwJW(VLV+D2b>d3-OmqVV&x(H?w9|ef%&p8) zsl3RvD~G-q>tqM+uuR{K0_VzZ3q`0-In;SgOp48f>IFW! z74Sj@xAinru1p(*dA-a{S&$HkRLKbGHMqv9C8qdcO=vH@x!~i@^}*WX)Sq`Mwv`;{ z?$v9g%}Tq@KG-KHq?g)8Ay~}=oR^W$u@sx5z_8H#I+@e0a?v$;tmQ!nC#TvGV9g-+ zebiL1{bJ8HIH415sgq^YMba%aKFx7k>$HKII)6}l?}L5ui0g|BbXD^(H>^1)iz!Ru z6is`(Lhe?AMDTIA4S}pg!rr5fk;Vw&K4T{$eiD_~^bcQ(c2_awEpd_YBOgo&kFDgi zS@S%o41o1{)^Kyw@g_;tm3`z^x?@i}=EHXIh-buDzKfodpsU5{1kcA+%+RF@S0$lBzv&XM#gfo-$!8?-59iKqEGv=13Bfy=P> z-%_-H>?jZ~PDnbi*Q8(CR9ZtvmUqntu50{)nSrX^zPwrfBN&Ze|+H@4nGNgcjPxaG!@ zSH0V_F&I0a8S2ORW$F%FMiSghZ@!{~b;O>8ARuahQy>)vBPl=hY$mh?pEOg+!u_w~t8?crKSd4NS;a>R+()C^&g zzun$Wt@fqiAhn4#T!_>Q}M`{(fgq_4_nqtH@J#Z6|qeZh9U&p;UFF%}BlYY^<@$A;6NvW4X@1 z*uIa^L=eD?3+Fb>)9G12ZkVjCe4uhRbe~hXB60mabSw>VnZ8t`8Zs$kFx+$FdBz|@ zk_@gxmre4fj4jlBPxU4Vo~(4?Zt!XTGsh3;YTjlVWMaN87RWo6I>Ab5!%|u-5d7lJ zP+^~N2lfuHxA$K}+{)^iaHLInJeb-korhM-9GL0dks4Ie6K1=(#=4#%jl2k76WF=+E??DJMF)#BSl48>i_X4tk7qV*t8G znB)S-{t3E?fv5Da`r~ofmwT=UQw)txT;I{T7y>^(SKDOiBPiA6*+%nwzA^HND3GX~ zPxwaZtHkI0eE}@$5)tGubnHG-BbmE(+&=EBzLH1TfD+wkNh$RbxK7wnUGd|C-EeCS zSzlo4Z^scTwCm~r%ZgvxJfuc!m7Nafn?5mvZTkxIR?=&Ztu(lpz(*f!6( zfbA@g|#EgDhF(1~O@x?`Z^T-UsTGp;_Mv<6id5QBli7Q>eSl=Oex{K4-1Ux9zS zcK#C#Z-Pa0hBtvJxQh8etHe-=jDYF#e^QAAHtgDGkMnmjFe(2*#`FvzQ)?2SYX)B* z0c$~!k3nhoRg>=%`L^&H9y@;B7KkcHSgr=$c?#HC_2&T&rk6eKeq$V03nH{}O!(^; zBI^>iZW(?Epi&gKtAI8Ia$A8+;xoh1e=4X3L6RW{=u*STFEf(XjJ3W&oe@^Y4z%YS zHx?WDkijFD$kGQ$jczWkTVYb(-JiDB zee3qA5#=9=QS|Pl3T_`kGE+!?8__TcEq~QXwozeg`8j&O^AX`X2q2pNM99z;$CSrS zimlsOQA?%P_sz>*^4V)wt4$V^lZua#du1fbRu&pldMoS6Tkcd&7GIu1=b3Q|DTS(9 zYny20cGbqNCAdoD)9VVJH70k-&uG9d>X1it9H*p`A6UrN5oYn7KAFnS^TL0%MlUF* z+D>WHsg6Caj~5aft#>q#%11?XGU)Z*SeS#`1>5~a_JRS!v{F(=v^bi3?pCr6DKFPe zUpLC+>czlE{7A0p$SM&K56lypY>AdFZt5^=#v6@ZzI;{IfbOJC-g!uUORA2qPUjt1 z-dC6YG_pEUd#91}p60qU?j`$|c9hA+!zu+n)~lh@K2T76JIZs1=Z1&== z@}rR9F)%?scUNIMg@mIz*+B7US+`zc|7u@HdwP9u-gQs>kBFI`6$wNf%!t*v5CL4O zfAI#t7iXc~GSErj2m#bQ;VZ(?uFVt>xc6GnY+6Yw&r%0}7+9qEFR?iw%-jWTd-Z}1CUk^K~bhm&#AhdVmh3iq)!1jX) znu4;Kh z3^P_Y4*x~;7LJ4eFi)02{eg#ncmJE_#rB`P5dVdN!^nd8_>BNWIuqC__N+WzIhxgF*wjY7v>$W*_tp3NOjNsif2Wz9;Nh>n_0nutQ zu5$?%J5O`==0eB{A>L4k`|z6ZRj|P>!nHg_b*g)+OKqK9&u7Na(yDIe-I)>--76Pm z#+y3K`Pet4iAxt!cpwlK-QU3BlB_;GgI?@-*R62yMJn04r@ za);Oemn}oS4W>JiV7c4UUl`2k*H%!TXFV)TQoD>P)U!Gmb6o3% z{<_IK{p3T9k_9$vW)5K%YlAyT;WE12NU>-a2wQyy6oPfD7&;tE3AfIt1l*^VcN3l> z6z&W5%__nsW-72E`Nav5EwKA z<80u>eJly|sgLW$O&#T`H5qX|Ii&jVr z{2m?s?#_OjJDi6)&fc!?a;qL3NRSPk!O0CLiFJ4xC1+XR-D~tM;x%kW;IQ`6HI(K0 zQ*r!iQ$6K^spR3s`?W9nF#xdRD-E!G)@^6=*Pha(#raSErF(|H6=)nCo7%|HW1VCk zXI^xCnex-?vI{HaJED2)aKELv%1!16+6x2D4@x;(4(i@qI>bG45N37L6B<{$Qp5^pgY<#O|q$F=5H||6xQ8uMRjcaK)DD({c zxzmG3_9PW&+1qV_UBIE6&ERwaxS=!%a}PrpflzMT1V&(x?e|D2RvQ2;A=fc?+Hj#~O`05&FVfnS8%GPT9Hmc`%2zkvcC(yHCfeW= z8xYUvD;_ttirZvhL!nJ~Lo>`wV&>coM zX7=hNWo<0<+^QQMdvwN>cGVGSKDD%C954f+)C;$0@Tzj+lV)r4FZR6*mF})Fq+TDzBh1~*)O@xak)E^QfX+!!w^^+h zz@VY+%k93_DkTyD?V zC_gp`MH}iyH#Y0&eCs|{Nwp{#Rg6L}pC3yi)~4=vANDE4+VTg0jALo(V@h~x4r98WDol7rU( ztOji!JJE0HVp%Z6lu}cj)ce6J8l=u&zDD#DE|snT?qFQM&PpFOO`XGCr^wtTsl|3t zKYkvzj8Ub}m%O{IW%=Mkiq1|FSp}^vO9;NiLrHK--E%_W#r(zwPW_E4?XCrp_)&|b zdj0J^&Azz!S9>O%zScK&j;6)KH4q(Ihz=Lt^kdi=-1NKeYdnwr$p#OyE-q^Id>qv| zkC=v$&AkVWTUSn?9?5lroN^jWo}isG@SEwVJR*zoJgGI4u>b&u0PbTzJILqn+-xv( zZ%~+Jr8GjZL~YW(w$}V1|B5bQ$%gDFej56hy1J_lo95|kjvY=l%P5oKl}kmwC0<%f zp4vtdok}YG-s02?X7`cEpkKwr$BWC`kmT0f%TDbv=8d?wHZJvusytQsWv79~Q@;3q zq>9+lH%J^_rml0UN%XIywWO92tv9O2?w%u*ML%dhoymD#<55fBes7MSAt7p^!J>j> zrFabC7~-nWhz!n%;>4~RVE1t2WUJNTJdN+{hc+HXNHxtE-rm;)3pc(^ z{esB#WN+QL#U`H7zaO5q2AF|GXCvwCH>GQPvDqU$&75QM3g&!Vho-jg%bDL`haEz6 zJOOJ5HiwJaaOb*D+P^yP+5b|csmW6*!yjUI_m(JVTYZuBYp0L(ZZH>j_k~AZ%|ujg zdb*<{U+456HA%%T!8r{L+dTzPfTuZdN=8K>Ld4wN`LUU41%N8N64!q1zt4PEEptM_ z^zWU^cyyr5F$QIh$r`x;`+%k=^?k>du0dVi%*PdBf+x0N+3pE<1QFqw#}46mVld^A zoJJeNesdJ;#G2K|p@%MRHoyQ#PJWFcf3PIvF~PMdpC@Zgx-Rc+PqPogH@NA0l*n+i zR7*;bwcEk?4B0xp`b$ofFeALR3H7ZSJD3sTkZigH_cy=1_=Fi>bpY@+o(3{m4Eq!4 z&vBw_5S+qx*G`@BE`IgeZ>I!kT;RDIQ|&XlH?9LH^^El{c?s|ot(67qDn7%|Ye>pR+!{ZFc(u-J@tbKa z2=oC$^O(LXWLS$S-NK!A1T(`%Q>lc~xP_p9zG{FJ`q>FY$FTAJL#FTdUZoshIy%r| zrr1IJrtOX@8@4$Kn?I#wZ+iq4@$|{%%VFtpnM_=K=NS7sOPtyP?!zGPqV}xCW{{B6 zFW&oRe!V7C)N0^iC9!t8r_XT+yVPjsIqU{4iikVay9iC_-Ps91L7j7YH(rHxQZU@E zoQlhOl?jjgGGgX8@QN{(cqfuFvBJz$OJ!AR_V}w;6M-pGOmj1r)uPyp<9LPs_~-*K z37}8`P%2FsEGY|5(d)s#nZ)4FMh{rprk3{z&hzW_KD-3$W}{B=;rCEmsl}wtIKl@N@AW&DZg;ZQiO95>nh~V%#?vX^@-%AxX9te_ z#;?mez^W~>{*~|r@WIka;>MQLyszX#M}(*t*8^)dUfXs*&g;#wu+swDkwspq!CKti z&yd~n_~g#UhQF4^wv>|7$nAgURp$DB0j)=xST?>Lznq7sBlvib`mt ztK=EbO~rBB!AMa#@E6&Ul`zNW!;mp_z&P~;R@akMReRMSDE~8XuVP%ijG7aqmF~9G zO+;^yI{U=BMv{G5c*W;`4Z#xkE(etfeC4FWbA7VFQa6ZXs8Rms(&cn*rC= zvL!W8k7(o6Eb0siO^}ZQfWl>1`j1Smn&K`Y!9jXkVSly{%RH{A-aN*7M?xsbQ0jm? zSHP$dU7)K)NLV9=C+WiZXyaR_Up{|yXYo$kMe9gw0z?8FoR{fZlzyekUTUeey%X)_ z7hwzQDdne+(D8|*mb8?5m%=aRI|)PZ^b)6(<^5Mf5HY2Us*h2qTzgfZ_FY`q@3_Zr~r%E-ByLV$|3;BZO_pr-GdwHW;evzB~d)&k5=YWbIT88eJih~fCP z0XiZ;b=zgx8=M0lz(1vU5YgsyTQbkc9E+LP{aU7px-_JhFsbI z6LR(6C|wNX$_Tg;0Ql@5vm}u7m&aN7cpKEM3~n<+g6?qTiD<9rhdb=YmF}{di0BPr zqHtu;U&LZ!3hUCWMH}&QT>ShEnJ0x#Fu(YE##DVgB~q##QMB!=mo4u%(@GPb&w#Sj zIt(uDpjvR`Ra|S$;~TPF&$H*)PLF!2Izu{Fzu4CtbUsfD>%F~w^yO;m2EAOKGksr2 zT`x10ATeEWM&87cxGld)&&0ECv-KmyXi*3QbHeH-?OmufhP(o8QR9JhZR-1f?#(<~ zCVG|cN3oYnYoYg*Z1fH8W$rbD^KSkkgcY9*N+i&CUmkF^m;reH^%9G_JbOd zn@>=iR)~H}W~{`pu<7$-WYyp%8+ji(;gqmtK^)`}egypV#-wc{~V7e-WC6VY{o-lWrw#CRDD%X)G4xgB%()aF~&tsfT23 zBFLoW>-6_xgPzV>(i0l~<0_ZVPRxxzYX}6aQKrJWZ4Lg|;q88;-WRwJwax zy8fzuRP<@zDkLyQ7Tzv_dhRVnIqVU4NHqIQllxA~O)uPOhcJz|wVu7w_|?Y%Lk;79 zUtImQhX6_hjTlw$Ob(UPofS$-Ms?Q(4{;YV?+1>MOGobH)y>9X2*MaiJMrbt2+!=r z+uE|Bp32{4JtG7|~&40DnkvMF>@sKaasI-Fj56M7Jkg zir|S3F0o~gKHwSg&A*`j4ktN+h&2l<=L-&brE$Y+z+h8Gj`ynx@~9tRiX;|*7bciY z&?qJ8McD`mh#wLl5n1hk%#V2lSaS;7?`a1IG*0cKBvN?MN2T=}bZ zEBCC)H2<(#ks_K@Hj$;_d;Yj1j#6g{#|1|Q=*b#ZxI^#AhJ%eF(767WqoiB}ew|u!+!mzmsAb@dCabKRG|M_R4E`eE~lWNDHcdt07%#q`zFF7Bj3Rh$lDAc#SoQlQp`Hn+9cY;GBOBz?et{oujkwIGxOYDv$Bt2FUc%AEZcB-r7feWo09f-s` zwJ#^R`4u_L1}sfsJjY?s-i2bTm#DZcS@V%wLNXpXufQ-NcDI#p&nP1Zg1-FwM*G#+*-X z`rV`{jpXYzdA&FD%uh{XZt>5~TIJ?S>_73y;lbs*VZYKYj6$`c*D-`?*rT3_Zp^I` z%cX+LkMc6-@*vBW55&IB+%12vcQH9g%zwa}y@6ZcBopG6UisH5AES)Yhdy_mDG6Y0 zaCR-b$m9u=T9q+ICi86Xg$n958|@6WdynMK3_eb=x!$|cvS$3VL+oVxC54nKd82DF z#@%N$58@&e?9w7flQU#Ua|Yk?d;m=H2L&t<(QRos6n%6i!$ZtN;8KP|u<}}v; zJc1B`3Z@1q54=FO#mip2+yGauxW^gsOE*-;>oqxXU`IHk&oFgX-VoDG&vyQ@@phtc zRDOztp;Dbm3%Vh!Vo$6p)fye=1lte_KSu*8DHL;I^dRw`yx(~r3mPU58(?{x{AHbW zn+w+LrAGy{^-b0q;O-#hM}N1DZu`yj64F0Jq51-o36t$jD)kg8Qu)}nG(od>@YuV& zsG!3ux%4Das&TVbMjN04%$JE0kD6kCQIyDhbhrZkn9&u+ZL{W45<94AFFa_dF4uo0 z&B}7}#rfJUZ}u>DJc{kZpbv%C!E4;ZH+NYDkbY=q0>xHPO|4WO4{{oC_Z&MKkp7YSiFXHh7s*4OmASqxPEye8$emj*r zG^SwYLi|fr)dPk2N(iK>oYc!4B+hVl>uDm!T)r<22kRfIueTRbRCP1DB`CGYde4T&zURN zjqj?qJb&?{T$@b*?q)o_@q0d`8q5_s*i{JwQ+A4+I;&1l=2^W6;O$X)v)+;!FM-O> z<6~k*tA(2fCKGx-q-L&gpb3dFIfE6Us}CX9Y~Uu1ql+JhpV1ViH%C}0Sk~s8!MEfE zy|cN9F=xw7!vN}jJ19plcF4$3qnou-VZCA>42fC1eiKCC3O84stFiVq!4ok!2g^;_ zN<>4T-$?$A4Lv>X>f4)5@HaXOjI!mIvHR|Ec0+LmZb)&%&-?z+$ZGncD9f60-W@8W zl3*)Q=qxi6%cVI=ZI>hyMX20(>IQWX9I)@n%LLVPKFir+mLDs4(N?vgpTaw1zh7xu zd?BFdTFKJ%{Ud!z29ODsh0z**dF|QB#^%3Px#Ef)#~5{9BjW>Q(7+j=D=^;~0e_ey zP?)%6b82>PV{ElwmRg3f4bLwHC4S^k%&lzcof{*iEGF}7Pu3lOwd{ddY;uKuEml4M z6*XHv!{9RITU-jmk`-EiTIw(j#Ou8F)UJ4=ecQ*9ugR?gs<-%rccr5`eY^~6s2#e$xP-P0S|dMvjgE&+2HJZ}DC1B>cN zMh*CNKk`P!#s%MHnq~{8v$lYOUQFHY`LiiKk$}KNm_noU^-s*?9MgN8oUrGJK_kpP zyu!E1S%$fA_&v=`WD7U8JxmyW#F1Njg*pVjg%#=#YJHd*U#l5ZU`|W-sZDH6PuAkV zvAb1>+CJ8bj)Xgl`Nu>i(YX{FRCvIS#jZ1PgWY%ey^4@(g+QCC*eNZQd6gv%=cMbe zfV&oBzpd(-q!;+;j;u2{*`-0XAHcgZT25sZf}Rnw5%Es3`(UUAs|<;t*gm8K`99fQFzV$1*ihLB$Cb(Hsbl zpri}|f`y2Rg2o&QiHe~NmqFk#9RK&-`(R?_&2IhOdVG2aJm>rNu=ZN-n)Y71w~_BM zlW(p+>G_O^ct^Zjo$4?x%QP@_^1?l-!v?y9=AM2zdZ*bDT-9;B!?@S;KJH#RFFx0K z+smDvZGU|5r)Qp8c|8%cxpsB(#P?oGEOuDtuK&5uBbNKMH*|ii;+r?${HK?}Iri%AD10V-k#f{#0P;S6X|Lqo=dFa5_?m47k5yvOoQ(|tZjes+>-{1}@{(_Xap zS@^`9U1bGHUH3indWiXY)6dEW%=WkXe*T5$3KMH4n5FtPMBWIhdg1AYupPk-Ph~2M z%?39F`c>^P%}3Rr_1?H)Vgy$7E){dAMx!$Id4wU3lwX{nB`IWQ(e+(g!)VU3pS%|7Av|PrvAl5vglqD_`%J zQ~Z{yINh?;!3f)j2QB#~(bl5TB53c(mzqvCl~<=1Us&GM9A;PW_2jTGUg$e*^P&7m{JsJ4(%p;0B+$j-Zt932&DeE_Qy z6zAgYJ~W;k8GP!CAD-W1-cLFE^x>o-&YyjB^1Nxn~wFORueaU(rX)>BI3A zS4IWy$*MQe|5t^gdR@2bpvfLV@yaDvEK_FH`$vXZq=yw>?8iqhCTXlg(SGd4ujh3CK{InE>_NwM*!ePhqYr(Ib0@; z9KLFJ@lmttwy8gCxbWWKzF+tFd`!F5C*C^M#rGWqGc$(_+5dj+3LoPO=Gw70%SSx9 zpdEt`HH~2Ipv|hOA5;w6(scBTsQB~i^`0BkF@Nu;?lU^99<=P}!)@M=PRexCZC-sU z<@(l370)RK=2tKHvdk#^Sbo*$GdrgwR8J3EQXIIz(q??->}hc^>z-({!Ma~&*X3iA z4&|FP8SPo|LI+-6SQ0$Ar%UK)yNJ~|!vF>0ri*)S+{YTk>DUSvw&pptn?gPR!-1!c zK58}~UKMQT_(OJj&)f@n8wdaMOTz`L&Yxc4@W!So$9&Fx(r2t?^oRiCy!x1v9ZkQ! z;#HPc;$HB~r7bTb+%^0?{CJyXPKoQvg@Cj{?WK}H-m?tar@`j9X=d0 zyyJ;aGu93&__}tnYNYv#CkMR{1*d1>`^xP4J)h3=GC?s_#)EqVGm^`S|;{u0QSmYTKC8ho`LY{P&rMO;#IC zeP!rS?~m2Ciu4q(jNN+|DT=3WY7_lL>Flyewsz}_Qb%>_w$AsfQ#Y3QCi{C0GORN3 z%c+a&XTR4RSN}zC0UBQFwy_~Lxa4j3{sTtUElvn_dD-yJ?T^@75F zxLcW?OT1TSmIN+t+VXH>5%vehP>r2Y)C@eJc4_Rbj&cl2DXe{Nt7^O2dzfnezT=9d z1(U#*qXKeA_-0z(F#N2JTI{OOV*Q%FMWd>wr0Og4X6&?jM&&Yg zQOHo&sd3Xr4nCx(xV9~%F3o>b>Hep1;nv}6HBE`{4QTIhUg)sT%4fe6zio8tDgBwN zw#IKbnH-o~{@&Ki4U7E)UwQb2WgjotHFvixAiM;Xrr+WAP*Fms!%3YHwaEjs98VRh z>U{&R7WU6m&8aqfC*iBiBaI(Lk5272Ci{}J-niJf9yYu5KI^BO6%{skd0DrqFZuV_ z*;(uH*kO@%!gTE3bAs1Guz?|dI`EID59WV(;#^6?(CwX)oIgnGn)1c#8{XEPb+-PC zU3vffc*2L4qjHa~Ga1@u*gO;ex`)c=x=;4ss%m?7@5EsP`g*dCIu)*?4G;<#m^MkZ zQtj4s>htYx%7qR^me!*?zu3ESc%$Vb=a%+lEFRuI%+~O<7v=%7NC~>#y}*vL;>eu6H5Q4jV6B za13y)UZ>dk{K{(;+wxIxAm+;>D|8|wjy#qA?Z=a%k7w!yZr$vp)m1CkWoF)p0R8mj zOUtHi?-d_=bnN_XHdUUpT`#zZ9B~Fu3$YeC@4cf1?A}-W!DE^YGqIHc(7$o@S;yLR zD7!oNt(goAs585>SaarG;XioQcU4jXl+!Ljp8smGJ1fdeb24$L9 z;tQ4}5vg0G?YYa2%vu0%r_wqdhga&^497uYE|6#5b#YV2%$7|2v6kVDtw*nD)jGt^ z>ad_clfqeYE{lbg!E)md zrH4Z_*bOMlsGJ7@>?d<~ZVM^Inuid?XqMxAg_u!_mrVM=%(=mJKnV^M@7|AQMKJ*< zlvc$Ri3<#Jo7`~vkwH6h5IepUjbd%}`;xRxcu3Gw83F5*;m5^J;rm(^X@_R_4J;|# zw~`Otx!-;ow-j zxRuEbyz-|l?Mwc!sBH<&62nRQVS0Qe!dH+E@aivg+_OeBb*eEPXh2h7EDBq-z z1qMZiHiC>AQeqP^Wcb}-XaE=^7=XjptQ1NeTUce0{HUtj2hRX$&?**~`+t#7o&!1I z7)q@UqD&T{5{K+0uk&74AekIZtkdSB6j2#n_DIFYXqk>W@1T)tfq0UQANF96J6E=X zg3VZ4evk5bMZ%n4VPww7|$Sg=ZY#ibgF7Y6|o!IvS}i*RQT? zJ0s64{j1jZz~9$Bb0bjL(%6MPada0A1wcE6wG&G=Njb%X39)DU6TvXEk&P&1fyIFrV9IJ+e3A+Yc? zckp1btYXop5Gq|H3s_p1>%z#mxb+SM++nrbC(2DQpBRf62A?a`@gVbs3Yvl^a*6wx z5%}jOswx(O5avS3aGunflZ`OP8{E(ji@#7CG8qA=3@_vbht||Rp6FK; z!KlM>VnWU=E3GTY4hmF=Ibw+uU9ENr%~5NFm!MbKHqW}A&>RxLi36MxXmo*BdDqPt zjX{S3uKAX5f=&nTc{Rq*CR?E^xTJH*ZTk%_A>tV&1)4{0dE+wqTXIIs4lo7I+}d;! z!=5X~h(zr%7&d%1axC^O64MS?W zv(Xb%kAR%tfY4ORrI9?`$>)e6U`p6QIv)1yL9iD!c!&kwi;{eXv40>L4Tuc047w4s z7Meif()Z{PbHyrYR0kzo>NfeLJuN&v7I1~w64-<-D;5ehz@gOlbIMR1)MXww*s9Pm zI_|@OS`<}G*v{&}gwk;Wdbpa?6d@PH+u{pR z6P_!^u{Z(yC{N@WVfzhGIjyMV7a}?e&PXu0e3?*l(bUl9BXA7u(Ne3!F!@}qLUW+v zbkPGr6|SDKQ+Qhr0gs4Mk4B`TQ0PmH@Dyz}G`$9VJ6D6Rg7ZKux{nJC&JDpZNLhg? zt{CGIN>wEw8FZIQL^?2ByKKn!=Cs~`yNU22Ahg1aVUK<*@O62x7%3bF4P{YdTn?Tz zA$rTcxUpN4%pmDdXhM)$uywqkpNp6enT0mFbUvf=VUKYQ@gqoQfk!>ju=iy=eVN_^fM$HJ}jgs~a71U3_Y9 zC+m6=0su1FT(35Wu*c58T>bFamU)> z_HyuwjF1etAw^5$<4oEcr#;lo<|!5y!$Noy4rL&PQiS5H5_Nd_+imBsUPy&4{2TzH zA^f_87;s30O$jzDN|*f1qj!5AskKl4s4%|0D{^(`#RO#MJZ)8B+B3%21w?HJ3>6S zZF1w(g(i%!#!eY3BHLbA2v@2mBl@J$KqV=0)9WS~YY-8mi8L{!e%J6&6_yKpbDS$F z1c$Bb)BJ<}6;dSw1jM%EMOY5($5Hyk?$m|6OIlGz36RoZrjd==qkOUWLk2$}w&H$Q z318;Y;Y%XZlGyS`=<_x>_}>r2#uNmTQR89m2Q5f(T3Y-LrlCd5R*DbQ(r9`pm|;*Ns0W!x`%*8A*0s*yB#S1Tp!xbz?#K0#6dl689dL!0T*2EPKBk^|; z0<<4B>Ff%~lJho0~)w4C%ETC6JA zV(7DCzW7y&E>Zsh?1oJ_lnyLFJ2Cb+Mu$ZVz`GtT!l{k0ZUm<>0>HPH7}|_ubVS-w z(*A>|i-CakOJV6T1S?FeBDh4g$<|Pf7Nivvu3R%`zAOj8_Vug|(>oR@3d@-DETgq5 z*;@mbFM7`U(zq;lkRTNGdmo$(vOzVYI2um8$5~hxqZdMGJPsXNN(i=D* z(>lFzedIM3tc;cOzIA7Mqk5*=+kR@5YH(`w>0Nt`Q~M6h(%*Mv<0Hk`UDB`g=;}?= zx2pY0+8;iWe0*`?TKDufKU!-;?T|%gY0m;z6A`19aXpGW$0c-^b&N)eZ+u01(yWl+ z0RYF;1RB#|*8m~aE0_r`TQ1%smdaQ*C=NTxfggGbije0hHz4l?t_z|`U_3@nxKt2M zVVMX++nJ8rBQn<2wGv|k1Dt4P90%$oI>(EFCQq;zSTd|8d9u(v0(>4K%^|(uy&P-Nq~5}r z5%|#}ua_(s)FdB3JfC(2cXC*IxBWC`3E&SK7lE0w5s^T}PzZ3a29nr&D3yeKP1GzA zB94$C;4Im0D6hIDFGUT*|2QL1uA5$q>d289m~(XW6Mj*fO9CBs%2OXnc1Kp=OC^wPE# zPoedmBFchq@w5~J?B|C$cF+#phe%x}VvPqG2Z4jpPf&|)I@S}(KsVwsjjYy-bJJ11 z#BaJfct>Q%JsJDAKQ>D_{zioUklmfXSv+fCdCE<{3uTSH=hvG}I{e9kazU-uX^tzF zsx-^qX4@6LBNz71JknsXxnbKw+3QBU*to}K__@Y`U);VE{m7*om&BduS}GSM${hFR zP$b$w17Hss?_-j9O%U;=e*|NTh6}(^c$0<`BQ0Xe8MA}6Cv zhc7sQf(Kb4oOpAA@aBgw+CUFb9e2g{A$-l|gA?q1o;Omu!++({Lc0>TNj1MD5?zS_ z%+cN)G0KGja_8G>Dm+F!R3z6!NGmX%4A1Uq--;k(fk7D-4T71W9qH4BZjZ1bPcTv^ zXD=5z*2W7fCV)T+FVhUPHpDs$^)Lz9M)$r*N@yqB3k*P0c!C6xF;Xr(r3TVseS^#n z(_hFNzd)d;7un#HglR$+Y&HsNL;`XYU=OJZNH}0pIOIw?P3VeL6d6CvM20`uvv@rr z&IxHcOqF2srWyequlqA$N@xu3>O538aY?5`N zpu8{$lTmyDMy-$%^hqFs5bJV4VlXxUT&Yr^B=JTGkwzFK6t3Gs1i2|eybix~AubX$ z5fP}zVnMe^wFgq=p^MnSN``*zr7YTKc*#gQ+&r)j<)82v4+TX!Tx zLTwL}42^AGp1nM@`{vWNkIxDob$-vLcV20Dy=O1K9w|L~SEK%U$7g#d2AG|x=?zkG0~p27eIz$*NE)t__!wr{ z4j+jFH5}n?IEi$;peq-aKuVSO* zuGqi;Z3dy~m;2-9FO5qaI5e4&562NfKkrID} z?4Mv}+etVOv?;P6s|jF~EPhDlz366@h!g<->4cqB%niv{G}tg-@Eb%2S!bM9)V!4= zyN9L{1JW2Th=S4B!$?GMgEC%TPc{>wH(Vf-Jh_6o9H}lz897LSK@0lK(S8;2E{L22 z15DWogM+(By@^3XN0w^DFv14*0W9W3Yr*iCCBlJ7!2)Lv&?2Ry7p4|cAtohBZA66< zPSHSWLk3r+h7o&TAY{49XgMQ#sxs(>c;Hr$nNAwbAZp>P4l8a!&=4eHx(#JPJQiSLt|A6XKUq4q;;FacGDc;bH4QLk%<_>J5d<1a~AhapdBO zcJzNiSlGibwGtf!B_iXpp6lY2T0lsDwqYA>QuQaoFHgro@y!x8eJ8!pH)n)C; z4-Z6}z0gX3=PuflTJG)sN&Cye&Vh>$z$8J8_uWe2 zJpp#aj#GO#=4GIdEcG}ZC^`v9BsP#-&>n9gQ!W;hnvwzvVhCil5vIvv@-+5pwAgTP z!esyx(KA=h;-Jt zW#$?-;VWD=Vla7$M7>z4$>(}lSbd53z7uX%!lH_$M)1rCFCg3wF~+Qj=HTL@uugcL zoQE7Z&;;HewF}Sb(m?WM$iD@+F@Lny?5UhGQO9;N$%E`6O({5T2LSWA!rskn*_d@Z zpdbW|43um)7Njj;>AX^_Ov-?V-GrQk-Yt?Kn}MPQsbMr*pv_|-9c?|RbfGs0ni@?n zl3)o2*QK#~z$(!TBOo0eO=X@Jttb&u+YCcM00_f9*x+TN;|hu}Cr;WUZNoM>ddv=E zMqCI%ycGs{uVTnO;>Up(V6TYylAcKGAQ}rx>0_at!ngq5j94Lsj>JMe0^g+*t~;&t zNVe?)F$EGviPl3g4_hR_n1Nt0#h$o_9SWqqkOp}sn%AKU%b(IFK&UKHbsT3bkB6C8 zZ)hk?^Pc~4S^Vlby?UmFHZ1F*zHT_~8{_7$Oqw@_ggCfF$9Ws~-r;!`XUZa~M=nV! zzV<_nOP?asgu3#5Yd0kX%xb?q`1rcX`6t$o(w<`QLieK3U9MUWFLl{+`pq}fuEc%c zM`!(LfdW*5cczs{nP+r$-XFK1d(pu(N7c!Js$;Wyrfsk+PCxzJ$~Uv8_J1*UvG34{ z5ry9unaw+1{|FABPFr-%IZr<;{n1fop=N379u;bjf*bB5cJ_)NYUW(EIQ^E^rUKWd zuy|v~;x_*7`$tdc`1XWDr^YDtl<&H!l`f0-<~U{f_M6bQLcj8ivDemVYZ{in((`hF z#q-EQHejKWbX+G2))era?-W)Bub0fqP`Ti8hz0f+UL*IEx)Iz&&?^GYK%qkntAPUn z#da2i{B(slLAGmkC45u<;ZTZ(qG)+VN+!bRVc26HaO)|qob1_3Fna=~fF{>b;cMS6)|EbJ-d^SSX4U6Ms%3;L3;UGQSI;3aT0b~&^# zj+ht|Fw}R5#GjxZ6Ka`QMN>1Zkqn2PA;^8)3bDfxvG@k)!DzZ(iHPx&C22~;$n_fPu!~gu|j>BT}i)UdbmBgh)!#aW`3m z7NJj3Zh@2&qX85GOD2(sn=7rOyA-WRtiwP!73gsqbiTP6d!jfgwj&bdqM0IRB!uLNK z)p|^v6Tz~tp<|4cz_I5trj1q#C72VCHF%ZFs8u`bfI0rAtBMDn8GZh9RhQARSpy%x z*ndyIPK&GxOLx^dwHY6h<($#J--ZtQinV!3odb6DZ}3;O#iqLYsBay*4e?(1cGt4g z=P#cR`|eQRM;vQbwXI9M-oMlFn6xfXvV&`8M0HCuRX-A(81z;Cj7H<=pi>QtXU%$Q zqhVg&iS@5{?B|y9{PK6Lw4Z>echNF->F~l-*SK+g93O6BMCjo=vtxpI_CC8_9bu3< zIm+K6d)Dr_!y6~OHM{3~J>UQS^s!|%Yc{?-W%i593WmP^+}Wza?Kr6L80u7XyZz+F7W6`x9qe5_7gZ=(|}C-HM9ThZ3WMzAH)}0Pb+Havpb0@RYikpM3Csr90s%NA$KR-=9)q9#^!{q||yI(|&-Zujj z0o?)|uf)`CQJf##6nsl-;s7PetiV($-k~_Z-?7-d*hYn33u`QJH29WQW~x$gQmIe{ zcdMDPMYX>1USFyGe)<1RepPWyoD{}y?Vdn#aMs!cz>zWpCQsgN!_0k zX}?*?zO2M6R*6j+ehouXapddtEv=VQ;^Wk-g07l11h~&p=^&drh+*y;bLrj0!+Bo=I6yATe z2LBT(!0Nu0ep*k=9#p|C#*5&mnbritDvUi-(J=zm1S z@l^ym?-lxJ4rvvBZXG!4_Lq-<{?5|#Al@rd7JrVx^WWH6zZgIYXR72s2asYE>4%$s z5(54ExtaH(@x5T=M@j_#WpXKhl3DmW8cKga*6D+V{~O6JhC2VK1^RW2{QsO3ymuPL zTxJ`8-s!q6v@18JG!JRXFSoK+eoPbJ9X$Wfnc$!1djE4)>8{-LU7eP-&RpO1?L9Ns z_mK&{E75iDA^pWVHM^%}w&z}%36b6Z@7DCMqzHQ}EmgHa8!r2As@v)w;2fN{#`evb z)rQg6Pp0NuTrHIKol8Y^YsH}k_SE>0M-2fm1FB8TP-{JA28DcX1afy$MII){{ie+EGqy2 diff --git a/_static/sloan-logo.jpg b/_static/sloan-logo.jpg deleted file mode 100644 index 18bf35b52788d556d13fa4ad754d427a66fd7a3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138765 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]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

      g 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 E0oTaj;Q#;t diff --git a/_static/underscore.js b/_static/underscore.js index 4d83099..a12f0d9 100644 --- a/_static/underscore.js +++ b/_static/underscore.js @@ -1,6 +1,6 @@ -// Underscore.js 1.4.3 +// Underscore.js 1.4.4 // http://underscorejs.org -// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc. +// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc. // Underscore may be freely distributed under the MIT license. (function() { @@ -64,7 +64,7 @@ } // Current version. - _.VERSION = '1.4.3'; + _.VERSION = '1.4.4'; // Collection Functions // -------------------- @@ -224,8 +224,9 @@ // Invoke a method (with arguments) on every item in a collection. _.invoke = function(obj, method) { var args = slice.call(arguments, 2); + var isFunc = _.isFunction(method); return _.map(obj, function(value) { - return (_.isFunction(method) ? method : value[method]).apply(value, args); + return (isFunc ? method : value[method]).apply(value, args); }); }; @@ -235,10 +236,10 @@ }; // Convenience version of a common use case of `filter`: selecting only objects - // with specific `key:value` pairs. - _.where = function(obj, attrs) { - if (_.isEmpty(attrs)) return []; - return _.filter(obj, function(value) { + // containing specific `key:value` pairs. + _.where = function(obj, attrs, first) { + if (_.isEmpty(attrs)) return first ? null : []; + return _[first ? 'find' : 'filter'](obj, function(value) { for (var key in attrs) { if (attrs[key] !== value[key]) return false; } @@ -246,6 +247,12 @@ }); }; + // Convenience version of a common use case of `find`: getting the first object + // containing specific `key:value` pairs. + _.findWhere = function(obj, attrs) { + return _.where(obj, attrs, true); + }; + // Return the maximum element or (element-based computation). // Can't optimize arrays of integers longer than 65,535 elements. // See: https://bugs.webkit.org/show_bug.cgi?id=80797 @@ -567,26 +574,23 @@ // Function (ahem) Functions // ------------------ - // Reusable constructor function for prototype setting. - var ctor = function(){}; - // Create a function bound to a given object (assigning `this`, and arguments, - // optionally). Binding with arguments is also known as `curry`. - // Delegates to **ECMAScript 5**'s native `Function.bind` if available. - // We check for `func.bind` first, to fail fast when `func` is undefined. + // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if + // available. _.bind = function(func, context) { - var args, bound; if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); - if (!_.isFunction(func)) throw new TypeError; - args = slice.call(arguments, 2); - return bound = function() { - if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments))); - ctor.prototype = func.prototype; - var self = new ctor; - ctor.prototype = null; - var result = func.apply(self, args.concat(slice.call(arguments))); - if (Object(result) === result) return result; - return self; + var args = slice.call(arguments, 2); + return function() { + return func.apply(context, args.concat(slice.call(arguments))); + }; + }; + + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. + _.partial = function(func) { + var args = slice.call(arguments, 1); + return function() { + return func.apply(this, args.concat(slice.call(arguments))); }; }; @@ -594,7 +598,7 @@ // all callbacks defined on an object belong to it. _.bindAll = function(obj) { var funcs = slice.call(arguments, 1); - if (funcs.length == 0) funcs = _.functions(obj); + if (funcs.length === 0) funcs = _.functions(obj); each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); }); return obj; }; @@ -1019,7 +1023,7 @@ max = min; min = 0; } - return min + (0 | Math.random() * (max - min + 1)); + return min + Math.floor(Math.random() * (max - min + 1)); }; // List of HTML entities for escaping. @@ -1075,7 +1079,7 @@ // Useful for temporary DOM ids. var idCounter = 0; _.uniqueId = function(prefix) { - var id = '' + ++idCounter; + var id = ++idCounter + ''; return prefix ? prefix + id : id; }; @@ -1110,6 +1114,7 @@ // Underscore templating handles arbitrary delimiters, preserves whitespace, // and correctly escapes quotes within interpolated code. _.template = function(text, data, settings) { + var render; settings = _.defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation. @@ -1148,7 +1153,7 @@ source + "return __p;\n"; try { - var render = new Function(settings.variable || 'obj', '_', source); + render = new Function(settings.variable || 'obj', '_', source); } catch (e) { e.source = source; throw e; diff --git a/install.html b/install.html index ba2d327..987a0b7 100644 --- a/install.html +++ b/install.html @@ -226,11 +226,6 @@

      Installing IPython -

      Note

      -

      We have just made a new release, and it will take some time to appear in -Anaconda, Enthought Canopy and Linux distributions.

      -

      Mac or Windows

      1. Download and install Anaconda or the free edition of Enthought Canopy.

      diff --git a/pyreadline.html b/pyreadline.html index be9fe02..afb5c15 100644 --- a/pyreadline.html +++ b/pyreadline.html @@ -251,7 +251,7 @@

      Mailing list

      Status and developmentΒΆ

      The current stable release is 1.7.

      -

      Development is hosted at github. The issue tracker is hosted there as well.

      +

      Development is hosted at github. The issue tracker is hosted there as well.

    diff --git a/search.html b/search.html index c10fc35..e9ea123 100644 --- a/search.html +++ b/search.html @@ -43,8 +43,6 @@ - - From 92b70899f02c55dc40e8c8580975042a2180c55d Mon Sep 17 00:00:00 2001 From: MinRK Date: Thu, 5 Dec 2013 20:03:40 -0800 Subject: [PATCH 011/146] Updated website (automated commit) --- _images/RS_PoweredBy_OCC_logo-2c.png | Bin 0 -> 46766 bytes _sources/faq.txt | 2 +- _sources/presentation.txt | 10 +- _sources/sponsors.txt | 11 + _static/RS_PoweredBy_OCC_logo-2c.png | Bin 0 -> 46766 bytes _static/underscore.js | 1249 +------------------------- faq.html | 2 +- presentation.html | 10 +- sponsors.html | 6 + 9 files changed, 52 insertions(+), 1238 deletions(-) create mode 100644 _images/RS_PoweredBy_OCC_logo-2c.png create mode 100644 _static/RS_PoweredBy_OCC_logo-2c.png diff --git a/_images/RS_PoweredBy_OCC_logo-2c.png b/_images/RS_PoweredBy_OCC_logo-2c.png new file mode 100644 index 0000000000000000000000000000000000000000..eba7aa800c38e8d3f88b79679a04a72b0498591c GIT binary patch literal 46766 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 I#qGiW16~q5EC2ui literal 0 HcmV?d00001 diff --git a/_sources/faq.txt b/_sources/faq.txt index dc6f0e3..f4ebb24 100644 --- a/_sources/faq.txt +++ b/_sources/faq.txt @@ -51,4 +51,4 @@ See `the installation documentation `_, then running the .exe installer, to create start menu shortcuts. -To use the notebook or the Qt console, it's easiest to install through a package manager, or download a Python distribution such as `Anaconda `_ or `EPD `_. Otherwise, you will need to install pyzmq, along with tornado for the notebook, and PyQt4/PySide and pygments for the Qt console. +To use the notebook or the Qt console, it's easiest to install through a package manager, or download a Python distribution such as `Anaconda `_ or `Enthought Canopy `_. Otherwise, you will need to install pyzmq, along with tornado for the notebook, and PyQt4/PySide and pygments for the Qt console. diff --git a/_sources/presentation.txt b/_sources/presentation.txt index 97c2a6f..6b63266 100644 --- a/_sources/presentation.txt +++ b/_sources/presentation.txt @@ -78,7 +78,7 @@ We have given a number of talks and presentations about IPython: --------- * A `talk `__ at - `23andMe `__ where I spoke about ipython in general, with + `23andMe `__ where Fernando spoke about ipython in general, with some details about its facilities for distributed computing. --------- @@ -135,18 +135,18 @@ We have given a number of talks and presentations about IPython: --------- * Two talks at SciPy'05: one about `parallel computing - `__ + `__ and one about `interactive notebooks - `__. + `__. ----------- 2004 ----------- -* A `talk `__ at SciPy'04. +* A `talk `__ at SciPy'04. ------- 2003 ------- -* An `overview of IPython `__ at SciPy'03. +* An `overview of IPython `__ at SciPy'03. diff --git a/_sources/sponsors.txt b/_sources/sponsors.txt index 7fd8b3a..f7fb50c 100644 --- a/_sources/sponsors.txt +++ b/_sources/sponsors.txt @@ -17,6 +17,17 @@ In December 2012, IPython was awarded a `$1.15 million grant `_ from the `Alfred P. Sloan Foundation`_ that will fund the core team for the 2013-2014 period. +.. image:: _static/RS_PoweredBy_OCC_logo-2c.png + :target: http://www.rackspace.com + :width: 400px + +As of Summer 2013, `Rackspace `_ generously provides +cloud hosting for the project. This is used for development and the hosting of +IPython related services, such as the `IPython Notebook Viewer +`_. We thank Jesse Noller and Kyle Kelley at +Rackspace for setting up this sponsorship and helping with deployment +respectively. + Contributing ============ diff --git a/_static/RS_PoweredBy_OCC_logo-2c.png b/_static/RS_PoweredBy_OCC_logo-2c.png new file mode 100644 index 0000000000000000000000000000000000000000..eba7aa800c38e8d3f88b79679a04a72b0498591c GIT binary patch literal 46766 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 I#qGiW16~q5EC2ui literal 0 HcmV?d00001 diff --git a/_static/underscore.js b/_static/underscore.js index a12f0d9..5d89914 100644 --- a/_static/underscore.js +++ b/_static/underscore.js @@ -1,1226 +1,23 @@ -// Underscore.js 1.4.4 -// http://underscorejs.org -// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc. -// Underscore may be freely distributed under the MIT license. - -(function() { - - // Baseline setup - // -------------- - - // Establish the root object, `window` in the browser, or `global` on the server. - var root = this; - - // Save the previous value of the `_` variable. - var previousUnderscore = root._; - - // Establish the object that gets returned to break out of a loop iteration. - var breaker = {}; - - // Save bytes in the minified (but not gzipped) version: - var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; - - // Create quick reference variables for speed access to core prototypes. - var push = ArrayProto.push, - slice = ArrayProto.slice, - concat = ArrayProto.concat, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; - - // All **ECMAScript 5** native function implementations that we hope to use - // are declared here. - var - nativeForEach = ArrayProto.forEach, - nativeMap = ArrayProto.map, - nativeReduce = ArrayProto.reduce, - nativeReduceRight = ArrayProto.reduceRight, - nativeFilter = ArrayProto.filter, - nativeEvery = ArrayProto.every, - nativeSome = ArrayProto.some, - nativeIndexOf = ArrayProto.indexOf, - nativeLastIndexOf = ArrayProto.lastIndexOf, - nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeBind = FuncProto.bind; - - // Create a safe reference to the Underscore object for use below. - var _ = function(obj) { - if (obj instanceof _) return obj; - if (!(this instanceof _)) return new _(obj); - this._wrapped = obj; - }; - - // Export the Underscore object for **Node.js**, with - // backwards-compatibility for the old `require()` API. If we're in - // the browser, add `_` as a global object via a string identifier, - // for Closure Compiler "advanced" mode. - if (typeof exports !== 'undefined') { - if (typeof module !== 'undefined' && module.exports) { - exports = module.exports = _; - } - exports._ = _; - } else { - root._ = _; - } - - // Current version. - _.VERSION = '1.4.4'; - - // Collection Functions - // -------------------- - - // The cornerstone, an `each` implementation, aka `forEach`. - // Handles objects with the built-in `forEach`, arrays, and raw objects. - // Delegates to **ECMAScript 5**'s native `forEach` if available. - var each = _.each = _.forEach = function(obj, iterator, context) { - if (obj == null) return; - if (nativeForEach && obj.forEach === nativeForEach) { - obj.forEach(iterator, context); - } else if (obj.length === +obj.length) { - for (var i = 0, l = obj.length; i < l; i++) { - if (iterator.call(context, obj[i], i, obj) === breaker) return; - } - } else { - for (var key in obj) { - if (_.has(obj, key)) { - if (iterator.call(context, obj[key], key, obj) === breaker) return; - } - } - } - }; - - // Return the results of applying the iterator to each element. - // Delegates to **ECMAScript 5**'s native `map` if available. - _.map = _.collect = function(obj, iterator, context) { - var results = []; - if (obj == null) return results; - if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); - each(obj, function(value, index, list) { - results[results.length] = iterator.call(context, value, index, list); - }); - return results; - }; - - var reduceError = 'Reduce of empty array with no initial value'; - - // **Reduce** builds up a single result from a list of values, aka `inject`, - // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available. - _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) { - var initial = arguments.length > 2; - if (obj == null) obj = []; - if (nativeReduce && obj.reduce === nativeReduce) { - if (context) iterator = _.bind(iterator, context); - return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator); - } - each(obj, function(value, index, list) { - if (!initial) { - memo = value; - initial = true; - } else { - memo = iterator.call(context, memo, value, index, list); - } - }); - if (!initial) throw new TypeError(reduceError); - return memo; - }; - - // The right-associative version of reduce, also known as `foldr`. - // Delegates to **ECMAScript 5**'s native `reduceRight` if available. - _.reduceRight = _.foldr = function(obj, iterator, memo, context) { - var initial = arguments.length > 2; - if (obj == null) obj = []; - if (nativeReduceRight && obj.reduceRight === nativeReduceRight) { - if (context) iterator = _.bind(iterator, context); - return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator); - } - var length = obj.length; - if (length !== +length) { - var keys = _.keys(obj); - length = keys.length; - } - each(obj, function(value, index, list) { - index = keys ? keys[--length] : --length; - if (!initial) { - memo = obj[index]; - initial = true; - } else { - memo = iterator.call(context, memo, obj[index], index, list); - } - }); - if (!initial) throw new TypeError(reduceError); - return memo; - }; - - // Return the first value which passes a truth test. Aliased as `detect`. - _.find = _.detect = function(obj, iterator, context) { - var result; - any(obj, function(value, index, list) { - if (iterator.call(context, value, index, list)) { - result = value; - return true; - } - }); - return result; - }; - - // Return all the elements that pass a truth test. - // Delegates to **ECMAScript 5**'s native `filter` if available. - // Aliased as `select`. - _.filter = _.select = function(obj, iterator, context) { - var results = []; - if (obj == null) return results; - if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context); - each(obj, function(value, index, list) { - if (iterator.call(context, value, index, list)) results[results.length] = value; - }); - return results; - }; - - // Return all the elements for which a truth test fails. - _.reject = function(obj, iterator, context) { - return _.filter(obj, function(value, index, list) { - return !iterator.call(context, value, index, list); - }, context); - }; - - // Determine whether all of the elements match a truth test. - // Delegates to **ECMAScript 5**'s native `every` if available. - // Aliased as `all`. - _.every = _.all = function(obj, iterator, context) { - iterator || (iterator = _.identity); - var result = true; - if (obj == null) return result; - if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context); - each(obj, function(value, index, list) { - if (!(result = result && iterator.call(context, value, index, list))) return breaker; - }); - return !!result; - }; - - // Determine if at least one element in the object matches a truth test. - // Delegates to **ECMAScript 5**'s native `some` if available. - // Aliased as `any`. - var any = _.some = _.any = function(obj, iterator, context) { - iterator || (iterator = _.identity); - var result = false; - if (obj == null) return result; - if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context); - each(obj, function(value, index, list) { - if (result || (result = iterator.call(context, value, index, list))) return breaker; - }); - return !!result; - }; - - // Determine if the array or object contains a given value (using `===`). - // Aliased as `include`. - _.contains = _.include = function(obj, target) { - if (obj == null) return false; - if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; - return any(obj, function(value) { - return value === target; - }); - }; - - // Invoke a method (with arguments) on every item in a collection. - _.invoke = function(obj, method) { - var args = slice.call(arguments, 2); - var isFunc = _.isFunction(method); - return _.map(obj, function(value) { - return (isFunc ? method : value[method]).apply(value, args); - }); - }; - - // Convenience version of a common use case of `map`: fetching a property. - _.pluck = function(obj, key) { - return _.map(obj, function(value){ return value[key]; }); - }; - - // Convenience version of a common use case of `filter`: selecting only objects - // containing specific `key:value` pairs. - _.where = function(obj, attrs, first) { - if (_.isEmpty(attrs)) return first ? null : []; - return _[first ? 'find' : 'filter'](obj, function(value) { - for (var key in attrs) { - if (attrs[key] !== value[key]) return false; - } - return true; - }); - }; - - // Convenience version of a common use case of `find`: getting the first object - // containing specific `key:value` pairs. - _.findWhere = function(obj, attrs) { - return _.where(obj, attrs, true); - }; - - // Return the maximum element or (element-based computation). - // Can't optimize arrays of integers longer than 65,535 elements. - // See: https://bugs.webkit.org/show_bug.cgi?id=80797 - _.max = function(obj, iterator, context) { - if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { - return Math.max.apply(Math, obj); - } - if (!iterator && _.isEmpty(obj)) return -Infinity; - var result = {computed : -Infinity, value: -Infinity}; - each(obj, function(value, index, list) { - var computed = iterator ? iterator.call(context, value, index, list) : value; - computed >= result.computed && (result = {value : value, computed : computed}); - }); - return result.value; - }; - - // Return the minimum element (or element-based computation). - _.min = function(obj, iterator, context) { - if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { - return Math.min.apply(Math, obj); - } - if (!iterator && _.isEmpty(obj)) return Infinity; - var result = {computed : Infinity, value: Infinity}; - each(obj, function(value, index, list) { - var computed = iterator ? iterator.call(context, value, index, list) : value; - computed < result.computed && (result = {value : value, computed : computed}); - }); - return result.value; - }; - - // Shuffle an array. - _.shuffle = function(obj) { - var rand; - var index = 0; - var shuffled = []; - each(obj, function(value) { - rand = _.random(index++); - shuffled[index - 1] = shuffled[rand]; - shuffled[rand] = value; - }); - return shuffled; - }; - - // An internal function to generate lookup iterators. - var lookupIterator = function(value) { - return _.isFunction(value) ? value : function(obj){ return obj[value]; }; - }; - - // Sort the object's values by a criterion produced by an iterator. - _.sortBy = function(obj, value, context) { - var iterator = lookupIterator(value); - return _.pluck(_.map(obj, function(value, index, list) { - return { - value : value, - index : index, - criteria : iterator.call(context, value, index, list) - }; - }).sort(function(left, right) { - var a = left.criteria; - var b = right.criteria; - if (a !== b) { - if (a > b || a === void 0) return 1; - if (a < b || b === void 0) return -1; - } - return left.index < right.index ? -1 : 1; - }), 'value'); - }; - - // An internal function used for aggregate "group by" operations. - var group = function(obj, value, context, behavior) { - var result = {}; - var iterator = lookupIterator(value || _.identity); - each(obj, function(value, index) { - var key = iterator.call(context, value, index, obj); - behavior(result, key, value); - }); - return result; - }; - - // Groups the object's values by a criterion. Pass either a string attribute - // to group by, or a function that returns the criterion. - _.groupBy = function(obj, value, context) { - return group(obj, value, context, function(result, key, value) { - (_.has(result, key) ? result[key] : (result[key] = [])).push(value); - }); - }; - - // Counts instances of an object that group by a certain criterion. Pass - // either a string attribute to count by, or a function that returns the - // criterion. - _.countBy = function(obj, value, context) { - return group(obj, value, context, function(result, key) { - if (!_.has(result, key)) result[key] = 0; - result[key]++; - }); - }; - - // Use a comparator function to figure out the smallest index at which - // an object should be inserted so as to maintain order. Uses binary search. - _.sortedIndex = function(array, obj, iterator, context) { - iterator = iterator == null ? _.identity : lookupIterator(iterator); - var value = iterator.call(context, obj); - var low = 0, high = array.length; - while (low < high) { - var mid = (low + high) >>> 1; - iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid; - } - return low; - }; - - // Safely convert anything iterable into a real, live array. - _.toArray = function(obj) { - if (!obj) return []; - if (_.isArray(obj)) return slice.call(obj); - if (obj.length === +obj.length) return _.map(obj, _.identity); - return _.values(obj); - }; - - // Return the number of elements in an object. - _.size = function(obj) { - if (obj == null) return 0; - return (obj.length === +obj.length) ? obj.length : _.keys(obj).length; - }; - - // Array Functions - // --------------- - - // Get the first element of an array. Passing **n** will return the first N - // values in the array. Aliased as `head` and `take`. The **guard** check - // allows it to work with `_.map`. - _.first = _.head = _.take = function(array, n, guard) { - if (array == null) return void 0; - return (n != null) && !guard ? slice.call(array, 0, n) : array[0]; - }; - - // Returns everything but the last entry of the array. Especially useful on - // the arguments object. Passing **n** will return all the values in - // the array, excluding the last N. The **guard** check allows it to work with - // `_.map`. - _.initial = function(array, n, guard) { - return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n)); - }; - - // Get the last element of an array. Passing **n** will return the last N - // values in the array. The **guard** check allows it to work with `_.map`. - _.last = function(array, n, guard) { - if (array == null) return void 0; - if ((n != null) && !guard) { - return slice.call(array, Math.max(array.length - n, 0)); - } else { - return array[array.length - 1]; - } - }; - - // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. - // Especially useful on the arguments object. Passing an **n** will return - // the rest N values in the array. The **guard** - // check allows it to work with `_.map`. - _.rest = _.tail = _.drop = function(array, n, guard) { - return slice.call(array, (n == null) || guard ? 1 : n); - }; - - // Trim out all falsy values from an array. - _.compact = function(array) { - return _.filter(array, _.identity); - }; - - // Internal implementation of a recursive `flatten` function. - var flatten = function(input, shallow, output) { - each(input, function(value) { - if (_.isArray(value)) { - shallow ? push.apply(output, value) : flatten(value, shallow, output); - } else { - output.push(value); - } - }); - return output; - }; - - // Return a completely flattened version of an array. - _.flatten = function(array, shallow) { - return flatten(array, shallow, []); - }; - - // Return a version of the array that does not contain the specified value(s). - _.without = function(array) { - return _.difference(array, slice.call(arguments, 1)); - }; - - // Produce a duplicate-free version of the array. If the array has already - // been sorted, you have the option of using a faster algorithm. - // Aliased as `unique`. - _.uniq = _.unique = function(array, isSorted, iterator, context) { - if (_.isFunction(isSorted)) { - context = iterator; - iterator = isSorted; - isSorted = false; - } - var initial = iterator ? _.map(array, iterator, context) : array; - var results = []; - var seen = []; - each(initial, function(value, index) { - if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) { - seen.push(value); - results.push(array[index]); - } - }); - return results; - }; - - // Produce an array that contains the union: each distinct element from all of - // the passed-in arrays. - _.union = function() { - return _.uniq(concat.apply(ArrayProto, arguments)); - }; - - // Produce an array that contains every item shared between all the - // passed-in arrays. - _.intersection = function(array) { - var rest = slice.call(arguments, 1); - return _.filter(_.uniq(array), function(item) { - return _.every(rest, function(other) { - return _.indexOf(other, item) >= 0; - }); - }); - }; - - // Take the difference between one array and a number of other arrays. - // Only the elements present in just the first array will remain. - _.difference = function(array) { - var rest = concat.apply(ArrayProto, slice.call(arguments, 1)); - return _.filter(array, function(value){ return !_.contains(rest, value); }); - }; - - // Zip together multiple lists into a single array -- elements that share - // an index go together. - _.zip = function() { - var args = slice.call(arguments); - var length = _.max(_.pluck(args, 'length')); - var results = new Array(length); - for (var i = 0; i < length; i++) { - results[i] = _.pluck(args, "" + i); - } - return results; - }; - - // Converts lists into objects. Pass either a single array of `[key, value]` - // pairs, or two parallel arrays of the same length -- one of keys, and one of - // the corresponding values. - _.object = function(list, values) { - if (list == null) return {}; - var result = {}; - for (var i = 0, l = list.length; i < l; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; - } - } - return result; - }; - - // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**), - // we need this function. Return the position of the first occurrence of an - // item in an array, or -1 if the item is not included in the array. - // Delegates to **ECMAScript 5**'s native `indexOf` if available. - // If the array is large and already in sort order, pass `true` - // for **isSorted** to use binary search. - _.indexOf = function(array, item, isSorted) { - if (array == null) return -1; - var i = 0, l = array.length; - if (isSorted) { - if (typeof isSorted == 'number') { - i = (isSorted < 0 ? Math.max(0, l + isSorted) : isSorted); - } else { - i = _.sortedIndex(array, item); - return array[i] === item ? i : -1; - } - } - if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted); - for (; i < l; i++) if (array[i] === item) return i; - return -1; - }; - - // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available. - _.lastIndexOf = function(array, item, from) { - if (array == null) return -1; - var hasIndex = from != null; - if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) { - return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item); - } - var i = (hasIndex ? from : array.length); - while (i--) if (array[i] === item) return i; - return -1; - }; - - // Generate an integer Array containing an arithmetic progression. A port of - // the native Python `range()` function. See - // [the Python documentation](http://docs.python.org/library/functions.html#range). - _.range = function(start, stop, step) { - if (arguments.length <= 1) { - stop = start || 0; - start = 0; - } - step = arguments[2] || 1; - - var len = Math.max(Math.ceil((stop - start) / step), 0); - var idx = 0; - var range = new Array(len); - - while(idx < len) { - range[idx++] = start; - start += step; - } - - return range; - }; - - // Function (ahem) Functions - // ------------------ - - // Create a function bound to a given object (assigning `this`, and arguments, - // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if - // available. - _.bind = function(func, context) { - if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); - var args = slice.call(arguments, 2); - return function() { - return func.apply(context, args.concat(slice.call(arguments))); - }; - }; - - // Partially apply a function by creating a version that has had some of its - // arguments pre-filled, without changing its dynamic `this` context. - _.partial = function(func) { - var args = slice.call(arguments, 1); - return function() { - return func.apply(this, args.concat(slice.call(arguments))); - }; - }; - - // Bind all of an object's methods to that object. Useful for ensuring that - // all callbacks defined on an object belong to it. - _.bindAll = function(obj) { - var funcs = slice.call(arguments, 1); - if (funcs.length === 0) funcs = _.functions(obj); - each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); }); - return obj; - }; - - // Memoize an expensive function by storing its results. - _.memoize = function(func, hasher) { - var memo = {}; - hasher || (hasher = _.identity); - return function() { - var key = hasher.apply(this, arguments); - return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments)); - }; - }; - - // Delays a function for the given number of milliseconds, and then calls - // it with the arguments supplied. - _.delay = function(func, wait) { - var args = slice.call(arguments, 2); - return setTimeout(function(){ return func.apply(null, args); }, wait); - }; - - // Defers a function, scheduling it to run after the current call stack has - // cleared. - _.defer = function(func) { - return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); - }; - - // Returns a function, that, when invoked, will only be triggered at most once - // during a given window of time. - _.throttle = function(func, wait) { - var context, args, timeout, result; - var previous = 0; - var later = function() { - previous = new Date; - timeout = null; - result = func.apply(context, args); - }; - return function() { - var now = new Date; - var remaining = wait - (now - previous); - context = this; - args = arguments; - if (remaining <= 0) { - clearTimeout(timeout); - timeout = null; - previous = now; - result = func.apply(context, args); - } else if (!timeout) { - timeout = setTimeout(later, remaining); - } - return result; - }; - }; - - // Returns a function, that, as long as it continues to be invoked, will not - // be triggered. The function will be called after it stops being called for - // N milliseconds. If `immediate` is passed, trigger the function on the - // leading edge, instead of the trailing. - _.debounce = function(func, wait, immediate) { - var timeout, result; - return function() { - var context = this, args = arguments; - var later = function() { - timeout = null; - if (!immediate) result = func.apply(context, args); - }; - var callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) result = func.apply(context, args); - return result; - }; - }; - - // Returns a function that will be executed at most one time, no matter how - // often you call it. Useful for lazy initialization. - _.once = function(func) { - var ran = false, memo; - return function() { - if (ran) return memo; - ran = true; - memo = func.apply(this, arguments); - func = null; - return memo; - }; - }; - - // Returns the first function passed as an argument to the second, - // allowing you to adjust arguments, run code before and after, and - // conditionally execute the original function. - _.wrap = function(func, wrapper) { - return function() { - var args = [func]; - push.apply(args, arguments); - return wrapper.apply(this, args); - }; - }; - - // Returns a function that is the composition of a list of functions, each - // consuming the return value of the function that follows. - _.compose = function() { - var funcs = arguments; - return function() { - var args = arguments; - for (var i = funcs.length - 1; i >= 0; i--) { - args = [funcs[i].apply(this, args)]; - } - return args[0]; - }; - }; - - // Returns a function that will only be executed after being called N times. - _.after = function(times, func) { - if (times <= 0) return func(); - return function() { - if (--times < 1) { - return func.apply(this, arguments); - } - }; - }; - - // Object Functions - // ---------------- - - // Retrieve the names of an object's properties. - // Delegates to **ECMAScript 5**'s native `Object.keys` - _.keys = nativeKeys || function(obj) { - if (obj !== Object(obj)) throw new TypeError('Invalid object'); - var keys = []; - for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key; - return keys; - }; - - // Retrieve the values of an object's properties. - _.values = function(obj) { - var values = []; - for (var key in obj) if (_.has(obj, key)) values.push(obj[key]); - return values; - }; - - // Convert an object into a list of `[key, value]` pairs. - _.pairs = function(obj) { - var pairs = []; - for (var key in obj) if (_.has(obj, key)) pairs.push([key, obj[key]]); - return pairs; - }; - - // Invert the keys and values of an object. The values must be serializable. - _.invert = function(obj) { - var result = {}; - for (var key in obj) if (_.has(obj, key)) result[obj[key]] = key; - return result; - }; - - // Return a sorted list of the function names available on the object. - // Aliased as `methods` - _.functions = _.methods = function(obj) { - var names = []; - for (var key in obj) { - if (_.isFunction(obj[key])) names.push(key); - } - return names.sort(); - }; - - // Extend a given object with all the properties in passed-in object(s). - _.extend = function(obj) { - each(slice.call(arguments, 1), function(source) { - if (source) { - for (var prop in source) { - obj[prop] = source[prop]; - } - } - }); - return obj; - }; - - // Return a copy of the object only containing the whitelisted properties. - _.pick = function(obj) { - var copy = {}; - var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); - each(keys, function(key) { - if (key in obj) copy[key] = obj[key]; - }); - return copy; - }; - - // Return a copy of the object without the blacklisted properties. - _.omit = function(obj) { - var copy = {}; - var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); - for (var key in obj) { - if (!_.contains(keys, key)) copy[key] = obj[key]; - } - return copy; - }; - - // Fill in a given object with default properties. - _.defaults = function(obj) { - each(slice.call(arguments, 1), function(source) { - if (source) { - for (var prop in source) { - if (obj[prop] == null) obj[prop] = source[prop]; - } - } - }); - return obj; - }; - - // Create a (shallow-cloned) duplicate of an object. - _.clone = function(obj) { - if (!_.isObject(obj)) return obj; - return _.isArray(obj) ? obj.slice() : _.extend({}, obj); - }; - - // Invokes interceptor with the obj, and then returns obj. - // The primary purpose of this method is to "tap into" a method chain, in - // order to perform operations on intermediate results within the chain. - _.tap = function(obj, interceptor) { - interceptor(obj); - return obj; - }; - - // Internal recursive comparison function for `isEqual`. - var eq = function(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal. - if (a === b) return a !== 0 || 1 / a == 1 / b; - // A strict comparison is necessary because `null == undefined`. - if (a == null || b == null) return a === b; - // Unwrap any wrapped objects. - if (a instanceof _) a = a._wrapped; - if (b instanceof _) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className != toString.call(b)) return false; - switch (className) { - // Strings, numbers, dates, and booleans are compared by value. - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return a == String(b); - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for - // other numeric values. - return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b); - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a == +b; - // RegExps are compared by their source patterns and flags. - case '[object RegExp]': - return a.source == b.source && - a.global == b.global && - a.multiline == b.multiline && - a.ignoreCase == b.ignoreCase; - } - if (typeof a != 'object' || typeof b != 'object') return false; - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] == a) return bStack[length] == b; - } - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - var size = 0, result = true; - // Recursively compare objects and arrays. - if (className == '[object Array]') { - // Compare array lengths to determine if a deep comparison is necessary. - size = a.length; - result = size == b.length; - if (result) { - // Deep compare the contents, ignoring non-numeric properties. - while (size--) { - if (!(result = eq(a[size], b[size], aStack, bStack))) break; - } - } - } else { - // Objects with different constructors are not equivalent, but `Object`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) && - _.isFunction(bCtor) && (bCtor instanceof bCtor))) { - return false; - } - // Deep compare objects. - for (var key in a) { - if (_.has(a, key)) { - // Count the expected number of properties. - size++; - // Deep compare each member. - if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break; - } - } - // Ensure that both objects contain the same number of properties. - if (result) { - for (key in b) { - if (_.has(b, key) && !(size--)) break; - } - result = !size; - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return result; - }; - - // Perform a deep comparison to check if two objects are equal. - _.isEqual = function(a, b) { - return eq(a, b, [], []); - }; - - // Is a given array, string, or object empty? - // An "empty" object has no enumerable own-properties. - _.isEmpty = function(obj) { - if (obj == null) return true; - if (_.isArray(obj) || _.isString(obj)) return obj.length === 0; - for (var key in obj) if (_.has(obj, key)) return false; - return true; - }; - - // Is a given value a DOM element? - _.isElement = function(obj) { - return !!(obj && obj.nodeType === 1); - }; - - // Is a given value an array? - // Delegates to ECMA5's native Array.isArray - _.isArray = nativeIsArray || function(obj) { - return toString.call(obj) == '[object Array]'; - }; - - // Is a given variable an object? - _.isObject = function(obj) { - return obj === Object(obj); - }; - - // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp. - each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) { - _['is' + name] = function(obj) { - return toString.call(obj) == '[object ' + name + ']'; - }; - }); - - // Define a fallback version of the method in browsers (ahem, IE), where - // there isn't any inspectable "Arguments" type. - if (!_.isArguments(arguments)) { - _.isArguments = function(obj) { - return !!(obj && _.has(obj, 'callee')); - }; - } - - // Optimize `isFunction` if appropriate. - if (typeof (/./) !== 'function') { - _.isFunction = function(obj) { - return typeof obj === 'function'; - }; - } - - // Is a given object a finite number? - _.isFinite = function(obj) { - return isFinite(obj) && !isNaN(parseFloat(obj)); - }; - - // Is the given value `NaN`? (NaN is the only number which does not equal itself). - _.isNaN = function(obj) { - return _.isNumber(obj) && obj != +obj; - }; - - // Is a given value a boolean? - _.isBoolean = function(obj) { - return obj === true || obj === false || toString.call(obj) == '[object Boolean]'; - }; - - // Is a given value equal to null? - _.isNull = function(obj) { - return obj === null; - }; - - // Is a given variable undefined? - _.isUndefined = function(obj) { - return obj === void 0; - }; - - // Shortcut function for checking if an object has a given property directly - // on itself (in other words, not on a prototype). - _.has = function(obj, key) { - return hasOwnProperty.call(obj, key); - }; - - // Utility Functions - // ----------------- - - // Run Underscore.js in *noConflict* mode, returning the `_` variable to its - // previous owner. Returns a reference to the Underscore object. - _.noConflict = function() { - root._ = previousUnderscore; - return this; - }; - - // Keep the identity function around for default iterators. - _.identity = function(value) { - return value; - }; - - // Run a function **n** times. - _.times = function(n, iterator, context) { - var accum = Array(n); - for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i); - return accum; - }; - - // Return a random integer between min and max (inclusive). - _.random = function(min, max) { - if (max == null) { - max = min; - min = 0; - } - return min + Math.floor(Math.random() * (max - min + 1)); - }; - - // List of HTML entities for escaping. - var entityMap = { - escape: { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '/': '/' - } - }; - entityMap.unescape = _.invert(entityMap.escape); - - // Regexes containing the keys and values listed immediately above. - var entityRegexes = { - escape: new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'), - unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g') - }; - - // Functions for escaping and unescaping strings to/from HTML interpolation. - _.each(['escape', 'unescape'], function(method) { - _[method] = function(string) { - if (string == null) return ''; - return ('' + string).replace(entityRegexes[method], function(match) { - return entityMap[method][match]; - }); - }; - }); - - // If the value of the named property is a function then invoke it; - // otherwise, return it. - _.result = function(object, property) { - if (object == null) return null; - var value = object[property]; - return _.isFunction(value) ? value.call(object) : value; - }; - - // Add your own custom functions to the Underscore object. - _.mixin = function(obj) { - each(_.functions(obj), function(name){ - var func = _[name] = obj[name]; - _.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return result.call(this, func.apply(_, args)); - }; - }); - }; - - // Generate a unique integer id (unique within the entire client session). - // Useful for temporary DOM ids. - var idCounter = 0; - _.uniqueId = function(prefix) { - var id = ++idCounter + ''; - return prefix ? prefix + id : id; - }; - - // By default, Underscore uses ERB-style template delimiters, change the - // following template settings to use alternative delimiters. - _.templateSettings = { - evaluate : /<%([\s\S]+?)%>/g, - interpolate : /<%=([\s\S]+?)%>/g, - escape : /<%-([\s\S]+?)%>/g - }; - - // When customizing `templateSettings`, if you don't want to define an - // interpolation, evaluation or escaping regex, we need one that is - // guaranteed not to match. - var noMatch = /(.)^/; - - // Certain characters need to be escaped so that they can be put into a - // string literal. - var escapes = { - "'": "'", - '\\': '\\', - '\r': 'r', - '\n': 'n', - '\t': 't', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; - - var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g; - - // JavaScript micro-templating, similar to John Resig's implementation. - // Underscore templating handles arbitrary delimiters, preserves whitespace, - // and correctly escapes quotes within interpolated code. - _.template = function(text, data, settings) { - var render; - settings = _.defaults({}, settings, _.templateSettings); - - // Combine delimiters into one regular expression via alternation. - var matcher = new RegExp([ - (settings.escape || noMatch).source, - (settings.interpolate || noMatch).source, - (settings.evaluate || noMatch).source - ].join('|') + '|$', 'g'); - - // Compile the template source, escaping string literals appropriately. - var index = 0; - var source = "__p+='"; - text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { - source += text.slice(index, offset) - .replace(escaper, function(match) { return '\\' + escapes[match]; }); - - if (escape) { - source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; - } - if (interpolate) { - source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; - } - if (evaluate) { - source += "';\n" + evaluate + "\n__p+='"; - } - index = offset + match.length; - return match; - }); - source += "';\n"; - - // If a variable is not specified, place data values in local scope. - if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; - - source = "var __t,__p='',__j=Array.prototype.join," + - "print=function(){__p+=__j.call(arguments,'');};\n" + - source + "return __p;\n"; - - try { - render = new Function(settings.variable || 'obj', '_', source); - } catch (e) { - e.source = source; - throw e; - } - - if (data) return render(data, _); - var template = function(data) { - return render.call(this, data, _); - }; - - // Provide the compiled function source as a convenience for precompilation. - template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}'; - - return template; - }; - - // Add a "chain" function, which will delegate to the wrapper. - _.chain = function(obj) { - return _(obj).chain(); - }; - - // OOP - // --------------- - // If Underscore is called as a function, it returns a wrapped object that - // can be used OO-style. This wrapper holds altered versions of all the - // underscore functions. Wrapped objects may be chained. - - // Helper function to continue chaining intermediate results. - var result = function(obj) { - return this._chain ? _(obj).chain() : obj; - }; - - // Add all of the Underscore functions to the wrapper object. - _.mixin(_); - - // Add all mutator Array functions to the wrapper. - each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _.prototype[name] = function() { - var obj = this._wrapped; - method.apply(obj, arguments); - if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0]; - return result.call(this, obj); - }; - }); - - // Add all accessor Array functions to the wrapper. - each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _.prototype[name] = function() { - return result.call(this, method.apply(this._wrapped, arguments)); - }; - }); - - _.extend(_.prototype, { - - // Start chaining a wrapped Underscore object. - chain: function() { - this._chain = true; - return this; - }, - - // Extracts the result from a wrapped and chained object. - value: function() { - return this._wrapped; - } - - }); - -}).call(this); +// Underscore.js 0.5.5 +// (c) 2009 Jeremy Ashkenas, DocumentCloud Inc. +// Underscore is freely distributable under the terms of the MIT license. +// Portions of Underscore are inspired by or borrowed from Prototype.js, +// Oliver Steele's Functional, and John Resig's Micro-Templating. +// For all details and documentation: +// http://documentcloud.github.com/underscore/ +(function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;gf?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)}); +return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length); +var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false; +if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length== +0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&& +a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g, +" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments); +o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})(); diff --git a/faq.html b/faq.html index a621b5b..48da9f2 100644 --- a/faq.html +++ b/faq.html @@ -266,7 +266,7 @@

    Does IPython play well with Windows?ΒΆ

    See the installation documentation for full details.

    The standard Python installation mechanisms (setup.py, pip or easy_install) all work for installing IPython to use in a terminal. Windows users are best off installing distribute, then running the .exe installer, to create start menu shortcuts.

    -

    To use the notebook or the Qt console, it’s easiest to install through a package manager, or download a Python distribution such as Anaconda or EPD. Otherwise, you will need to install pyzmq, along with tornado for the notebook, and PyQt4/PySide and pygments for the Qt console.

    +

    To use the notebook or the Qt console, it’s easiest to install through a package manager, or download a Python distribution such as Anaconda or Enthought Canopy. Otherwise, you will need to install pyzmq, along with tornado for the notebook, and PyQt4/PySide and pygments for the Qt console.

    diff --git a/presentation.html b/presentation.html index 2ffca32..46a741d 100644 --- a/presentation.html +++ b/presentation.html @@ -275,7 +275,7 @@

    2009ΒΆ<

    2008ΒΆ

    • A talk at -23andMe where I spoke about ipython in general, with +23andMe where Fernando spoke about ipython in general, with some details about its facilities for distributed computing.
    @@ -321,20 +321,20 @@

    2006ΒΆ<

    2005ΒΆ

    2004ΒΆ

      -
    • A talk at SciPy‘04.
    • +
    • A talk at SciPy‘04.

    2003ΒΆ

    diff --git a/sponsors.html b/sponsors.html index 92cde22..0c0250c 100644 --- a/sponsors.html +++ b/sponsors.html @@ -225,6 +225,12 @@

    Sponsors_images/sloan-logo.png

    In December 2012, IPython was awarded a $1.15 million grant from the Alfred P. Sloan Foundation that will fund the core team for the 2013-2014 period.

    +_images/RS_PoweredBy_OCC_logo-2c.png +

    As of Summer 2013, Rackspace generously provides +cloud hosting for the project. This is used for development and the hosting of +IPython related services, such as the IPython Notebook Viewer. We thank Jesse Noller and Kyle Kelley at +Rackspace for setting up this sponsorship and helping with deployment +respectively.

    ContributingΒΆ

    If you would like to support the project by making a substantial or periodic From 485f3b106ebeca49c53c5c4fba326603600e5c97 Mon Sep 17 00:00:00 2001 From: Paul Ivanov Date: Mon, 9 Dec 2013 11:55:45 -0800 Subject: [PATCH 012/146] Updated website (automated commit) --- gallery.html | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 gallery.html diff --git a/gallery.html b/gallery.html new file mode 100644 index 0000000..fb977bb --- /dev/null +++ b/gallery.html @@ -0,0 +1,8 @@ + + + + + +

    The notebook gallery page is located here.

    + + \ No newline at end of file From 6c7a73374e760d2442e4f70cb8ebffa45965a313 Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Wed, 11 Dec 2013 12:24:46 -0800 Subject: [PATCH 013/146] Add announcement about Mining the Social Web book --- _sources/index.txt | 10 ++++++++++ index.html | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/_sources/index.txt b/_sources/index.txt index 61ebe9f..c6a15ea 100644 --- a/_sources/index.txt +++ b/_sources/index.txt @@ -65,6 +65,16 @@ supports Python 2.5, and can be used with Python 2.4. Announcements ============= +- **O'Reilly Book**: `Mining the Social Web `_ + is an open source data science project and `book `_ + that features nearly 130 examples with IPython Notebook and a + Vagrant-powered virtual machine environment. You can preview all of the + example notebooks from its GitHub `repository + `_ on IPython's Notebook Viewer `here + `_. + + - **Microsoft donates $100,000 to IPython:** in August 2013, Microsoft `contributed $100,000 `_ to support the continued development of IPython. diff --git a/index.html b/index.html index 4679690..8208004 100644 --- a/index.html +++ b/index.html @@ -249,6 +249,11 @@

    Support IPython

    AnnouncementsΒΆ

      +
    • O’Reilly Book: Mining the Social Web +is an open source data science project and book +that features nearly 130 examples with IPython Notebook and a +Vagrant-powered virtual machine environment. You can preview all of the +example notebooks from its GitHub repository on IPython’s Notebook Viewer here.
    • Microsoft donates $100,000 to IPython: in August 2013, Microsoft contributed $100,000 to support the continued development of IPython.
    • From 7aacfe7b78a1627b81304819ea754f7ba786d84a Mon Sep 17 00:00:00 2001 From: Fernando Perez Date: Wed, 15 Jan 2014 23:01:43 -0800 Subject: [PATCH 014/146] Updated website (automated commit) --- _sources/citing.txt | 26 +- _static/simons-logo.jpg | Bin 0 -> 131255 bytes _static/sloan-logo.jpg | Bin 0 -> 138765 bytes _static/underscore.js | 1249 ++++++++++++++++++++++++++++++++++++++- citing.html | 22 +- search.html | 2 + 6 files changed, 1254 insertions(+), 45 deletions(-) create mode 100644 _static/simons-logo.jpg create mode 100644 _static/sloan-logo.jpg diff --git a/_sources/citing.txt b/_sources/citing.txt index a1c3a85..3f37271 100644 --- a/_sources/citing.txt +++ b/_sources/citing.txt @@ -8,18 +8,20 @@ academic reference for IPython is `this paper `_, for which here are both a BibTex and a plaintext reference you can use:: - @Article{PER-GRA:2007, - Author = {P\'erez, Fernando and Granger, Brian E.}, - Title = {{IP}ython: a {S}ystem for {I}nteractive {S}cientific - {C}omputing}, - Journal = {{C}omput. {S}ci. {E}ng.}, - Volume = {9}, - Number = {3}, - Pages = {21-29}, - month = may, - year = 2007, - url = "http://ipython.org", - } + @Article{PER-GRA:2007, + Author = {P\'erez, Fernando and Granger, Brian E.}, + Title = {{IP}ython: a System for Interactive Scientific Computing}, + Journal = {Computing in Science and Engineering}, + Volume = {9}, + Number = {3}, + Pages = {21--29}, + month = may, + year = 2007, + url = "http://ipython.org", + ISSN = "1521-9615", + doi = {10.1109/MCSE.2007.53}, + publisher = {IEEE Computer Society}, + } or in plaintext: diff --git a/_static/simons-logo.jpg b/_static/simons-logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2a0f10ddebe82089b4ac404f5ff17b83e64c59e3 GIT binary patch literal 131255 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

      *(OYPaFz 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 literal 0 HcmV?d00001 diff --git a/_static/sloan-logo.jpg b/_static/sloan-logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..18bf35b52788d556d13fa4ad754d427a66fd7a3d GIT binary patch literal 138765 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]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

      g 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 E0oTaj;Q#;t literal 0 HcmV?d00001 diff --git a/_static/underscore.js b/_static/underscore.js index 5d89914..a12f0d9 100644 --- a/_static/underscore.js +++ b/_static/underscore.js @@ -1,23 +1,1226 @@ -// Underscore.js 0.5.5 -// (c) 2009 Jeremy Ashkenas, DocumentCloud Inc. -// Underscore is freely distributable under the terms of the MIT license. -// Portions of Underscore are inspired by or borrowed from Prototype.js, -// Oliver Steele's Functional, and John Resig's Micro-Templating. -// For all details and documentation: -// http://documentcloud.github.com/underscore/ -(function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;gf?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)}); -return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length); -var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false; -if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length== -0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&& -a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g, -" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments); -o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})(); +// Underscore.js 1.4.4 +// http://underscorejs.org +// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc. +// Underscore may be freely distributed under the MIT license. + +(function() { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `global` on the server. + var root = this; + + // Save the previous value of the `_` variable. + var previousUnderscore = root._; + + // Establish the object that gets returned to break out of a loop iteration. + var breaker = {}; + + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; + + // Create quick reference variables for speed access to core prototypes. + var push = ArrayProto.push, + slice = ArrayProto.slice, + concat = ArrayProto.concat, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + + // All **ECMAScript 5** native function implementations that we hope to use + // are declared here. + var + nativeForEach = ArrayProto.forEach, + nativeMap = ArrayProto.map, + nativeReduce = ArrayProto.reduce, + nativeReduceRight = ArrayProto.reduceRight, + nativeFilter = ArrayProto.filter, + nativeEvery = ArrayProto.every, + nativeSome = ArrayProto.some, + nativeIndexOf = ArrayProto.indexOf, + nativeLastIndexOf = ArrayProto.lastIndexOf, + nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeBind = FuncProto.bind; + + // Create a safe reference to the Underscore object for use below. + var _ = function(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; + }; + + // Export the Underscore object for **Node.js**, with + // backwards-compatibility for the old `require()` API. If we're in + // the browser, add `_` as a global object via a string identifier, + // for Closure Compiler "advanced" mode. + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = _; + } + exports._ = _; + } else { + root._ = _; + } + + // Current version. + _.VERSION = '1.4.4'; + + // Collection Functions + // -------------------- + + // The cornerstone, an `each` implementation, aka `forEach`. + // Handles objects with the built-in `forEach`, arrays, and raw objects. + // Delegates to **ECMAScript 5**'s native `forEach` if available. + var each = _.each = _.forEach = function(obj, iterator, context) { + if (obj == null) return; + if (nativeForEach && obj.forEach === nativeForEach) { + obj.forEach(iterator, context); + } else if (obj.length === +obj.length) { + for (var i = 0, l = obj.length; i < l; i++) { + if (iterator.call(context, obj[i], i, obj) === breaker) return; + } + } else { + for (var key in obj) { + if (_.has(obj, key)) { + if (iterator.call(context, obj[key], key, obj) === breaker) return; + } + } + } + }; + + // Return the results of applying the iterator to each element. + // Delegates to **ECMAScript 5**'s native `map` if available. + _.map = _.collect = function(obj, iterator, context) { + var results = []; + if (obj == null) return results; + if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); + each(obj, function(value, index, list) { + results[results.length] = iterator.call(context, value, index, list); + }); + return results; + }; + + var reduceError = 'Reduce of empty array with no initial value'; + + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available. + _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) { + var initial = arguments.length > 2; + if (obj == null) obj = []; + if (nativeReduce && obj.reduce === nativeReduce) { + if (context) iterator = _.bind(iterator, context); + return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator); + } + each(obj, function(value, index, list) { + if (!initial) { + memo = value; + initial = true; + } else { + memo = iterator.call(context, memo, value, index, list); + } + }); + if (!initial) throw new TypeError(reduceError); + return memo; + }; + + // The right-associative version of reduce, also known as `foldr`. + // Delegates to **ECMAScript 5**'s native `reduceRight` if available. + _.reduceRight = _.foldr = function(obj, iterator, memo, context) { + var initial = arguments.length > 2; + if (obj == null) obj = []; + if (nativeReduceRight && obj.reduceRight === nativeReduceRight) { + if (context) iterator = _.bind(iterator, context); + return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator); + } + var length = obj.length; + if (length !== +length) { + var keys = _.keys(obj); + length = keys.length; + } + each(obj, function(value, index, list) { + index = keys ? keys[--length] : --length; + if (!initial) { + memo = obj[index]; + initial = true; + } else { + memo = iterator.call(context, memo, obj[index], index, list); + } + }); + if (!initial) throw new TypeError(reduceError); + return memo; + }; + + // Return the first value which passes a truth test. Aliased as `detect`. + _.find = _.detect = function(obj, iterator, context) { + var result; + any(obj, function(value, index, list) { + if (iterator.call(context, value, index, list)) { + result = value; + return true; + } + }); + return result; + }; + + // Return all the elements that pass a truth test. + // Delegates to **ECMAScript 5**'s native `filter` if available. + // Aliased as `select`. + _.filter = _.select = function(obj, iterator, context) { + var results = []; + if (obj == null) return results; + if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context); + each(obj, function(value, index, list) { + if (iterator.call(context, value, index, list)) results[results.length] = value; + }); + return results; + }; + + // Return all the elements for which a truth test fails. + _.reject = function(obj, iterator, context) { + return _.filter(obj, function(value, index, list) { + return !iterator.call(context, value, index, list); + }, context); + }; + + // Determine whether all of the elements match a truth test. + // Delegates to **ECMAScript 5**'s native `every` if available. + // Aliased as `all`. + _.every = _.all = function(obj, iterator, context) { + iterator || (iterator = _.identity); + var result = true; + if (obj == null) return result; + if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context); + each(obj, function(value, index, list) { + if (!(result = result && iterator.call(context, value, index, list))) return breaker; + }); + return !!result; + }; + + // Determine if at least one element in the object matches a truth test. + // Delegates to **ECMAScript 5**'s native `some` if available. + // Aliased as `any`. + var any = _.some = _.any = function(obj, iterator, context) { + iterator || (iterator = _.identity); + var result = false; + if (obj == null) return result; + if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context); + each(obj, function(value, index, list) { + if (result || (result = iterator.call(context, value, index, list))) return breaker; + }); + return !!result; + }; + + // Determine if the array or object contains a given value (using `===`). + // Aliased as `include`. + _.contains = _.include = function(obj, target) { + if (obj == null) return false; + if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; + return any(obj, function(value) { + return value === target; + }); + }; + + // Invoke a method (with arguments) on every item in a collection. + _.invoke = function(obj, method) { + var args = slice.call(arguments, 2); + var isFunc = _.isFunction(method); + return _.map(obj, function(value) { + return (isFunc ? method : value[method]).apply(value, args); + }); + }; + + // Convenience version of a common use case of `map`: fetching a property. + _.pluck = function(obj, key) { + return _.map(obj, function(value){ return value[key]; }); + }; + + // Convenience version of a common use case of `filter`: selecting only objects + // containing specific `key:value` pairs. + _.where = function(obj, attrs, first) { + if (_.isEmpty(attrs)) return first ? null : []; + return _[first ? 'find' : 'filter'](obj, function(value) { + for (var key in attrs) { + if (attrs[key] !== value[key]) return false; + } + return true; + }); + }; + + // Convenience version of a common use case of `find`: getting the first object + // containing specific `key:value` pairs. + _.findWhere = function(obj, attrs) { + return _.where(obj, attrs, true); + }; + + // Return the maximum element or (element-based computation). + // Can't optimize arrays of integers longer than 65,535 elements. + // See: https://bugs.webkit.org/show_bug.cgi?id=80797 + _.max = function(obj, iterator, context) { + if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { + return Math.max.apply(Math, obj); + } + if (!iterator && _.isEmpty(obj)) return -Infinity; + var result = {computed : -Infinity, value: -Infinity}; + each(obj, function(value, index, list) { + var computed = iterator ? iterator.call(context, value, index, list) : value; + computed >= result.computed && (result = {value : value, computed : computed}); + }); + return result.value; + }; + + // Return the minimum element (or element-based computation). + _.min = function(obj, iterator, context) { + if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { + return Math.min.apply(Math, obj); + } + if (!iterator && _.isEmpty(obj)) return Infinity; + var result = {computed : Infinity, value: Infinity}; + each(obj, function(value, index, list) { + var computed = iterator ? iterator.call(context, value, index, list) : value; + computed < result.computed && (result = {value : value, computed : computed}); + }); + return result.value; + }; + + // Shuffle an array. + _.shuffle = function(obj) { + var rand; + var index = 0; + var shuffled = []; + each(obj, function(value) { + rand = _.random(index++); + shuffled[index - 1] = shuffled[rand]; + shuffled[rand] = value; + }); + return shuffled; + }; + + // An internal function to generate lookup iterators. + var lookupIterator = function(value) { + return _.isFunction(value) ? value : function(obj){ return obj[value]; }; + }; + + // Sort the object's values by a criterion produced by an iterator. + _.sortBy = function(obj, value, context) { + var iterator = lookupIterator(value); + return _.pluck(_.map(obj, function(value, index, list) { + return { + value : value, + index : index, + criteria : iterator.call(context, value, index, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index < right.index ? -1 : 1; + }), 'value'); + }; + + // An internal function used for aggregate "group by" operations. + var group = function(obj, value, context, behavior) { + var result = {}; + var iterator = lookupIterator(value || _.identity); + each(obj, function(value, index) { + var key = iterator.call(context, value, index, obj); + behavior(result, key, value); + }); + return result; + }; + + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + _.groupBy = function(obj, value, context) { + return group(obj, value, context, function(result, key, value) { + (_.has(result, key) ? result[key] : (result[key] = [])).push(value); + }); + }; + + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + _.countBy = function(obj, value, context) { + return group(obj, value, context, function(result, key) { + if (!_.has(result, key)) result[key] = 0; + result[key]++; + }); + }; + + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + _.sortedIndex = function(array, obj, iterator, context) { + iterator = iterator == null ? _.identity : lookupIterator(iterator); + var value = iterator.call(context, obj); + var low = 0, high = array.length; + while (low < high) { + var mid = (low + high) >>> 1; + iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid; + } + return low; + }; + + // Safely convert anything iterable into a real, live array. + _.toArray = function(obj) { + if (!obj) return []; + if (_.isArray(obj)) return slice.call(obj); + if (obj.length === +obj.length) return _.map(obj, _.identity); + return _.values(obj); + }; + + // Return the number of elements in an object. + _.size = function(obj) { + if (obj == null) return 0; + return (obj.length === +obj.length) ? obj.length : _.keys(obj).length; + }; + + // Array Functions + // --------------- + + // Get the first element of an array. Passing **n** will return the first N + // values in the array. Aliased as `head` and `take`. The **guard** check + // allows it to work with `_.map`. + _.first = _.head = _.take = function(array, n, guard) { + if (array == null) return void 0; + return (n != null) && !guard ? slice.call(array, 0, n) : array[0]; + }; + + // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. The **guard** check allows it to work with + // `_.map`. + _.initial = function(array, n, guard) { + return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n)); + }; + + // Get the last element of an array. Passing **n** will return the last N + // values in the array. The **guard** check allows it to work with `_.map`. + _.last = function(array, n, guard) { + if (array == null) return void 0; + if ((n != null) && !guard) { + return slice.call(array, Math.max(array.length - n, 0)); + } else { + return array[array.length - 1]; + } + }; + + // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. + // Especially useful on the arguments object. Passing an **n** will return + // the rest N values in the array. The **guard** + // check allows it to work with `_.map`. + _.rest = _.tail = _.drop = function(array, n, guard) { + return slice.call(array, (n == null) || guard ? 1 : n); + }; + + // Trim out all falsy values from an array. + _.compact = function(array) { + return _.filter(array, _.identity); + }; + + // Internal implementation of a recursive `flatten` function. + var flatten = function(input, shallow, output) { + each(input, function(value) { + if (_.isArray(value)) { + shallow ? push.apply(output, value) : flatten(value, shallow, output); + } else { + output.push(value); + } + }); + return output; + }; + + // Return a completely flattened version of an array. + _.flatten = function(array, shallow) { + return flatten(array, shallow, []); + }; + + // Return a version of the array that does not contain the specified value(s). + _.without = function(array) { + return _.difference(array, slice.call(arguments, 1)); + }; + + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // Aliased as `unique`. + _.uniq = _.unique = function(array, isSorted, iterator, context) { + if (_.isFunction(isSorted)) { + context = iterator; + iterator = isSorted; + isSorted = false; + } + var initial = iterator ? _.map(array, iterator, context) : array; + var results = []; + var seen = []; + each(initial, function(value, index) { + if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) { + seen.push(value); + results.push(array[index]); + } + }); + return results; + }; + + // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. + _.union = function() { + return _.uniq(concat.apply(ArrayProto, arguments)); + }; + + // Produce an array that contains every item shared between all the + // passed-in arrays. + _.intersection = function(array) { + var rest = slice.call(arguments, 1); + return _.filter(_.uniq(array), function(item) { + return _.every(rest, function(other) { + return _.indexOf(other, item) >= 0; + }); + }); + }; + + // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. + _.difference = function(array) { + var rest = concat.apply(ArrayProto, slice.call(arguments, 1)); + return _.filter(array, function(value){ return !_.contains(rest, value); }); + }; + + // Zip together multiple lists into a single array -- elements that share + // an index go together. + _.zip = function() { + var args = slice.call(arguments); + var length = _.max(_.pluck(args, 'length')); + var results = new Array(length); + for (var i = 0; i < length; i++) { + results[i] = _.pluck(args, "" + i); + } + return results; + }; + + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. + _.object = function(list, values) { + if (list == null) return {}; + var result = {}; + for (var i = 0, l = list.length; i < l; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + }; + + // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**), + // we need this function. Return the position of the first occurrence of an + // item in an array, or -1 if the item is not included in the array. + // Delegates to **ECMAScript 5**'s native `indexOf` if available. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + _.indexOf = function(array, item, isSorted) { + if (array == null) return -1; + var i = 0, l = array.length; + if (isSorted) { + if (typeof isSorted == 'number') { + i = (isSorted < 0 ? Math.max(0, l + isSorted) : isSorted); + } else { + i = _.sortedIndex(array, item); + return array[i] === item ? i : -1; + } + } + if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted); + for (; i < l; i++) if (array[i] === item) return i; + return -1; + }; + + // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available. + _.lastIndexOf = function(array, item, from) { + if (array == null) return -1; + var hasIndex = from != null; + if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) { + return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item); + } + var i = (hasIndex ? from : array.length); + while (i--) if (array[i] === item) return i; + return -1; + }; + + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](http://docs.python.org/library/functions.html#range). + _.range = function(start, stop, step) { + if (arguments.length <= 1) { + stop = start || 0; + start = 0; + } + step = arguments[2] || 1; + + var len = Math.max(Math.ceil((stop - start) / step), 0); + var idx = 0; + var range = new Array(len); + + while(idx < len) { + range[idx++] = start; + start += step; + } + + return range; + }; + + // Function (ahem) Functions + // ------------------ + + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if + // available. + _.bind = function(func, context) { + if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); + var args = slice.call(arguments, 2); + return function() { + return func.apply(context, args.concat(slice.call(arguments))); + }; + }; + + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. + _.partial = function(func) { + var args = slice.call(arguments, 1); + return function() { + return func.apply(this, args.concat(slice.call(arguments))); + }; + }; + + // Bind all of an object's methods to that object. Useful for ensuring that + // all callbacks defined on an object belong to it. + _.bindAll = function(obj) { + var funcs = slice.call(arguments, 1); + if (funcs.length === 0) funcs = _.functions(obj); + each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); }); + return obj; + }; + + // Memoize an expensive function by storing its results. + _.memoize = function(func, hasher) { + var memo = {}; + hasher || (hasher = _.identity); + return function() { + var key = hasher.apply(this, arguments); + return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments)); + }; + }; + + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + _.delay = function(func, wait) { + var args = slice.call(arguments, 2); + return setTimeout(function(){ return func.apply(null, args); }, wait); + }; + + // Defers a function, scheduling it to run after the current call stack has + // cleared. + _.defer = function(func) { + return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); + }; + + // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. + _.throttle = function(func, wait) { + var context, args, timeout, result; + var previous = 0; + var later = function() { + previous = new Date; + timeout = null; + result = func.apply(context, args); + }; + return function() { + var now = new Date; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + } else if (!timeout) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }; + + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + _.debounce = function(func, wait, immediate) { + var timeout, result; + return function() { + var context = this, args = arguments; + var later = function() { + timeout = null; + if (!immediate) result = func.apply(context, args); + }; + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) result = func.apply(context, args); + return result; + }; + }; + + // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. + _.once = function(func) { + var ran = false, memo; + return function() { + if (ran) return memo; + ran = true; + memo = func.apply(this, arguments); + func = null; + return memo; + }; + }; + + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + _.wrap = function(func, wrapper) { + return function() { + var args = [func]; + push.apply(args, arguments); + return wrapper.apply(this, args); + }; + }; + + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + _.compose = function() { + var funcs = arguments; + return function() { + var args = arguments; + for (var i = funcs.length - 1; i >= 0; i--) { + args = [funcs[i].apply(this, args)]; + } + return args[0]; + }; + }; + + // Returns a function that will only be executed after being called N times. + _.after = function(times, func) { + if (times <= 0) return func(); + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + }; + + // Object Functions + // ---------------- + + // Retrieve the names of an object's properties. + // Delegates to **ECMAScript 5**'s native `Object.keys` + _.keys = nativeKeys || function(obj) { + if (obj !== Object(obj)) throw new TypeError('Invalid object'); + var keys = []; + for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key; + return keys; + }; + + // Retrieve the values of an object's properties. + _.values = function(obj) { + var values = []; + for (var key in obj) if (_.has(obj, key)) values.push(obj[key]); + return values; + }; + + // Convert an object into a list of `[key, value]` pairs. + _.pairs = function(obj) { + var pairs = []; + for (var key in obj) if (_.has(obj, key)) pairs.push([key, obj[key]]); + return pairs; + }; + + // Invert the keys and values of an object. The values must be serializable. + _.invert = function(obj) { + var result = {}; + for (var key in obj) if (_.has(obj, key)) result[obj[key]] = key; + return result; + }; + + // Return a sorted list of the function names available on the object. + // Aliased as `methods` + _.functions = _.methods = function(obj) { + var names = []; + for (var key in obj) { + if (_.isFunction(obj[key])) names.push(key); + } + return names.sort(); + }; + + // Extend a given object with all the properties in passed-in object(s). + _.extend = function(obj) { + each(slice.call(arguments, 1), function(source) { + if (source) { + for (var prop in source) { + obj[prop] = source[prop]; + } + } + }); + return obj; + }; + + // Return a copy of the object only containing the whitelisted properties. + _.pick = function(obj) { + var copy = {}; + var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); + each(keys, function(key) { + if (key in obj) copy[key] = obj[key]; + }); + return copy; + }; + + // Return a copy of the object without the blacklisted properties. + _.omit = function(obj) { + var copy = {}; + var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); + for (var key in obj) { + if (!_.contains(keys, key)) copy[key] = obj[key]; + } + return copy; + }; + + // Fill in a given object with default properties. + _.defaults = function(obj) { + each(slice.call(arguments, 1), function(source) { + if (source) { + for (var prop in source) { + if (obj[prop] == null) obj[prop] = source[prop]; + } + } + }); + return obj; + }; + + // Create a (shallow-cloned) duplicate of an object. + _.clone = function(obj) { + if (!_.isObject(obj)) return obj; + return _.isArray(obj) ? obj.slice() : _.extend({}, obj); + }; + + // Invokes interceptor with the obj, and then returns obj. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + _.tap = function(obj, interceptor) { + interceptor(obj); + return obj; + }; + + // Internal recursive comparison function for `isEqual`. + var eq = function(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal. + if (a === b) return a !== 0 || 1 / a == 1 / b; + // A strict comparison is necessary because `null == undefined`. + if (a == null || b == null) return a === b; + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className != toString.call(b)) return false; + switch (className) { + // Strings, numbers, dates, and booleans are compared by value. + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return a == String(b); + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for + // other numeric values. + return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b); + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a == +b; + // RegExps are compared by their source patterns and flags. + case '[object RegExp]': + return a.source == b.source && + a.global == b.global && + a.multiline == b.multiline && + a.ignoreCase == b.ignoreCase; + } + if (typeof a != 'object' || typeof b != 'object') return false; + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] == a) return bStack[length] == b; + } + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + var size = 0, result = true; + // Recursively compare objects and arrays. + if (className == '[object Array]') { + // Compare array lengths to determine if a deep comparison is necessary. + size = a.length; + result = size == b.length; + if (result) { + // Deep compare the contents, ignoring non-numeric properties. + while (size--) { + if (!(result = eq(a[size], b[size], aStack, bStack))) break; + } + } + } else { + // Objects with different constructors are not equivalent, but `Object`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) && + _.isFunction(bCtor) && (bCtor instanceof bCtor))) { + return false; + } + // Deep compare objects. + for (var key in a) { + if (_.has(a, key)) { + // Count the expected number of properties. + size++; + // Deep compare each member. + if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break; + } + } + // Ensure that both objects contain the same number of properties. + if (result) { + for (key in b) { + if (_.has(b, key) && !(size--)) break; + } + result = !size; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return result; + }; + + // Perform a deep comparison to check if two objects are equal. + _.isEqual = function(a, b) { + return eq(a, b, [], []); + }; + + // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. + _.isEmpty = function(obj) { + if (obj == null) return true; + if (_.isArray(obj) || _.isString(obj)) return obj.length === 0; + for (var key in obj) if (_.has(obj, key)) return false; + return true; + }; + + // Is a given value a DOM element? + _.isElement = function(obj) { + return !!(obj && obj.nodeType === 1); + }; + + // Is a given value an array? + // Delegates to ECMA5's native Array.isArray + _.isArray = nativeIsArray || function(obj) { + return toString.call(obj) == '[object Array]'; + }; + + // Is a given variable an object? + _.isObject = function(obj) { + return obj === Object(obj); + }; + + // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp. + each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) { + _['is' + name] = function(obj) { + return toString.call(obj) == '[object ' + name + ']'; + }; + }); + + // Define a fallback version of the method in browsers (ahem, IE), where + // there isn't any inspectable "Arguments" type. + if (!_.isArguments(arguments)) { + _.isArguments = function(obj) { + return !!(obj && _.has(obj, 'callee')); + }; + } + + // Optimize `isFunction` if appropriate. + if (typeof (/./) !== 'function') { + _.isFunction = function(obj) { + return typeof obj === 'function'; + }; + } + + // Is a given object a finite number? + _.isFinite = function(obj) { + return isFinite(obj) && !isNaN(parseFloat(obj)); + }; + + // Is the given value `NaN`? (NaN is the only number which does not equal itself). + _.isNaN = function(obj) { + return _.isNumber(obj) && obj != +obj; + }; + + // Is a given value a boolean? + _.isBoolean = function(obj) { + return obj === true || obj === false || toString.call(obj) == '[object Boolean]'; + }; + + // Is a given value equal to null? + _.isNull = function(obj) { + return obj === null; + }; + + // Is a given variable undefined? + _.isUndefined = function(obj) { + return obj === void 0; + }; + + // Shortcut function for checking if an object has a given property directly + // on itself (in other words, not on a prototype). + _.has = function(obj, key) { + return hasOwnProperty.call(obj, key); + }; + + // Utility Functions + // ----------------- + + // Run Underscore.js in *noConflict* mode, returning the `_` variable to its + // previous owner. Returns a reference to the Underscore object. + _.noConflict = function() { + root._ = previousUnderscore; + return this; + }; + + // Keep the identity function around for default iterators. + _.identity = function(value) { + return value; + }; + + // Run a function **n** times. + _.times = function(n, iterator, context) { + var accum = Array(n); + for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i); + return accum; + }; + + // Return a random integer between min and max (inclusive). + _.random = function(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); + }; + + // List of HTML entities for escaping. + var entityMap = { + escape: { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '/': '/' + } + }; + entityMap.unescape = _.invert(entityMap.escape); + + // Regexes containing the keys and values listed immediately above. + var entityRegexes = { + escape: new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'), + unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g') + }; + + // Functions for escaping and unescaping strings to/from HTML interpolation. + _.each(['escape', 'unescape'], function(method) { + _[method] = function(string) { + if (string == null) return ''; + return ('' + string).replace(entityRegexes[method], function(match) { + return entityMap[method][match]; + }); + }; + }); + + // If the value of the named property is a function then invoke it; + // otherwise, return it. + _.result = function(object, property) { + if (object == null) return null; + var value = object[property]; + return _.isFunction(value) ? value.call(object) : value; + }; + + // Add your own custom functions to the Underscore object. + _.mixin = function(obj) { + each(_.functions(obj), function(name){ + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return result.call(this, func.apply(_, args)); + }; + }); + }; + + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + _.uniqueId = function(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\t': 't', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + _.template = function(text, data, settings) { + var render; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = new RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset) + .replace(escaper, function(match) { return '\\' + escapes[match]; }); + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } + if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } + if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + index = offset + match.length; + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + "return __p;\n"; + + try { + render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + if (data) return render(data, _); + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled function source as a convenience for precompilation. + template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}'; + + return template; + }; + + // Add a "chain" function, which will delegate to the wrapper. + _.chain = function(obj) { + return _(obj).chain(); + }; + + // OOP + // --------------- + // If Underscore is called as a function, it returns a wrapped object that + // can be used OO-style. This wrapper holds altered versions of all the + // underscore functions. Wrapped objects may be chained. + + // Helper function to continue chaining intermediate results. + var result = function(obj) { + return this._chain ? _(obj).chain() : obj; + }; + + // Add all of the Underscore functions to the wrapper object. + _.mixin(_); + + // Add all mutator Array functions to the wrapper. + each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + method.apply(obj, arguments); + if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0]; + return result.call(this, obj); + }; + }); + + // Add all accessor Array functions to the wrapper. + each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + return result.call(this, method.apply(this._wrapped, arguments)); + }; + }); + + _.extend(_.prototype, { + + // Start chaining a wrapped Underscore object. + chain: function() { + this._chain = true; + return this; + }, + + // Extracts the result from a wrapped and chained object. + value: function() { + return this._wrapped; + } + + }); + +}).call(this); diff --git a/citing.html b/citing.html index fc247e7..fdeb018 100644 --- a/citing.html +++ b/citing.html @@ -224,16 +224,18 @@

      Citing IPythonthis paper, for which here are both a BibTex and a plaintext reference you can use:

      @Article{PER-GRA:2007,
      -  Author         = {P\'erez, Fernando and Granger, Brian E.},
      -  Title          = {{IP}ython: a {S}ystem for {I}nteractive {S}cientific
      -                 {C}omputing},
      -  Journal        = {{C}omput. {S}ci. {E}ng.},
      -  Volume         = {9},
      -  Number         = {3},
      -  Pages          = {21-29},
      -  month          = may,
      -  year           = 2007,
      -  url            = "http://ipython.org",
      +  Author    = {P\'erez, Fernando and Granger, Brian E.},
      +  Title     = {{IP}ython: a System for Interactive Scientific Computing},
      +  Journal   = {Computing in Science and Engineering},
      +  Volume    = {9},
      +  Number    = {3},
      +  Pages     = {21--29},
      +  month     = may,
      +  year      = 2007,
      +  url       = "http://ipython.org",
      +  ISSN      = "1521-9615",
      +  doi       = {10.1109/MCSE.2007.53},
      +  publisher = {IEEE Computer Society},
       }

      or in plaintext:

      diff --git a/search.html b/search.html index e9ea123..c10fc35 100644 --- a/search.html +++ b/search.html @@ -43,6 +43,8 @@ + + From 21aa5be43d65082ae7cab38c759a05358ecad881 Mon Sep 17 00:00:00 2001 From: MinRK Date: Tue, 11 Feb 2014 16:52:16 -0800 Subject: [PATCH 015/146] Updated website (1.2.0) --- _sources/documentation.txt | 3 +- _static/IPy_header.png | Bin 9216 -> 0 bytes _static/basic.css | 7 +- _static/doctools.js | 19 +- _static/fancybox/.gitattributes | 7 - _static/fancybox/jquery.fancybox.js | 0 _static/fancybox/jquery.fancybox.pack.js | 0 _static/simons-logo.jpg | Bin 131255 -> 0 bytes _static/sloan-logo.jpg | Bin 138765 -> 0 bytes _static/underscore.js | 1257 +--------------------- _static/websupport.js | 2 +- citing.html | 18 +- documentation.html | 10 +- donate.html | 7 +- faq.html | 12 +- index.html | 7 +- install.html | 41 +- microsoft-donation-2013.html | 7 +- news.html | 7 +- notebook.html | 7 +- objects.inv | 2 +- presentation.html | 7 +- pyreadline.html | 7 +- roadmap-announcement.html | 7 +- screenshots/index.html | 4 +- search.html | 7 +- searchresults.html | 7 +- showmedo.html | 7 +- sloan-grant.html | 7 +- sponsors.html | 7 +- usersurvey2011.html | 7 +- videos.html | 7 +- whatsnew082.html | 7 +- whatsnew083.html | 7 +- 34 files changed, 139 insertions(+), 1362 deletions(-) delete mode 100644 _static/IPy_header.png delete mode 100644 _static/fancybox/.gitattributes mode change 100755 => 100644 _static/fancybox/jquery.fancybox.js mode change 100755 => 100644 _static/fancybox/jquery.fancybox.pack.js delete mode 100644 _static/simons-logo.jpg delete mode 100644 _static/sloan-logo.jpg diff --git a/_sources/documentation.txt b/_sources/documentation.txt index 58b826e..4038402 100644 --- a/_sources/documentation.txt +++ b/_sources/documentation.txt @@ -5,7 +5,7 @@ Documentation IPython manual -------------- -* `Current Stable Version (1.1.0) `_ +* `Current Stable Version (1.2.0) `_ * `Current Development Version (2.0) `_ `This introduction to some key features @@ -104,6 +104,7 @@ please `provide a citation to IPython `_. Docs for all releases --------------------- +* `1.2.0 `__ * `1.1.0 `__ * `1.0.0 `__ * `0.13.2 `__ diff --git a/_static/IPy_header.png b/_static/IPy_header.png deleted file mode 100644 index e9bdce3941580ff04aaf32d2eb2fb1fe93685bde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9216 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 diff --git a/_static/basic.css b/_static/basic.css index 1e02c5d..59f1765 100644 --- a/_static/basic.css +++ b/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -89,6 +89,7 @@ div.sphinxsidebar #searchbox input[type="submit"] { img { border: 0; + max-width: 100%; } /* -- search page ----------------------------------------------------------- */ @@ -401,10 +402,6 @@ dl.glossary dt { margin: 0; } -.refcount { - color: #060; -} - .optional { font-size: 1.3em; } diff --git a/_static/doctools.js b/_static/doctools.js index d4619fd..2036e5f 100644 --- a/_static/doctools.js +++ b/_static/doctools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for all documentation. * - * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -32,7 +32,7 @@ if (!window.console || !console.firebug) { */ jQuery.urldecode = function(x) { return decodeURIComponent(x).replace(/\+/g, ' '); -} +}; /** * small helper function to urlencode strings @@ -61,18 +61,6 @@ jQuery.getQueryParameters = function(s) { 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. @@ -180,6 +168,9 @@ var Documentation = { var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; if (terms.length) { var body = $('div.body'); + if (!body.length) { + body = $('body'); + } window.setTimeout(function() { $.each(terms, function() { body.highlightText(this.toLowerCase(), 'highlighted'); diff --git a/_static/fancybox/.gitattributes b/_static/fancybox/.gitattributes deleted file mode 100644 index f6bb280..0000000 --- a/_static/fancybox/.gitattributes +++ /dev/null @@ -1,7 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto - -# Denote all files that are truly binary and should not be modified. -*.png binary -*.jpg binary -*.gif binary \ No newline at end of file diff --git a/_static/fancybox/jquery.fancybox.js b/_static/fancybox/jquery.fancybox.js old mode 100755 new mode 100644 diff --git a/_static/fancybox/jquery.fancybox.pack.js b/_static/fancybox/jquery.fancybox.pack.js old mode 100755 new mode 100644 diff --git a/_static/simons-logo.jpg b/_static/simons-logo.jpg deleted file mode 100644 index 2a0f10ddebe82089b4ac404f5ff17b83e64c59e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131255 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

      *(OYPaFz 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 diff --git a/_static/sloan-logo.jpg b/_static/sloan-logo.jpg deleted file mode 100644 index 18bf35b52788d556d13fa4ad754d427a66fd7a3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138765 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]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

      g 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 E0oTaj;Q#;t diff --git a/_static/underscore.js b/_static/underscore.js index a12f0d9..5b55f32 100644 --- a/_static/underscore.js +++ b/_static/underscore.js @@ -1,1226 +1,31 @@ -// Underscore.js 1.4.4 -// http://underscorejs.org -// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc. -// Underscore may be freely distributed under the MIT license. - -(function() { - - // Baseline setup - // -------------- - - // Establish the root object, `window` in the browser, or `global` on the server. - var root = this; - - // Save the previous value of the `_` variable. - var previousUnderscore = root._; - - // Establish the object that gets returned to break out of a loop iteration. - var breaker = {}; - - // Save bytes in the minified (but not gzipped) version: - var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; - - // Create quick reference variables for speed access to core prototypes. - var push = ArrayProto.push, - slice = ArrayProto.slice, - concat = ArrayProto.concat, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; - - // All **ECMAScript 5** native function implementations that we hope to use - // are declared here. - var - nativeForEach = ArrayProto.forEach, - nativeMap = ArrayProto.map, - nativeReduce = ArrayProto.reduce, - nativeReduceRight = ArrayProto.reduceRight, - nativeFilter = ArrayProto.filter, - nativeEvery = ArrayProto.every, - nativeSome = ArrayProto.some, - nativeIndexOf = ArrayProto.indexOf, - nativeLastIndexOf = ArrayProto.lastIndexOf, - nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeBind = FuncProto.bind; - - // Create a safe reference to the Underscore object for use below. - var _ = function(obj) { - if (obj instanceof _) return obj; - if (!(this instanceof _)) return new _(obj); - this._wrapped = obj; - }; - - // Export the Underscore object for **Node.js**, with - // backwards-compatibility for the old `require()` API. If we're in - // the browser, add `_` as a global object via a string identifier, - // for Closure Compiler "advanced" mode. - if (typeof exports !== 'undefined') { - if (typeof module !== 'undefined' && module.exports) { - exports = module.exports = _; - } - exports._ = _; - } else { - root._ = _; - } - - // Current version. - _.VERSION = '1.4.4'; - - // Collection Functions - // -------------------- - - // The cornerstone, an `each` implementation, aka `forEach`. - // Handles objects with the built-in `forEach`, arrays, and raw objects. - // Delegates to **ECMAScript 5**'s native `forEach` if available. - var each = _.each = _.forEach = function(obj, iterator, context) { - if (obj == null) return; - if (nativeForEach && obj.forEach === nativeForEach) { - obj.forEach(iterator, context); - } else if (obj.length === +obj.length) { - for (var i = 0, l = obj.length; i < l; i++) { - if (iterator.call(context, obj[i], i, obj) === breaker) return; - } - } else { - for (var key in obj) { - if (_.has(obj, key)) { - if (iterator.call(context, obj[key], key, obj) === breaker) return; - } - } - } - }; - - // Return the results of applying the iterator to each element. - // Delegates to **ECMAScript 5**'s native `map` if available. - _.map = _.collect = function(obj, iterator, context) { - var results = []; - if (obj == null) return results; - if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); - each(obj, function(value, index, list) { - results[results.length] = iterator.call(context, value, index, list); - }); - return results; - }; - - var reduceError = 'Reduce of empty array with no initial value'; - - // **Reduce** builds up a single result from a list of values, aka `inject`, - // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available. - _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) { - var initial = arguments.length > 2; - if (obj == null) obj = []; - if (nativeReduce && obj.reduce === nativeReduce) { - if (context) iterator = _.bind(iterator, context); - return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator); - } - each(obj, function(value, index, list) { - if (!initial) { - memo = value; - initial = true; - } else { - memo = iterator.call(context, memo, value, index, list); - } - }); - if (!initial) throw new TypeError(reduceError); - return memo; - }; - - // The right-associative version of reduce, also known as `foldr`. - // Delegates to **ECMAScript 5**'s native `reduceRight` if available. - _.reduceRight = _.foldr = function(obj, iterator, memo, context) { - var initial = arguments.length > 2; - if (obj == null) obj = []; - if (nativeReduceRight && obj.reduceRight === nativeReduceRight) { - if (context) iterator = _.bind(iterator, context); - return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator); - } - var length = obj.length; - if (length !== +length) { - var keys = _.keys(obj); - length = keys.length; - } - each(obj, function(value, index, list) { - index = keys ? keys[--length] : --length; - if (!initial) { - memo = obj[index]; - initial = true; - } else { - memo = iterator.call(context, memo, obj[index], index, list); - } - }); - if (!initial) throw new TypeError(reduceError); - return memo; - }; - - // Return the first value which passes a truth test. Aliased as `detect`. - _.find = _.detect = function(obj, iterator, context) { - var result; - any(obj, function(value, index, list) { - if (iterator.call(context, value, index, list)) { - result = value; - return true; - } - }); - return result; - }; - - // Return all the elements that pass a truth test. - // Delegates to **ECMAScript 5**'s native `filter` if available. - // Aliased as `select`. - _.filter = _.select = function(obj, iterator, context) { - var results = []; - if (obj == null) return results; - if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context); - each(obj, function(value, index, list) { - if (iterator.call(context, value, index, list)) results[results.length] = value; - }); - return results; - }; - - // Return all the elements for which a truth test fails. - _.reject = function(obj, iterator, context) { - return _.filter(obj, function(value, index, list) { - return !iterator.call(context, value, index, list); - }, context); - }; - - // Determine whether all of the elements match a truth test. - // Delegates to **ECMAScript 5**'s native `every` if available. - // Aliased as `all`. - _.every = _.all = function(obj, iterator, context) { - iterator || (iterator = _.identity); - var result = true; - if (obj == null) return result; - if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context); - each(obj, function(value, index, list) { - if (!(result = result && iterator.call(context, value, index, list))) return breaker; - }); - return !!result; - }; - - // Determine if at least one element in the object matches a truth test. - // Delegates to **ECMAScript 5**'s native `some` if available. - // Aliased as `any`. - var any = _.some = _.any = function(obj, iterator, context) { - iterator || (iterator = _.identity); - var result = false; - if (obj == null) return result; - if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context); - each(obj, function(value, index, list) { - if (result || (result = iterator.call(context, value, index, list))) return breaker; - }); - return !!result; - }; - - // Determine if the array or object contains a given value (using `===`). - // Aliased as `include`. - _.contains = _.include = function(obj, target) { - if (obj == null) return false; - if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; - return any(obj, function(value) { - return value === target; - }); - }; - - // Invoke a method (with arguments) on every item in a collection. - _.invoke = function(obj, method) { - var args = slice.call(arguments, 2); - var isFunc = _.isFunction(method); - return _.map(obj, function(value) { - return (isFunc ? method : value[method]).apply(value, args); - }); - }; - - // Convenience version of a common use case of `map`: fetching a property. - _.pluck = function(obj, key) { - return _.map(obj, function(value){ return value[key]; }); - }; - - // Convenience version of a common use case of `filter`: selecting only objects - // containing specific `key:value` pairs. - _.where = function(obj, attrs, first) { - if (_.isEmpty(attrs)) return first ? null : []; - return _[first ? 'find' : 'filter'](obj, function(value) { - for (var key in attrs) { - if (attrs[key] !== value[key]) return false; - } - return true; - }); - }; - - // Convenience version of a common use case of `find`: getting the first object - // containing specific `key:value` pairs. - _.findWhere = function(obj, attrs) { - return _.where(obj, attrs, true); - }; - - // Return the maximum element or (element-based computation). - // Can't optimize arrays of integers longer than 65,535 elements. - // See: https://bugs.webkit.org/show_bug.cgi?id=80797 - _.max = function(obj, iterator, context) { - if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { - return Math.max.apply(Math, obj); - } - if (!iterator && _.isEmpty(obj)) return -Infinity; - var result = {computed : -Infinity, value: -Infinity}; - each(obj, function(value, index, list) { - var computed = iterator ? iterator.call(context, value, index, list) : value; - computed >= result.computed && (result = {value : value, computed : computed}); - }); - return result.value; - }; - - // Return the minimum element (or element-based computation). - _.min = function(obj, iterator, context) { - if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { - return Math.min.apply(Math, obj); - } - if (!iterator && _.isEmpty(obj)) return Infinity; - var result = {computed : Infinity, value: Infinity}; - each(obj, function(value, index, list) { - var computed = iterator ? iterator.call(context, value, index, list) : value; - computed < result.computed && (result = {value : value, computed : computed}); - }); - return result.value; - }; - - // Shuffle an array. - _.shuffle = function(obj) { - var rand; - var index = 0; - var shuffled = []; - each(obj, function(value) { - rand = _.random(index++); - shuffled[index - 1] = shuffled[rand]; - shuffled[rand] = value; - }); - return shuffled; - }; - - // An internal function to generate lookup iterators. - var lookupIterator = function(value) { - return _.isFunction(value) ? value : function(obj){ return obj[value]; }; - }; - - // Sort the object's values by a criterion produced by an iterator. - _.sortBy = function(obj, value, context) { - var iterator = lookupIterator(value); - return _.pluck(_.map(obj, function(value, index, list) { - return { - value : value, - index : index, - criteria : iterator.call(context, value, index, list) - }; - }).sort(function(left, right) { - var a = left.criteria; - var b = right.criteria; - if (a !== b) { - if (a > b || a === void 0) return 1; - if (a < b || b === void 0) return -1; - } - return left.index < right.index ? -1 : 1; - }), 'value'); - }; - - // An internal function used for aggregate "group by" operations. - var group = function(obj, value, context, behavior) { - var result = {}; - var iterator = lookupIterator(value || _.identity); - each(obj, function(value, index) { - var key = iterator.call(context, value, index, obj); - behavior(result, key, value); - }); - return result; - }; - - // Groups the object's values by a criterion. Pass either a string attribute - // to group by, or a function that returns the criterion. - _.groupBy = function(obj, value, context) { - return group(obj, value, context, function(result, key, value) { - (_.has(result, key) ? result[key] : (result[key] = [])).push(value); - }); - }; - - // Counts instances of an object that group by a certain criterion. Pass - // either a string attribute to count by, or a function that returns the - // criterion. - _.countBy = function(obj, value, context) { - return group(obj, value, context, function(result, key) { - if (!_.has(result, key)) result[key] = 0; - result[key]++; - }); - }; - - // Use a comparator function to figure out the smallest index at which - // an object should be inserted so as to maintain order. Uses binary search. - _.sortedIndex = function(array, obj, iterator, context) { - iterator = iterator == null ? _.identity : lookupIterator(iterator); - var value = iterator.call(context, obj); - var low = 0, high = array.length; - while (low < high) { - var mid = (low + high) >>> 1; - iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid; - } - return low; - }; - - // Safely convert anything iterable into a real, live array. - _.toArray = function(obj) { - if (!obj) return []; - if (_.isArray(obj)) return slice.call(obj); - if (obj.length === +obj.length) return _.map(obj, _.identity); - return _.values(obj); - }; - - // Return the number of elements in an object. - _.size = function(obj) { - if (obj == null) return 0; - return (obj.length === +obj.length) ? obj.length : _.keys(obj).length; - }; - - // Array Functions - // --------------- - - // Get the first element of an array. Passing **n** will return the first N - // values in the array. Aliased as `head` and `take`. The **guard** check - // allows it to work with `_.map`. - _.first = _.head = _.take = function(array, n, guard) { - if (array == null) return void 0; - return (n != null) && !guard ? slice.call(array, 0, n) : array[0]; - }; - - // Returns everything but the last entry of the array. Especially useful on - // the arguments object. Passing **n** will return all the values in - // the array, excluding the last N. The **guard** check allows it to work with - // `_.map`. - _.initial = function(array, n, guard) { - return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n)); - }; - - // Get the last element of an array. Passing **n** will return the last N - // values in the array. The **guard** check allows it to work with `_.map`. - _.last = function(array, n, guard) { - if (array == null) return void 0; - if ((n != null) && !guard) { - return slice.call(array, Math.max(array.length - n, 0)); - } else { - return array[array.length - 1]; - } - }; - - // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. - // Especially useful on the arguments object. Passing an **n** will return - // the rest N values in the array. The **guard** - // check allows it to work with `_.map`. - _.rest = _.tail = _.drop = function(array, n, guard) { - return slice.call(array, (n == null) || guard ? 1 : n); - }; - - // Trim out all falsy values from an array. - _.compact = function(array) { - return _.filter(array, _.identity); - }; - - // Internal implementation of a recursive `flatten` function. - var flatten = function(input, shallow, output) { - each(input, function(value) { - if (_.isArray(value)) { - shallow ? push.apply(output, value) : flatten(value, shallow, output); - } else { - output.push(value); - } - }); - return output; - }; - - // Return a completely flattened version of an array. - _.flatten = function(array, shallow) { - return flatten(array, shallow, []); - }; - - // Return a version of the array that does not contain the specified value(s). - _.without = function(array) { - return _.difference(array, slice.call(arguments, 1)); - }; - - // Produce a duplicate-free version of the array. If the array has already - // been sorted, you have the option of using a faster algorithm. - // Aliased as `unique`. - _.uniq = _.unique = function(array, isSorted, iterator, context) { - if (_.isFunction(isSorted)) { - context = iterator; - iterator = isSorted; - isSorted = false; - } - var initial = iterator ? _.map(array, iterator, context) : array; - var results = []; - var seen = []; - each(initial, function(value, index) { - if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) { - seen.push(value); - results.push(array[index]); - } - }); - return results; - }; - - // Produce an array that contains the union: each distinct element from all of - // the passed-in arrays. - _.union = function() { - return _.uniq(concat.apply(ArrayProto, arguments)); - }; - - // Produce an array that contains every item shared between all the - // passed-in arrays. - _.intersection = function(array) { - var rest = slice.call(arguments, 1); - return _.filter(_.uniq(array), function(item) { - return _.every(rest, function(other) { - return _.indexOf(other, item) >= 0; - }); - }); - }; - - // Take the difference between one array and a number of other arrays. - // Only the elements present in just the first array will remain. - _.difference = function(array) { - var rest = concat.apply(ArrayProto, slice.call(arguments, 1)); - return _.filter(array, function(value){ return !_.contains(rest, value); }); - }; - - // Zip together multiple lists into a single array -- elements that share - // an index go together. - _.zip = function() { - var args = slice.call(arguments); - var length = _.max(_.pluck(args, 'length')); - var results = new Array(length); - for (var i = 0; i < length; i++) { - results[i] = _.pluck(args, "" + i); - } - return results; - }; - - // Converts lists into objects. Pass either a single array of `[key, value]` - // pairs, or two parallel arrays of the same length -- one of keys, and one of - // the corresponding values. - _.object = function(list, values) { - if (list == null) return {}; - var result = {}; - for (var i = 0, l = list.length; i < l; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; - } - } - return result; - }; - - // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**), - // we need this function. Return the position of the first occurrence of an - // item in an array, or -1 if the item is not included in the array. - // Delegates to **ECMAScript 5**'s native `indexOf` if available. - // If the array is large and already in sort order, pass `true` - // for **isSorted** to use binary search. - _.indexOf = function(array, item, isSorted) { - if (array == null) return -1; - var i = 0, l = array.length; - if (isSorted) { - if (typeof isSorted == 'number') { - i = (isSorted < 0 ? Math.max(0, l + isSorted) : isSorted); - } else { - i = _.sortedIndex(array, item); - return array[i] === item ? i : -1; - } - } - if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted); - for (; i < l; i++) if (array[i] === item) return i; - return -1; - }; - - // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available. - _.lastIndexOf = function(array, item, from) { - if (array == null) return -1; - var hasIndex = from != null; - if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) { - return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item); - } - var i = (hasIndex ? from : array.length); - while (i--) if (array[i] === item) return i; - return -1; - }; - - // Generate an integer Array containing an arithmetic progression. A port of - // the native Python `range()` function. See - // [the Python documentation](http://docs.python.org/library/functions.html#range). - _.range = function(start, stop, step) { - if (arguments.length <= 1) { - stop = start || 0; - start = 0; - } - step = arguments[2] || 1; - - var len = Math.max(Math.ceil((stop - start) / step), 0); - var idx = 0; - var range = new Array(len); - - while(idx < len) { - range[idx++] = start; - start += step; - } - - return range; - }; - - // Function (ahem) Functions - // ------------------ - - // Create a function bound to a given object (assigning `this`, and arguments, - // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if - // available. - _.bind = function(func, context) { - if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); - var args = slice.call(arguments, 2); - return function() { - return func.apply(context, args.concat(slice.call(arguments))); - }; - }; - - // Partially apply a function by creating a version that has had some of its - // arguments pre-filled, without changing its dynamic `this` context. - _.partial = function(func) { - var args = slice.call(arguments, 1); - return function() { - return func.apply(this, args.concat(slice.call(arguments))); - }; - }; - - // Bind all of an object's methods to that object. Useful for ensuring that - // all callbacks defined on an object belong to it. - _.bindAll = function(obj) { - var funcs = slice.call(arguments, 1); - if (funcs.length === 0) funcs = _.functions(obj); - each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); }); - return obj; - }; - - // Memoize an expensive function by storing its results. - _.memoize = function(func, hasher) { - var memo = {}; - hasher || (hasher = _.identity); - return function() { - var key = hasher.apply(this, arguments); - return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments)); - }; - }; - - // Delays a function for the given number of milliseconds, and then calls - // it with the arguments supplied. - _.delay = function(func, wait) { - var args = slice.call(arguments, 2); - return setTimeout(function(){ return func.apply(null, args); }, wait); - }; - - // Defers a function, scheduling it to run after the current call stack has - // cleared. - _.defer = function(func) { - return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); - }; - - // Returns a function, that, when invoked, will only be triggered at most once - // during a given window of time. - _.throttle = function(func, wait) { - var context, args, timeout, result; - var previous = 0; - var later = function() { - previous = new Date; - timeout = null; - result = func.apply(context, args); - }; - return function() { - var now = new Date; - var remaining = wait - (now - previous); - context = this; - args = arguments; - if (remaining <= 0) { - clearTimeout(timeout); - timeout = null; - previous = now; - result = func.apply(context, args); - } else if (!timeout) { - timeout = setTimeout(later, remaining); - } - return result; - }; - }; - - // Returns a function, that, as long as it continues to be invoked, will not - // be triggered. The function will be called after it stops being called for - // N milliseconds. If `immediate` is passed, trigger the function on the - // leading edge, instead of the trailing. - _.debounce = function(func, wait, immediate) { - var timeout, result; - return function() { - var context = this, args = arguments; - var later = function() { - timeout = null; - if (!immediate) result = func.apply(context, args); - }; - var callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) result = func.apply(context, args); - return result; - }; - }; - - // Returns a function that will be executed at most one time, no matter how - // often you call it. Useful for lazy initialization. - _.once = function(func) { - var ran = false, memo; - return function() { - if (ran) return memo; - ran = true; - memo = func.apply(this, arguments); - func = null; - return memo; - }; - }; - - // Returns the first function passed as an argument to the second, - // allowing you to adjust arguments, run code before and after, and - // conditionally execute the original function. - _.wrap = function(func, wrapper) { - return function() { - var args = [func]; - push.apply(args, arguments); - return wrapper.apply(this, args); - }; - }; - - // Returns a function that is the composition of a list of functions, each - // consuming the return value of the function that follows. - _.compose = function() { - var funcs = arguments; - return function() { - var args = arguments; - for (var i = funcs.length - 1; i >= 0; i--) { - args = [funcs[i].apply(this, args)]; - } - return args[0]; - }; - }; - - // Returns a function that will only be executed after being called N times. - _.after = function(times, func) { - if (times <= 0) return func(); - return function() { - if (--times < 1) { - return func.apply(this, arguments); - } - }; - }; - - // Object Functions - // ---------------- - - // Retrieve the names of an object's properties. - // Delegates to **ECMAScript 5**'s native `Object.keys` - _.keys = nativeKeys || function(obj) { - if (obj !== Object(obj)) throw new TypeError('Invalid object'); - var keys = []; - for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key; - return keys; - }; - - // Retrieve the values of an object's properties. - _.values = function(obj) { - var values = []; - for (var key in obj) if (_.has(obj, key)) values.push(obj[key]); - return values; - }; - - // Convert an object into a list of `[key, value]` pairs. - _.pairs = function(obj) { - var pairs = []; - for (var key in obj) if (_.has(obj, key)) pairs.push([key, obj[key]]); - return pairs; - }; - - // Invert the keys and values of an object. The values must be serializable. - _.invert = function(obj) { - var result = {}; - for (var key in obj) if (_.has(obj, key)) result[obj[key]] = key; - return result; - }; - - // Return a sorted list of the function names available on the object. - // Aliased as `methods` - _.functions = _.methods = function(obj) { - var names = []; - for (var key in obj) { - if (_.isFunction(obj[key])) names.push(key); - } - return names.sort(); - }; - - // Extend a given object with all the properties in passed-in object(s). - _.extend = function(obj) { - each(slice.call(arguments, 1), function(source) { - if (source) { - for (var prop in source) { - obj[prop] = source[prop]; - } - } - }); - return obj; - }; - - // Return a copy of the object only containing the whitelisted properties. - _.pick = function(obj) { - var copy = {}; - var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); - each(keys, function(key) { - if (key in obj) copy[key] = obj[key]; - }); - return copy; - }; - - // Return a copy of the object without the blacklisted properties. - _.omit = function(obj) { - var copy = {}; - var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); - for (var key in obj) { - if (!_.contains(keys, key)) copy[key] = obj[key]; - } - return copy; - }; - - // Fill in a given object with default properties. - _.defaults = function(obj) { - each(slice.call(arguments, 1), function(source) { - if (source) { - for (var prop in source) { - if (obj[prop] == null) obj[prop] = source[prop]; - } - } - }); - return obj; - }; - - // Create a (shallow-cloned) duplicate of an object. - _.clone = function(obj) { - if (!_.isObject(obj)) return obj; - return _.isArray(obj) ? obj.slice() : _.extend({}, obj); - }; - - // Invokes interceptor with the obj, and then returns obj. - // The primary purpose of this method is to "tap into" a method chain, in - // order to perform operations on intermediate results within the chain. - _.tap = function(obj, interceptor) { - interceptor(obj); - return obj; - }; - - // Internal recursive comparison function for `isEqual`. - var eq = function(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal. - if (a === b) return a !== 0 || 1 / a == 1 / b; - // A strict comparison is necessary because `null == undefined`. - if (a == null || b == null) return a === b; - // Unwrap any wrapped objects. - if (a instanceof _) a = a._wrapped; - if (b instanceof _) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className != toString.call(b)) return false; - switch (className) { - // Strings, numbers, dates, and booleans are compared by value. - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return a == String(b); - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for - // other numeric values. - return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b); - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a == +b; - // RegExps are compared by their source patterns and flags. - case '[object RegExp]': - return a.source == b.source && - a.global == b.global && - a.multiline == b.multiline && - a.ignoreCase == b.ignoreCase; - } - if (typeof a != 'object' || typeof b != 'object') return false; - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] == a) return bStack[length] == b; - } - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - var size = 0, result = true; - // Recursively compare objects and arrays. - if (className == '[object Array]') { - // Compare array lengths to determine if a deep comparison is necessary. - size = a.length; - result = size == b.length; - if (result) { - // Deep compare the contents, ignoring non-numeric properties. - while (size--) { - if (!(result = eq(a[size], b[size], aStack, bStack))) break; - } - } - } else { - // Objects with different constructors are not equivalent, but `Object`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) && - _.isFunction(bCtor) && (bCtor instanceof bCtor))) { - return false; - } - // Deep compare objects. - for (var key in a) { - if (_.has(a, key)) { - // Count the expected number of properties. - size++; - // Deep compare each member. - if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break; - } - } - // Ensure that both objects contain the same number of properties. - if (result) { - for (key in b) { - if (_.has(b, key) && !(size--)) break; - } - result = !size; - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return result; - }; - - // Perform a deep comparison to check if two objects are equal. - _.isEqual = function(a, b) { - return eq(a, b, [], []); - }; - - // Is a given array, string, or object empty? - // An "empty" object has no enumerable own-properties. - _.isEmpty = function(obj) { - if (obj == null) return true; - if (_.isArray(obj) || _.isString(obj)) return obj.length === 0; - for (var key in obj) if (_.has(obj, key)) return false; - return true; - }; - - // Is a given value a DOM element? - _.isElement = function(obj) { - return !!(obj && obj.nodeType === 1); - }; - - // Is a given value an array? - // Delegates to ECMA5's native Array.isArray - _.isArray = nativeIsArray || function(obj) { - return toString.call(obj) == '[object Array]'; - }; - - // Is a given variable an object? - _.isObject = function(obj) { - return obj === Object(obj); - }; - - // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp. - each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) { - _['is' + name] = function(obj) { - return toString.call(obj) == '[object ' + name + ']'; - }; - }); - - // Define a fallback version of the method in browsers (ahem, IE), where - // there isn't any inspectable "Arguments" type. - if (!_.isArguments(arguments)) { - _.isArguments = function(obj) { - return !!(obj && _.has(obj, 'callee')); - }; - } - - // Optimize `isFunction` if appropriate. - if (typeof (/./) !== 'function') { - _.isFunction = function(obj) { - return typeof obj === 'function'; - }; - } - - // Is a given object a finite number? - _.isFinite = function(obj) { - return isFinite(obj) && !isNaN(parseFloat(obj)); - }; - - // Is the given value `NaN`? (NaN is the only number which does not equal itself). - _.isNaN = function(obj) { - return _.isNumber(obj) && obj != +obj; - }; - - // Is a given value a boolean? - _.isBoolean = function(obj) { - return obj === true || obj === false || toString.call(obj) == '[object Boolean]'; - }; - - // Is a given value equal to null? - _.isNull = function(obj) { - return obj === null; - }; - - // Is a given variable undefined? - _.isUndefined = function(obj) { - return obj === void 0; - }; - - // Shortcut function for checking if an object has a given property directly - // on itself (in other words, not on a prototype). - _.has = function(obj, key) { - return hasOwnProperty.call(obj, key); - }; - - // Utility Functions - // ----------------- - - // Run Underscore.js in *noConflict* mode, returning the `_` variable to its - // previous owner. Returns a reference to the Underscore object. - _.noConflict = function() { - root._ = previousUnderscore; - return this; - }; - - // Keep the identity function around for default iterators. - _.identity = function(value) { - return value; - }; - - // Run a function **n** times. - _.times = function(n, iterator, context) { - var accum = Array(n); - for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i); - return accum; - }; - - // Return a random integer between min and max (inclusive). - _.random = function(min, max) { - if (max == null) { - max = min; - min = 0; - } - return min + Math.floor(Math.random() * (max - min + 1)); - }; - - // List of HTML entities for escaping. - var entityMap = { - escape: { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '/': '/' - } - }; - entityMap.unescape = _.invert(entityMap.escape); - - // Regexes containing the keys and values listed immediately above. - var entityRegexes = { - escape: new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'), - unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g') - }; - - // Functions for escaping and unescaping strings to/from HTML interpolation. - _.each(['escape', 'unescape'], function(method) { - _[method] = function(string) { - if (string == null) return ''; - return ('' + string).replace(entityRegexes[method], function(match) { - return entityMap[method][match]; - }); - }; - }); - - // If the value of the named property is a function then invoke it; - // otherwise, return it. - _.result = function(object, property) { - if (object == null) return null; - var value = object[property]; - return _.isFunction(value) ? value.call(object) : value; - }; - - // Add your own custom functions to the Underscore object. - _.mixin = function(obj) { - each(_.functions(obj), function(name){ - var func = _[name] = obj[name]; - _.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return result.call(this, func.apply(_, args)); - }; - }); - }; - - // Generate a unique integer id (unique within the entire client session). - // Useful for temporary DOM ids. - var idCounter = 0; - _.uniqueId = function(prefix) { - var id = ++idCounter + ''; - return prefix ? prefix + id : id; - }; - - // By default, Underscore uses ERB-style template delimiters, change the - // following template settings to use alternative delimiters. - _.templateSettings = { - evaluate : /<%([\s\S]+?)%>/g, - interpolate : /<%=([\s\S]+?)%>/g, - escape : /<%-([\s\S]+?)%>/g - }; - - // When customizing `templateSettings`, if you don't want to define an - // interpolation, evaluation or escaping regex, we need one that is - // guaranteed not to match. - var noMatch = /(.)^/; - - // Certain characters need to be escaped so that they can be put into a - // string literal. - var escapes = { - "'": "'", - '\\': '\\', - '\r': 'r', - '\n': 'n', - '\t': 't', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; - - var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g; - - // JavaScript micro-templating, similar to John Resig's implementation. - // Underscore templating handles arbitrary delimiters, preserves whitespace, - // and correctly escapes quotes within interpolated code. - _.template = function(text, data, settings) { - var render; - settings = _.defaults({}, settings, _.templateSettings); - - // Combine delimiters into one regular expression via alternation. - var matcher = new RegExp([ - (settings.escape || noMatch).source, - (settings.interpolate || noMatch).source, - (settings.evaluate || noMatch).source - ].join('|') + '|$', 'g'); - - // Compile the template source, escaping string literals appropriately. - var index = 0; - var source = "__p+='"; - text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { - source += text.slice(index, offset) - .replace(escaper, function(match) { return '\\' + escapes[match]; }); - - if (escape) { - source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; - } - if (interpolate) { - source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; - } - if (evaluate) { - source += "';\n" + evaluate + "\n__p+='"; - } - index = offset + match.length; - return match; - }); - source += "';\n"; - - // If a variable is not specified, place data values in local scope. - if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; - - source = "var __t,__p='',__j=Array.prototype.join," + - "print=function(){__p+=__j.call(arguments,'');};\n" + - source + "return __p;\n"; - - try { - render = new Function(settings.variable || 'obj', '_', source); - } catch (e) { - e.source = source; - throw e; - } - - if (data) return render(data, _); - var template = function(data) { - return render.call(this, data, _); - }; - - // Provide the compiled function source as a convenience for precompilation. - template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}'; - - return template; - }; - - // Add a "chain" function, which will delegate to the wrapper. - _.chain = function(obj) { - return _(obj).chain(); - }; - - // OOP - // --------------- - // If Underscore is called as a function, it returns a wrapped object that - // can be used OO-style. This wrapper holds altered versions of all the - // underscore functions. Wrapped objects may be chained. - - // Helper function to continue chaining intermediate results. - var result = function(obj) { - return this._chain ? _(obj).chain() : obj; - }; - - // Add all of the Underscore functions to the wrapper object. - _.mixin(_); - - // Add all mutator Array functions to the wrapper. - each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _.prototype[name] = function() { - var obj = this._wrapped; - method.apply(obj, arguments); - if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0]; - return result.call(this, obj); - }; - }); - - // Add all accessor Array functions to the wrapper. - each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _.prototype[name] = function() { - return result.call(this, method.apply(this._wrapped, arguments)); - }; - }); - - _.extend(_.prototype, { - - // Start chaining a wrapped Underscore object. - chain: function() { - this._chain = true; - return this; - }, - - // Extracts the result from a wrapped and chained object. - value: function() { - return this._wrapped; - } - - }); - -}).call(this); +// Underscore.js 1.3.1 +// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc. +// Underscore is freely distributable under the MIT license. +// Portions of Underscore are inspired or borrowed from Prototype, +// Oliver Steele's Functional, and John Resig's Micro-Templating. +// For all details and documentation: +// http://documentcloud.github.com/underscore +(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source== +c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c, +h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each= +b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e2;a== +null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect= +function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e= +e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck= +function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;bd?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a, +c,d){d||(d=b.identity);for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e=0;d--)b=[a[d].apply(this,b)];return b[0]}}; +b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments, +1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)}; +b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"}; +b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a), +function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+ +u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]= +function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain= +true;return this};m.prototype.value=function(){return this._wrapped}}).call(this); diff --git a/_static/websupport.js b/_static/websupport.js index e9bd1b8..19fcda5 100644 --- a/_static/websupport.js +++ b/_static/websupport.js @@ -4,7 +4,7 @@ * * sphinx.websupport utilties for all documentation. * - * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/citing.html b/citing.html index fdeb018..6a5153a 100644 --- a/citing.html +++ b/citing.html @@ -1,5 +1,4 @@ - @@ -27,7 +26,7 @@ + IPython User Survey 2013 — IPython + + + + + + + + + + + + + +

      +
      + + +
      + Install Β· +Docs Β· +Videos Β· +News Β· +Cite Β· +Sponsors Β· +Donate +
      +
      +
      + +
      +
      + + +
      +
      +
      +
      Loading
      + + + + +
      +
      +

      Versions

      + +

      Stable

      + 1.2.1 – February 2014
      + Install +
      + +

      Development

      + 2.0.dev
      + Github +
      + +
      + + + + +
      +

      Notebook Viewer

      + +Share your notebooks + +
      + + + +
      +
      + +
      +

      Community

      + + + +
      + + + + + +
      + +
      + + +
      +

      Book

      + + + +
      + + + + +
      + + +
      +
      +
      + +
      + +
      +
      +
      + +
      +

      IPython User Survey 2013ΒΆ

      +

      The full responses, and summaries of responses to some questions, are available +as a Google Spreadsheet.

      +
      +

      CountriesΒΆ

      +

      42% of respondents were in the USA, followed by the UK (7.1%) and Germany (6.7%). +These numbers are largely similar to the last user survey, two years ago, but +the diversity of countries in the ‘tail’ has increased. In total, respondents +came from 48 countries (in descending order of frequency):

      +

      USA, UK, Germany, France, Brazil, Canada, Spain, Argentina, Belgium, Netherlands, +Austria, Australia, Norway, Colombia, Russia, Mexico, Italy, Czech Republic, +India, Bermuda, Ireland, Denmark, New Zealand, Romania, Serbia, Singapore, Chile, +Vietnam, Croatia, Switzerland, Portugal, China, Taiwan, Maldives, Ecuador, +Israel, El Salvador, Slovenia, Thailand, Poland, Finland, Belarus, Estonia, +Egypt, South Africa, Peru, Greece, Japan

      +_images/countries1.png +

      See the ‘Countries’ sheet of the results spreadsheet for the cleaned data.

      +
      +
      +

      IPython versionsΒΆ

      +

      We see a rapid changeover - IPython 1.0 was released while the survey was +running, and by the end of the survey, more people reported using 1.0 than +0.13, the previous release. Very few people were using older releases, although +two people mentioned using the 0.8 series.

      +

      The survey respondents are probably biased towards people who actively update +IPython to newer versions, so we can assume that a greater proportion of the +total population of users are on older versions. Nonetheless, the take up rates +are encouraging.

      +_images/ipy_versions.png +
      +
      +

      IPython componentsΒΆ

      +

      The notebook was the most popular component, with 84% saying they use it, followed +by the classic terminal interface (76%). The Qt console was the least used +interface (27%).

      +

      Over half of respondents use pylab (55%). 16% use the parallel computing framework +in IPython.

      +

      Other components that people mentioned include nbconvert, nbviewer, rmagic +and traitlets. We should include some of these in future surveys.

      +_images/components.png +
      +
      +

      PlatformsΒΆ

      +

      These results were similar to the previous survey. Linux was the most popular +operating system (81%), while roughly equal numbers use Windows (34%) and Mac +(39%). Of the cloud platforms, only Amazon EC2 has any significant usage, with +6% of respondents.

      +

      Minor platforms: two people listed Wakari here (others listed it under embedding +products). Two people use Microsoft Azure. FreeBSD, AIX, Rackspace and Raspberry +Pi were each mentioned once.

      +_images/platforms1.png +
      +
      +

      Python versionsΒΆ

      +

      As expected, Python 2.7 is the most widely used release (97%). However, a +significant fraction (22%) have also used IPython with Python 3.3. 7% of users +still use Python 2.6, and 4% use 3.2 - we will be dropping support for both of +these versions in IPython 2.0. Very few are on even older versions.

      +_images/py_versions.png +
      +
      +

      Projects integrating IPythonΒΆ

      +

      59 people (13%) reported using IPython with the Spyder IDE. +Anecdotally, we have seen more people using Spyder in Europe than in North America, +and the results somewhat support this. Although the US was still the largest single +country among users of IPython and Spyder, it accounted for only 20% of +the users, less than the 42% from the US in the whole survey.

      +

      Projects integrating IPython with the two heavyweight editors, vim and emacs, +have 12 and 10 users respectively. A long list of other integrations included +editors, Python packages and hosted services on the web, but only a few +respondents mentioned each one.

      +

      See the ‘Integration’ sheet of the results spreadsheet for the cleaned data.

      +
      +
      +

      InstallationΒΆ

      +

      No one installation method dominated. The leading techniques were pip/easy_install +(48%), Linux distribution repositories (44%) and Python distributions (38%).

      +_images/installation.png +
      +
      +

      Support resourcesΒΆ

      +

      Almost all users (91%) report using the online documentation, highlighting the +importance of keeping this up to date. Stackoverflow is also very important (68%). +In contrast, only 3% of respondents have used our Hipchat chat rooms - though +these are quite new, so people may not be aware of them yet.

      +_images/help_resources.png +
      +
      +

      RoleΒΆ

      +

      Once again, many of our users are in academia (65%), but we also have a +significant group of users in industry (38%) and ‘hobby’ usage (37%), i.e. people +using IPython outside their jobs. These numbers are not directly comparable to +the last survey, because last time, the categories were taken from a free text +answer.

      +

      24% of respondents also said they were using IPython in education. In the future, +we could break this down more to look at teaching and learning.

      +_images/role.png +
      +
      +

      Use casesΒΆ

      +

      People’s descriptions of the projects where they use IPython were many and varied. +A few specific highlights include modelling quantum computing systems (row 93 in the results spreadsheet), +computer vision (162), phylogenetic relationships of languages (201), e-Democracy +(261), pressure measurements under animals’ feet (423), and processing data from +particle colliders (195) and gamma ray telescopes (454).

      +

      Grouping the responses, people are using IPython in at least these areas:

      +
        +
      • Finance/economics
      • +
      • Bioinformatics
      • +
      • Neuroscience
      • +
      • Chemistry
      • +
      • Astronomy
      • +
      • Physics
      • +
      +

      And in these ways:

      +
        +
      • Machine learning
      • +
      • Data cleaning
      • +
      • Writing papers
      • +
      • Developing other application and libraries
      • +
      • Matlab replacement
      • +
      +
      +
      +

      Suggestions boxΒΆ

      +

      Categorised suggestions are listed on the ‘Suggestions’ sheet of the result +spreadsheet. Some responses were split into multiple suggestions.

      +

      A number of themes appeared:

      +
        +
      • nbconvert: Already much improved since the survey, and we continue to improve it.
      • +
      • File navigation, notebooks in different directories: Coming in IPython 2!
      • +
      • Widgets: Coming in IPython 2!
      • +
      • Interactive plots: Various projects are exploring this, and the new widget +machinery in IPython 2 will provide a foundation for further work.
      • +
      • Variable explorer: One can be built on top of the widget framework.
      • +
      • Keyboard shortcuts: Much improved, and much more customisable, in IPython 2.
      • +
      • JS API: IPython 2 has an ‘nbextension’ system, and the Javascript API is +gradually becoming more stable.
      • +
      • Better ways to deal with long notebooks: On the radar for IPython 3.
      • +
      • Integration with other languages: IPython 3 will take a big step by integrating +multiple kernel types into the UI.
      • +
      • Multi-user support: A multi-user server is a goal for IPython 3. Other projects +like Jiffylab and IPydra provide another model of multi-user server.
      • +
      • Docs: We’re improving them, but we could still do better.
      • +
      • Parallel: ipcluster’s launchers are in need of various improvements. We +plan to rewrite the ipcluster script as an RPC service, which should improve +many of these cases, especially SSH. The documentation could also use a lot of +attention, especially because there were several requests for features that already exist.
      • +
      • Security: After long discussion, we have created a new security model for +IPython 2.
      • +
      • Installation: We point new users to Anaconda, which is one download including +Python, IPython, numpy, and many other packages. We know installation can be +painful, but we don’t know how to solve this well at the moment.
      • +
      • Hiding cells: We plan to add options for this to nbconvert. We’re also planning +a way to tag cells in the notebook UI, which could be used to control what +nbconvert shows.
      • +
      • Concurrent editing: On the radar, but some way off. We need to get multi-user +sorted out first.
      • +
      • Python 3 support: I (Thomas) use Python 3 daily, and I’ll keep improving docs, +examples, etc.
      • +
      • Editor features: We are enabling CodeMirror features like bracket matching. +Features like refactoring tools and static analysis should be possible to write +as extensions.
      • +
      • Sphinx integration: On the radar. The yt project has done some work on this.
      • +
      • Slideshows: Exporting to static slides with nbconvert has been improved since +1.0, and there’s ongoing development of an extension to present live, +executable notebooks as slides.
      • +
      • Integration with version control: No current plans.
      • +
      • Debugger: No current plans.
      • +
      +
      +
      +

      Other commentsΒΆ

      +

      Categorised comments are listed on the ‘Comments’ sheet of the result +spreadsheet.

      +

      Thank-you to everyone who used the comments or suggestions fields to thank +or compliment us. We honestly weren’t fishing for complements when we wrote the +survey.

      +

      A few more people wanted better documentation - see the section above.

      +

      Other than that, there was no theme apparent in the comments. All of them have +been read. If you want to follow up, please get in touch with us - the survey was +anonymous, so we can’t get in touch with you.

      +
      +
      + + +
      +
      +
      +
      +
      +
      +
      + + + + + \ No newline at end of file diff --git a/videos.html b/videos.html index f294574..45977dd 100644 --- a/videos.html +++ b/videos.html @@ -302,7 +302,7 @@

      More videos and screencasts © Copyright the IPython development team. - Created using Sphinx 1.2.1. + Created using Sphinx 1.2.2.

    diff --git a/whatsnew082.html b/whatsnew082.html index dd6bac6..ab89832 100644 --- a/whatsnew082.html +++ b/whatsnew082.html @@ -304,7 +304,7 @@

    Known issues © Copyright the IPython development team. - Created using Sphinx 1.2.1. + Created using Sphinx 1.2.2. diff --git a/whatsnew083.html b/whatsnew083.html index 9a62ede..10b3f75 100644 --- a/whatsnew083.html +++ b/whatsnew083.html @@ -286,7 +286,7 @@

    New features in 0.8.3 © Copyright the IPython development team. - Created using Sphinx 1.2.1. + Created using Sphinx 1.2.2. From f520324159641f0e43a8b508416a2ee52fc61a92 Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Wed, 2 Apr 2014 13:37:05 -0700 Subject: [PATCH 019/146] Release announcment for version 2.0 --- _sources/documentation.txt | 5 +++-- _sources/index.txt | 25 +++++++++---------------- _sources/news.txt | 9 +++++++++ citing.html | 4 ++-- documentation.html | 9 +++++---- donate.html | 4 ++-- faq.html | 4 ++-- index.html | 22 ++++++++-------------- install.html | 6 +++--- kbase.md | 19 ------------------- microsoft-donation-2013.html | 8 +++++--- news.html | 14 +++++++++++--- notebook.html | 4 ++-- presentation.html | 4 ++-- pyreadline.html | 4 ++-- roadmap-announcement.html | 4 ++-- screenshots/index.html | 4 ++-- search.html | 4 ++-- searchresults.html | 4 ++-- showmedo.html | 4 ++-- sloan-grant.html | 4 ++-- sponsors.html | 4 ++-- usersurvey2011.html | 6 +++--- usersurvey2013.html | 8 +++++--- videos.html | 6 +++--- whatsnew082.html | 4 ++-- whatsnew083.html | 4 ++-- 27 files changed, 94 insertions(+), 103 deletions(-) delete mode 100644 kbase.md diff --git a/_sources/documentation.txt b/_sources/documentation.txt index 79040ae..a1135ca 100644 --- a/_sources/documentation.txt +++ b/_sources/documentation.txt @@ -5,8 +5,8 @@ Documentation IPython manual -------------- -* `Current Stable Version (1.2.1) `_ -* `Current Development Version (2.0) `_ +* `Current Stable Version (2.x) `_ +* `Current Development Version `_ `This introduction to some key features `_ is a good @@ -104,6 +104,7 @@ please `provide a citation to IPython `_. Docs for all releases --------------------- +* `2.x `__ * `1.x `__ * `0.13.2 `__ * `0.13.1 `__ diff --git a/_sources/index.txt b/_sources/index.txt index 67ad379..81a01ed 100644 --- a/_sources/index.txt +++ b/_sources/index.txt @@ -69,6 +69,12 @@ supports Python 2.5, and can be used with Python 2.4. Announcements ============= +- **IPython 2.0**: We are proud to announce the availability of IPython 2.0, + a major new release including HTML widgets and multi-directory navigation. + `Install `__ it now, or read about the changes in + the `release notes + `__. + - **O'Reilly Book**: `Mining the Social Web `_ is an open source data science project and `book `_ that features nearly 130 examples with IPython Notebook and a @@ -79,15 +85,9 @@ Announcements dition/tree/master/ipynb/>`_. -- **Microsoft donates $100,000 to IPython:** in August 2013, Microsoft +- **Microsoft donates $100,000 to IPython**: in August 2013, Microsoft `contributed $100,000 `_ to support the continued development of IPython. - -- **IPython 1.0** We are very pleased to announce the release of IPython - 1.0, nearly twelve years after the first release of IPython 0.0.1. - `Install `__ it now, or read about the changes in - the `release notes - `__. - **Book**: Cyrille Rossant has published the first IPython-focused book: `Learning IPython for Interactive Computing and Data Visualization @@ -103,14 +103,6 @@ Announcements `More details `_. -- **IPython tutorial at PyCon 2013**: Fernando Perez, Brian Granger and Min - Ragan-Kelley presented `in-depth tutorial about IPython - `_. - It covers IPython's architecture and hands-on examples on customization, - embedding, effective uses of the various applications, the architecture of - the web notebook and how to use IPython for parallel and distributed - computing. - - **Roadmap to 1.0 and beyond**: IPython 1.0 is coming mid-July 2013. See the `grant `_ which is funding the bulk of the work, as well as our roadmap_ for achieving the grant's objectives. `Read on for more details @@ -124,7 +116,6 @@ Announcements year in California. `See more details. `_ .. _roadmap: https://github.com/ipython/ipython/wiki/Roadmap:-IPython -.. _Alfred P. Sloan Foundation: http://www.sloan.org/ `More news... `_ @@ -150,6 +141,7 @@ please acknowledge this fact by citing the project. You can use this donate faq install + microsoft-donation-2013 news notebook presentation @@ -160,6 +152,7 @@ please acknowledge this fact by citing the project. You can use this sloan-grant sponsors usersurvey2011 + usersurvey2013 videos whatsnew082 whatsnew083 diff --git a/_sources/news.txt b/_sources/news.txt index 687df93..a242418 100644 --- a/_sources/news.txt +++ b/_sources/news.txt @@ -2,6 +2,15 @@ News ==== +IPython 2.0 +----------- + +IPython 2.0 was released on April 1, 2014. The major new features include +interactive HTML widgets, and directory navigation in the notebook dashboard. +`Install `__ it now, or see the +`release notes `__ +for more details. + User survey 2013 ---------------- diff --git a/citing.html b/citing.html index cfe5bd8..3e91893 100644 --- a/citing.html +++ b/citing.html @@ -103,12 +103,12 @@

    Versions

    Stable

    - 1.2.1 – February 2014
    + 2.0 – April 2014
    Install

    Development

    - 2.0.dev
    + 3.0.dev
    Github
    diff --git a/documentation.html b/documentation.html index 62c8800..320bd5a 100644 --- a/documentation.html +++ b/documentation.html @@ -103,12 +103,12 @@

    Versions

    Stable

    - 1.2.1 – February 2014
    + 2.0 – April 2014
    Install

    Development

    - 2.0.dev
    + 3.0.dev
    Github
    @@ -221,8 +221,8 @@

    Documentation

    IPython manualΒΆ

    This introduction to some key features is a good place to start if you haven’t used IPython before.

    @@ -295,6 +295,7 @@

    Other projects using IPython

    Docs for all releasesΒΆ

      +
    • 2.x
    • 1.x
    • 0.13.2
    • 0.13.1
    • diff --git a/donate.html b/donate.html index cb497fd..ddd0222 100644 --- a/donate.html +++ b/donate.html @@ -103,12 +103,12 @@

      Versions

      Stable

      - 1.2.1 – February 2014
      + 2.0 – April 2014
      Install

      Development

      - 2.0.dev
      + 3.0.dev
      Github
      diff --git a/faq.html b/faq.html index f74a74b..94a9d32 100644 --- a/faq.html +++ b/faq.html @@ -103,12 +103,12 @@

      Versions

      Stable

      - 1.2.1 – February 2014
      + 2.0 – April 2014
      Install

      Development

      - 2.0.dev
      + 3.0.dev
      Github
      diff --git a/index.html b/index.html index 9cd7e88..0212180 100644 --- a/index.html +++ b/index.html @@ -102,12 +102,12 @@

      Versions

      Stable

      - 1.2.1 – February 2014
      + 2.0 – April 2014
      Install

      Development

      - 2.0.dev
      + 3.0.dev
      Github
      @@ -248,18 +248,18 @@

      Support IPython

      AnnouncementsΒΆ

        +
      • IPython 2.0: We are proud to announce the availability of IPython 2.0, +a major new release including HTML widgets and multi-directory navigation. +Install it now, or read about the changes in +the release notes.
      • O’Reilly Book: Mining the Social Web is an open source data science project and book that features nearly 130 examples with IPython Notebook and a Vagrant-powered virtual machine environment. You can preview all of the example notebooks from its GitHub repository on IPython’s Notebook Viewer here.
      • -
      • Microsoft donates $100,000 to IPython: in August 2013, Microsoft +
      • Microsoft donates $100,000 to IPython: in August 2013, Microsoft contributed $100,000 to support the continued development of IPython.
      • -
      • IPython 1.0 We are very pleased to announce the release of IPython -1.0, nearly twelve years after the first release of IPython 0.0.1. -Install it now, or read about the changes in -the release notes.
      • Book: Cyrille Rossant has published the first IPython-focused book: Learning IPython for Interactive Computing and Data Visualization, for which Matthias Bussonnier was a technical @@ -270,17 +270,11 @@

        AnnouncementsMore details.

      • -
      • IPython tutorial at PyCon 2013: Fernando Perez, Brian Granger and Min -Ragan-Kelley presented in-depth tutorial about IPython. -It covers IPython’s architecture and hands-on examples on customization, -embedding, effective uses of the various applications, the architecture of -the web notebook and how to use IPython for parallel and distributed -computing.
      • Roadmap to 1.0 and beyond: IPython 1.0 is coming mid-July 2013. See the grant which is funding the bulk of the work, as well as our roadmap for achieving the grant’s objectives. Read on for more details.
      • Sloan Foundation grant: IPython has been awarded a $1.15 million grant -from the `Alfred P. Sloan Foundation`_. This will +from the Alfred P. Sloan Foundation. This will support several core developers, allowing them to focus on building the IPython Notebook into a tool for open, collaborative, reproducible scientific computing. We’ll also be bringing developers together for two sprints each diff --git a/install.html b/install.html index 13aaee2..0a5ff49 100644 --- a/install.html +++ b/install.html @@ -38,7 +38,7 @@ - + @@ -103,12 +103,12 @@

        Versions

        Stable

        - 1.2.1 – February 2014
        + 2.0 – April 2014
        Install

        Development

        - 2.0.dev
        + 3.0.dev
        Github
        diff --git a/kbase.md b/kbase.md deleted file mode 100644 index 23a63f7..0000000 --- a/kbase.md +++ /dev/null @@ -1,19 +0,0 @@ -KBase notes - -- collaboratively generate, test, share hypotheses -- extensible -- track providence - -- KBase API -- KBase web UI - -user has projects -project has narratives, workspaces -narrative (ipynb) uses tools, workspaces - -project == people + data - -auth with globus online nexus (OAuth) -deploy in cloud v24, magellan, lxc -VM, Docker - diff --git a/microsoft-donation-2013.html b/microsoft-donation-2013.html index bb64cc3..870111e 100644 --- a/microsoft-donation-2013.html +++ b/microsoft-donation-2013.html @@ -37,7 +37,9 @@ - + + +
        @@ -101,12 +103,12 @@

        Versions

        Stable

        - 1.2.1 – February 2014
        + 2.0 – April 2014
        Install

        Development

        - 2.0.dev
        + 3.0.dev
        Github
        diff --git a/news.html b/news.html index 040a11a..a8345d6 100644 --- a/news.html +++ b/news.html @@ -39,7 +39,7 @@ - +
        @@ -103,12 +103,12 @@

        Versions

        Stable

        - 1.2.1 – February 2014
        + 2.0 – April 2014
        Install

        Development

        - 2.0.dev
        + 3.0.dev
        Github
        @@ -218,6 +218,14 @@

        Support IPython

        NewsΒΆ

        +
        +

        IPython 2.0ΒΆ

        +

        IPython 2.0 was released on April 1, 2014. The major new features include +interactive HTML widgets, and directory navigation in the notebook dashboard. +Install it now, or see the +release notes +for more details.

        +

        User survey 2013ΒΆ

        In 2013 we ran a second IPython user survey, gathering responses from 455 diff --git a/notebook.html b/notebook.html index 08ea384..7c62e09 100644 --- a/notebook.html +++ b/notebook.html @@ -103,12 +103,12 @@

        Versions

        Stable

        - 1.2.1 – February 2014
        + 2.0 – April 2014
        Install

        Development

        - 2.0.dev
        + 3.0.dev
        Github
        diff --git a/presentation.html b/presentation.html index c5cd3fb..644e9f2 100644 --- a/presentation.html +++ b/presentation.html @@ -103,12 +103,12 @@

        Versions

        Stable

        - 1.2.1 – February 2014
        + 2.0 – April 2014
        Install

        Development

        - 2.0.dev
        + 3.0.dev
        Github
        diff --git a/pyreadline.html b/pyreadline.html index e99623c..21e411a 100644 --- a/pyreadline.html +++ b/pyreadline.html @@ -103,12 +103,12 @@

        Versions

        Stable

        - 1.2.1 – February 2014
        + 2.0 – April 2014
        Install

        Development

        - 2.0.dev
        + 3.0.dev
        Github
        diff --git a/roadmap-announcement.html b/roadmap-announcement.html index 3a65817..d3dc0b0 100644 --- a/roadmap-announcement.html +++ b/roadmap-announcement.html @@ -103,12 +103,12 @@

        Versions

        Stable

        - 1.2.1 – February 2014
        + 2.0 – April 2014
        Install

        Development

        - 2.0.dev
        + 3.0.dev
        Github
        diff --git a/screenshots/index.html b/screenshots/index.html index 207d688..f49f75a 100644 --- a/screenshots/index.html +++ b/screenshots/index.html @@ -105,12 +105,12 @@

        Versions

        Stable

        - 1.2.1 – February 2014
        + 2.0 – April 2014
        Install

        Development

        - 2.0.dev
        + 3.0.dev
        Github
        diff --git a/search.html b/search.html index 414900c..4284cfc 100644 --- a/search.html +++ b/search.html @@ -109,12 +109,12 @@

        Versions

        Stable

        - 1.2.1 – February 2014
        + 2.0 – April 2014
        Install

        Development

        - 2.0.dev
        + 3.0.dev
        Github
        diff --git a/searchresults.html b/searchresults.html index 1ef0a19..ec96fee 100644 --- a/searchresults.html +++ b/searchresults.html @@ -70,12 +70,12 @@

        Versions

        Stable

        - 1.2.1 – February 2014
        + 2.0 – April 2014
        Install

        Development

        - 2.0.dev
        + 3.0.dev
        Github
        diff --git a/showmedo.html b/showmedo.html index 15d94d8..8ddb137 100644 --- a/showmedo.html +++ b/showmedo.html @@ -103,12 +103,12 @@

        Versions

        Stable

        - 1.2.1 – February 2014
        + 2.0 – April 2014
        Install

        Development

        - 2.0.dev
        + 3.0.dev
        Github
        diff --git a/sloan-grant.html b/sloan-grant.html index 4605b20..94586f1 100644 --- a/sloan-grant.html +++ b/sloan-grant.html @@ -103,12 +103,12 @@

        Versions

        Stable

        - 1.2.1 – February 2014
        + 2.0 – April 2014
        Install

        Development

        - 2.0.dev
        + 3.0.dev
        Github
        diff --git a/sponsors.html b/sponsors.html index 92a5333..0c94332 100644 --- a/sponsors.html +++ b/sponsors.html @@ -103,12 +103,12 @@

        Versions

        Stable

        - 1.2.1 – February 2014
        + 2.0 – April 2014
        Install

        Development

        - 2.0.dev
        + 3.0.dev
        Github
        diff --git a/usersurvey2011.html b/usersurvey2011.html index b1c7b2e..f7055ee 100644 --- a/usersurvey2011.html +++ b/usersurvey2011.html @@ -38,7 +38,7 @@ - + @@ -103,12 +103,12 @@

        Versions

        Stable

        - 1.2.1 – February 2014
        + 2.0 – April 2014
        Install

        Development

        - 2.0.dev
        + 3.0.dev
        Github
        diff --git a/usersurvey2013.html b/usersurvey2013.html index 5f89d3a..0e17b08 100644 --- a/usersurvey2013.html +++ b/usersurvey2013.html @@ -37,7 +37,9 @@ - + + +
        @@ -101,12 +103,12 @@

        Versions

        Stable

        - 1.2.1 – February 2014
        + 2.0 – April 2014
        Install

        Development

        - 2.0.dev
        + 3.0.dev
        Github
        diff --git a/videos.html b/videos.html index 45977dd..f2f280c 100644 --- a/videos.html +++ b/videos.html @@ -39,7 +39,7 @@ - +
        @@ -103,12 +103,12 @@

        Versions

        Stable

        - 1.2.1 – February 2014
        + 2.0 – April 2014
        Install

        Development

        - 2.0.dev
        + 3.0.dev
        Github
        diff --git a/whatsnew082.html b/whatsnew082.html index ab89832..67b351e 100644 --- a/whatsnew082.html +++ b/whatsnew082.html @@ -103,12 +103,12 @@

        Versions

        Stable

        - 1.2.1 – February 2014
        + 2.0 – April 2014
        Install

        Development

        - 2.0.dev
        + 3.0.dev
        Github
        diff --git a/whatsnew083.html b/whatsnew083.html index 10b3f75..14009ea 100644 --- a/whatsnew083.html +++ b/whatsnew083.html @@ -102,12 +102,12 @@

        Versions

        Stable

        - 1.2.1 – February 2014
        + 2.0 – April 2014
        Install

        Development

        - 2.0.dev
        + 3.0.dev
        Github
        From 287948f1ffa3358d315b4595a75d5a04b67f483b Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Thu, 3 Apr 2014 11:55:56 -0700 Subject: [PATCH 020/146] Update supported Python versions --- _sources/index.txt | 4 ++-- index.html | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/_sources/index.txt b/_sources/index.txt index 81a01ed..79f7d10 100644 --- a/_sources/index.txt +++ b/_sources/index.txt @@ -63,8 +63,8 @@ our `extensive documentation `_. IPython is open source list if it uses IPython as a library, and please don't forget to :ref:`cite the project `. -IPython supports Python 2.6 to 2.7 and 3.2 or newer. Our older 0.10 series -supports Python 2.5, and can be used with Python 2.4. +IPython supports Python 2.7 and 3.3 or newer. Our older 1.x series supports +Python 2.6 and 3.2. Announcements ============= diff --git a/index.html b/index.html index 0212180..4b6771b 100644 --- a/index.html +++ b/index.html @@ -243,8 +243,8 @@

        Support IPython

        (BSD license), and is used by a range of other projects; add your project to that list if it uses IPython as a library, and please don’t forget to cite the project.

        -

        IPython supports Python 2.6 to 2.7 and 3.2 or newer. Our older 0.10 series -supports Python 2.5, and can be used with Python 2.4.

        +

        IPython supports Python 2.7 and 3.3 or newer. Our older 1.x series supports +Python 2.6 and 3.2.

        AnnouncementsΒΆ

          From 6049a72ceda5640e5e75353db64022a31198b266 Mon Sep 17 00:00:00 2001 From: Fernando Perez Date: Sun, 6 Apr 2014 13:48:28 -0700 Subject: [PATCH 021/146] Updated website (automated commit) --- _sources/index.txt | 2 +- _static/basic.css | 7 +- _static/doctools.js | 19 +- _static/fancybox/.gitattributes | 7 + _static/fancybox/jquery.fancybox.js | 0 _static/fancybox/jquery.fancybox.pack.js | 0 _static/simons-logo.jpg | Bin 0 -> 131255 bytes _static/sloan-logo.jpg | Bin 0 -> 138765 bytes _static/underscore.js | 1257 +++++++++++++++++++++- _static/websupport.js | 2 +- citing.html | 16 +- documentation.html | 5 +- donate.html | 5 +- faq.html | 10 +- index.html | 7 +- install.html | 27 +- microsoft-donation-2013.html | 5 +- news.html | 5 +- notebook.html | 5 +- objects.inv | 2 +- presentation.html | 5 +- pyreadline.html | 5 +- roadmap-announcement.html | 5 +- screenshots/index.html | 2 +- search.html | 5 +- searchresults.html | 5 +- showmedo.html | 5 +- sloan-grant.html | 5 +- sponsors.html | 5 +- usersurvey2011.html | 5 +- usersurvey2013.html | 5 +- videos.html | 5 +- whatsnew082.html | 5 +- whatsnew083.html | 5 +- 34 files changed, 1338 insertions(+), 110 deletions(-) create mode 100644 _static/fancybox/.gitattributes mode change 100644 => 100755 _static/fancybox/jquery.fancybox.js mode change 100644 => 100755 _static/fancybox/jquery.fancybox.pack.js create mode 100644 _static/simons-logo.jpg create mode 100644 _static/sloan-logo.jpg diff --git a/_sources/index.txt b/_sources/index.txt index 79f7d10..a86e92e 100644 --- a/_sources/index.txt +++ b/_sources/index.txt @@ -51,7 +51,7 @@ collection`_. Our `notebook gallery`__ is an excellent way to see the many things you can do with IPython while learning about a variety of topics, from basic programming to advanced statistics or quantum mechanics. -.. _official example collection: https://github.com/ipython/ipython/tree/master/examples/notebooks#a-collection-of-notebooks-for-using-ipython-effectively +.. _official example collection: http://nbviewer.ipython.org/github/ipython/ipython/blob/master/examples/Index.ipynb .. __: https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks diff --git a/_static/basic.css b/_static/basic.css index 77e6ce3..1e02c5d 100644 --- a/_static/basic.css +++ b/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -89,7 +89,6 @@ div.sphinxsidebar #searchbox input[type="submit"] { img { border: 0; - max-width: 100%; } /* -- search page ----------------------------------------------------------- */ @@ -402,6 +401,10 @@ dl.glossary dt { margin: 0; } +.refcount { + color: #060; +} + .optional { font-size: 1.3em; } diff --git a/_static/doctools.js b/_static/doctools.js index c5455c9..d4619fd 100644 --- a/_static/doctools.js +++ b/_static/doctools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for all documentation. * - * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -32,7 +32,7 @@ if (!window.console || !console.firebug) { */ jQuery.urldecode = function(x) { return decodeURIComponent(x).replace(/\+/g, ' '); -}; +} /** * small helper function to urlencode strings @@ -61,6 +61,18 @@ jQuery.getQueryParameters = function(s) { 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. @@ -168,9 +180,6 @@ var Documentation = { var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; if (terms.length) { var body = $('div.body'); - if (!body.length) { - body = $('body'); - } window.setTimeout(function() { $.each(terms, function() { body.highlightText(this.toLowerCase(), 'highlighted'); diff --git a/_static/fancybox/.gitattributes b/_static/fancybox/.gitattributes new file mode 100644 index 0000000..f6bb280 --- /dev/null +++ b/_static/fancybox/.gitattributes @@ -0,0 +1,7 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# Denote all files that are truly binary and should not be modified. +*.png binary +*.jpg binary +*.gif binary \ No newline at end of file diff --git a/_static/fancybox/jquery.fancybox.js b/_static/fancybox/jquery.fancybox.js old mode 100644 new mode 100755 diff --git a/_static/fancybox/jquery.fancybox.pack.js b/_static/fancybox/jquery.fancybox.pack.js old mode 100644 new mode 100755 diff --git a/_static/simons-logo.jpg b/_static/simons-logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2a0f10ddebe82089b4ac404f5ff17b83e64c59e3 GIT binary patch literal 131255 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

          *(OYPaFz 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 literal 0 HcmV?d00001 diff --git a/_static/sloan-logo.jpg b/_static/sloan-logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..18bf35b52788d556d13fa4ad754d427a66fd7a3d GIT binary patch literal 138765 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]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

          g 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 E0oTaj;Q#;t literal 0 HcmV?d00001 diff --git a/_static/underscore.js b/_static/underscore.js index 5b55f32..a12f0d9 100644 --- a/_static/underscore.js +++ b/_static/underscore.js @@ -1,31 +1,1226 @@ -// Underscore.js 1.3.1 -// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc. -// Underscore is freely distributable under the MIT license. -// Portions of Underscore are inspired or borrowed from Prototype, -// Oliver Steele's Functional, and John Resig's Micro-Templating. -// For all details and documentation: -// http://documentcloud.github.com/underscore -(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source== -c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c, -h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each= -b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e2;a== -null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect= -function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e= -e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck= -function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;bd?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a, -c,d){d||(d=b.identity);for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e=0;d--)b=[a[d].apply(this,b)];return b[0]}}; -b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments, -1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)}; -b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"}; -b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a), -function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+ -u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]= -function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain= -true;return this};m.prototype.value=function(){return this._wrapped}}).call(this); +// Underscore.js 1.4.4 +// http://underscorejs.org +// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc. +// Underscore may be freely distributed under the MIT license. + +(function() { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `global` on the server. + var root = this; + + // Save the previous value of the `_` variable. + var previousUnderscore = root._; + + // Establish the object that gets returned to break out of a loop iteration. + var breaker = {}; + + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; + + // Create quick reference variables for speed access to core prototypes. + var push = ArrayProto.push, + slice = ArrayProto.slice, + concat = ArrayProto.concat, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + + // All **ECMAScript 5** native function implementations that we hope to use + // are declared here. + var + nativeForEach = ArrayProto.forEach, + nativeMap = ArrayProto.map, + nativeReduce = ArrayProto.reduce, + nativeReduceRight = ArrayProto.reduceRight, + nativeFilter = ArrayProto.filter, + nativeEvery = ArrayProto.every, + nativeSome = ArrayProto.some, + nativeIndexOf = ArrayProto.indexOf, + nativeLastIndexOf = ArrayProto.lastIndexOf, + nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeBind = FuncProto.bind; + + // Create a safe reference to the Underscore object for use below. + var _ = function(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; + }; + + // Export the Underscore object for **Node.js**, with + // backwards-compatibility for the old `require()` API. If we're in + // the browser, add `_` as a global object via a string identifier, + // for Closure Compiler "advanced" mode. + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = _; + } + exports._ = _; + } else { + root._ = _; + } + + // Current version. + _.VERSION = '1.4.4'; + + // Collection Functions + // -------------------- + + // The cornerstone, an `each` implementation, aka `forEach`. + // Handles objects with the built-in `forEach`, arrays, and raw objects. + // Delegates to **ECMAScript 5**'s native `forEach` if available. + var each = _.each = _.forEach = function(obj, iterator, context) { + if (obj == null) return; + if (nativeForEach && obj.forEach === nativeForEach) { + obj.forEach(iterator, context); + } else if (obj.length === +obj.length) { + for (var i = 0, l = obj.length; i < l; i++) { + if (iterator.call(context, obj[i], i, obj) === breaker) return; + } + } else { + for (var key in obj) { + if (_.has(obj, key)) { + if (iterator.call(context, obj[key], key, obj) === breaker) return; + } + } + } + }; + + // Return the results of applying the iterator to each element. + // Delegates to **ECMAScript 5**'s native `map` if available. + _.map = _.collect = function(obj, iterator, context) { + var results = []; + if (obj == null) return results; + if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); + each(obj, function(value, index, list) { + results[results.length] = iterator.call(context, value, index, list); + }); + return results; + }; + + var reduceError = 'Reduce of empty array with no initial value'; + + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available. + _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) { + var initial = arguments.length > 2; + if (obj == null) obj = []; + if (nativeReduce && obj.reduce === nativeReduce) { + if (context) iterator = _.bind(iterator, context); + return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator); + } + each(obj, function(value, index, list) { + if (!initial) { + memo = value; + initial = true; + } else { + memo = iterator.call(context, memo, value, index, list); + } + }); + if (!initial) throw new TypeError(reduceError); + return memo; + }; + + // The right-associative version of reduce, also known as `foldr`. + // Delegates to **ECMAScript 5**'s native `reduceRight` if available. + _.reduceRight = _.foldr = function(obj, iterator, memo, context) { + var initial = arguments.length > 2; + if (obj == null) obj = []; + if (nativeReduceRight && obj.reduceRight === nativeReduceRight) { + if (context) iterator = _.bind(iterator, context); + return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator); + } + var length = obj.length; + if (length !== +length) { + var keys = _.keys(obj); + length = keys.length; + } + each(obj, function(value, index, list) { + index = keys ? keys[--length] : --length; + if (!initial) { + memo = obj[index]; + initial = true; + } else { + memo = iterator.call(context, memo, obj[index], index, list); + } + }); + if (!initial) throw new TypeError(reduceError); + return memo; + }; + + // Return the first value which passes a truth test. Aliased as `detect`. + _.find = _.detect = function(obj, iterator, context) { + var result; + any(obj, function(value, index, list) { + if (iterator.call(context, value, index, list)) { + result = value; + return true; + } + }); + return result; + }; + + // Return all the elements that pass a truth test. + // Delegates to **ECMAScript 5**'s native `filter` if available. + // Aliased as `select`. + _.filter = _.select = function(obj, iterator, context) { + var results = []; + if (obj == null) return results; + if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context); + each(obj, function(value, index, list) { + if (iterator.call(context, value, index, list)) results[results.length] = value; + }); + return results; + }; + + // Return all the elements for which a truth test fails. + _.reject = function(obj, iterator, context) { + return _.filter(obj, function(value, index, list) { + return !iterator.call(context, value, index, list); + }, context); + }; + + // Determine whether all of the elements match a truth test. + // Delegates to **ECMAScript 5**'s native `every` if available. + // Aliased as `all`. + _.every = _.all = function(obj, iterator, context) { + iterator || (iterator = _.identity); + var result = true; + if (obj == null) return result; + if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context); + each(obj, function(value, index, list) { + if (!(result = result && iterator.call(context, value, index, list))) return breaker; + }); + return !!result; + }; + + // Determine if at least one element in the object matches a truth test. + // Delegates to **ECMAScript 5**'s native `some` if available. + // Aliased as `any`. + var any = _.some = _.any = function(obj, iterator, context) { + iterator || (iterator = _.identity); + var result = false; + if (obj == null) return result; + if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context); + each(obj, function(value, index, list) { + if (result || (result = iterator.call(context, value, index, list))) return breaker; + }); + return !!result; + }; + + // Determine if the array or object contains a given value (using `===`). + // Aliased as `include`. + _.contains = _.include = function(obj, target) { + if (obj == null) return false; + if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; + return any(obj, function(value) { + return value === target; + }); + }; + + // Invoke a method (with arguments) on every item in a collection. + _.invoke = function(obj, method) { + var args = slice.call(arguments, 2); + var isFunc = _.isFunction(method); + return _.map(obj, function(value) { + return (isFunc ? method : value[method]).apply(value, args); + }); + }; + + // Convenience version of a common use case of `map`: fetching a property. + _.pluck = function(obj, key) { + return _.map(obj, function(value){ return value[key]; }); + }; + + // Convenience version of a common use case of `filter`: selecting only objects + // containing specific `key:value` pairs. + _.where = function(obj, attrs, first) { + if (_.isEmpty(attrs)) return first ? null : []; + return _[first ? 'find' : 'filter'](obj, function(value) { + for (var key in attrs) { + if (attrs[key] !== value[key]) return false; + } + return true; + }); + }; + + // Convenience version of a common use case of `find`: getting the first object + // containing specific `key:value` pairs. + _.findWhere = function(obj, attrs) { + return _.where(obj, attrs, true); + }; + + // Return the maximum element or (element-based computation). + // Can't optimize arrays of integers longer than 65,535 elements. + // See: https://bugs.webkit.org/show_bug.cgi?id=80797 + _.max = function(obj, iterator, context) { + if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { + return Math.max.apply(Math, obj); + } + if (!iterator && _.isEmpty(obj)) return -Infinity; + var result = {computed : -Infinity, value: -Infinity}; + each(obj, function(value, index, list) { + var computed = iterator ? iterator.call(context, value, index, list) : value; + computed >= result.computed && (result = {value : value, computed : computed}); + }); + return result.value; + }; + + // Return the minimum element (or element-based computation). + _.min = function(obj, iterator, context) { + if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { + return Math.min.apply(Math, obj); + } + if (!iterator && _.isEmpty(obj)) return Infinity; + var result = {computed : Infinity, value: Infinity}; + each(obj, function(value, index, list) { + var computed = iterator ? iterator.call(context, value, index, list) : value; + computed < result.computed && (result = {value : value, computed : computed}); + }); + return result.value; + }; + + // Shuffle an array. + _.shuffle = function(obj) { + var rand; + var index = 0; + var shuffled = []; + each(obj, function(value) { + rand = _.random(index++); + shuffled[index - 1] = shuffled[rand]; + shuffled[rand] = value; + }); + return shuffled; + }; + + // An internal function to generate lookup iterators. + var lookupIterator = function(value) { + return _.isFunction(value) ? value : function(obj){ return obj[value]; }; + }; + + // Sort the object's values by a criterion produced by an iterator. + _.sortBy = function(obj, value, context) { + var iterator = lookupIterator(value); + return _.pluck(_.map(obj, function(value, index, list) { + return { + value : value, + index : index, + criteria : iterator.call(context, value, index, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index < right.index ? -1 : 1; + }), 'value'); + }; + + // An internal function used for aggregate "group by" operations. + var group = function(obj, value, context, behavior) { + var result = {}; + var iterator = lookupIterator(value || _.identity); + each(obj, function(value, index) { + var key = iterator.call(context, value, index, obj); + behavior(result, key, value); + }); + return result; + }; + + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + _.groupBy = function(obj, value, context) { + return group(obj, value, context, function(result, key, value) { + (_.has(result, key) ? result[key] : (result[key] = [])).push(value); + }); + }; + + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + _.countBy = function(obj, value, context) { + return group(obj, value, context, function(result, key) { + if (!_.has(result, key)) result[key] = 0; + result[key]++; + }); + }; + + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + _.sortedIndex = function(array, obj, iterator, context) { + iterator = iterator == null ? _.identity : lookupIterator(iterator); + var value = iterator.call(context, obj); + var low = 0, high = array.length; + while (low < high) { + var mid = (low + high) >>> 1; + iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid; + } + return low; + }; + + // Safely convert anything iterable into a real, live array. + _.toArray = function(obj) { + if (!obj) return []; + if (_.isArray(obj)) return slice.call(obj); + if (obj.length === +obj.length) return _.map(obj, _.identity); + return _.values(obj); + }; + + // Return the number of elements in an object. + _.size = function(obj) { + if (obj == null) return 0; + return (obj.length === +obj.length) ? obj.length : _.keys(obj).length; + }; + + // Array Functions + // --------------- + + // Get the first element of an array. Passing **n** will return the first N + // values in the array. Aliased as `head` and `take`. The **guard** check + // allows it to work with `_.map`. + _.first = _.head = _.take = function(array, n, guard) { + if (array == null) return void 0; + return (n != null) && !guard ? slice.call(array, 0, n) : array[0]; + }; + + // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. The **guard** check allows it to work with + // `_.map`. + _.initial = function(array, n, guard) { + return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n)); + }; + + // Get the last element of an array. Passing **n** will return the last N + // values in the array. The **guard** check allows it to work with `_.map`. + _.last = function(array, n, guard) { + if (array == null) return void 0; + if ((n != null) && !guard) { + return slice.call(array, Math.max(array.length - n, 0)); + } else { + return array[array.length - 1]; + } + }; + + // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. + // Especially useful on the arguments object. Passing an **n** will return + // the rest N values in the array. The **guard** + // check allows it to work with `_.map`. + _.rest = _.tail = _.drop = function(array, n, guard) { + return slice.call(array, (n == null) || guard ? 1 : n); + }; + + // Trim out all falsy values from an array. + _.compact = function(array) { + return _.filter(array, _.identity); + }; + + // Internal implementation of a recursive `flatten` function. + var flatten = function(input, shallow, output) { + each(input, function(value) { + if (_.isArray(value)) { + shallow ? push.apply(output, value) : flatten(value, shallow, output); + } else { + output.push(value); + } + }); + return output; + }; + + // Return a completely flattened version of an array. + _.flatten = function(array, shallow) { + return flatten(array, shallow, []); + }; + + // Return a version of the array that does not contain the specified value(s). + _.without = function(array) { + return _.difference(array, slice.call(arguments, 1)); + }; + + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // Aliased as `unique`. + _.uniq = _.unique = function(array, isSorted, iterator, context) { + if (_.isFunction(isSorted)) { + context = iterator; + iterator = isSorted; + isSorted = false; + } + var initial = iterator ? _.map(array, iterator, context) : array; + var results = []; + var seen = []; + each(initial, function(value, index) { + if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) { + seen.push(value); + results.push(array[index]); + } + }); + return results; + }; + + // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. + _.union = function() { + return _.uniq(concat.apply(ArrayProto, arguments)); + }; + + // Produce an array that contains every item shared between all the + // passed-in arrays. + _.intersection = function(array) { + var rest = slice.call(arguments, 1); + return _.filter(_.uniq(array), function(item) { + return _.every(rest, function(other) { + return _.indexOf(other, item) >= 0; + }); + }); + }; + + // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. + _.difference = function(array) { + var rest = concat.apply(ArrayProto, slice.call(arguments, 1)); + return _.filter(array, function(value){ return !_.contains(rest, value); }); + }; + + // Zip together multiple lists into a single array -- elements that share + // an index go together. + _.zip = function() { + var args = slice.call(arguments); + var length = _.max(_.pluck(args, 'length')); + var results = new Array(length); + for (var i = 0; i < length; i++) { + results[i] = _.pluck(args, "" + i); + } + return results; + }; + + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. + _.object = function(list, values) { + if (list == null) return {}; + var result = {}; + for (var i = 0, l = list.length; i < l; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + }; + + // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**), + // we need this function. Return the position of the first occurrence of an + // item in an array, or -1 if the item is not included in the array. + // Delegates to **ECMAScript 5**'s native `indexOf` if available. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + _.indexOf = function(array, item, isSorted) { + if (array == null) return -1; + var i = 0, l = array.length; + if (isSorted) { + if (typeof isSorted == 'number') { + i = (isSorted < 0 ? Math.max(0, l + isSorted) : isSorted); + } else { + i = _.sortedIndex(array, item); + return array[i] === item ? i : -1; + } + } + if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted); + for (; i < l; i++) if (array[i] === item) return i; + return -1; + }; + + // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available. + _.lastIndexOf = function(array, item, from) { + if (array == null) return -1; + var hasIndex = from != null; + if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) { + return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item); + } + var i = (hasIndex ? from : array.length); + while (i--) if (array[i] === item) return i; + return -1; + }; + + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](http://docs.python.org/library/functions.html#range). + _.range = function(start, stop, step) { + if (arguments.length <= 1) { + stop = start || 0; + start = 0; + } + step = arguments[2] || 1; + + var len = Math.max(Math.ceil((stop - start) / step), 0); + var idx = 0; + var range = new Array(len); + + while(idx < len) { + range[idx++] = start; + start += step; + } + + return range; + }; + + // Function (ahem) Functions + // ------------------ + + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if + // available. + _.bind = function(func, context) { + if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); + var args = slice.call(arguments, 2); + return function() { + return func.apply(context, args.concat(slice.call(arguments))); + }; + }; + + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. + _.partial = function(func) { + var args = slice.call(arguments, 1); + return function() { + return func.apply(this, args.concat(slice.call(arguments))); + }; + }; + + // Bind all of an object's methods to that object. Useful for ensuring that + // all callbacks defined on an object belong to it. + _.bindAll = function(obj) { + var funcs = slice.call(arguments, 1); + if (funcs.length === 0) funcs = _.functions(obj); + each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); }); + return obj; + }; + + // Memoize an expensive function by storing its results. + _.memoize = function(func, hasher) { + var memo = {}; + hasher || (hasher = _.identity); + return function() { + var key = hasher.apply(this, arguments); + return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments)); + }; + }; + + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + _.delay = function(func, wait) { + var args = slice.call(arguments, 2); + return setTimeout(function(){ return func.apply(null, args); }, wait); + }; + + // Defers a function, scheduling it to run after the current call stack has + // cleared. + _.defer = function(func) { + return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); + }; + + // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. + _.throttle = function(func, wait) { + var context, args, timeout, result; + var previous = 0; + var later = function() { + previous = new Date; + timeout = null; + result = func.apply(context, args); + }; + return function() { + var now = new Date; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + } else if (!timeout) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }; + + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + _.debounce = function(func, wait, immediate) { + var timeout, result; + return function() { + var context = this, args = arguments; + var later = function() { + timeout = null; + if (!immediate) result = func.apply(context, args); + }; + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) result = func.apply(context, args); + return result; + }; + }; + + // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. + _.once = function(func) { + var ran = false, memo; + return function() { + if (ran) return memo; + ran = true; + memo = func.apply(this, arguments); + func = null; + return memo; + }; + }; + + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + _.wrap = function(func, wrapper) { + return function() { + var args = [func]; + push.apply(args, arguments); + return wrapper.apply(this, args); + }; + }; + + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + _.compose = function() { + var funcs = arguments; + return function() { + var args = arguments; + for (var i = funcs.length - 1; i >= 0; i--) { + args = [funcs[i].apply(this, args)]; + } + return args[0]; + }; + }; + + // Returns a function that will only be executed after being called N times. + _.after = function(times, func) { + if (times <= 0) return func(); + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + }; + + // Object Functions + // ---------------- + + // Retrieve the names of an object's properties. + // Delegates to **ECMAScript 5**'s native `Object.keys` + _.keys = nativeKeys || function(obj) { + if (obj !== Object(obj)) throw new TypeError('Invalid object'); + var keys = []; + for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key; + return keys; + }; + + // Retrieve the values of an object's properties. + _.values = function(obj) { + var values = []; + for (var key in obj) if (_.has(obj, key)) values.push(obj[key]); + return values; + }; + + // Convert an object into a list of `[key, value]` pairs. + _.pairs = function(obj) { + var pairs = []; + for (var key in obj) if (_.has(obj, key)) pairs.push([key, obj[key]]); + return pairs; + }; + + // Invert the keys and values of an object. The values must be serializable. + _.invert = function(obj) { + var result = {}; + for (var key in obj) if (_.has(obj, key)) result[obj[key]] = key; + return result; + }; + + // Return a sorted list of the function names available on the object. + // Aliased as `methods` + _.functions = _.methods = function(obj) { + var names = []; + for (var key in obj) { + if (_.isFunction(obj[key])) names.push(key); + } + return names.sort(); + }; + + // Extend a given object with all the properties in passed-in object(s). + _.extend = function(obj) { + each(slice.call(arguments, 1), function(source) { + if (source) { + for (var prop in source) { + obj[prop] = source[prop]; + } + } + }); + return obj; + }; + + // Return a copy of the object only containing the whitelisted properties. + _.pick = function(obj) { + var copy = {}; + var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); + each(keys, function(key) { + if (key in obj) copy[key] = obj[key]; + }); + return copy; + }; + + // Return a copy of the object without the blacklisted properties. + _.omit = function(obj) { + var copy = {}; + var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); + for (var key in obj) { + if (!_.contains(keys, key)) copy[key] = obj[key]; + } + return copy; + }; + + // Fill in a given object with default properties. + _.defaults = function(obj) { + each(slice.call(arguments, 1), function(source) { + if (source) { + for (var prop in source) { + if (obj[prop] == null) obj[prop] = source[prop]; + } + } + }); + return obj; + }; + + // Create a (shallow-cloned) duplicate of an object. + _.clone = function(obj) { + if (!_.isObject(obj)) return obj; + return _.isArray(obj) ? obj.slice() : _.extend({}, obj); + }; + + // Invokes interceptor with the obj, and then returns obj. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + _.tap = function(obj, interceptor) { + interceptor(obj); + return obj; + }; + + // Internal recursive comparison function for `isEqual`. + var eq = function(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal. + if (a === b) return a !== 0 || 1 / a == 1 / b; + // A strict comparison is necessary because `null == undefined`. + if (a == null || b == null) return a === b; + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className != toString.call(b)) return false; + switch (className) { + // Strings, numbers, dates, and booleans are compared by value. + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return a == String(b); + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for + // other numeric values. + return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b); + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a == +b; + // RegExps are compared by their source patterns and flags. + case '[object RegExp]': + return a.source == b.source && + a.global == b.global && + a.multiline == b.multiline && + a.ignoreCase == b.ignoreCase; + } + if (typeof a != 'object' || typeof b != 'object') return false; + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] == a) return bStack[length] == b; + } + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + var size = 0, result = true; + // Recursively compare objects and arrays. + if (className == '[object Array]') { + // Compare array lengths to determine if a deep comparison is necessary. + size = a.length; + result = size == b.length; + if (result) { + // Deep compare the contents, ignoring non-numeric properties. + while (size--) { + if (!(result = eq(a[size], b[size], aStack, bStack))) break; + } + } + } else { + // Objects with different constructors are not equivalent, but `Object`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) && + _.isFunction(bCtor) && (bCtor instanceof bCtor))) { + return false; + } + // Deep compare objects. + for (var key in a) { + if (_.has(a, key)) { + // Count the expected number of properties. + size++; + // Deep compare each member. + if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break; + } + } + // Ensure that both objects contain the same number of properties. + if (result) { + for (key in b) { + if (_.has(b, key) && !(size--)) break; + } + result = !size; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return result; + }; + + // Perform a deep comparison to check if two objects are equal. + _.isEqual = function(a, b) { + return eq(a, b, [], []); + }; + + // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. + _.isEmpty = function(obj) { + if (obj == null) return true; + if (_.isArray(obj) || _.isString(obj)) return obj.length === 0; + for (var key in obj) if (_.has(obj, key)) return false; + return true; + }; + + // Is a given value a DOM element? + _.isElement = function(obj) { + return !!(obj && obj.nodeType === 1); + }; + + // Is a given value an array? + // Delegates to ECMA5's native Array.isArray + _.isArray = nativeIsArray || function(obj) { + return toString.call(obj) == '[object Array]'; + }; + + // Is a given variable an object? + _.isObject = function(obj) { + return obj === Object(obj); + }; + + // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp. + each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) { + _['is' + name] = function(obj) { + return toString.call(obj) == '[object ' + name + ']'; + }; + }); + + // Define a fallback version of the method in browsers (ahem, IE), where + // there isn't any inspectable "Arguments" type. + if (!_.isArguments(arguments)) { + _.isArguments = function(obj) { + return !!(obj && _.has(obj, 'callee')); + }; + } + + // Optimize `isFunction` if appropriate. + if (typeof (/./) !== 'function') { + _.isFunction = function(obj) { + return typeof obj === 'function'; + }; + } + + // Is a given object a finite number? + _.isFinite = function(obj) { + return isFinite(obj) && !isNaN(parseFloat(obj)); + }; + + // Is the given value `NaN`? (NaN is the only number which does not equal itself). + _.isNaN = function(obj) { + return _.isNumber(obj) && obj != +obj; + }; + + // Is a given value a boolean? + _.isBoolean = function(obj) { + return obj === true || obj === false || toString.call(obj) == '[object Boolean]'; + }; + + // Is a given value equal to null? + _.isNull = function(obj) { + return obj === null; + }; + + // Is a given variable undefined? + _.isUndefined = function(obj) { + return obj === void 0; + }; + + // Shortcut function for checking if an object has a given property directly + // on itself (in other words, not on a prototype). + _.has = function(obj, key) { + return hasOwnProperty.call(obj, key); + }; + + // Utility Functions + // ----------------- + + // Run Underscore.js in *noConflict* mode, returning the `_` variable to its + // previous owner. Returns a reference to the Underscore object. + _.noConflict = function() { + root._ = previousUnderscore; + return this; + }; + + // Keep the identity function around for default iterators. + _.identity = function(value) { + return value; + }; + + // Run a function **n** times. + _.times = function(n, iterator, context) { + var accum = Array(n); + for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i); + return accum; + }; + + // Return a random integer between min and max (inclusive). + _.random = function(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); + }; + + // List of HTML entities for escaping. + var entityMap = { + escape: { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '/': '/' + } + }; + entityMap.unescape = _.invert(entityMap.escape); + + // Regexes containing the keys and values listed immediately above. + var entityRegexes = { + escape: new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'), + unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g') + }; + + // Functions for escaping and unescaping strings to/from HTML interpolation. + _.each(['escape', 'unescape'], function(method) { + _[method] = function(string) { + if (string == null) return ''; + return ('' + string).replace(entityRegexes[method], function(match) { + return entityMap[method][match]; + }); + }; + }); + + // If the value of the named property is a function then invoke it; + // otherwise, return it. + _.result = function(object, property) { + if (object == null) return null; + var value = object[property]; + return _.isFunction(value) ? value.call(object) : value; + }; + + // Add your own custom functions to the Underscore object. + _.mixin = function(obj) { + each(_.functions(obj), function(name){ + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return result.call(this, func.apply(_, args)); + }; + }); + }; + + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + _.uniqueId = function(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\t': 't', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + _.template = function(text, data, settings) { + var render; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = new RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset) + .replace(escaper, function(match) { return '\\' + escapes[match]; }); + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } + if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } + if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + index = offset + match.length; + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + "return __p;\n"; + + try { + render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + if (data) return render(data, _); + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled function source as a convenience for precompilation. + template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}'; + + return template; + }; + + // Add a "chain" function, which will delegate to the wrapper. + _.chain = function(obj) { + return _(obj).chain(); + }; + + // OOP + // --------------- + // If Underscore is called as a function, it returns a wrapped object that + // can be used OO-style. This wrapper holds altered versions of all the + // underscore functions. Wrapped objects may be chained. + + // Helper function to continue chaining intermediate results. + var result = function(obj) { + return this._chain ? _(obj).chain() : obj; + }; + + // Add all of the Underscore functions to the wrapper object. + _.mixin(_); + + // Add all mutator Array functions to the wrapper. + each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + method.apply(obj, arguments); + if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0]; + return result.call(this, obj); + }; + }); + + // Add all accessor Array functions to the wrapper. + each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + return result.call(this, method.apply(this._wrapped, arguments)); + }; + }); + + _.extend(_.prototype, { + + // Start chaining a wrapped Underscore object. + chain: function() { + this._chain = true; + return this; + }, + + // Extracts the result from a wrapped and chained object. + value: function() { + return this._wrapped; + } + + }); + +}).call(this); diff --git a/_static/websupport.js b/_static/websupport.js index 71c0a13..e9bd1b8 100644 --- a/_static/websupport.js +++ b/_static/websupport.js @@ -4,7 +4,7 @@ * * sphinx.websupport utilties for all documentation. * - * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/citing.html b/citing.html index 3e91893..397163c 100644 --- a/citing.html +++ b/citing.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@ + Security in IPython — IPython + + + + + + + + + + + + + +

          +
          + + +
          + Install Β· +Docs Β· +Videos Β· +News Β· +Cite Β· +Sponsors Β· +Donate +
          +
          +
          + +
          +
          + + +
          +
          +
          +
          Loading
          + + + + +
          +
          +

          Versions

          + +

          Stable

          + 2.1 – May 2014
          + Install +
          + +

          Development

          + 3.0.dev
          + Github +
          + +
          + + + + +
          +

          Notebook Viewer

          + +Share your notebooks + +
          + + + +
          +
          + +
          +

          Community

          + + + +
          + + + + + +
          + +
          + + +
          +

          Book

          + + + +
          + + + + +
          + + +
          +
          +
          + +
          + +
          +
          +
          + +
          +

          Security in IPythonΒΆ

          +

          See the IPython documentation for more information on notebook security, +or reporting security issues

          +
          + + +
          +
          +
          +
          +
          +
          +
          + + + + + \ No newline at end of file diff --git a/showmedo.html b/showmedo.html index 8ddb137..eea9362 100644 --- a/showmedo.html +++ b/showmedo.html @@ -103,7 +103,7 @@

          Versions

          Stable

          - 2.0 – April 2014
          + 2.1 – May 2014
          Install
          diff --git a/sloan-grant.html b/sloan-grant.html index 94586f1..d7399bd 100644 --- a/sloan-grant.html +++ b/sloan-grant.html @@ -103,7 +103,7 @@

          Versions

          Stable

          - 2.0 – April 2014
          + 2.1 – May 2014
          Install
          diff --git a/sponsors.html b/sponsors.html index 0c94332..e054dff 100644 --- a/sponsors.html +++ b/sponsors.html @@ -103,7 +103,7 @@

          Versions

          Stable

          - 2.0 – April 2014
          + 2.1 – May 2014
          Install
          diff --git a/usersurvey2011.html b/usersurvey2011.html index f7055ee..df3fecd 100644 --- a/usersurvey2011.html +++ b/usersurvey2011.html @@ -103,7 +103,7 @@

          Versions

          Stable

          - 2.0 – April 2014
          + 2.1 – May 2014
          Install
          diff --git a/usersurvey2013.html b/usersurvey2013.html index 0e17b08..5962608 100644 --- a/usersurvey2013.html +++ b/usersurvey2013.html @@ -103,7 +103,7 @@

          Versions

          Stable

          - 2.0 – April 2014
          + 2.1 – May 2014
          Install
          @@ -232,7 +232,7 @@

          Countries_images/countries1.png +_images/countries1.png

          See the ‘Countries’ sheet of the results spreadsheet for the cleaned data.

        diff --git a/videos.html b/videos.html index f2f280c..3e3f127 100644 --- a/videos.html +++ b/videos.html @@ -103,7 +103,7 @@

        Versions

        Stable

        - 2.0 – April 2014
        + 2.1 – May 2014
        Install
        diff --git a/whatsnew082.html b/whatsnew082.html index 67b351e..303e028 100644 --- a/whatsnew082.html +++ b/whatsnew082.html @@ -103,7 +103,7 @@

        Versions

        Stable

        - 2.0 – April 2014
        + 2.1 – May 2014
        Install
        diff --git a/whatsnew083.html b/whatsnew083.html index 14009ea..50a077d 100644 --- a/whatsnew083.html +++ b/whatsnew083.html @@ -102,7 +102,7 @@

        Versions

        Stable

        - 2.0 – April 2014
        + 2.1 – May 2014
        Install
        From 32d9ad3c9a2efced367f6541b40deb201aba7bea Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Wed, 25 Jun 2014 09:54:38 -0700 Subject: [PATCH 025/146] Update install instructions --- _sources/install.txt | 61 ++++++++++++++------------------------------ install.html | 60 +++++++++++++++---------------------------- kbase.md | 19 -------------- usersurvey2013.html | 2 +- 4 files changed, 41 insertions(+), 101 deletions(-) delete mode 100644 kbase.md diff --git a/_sources/install.txt b/_sources/install.txt index 15b9af7..256cdb9 100644 --- a/_sources/install.txt +++ b/_sources/install.txt @@ -2,12 +2,15 @@ Installing IPython ~~~~~~~~~~~~~~~~~~ -There are multiple ways of installing IPython, and our official documentation -contains `detailed instructions -`_ for manual -installs from source, targeted at advanced users and developers. +There are multiple ways of installing IPython. This page contains simplified installation +instructions that should work for most users. Our official documentation +contains `detailed instructions `_ +for manual installation targeted at advanced users and developers. -If you already have Python all set up, you can get IPython with :command:`pip`:: +I already have Python +--------------------- + +If you already have Python installed and are familiar with installing packages, you can get IPython with :command:`pip`:: pip install ipython @@ -15,19 +18,16 @@ Or if you want to also get the dependencies for the IPython notebook:: pip install ipython[notebook] +I am getting started with Python +-------------------------------- -For new users who want to get a full scientific Python environment up and running, we suggest -you follow the instructions on this page, which provide a setup based on Python -2.7. This includes all the dependencies to run the notebook and optionally the -basic libraries for scientific computing and data analysis. - -**Mac or Windows** +For new users who want to install a full Python environment for scientific computing and +data science, we suggest installing the Anaconda or Canopy Python distributions, which provide Python 2.7, IPython and all of its dependences as well as a complete set of open source packages +for scientific computing and data science. -1. Download and install `Anaconda `_ or the -free edition of `Enthought Canopy -`_. +1. Download and install Continuum's `Anaconda `_ or the free edition of Enthought's `Canopy `_. -2. Update IPython to the current version, using the Terminal/Command Prompt: +2. Update IPython to the current version using the Terminal: Anaconda:: @@ -38,37 +38,14 @@ free edition of `Enthought Canopy enpkg ipython -**Linux** - -On Linux, most distributions have everything you need in their package -managers. - -* On Ubuntu or other Debian-based distributions, type at the shell:: - - sudo apt-get install ipython-notebook - - # Optional: Common Python libraries for scientific computing - sudo apt-get install python-matplotlib python-scipy python-pandas \ - python-sympy python-nose - -* On Fedora 18 and newer related distributions, use:: - - sudo yum install python-ipython-notebook - - # Optional: Common Python libraries for scientific computing - sudo yum install python-matplotlib scipy python-pandas sympy python-nose - - .. _downloads: Downloads --------- -You can manually download IPython from either `Github +You can manually download IPython from `Github `_ or `PyPI -`_. Those locations contain source -distributions as well as binary Windows installers, which will be recognized by -``easy_install`` and ``pip`` (for the source ones). +`_. To install one of these versions, unpack it and run +the following from the top-level source directory using the Terminal:: -Our `downloads archive `_ also contains all -IPython releases, including old versions. + python setup.py install diff --git a/install.html b/install.html index 4d269bc..6e8b9fb 100644 --- a/install.html +++ b/install.html @@ -218,10 +218,13 @@

        Support IPython

        Installing IPythonΒΆ

        -

        There are multiple ways of installing IPython, and our official documentation -contains detailed instructions for manual -installs from source, targeted at advanced users and developers.

        -

        If you already have Python all set up, you can get IPython with pip:

        +

        There are multiple ways of installing IPython. This page contains simplified installation +instructions that should work for most users. Our official documentation +contains detailed instructions +for manual installation targeted at advanced users and developers.

        +
        +

        I already have PythonΒΆ

        +

        If you already have Python installed and are familiar with installing packages, you can get IPython with pip:

        pip install ipython
         
        @@ -229,15 +232,15 @@

        Installing IPython
        pip install ipython[notebook]
         

        -

        For new users who want to get a full scientific Python environment up and running, we suggest -you follow the instructions on this page, which provide a setup based on Python -2.7. This includes all the dependencies to run the notebook and optionally the -basic libraries for scientific computing and data analysis.

        -

        Mac or Windows

        -

        1. Download and install Anaconda or the -free edition of Enthought Canopy.

        -
          -
        1. Update IPython to the current version, using the Terminal/Command Prompt:
        2. +
        +
        +

        I am getting started with PythonΒΆ

        +

        For new users who want to install a full Python environment for scientific computing and +data science, we suggest installing the Anaconda or Canopy Python distributions, which provide Python 2.7, IPython and all of its dependences as well as a complete set of open source packages +for scientific computing and data science.

        +
          +
        1. Download and install Continuum’s Anaconda or the free edition of Enthought’s Canopy.
        2. +
        3. Update IPython to the current version using the Terminal:
      • -
      • On Fedora 18 and newer related distributions, use:

        -
        sudo yum install python-ipython-notebook
        -
        -# Optional: Common Python libraries for scientific computing
        -sudo yum install python-matplotlib scipy python-pandas sympy python-nose
        -
        -
        -
      • -

      DownloadsΒΆ

      -

      You can manually download IPython from either Github or PyPI. Those locations contain source -distributions as well as binary Windows installers, which will be recognized by -easy_install and pip (for the source ones).

      -

      Our downloads archive also contains all -IPython releases, including old versions.

      +

      You can manually download IPython from Github or PyPI. To install one of these versions, unpack it and run +the following from the top-level source directory using the Terminal:

      +
      python setup.py install
      +
      +
      diff --git a/kbase.md b/kbase.md deleted file mode 100644 index 23a63f7..0000000 --- a/kbase.md +++ /dev/null @@ -1,19 +0,0 @@ -KBase notes - -- collaboratively generate, test, share hypotheses -- extensible -- track providence - -- KBase API -- KBase web UI - -user has projects -project has narratives, workspaces -narrative (ipynb) uses tools, workspaces - -project == people + data - -auth with globus online nexus (OAuth) -deploy in cloud v24, magellan, lxc -VM, Docker - diff --git a/usersurvey2013.html b/usersurvey2013.html index 5962608..b6235ea 100644 --- a/usersurvey2013.html +++ b/usersurvey2013.html @@ -232,7 +232,7 @@

      Countries_images/countries1.png +_images/countries1.png

      See the ‘Countries’ sheet of the results spreadsheet for the cleaned data.

      From 4423ace75c20e7eddb3d84e04b043257cdc0468a Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Wed, 25 Jun 2014 10:05:51 -0700 Subject: [PATCH 026/146] Updated website (automated commit) --- _sources/presentation.txt | 23 + _sources/sponsors.txt | 2 +- _static/underscore.js | 1257 ++++++++++++++++++++++++++++++++++++- links.txt | 4 +- presentation.html | 59 +- sponsors.html | 4 +- 6 files changed, 1294 insertions(+), 55 deletions(-) diff --git a/_sources/presentation.txt b/_sources/presentation.txt index 6b63266..0e6f2c1 100644 --- a/_sources/presentation.txt +++ b/_sources/presentation.txt @@ -5,6 +5,29 @@ We have given a number of talks and presentations about IPython: +------ + 2014 +------ + +* Fernando gave a keynote address at PyCon 2014 entitled *Python and Science: + How OSS and Python are transforming science*. The `video is availible + `_ on the PyCon 2014 YouTube site. +* At PyCon 2014 there was also a tutorial *IPython in depth: high productivity + interactive and parallel python*. The entire 3 hour long tutorial can be viewed + `here `_. + +------ + 2013 +------ + +* Fernando's SciPy 2013 Keynote entitled *IPython: from the shell to a book with + a single tool...the method behind the madness* can be viewed `on YouTube + `_. +* The SciPy tutorial *IPython in Depth* is also available: + `Part 1 `_, + `Part 2 `_, + `Part 3 `_. + ------ 2012 ------ diff --git a/_sources/sponsors.txt b/_sources/sponsors.txt index f7fb50c..dc79b0e 100644 --- a/_sources/sponsors.txt +++ b/_sources/sponsors.txt @@ -55,7 +55,7 @@ following sources: - `Enthought Inc`_ has supported IPython since its beginning in multiple forms, including --but not limited to-- the funding of our Qt console, hosting our website for many years, the continued hosting of our mailing lists, and the - inclusion of IPython in the `Enthought Python Distribution`_. + inclusion of IPython in `Enthought Canopy`_. - NiPy_/NIH: funding via the NiPy project (NIH grant 5R01MH081909-02) supported our 2009 refactoring work. diff --git a/_static/underscore.js b/_static/underscore.js index 5b55f32..a12f0d9 100644 --- a/_static/underscore.js +++ b/_static/underscore.js @@ -1,31 +1,1226 @@ -// Underscore.js 1.3.1 -// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc. -// Underscore is freely distributable under the MIT license. -// Portions of Underscore are inspired or borrowed from Prototype, -// Oliver Steele's Functional, and John Resig's Micro-Templating. -// For all details and documentation: -// http://documentcloud.github.com/underscore -(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source== -c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c, -h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each= -b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e2;a== -null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect= -function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e= -e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck= -function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;bd?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a, -c,d){d||(d=b.identity);for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e=0;d--)b=[a[d].apply(this,b)];return b[0]}}; -b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments, -1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)}; -b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"}; -b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a), -function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+ -u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]= -function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain= -true;return this};m.prototype.value=function(){return this._wrapped}}).call(this); +// Underscore.js 1.4.4 +// http://underscorejs.org +// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc. +// Underscore may be freely distributed under the MIT license. + +(function() { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `global` on the server. + var root = this; + + // Save the previous value of the `_` variable. + var previousUnderscore = root._; + + // Establish the object that gets returned to break out of a loop iteration. + var breaker = {}; + + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; + + // Create quick reference variables for speed access to core prototypes. + var push = ArrayProto.push, + slice = ArrayProto.slice, + concat = ArrayProto.concat, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + + // All **ECMAScript 5** native function implementations that we hope to use + // are declared here. + var + nativeForEach = ArrayProto.forEach, + nativeMap = ArrayProto.map, + nativeReduce = ArrayProto.reduce, + nativeReduceRight = ArrayProto.reduceRight, + nativeFilter = ArrayProto.filter, + nativeEvery = ArrayProto.every, + nativeSome = ArrayProto.some, + nativeIndexOf = ArrayProto.indexOf, + nativeLastIndexOf = ArrayProto.lastIndexOf, + nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeBind = FuncProto.bind; + + // Create a safe reference to the Underscore object for use below. + var _ = function(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; + }; + + // Export the Underscore object for **Node.js**, with + // backwards-compatibility for the old `require()` API. If we're in + // the browser, add `_` as a global object via a string identifier, + // for Closure Compiler "advanced" mode. + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = _; + } + exports._ = _; + } else { + root._ = _; + } + + // Current version. + _.VERSION = '1.4.4'; + + // Collection Functions + // -------------------- + + // The cornerstone, an `each` implementation, aka `forEach`. + // Handles objects with the built-in `forEach`, arrays, and raw objects. + // Delegates to **ECMAScript 5**'s native `forEach` if available. + var each = _.each = _.forEach = function(obj, iterator, context) { + if (obj == null) return; + if (nativeForEach && obj.forEach === nativeForEach) { + obj.forEach(iterator, context); + } else if (obj.length === +obj.length) { + for (var i = 0, l = obj.length; i < l; i++) { + if (iterator.call(context, obj[i], i, obj) === breaker) return; + } + } else { + for (var key in obj) { + if (_.has(obj, key)) { + if (iterator.call(context, obj[key], key, obj) === breaker) return; + } + } + } + }; + + // Return the results of applying the iterator to each element. + // Delegates to **ECMAScript 5**'s native `map` if available. + _.map = _.collect = function(obj, iterator, context) { + var results = []; + if (obj == null) return results; + if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); + each(obj, function(value, index, list) { + results[results.length] = iterator.call(context, value, index, list); + }); + return results; + }; + + var reduceError = 'Reduce of empty array with no initial value'; + + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available. + _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) { + var initial = arguments.length > 2; + if (obj == null) obj = []; + if (nativeReduce && obj.reduce === nativeReduce) { + if (context) iterator = _.bind(iterator, context); + return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator); + } + each(obj, function(value, index, list) { + if (!initial) { + memo = value; + initial = true; + } else { + memo = iterator.call(context, memo, value, index, list); + } + }); + if (!initial) throw new TypeError(reduceError); + return memo; + }; + + // The right-associative version of reduce, also known as `foldr`. + // Delegates to **ECMAScript 5**'s native `reduceRight` if available. + _.reduceRight = _.foldr = function(obj, iterator, memo, context) { + var initial = arguments.length > 2; + if (obj == null) obj = []; + if (nativeReduceRight && obj.reduceRight === nativeReduceRight) { + if (context) iterator = _.bind(iterator, context); + return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator); + } + var length = obj.length; + if (length !== +length) { + var keys = _.keys(obj); + length = keys.length; + } + each(obj, function(value, index, list) { + index = keys ? keys[--length] : --length; + if (!initial) { + memo = obj[index]; + initial = true; + } else { + memo = iterator.call(context, memo, obj[index], index, list); + } + }); + if (!initial) throw new TypeError(reduceError); + return memo; + }; + + // Return the first value which passes a truth test. Aliased as `detect`. + _.find = _.detect = function(obj, iterator, context) { + var result; + any(obj, function(value, index, list) { + if (iterator.call(context, value, index, list)) { + result = value; + return true; + } + }); + return result; + }; + + // Return all the elements that pass a truth test. + // Delegates to **ECMAScript 5**'s native `filter` if available. + // Aliased as `select`. + _.filter = _.select = function(obj, iterator, context) { + var results = []; + if (obj == null) return results; + if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context); + each(obj, function(value, index, list) { + if (iterator.call(context, value, index, list)) results[results.length] = value; + }); + return results; + }; + + // Return all the elements for which a truth test fails. + _.reject = function(obj, iterator, context) { + return _.filter(obj, function(value, index, list) { + return !iterator.call(context, value, index, list); + }, context); + }; + + // Determine whether all of the elements match a truth test. + // Delegates to **ECMAScript 5**'s native `every` if available. + // Aliased as `all`. + _.every = _.all = function(obj, iterator, context) { + iterator || (iterator = _.identity); + var result = true; + if (obj == null) return result; + if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context); + each(obj, function(value, index, list) { + if (!(result = result && iterator.call(context, value, index, list))) return breaker; + }); + return !!result; + }; + + // Determine if at least one element in the object matches a truth test. + // Delegates to **ECMAScript 5**'s native `some` if available. + // Aliased as `any`. + var any = _.some = _.any = function(obj, iterator, context) { + iterator || (iterator = _.identity); + var result = false; + if (obj == null) return result; + if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context); + each(obj, function(value, index, list) { + if (result || (result = iterator.call(context, value, index, list))) return breaker; + }); + return !!result; + }; + + // Determine if the array or object contains a given value (using `===`). + // Aliased as `include`. + _.contains = _.include = function(obj, target) { + if (obj == null) return false; + if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; + return any(obj, function(value) { + return value === target; + }); + }; + + // Invoke a method (with arguments) on every item in a collection. + _.invoke = function(obj, method) { + var args = slice.call(arguments, 2); + var isFunc = _.isFunction(method); + return _.map(obj, function(value) { + return (isFunc ? method : value[method]).apply(value, args); + }); + }; + + // Convenience version of a common use case of `map`: fetching a property. + _.pluck = function(obj, key) { + return _.map(obj, function(value){ return value[key]; }); + }; + + // Convenience version of a common use case of `filter`: selecting only objects + // containing specific `key:value` pairs. + _.where = function(obj, attrs, first) { + if (_.isEmpty(attrs)) return first ? null : []; + return _[first ? 'find' : 'filter'](obj, function(value) { + for (var key in attrs) { + if (attrs[key] !== value[key]) return false; + } + return true; + }); + }; + + // Convenience version of a common use case of `find`: getting the first object + // containing specific `key:value` pairs. + _.findWhere = function(obj, attrs) { + return _.where(obj, attrs, true); + }; + + // Return the maximum element or (element-based computation). + // Can't optimize arrays of integers longer than 65,535 elements. + // See: https://bugs.webkit.org/show_bug.cgi?id=80797 + _.max = function(obj, iterator, context) { + if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { + return Math.max.apply(Math, obj); + } + if (!iterator && _.isEmpty(obj)) return -Infinity; + var result = {computed : -Infinity, value: -Infinity}; + each(obj, function(value, index, list) { + var computed = iterator ? iterator.call(context, value, index, list) : value; + computed >= result.computed && (result = {value : value, computed : computed}); + }); + return result.value; + }; + + // Return the minimum element (or element-based computation). + _.min = function(obj, iterator, context) { + if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { + return Math.min.apply(Math, obj); + } + if (!iterator && _.isEmpty(obj)) return Infinity; + var result = {computed : Infinity, value: Infinity}; + each(obj, function(value, index, list) { + var computed = iterator ? iterator.call(context, value, index, list) : value; + computed < result.computed && (result = {value : value, computed : computed}); + }); + return result.value; + }; + + // Shuffle an array. + _.shuffle = function(obj) { + var rand; + var index = 0; + var shuffled = []; + each(obj, function(value) { + rand = _.random(index++); + shuffled[index - 1] = shuffled[rand]; + shuffled[rand] = value; + }); + return shuffled; + }; + + // An internal function to generate lookup iterators. + var lookupIterator = function(value) { + return _.isFunction(value) ? value : function(obj){ return obj[value]; }; + }; + + // Sort the object's values by a criterion produced by an iterator. + _.sortBy = function(obj, value, context) { + var iterator = lookupIterator(value); + return _.pluck(_.map(obj, function(value, index, list) { + return { + value : value, + index : index, + criteria : iterator.call(context, value, index, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index < right.index ? -1 : 1; + }), 'value'); + }; + + // An internal function used for aggregate "group by" operations. + var group = function(obj, value, context, behavior) { + var result = {}; + var iterator = lookupIterator(value || _.identity); + each(obj, function(value, index) { + var key = iterator.call(context, value, index, obj); + behavior(result, key, value); + }); + return result; + }; + + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + _.groupBy = function(obj, value, context) { + return group(obj, value, context, function(result, key, value) { + (_.has(result, key) ? result[key] : (result[key] = [])).push(value); + }); + }; + + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + _.countBy = function(obj, value, context) { + return group(obj, value, context, function(result, key) { + if (!_.has(result, key)) result[key] = 0; + result[key]++; + }); + }; + + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + _.sortedIndex = function(array, obj, iterator, context) { + iterator = iterator == null ? _.identity : lookupIterator(iterator); + var value = iterator.call(context, obj); + var low = 0, high = array.length; + while (low < high) { + var mid = (low + high) >>> 1; + iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid; + } + return low; + }; + + // Safely convert anything iterable into a real, live array. + _.toArray = function(obj) { + if (!obj) return []; + if (_.isArray(obj)) return slice.call(obj); + if (obj.length === +obj.length) return _.map(obj, _.identity); + return _.values(obj); + }; + + // Return the number of elements in an object. + _.size = function(obj) { + if (obj == null) return 0; + return (obj.length === +obj.length) ? obj.length : _.keys(obj).length; + }; + + // Array Functions + // --------------- + + // Get the first element of an array. Passing **n** will return the first N + // values in the array. Aliased as `head` and `take`. The **guard** check + // allows it to work with `_.map`. + _.first = _.head = _.take = function(array, n, guard) { + if (array == null) return void 0; + return (n != null) && !guard ? slice.call(array, 0, n) : array[0]; + }; + + // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. The **guard** check allows it to work with + // `_.map`. + _.initial = function(array, n, guard) { + return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n)); + }; + + // Get the last element of an array. Passing **n** will return the last N + // values in the array. The **guard** check allows it to work with `_.map`. + _.last = function(array, n, guard) { + if (array == null) return void 0; + if ((n != null) && !guard) { + return slice.call(array, Math.max(array.length - n, 0)); + } else { + return array[array.length - 1]; + } + }; + + // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. + // Especially useful on the arguments object. Passing an **n** will return + // the rest N values in the array. The **guard** + // check allows it to work with `_.map`. + _.rest = _.tail = _.drop = function(array, n, guard) { + return slice.call(array, (n == null) || guard ? 1 : n); + }; + + // Trim out all falsy values from an array. + _.compact = function(array) { + return _.filter(array, _.identity); + }; + + // Internal implementation of a recursive `flatten` function. + var flatten = function(input, shallow, output) { + each(input, function(value) { + if (_.isArray(value)) { + shallow ? push.apply(output, value) : flatten(value, shallow, output); + } else { + output.push(value); + } + }); + return output; + }; + + // Return a completely flattened version of an array. + _.flatten = function(array, shallow) { + return flatten(array, shallow, []); + }; + + // Return a version of the array that does not contain the specified value(s). + _.without = function(array) { + return _.difference(array, slice.call(arguments, 1)); + }; + + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // Aliased as `unique`. + _.uniq = _.unique = function(array, isSorted, iterator, context) { + if (_.isFunction(isSorted)) { + context = iterator; + iterator = isSorted; + isSorted = false; + } + var initial = iterator ? _.map(array, iterator, context) : array; + var results = []; + var seen = []; + each(initial, function(value, index) { + if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) { + seen.push(value); + results.push(array[index]); + } + }); + return results; + }; + + // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. + _.union = function() { + return _.uniq(concat.apply(ArrayProto, arguments)); + }; + + // Produce an array that contains every item shared between all the + // passed-in arrays. + _.intersection = function(array) { + var rest = slice.call(arguments, 1); + return _.filter(_.uniq(array), function(item) { + return _.every(rest, function(other) { + return _.indexOf(other, item) >= 0; + }); + }); + }; + + // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. + _.difference = function(array) { + var rest = concat.apply(ArrayProto, slice.call(arguments, 1)); + return _.filter(array, function(value){ return !_.contains(rest, value); }); + }; + + // Zip together multiple lists into a single array -- elements that share + // an index go together. + _.zip = function() { + var args = slice.call(arguments); + var length = _.max(_.pluck(args, 'length')); + var results = new Array(length); + for (var i = 0; i < length; i++) { + results[i] = _.pluck(args, "" + i); + } + return results; + }; + + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. + _.object = function(list, values) { + if (list == null) return {}; + var result = {}; + for (var i = 0, l = list.length; i < l; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + }; + + // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**), + // we need this function. Return the position of the first occurrence of an + // item in an array, or -1 if the item is not included in the array. + // Delegates to **ECMAScript 5**'s native `indexOf` if available. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + _.indexOf = function(array, item, isSorted) { + if (array == null) return -1; + var i = 0, l = array.length; + if (isSorted) { + if (typeof isSorted == 'number') { + i = (isSorted < 0 ? Math.max(0, l + isSorted) : isSorted); + } else { + i = _.sortedIndex(array, item); + return array[i] === item ? i : -1; + } + } + if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted); + for (; i < l; i++) if (array[i] === item) return i; + return -1; + }; + + // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available. + _.lastIndexOf = function(array, item, from) { + if (array == null) return -1; + var hasIndex = from != null; + if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) { + return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item); + } + var i = (hasIndex ? from : array.length); + while (i--) if (array[i] === item) return i; + return -1; + }; + + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](http://docs.python.org/library/functions.html#range). + _.range = function(start, stop, step) { + if (arguments.length <= 1) { + stop = start || 0; + start = 0; + } + step = arguments[2] || 1; + + var len = Math.max(Math.ceil((stop - start) / step), 0); + var idx = 0; + var range = new Array(len); + + while(idx < len) { + range[idx++] = start; + start += step; + } + + return range; + }; + + // Function (ahem) Functions + // ------------------ + + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if + // available. + _.bind = function(func, context) { + if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); + var args = slice.call(arguments, 2); + return function() { + return func.apply(context, args.concat(slice.call(arguments))); + }; + }; + + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. + _.partial = function(func) { + var args = slice.call(arguments, 1); + return function() { + return func.apply(this, args.concat(slice.call(arguments))); + }; + }; + + // Bind all of an object's methods to that object. Useful for ensuring that + // all callbacks defined on an object belong to it. + _.bindAll = function(obj) { + var funcs = slice.call(arguments, 1); + if (funcs.length === 0) funcs = _.functions(obj); + each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); }); + return obj; + }; + + // Memoize an expensive function by storing its results. + _.memoize = function(func, hasher) { + var memo = {}; + hasher || (hasher = _.identity); + return function() { + var key = hasher.apply(this, arguments); + return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments)); + }; + }; + + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + _.delay = function(func, wait) { + var args = slice.call(arguments, 2); + return setTimeout(function(){ return func.apply(null, args); }, wait); + }; + + // Defers a function, scheduling it to run after the current call stack has + // cleared. + _.defer = function(func) { + return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); + }; + + // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. + _.throttle = function(func, wait) { + var context, args, timeout, result; + var previous = 0; + var later = function() { + previous = new Date; + timeout = null; + result = func.apply(context, args); + }; + return function() { + var now = new Date; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + } else if (!timeout) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }; + + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + _.debounce = function(func, wait, immediate) { + var timeout, result; + return function() { + var context = this, args = arguments; + var later = function() { + timeout = null; + if (!immediate) result = func.apply(context, args); + }; + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) result = func.apply(context, args); + return result; + }; + }; + + // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. + _.once = function(func) { + var ran = false, memo; + return function() { + if (ran) return memo; + ran = true; + memo = func.apply(this, arguments); + func = null; + return memo; + }; + }; + + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + _.wrap = function(func, wrapper) { + return function() { + var args = [func]; + push.apply(args, arguments); + return wrapper.apply(this, args); + }; + }; + + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + _.compose = function() { + var funcs = arguments; + return function() { + var args = arguments; + for (var i = funcs.length - 1; i >= 0; i--) { + args = [funcs[i].apply(this, args)]; + } + return args[0]; + }; + }; + + // Returns a function that will only be executed after being called N times. + _.after = function(times, func) { + if (times <= 0) return func(); + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + }; + + // Object Functions + // ---------------- + + // Retrieve the names of an object's properties. + // Delegates to **ECMAScript 5**'s native `Object.keys` + _.keys = nativeKeys || function(obj) { + if (obj !== Object(obj)) throw new TypeError('Invalid object'); + var keys = []; + for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key; + return keys; + }; + + // Retrieve the values of an object's properties. + _.values = function(obj) { + var values = []; + for (var key in obj) if (_.has(obj, key)) values.push(obj[key]); + return values; + }; + + // Convert an object into a list of `[key, value]` pairs. + _.pairs = function(obj) { + var pairs = []; + for (var key in obj) if (_.has(obj, key)) pairs.push([key, obj[key]]); + return pairs; + }; + + // Invert the keys and values of an object. The values must be serializable. + _.invert = function(obj) { + var result = {}; + for (var key in obj) if (_.has(obj, key)) result[obj[key]] = key; + return result; + }; + + // Return a sorted list of the function names available on the object. + // Aliased as `methods` + _.functions = _.methods = function(obj) { + var names = []; + for (var key in obj) { + if (_.isFunction(obj[key])) names.push(key); + } + return names.sort(); + }; + + // Extend a given object with all the properties in passed-in object(s). + _.extend = function(obj) { + each(slice.call(arguments, 1), function(source) { + if (source) { + for (var prop in source) { + obj[prop] = source[prop]; + } + } + }); + return obj; + }; + + // Return a copy of the object only containing the whitelisted properties. + _.pick = function(obj) { + var copy = {}; + var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); + each(keys, function(key) { + if (key in obj) copy[key] = obj[key]; + }); + return copy; + }; + + // Return a copy of the object without the blacklisted properties. + _.omit = function(obj) { + var copy = {}; + var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); + for (var key in obj) { + if (!_.contains(keys, key)) copy[key] = obj[key]; + } + return copy; + }; + + // Fill in a given object with default properties. + _.defaults = function(obj) { + each(slice.call(arguments, 1), function(source) { + if (source) { + for (var prop in source) { + if (obj[prop] == null) obj[prop] = source[prop]; + } + } + }); + return obj; + }; + + // Create a (shallow-cloned) duplicate of an object. + _.clone = function(obj) { + if (!_.isObject(obj)) return obj; + return _.isArray(obj) ? obj.slice() : _.extend({}, obj); + }; + + // Invokes interceptor with the obj, and then returns obj. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + _.tap = function(obj, interceptor) { + interceptor(obj); + return obj; + }; + + // Internal recursive comparison function for `isEqual`. + var eq = function(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal. + if (a === b) return a !== 0 || 1 / a == 1 / b; + // A strict comparison is necessary because `null == undefined`. + if (a == null || b == null) return a === b; + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className != toString.call(b)) return false; + switch (className) { + // Strings, numbers, dates, and booleans are compared by value. + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return a == String(b); + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for + // other numeric values. + return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b); + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a == +b; + // RegExps are compared by their source patterns and flags. + case '[object RegExp]': + return a.source == b.source && + a.global == b.global && + a.multiline == b.multiline && + a.ignoreCase == b.ignoreCase; + } + if (typeof a != 'object' || typeof b != 'object') return false; + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] == a) return bStack[length] == b; + } + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + var size = 0, result = true; + // Recursively compare objects and arrays. + if (className == '[object Array]') { + // Compare array lengths to determine if a deep comparison is necessary. + size = a.length; + result = size == b.length; + if (result) { + // Deep compare the contents, ignoring non-numeric properties. + while (size--) { + if (!(result = eq(a[size], b[size], aStack, bStack))) break; + } + } + } else { + // Objects with different constructors are not equivalent, but `Object`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) && + _.isFunction(bCtor) && (bCtor instanceof bCtor))) { + return false; + } + // Deep compare objects. + for (var key in a) { + if (_.has(a, key)) { + // Count the expected number of properties. + size++; + // Deep compare each member. + if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break; + } + } + // Ensure that both objects contain the same number of properties. + if (result) { + for (key in b) { + if (_.has(b, key) && !(size--)) break; + } + result = !size; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return result; + }; + + // Perform a deep comparison to check if two objects are equal. + _.isEqual = function(a, b) { + return eq(a, b, [], []); + }; + + // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. + _.isEmpty = function(obj) { + if (obj == null) return true; + if (_.isArray(obj) || _.isString(obj)) return obj.length === 0; + for (var key in obj) if (_.has(obj, key)) return false; + return true; + }; + + // Is a given value a DOM element? + _.isElement = function(obj) { + return !!(obj && obj.nodeType === 1); + }; + + // Is a given value an array? + // Delegates to ECMA5's native Array.isArray + _.isArray = nativeIsArray || function(obj) { + return toString.call(obj) == '[object Array]'; + }; + + // Is a given variable an object? + _.isObject = function(obj) { + return obj === Object(obj); + }; + + // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp. + each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) { + _['is' + name] = function(obj) { + return toString.call(obj) == '[object ' + name + ']'; + }; + }); + + // Define a fallback version of the method in browsers (ahem, IE), where + // there isn't any inspectable "Arguments" type. + if (!_.isArguments(arguments)) { + _.isArguments = function(obj) { + return !!(obj && _.has(obj, 'callee')); + }; + } + + // Optimize `isFunction` if appropriate. + if (typeof (/./) !== 'function') { + _.isFunction = function(obj) { + return typeof obj === 'function'; + }; + } + + // Is a given object a finite number? + _.isFinite = function(obj) { + return isFinite(obj) && !isNaN(parseFloat(obj)); + }; + + // Is the given value `NaN`? (NaN is the only number which does not equal itself). + _.isNaN = function(obj) { + return _.isNumber(obj) && obj != +obj; + }; + + // Is a given value a boolean? + _.isBoolean = function(obj) { + return obj === true || obj === false || toString.call(obj) == '[object Boolean]'; + }; + + // Is a given value equal to null? + _.isNull = function(obj) { + return obj === null; + }; + + // Is a given variable undefined? + _.isUndefined = function(obj) { + return obj === void 0; + }; + + // Shortcut function for checking if an object has a given property directly + // on itself (in other words, not on a prototype). + _.has = function(obj, key) { + return hasOwnProperty.call(obj, key); + }; + + // Utility Functions + // ----------------- + + // Run Underscore.js in *noConflict* mode, returning the `_` variable to its + // previous owner. Returns a reference to the Underscore object. + _.noConflict = function() { + root._ = previousUnderscore; + return this; + }; + + // Keep the identity function around for default iterators. + _.identity = function(value) { + return value; + }; + + // Run a function **n** times. + _.times = function(n, iterator, context) { + var accum = Array(n); + for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i); + return accum; + }; + + // Return a random integer between min and max (inclusive). + _.random = function(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); + }; + + // List of HTML entities for escaping. + var entityMap = { + escape: { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '/': '/' + } + }; + entityMap.unescape = _.invert(entityMap.escape); + + // Regexes containing the keys and values listed immediately above. + var entityRegexes = { + escape: new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'), + unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g') + }; + + // Functions for escaping and unescaping strings to/from HTML interpolation. + _.each(['escape', 'unescape'], function(method) { + _[method] = function(string) { + if (string == null) return ''; + return ('' + string).replace(entityRegexes[method], function(match) { + return entityMap[method][match]; + }); + }; + }); + + // If the value of the named property is a function then invoke it; + // otherwise, return it. + _.result = function(object, property) { + if (object == null) return null; + var value = object[property]; + return _.isFunction(value) ? value.call(object) : value; + }; + + // Add your own custom functions to the Underscore object. + _.mixin = function(obj) { + each(_.functions(obj), function(name){ + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return result.call(this, func.apply(_, args)); + }; + }); + }; + + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + _.uniqueId = function(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\t': 't', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + _.template = function(text, data, settings) { + var render; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = new RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset) + .replace(escaper, function(match) { return '\\' + escapes[match]; }); + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } + if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } + if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + index = offset + match.length; + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + "return __p;\n"; + + try { + render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + if (data) return render(data, _); + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled function source as a convenience for precompilation. + template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}'; + + return template; + }; + + // Add a "chain" function, which will delegate to the wrapper. + _.chain = function(obj) { + return _(obj).chain(); + }; + + // OOP + // --------------- + // If Underscore is called as a function, it returns a wrapped object that + // can be used OO-style. This wrapper holds altered versions of all the + // underscore functions. Wrapped objects may be chained. + + // Helper function to continue chaining intermediate results. + var result = function(obj) { + return this._chain ? _(obj).chain() : obj; + }; + + // Add all of the Underscore functions to the wrapper object. + _.mixin(_); + + // Add all mutator Array functions to the wrapper. + each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + method.apply(obj, arguments); + if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0]; + return result.call(this, obj); + }; + }); + + // Add all accessor Array functions to the wrapper. + each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + return result.call(this, method.apply(this._wrapped, arguments)); + }; + }); + + _.extend(_.prototype, { + + // Start chaining a wrapped Underscore object. + chain: function() { + this._chain = true; + return this; + }, + + // Extracts the result from a wrapped and chained object. + value: function() { + return this._wrapped; + } + + }); + +}).call(this); diff --git a/links.txt b/links.txt index 89eeb9f..4f2f73d 100644 --- a/links.txt +++ b/links.txt @@ -26,8 +26,8 @@ .. Other organizations .. _Alfred P. Sloan Foundation: http://www.sloan.org .. _Enthought inc: -.. _Enthought: http://www.enthought.co -.. _Enthought Python Distribution: http://www.enthought.com/products/epd.php +.. _Enthought: http://www.enthought.com +.. _Enthought Canopy: http://www.enthought.com/products/canopy/ .. _numfocus: http://numfocus.org .. _HPCMP: http://www.hpcmo.hpc.mil .. _ERDC: http://www.erdc.usace.army.mil diff --git a/presentation.html b/presentation.html index f7090d0..261b051 100644 --- a/presentation.html +++ b/presentation.html @@ -220,7 +220,28 @@

      Support IPython

      Presentations on IPythonΒΆ

      We have given a number of talks and presentations about IPython:

      -

      2012ΒΆ

      +

      2014ΒΆ

      +
        +
      • Fernando gave a keynote address at PyCon 2014 entitled Python and Science: +How OSS and Python are transforming science. The video is availible on the PyCon 2014 YouTube site.
      • +
      • At PyCon 2014 there was also a tutorial IPython in depth: high productivity +interactive and parallel python. The entire 3 hour long tutorial can be viewed +here.
      • +
      +
      +
      +

      2013ΒΆ

      +
        +
      • Fernando’s SciPy 2013 Keynote entitled IPython: from the shell to a book with +a single tool...the method behind the madness can be viewed on YouTube.
      • +
      • The SciPy tutorial IPython in Depth is also available: +Part 1, +Part 2, +Part 3.
      • +
      +
      +
      +

      2012ΒΆ

      -
      -

      2011ΒΆ

      +
      +

      2011ΒΆ

      -
      -

      2010ΒΆ

      +
      +

      2010ΒΆ

      -
      -

      2009ΒΆ

      +
      +

      2009ΒΆ

      -
      -

      2008ΒΆ

      +
      +

      2008ΒΆ

      • A talk at 23andMe where Fernando spoke about ipython in general, with some details about its facilities for distributed computing.
      -
      -

      2007ΒΆ

      +
      +

      2007ΒΆ

      -
      -

      2006ΒΆ

      +
      +

      2006ΒΆ

      -
      -

      2005ΒΆ

      +
      +

      2005ΒΆ

      -
      -

      2004ΒΆ

      +
      +

      2004ΒΆ

      • A talk at SciPy‘04.
      -
      -

      2003ΒΆ

      +
      +

      2003ΒΆ

      diff --git a/sponsors.html b/sponsors.html index e054dff..ef17593 100644 --- a/sponsors.html +++ b/sponsors.html @@ -247,10 +247,10 @@

      Other supportHPCMP), which funds several IPython developers in collaboration with the US Army Engineer Research and Development Center (ERDC) that provides computing resources and support from the staff. -
    • Enthought Inc has supported IPython since its beginning in multiple forms, +
    • Enthought Inc has supported IPython since its beginning in multiple forms, including –but not limited to– the funding of our Qt console, hosting our website for many years, the continued hosting of our mailing lists, and the -inclusion of IPython in the Enthought Python Distribution.
    • +inclusion of IPython in Enthought Canopy.
    • NiPy/NIH: funding via the NiPy project (NIH grant 5R01MH081909-02) supported our 2009 refactoring work.
    • Sage/NSF: funding via the grant Sage: Unifying Mathematical Software for From e0be64992283a374d2e430b477fd60e77aeb8877 Mon Sep 17 00:00:00 2001 From: MinRK Date: Sat, 12 Jul 2014 21:39:05 -0700 Subject: [PATCH 027/146] Updated website (automated commit) --- _sources/index.txt | 8 +- _static/underscore.js | 1257 +---------------------------------------- index.html | 4 +- 3 files changed, 37 insertions(+), 1232 deletions(-) diff --git a/_sources/index.txt b/_sources/index.txt index d0a7e01..05f88a1 100644 --- a/_sources/index.txt +++ b/_sources/index.txt @@ -38,13 +38,13 @@ and scripting in `Bash, Perl or Ruby`_. .. _Haskell: https://github.com/gibiansky/IHaskell -.. _cython: http://nbviewer.ipython.org/url/github.com/ipython/ipython/raw/master/examples/notebooks/Cython%20Magics.ipynb +.. _cython: http://docs.cython.org/src/quickstart/build.html#using-the-ipython-notebook -.. _R: http://nbviewer.ipython.org/url/github.com/ipython/ipython/raw/master/examples/notebooks/R%20Magics.ipynb +.. _R: http://rpy.sourceforge.net/rpy2/doc-2.4/html/interactive.html#module-rpy2.ipython.rmagic -.. _Octave: http://nbviewer.ipython.org/url/github.com/ipython/ipython/raw/master/examples/notebooks/Octave%20Magic.ipynb +.. _Octave: http://nbviewer.ipython.org/github/blink1073/oct2py/blob/master/example/octavemagic_extension.ipynb -.. _Bash, Perl or Ruby: http://nbviewer.ipython.org/url/github.com/ipython/ipython/raw/master/examples/notebooks/Script%20Magics.ipynb +.. _Bash, Perl or Ruby: http://nbviewer.ipython.org/github/ipython/ipython/blob/master/examples/IPython%20Kernel/Script%20Magics.ipynb To get started with the IPython Notebook, see our `official example collection`_. Our `notebook gallery`__ is an excellent way to see the many diff --git a/_static/underscore.js b/_static/underscore.js index a12f0d9..5b55f32 100644 --- a/_static/underscore.js +++ b/_static/underscore.js @@ -1,1226 +1,31 @@ -// Underscore.js 1.4.4 -// http://underscorejs.org -// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc. -// Underscore may be freely distributed under the MIT license. - -(function() { - - // Baseline setup - // -------------- - - // Establish the root object, `window` in the browser, or `global` on the server. - var root = this; - - // Save the previous value of the `_` variable. - var previousUnderscore = root._; - - // Establish the object that gets returned to break out of a loop iteration. - var breaker = {}; - - // Save bytes in the minified (but not gzipped) version: - var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; - - // Create quick reference variables for speed access to core prototypes. - var push = ArrayProto.push, - slice = ArrayProto.slice, - concat = ArrayProto.concat, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; - - // All **ECMAScript 5** native function implementations that we hope to use - // are declared here. - var - nativeForEach = ArrayProto.forEach, - nativeMap = ArrayProto.map, - nativeReduce = ArrayProto.reduce, - nativeReduceRight = ArrayProto.reduceRight, - nativeFilter = ArrayProto.filter, - nativeEvery = ArrayProto.every, - nativeSome = ArrayProto.some, - nativeIndexOf = ArrayProto.indexOf, - nativeLastIndexOf = ArrayProto.lastIndexOf, - nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeBind = FuncProto.bind; - - // Create a safe reference to the Underscore object for use below. - var _ = function(obj) { - if (obj instanceof _) return obj; - if (!(this instanceof _)) return new _(obj); - this._wrapped = obj; - }; - - // Export the Underscore object for **Node.js**, with - // backwards-compatibility for the old `require()` API. If we're in - // the browser, add `_` as a global object via a string identifier, - // for Closure Compiler "advanced" mode. - if (typeof exports !== 'undefined') { - if (typeof module !== 'undefined' && module.exports) { - exports = module.exports = _; - } - exports._ = _; - } else { - root._ = _; - } - - // Current version. - _.VERSION = '1.4.4'; - - // Collection Functions - // -------------------- - - // The cornerstone, an `each` implementation, aka `forEach`. - // Handles objects with the built-in `forEach`, arrays, and raw objects. - // Delegates to **ECMAScript 5**'s native `forEach` if available. - var each = _.each = _.forEach = function(obj, iterator, context) { - if (obj == null) return; - if (nativeForEach && obj.forEach === nativeForEach) { - obj.forEach(iterator, context); - } else if (obj.length === +obj.length) { - for (var i = 0, l = obj.length; i < l; i++) { - if (iterator.call(context, obj[i], i, obj) === breaker) return; - } - } else { - for (var key in obj) { - if (_.has(obj, key)) { - if (iterator.call(context, obj[key], key, obj) === breaker) return; - } - } - } - }; - - // Return the results of applying the iterator to each element. - // Delegates to **ECMAScript 5**'s native `map` if available. - _.map = _.collect = function(obj, iterator, context) { - var results = []; - if (obj == null) return results; - if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); - each(obj, function(value, index, list) { - results[results.length] = iterator.call(context, value, index, list); - }); - return results; - }; - - var reduceError = 'Reduce of empty array with no initial value'; - - // **Reduce** builds up a single result from a list of values, aka `inject`, - // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available. - _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) { - var initial = arguments.length > 2; - if (obj == null) obj = []; - if (nativeReduce && obj.reduce === nativeReduce) { - if (context) iterator = _.bind(iterator, context); - return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator); - } - each(obj, function(value, index, list) { - if (!initial) { - memo = value; - initial = true; - } else { - memo = iterator.call(context, memo, value, index, list); - } - }); - if (!initial) throw new TypeError(reduceError); - return memo; - }; - - // The right-associative version of reduce, also known as `foldr`. - // Delegates to **ECMAScript 5**'s native `reduceRight` if available. - _.reduceRight = _.foldr = function(obj, iterator, memo, context) { - var initial = arguments.length > 2; - if (obj == null) obj = []; - if (nativeReduceRight && obj.reduceRight === nativeReduceRight) { - if (context) iterator = _.bind(iterator, context); - return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator); - } - var length = obj.length; - if (length !== +length) { - var keys = _.keys(obj); - length = keys.length; - } - each(obj, function(value, index, list) { - index = keys ? keys[--length] : --length; - if (!initial) { - memo = obj[index]; - initial = true; - } else { - memo = iterator.call(context, memo, obj[index], index, list); - } - }); - if (!initial) throw new TypeError(reduceError); - return memo; - }; - - // Return the first value which passes a truth test. Aliased as `detect`. - _.find = _.detect = function(obj, iterator, context) { - var result; - any(obj, function(value, index, list) { - if (iterator.call(context, value, index, list)) { - result = value; - return true; - } - }); - return result; - }; - - // Return all the elements that pass a truth test. - // Delegates to **ECMAScript 5**'s native `filter` if available. - // Aliased as `select`. - _.filter = _.select = function(obj, iterator, context) { - var results = []; - if (obj == null) return results; - if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context); - each(obj, function(value, index, list) { - if (iterator.call(context, value, index, list)) results[results.length] = value; - }); - return results; - }; - - // Return all the elements for which a truth test fails. - _.reject = function(obj, iterator, context) { - return _.filter(obj, function(value, index, list) { - return !iterator.call(context, value, index, list); - }, context); - }; - - // Determine whether all of the elements match a truth test. - // Delegates to **ECMAScript 5**'s native `every` if available. - // Aliased as `all`. - _.every = _.all = function(obj, iterator, context) { - iterator || (iterator = _.identity); - var result = true; - if (obj == null) return result; - if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context); - each(obj, function(value, index, list) { - if (!(result = result && iterator.call(context, value, index, list))) return breaker; - }); - return !!result; - }; - - // Determine if at least one element in the object matches a truth test. - // Delegates to **ECMAScript 5**'s native `some` if available. - // Aliased as `any`. - var any = _.some = _.any = function(obj, iterator, context) { - iterator || (iterator = _.identity); - var result = false; - if (obj == null) return result; - if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context); - each(obj, function(value, index, list) { - if (result || (result = iterator.call(context, value, index, list))) return breaker; - }); - return !!result; - }; - - // Determine if the array or object contains a given value (using `===`). - // Aliased as `include`. - _.contains = _.include = function(obj, target) { - if (obj == null) return false; - if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; - return any(obj, function(value) { - return value === target; - }); - }; - - // Invoke a method (with arguments) on every item in a collection. - _.invoke = function(obj, method) { - var args = slice.call(arguments, 2); - var isFunc = _.isFunction(method); - return _.map(obj, function(value) { - return (isFunc ? method : value[method]).apply(value, args); - }); - }; - - // Convenience version of a common use case of `map`: fetching a property. - _.pluck = function(obj, key) { - return _.map(obj, function(value){ return value[key]; }); - }; - - // Convenience version of a common use case of `filter`: selecting only objects - // containing specific `key:value` pairs. - _.where = function(obj, attrs, first) { - if (_.isEmpty(attrs)) return first ? null : []; - return _[first ? 'find' : 'filter'](obj, function(value) { - for (var key in attrs) { - if (attrs[key] !== value[key]) return false; - } - return true; - }); - }; - - // Convenience version of a common use case of `find`: getting the first object - // containing specific `key:value` pairs. - _.findWhere = function(obj, attrs) { - return _.where(obj, attrs, true); - }; - - // Return the maximum element or (element-based computation). - // Can't optimize arrays of integers longer than 65,535 elements. - // See: https://bugs.webkit.org/show_bug.cgi?id=80797 - _.max = function(obj, iterator, context) { - if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { - return Math.max.apply(Math, obj); - } - if (!iterator && _.isEmpty(obj)) return -Infinity; - var result = {computed : -Infinity, value: -Infinity}; - each(obj, function(value, index, list) { - var computed = iterator ? iterator.call(context, value, index, list) : value; - computed >= result.computed && (result = {value : value, computed : computed}); - }); - return result.value; - }; - - // Return the minimum element (or element-based computation). - _.min = function(obj, iterator, context) { - if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { - return Math.min.apply(Math, obj); - } - if (!iterator && _.isEmpty(obj)) return Infinity; - var result = {computed : Infinity, value: Infinity}; - each(obj, function(value, index, list) { - var computed = iterator ? iterator.call(context, value, index, list) : value; - computed < result.computed && (result = {value : value, computed : computed}); - }); - return result.value; - }; - - // Shuffle an array. - _.shuffle = function(obj) { - var rand; - var index = 0; - var shuffled = []; - each(obj, function(value) { - rand = _.random(index++); - shuffled[index - 1] = shuffled[rand]; - shuffled[rand] = value; - }); - return shuffled; - }; - - // An internal function to generate lookup iterators. - var lookupIterator = function(value) { - return _.isFunction(value) ? value : function(obj){ return obj[value]; }; - }; - - // Sort the object's values by a criterion produced by an iterator. - _.sortBy = function(obj, value, context) { - var iterator = lookupIterator(value); - return _.pluck(_.map(obj, function(value, index, list) { - return { - value : value, - index : index, - criteria : iterator.call(context, value, index, list) - }; - }).sort(function(left, right) { - var a = left.criteria; - var b = right.criteria; - if (a !== b) { - if (a > b || a === void 0) return 1; - if (a < b || b === void 0) return -1; - } - return left.index < right.index ? -1 : 1; - }), 'value'); - }; - - // An internal function used for aggregate "group by" operations. - var group = function(obj, value, context, behavior) { - var result = {}; - var iterator = lookupIterator(value || _.identity); - each(obj, function(value, index) { - var key = iterator.call(context, value, index, obj); - behavior(result, key, value); - }); - return result; - }; - - // Groups the object's values by a criterion. Pass either a string attribute - // to group by, or a function that returns the criterion. - _.groupBy = function(obj, value, context) { - return group(obj, value, context, function(result, key, value) { - (_.has(result, key) ? result[key] : (result[key] = [])).push(value); - }); - }; - - // Counts instances of an object that group by a certain criterion. Pass - // either a string attribute to count by, or a function that returns the - // criterion. - _.countBy = function(obj, value, context) { - return group(obj, value, context, function(result, key) { - if (!_.has(result, key)) result[key] = 0; - result[key]++; - }); - }; - - // Use a comparator function to figure out the smallest index at which - // an object should be inserted so as to maintain order. Uses binary search. - _.sortedIndex = function(array, obj, iterator, context) { - iterator = iterator == null ? _.identity : lookupIterator(iterator); - var value = iterator.call(context, obj); - var low = 0, high = array.length; - while (low < high) { - var mid = (low + high) >>> 1; - iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid; - } - return low; - }; - - // Safely convert anything iterable into a real, live array. - _.toArray = function(obj) { - if (!obj) return []; - if (_.isArray(obj)) return slice.call(obj); - if (obj.length === +obj.length) return _.map(obj, _.identity); - return _.values(obj); - }; - - // Return the number of elements in an object. - _.size = function(obj) { - if (obj == null) return 0; - return (obj.length === +obj.length) ? obj.length : _.keys(obj).length; - }; - - // Array Functions - // --------------- - - // Get the first element of an array. Passing **n** will return the first N - // values in the array. Aliased as `head` and `take`. The **guard** check - // allows it to work with `_.map`. - _.first = _.head = _.take = function(array, n, guard) { - if (array == null) return void 0; - return (n != null) && !guard ? slice.call(array, 0, n) : array[0]; - }; - - // Returns everything but the last entry of the array. Especially useful on - // the arguments object. Passing **n** will return all the values in - // the array, excluding the last N. The **guard** check allows it to work with - // `_.map`. - _.initial = function(array, n, guard) { - return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n)); - }; - - // Get the last element of an array. Passing **n** will return the last N - // values in the array. The **guard** check allows it to work with `_.map`. - _.last = function(array, n, guard) { - if (array == null) return void 0; - if ((n != null) && !guard) { - return slice.call(array, Math.max(array.length - n, 0)); - } else { - return array[array.length - 1]; - } - }; - - // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. - // Especially useful on the arguments object. Passing an **n** will return - // the rest N values in the array. The **guard** - // check allows it to work with `_.map`. - _.rest = _.tail = _.drop = function(array, n, guard) { - return slice.call(array, (n == null) || guard ? 1 : n); - }; - - // Trim out all falsy values from an array. - _.compact = function(array) { - return _.filter(array, _.identity); - }; - - // Internal implementation of a recursive `flatten` function. - var flatten = function(input, shallow, output) { - each(input, function(value) { - if (_.isArray(value)) { - shallow ? push.apply(output, value) : flatten(value, shallow, output); - } else { - output.push(value); - } - }); - return output; - }; - - // Return a completely flattened version of an array. - _.flatten = function(array, shallow) { - return flatten(array, shallow, []); - }; - - // Return a version of the array that does not contain the specified value(s). - _.without = function(array) { - return _.difference(array, slice.call(arguments, 1)); - }; - - // Produce a duplicate-free version of the array. If the array has already - // been sorted, you have the option of using a faster algorithm. - // Aliased as `unique`. - _.uniq = _.unique = function(array, isSorted, iterator, context) { - if (_.isFunction(isSorted)) { - context = iterator; - iterator = isSorted; - isSorted = false; - } - var initial = iterator ? _.map(array, iterator, context) : array; - var results = []; - var seen = []; - each(initial, function(value, index) { - if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) { - seen.push(value); - results.push(array[index]); - } - }); - return results; - }; - - // Produce an array that contains the union: each distinct element from all of - // the passed-in arrays. - _.union = function() { - return _.uniq(concat.apply(ArrayProto, arguments)); - }; - - // Produce an array that contains every item shared between all the - // passed-in arrays. - _.intersection = function(array) { - var rest = slice.call(arguments, 1); - return _.filter(_.uniq(array), function(item) { - return _.every(rest, function(other) { - return _.indexOf(other, item) >= 0; - }); - }); - }; - - // Take the difference between one array and a number of other arrays. - // Only the elements present in just the first array will remain. - _.difference = function(array) { - var rest = concat.apply(ArrayProto, slice.call(arguments, 1)); - return _.filter(array, function(value){ return !_.contains(rest, value); }); - }; - - // Zip together multiple lists into a single array -- elements that share - // an index go together. - _.zip = function() { - var args = slice.call(arguments); - var length = _.max(_.pluck(args, 'length')); - var results = new Array(length); - for (var i = 0; i < length; i++) { - results[i] = _.pluck(args, "" + i); - } - return results; - }; - - // Converts lists into objects. Pass either a single array of `[key, value]` - // pairs, or two parallel arrays of the same length -- one of keys, and one of - // the corresponding values. - _.object = function(list, values) { - if (list == null) return {}; - var result = {}; - for (var i = 0, l = list.length; i < l; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; - } - } - return result; - }; - - // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**), - // we need this function. Return the position of the first occurrence of an - // item in an array, or -1 if the item is not included in the array. - // Delegates to **ECMAScript 5**'s native `indexOf` if available. - // If the array is large and already in sort order, pass `true` - // for **isSorted** to use binary search. - _.indexOf = function(array, item, isSorted) { - if (array == null) return -1; - var i = 0, l = array.length; - if (isSorted) { - if (typeof isSorted == 'number') { - i = (isSorted < 0 ? Math.max(0, l + isSorted) : isSorted); - } else { - i = _.sortedIndex(array, item); - return array[i] === item ? i : -1; - } - } - if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted); - for (; i < l; i++) if (array[i] === item) return i; - return -1; - }; - - // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available. - _.lastIndexOf = function(array, item, from) { - if (array == null) return -1; - var hasIndex = from != null; - if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) { - return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item); - } - var i = (hasIndex ? from : array.length); - while (i--) if (array[i] === item) return i; - return -1; - }; - - // Generate an integer Array containing an arithmetic progression. A port of - // the native Python `range()` function. See - // [the Python documentation](http://docs.python.org/library/functions.html#range). - _.range = function(start, stop, step) { - if (arguments.length <= 1) { - stop = start || 0; - start = 0; - } - step = arguments[2] || 1; - - var len = Math.max(Math.ceil((stop - start) / step), 0); - var idx = 0; - var range = new Array(len); - - while(idx < len) { - range[idx++] = start; - start += step; - } - - return range; - }; - - // Function (ahem) Functions - // ------------------ - - // Create a function bound to a given object (assigning `this`, and arguments, - // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if - // available. - _.bind = function(func, context) { - if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); - var args = slice.call(arguments, 2); - return function() { - return func.apply(context, args.concat(slice.call(arguments))); - }; - }; - - // Partially apply a function by creating a version that has had some of its - // arguments pre-filled, without changing its dynamic `this` context. - _.partial = function(func) { - var args = slice.call(arguments, 1); - return function() { - return func.apply(this, args.concat(slice.call(arguments))); - }; - }; - - // Bind all of an object's methods to that object. Useful for ensuring that - // all callbacks defined on an object belong to it. - _.bindAll = function(obj) { - var funcs = slice.call(arguments, 1); - if (funcs.length === 0) funcs = _.functions(obj); - each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); }); - return obj; - }; - - // Memoize an expensive function by storing its results. - _.memoize = function(func, hasher) { - var memo = {}; - hasher || (hasher = _.identity); - return function() { - var key = hasher.apply(this, arguments); - return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments)); - }; - }; - - // Delays a function for the given number of milliseconds, and then calls - // it with the arguments supplied. - _.delay = function(func, wait) { - var args = slice.call(arguments, 2); - return setTimeout(function(){ return func.apply(null, args); }, wait); - }; - - // Defers a function, scheduling it to run after the current call stack has - // cleared. - _.defer = function(func) { - return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); - }; - - // Returns a function, that, when invoked, will only be triggered at most once - // during a given window of time. - _.throttle = function(func, wait) { - var context, args, timeout, result; - var previous = 0; - var later = function() { - previous = new Date; - timeout = null; - result = func.apply(context, args); - }; - return function() { - var now = new Date; - var remaining = wait - (now - previous); - context = this; - args = arguments; - if (remaining <= 0) { - clearTimeout(timeout); - timeout = null; - previous = now; - result = func.apply(context, args); - } else if (!timeout) { - timeout = setTimeout(later, remaining); - } - return result; - }; - }; - - // Returns a function, that, as long as it continues to be invoked, will not - // be triggered. The function will be called after it stops being called for - // N milliseconds. If `immediate` is passed, trigger the function on the - // leading edge, instead of the trailing. - _.debounce = function(func, wait, immediate) { - var timeout, result; - return function() { - var context = this, args = arguments; - var later = function() { - timeout = null; - if (!immediate) result = func.apply(context, args); - }; - var callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) result = func.apply(context, args); - return result; - }; - }; - - // Returns a function that will be executed at most one time, no matter how - // often you call it. Useful for lazy initialization. - _.once = function(func) { - var ran = false, memo; - return function() { - if (ran) return memo; - ran = true; - memo = func.apply(this, arguments); - func = null; - return memo; - }; - }; - - // Returns the first function passed as an argument to the second, - // allowing you to adjust arguments, run code before and after, and - // conditionally execute the original function. - _.wrap = function(func, wrapper) { - return function() { - var args = [func]; - push.apply(args, arguments); - return wrapper.apply(this, args); - }; - }; - - // Returns a function that is the composition of a list of functions, each - // consuming the return value of the function that follows. - _.compose = function() { - var funcs = arguments; - return function() { - var args = arguments; - for (var i = funcs.length - 1; i >= 0; i--) { - args = [funcs[i].apply(this, args)]; - } - return args[0]; - }; - }; - - // Returns a function that will only be executed after being called N times. - _.after = function(times, func) { - if (times <= 0) return func(); - return function() { - if (--times < 1) { - return func.apply(this, arguments); - } - }; - }; - - // Object Functions - // ---------------- - - // Retrieve the names of an object's properties. - // Delegates to **ECMAScript 5**'s native `Object.keys` - _.keys = nativeKeys || function(obj) { - if (obj !== Object(obj)) throw new TypeError('Invalid object'); - var keys = []; - for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key; - return keys; - }; - - // Retrieve the values of an object's properties. - _.values = function(obj) { - var values = []; - for (var key in obj) if (_.has(obj, key)) values.push(obj[key]); - return values; - }; - - // Convert an object into a list of `[key, value]` pairs. - _.pairs = function(obj) { - var pairs = []; - for (var key in obj) if (_.has(obj, key)) pairs.push([key, obj[key]]); - return pairs; - }; - - // Invert the keys and values of an object. The values must be serializable. - _.invert = function(obj) { - var result = {}; - for (var key in obj) if (_.has(obj, key)) result[obj[key]] = key; - return result; - }; - - // Return a sorted list of the function names available on the object. - // Aliased as `methods` - _.functions = _.methods = function(obj) { - var names = []; - for (var key in obj) { - if (_.isFunction(obj[key])) names.push(key); - } - return names.sort(); - }; - - // Extend a given object with all the properties in passed-in object(s). - _.extend = function(obj) { - each(slice.call(arguments, 1), function(source) { - if (source) { - for (var prop in source) { - obj[prop] = source[prop]; - } - } - }); - return obj; - }; - - // Return a copy of the object only containing the whitelisted properties. - _.pick = function(obj) { - var copy = {}; - var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); - each(keys, function(key) { - if (key in obj) copy[key] = obj[key]; - }); - return copy; - }; - - // Return a copy of the object without the blacklisted properties. - _.omit = function(obj) { - var copy = {}; - var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); - for (var key in obj) { - if (!_.contains(keys, key)) copy[key] = obj[key]; - } - return copy; - }; - - // Fill in a given object with default properties. - _.defaults = function(obj) { - each(slice.call(arguments, 1), function(source) { - if (source) { - for (var prop in source) { - if (obj[prop] == null) obj[prop] = source[prop]; - } - } - }); - return obj; - }; - - // Create a (shallow-cloned) duplicate of an object. - _.clone = function(obj) { - if (!_.isObject(obj)) return obj; - return _.isArray(obj) ? obj.slice() : _.extend({}, obj); - }; - - // Invokes interceptor with the obj, and then returns obj. - // The primary purpose of this method is to "tap into" a method chain, in - // order to perform operations on intermediate results within the chain. - _.tap = function(obj, interceptor) { - interceptor(obj); - return obj; - }; - - // Internal recursive comparison function for `isEqual`. - var eq = function(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal. - if (a === b) return a !== 0 || 1 / a == 1 / b; - // A strict comparison is necessary because `null == undefined`. - if (a == null || b == null) return a === b; - // Unwrap any wrapped objects. - if (a instanceof _) a = a._wrapped; - if (b instanceof _) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className != toString.call(b)) return false; - switch (className) { - // Strings, numbers, dates, and booleans are compared by value. - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return a == String(b); - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for - // other numeric values. - return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b); - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a == +b; - // RegExps are compared by their source patterns and flags. - case '[object RegExp]': - return a.source == b.source && - a.global == b.global && - a.multiline == b.multiline && - a.ignoreCase == b.ignoreCase; - } - if (typeof a != 'object' || typeof b != 'object') return false; - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] == a) return bStack[length] == b; - } - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - var size = 0, result = true; - // Recursively compare objects and arrays. - if (className == '[object Array]') { - // Compare array lengths to determine if a deep comparison is necessary. - size = a.length; - result = size == b.length; - if (result) { - // Deep compare the contents, ignoring non-numeric properties. - while (size--) { - if (!(result = eq(a[size], b[size], aStack, bStack))) break; - } - } - } else { - // Objects with different constructors are not equivalent, but `Object`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) && - _.isFunction(bCtor) && (bCtor instanceof bCtor))) { - return false; - } - // Deep compare objects. - for (var key in a) { - if (_.has(a, key)) { - // Count the expected number of properties. - size++; - // Deep compare each member. - if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break; - } - } - // Ensure that both objects contain the same number of properties. - if (result) { - for (key in b) { - if (_.has(b, key) && !(size--)) break; - } - result = !size; - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return result; - }; - - // Perform a deep comparison to check if two objects are equal. - _.isEqual = function(a, b) { - return eq(a, b, [], []); - }; - - // Is a given array, string, or object empty? - // An "empty" object has no enumerable own-properties. - _.isEmpty = function(obj) { - if (obj == null) return true; - if (_.isArray(obj) || _.isString(obj)) return obj.length === 0; - for (var key in obj) if (_.has(obj, key)) return false; - return true; - }; - - // Is a given value a DOM element? - _.isElement = function(obj) { - return !!(obj && obj.nodeType === 1); - }; - - // Is a given value an array? - // Delegates to ECMA5's native Array.isArray - _.isArray = nativeIsArray || function(obj) { - return toString.call(obj) == '[object Array]'; - }; - - // Is a given variable an object? - _.isObject = function(obj) { - return obj === Object(obj); - }; - - // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp. - each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) { - _['is' + name] = function(obj) { - return toString.call(obj) == '[object ' + name + ']'; - }; - }); - - // Define a fallback version of the method in browsers (ahem, IE), where - // there isn't any inspectable "Arguments" type. - if (!_.isArguments(arguments)) { - _.isArguments = function(obj) { - return !!(obj && _.has(obj, 'callee')); - }; - } - - // Optimize `isFunction` if appropriate. - if (typeof (/./) !== 'function') { - _.isFunction = function(obj) { - return typeof obj === 'function'; - }; - } - - // Is a given object a finite number? - _.isFinite = function(obj) { - return isFinite(obj) && !isNaN(parseFloat(obj)); - }; - - // Is the given value `NaN`? (NaN is the only number which does not equal itself). - _.isNaN = function(obj) { - return _.isNumber(obj) && obj != +obj; - }; - - // Is a given value a boolean? - _.isBoolean = function(obj) { - return obj === true || obj === false || toString.call(obj) == '[object Boolean]'; - }; - - // Is a given value equal to null? - _.isNull = function(obj) { - return obj === null; - }; - - // Is a given variable undefined? - _.isUndefined = function(obj) { - return obj === void 0; - }; - - // Shortcut function for checking if an object has a given property directly - // on itself (in other words, not on a prototype). - _.has = function(obj, key) { - return hasOwnProperty.call(obj, key); - }; - - // Utility Functions - // ----------------- - - // Run Underscore.js in *noConflict* mode, returning the `_` variable to its - // previous owner. Returns a reference to the Underscore object. - _.noConflict = function() { - root._ = previousUnderscore; - return this; - }; - - // Keep the identity function around for default iterators. - _.identity = function(value) { - return value; - }; - - // Run a function **n** times. - _.times = function(n, iterator, context) { - var accum = Array(n); - for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i); - return accum; - }; - - // Return a random integer between min and max (inclusive). - _.random = function(min, max) { - if (max == null) { - max = min; - min = 0; - } - return min + Math.floor(Math.random() * (max - min + 1)); - }; - - // List of HTML entities for escaping. - var entityMap = { - escape: { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '/': '/' - } - }; - entityMap.unescape = _.invert(entityMap.escape); - - // Regexes containing the keys and values listed immediately above. - var entityRegexes = { - escape: new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'), - unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g') - }; - - // Functions for escaping and unescaping strings to/from HTML interpolation. - _.each(['escape', 'unescape'], function(method) { - _[method] = function(string) { - if (string == null) return ''; - return ('' + string).replace(entityRegexes[method], function(match) { - return entityMap[method][match]; - }); - }; - }); - - // If the value of the named property is a function then invoke it; - // otherwise, return it. - _.result = function(object, property) { - if (object == null) return null; - var value = object[property]; - return _.isFunction(value) ? value.call(object) : value; - }; - - // Add your own custom functions to the Underscore object. - _.mixin = function(obj) { - each(_.functions(obj), function(name){ - var func = _[name] = obj[name]; - _.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return result.call(this, func.apply(_, args)); - }; - }); - }; - - // Generate a unique integer id (unique within the entire client session). - // Useful for temporary DOM ids. - var idCounter = 0; - _.uniqueId = function(prefix) { - var id = ++idCounter + ''; - return prefix ? prefix + id : id; - }; - - // By default, Underscore uses ERB-style template delimiters, change the - // following template settings to use alternative delimiters. - _.templateSettings = { - evaluate : /<%([\s\S]+?)%>/g, - interpolate : /<%=([\s\S]+?)%>/g, - escape : /<%-([\s\S]+?)%>/g - }; - - // When customizing `templateSettings`, if you don't want to define an - // interpolation, evaluation or escaping regex, we need one that is - // guaranteed not to match. - var noMatch = /(.)^/; - - // Certain characters need to be escaped so that they can be put into a - // string literal. - var escapes = { - "'": "'", - '\\': '\\', - '\r': 'r', - '\n': 'n', - '\t': 't', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; - - var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g; - - // JavaScript micro-templating, similar to John Resig's implementation. - // Underscore templating handles arbitrary delimiters, preserves whitespace, - // and correctly escapes quotes within interpolated code. - _.template = function(text, data, settings) { - var render; - settings = _.defaults({}, settings, _.templateSettings); - - // Combine delimiters into one regular expression via alternation. - var matcher = new RegExp([ - (settings.escape || noMatch).source, - (settings.interpolate || noMatch).source, - (settings.evaluate || noMatch).source - ].join('|') + '|$', 'g'); - - // Compile the template source, escaping string literals appropriately. - var index = 0; - var source = "__p+='"; - text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { - source += text.slice(index, offset) - .replace(escaper, function(match) { return '\\' + escapes[match]; }); - - if (escape) { - source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; - } - if (interpolate) { - source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; - } - if (evaluate) { - source += "';\n" + evaluate + "\n__p+='"; - } - index = offset + match.length; - return match; - }); - source += "';\n"; - - // If a variable is not specified, place data values in local scope. - if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; - - source = "var __t,__p='',__j=Array.prototype.join," + - "print=function(){__p+=__j.call(arguments,'');};\n" + - source + "return __p;\n"; - - try { - render = new Function(settings.variable || 'obj', '_', source); - } catch (e) { - e.source = source; - throw e; - } - - if (data) return render(data, _); - var template = function(data) { - return render.call(this, data, _); - }; - - // Provide the compiled function source as a convenience for precompilation. - template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}'; - - return template; - }; - - // Add a "chain" function, which will delegate to the wrapper. - _.chain = function(obj) { - return _(obj).chain(); - }; - - // OOP - // --------------- - // If Underscore is called as a function, it returns a wrapped object that - // can be used OO-style. This wrapper holds altered versions of all the - // underscore functions. Wrapped objects may be chained. - - // Helper function to continue chaining intermediate results. - var result = function(obj) { - return this._chain ? _(obj).chain() : obj; - }; - - // Add all of the Underscore functions to the wrapper object. - _.mixin(_); - - // Add all mutator Array functions to the wrapper. - each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _.prototype[name] = function() { - var obj = this._wrapped; - method.apply(obj, arguments); - if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0]; - return result.call(this, obj); - }; - }); - - // Add all accessor Array functions to the wrapper. - each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _.prototype[name] = function() { - return result.call(this, method.apply(this._wrapped, arguments)); - }; - }); - - _.extend(_.prototype, { - - // Start chaining a wrapped Underscore object. - chain: function() { - this._chain = true; - return this; - }, - - // Extracts the result from a wrapped and chained object. - value: function() { - return this._wrapped; - } - - }); - -}).call(this); +// Underscore.js 1.3.1 +// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc. +// Underscore is freely distributable under the MIT license. +// Portions of Underscore are inspired or borrowed from Prototype, +// Oliver Steele's Functional, and John Resig's Micro-Templating. +// For all details and documentation: +// http://documentcloud.github.com/underscore +(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source== +c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c, +h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each= +b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e2;a== +null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect= +function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e= +e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck= +function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;bd?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a, +c,d){d||(d=b.identity);for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e=0;d--)b=[a[d].apply(this,b)];return b[0]}}; +b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments, +1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)}; +b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"}; +b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a), +function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+ +u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]= +function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain= +true;return this};m.prototype.value=function(){return this._wrapped}}).call(this); diff --git a/index.html b/index.html index f13060e..f365c87 100644 --- a/index.html +++ b/index.html @@ -232,8 +232,8 @@

      Support IPython

      clients. We ship the official IPython kernel, but kernels for other languages such as
      Julia and Haskell are actively developed and used. Additionally, the IPython kernel supports multi-language -integration, letting you for example mix Python code with Cython, R, Octave, -and scripting in Bash, Perl or Ruby.

      +integration, letting you for example mix Python code with Cython, R, Octave, +and scripting in Bash, Perl or Ruby.

      To get started with the IPython Notebook, see our official example collection. Our notebook gallery is an excellent way to see the many things you can do with IPython while learning about a variety of topics, from From 859184c7601e96a91adaed2eb2f1ef0b4ac4a522 Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Wed, 6 Aug 2014 16:13:05 -0700 Subject: [PATCH 028/146] Updated website (automated commit) --- _sources/index.txt | 3 +- _sources/news.txt | 7 + _static/underscore.js | 1257 +++++++++++++++++++++++++++++++++- citing.html | 2 +- documentation.html | 2 +- donate.html | 2 +- faq.html | 2 +- index.html | 5 +- install.html | 2 +- microsoft-donation-2013.html | 2 +- news.html | 7 +- notebook.html | 2 +- presentation.html | 2 +- pyreadline.html | 2 +- roadmap-announcement.html | 2 +- screenshots/index.html | 2 +- search.html | 2 +- searchresults.html | 2 +- security.html | 2 +- showmedo.html | 2 +- sloan-grant.html | 2 +- sponsors.html | 2 +- usersurvey2011.html | 2 +- usersurvey2013.html | 2 +- videos.html | 2 +- whatsnew082.html | 2 +- whatsnew083.html | 2 +- 27 files changed, 1266 insertions(+), 57 deletions(-) diff --git a/_sources/index.txt b/_sources/index.txt index 05f88a1..c6da167 100644 --- a/_sources/index.txt +++ b/_sources/index.txt @@ -69,7 +69,8 @@ Python 2.6 and 3.2. Announcements ============= -- **IPython 2.1**: Bugfixes for IPython 2.0. +- **IPython 2.2**: A security and bugfix release for IPython 2.x, released 6th + August 2014. - **IPython 2.0**: We are proud to announce the availability of IPython 2.0, a major new release including HTML widgets and multi-directory navigation. `Install `__ it now, or read about the changes in diff --git a/_sources/news.txt b/_sources/news.txt index d3db0b0..9add934 100644 --- a/_sources/news.txt +++ b/_sources/news.txt @@ -2,6 +2,13 @@ News ==== +IPython 2.2 +----------- + +IPython 2.2 includes bugfixes for 2.2, including a `security fix +`_. It was released on August 6, +2014. + IPython 2.1 ----------- diff --git a/_static/underscore.js b/_static/underscore.js index 5b55f32..a12f0d9 100644 --- a/_static/underscore.js +++ b/_static/underscore.js @@ -1,31 +1,1226 @@ -// Underscore.js 1.3.1 -// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc. -// Underscore is freely distributable under the MIT license. -// Portions of Underscore are inspired or borrowed from Prototype, -// Oliver Steele's Functional, and John Resig's Micro-Templating. -// For all details and documentation: -// http://documentcloud.github.com/underscore -(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source== -c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c, -h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each= -b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e2;a== -null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect= -function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e= -e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck= -function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;bd?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a, -c,d){d||(d=b.identity);for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e=0;d--)b=[a[d].apply(this,b)];return b[0]}}; -b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments, -1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)}; -b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"}; -b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a), -function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+ -u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]= -function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain= -true;return this};m.prototype.value=function(){return this._wrapped}}).call(this); +// Underscore.js 1.4.4 +// http://underscorejs.org +// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc. +// Underscore may be freely distributed under the MIT license. + +(function() { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `global` on the server. + var root = this; + + // Save the previous value of the `_` variable. + var previousUnderscore = root._; + + // Establish the object that gets returned to break out of a loop iteration. + var breaker = {}; + + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; + + // Create quick reference variables for speed access to core prototypes. + var push = ArrayProto.push, + slice = ArrayProto.slice, + concat = ArrayProto.concat, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + + // All **ECMAScript 5** native function implementations that we hope to use + // are declared here. + var + nativeForEach = ArrayProto.forEach, + nativeMap = ArrayProto.map, + nativeReduce = ArrayProto.reduce, + nativeReduceRight = ArrayProto.reduceRight, + nativeFilter = ArrayProto.filter, + nativeEvery = ArrayProto.every, + nativeSome = ArrayProto.some, + nativeIndexOf = ArrayProto.indexOf, + nativeLastIndexOf = ArrayProto.lastIndexOf, + nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeBind = FuncProto.bind; + + // Create a safe reference to the Underscore object for use below. + var _ = function(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; + }; + + // Export the Underscore object for **Node.js**, with + // backwards-compatibility for the old `require()` API. If we're in + // the browser, add `_` as a global object via a string identifier, + // for Closure Compiler "advanced" mode. + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = _; + } + exports._ = _; + } else { + root._ = _; + } + + // Current version. + _.VERSION = '1.4.4'; + + // Collection Functions + // -------------------- + + // The cornerstone, an `each` implementation, aka `forEach`. + // Handles objects with the built-in `forEach`, arrays, and raw objects. + // Delegates to **ECMAScript 5**'s native `forEach` if available. + var each = _.each = _.forEach = function(obj, iterator, context) { + if (obj == null) return; + if (nativeForEach && obj.forEach === nativeForEach) { + obj.forEach(iterator, context); + } else if (obj.length === +obj.length) { + for (var i = 0, l = obj.length; i < l; i++) { + if (iterator.call(context, obj[i], i, obj) === breaker) return; + } + } else { + for (var key in obj) { + if (_.has(obj, key)) { + if (iterator.call(context, obj[key], key, obj) === breaker) return; + } + } + } + }; + + // Return the results of applying the iterator to each element. + // Delegates to **ECMAScript 5**'s native `map` if available. + _.map = _.collect = function(obj, iterator, context) { + var results = []; + if (obj == null) return results; + if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); + each(obj, function(value, index, list) { + results[results.length] = iterator.call(context, value, index, list); + }); + return results; + }; + + var reduceError = 'Reduce of empty array with no initial value'; + + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available. + _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) { + var initial = arguments.length > 2; + if (obj == null) obj = []; + if (nativeReduce && obj.reduce === nativeReduce) { + if (context) iterator = _.bind(iterator, context); + return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator); + } + each(obj, function(value, index, list) { + if (!initial) { + memo = value; + initial = true; + } else { + memo = iterator.call(context, memo, value, index, list); + } + }); + if (!initial) throw new TypeError(reduceError); + return memo; + }; + + // The right-associative version of reduce, also known as `foldr`. + // Delegates to **ECMAScript 5**'s native `reduceRight` if available. + _.reduceRight = _.foldr = function(obj, iterator, memo, context) { + var initial = arguments.length > 2; + if (obj == null) obj = []; + if (nativeReduceRight && obj.reduceRight === nativeReduceRight) { + if (context) iterator = _.bind(iterator, context); + return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator); + } + var length = obj.length; + if (length !== +length) { + var keys = _.keys(obj); + length = keys.length; + } + each(obj, function(value, index, list) { + index = keys ? keys[--length] : --length; + if (!initial) { + memo = obj[index]; + initial = true; + } else { + memo = iterator.call(context, memo, obj[index], index, list); + } + }); + if (!initial) throw new TypeError(reduceError); + return memo; + }; + + // Return the first value which passes a truth test. Aliased as `detect`. + _.find = _.detect = function(obj, iterator, context) { + var result; + any(obj, function(value, index, list) { + if (iterator.call(context, value, index, list)) { + result = value; + return true; + } + }); + return result; + }; + + // Return all the elements that pass a truth test. + // Delegates to **ECMAScript 5**'s native `filter` if available. + // Aliased as `select`. + _.filter = _.select = function(obj, iterator, context) { + var results = []; + if (obj == null) return results; + if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context); + each(obj, function(value, index, list) { + if (iterator.call(context, value, index, list)) results[results.length] = value; + }); + return results; + }; + + // Return all the elements for which a truth test fails. + _.reject = function(obj, iterator, context) { + return _.filter(obj, function(value, index, list) { + return !iterator.call(context, value, index, list); + }, context); + }; + + // Determine whether all of the elements match a truth test. + // Delegates to **ECMAScript 5**'s native `every` if available. + // Aliased as `all`. + _.every = _.all = function(obj, iterator, context) { + iterator || (iterator = _.identity); + var result = true; + if (obj == null) return result; + if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context); + each(obj, function(value, index, list) { + if (!(result = result && iterator.call(context, value, index, list))) return breaker; + }); + return !!result; + }; + + // Determine if at least one element in the object matches a truth test. + // Delegates to **ECMAScript 5**'s native `some` if available. + // Aliased as `any`. + var any = _.some = _.any = function(obj, iterator, context) { + iterator || (iterator = _.identity); + var result = false; + if (obj == null) return result; + if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context); + each(obj, function(value, index, list) { + if (result || (result = iterator.call(context, value, index, list))) return breaker; + }); + return !!result; + }; + + // Determine if the array or object contains a given value (using `===`). + // Aliased as `include`. + _.contains = _.include = function(obj, target) { + if (obj == null) return false; + if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; + return any(obj, function(value) { + return value === target; + }); + }; + + // Invoke a method (with arguments) on every item in a collection. + _.invoke = function(obj, method) { + var args = slice.call(arguments, 2); + var isFunc = _.isFunction(method); + return _.map(obj, function(value) { + return (isFunc ? method : value[method]).apply(value, args); + }); + }; + + // Convenience version of a common use case of `map`: fetching a property. + _.pluck = function(obj, key) { + return _.map(obj, function(value){ return value[key]; }); + }; + + // Convenience version of a common use case of `filter`: selecting only objects + // containing specific `key:value` pairs. + _.where = function(obj, attrs, first) { + if (_.isEmpty(attrs)) return first ? null : []; + return _[first ? 'find' : 'filter'](obj, function(value) { + for (var key in attrs) { + if (attrs[key] !== value[key]) return false; + } + return true; + }); + }; + + // Convenience version of a common use case of `find`: getting the first object + // containing specific `key:value` pairs. + _.findWhere = function(obj, attrs) { + return _.where(obj, attrs, true); + }; + + // Return the maximum element or (element-based computation). + // Can't optimize arrays of integers longer than 65,535 elements. + // See: https://bugs.webkit.org/show_bug.cgi?id=80797 + _.max = function(obj, iterator, context) { + if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { + return Math.max.apply(Math, obj); + } + if (!iterator && _.isEmpty(obj)) return -Infinity; + var result = {computed : -Infinity, value: -Infinity}; + each(obj, function(value, index, list) { + var computed = iterator ? iterator.call(context, value, index, list) : value; + computed >= result.computed && (result = {value : value, computed : computed}); + }); + return result.value; + }; + + // Return the minimum element (or element-based computation). + _.min = function(obj, iterator, context) { + if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) { + return Math.min.apply(Math, obj); + } + if (!iterator && _.isEmpty(obj)) return Infinity; + var result = {computed : Infinity, value: Infinity}; + each(obj, function(value, index, list) { + var computed = iterator ? iterator.call(context, value, index, list) : value; + computed < result.computed && (result = {value : value, computed : computed}); + }); + return result.value; + }; + + // Shuffle an array. + _.shuffle = function(obj) { + var rand; + var index = 0; + var shuffled = []; + each(obj, function(value) { + rand = _.random(index++); + shuffled[index - 1] = shuffled[rand]; + shuffled[rand] = value; + }); + return shuffled; + }; + + // An internal function to generate lookup iterators. + var lookupIterator = function(value) { + return _.isFunction(value) ? value : function(obj){ return obj[value]; }; + }; + + // Sort the object's values by a criterion produced by an iterator. + _.sortBy = function(obj, value, context) { + var iterator = lookupIterator(value); + return _.pluck(_.map(obj, function(value, index, list) { + return { + value : value, + index : index, + criteria : iterator.call(context, value, index, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index < right.index ? -1 : 1; + }), 'value'); + }; + + // An internal function used for aggregate "group by" operations. + var group = function(obj, value, context, behavior) { + var result = {}; + var iterator = lookupIterator(value || _.identity); + each(obj, function(value, index) { + var key = iterator.call(context, value, index, obj); + behavior(result, key, value); + }); + return result; + }; + + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + _.groupBy = function(obj, value, context) { + return group(obj, value, context, function(result, key, value) { + (_.has(result, key) ? result[key] : (result[key] = [])).push(value); + }); + }; + + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + _.countBy = function(obj, value, context) { + return group(obj, value, context, function(result, key) { + if (!_.has(result, key)) result[key] = 0; + result[key]++; + }); + }; + + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + _.sortedIndex = function(array, obj, iterator, context) { + iterator = iterator == null ? _.identity : lookupIterator(iterator); + var value = iterator.call(context, obj); + var low = 0, high = array.length; + while (low < high) { + var mid = (low + high) >>> 1; + iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid; + } + return low; + }; + + // Safely convert anything iterable into a real, live array. + _.toArray = function(obj) { + if (!obj) return []; + if (_.isArray(obj)) return slice.call(obj); + if (obj.length === +obj.length) return _.map(obj, _.identity); + return _.values(obj); + }; + + // Return the number of elements in an object. + _.size = function(obj) { + if (obj == null) return 0; + return (obj.length === +obj.length) ? obj.length : _.keys(obj).length; + }; + + // Array Functions + // --------------- + + // Get the first element of an array. Passing **n** will return the first N + // values in the array. Aliased as `head` and `take`. The **guard** check + // allows it to work with `_.map`. + _.first = _.head = _.take = function(array, n, guard) { + if (array == null) return void 0; + return (n != null) && !guard ? slice.call(array, 0, n) : array[0]; + }; + + // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. The **guard** check allows it to work with + // `_.map`. + _.initial = function(array, n, guard) { + return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n)); + }; + + // Get the last element of an array. Passing **n** will return the last N + // values in the array. The **guard** check allows it to work with `_.map`. + _.last = function(array, n, guard) { + if (array == null) return void 0; + if ((n != null) && !guard) { + return slice.call(array, Math.max(array.length - n, 0)); + } else { + return array[array.length - 1]; + } + }; + + // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. + // Especially useful on the arguments object. Passing an **n** will return + // the rest N values in the array. The **guard** + // check allows it to work with `_.map`. + _.rest = _.tail = _.drop = function(array, n, guard) { + return slice.call(array, (n == null) || guard ? 1 : n); + }; + + // Trim out all falsy values from an array. + _.compact = function(array) { + return _.filter(array, _.identity); + }; + + // Internal implementation of a recursive `flatten` function. + var flatten = function(input, shallow, output) { + each(input, function(value) { + if (_.isArray(value)) { + shallow ? push.apply(output, value) : flatten(value, shallow, output); + } else { + output.push(value); + } + }); + return output; + }; + + // Return a completely flattened version of an array. + _.flatten = function(array, shallow) { + return flatten(array, shallow, []); + }; + + // Return a version of the array that does not contain the specified value(s). + _.without = function(array) { + return _.difference(array, slice.call(arguments, 1)); + }; + + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // Aliased as `unique`. + _.uniq = _.unique = function(array, isSorted, iterator, context) { + if (_.isFunction(isSorted)) { + context = iterator; + iterator = isSorted; + isSorted = false; + } + var initial = iterator ? _.map(array, iterator, context) : array; + var results = []; + var seen = []; + each(initial, function(value, index) { + if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) { + seen.push(value); + results.push(array[index]); + } + }); + return results; + }; + + // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. + _.union = function() { + return _.uniq(concat.apply(ArrayProto, arguments)); + }; + + // Produce an array that contains every item shared between all the + // passed-in arrays. + _.intersection = function(array) { + var rest = slice.call(arguments, 1); + return _.filter(_.uniq(array), function(item) { + return _.every(rest, function(other) { + return _.indexOf(other, item) >= 0; + }); + }); + }; + + // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. + _.difference = function(array) { + var rest = concat.apply(ArrayProto, slice.call(arguments, 1)); + return _.filter(array, function(value){ return !_.contains(rest, value); }); + }; + + // Zip together multiple lists into a single array -- elements that share + // an index go together. + _.zip = function() { + var args = slice.call(arguments); + var length = _.max(_.pluck(args, 'length')); + var results = new Array(length); + for (var i = 0; i < length; i++) { + results[i] = _.pluck(args, "" + i); + } + return results; + }; + + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. + _.object = function(list, values) { + if (list == null) return {}; + var result = {}; + for (var i = 0, l = list.length; i < l; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + }; + + // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**), + // we need this function. Return the position of the first occurrence of an + // item in an array, or -1 if the item is not included in the array. + // Delegates to **ECMAScript 5**'s native `indexOf` if available. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + _.indexOf = function(array, item, isSorted) { + if (array == null) return -1; + var i = 0, l = array.length; + if (isSorted) { + if (typeof isSorted == 'number') { + i = (isSorted < 0 ? Math.max(0, l + isSorted) : isSorted); + } else { + i = _.sortedIndex(array, item); + return array[i] === item ? i : -1; + } + } + if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted); + for (; i < l; i++) if (array[i] === item) return i; + return -1; + }; + + // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available. + _.lastIndexOf = function(array, item, from) { + if (array == null) return -1; + var hasIndex = from != null; + if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) { + return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item); + } + var i = (hasIndex ? from : array.length); + while (i--) if (array[i] === item) return i; + return -1; + }; + + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](http://docs.python.org/library/functions.html#range). + _.range = function(start, stop, step) { + if (arguments.length <= 1) { + stop = start || 0; + start = 0; + } + step = arguments[2] || 1; + + var len = Math.max(Math.ceil((stop - start) / step), 0); + var idx = 0; + var range = new Array(len); + + while(idx < len) { + range[idx++] = start; + start += step; + } + + return range; + }; + + // Function (ahem) Functions + // ------------------ + + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if + // available. + _.bind = function(func, context) { + if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); + var args = slice.call(arguments, 2); + return function() { + return func.apply(context, args.concat(slice.call(arguments))); + }; + }; + + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. + _.partial = function(func) { + var args = slice.call(arguments, 1); + return function() { + return func.apply(this, args.concat(slice.call(arguments))); + }; + }; + + // Bind all of an object's methods to that object. Useful for ensuring that + // all callbacks defined on an object belong to it. + _.bindAll = function(obj) { + var funcs = slice.call(arguments, 1); + if (funcs.length === 0) funcs = _.functions(obj); + each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); }); + return obj; + }; + + // Memoize an expensive function by storing its results. + _.memoize = function(func, hasher) { + var memo = {}; + hasher || (hasher = _.identity); + return function() { + var key = hasher.apply(this, arguments); + return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments)); + }; + }; + + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + _.delay = function(func, wait) { + var args = slice.call(arguments, 2); + return setTimeout(function(){ return func.apply(null, args); }, wait); + }; + + // Defers a function, scheduling it to run after the current call stack has + // cleared. + _.defer = function(func) { + return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); + }; + + // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. + _.throttle = function(func, wait) { + var context, args, timeout, result; + var previous = 0; + var later = function() { + previous = new Date; + timeout = null; + result = func.apply(context, args); + }; + return function() { + var now = new Date; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + } else if (!timeout) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }; + + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + _.debounce = function(func, wait, immediate) { + var timeout, result; + return function() { + var context = this, args = arguments; + var later = function() { + timeout = null; + if (!immediate) result = func.apply(context, args); + }; + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) result = func.apply(context, args); + return result; + }; + }; + + // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. + _.once = function(func) { + var ran = false, memo; + return function() { + if (ran) return memo; + ran = true; + memo = func.apply(this, arguments); + func = null; + return memo; + }; + }; + + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + _.wrap = function(func, wrapper) { + return function() { + var args = [func]; + push.apply(args, arguments); + return wrapper.apply(this, args); + }; + }; + + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + _.compose = function() { + var funcs = arguments; + return function() { + var args = arguments; + for (var i = funcs.length - 1; i >= 0; i--) { + args = [funcs[i].apply(this, args)]; + } + return args[0]; + }; + }; + + // Returns a function that will only be executed after being called N times. + _.after = function(times, func) { + if (times <= 0) return func(); + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + }; + + // Object Functions + // ---------------- + + // Retrieve the names of an object's properties. + // Delegates to **ECMAScript 5**'s native `Object.keys` + _.keys = nativeKeys || function(obj) { + if (obj !== Object(obj)) throw new TypeError('Invalid object'); + var keys = []; + for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key; + return keys; + }; + + // Retrieve the values of an object's properties. + _.values = function(obj) { + var values = []; + for (var key in obj) if (_.has(obj, key)) values.push(obj[key]); + return values; + }; + + // Convert an object into a list of `[key, value]` pairs. + _.pairs = function(obj) { + var pairs = []; + for (var key in obj) if (_.has(obj, key)) pairs.push([key, obj[key]]); + return pairs; + }; + + // Invert the keys and values of an object. The values must be serializable. + _.invert = function(obj) { + var result = {}; + for (var key in obj) if (_.has(obj, key)) result[obj[key]] = key; + return result; + }; + + // Return a sorted list of the function names available on the object. + // Aliased as `methods` + _.functions = _.methods = function(obj) { + var names = []; + for (var key in obj) { + if (_.isFunction(obj[key])) names.push(key); + } + return names.sort(); + }; + + // Extend a given object with all the properties in passed-in object(s). + _.extend = function(obj) { + each(slice.call(arguments, 1), function(source) { + if (source) { + for (var prop in source) { + obj[prop] = source[prop]; + } + } + }); + return obj; + }; + + // Return a copy of the object only containing the whitelisted properties. + _.pick = function(obj) { + var copy = {}; + var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); + each(keys, function(key) { + if (key in obj) copy[key] = obj[key]; + }); + return copy; + }; + + // Return a copy of the object without the blacklisted properties. + _.omit = function(obj) { + var copy = {}; + var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); + for (var key in obj) { + if (!_.contains(keys, key)) copy[key] = obj[key]; + } + return copy; + }; + + // Fill in a given object with default properties. + _.defaults = function(obj) { + each(slice.call(arguments, 1), function(source) { + if (source) { + for (var prop in source) { + if (obj[prop] == null) obj[prop] = source[prop]; + } + } + }); + return obj; + }; + + // Create a (shallow-cloned) duplicate of an object. + _.clone = function(obj) { + if (!_.isObject(obj)) return obj; + return _.isArray(obj) ? obj.slice() : _.extend({}, obj); + }; + + // Invokes interceptor with the obj, and then returns obj. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + _.tap = function(obj, interceptor) { + interceptor(obj); + return obj; + }; + + // Internal recursive comparison function for `isEqual`. + var eq = function(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal. + if (a === b) return a !== 0 || 1 / a == 1 / b; + // A strict comparison is necessary because `null == undefined`. + if (a == null || b == null) return a === b; + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className != toString.call(b)) return false; + switch (className) { + // Strings, numbers, dates, and booleans are compared by value. + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return a == String(b); + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for + // other numeric values. + return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b); + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a == +b; + // RegExps are compared by their source patterns and flags. + case '[object RegExp]': + return a.source == b.source && + a.global == b.global && + a.multiline == b.multiline && + a.ignoreCase == b.ignoreCase; + } + if (typeof a != 'object' || typeof b != 'object') return false; + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] == a) return bStack[length] == b; + } + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + var size = 0, result = true; + // Recursively compare objects and arrays. + if (className == '[object Array]') { + // Compare array lengths to determine if a deep comparison is necessary. + size = a.length; + result = size == b.length; + if (result) { + // Deep compare the contents, ignoring non-numeric properties. + while (size--) { + if (!(result = eq(a[size], b[size], aStack, bStack))) break; + } + } + } else { + // Objects with different constructors are not equivalent, but `Object`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) && + _.isFunction(bCtor) && (bCtor instanceof bCtor))) { + return false; + } + // Deep compare objects. + for (var key in a) { + if (_.has(a, key)) { + // Count the expected number of properties. + size++; + // Deep compare each member. + if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break; + } + } + // Ensure that both objects contain the same number of properties. + if (result) { + for (key in b) { + if (_.has(b, key) && !(size--)) break; + } + result = !size; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return result; + }; + + // Perform a deep comparison to check if two objects are equal. + _.isEqual = function(a, b) { + return eq(a, b, [], []); + }; + + // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. + _.isEmpty = function(obj) { + if (obj == null) return true; + if (_.isArray(obj) || _.isString(obj)) return obj.length === 0; + for (var key in obj) if (_.has(obj, key)) return false; + return true; + }; + + // Is a given value a DOM element? + _.isElement = function(obj) { + return !!(obj && obj.nodeType === 1); + }; + + // Is a given value an array? + // Delegates to ECMA5's native Array.isArray + _.isArray = nativeIsArray || function(obj) { + return toString.call(obj) == '[object Array]'; + }; + + // Is a given variable an object? + _.isObject = function(obj) { + return obj === Object(obj); + }; + + // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp. + each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) { + _['is' + name] = function(obj) { + return toString.call(obj) == '[object ' + name + ']'; + }; + }); + + // Define a fallback version of the method in browsers (ahem, IE), where + // there isn't any inspectable "Arguments" type. + if (!_.isArguments(arguments)) { + _.isArguments = function(obj) { + return !!(obj && _.has(obj, 'callee')); + }; + } + + // Optimize `isFunction` if appropriate. + if (typeof (/./) !== 'function') { + _.isFunction = function(obj) { + return typeof obj === 'function'; + }; + } + + // Is a given object a finite number? + _.isFinite = function(obj) { + return isFinite(obj) && !isNaN(parseFloat(obj)); + }; + + // Is the given value `NaN`? (NaN is the only number which does not equal itself). + _.isNaN = function(obj) { + return _.isNumber(obj) && obj != +obj; + }; + + // Is a given value a boolean? + _.isBoolean = function(obj) { + return obj === true || obj === false || toString.call(obj) == '[object Boolean]'; + }; + + // Is a given value equal to null? + _.isNull = function(obj) { + return obj === null; + }; + + // Is a given variable undefined? + _.isUndefined = function(obj) { + return obj === void 0; + }; + + // Shortcut function for checking if an object has a given property directly + // on itself (in other words, not on a prototype). + _.has = function(obj, key) { + return hasOwnProperty.call(obj, key); + }; + + // Utility Functions + // ----------------- + + // Run Underscore.js in *noConflict* mode, returning the `_` variable to its + // previous owner. Returns a reference to the Underscore object. + _.noConflict = function() { + root._ = previousUnderscore; + return this; + }; + + // Keep the identity function around for default iterators. + _.identity = function(value) { + return value; + }; + + // Run a function **n** times. + _.times = function(n, iterator, context) { + var accum = Array(n); + for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i); + return accum; + }; + + // Return a random integer between min and max (inclusive). + _.random = function(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); + }; + + // List of HTML entities for escaping. + var entityMap = { + escape: { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '/': '/' + } + }; + entityMap.unescape = _.invert(entityMap.escape); + + // Regexes containing the keys and values listed immediately above. + var entityRegexes = { + escape: new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'), + unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g') + }; + + // Functions for escaping and unescaping strings to/from HTML interpolation. + _.each(['escape', 'unescape'], function(method) { + _[method] = function(string) { + if (string == null) return ''; + return ('' + string).replace(entityRegexes[method], function(match) { + return entityMap[method][match]; + }); + }; + }); + + // If the value of the named property is a function then invoke it; + // otherwise, return it. + _.result = function(object, property) { + if (object == null) return null; + var value = object[property]; + return _.isFunction(value) ? value.call(object) : value; + }; + + // Add your own custom functions to the Underscore object. + _.mixin = function(obj) { + each(_.functions(obj), function(name){ + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return result.call(this, func.apply(_, args)); + }; + }); + }; + + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + _.uniqueId = function(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\t': 't', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + _.template = function(text, data, settings) { + var render; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = new RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset) + .replace(escaper, function(match) { return '\\' + escapes[match]; }); + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } + if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } + if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + index = offset + match.length; + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + "return __p;\n"; + + try { + render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + if (data) return render(data, _); + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled function source as a convenience for precompilation. + template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}'; + + return template; + }; + + // Add a "chain" function, which will delegate to the wrapper. + _.chain = function(obj) { + return _(obj).chain(); + }; + + // OOP + // --------------- + // If Underscore is called as a function, it returns a wrapped object that + // can be used OO-style. This wrapper holds altered versions of all the + // underscore functions. Wrapped objects may be chained. + + // Helper function to continue chaining intermediate results. + var result = function(obj) { + return this._chain ? _(obj).chain() : obj; + }; + + // Add all of the Underscore functions to the wrapper object. + _.mixin(_); + + // Add all mutator Array functions to the wrapper. + each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + method.apply(obj, arguments); + if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0]; + return result.call(this, obj); + }; + }); + + // Add all accessor Array functions to the wrapper. + each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + return result.call(this, method.apply(this._wrapped, arguments)); + }; + }); + + _.extend(_.prototype, { + + // Start chaining a wrapped Underscore object. + chain: function() { + this._chain = true; + return this; + }, + + // Extracts the result from a wrapped and chained object. + value: function() { + return this._wrapped; + } + + }); + +}).call(this); diff --git a/citing.html b/citing.html index a76d445..0c3c050 100644 --- a/citing.html +++ b/citing.html @@ -103,7 +103,7 @@

      Versions

      Stable

      - 2.1 – May 2014
      + 2.2 – August 2014
      Install
      diff --git a/documentation.html b/documentation.html index cecaf01..884ecdd 100644 --- a/documentation.html +++ b/documentation.html @@ -103,7 +103,7 @@

      Versions

      Stable

      - 2.1 – May 2014
      + 2.2 – August 2014
      Install
      diff --git a/donate.html b/donate.html index 4c567c3..a11921d 100644 --- a/donate.html +++ b/donate.html @@ -103,7 +103,7 @@

      Versions

      Stable

      - 2.1 – May 2014
      + 2.2 – August 2014
      Install
      diff --git a/faq.html b/faq.html index d094fd0..cd6db2a 100644 --- a/faq.html +++ b/faq.html @@ -103,7 +103,7 @@

      Versions

      Stable

      - 2.1 – May 2014
      + 2.2 – August 2014
      Install
      diff --git a/index.html b/index.html index f365c87..260e994 100644 --- a/index.html +++ b/index.html @@ -102,7 +102,7 @@

      Versions

      Stable

      - 2.1 – May 2014
      + 2.2 – August 2014
      Install
      @@ -248,7 +248,8 @@

      Support IPython

      AnnouncementsΒΆ

        -
      • IPython 2.1: Bugfixes for IPython 2.0.
      • +
      • IPython 2.2: A security and bugfix release for IPython 2.x, released 6th +August 2014.
      • IPython 2.0: We are proud to announce the availability of IPython 2.0, a major new release including HTML widgets and multi-directory navigation. Install it now, or read about the changes in diff --git a/install.html b/install.html index 6e8b9fb..46a2a7b 100644 --- a/install.html +++ b/install.html @@ -103,7 +103,7 @@

        Versions

        Stable

        - 2.1 – May 2014
        + 2.2 – August 2014
        Install
        diff --git a/microsoft-donation-2013.html b/microsoft-donation-2013.html index 2c37b60..b95f397 100644 --- a/microsoft-donation-2013.html +++ b/microsoft-donation-2013.html @@ -103,7 +103,7 @@

        Versions

        Stable

        - 2.1 – May 2014
        + 2.2 – August 2014
        Install
        diff --git a/news.html b/news.html index b76b69e..986aaac 100644 --- a/news.html +++ b/news.html @@ -103,7 +103,7 @@

        Versions

        Stable

        - 2.1 – May 2014
        + 2.2 – August 2014
        Install
        @@ -218,6 +218,11 @@

        Support IPython

        NewsΒΆ

        +
        +

        IPython 2.2ΒΆ

        +

        IPython 2.2 includes bugfixes for 2.2, including a security fix. It was released on August 6, +2014.

        +

        IPython 2.1ΒΆ

        IPython 2.1 includes bugfixes for 2.0, released on May 21, 2014.

        diff --git a/notebook.html b/notebook.html index 7e3ae86..4d572c3 100644 --- a/notebook.html +++ b/notebook.html @@ -103,7 +103,7 @@

        Versions

        Stable

        - 2.1 – May 2014
        + 2.2 – August 2014
        Install
        diff --git a/presentation.html b/presentation.html index 261b051..3b6b063 100644 --- a/presentation.html +++ b/presentation.html @@ -103,7 +103,7 @@

        Versions

        Stable

        - 2.1 – May 2014
        + 2.2 – August 2014
        Install
        diff --git a/pyreadline.html b/pyreadline.html index 2ce52db..cbb7592 100644 --- a/pyreadline.html +++ b/pyreadline.html @@ -103,7 +103,7 @@

        Versions

        Stable

        - 2.1 – May 2014
        + 2.2 – August 2014
        Install
        diff --git a/roadmap-announcement.html b/roadmap-announcement.html index d07a7f6..38519a2 100644 --- a/roadmap-announcement.html +++ b/roadmap-announcement.html @@ -103,7 +103,7 @@

        Versions

        Stable

        - 2.1 – May 2014
        + 2.2 – August 2014
        Install
        diff --git a/screenshots/index.html b/screenshots/index.html index e74fdc5..75dcd70 100644 --- a/screenshots/index.html +++ b/screenshots/index.html @@ -105,7 +105,7 @@

        Versions

        Stable

        - 2.1 – May 2014
        + 2.2 – August 2014
        Install
        diff --git a/search.html b/search.html index 1b77728..0f17194 100644 --- a/search.html +++ b/search.html @@ -109,7 +109,7 @@

        Versions

        Stable

        - 2.1 – May 2014
        + 2.2 – August 2014
        Install
        diff --git a/searchresults.html b/searchresults.html index 9ea5808..4379e0f 100644 --- a/searchresults.html +++ b/searchresults.html @@ -70,7 +70,7 @@

        Versions

        Stable

        - 2.1 – May 2014
        + 2.2 – August 2014
        Install
        diff --git a/security.html b/security.html index 8a30003..43a976e 100644 --- a/security.html +++ b/security.html @@ -101,7 +101,7 @@

        Versions

        Stable

        - 2.1 – May 2014
        + 2.2 – August 2014
        Install
        diff --git a/showmedo.html b/showmedo.html index eea9362..49d68a1 100644 --- a/showmedo.html +++ b/showmedo.html @@ -103,7 +103,7 @@

        Versions

        Stable

        - 2.1 – May 2014
        + 2.2 – August 2014
        Install
        diff --git a/sloan-grant.html b/sloan-grant.html index d7399bd..a60eef6 100644 --- a/sloan-grant.html +++ b/sloan-grant.html @@ -103,7 +103,7 @@

        Versions

        Stable

        - 2.1 – May 2014
        + 2.2 – August 2014
        Install
        diff --git a/sponsors.html b/sponsors.html index ef17593..d766e2e 100644 --- a/sponsors.html +++ b/sponsors.html @@ -103,7 +103,7 @@

        Versions

        Stable

        - 2.1 – May 2014
        + 2.2 – August 2014
        Install
        diff --git a/usersurvey2011.html b/usersurvey2011.html index df3fecd..0b3844e 100644 --- a/usersurvey2011.html +++ b/usersurvey2011.html @@ -103,7 +103,7 @@

        Versions

        Stable

        - 2.1 – May 2014
        + 2.2 – August 2014
        Install
        diff --git a/usersurvey2013.html b/usersurvey2013.html index b6235ea..b816466 100644 --- a/usersurvey2013.html +++ b/usersurvey2013.html @@ -103,7 +103,7 @@

        Versions

        Stable

        - 2.1 – May 2014
        + 2.2 – August 2014
        Install
        diff --git a/videos.html b/videos.html index 3e3f127..cd8de51 100644 --- a/videos.html +++ b/videos.html @@ -103,7 +103,7 @@

        Versions

        Stable

        - 2.1 – May 2014
        + 2.2 – August 2014
        Install
        diff --git a/whatsnew082.html b/whatsnew082.html index 303e028..680a286 100644 --- a/whatsnew082.html +++ b/whatsnew082.html @@ -103,7 +103,7 @@

        Versions

        Stable

        - 2.1 – May 2014
        + 2.2 – August 2014
        Install
        diff --git a/whatsnew083.html b/whatsnew083.html index 50a077d..3b5a7dc 100644 --- a/whatsnew083.html +++ b/whatsnew083.html @@ -102,7 +102,7 @@

        Versions

        Stable

        - 2.1 – May 2014
        + 2.2 – August 2014
        Install
        From 506bb82756776251433a555c1786a6f01af8b1f1 Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Thu, 11 Sep 2014 09:55:56 -0700 Subject: [PATCH 029/146] Updated website (automated commit) --- citing.html | 4 ++-- documentation.html | 4 ++-- donate.html | 4 ++-- faq.html | 4 ++-- index.html | 4 ++-- install.html | 4 ++-- microsoft-donation-2013.html | 4 ++-- news.html | 4 ++-- notebook.html | 4 ++-- presentation.html | 4 ++-- pyreadline.html | 4 ++-- roadmap-announcement.html | 4 ++-- screenshots/index.html | 4 ++-- search.html | 4 ++-- searchresults.html | 4 ++-- security.html | 4 ++-- showmedo.html | 4 ++-- sloan-grant.html | 4 ++-- sponsors.html | 4 ++-- usersurvey2011.html | 4 ++-- usersurvey2013.html | 4 ++-- videos.html | 4 ++-- whatsnew082.html | 4 ++-- whatsnew083.html | 4 ++-- 24 files changed, 48 insertions(+), 48 deletions(-) diff --git a/citing.html b/citing.html index 0c3c050..1ea5c58 100644 --- a/citing.html +++ b/citing.html @@ -141,7 +141,7 @@

        Notebook Viewer

        Community

          -
        • +
        • Help Chat Room
        • Stack Overflow
        • @@ -178,7 +178,7 @@

          Book

          For developers

            -
          • +
          • Development Chat Room
          • Development information
          • diff --git a/documentation.html b/documentation.html index 884ecdd..8fa3f93 100644 --- a/documentation.html +++ b/documentation.html @@ -141,7 +141,7 @@

            Notebook Viewer

            Community

              -
            • +
            • Help Chat Room
            • Stack Overflow
            • @@ -178,7 +178,7 @@

              Book

              For developers

                -
              • +
              • Development Chat Room
              • Development information
              • diff --git a/donate.html b/donate.html index a11921d..55a78c3 100644 --- a/donate.html +++ b/donate.html @@ -141,7 +141,7 @@

                Notebook Viewer

                Community

                  -
                • +
                • Help Chat Room
                • Stack Overflow
                • @@ -178,7 +178,7 @@

                  Book

                  For developers

                    -
                  • +
                  • Development Chat Room
                  • Development information
                  • diff --git a/faq.html b/faq.html index cd6db2a..8628ff6 100644 --- a/faq.html +++ b/faq.html @@ -141,7 +141,7 @@

                    Notebook Viewer

                    Community

                      -
                    • +
                    • Help Chat Room
                    • Stack Overflow
                    • @@ -178,7 +178,7 @@

                      Book

                      For developers

                        -
                      • +
                      • Development Chat Room
                      • Development information
                      • diff --git a/index.html b/index.html index 260e994..a9ce459 100644 --- a/index.html +++ b/index.html @@ -140,7 +140,7 @@

                        Notebook Viewer

                        Community

                          -
                        • +
                        • Help Chat Room
                        • Stack Overflow
                        • @@ -177,7 +177,7 @@

                          Book

                          For developers

                            -
                          • +
                          • Development Chat Room
                          • Development information
                          • diff --git a/install.html b/install.html index 46a2a7b..691c238 100644 --- a/install.html +++ b/install.html @@ -141,7 +141,7 @@

                            Notebook Viewer

                            Community

                              -
                            • +
                            • Help Chat Room
                            • Stack Overflow
                            • @@ -178,7 +178,7 @@

                              Book

                              For developers

                                -
                              • +
                              • Development Chat Room
                              • Development information
                              • diff --git a/microsoft-donation-2013.html b/microsoft-donation-2013.html index b95f397..a7e4eda 100644 --- a/microsoft-donation-2013.html +++ b/microsoft-donation-2013.html @@ -141,7 +141,7 @@

                                Notebook Viewer

                                Community

                                  -
                                • +
                                • Help Chat Room
                                • Stack Overflow
                                • @@ -178,7 +178,7 @@

                                  Book

                                  For developers

                                    -
                                  • +
                                  • Development Chat Room
                                  • Development information
                                  • diff --git a/news.html b/news.html index 986aaac..7c59ec1 100644 --- a/news.html +++ b/news.html @@ -141,7 +141,7 @@

                                    Notebook Viewer

                                    Community

                                      -
                                    • +
                                    • Help Chat Room
                                    • Stack Overflow
                                    • @@ -178,7 +178,7 @@

                                      Book

                                      For developers

                                        -
                                      • +
                                      • Development Chat Room
                                      • Development information
                                      • diff --git a/notebook.html b/notebook.html index 4d572c3..0a00499 100644 --- a/notebook.html +++ b/notebook.html @@ -141,7 +141,7 @@

                                        Notebook Viewer

                                        Community

                                          -
                                        • +
                                        • Help Chat Room
                                        • Stack Overflow
                                        • @@ -178,7 +178,7 @@

                                          Book

                                          For developers

                                            -
                                          • +
                                          • Development Chat Room
                                          • Development information
                                          • diff --git a/presentation.html b/presentation.html index 3b6b063..3825c54 100644 --- a/presentation.html +++ b/presentation.html @@ -141,7 +141,7 @@

                                            Notebook Viewer

                                            Community

                                              -
                                            • +
                                            • Help Chat Room
                                            • Stack Overflow
                                            • @@ -178,7 +178,7 @@

                                              Book

                                              For developers

                                                -
                                              • +
                                              • Development Chat Room
                                              • Development information
                                              • diff --git a/pyreadline.html b/pyreadline.html index cbb7592..f7799d3 100644 --- a/pyreadline.html +++ b/pyreadline.html @@ -141,7 +141,7 @@

                                                Notebook Viewer

                                                Community

                                                  -
                                                • +
                                                • Help Chat Room
                                                • Stack Overflow
                                                • @@ -178,7 +178,7 @@

                                                  Book

                                                  For developers

                                                    -
                                                  • +
                                                  • Development Chat Room
                                                  • Development information
                                                  • diff --git a/roadmap-announcement.html b/roadmap-announcement.html index 38519a2..b9e1853 100644 --- a/roadmap-announcement.html +++ b/roadmap-announcement.html @@ -141,7 +141,7 @@

                                                    Notebook Viewer

                                                    Community

                                                      -
                                                    • +
                                                    • Help Chat Room
                                                    • Stack Overflow
                                                    • @@ -178,7 +178,7 @@

                                                      Book

                                                      For developers

                                                        -
                                                      • +
                                                      • Development Chat Room
                                                      • Development information
                                                      • diff --git a/screenshots/index.html b/screenshots/index.html index 75dcd70..628d1e5 100644 --- a/screenshots/index.html +++ b/screenshots/index.html @@ -143,7 +143,7 @@

                                                        Notebook Viewer

                                                        Community

                                                          -
                                                        • +
                                                        • Help Chat Room
                                                        • Stack Overflow
                                                        • @@ -180,7 +180,7 @@

                                                          Book

                                                          For developers

                                                            -
                                                          • +
                                                          • Development Chat Room
                                                          • Development information
                                                          • diff --git a/search.html b/search.html index 0f17194..69dd430 100644 --- a/search.html +++ b/search.html @@ -147,7 +147,7 @@

                                                            Notebook Viewer

                                                            Community

                                                              -
                                                            • +
                                                            • Help Chat Room
                                                            • Stack Overflow
                                                            • @@ -184,7 +184,7 @@

                                                              Book

                                                              For developers

                                                                -
                                                              • +
                                                              • Development Chat Room
                                                              • Development information
                                                              • diff --git a/searchresults.html b/searchresults.html index 4379e0f..fe459e8 100644 --- a/searchresults.html +++ b/searchresults.html @@ -108,7 +108,7 @@

                                                                Notebook Viewer

                                                                Community

                                                                  -
                                                                • +
                                                                • Help Chat Room
                                                                • Stack Overflow
                                                                • @@ -145,7 +145,7 @@

                                                                  Book

                                                                  For developers

                                                                    -
                                                                  • +
                                                                  • Development Chat Room
                                                                  • Development information
                                                                  • diff --git a/security.html b/security.html index 43a976e..4a2d59d 100644 --- a/security.html +++ b/security.html @@ -139,7 +139,7 @@

                                                                    Notebook Viewer

                                                                    Community

                                                                      -
                                                                    • +
                                                                    • Help Chat Room
                                                                    • Stack Overflow
                                                                    • @@ -176,7 +176,7 @@

                                                                      Book

                                                                      For developers

                                                                        -
                                                                      • +
                                                                      • Development Chat Room
                                                                      • Development information
                                                                      • diff --git a/showmedo.html b/showmedo.html index 49d68a1..a91e5a8 100644 --- a/showmedo.html +++ b/showmedo.html @@ -141,7 +141,7 @@

                                                                        Notebook Viewer

                                                                        Community

                                                                          -
                                                                        • +
                                                                        • Help Chat Room
                                                                        • Stack Overflow
                                                                        • @@ -178,7 +178,7 @@

                                                                          Book

                                                                          For developers

                                                                            -
                                                                          • +
                                                                          • Development Chat Room
                                                                          • Development information
                                                                          • diff --git a/sloan-grant.html b/sloan-grant.html index a60eef6..0ec9174 100644 --- a/sloan-grant.html +++ b/sloan-grant.html @@ -141,7 +141,7 @@

                                                                            Notebook Viewer

                                                                            Community

                                                                              -
                                                                            • +
                                                                            • Help Chat Room
                                                                            • Stack Overflow
                                                                            • @@ -178,7 +178,7 @@

                                                                              Book

                                                                              For developers

                                                                                -
                                                                              • +
                                                                              • Development Chat Room
                                                                              • Development information
                                                                              • diff --git a/sponsors.html b/sponsors.html index d766e2e..a1189de 100644 --- a/sponsors.html +++ b/sponsors.html @@ -141,7 +141,7 @@

                                                                                Notebook Viewer

                                                                                Community

                                                                                  -
                                                                                • +
                                                                                • Help Chat Room
                                                                                • Stack Overflow
                                                                                • @@ -178,7 +178,7 @@

                                                                                  Book

                                                                                  For developers

                                                                                    -
                                                                                  • +
                                                                                  • Development Chat Room
                                                                                  • Development information
                                                                                  • diff --git a/usersurvey2011.html b/usersurvey2011.html index 0b3844e..8e1b648 100644 --- a/usersurvey2011.html +++ b/usersurvey2011.html @@ -141,7 +141,7 @@

                                                                                    Notebook Viewer

                                                                                    Community

                                                                                      -
                                                                                    • +
                                                                                    • Help Chat Room
                                                                                    • Stack Overflow
                                                                                    • @@ -178,7 +178,7 @@

                                                                                      Book

                                                                                      For developers

                                                                                        -
                                                                                      • +
                                                                                      • Development Chat Room
                                                                                      • Development information
                                                                                      • diff --git a/usersurvey2013.html b/usersurvey2013.html index b816466..27166a4 100644 --- a/usersurvey2013.html +++ b/usersurvey2013.html @@ -141,7 +141,7 @@

                                                                                        Notebook Viewer

                                                                                        Community

                                                                                          -
                                                                                        • +
                                                                                        • Help Chat Room
                                                                                        • Stack Overflow
                                                                                        • @@ -178,7 +178,7 @@

                                                                                          Book

                                                                                          For developers

                                                                                            -
                                                                                          • +
                                                                                          • Development Chat Room
                                                                                          • Development information
                                                                                          • diff --git a/videos.html b/videos.html index cd8de51..72988f1 100644 --- a/videos.html +++ b/videos.html @@ -141,7 +141,7 @@

                                                                                            Notebook Viewer

                                                                                            Community

                                                                                              -
                                                                                            • +
                                                                                            • Help Chat Room
                                                                                            • Stack Overflow
                                                                                            • @@ -178,7 +178,7 @@

                                                                                              Book

                                                                                              For developers

                                                                                                -
                                                                                              • +
                                                                                              • Development Chat Room
                                                                                              • Development information
                                                                                              • diff --git a/whatsnew082.html b/whatsnew082.html index 680a286..ea13b44 100644 --- a/whatsnew082.html +++ b/whatsnew082.html @@ -141,7 +141,7 @@

                                                                                                Notebook Viewer

                                                                                                Community

                                                                                                  -
                                                                                                • +
                                                                                                • Help Chat Room
                                                                                                • Stack Overflow
                                                                                                • @@ -178,7 +178,7 @@

                                                                                                  Book

                                                                                                  For developers

                                                                                                    -
                                                                                                  • +
                                                                                                  • Development Chat Room
                                                                                                  • Development information
                                                                                                  • diff --git a/whatsnew083.html b/whatsnew083.html index 3b5a7dc..68fd3f7 100644 --- a/whatsnew083.html +++ b/whatsnew083.html @@ -140,7 +140,7 @@

                                                                                                    Notebook Viewer

                                                                                                    Community

                                                                                                      -
                                                                                                    • +
                                                                                                    • Help Chat Room
                                                                                                    • Stack Overflow
                                                                                                    • @@ -177,7 +177,7 @@

                                                                                                      Book

                                                                                                      For developers

                                                                                                        -
                                                                                                      • +
                                                                                                      • Development Chat Room
                                                                                                      • Development information
                                                                                                      • From 08f55bfb56f1b271f83c1924383ba9adfb52d070 Mon Sep 17 00:00:00 2001 From: Fernando Perez Date: Mon, 29 Sep 2014 10:59:17 -0700 Subject: [PATCH 030/146] Updated website (automated commit) --- _images/ipython-book.jpg | Bin 0 -> 66350 bytes _images/ipython-cookbook.jpg | Bin 0 -> 44429 bytes _sources/books.txt | 37 +++ _sources/index.txt | 5 +- _sources/install.txt | 2 +- _sources/news.txt | 10 + _static/basic.css | 7 +- _static/doctools.js | 19 +- _static/fancybox/.gitattributes | 7 + _static/fancybox/jquery.fancybox.js | 0 _static/fancybox/jquery.fancybox.pack.js | 0 _static/ipython-book.jpg | Bin 63871 -> 66350 bytes _static/ipython-cookbook.jpg | Bin 0 -> 44429 bytes _static/websupport.js | 2 +- books.html | 280 +++++++++++++++++++++++ citing.html | 34 ++- documentation.html | 23 +- donate.html | 23 +- faq.html | 28 ++- index.html | 26 ++- install.html | 40 ++-- microsoft-donation-2013.html | 23 +- news.html | 32 ++- notebook.html | 23 +- objects.inv | Bin 420 -> 412 bytes presentation.html | 23 +- pyreadline.html | 23 +- roadmap-announcement.html | 23 +- screenshots/index.html | 20 +- search.html | 23 +- searchresults.html | 23 +- security.html | 23 +- showmedo.html | 23 +- sloan-grant.html | 23 +- sponsors.html | 23 +- usersurvey2011.html | 23 +- usersurvey2013.html | 23 +- videos.html | 23 +- whatsnew082.html | 23 +- whatsnew083.html | 23 +- 40 files changed, 837 insertions(+), 126 deletions(-) create mode 100644 _images/ipython-book.jpg create mode 100644 _images/ipython-cookbook.jpg create mode 100644 _sources/books.txt create mode 100644 _static/fancybox/.gitattributes mode change 100644 => 100755 _static/fancybox/jquery.fancybox.js mode change 100644 => 100755 _static/fancybox/jquery.fancybox.pack.js create mode 100644 _static/ipython-cookbook.jpg create mode 100644 books.html diff --git a/_images/ipython-book.jpg b/_images/ipython-book.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f3d41650b8c8906b86a4691adfa20e6851aff382 GIT binary patch literal 66350 zcmdSBcU%-pvj93vP9j;dNS3_BU9uoK=O95?mdp~Cj38!31W8K{O3omX5mBO~B_mNX zA|Ogq5cCbEh7AIp8fXv+Z;flsj8t0K){0^!Vdu7 z=9zA&1iCl^fQ}Bp2LJ#OKnS4%a6t$H{s9n10RKA-0QL~3->@r$_a_YwNCO4HGe8D@ zd?2FVVHyw)yW;}j{p5`W%Mp+gZ1KC)@1>fCjy{{H5KIUv0*H!0#id2y(xT#QP*G{9 zh_r|V0N_6a078%hPefD{n)M5Yiil)E{?afD=T|F`-7MT+Fpdkz2LJ>R+@F*Lf7$|J z|H~E#-=DVNKz>Pph~oT~%&75Q8UUz+CFqqO<+nfmd4dOPzD)tj00k)-IT;BB`6+TL zN(yRvUPgL4I(jGv7Ynbnn4BzJ3?`+hZl$Yu(M&}Orte{3W^3={>?E(_9pvQ@XoYk_ zoCtwXQc=;<(hD;(3L}(YN{IjU@vQ}*Bm&xi3|t61fI|tvrG$KI1I~ha;-BKya}0kwf0A-gw?=(U(f zL>x+$FK7)1KX8iK`&=g`p*us*z{thT!+V}jTtZR`2A5X8sG_Q-uAymUY+`C=ZefXV zKsq`(ySSo#{rm$0gMx3|ymkA|-Fp$Saq$V5#H8eu$Jsf#dHDr}MNg`pR@c*I-O-!1#k47>h+vh25Ef7vw&kl{kW&cmey6oAF`fYz%%b6?8$O890!3>=TX_y)LK zE%mtbm7Tr(WnYRVZ@Ky+$@%WwD1h^eez!qIYl<2DWPYKQ2AL|%_{>AU_k^XkWHe;F z*ixhC(LVPy?*V5;I@yB9Osung=Bm$|TX*%Jt9fv}qbYH2rC1rKcU$hoLyw2)cXL*X zJDKkXCf@BIP{6-qayXjPIf-X9n;Q5U;U%Zz)wjc+9at=LCaW%~Gu4gG{922EQpCtp zQT2Hzl?UVHeQD!zcz53mVqB~N4t8BJv*bx`DvQP^PI&OOsg!)1uj^EIjIFNA%IK1M z2$`?u6C`-D`W;V(?M(rcEv$LT0UV^f-b@04oC$EAkuikrQ+LzRCGT?`M4MK+{=rP< z6HN^fBSH2CoH>`D?C;ZR!X0-Owm)U2W=Htys}^0Ek_sTiuoP>Os!(l3Qqn7V>A_2# zs~s=Kx##)}7i}`Lg?VpT4E6-z9d*;=*0rbS)ie)q+;N|yPxeX-vBf3J==A2iGe_ChM_rLEdR0F<2xTI zijKJZ)GM#`-f`Z2@1iVlHDJZl=4FxwBG$)kV0!trcha?Lc@>4^BJ}iu;U-7i@NE7= zBp*|w{{DS$u>_*_FoRbMk3AEtX=!`+cnp=O6a}M>#q?cjd4e?V3g5Uf(GKsKYVj|O z-?{x-T_VvP{$=RpvkQLRnXYrC7O&RO6RmcI1$84X`;}p&{nO5G9w+aFZN%d|L35 zZ|d4LM9k|nPi9rU8J2ZXrLgH)W2A|C_s$OE*zMl?*SrNHhfZICn4mHU&FZdeYu~w^ zeP=aS;>;lZ!Xtb=EoXD-99F{@Y#6v6-wUz0wTqVV9g{02wT>JloSk|FMLyF9<(2lL z?&p#+h$QM=F>WraMIuX{OwpE_R5RJ#hN>Q!lX;Gp?)I)fm`y5t^wiW*_*}Fn6K%9+ z#aH9l=LurGuor^c(XRI%nbeC_Vbl!$qxjEj>`fQr=T7#~6q2O1p`#5_y6(+~nyyGH z&{v=9na3A$Kd_7|_RYq&2B)qrI-KSkkU3ODy^ngUgJ$;d zZKkpwm|1$5Rp$Ms6m8Nt-;-B;eeT-B-mIwO^&-K1-}COiHWrgGlIC4|5t+)PV%W?< z&3&(uOFf>cYo?pa)Y=BY*A*;x5&RvW;EW?7_58P9M%x)o(Xn;%PG7)fnENu)Pk|fv zpnfLfbrH_WrF+)%>@r?TiMX6`-+*^z+A78++4avDQ9hM2GYngdqK~MA!>W}orQVlY zk@2yYeT1Al?WIu0uXHKN)POp+_*yMToY4ww*r)QM>|Q%s^U9h~XE7NWqIfiI^U3s# zKrKJpPF2?&?$@A|l0Jc$wQ}YnlPTcF2oP9IJ(=5f+ngn7m+KPYH=x|0Gq=fGrt9;m z7|e#;I+MQ~Q71;WR`hWUokDUD*2ppi*|n{GE8GDu*6kei=0#F3tKi+Ur7kMD>SIP1 zqnZ)dcATQ~X@*8_@pwp>axktRwN$RXSl6I!6%%Y9d9)x$KIawUJyylq9pYlvdoB4w zzlc}s`X!$Upo{_0+ z&OHkvfy!?HF^c$8zDuPV0@Z|hEt33BuT=8tY%%{HA~s~)+R`U2$UaD;Lud)}1=&a} zdKx1-ucj!izs;Zbg1eWSoN&!xGVV;$dy9Me^>RuP5#ns(w=@%FD$SLy`&5~J18xgq zwH~%JJn7Dpq<;AN1+BtE=HvV;*EQt#7q5r%X(j2sj$4*@h{B0p)$n>EeKWnOG(S9Z zEYHho`k{)d4u6f8No`hljKvHc>~gnRf0zjaPLg(6BKVyt8FnrUn@KeqMfB;jIuK#k7n!e^sGB4K<(})_-v3R)0!J`~O-hS-a@N-cBmNs_* zSsTSmH~VT1NNc=Gt2{q-PJH{75T$|tawGLOVC<`3!c#e-@dOK(N7)FkNx#TKUV;1- z)5UWQ{ydYhf&m^i6YN5tI~Ib!440KQeU8)|?4(c-NUf#*Y(uSzi@7U7~t+E~6VNuZw zdVIm_=FRP?QNrEFZ7Mse9|OdeN1djN+40n5E*1qU+%0T=6~vlNQ!_3z-bkGxb7S53 zK{@7jw;7H>FRY()k8n2sLwl>5z<_#GSB?lty-WjQO2Rijs9L1mIFUn#Mds4Iv&#oK z*XlBWoMbyCbp7YKa%G)nr;x|Jxw^n)2#II69n$COM0+r0V}wVBO!e!Bjdug=1>&wv zX9lZg%;6AXLL-KaJpl5N1w}Xq=YFy8;z$C|K)B7cn$VZ{S1b%cK4osc&_T+>B`G5l7 z$P)`Xk%E>*%=A=+oLkM!-7!g#*yl#l6Ya+(gI&1i1pp4XWq;fzR40_XMQ~X=eGzZY z``WtM?%p=bB1>v{MM0D1zU{;};8`-=vR4nqJ0I`iwZ5Q=)D`DG`Cb1T*KZ@M50%~MrgWQ#@|jPhTtqN}EQbqzOm?$C*YwLb4%;&Zno+6B%o zMYRjor(6&&CO-N8dyL+O)IfhQq+Nt{ zFJC;xz!MQG>NO^(Th^*)?YIC(S&S}PNwz@a23DtrN}T7kmpWpvmr%J!p112zD=axh zV6imv`1W}gdwWI`!t2>7?|0qq+cWk7CbL(Xp&5I=$K$=m?=)TVMA|TNSmtDo+vPu@rtsV}iyx*oVju`0%aC>7~`uXImmlTjI-V%eK^*az5Qi=hh zJ8wnY(#qmqdXgyn48=TrtH@JsaO@U)l{~Ltpnhi}JBqE|sLSNb^Lu&LE<0VOZeCw%w2>r`1fhBL=1uU7k=Iq%{@NhJmVR&*utmoC3i+EKNGUK7x~#GpZb z%Jwz`{>I&HM@f3}{EEGHliF&Eo)z_|*Uay=AGQq71=%cToaczqI2a+rKUyzi-HcC& zNwsvTw^xCxm+9{HkJ-IBidd2umT`Sj+R6{R3^BM?%WU6xOPLeSr>*wP~Pp>)p@;#`wb{PDyo0$hR~E8vUtWogz&4E^jW+n;~0=~Ri4|DW_Cj!Tp!2nx};=6<3lY@&J_5_+N zp-8S@VB39B8cGrpf118F7B+xVjjOqui?9hyD6zZ56o?79vAmQ2ivJzH$^G`p$F~Vz zU7m>u33Z7^RE#aE#m+9ldH@UH%e&yO>{Zokf_Ng9GnXD<6QcCJ%mzlSIZPWyJ#ubu zPv3V&*gt8>k=%%a$Oex^v=db3x68F~!+QAAmZIKB(MpXtohw-TM4^?c7P}$=o4t{l zYg-xNwl$;Swy$c^k`T9bR@qu8)pd;W^lYK(vX|&7ix6ZCqyEHuA816u1wXrX?`UmM^BDi6slQq|NDEK$$s5D?lVn%Ou69;5#IZiQb z_v;yr)h_4Ll^33gvt&hHvN@|hBSiYr7DWW_kRB661^U0AoP@Wx6{SYZNrhEo;SJs^ znk$2MWR{;jfMtb@MG)RwoPKRV35FdpqagRvV-Bo0_ZffKy-=*ZYr*ISp;iw4;edpP zjKAfA*!o!A*DA@aSI429N{?vwAJ9Z^vcnBNzy-G~YHPf^PjzD}X|Aj@Fg*09`B=P` zb+xlQDkNCn&qH|S8=!8xANpLgZsA=)UEK_==>vFAvS#}xPapD>=+ld3`*>d26-Dw~ zwaPixqGxt)(|;mQ{+b^8oKc}hd_Y9VjQ-g9>-ezVDWAHyu zOoV!lcV7T2T@}9@bClVYcUzRG*Y1>`m%@yfM|Ml!h*whX<_nePKB%v=fvg?#9=2t^ zzB=Beb((fR!fgMe;7En-m8PwJ8S?60*M`W3+#Nk(UD`8Wilj+4nM{YxPmL4l!m;0g zq7(@^-qU-7tC8LZ`;Y9on_Is&EBms49s1hrM2(-`-j<5EH*s&btXSzolSkrnj=&{u zu|t!sO%D+&(|JPKPz64N5|@|S$GQGr;YH?&W2X-fsQ3Ji)(;O-DJEMTV_Q$p_~e=d zlTVX)ygbgJTz>SryXPr+&Zm-?5|;_=q}g-yXM^La{BHnu=&NIFTc6Cf!upazap%GF z@+J$2w9OtOVF`EB=zc=Rq*R3JWKR?!!&YXl8R)fOrdu7S&W-L409x_P=)HUa?Uc`F z_qM58I}bo7HmOmy%vwBPAb#1ES6$6?cOxr8Sis>38@u9c8?d?}ZMzwQJGORu z)o8Eq8^FQ;?&DWqZ{zrCdzs6JzMn2d*<-{>*Xy9)fQhS?TX4-0)BOEYa}=1@&CXq4 zIz4+D)5rsN`%XWy>QKkH`SPzgoPk4#$pTqmS!50TCQsq<6hm#dNVgmjwIuoumz_Sh ztI0n=1*Pk9B*djd7AO{447;u|{;U;M0A-b(R{ zN3R6#H!N`8dU0NuQ>weKrSl7qd^{vh#ZBu`&$hUjYL@{+4;5KZbP$$B@09?8}@Y#3o6vjugk)#lc(lWOH|go-0Hx`zR3CUU2A^95&N@Y?#jCw zGHt{@*Km5xZ&Zre*jfL$YRekgHcI8`w;WAX`&$iZvIkE@Nkj)xG zyRg_QIk~H6TT_6}$JHDIWqEfsNZZ*HiAdsZ#6>PeBE&147tABCzdx@KR6(?}bLCc5 ztX#v{V4(Yi+LJRhtMfW3!7H{hn)mb!o&C?3Os@=zQ_C6xEcC^fS7Q_@haxl$6!D#1 zuA;VA=wfrc>GW4r^>gbd{#Lg3!+4)-f+meAPQ`8@TLITJd?^pckEb`^H~sgBKQ!E)fgz z)NrjRh_ST4hEnK=(Agpyk3nys)36Po@05JdRA(l(tT8qnW8hFps5g;3H}(jW@dEh zx)%KC!-9P*JKrjyuVylj?D6#O(HFDIvA%>HFTp33YNmpXWt`+PA@<=MH6E6ip57LQ zX|{`yEY`I1L?yviBN;=VybI{w=6ZR&a~8{9w&FMS)M-=|x~W(55w~?|>qhT(4aJq0 z#C-j&Jj1ITtS^f#Ts7Q?qqOX#wlK(^1V}uy(+FCT)Hx-~`EgAYs*J*YE>_+SOZa|U zu81_TDM@u))w)DO^&tf@Ph84ibem9&YTkqvA^8RqeiS|Hbm-2yiD&hN00eDO3x|0Z z{8ZY!|Dir!RbI)d*1q!uQi0PL1|FGI)~4{Qd=IuHkPivPitkVXh!eP6fBBlj%zHOTwnY8W^MAJ zTXAiwUQ$<7o2FuDIB=Q;h8_8$kLOiZCRs<#dy_~Z5T@_*LS3#7yS!=4$dt@r{Wu}A z{_>Q@o9UQ!%hClpN5YL3d|qS1&KWXzOQ-7on!$r$#c%;Os1T3d!g%gX(z0DcNltYZ=++T?E$6>Tg zpSx$qJ_nuD#rd?mu50cw<-B9gjEvTYuW2QpPDm)^!^S{fd{HHA*gba1gEfUO*rqa< z$qe>h@4X)JRB%q_`H*6#cGUAyoLO?>dU}ol@590VJKfz+O`^FeXp&#xS18iMI?!56 zEylHJX0S=3%`~){C~dN3M8)O%fd(-7eB6OAU&5X))!cj4-ZJMTbM~2ZXM%rC=lyc=%EAm>?i-NLY!b}7e8JyB3X0*`cn8^lex6%jh)=l;tX^r)pso%I6JRcA5D~pKiNe6f-}s-G6GJ47WEc)9a^9W z$V~K?w;f8~kAKtn%F2U3NS+*6sriSMF{v=byhOoYE@fdYUxCF-r6N ziMzt;sDh=!&$3ZP*hPNhO3a4gFIMNTT@`YIMtj9iKSwb;EZ#UOFyXm+@5ap#25=RX z{BG^ppQS{}7G#F`Cd=8#Vj}_&sye!X88(zgcGauO>Z2 zUZ8K0F{59f9$dkJZtr%^6s{)jh#nx0@;tx0Hh*1hUj=k={<@{og-+7W>T_`gkf5yy z`0`ONoZ~1j;5${P+K+y)x@fFe@W|K~xJ+W1XlOR1O~c_~NW%NLN*p|e|4$!LpadROBgC7A`HkX1bW#a+>pL(_DClelpN1i<8vN1 z7Y8{WGYK6L9WQ01vx|DL57H=D*BBA(hJZWpD9Dq@21*BdczGaw?brf6+)-%hKslc8 z!lgm@1TD-168ShdN*i8O{Ye5|$?^QuB_JR`C_qfe)5l2|3WvjmMMQ-~MFl|$L39wx z*Dg>Hh2{Vykg$E1aS@3|__%oax_F{~HRs{=Th>3?1v0a-$$~mcEBherd_8@PJw4s! zFPzxVrtj?O>xp*u^kP#sl4RpGb3r+H2B6Q&3jZtl-$WoU+W8{o!H0=rf+FIAPzhrw zR9ak8T1T}KuT|4y!FDB)lt&w? zDY0p&C`&@&l9Ga=LVs)Z54yh#`2V{t|C?X~N12Y!KX>@AS;@oWXSjW*mDWI^eeF;P zq{c;g5FzB^;vlW8Bq6S%BrbJPL|jZo914YrKqXY9q(qf3NWd>hT~PWy9CdX5WIgft z4|#e%F5pyW=YG)>;dc_?Kjk`ra$%C9P!TDKi%Red5-Orl=mjOHq>`Aj$ORP<3AnP7 z=r6hdAmT6i|8ML2m!51VW7-Fa_Vn{XAmw;Yyz!rC&BG@AYd!>h@(;TIr-J??^VMC@ z;Dj4=(&CT#+X(6XR&$jv+6g!#eYx# zXVq`|zsOBcF23?!o_+`<`lnL=Qumw3$kWj`z|IHxKdt6JEc-?LoBd=dHFoj%zLfvo z7xZ&A{@Lb%MB)1;so$slvF{tefMG#(eKxk==>H6$M0ol5f_tj;L2@w%FkuGan;`5S z;OljQ{{X@?_HHLI&dJs}8Xr(W5T-wYoqoUq-)VlpiYKsx2g(7YInmk6!NcJMZUf=F z{(eXh#?=Pl+x{-d01zGlVNQ2H4{&oF?q?9D@j%+4!Toh7TlYA9kqGCLy>=i>=3{KA z48pSDen2v(KVbVmU|(b)s3!m@dwK4xFdai1@*z37CRpY zwv%CJhYA9KA2y$G0aX7b3Hy%zar(EFf6)Cq@T6~l)bAL4?=uKp?_apTIRC7$;dN1yZR&UK^Uz6e*W7DCmOuOLAyAyouHKsjoA=>KK>^#I3`X` z_y7rT8lV9f09Jql-~|K$Q9ufi0TclhKoigdjKPOzHUI)}20Q>CAON@mTmx`cs34((7L9Re8h59dUhd!*C;TF}RO$%WxZTJ8_3`=WsW05AX=^sPWkF z1o33>)bUL45P05rVR(^vDR>2VHF#}!!+7&}AMn27pTcLx=f{`E*T6T&cft?Azm1Q< z&%>|AZ^s|SU&h}jARwS4;31GAP$#e;a3u&Kh$KiSC?{wk7$jIE*drt)WFX`xlq1w5 zv?KH-yiJ%)SVH)maENf3@G}u9(ODuABs-*}r0k?{QUg*K(s0rw z(hAZp(s|MYGAc4YGG#I=GC#5?vV5`@vI(-CQ>RXGpHe(!dCK=x)TzQ#t*2&BeI}2fs!*b@r8RVIJ zXUfhDo%ux1M6XDXq>rF4ryr$1WME@ZVQ^!JVW?%8VZ>wPV>Dn4V9a1_XWU?-VUl4& zFhwvuVVY#dVdi5tWDa4@X6|L)V_{`cWAS21W@%;FV5MVKWOZeYXKiL(J4=05{;bQ{ z__NQ?zGI_hyTInomc-V^_Te1!IrVdX=N_HwKlg>5huwtzI(s?$3&^R^ zcjP?5dDwZk^XcaY_;C0n_?-Dt`LO&r{F3}G{OSCI0{8-O0hGXFfpI}H!3%=^g2jUK zLUcmfLf3_Ah29Hu3R?=t2zLs96_F5e7s(Nsf>J>>q1T}e&}~sZQG{r!=!n=UF;%gv zVs&C4#regN;u+$vC8#BIB<@JOlsJ}@lJt=*lU$SHl)5aHCN&PDf$75{VO?;1xDxy- zya|3FEh+6Q{X}|8Mo`90rbywpa3Xc^Q z6gdM^h(G zXIhs_7o}UP2k2?&#p%uH^XPl)HyRKa=o_ROtQbNKuNZb3Q5)GB6&dXtD;Y-{PnqzV z_?f&kJ#A`bT4?&o?4nt$*_^qsd8m1h1*3(FMV%#~rKx3}<=!QgO9_{jtt6~&Ta8)s zSO;3avSGAww|QoJ+Sbmt>N5Uiv&%)7kL>j99^38NYuKmRe?TZB5)tbTiVpD(Ye+d{ zEOOOR&N0^Ut&^NnoYR`Kf-}Z>!$sL8#pR=`x@)HECpSH}e7A4zX71%4L>`wt>QPiE zH&mM^t7o9+pclW_ZLc|RY3~H@4?bExd1wgQ8eQj0113|we!PCS{O0}T{Zsuv2bcy_ z1yTm00(*n_g6;*a2CD|=hTw%DLS9}ucjelZ`OpiYkHR2f_F*rta$LQ6bvaxuyxTBuVs3oJ-P9s!Qffewcie;+!&?s+3xu#+-I9?Nho#`cQ^qMp-6H=KajW zESId;kJKL3Jm!9k$tKA5&tAzf&FRdA+-jgg*F-O<4@ld;$1R^xN89bUhkaG&@%=|A~pDtsD$I%0-m z1~bb%`}ocIH|2AZbI;~4&i5`DEle#U7T1^1OGnE$S5B>9R?n^$z7>7jw5GZ?@b1#P z<#n(1FB`WvDL2#J^S*z&rMT7m!TiJWN1u=1wj*~KcJg<{cVF)5@6GOe?0@+b@tNUs z!2#@`^U&;Y^-I7J;Zf4@`QwJKT3@HXd3^i!|DjhrUV^W9;J83`aUtN_4ZmLTU<6Z| zlXoFb5|y6^_=X1rp8$MKg5l>o62B_I^80HN-+sPnK!HmEVm`JIL?!PYGhZVepa4h| z^}|>5@{>Em?u7X)*KLod3Xld!1+1d7suI;FWS^jiF=gVr2}@BZ^zDsdiL^bR6~AIk zQPj$Cs)j$t!+%HC^|_uveH!Nd=MP7rpCQG0p~B$9uJ98T7)GGpou;O0n1obJt>c@u zRa>i8UM-Ygw&bGJDak52mIG{5(a09K`7bItZ$*xazTs(<1i6sE!*ZaTL_l9i#vM7k z^$4$tTI`3lmQ&WywP1K$)`?)qgmcFe^r*L~XYQL!vM^LbrSp2y>ZOn!%#Ndb?r>)y ze1>*(XX!b)Z$?7h=jq_6i7oB@ndw?ngRTCiS@cNIdQ98!klSQXowQR}ey`6PK*F~( z|Luz6iEv?ii*e+u``W4%+YJpml4cL4I#x$&rrfdUFbQE*@s-imU^DI=TNW)rpM{a) z8u}W)zI4u&^7*puC)52V#n&%dGwy`cL{tgc?bsx@oC-Zr`$R4wQp=%wU6#MUV6kpp z{wjIg$i%RO&p6-P%qwbiUoC5;gsnP*b^~{Bqufi{vki-$j*p)~=pIBWGgX!G$M#Nm z&4$(Y)S%S0-mV;quB@dsV9?D9W`Lxpe02U@P(H?erLcYz|5~c-bQr2GTiaoJVoG9X zTxa^z%Jj||l=Zt6T34683?Y6F0rz5^refW9){as49Se7TN>&7eYIggW156pAp{7-i zL7_X(#nP(hf|-GdVfpCnyTnQ@T!Pb|nE1yKTEIqA|782DO|w-E@@jF$RbdTVy^MKc zN!s@0OXaGOOKsdCbiVtD&L}#IH%v`m8cpf7d}OSJr6SzRqjuiuozf4~dofdr%TDnR?w<+;xX8@!2S3uPoMJZTp{RxF*suJ)`gGG(+zT zIqtmiBg{|khrhjL**-R$De-BvLj)_uT)W@j&%$3)pKhz{$wT#^@0by8Rj20j{)vsp zw9(tPqc0ziW%q-Zu@;PdhtUeEk@AgI^%52XLUwgZ| zYQ1_t|Nhmp4rLS5ei0#`ojRK%4`IzV(#{1b#M9$~+*%8j{k_H(PpRT`>Oa(nAV1EC z@8s-|_SA}~rPmIu?eu)__(M3}v-{|R(ctbE3<&CyD^jn9ZNrS}(X*$|j-^{RNc2s0 zPW!LOya{?ygmUTFD(InovQk*e*dgHm+$tw%r!%+ztN$}?zd|=T`N-*#gVIgPixn?> zo0^BMGU6{|(qH!;9D4#1yI|-pSs;w=x~l1i`|w+|!$z6EylI`u&Zi5wZKI>=snQ_C zg;w<|4qU2tEWE2@;q<84q|Xs+qt)}^(&~Bp)jRS!aGi72qxokVbVcopsJ44oA2$aMq386yjW_AZL;SO*K)g4sGSO3Te)@UOR=!+e`#@euZ>!Urxsu?iIoi4{W&&<)-N%bM;OS~KlY254#QCm;CJOTK~6#9B@@ zWc2Uo?)0q~?psi*yLuCH^|c0n_KdN0Umlrx+iw0Qb78l7s7g6Nw_cb9UGDgCR#Zc` zNyfW!EVwiMUQeniDT~kec*60Oea}o%Xu-iJCz({bu;$RdaX|wzSIhX_KBl;;roAdA zY~qc4K+0kRZ8jyg&ab}3@nrj@*FtAhItE^C z;gnc($Mnb{1C9ggq_*%t|PF=cvI8*U)tqz3_JA`5;zUZoe;7tQb42;2uC1Ev)UgR*MN`0f*z;l%g5O z`XaHyiLlBE2dv-@xSMbd8>(aBQ7cyeirb&R{vB$wfAe6fFYObHu0{6(xt61!slf7< zm5NY*$^0zJ|(TfMw<4$}69 zyAN(X1?;Cp}JFU1jki(4cKXHUV1xs@9F4A>Jb!Rpyiofj2S)MS!RVT21W5cXoU`kqtF*Rs< zFEgX&(<*s=RnM+-f1w-Rs%gEqv_`p7K-!E;?Do1fF%lzj@gbu6QA76@U-tO3`)|y8 zhp`4D!&rU(k^C~a!^ip@KaPuYn38uH{?o4gb(vOythz_QWJV^xjfX_Ek*?Kxy7kBM zJK9(LvU4y?0RkmwOc36yY2;~2hty3~Z&dR%(rTkME_H+wYE9ilA_P~p(#8=rYSQHj zMr9J8b~bnRdIUr3KLu4WtyHBwX-JRvd8H+QDz!HpGQb8?x2-k>HKRV%sr!P zsgmUx+w0;glQFaYI!1-3B|q*bp$8gy^z4Re)-_7VYNOMZ9jdT`XNK3-tvqwMvSnUe znJm{nb4xd@k*Vmp8f;6hzd=iqMFhz3!^QZg!DXP5Emo#}ZK&Q!9u{g~_iYQ}B% zYW{WEuTs{w50uOJ*3usstt~sL*RuQ>Xmc#WR`Kd#VR=tkZivsyi&Jx2A&)#!oqTEj@wxm$c8bXjK+fr)+#^diEL8 zfVCw%c4(Sh7&YIh)k!~iyV$(f$5LOc#+v*E-7~jYjtzWzC^xIxG@G{TgkH3GJ@Ce= z0Lve=suq+#d_AZ+?CZ_V)z$RGC#!=^B3RvwX|D0U=ZV_SyxZuu*D`D2aec+;!dLDc z7&RjdsaOG*X<&xU5inYEIK2_P0@{ge}?s`;sW zY(+L(a%EIe)E$osT8zARPbm5Hpr-p796K)UW-8IQ+WyhgiN9Qz zBCcz*DWw0%cjwS)5L=9};eV;rRo9HR|)2SG9v-`eXI^T0OIzVXRq#){Qbj41LvF21*s)r8CEYzv1|DOF|ff+=6QjP%{N$!mId_nPR-dQ`-Eul867 ze^Atui*eZDaK^=<7ZMD-rSvm$A}@WEOEUA*?u#KiOAAv)oB6k^!$L-Ri$!nwZg>d` zthwm;GUH`Wjy{$wyEztgKZ7q?w~0yG%Gd={#f53(JMc5^Sv`ub;)Tg9%*$=x_DG!>$-Wo3$bVrhx@M+jtbmQhNzY#)Mlr;2iA4mo> zH1fr@MDCjz$^``?U@meT#45=frGbztVWTq%!&q_E$jN}Tl+?zBlJ)wUv9P3FQ^r2# z(lFMvHQBHNlNeaTlQy@??z+dh%!RC#qffhxn9J?0@yCLmy!P4=n0jEGA;0YRdMw27 z^S*BNJCoG6?+o59FC2i`s6#WxbO%}dWH~OS5CGOkCU@)HHySNkn|tugK8Laus-)@T{TFiR=3v|1V5 zsXyrO1Fm~>Gc}v4c7nG?N`ocJYScC?_;4oy&A26Kv@l!J)L(T*#bmQ*QG+CAvaBT0 zB{Ud>twVZli?Ik5AqJn^Lu zeZ4)Tef!`hmbXhD+aSx$jLFBM!&7H+>elN6a*AvCCoO6aHpao#Z|#qCyl_p0 zW_{xaIdV-HKbZ+S>Iu#mjLa13St%C37=j1d+@l`0s&~Cqx?0W6JZ|c*DeLvD#veB{DEzmnCp-Y3(n&`e#djoS!)6lG22g#G#Up?>9 zQL(V+#9FN~MxBRBsvVwx0M0*^tL2&&DXvcP$`Bw0ag2 z-L?mH%~22JNFE7x6tAW2du=-HtY5V-iP=Fl$M%1YW_dSdRkv}F9nOdto<;98tqU(c z+k5#yGvk5P9@&&kP|;pcQDU>r>yM$dqYiwpKMHJ95O?N!7F6_L1uyZx7`vRVFOBIe z3Qn;w-mY0UK&EC6Vihv|gQ3U_e~EYA)6$Lwc?Es7dRjrXn2#DeU%YU&gP$EZu7a^( zmS1j;=xZC;b$RC7FB`{WBbCQh?=CUwtxDq>XzDfZ5Gpt3u$zdD7OLmTe8hQ)T5_!a zb#0mN_8a7#MDM<;GWX%L?gq@JAK2!zakk%|=>MSBNZ0OlDfTY*@dXO9& zfS(Svk#O85bieH<=U8SfxOUfZ|52*rj;$OvFmhxsLzAmy92;7p7gV0H+7$7zI3S{a z7qd+{#gVRM^pKFwOl%}SQ4xSReHSX!QSI{4WfSl#W2M`H{ojij5 zhl7|I_77MPg%`#A&lNao|bJEV7uChb;H@myS$>|ui)fB~( zui2Rc^8@DQPT=z(0Bji2RKR-e?zEwL%mwygc+kz)Ru_{aXPpF~DI_|CX>Q!U1y8q6 zJI@>B6l4t{IW0}CE@o9c-PUXYPE_!eOi0zv8^-cVyTXtXEFvkS(aiI^cT&vt-PnA4 z70=MciqK=-`z{iQS2;lRVtqN?#FY zs8s~C2o%a1lf=}mL#VxS14gij6{n4Z1rZi_HDx_bUSf^$zB}M1yWo@*!q)FDyO^8X zb|G!nPDql~+uOp0`V~M0^TO3wW9U;+oNu*@Zz@RE7`~OSM|P+TO&TI%HQ1t|V}_X< z2RhXt#8b$Y+jJc533cPxNVFol(q(UigWRCjxC63aH}7_3fET`VAmZ2Yqn9DW;lB{S z%l}(9|7QOi0D6GsXEcFLt+jlw1RZ)K`~*^;Zy~LG@4GTaV-kS5T_V#6sR*io>S+=<-q$wtG5rKHKLX@wxLDSUz?hOq)hg@c*@urt8pb#+1!1K=oH~$v|mOuLR55zC< z|1f4Re$4vC{r8eZ4oi6A)qgl}+Oqxu3$RqhhSPBYdO;agW^$j53Z1k^d%Q94lOmfE zAKFk=_;(*{d}pKc?J$pjOs8wPm)w&RS+w*_y@ww#gb%|*16s z8DNnRlk$!~W(Yp;{rbPL82~_w|M{o_zkL=3e_QC}$Axfl2yk$~Uljs_6bAr*gNN!I z1vQk0ja^g>pF>3af|7)yO1QE<=VdSOYiT0zi);u!&c4AXg&_m_1t)Ygu!9oGr%X-I z88l)Y6qL>ON^A7%mBj+JGB>Bij)d`N9qCq|y==U2`C3AD8OO22=lwyDx1XyJr%C|A^juOTB9$HlwhO^WoA4^lFQjL6q+iALrc-lLwNVYw&cp??u{wY z5}X9K_h!r{u>G~KtB0n{I^i!%*p_4PDy|r@)1m2QHMLkF!lR&kR9#h9b{OoKlcU^nBQ;04rYw>~BR*~JyELz^*?ZiX?YY;uTot^@ z+wwko*?o#}gxB)4LQ56&_S<59t4?(vo&adlZdtR4hQw3tdy#EcTC#T?KXaw2QQC1S-|@g$trLBo_d(O0VvE9^Ka@jw=>sqOl@o zOF83=8y#OR5#TMH|6J7CMj6Gv!jM4u!4Zn9eLduL_|i9k+Q@1+?KVulPip$pt>oml zj*fxMSdk~;y&6UhoQ*LC2X*&W>2Kl6w^VuYwNO_gYDsqu-|z<|j9rk;yoaH%kiAZ3 zBw#o|#dbC0J!|V3C^JLM^@}e=%udJ1LR;~V8r4r6DVL>3Q4@NnBdA|}?e05~Qd|dy ziejf*lm~ds@^gG89n4RcnkCKjMhNUa&cR!BgUNaPZZZ~(-4HRac*?tN%H9|0IKU=L zE#R48ijs^H>H>eSgwF_cLPiUec%S~X+5!)**L4Smx*PG%5DJ!I9O0oR?WL<^Qv66` z7#p0E7kYciijxPDDcU6Ap6xkgM&NM^lIjnCt>WZ{!B;VIR|00@oNfjstuCeMvA>WY zYCM1SPL<9lX^5;6`n?Fl<=)p`WD63FxMY0~;1mpvB50Bgw%v*)r#W_N0-offMn{rY z33)ATMBQcN`h~sy9F&w4{geFzsmO#ErgYEmn~P50nUtK^!~bk1be8P~zDQ__XFXIZ zEDDbNoJh(*?d`5wLBW7QLCs;j+)x^-644?%lt%L6fti6!R)PY%Xi?oeU6P8vCEC(T zfiQ1=Sj5DGmeUMbvIzua+Na(JUM;V$rdYD=v;PJ}jd`LH-+$ncdTUP^6**z5YjUn_ z;j$;uZN`h|?aMa0U-f_0!{{3o;6IL}jexCB`n$UezUpkJPM#ZIezQO}sg0WY1q;*78p=T!{LV{e+B-~WDfBdqdAGD< za0E@pj2nw|lC+q=avm>D^~KE#GU2R5`)l$WZF4%`fUH@CXvhoah?b=mYP8Ut@4(Ok zhyT=VW}Oy-qt<~vlu@pgvu^|GQ%Mn=6kicU+BrTPDdri9(9CP_=$X=6dRVG z;hC9XsK0aj(`jxd$wVLaNY%F9iRA9y)-;i>*N#Ltx|g)z?je+#r8)1{{vYPvGAOQ~ zYZnEATX1)GcY-sx4KTO_861KW+--1o8{FL!2yR1y2Mz8LNN~&Lee2x1Rrmin=bK&C z)3s}Q@9s6#tJhk+`gx4*NZE8VJ0^D?GU~jy6!7zV3)&KDz~P0x;C#M&n{N-)E=76# zZLKmpD~97grm71W8*vRM_4wJRq!n9v(@7`4(}DiLg)MFe*Ns{>jQ5te_3f0aT{?6I zH2YLm>datHFQXKFd<>0*{@Fl$CC?-0RiyCu{0HZ8!kr=5VTH{uV!It3dVSs9%%7vZ z(~gY96INox0JB*W57YAzT8Tll7_H88h=PP6#J!W@MUp8g{yvg6|A7Kd>|Kn;$J?0o zZz5yz28S5hHXq^n&*uV{?(-y7B$0w-7HU^^T9f<8$1{0s)R4!9?u~i4cewcb$m3zK zIntP=b2q8D1*dhbpOzms3<~z}7yh0ItHs8^^nBE;a@6ldVD!b&RXFh2ObP_yA``By zC-fm2fsdNKA7Qu;8F)>}17ASHRG7htB*I{Y#ika@`lyXgk>i|fT(w8@F2;C_xCh~? z1e+sY8o4z1qp~m~AAWdI77_`tWr>I8++SQr{@9E+9jxcH1ygUu-!5{0oqKD*F`joFgZT>T>TwnV#yPt}9+l$*400}mhr`cUgKCtd}(y!gpBKa~(A ziQ(1Vof-lb{)tt%i&4_-C_cESB^fI zd_gyus9z$z(rTk z8n(ss#=NZvJDpP`Nt4cnmeny`$b>M_L7w<^F11xA>D*cr+nSPdE4z!j2V<%%;Os}n z_g9Hxf(U$s=^fh+&P;kw6db>J6eXm$5(B$WFh2|oZ=BBuP7&jhyMNh;$yZszPd&u_ zjevD49ctq$ACR*m?o{7#J&(DJje#p}Uofk&8%Tr7oZW##oN=T;4`;#DOV~R(gos&i z$D=~B&Cy@F7iy1JG47`73kws8CnU_LST zves?%^Rx4$58%q?R!55nJvqhbdP2MPKA!QH!??JA`+P*iZ%B|7ke>3xyTi>6Tj=Lt z(f>@=fb3|v_^cMZ?*Oa}X`1-u(-(04L+R-9XKAHaH@i;n)v@)JSbN~+Iv{?Y*99_p zFo(;w$VUw_eD5Jp9xJpk4L0&Zs~opXvDpl{AM`-UycDyvs-VG_97z;iJ1;%e8TDlf zmPMSeo`X#p3@>J? zs|y)S$G*^p;pfCu_~xq({yL)$%DcGd!jvQ5M;59*H&4Mx6NyP)7=cbPYYGMlAJ%<}iR;?+VPzC~_*8v6ML&>`-@)z|@}OXvygW`H+M z8UrOes{HW?;hne7hA=USITtcrAowum0@+NYr4w9HRuq>+Nrrvk z^57%nuXxFKQ8$R134M8(v3YG13k`O~)^L*OYF*h)6CY!IkNi+y1A9QU&aIF<$Qs{D z%#wS3_u4Mjmd2%B0r~j1Bv-tt_}^{NEx9$(A;u_1QgfTUQ!}RX{nK^!Mhh32Eszs; zc>eSt^4=9&KvpYn)(-QHrcmH=pJtbgR8C>B^&J9D;Q1;^wfES*K}%8{9gYcJ;uxz9 zZ6D`|!3lgk>>Kj;l_q(TP*wHiyeO>vCjluxJc2wc10yE4kK@)W{9RUwTewP}_tTTo z*9OzxV-}jduK#^62cxe#Ii%V{57Db5`&tnN0jqaAAJEcX#gGtMD-h{K?-BhebZnMx z3P#eBSQ7N0tfF|Gp67#J*J*j1SWC zI({DPuB^Nw4n3@?wo!j4SGnrVB^kCvQDQlj%zEE?>4i?F=fk#d(N?<%TY!(!79(QP zy0-yXi|S4A<%d^Mj)7M5Bzi3J5SigTkl`-meYaNP$>Aak$~hi5)AkPVY>-ih-*p?7 zJO*>_^hY}JSj6Zct`!+b$jo+VNL^znHmZIJCqTA zFq%9+$8mkcG=i(a>?E)f8v~)2?tYt9e;Q#>7)@T5kO<0`>_F+!^S`*53h104XU%b_ z%0KJ0C!v6}@E`1xCM4k2Ve8TfYz-v{arK|3RCRg*G_QX zHl)v+-kXAc)n_kcw$~2pgf$AIuERWGlDydo?J;}IRMW)2+!09Mp%yc*^EMRGJbj$|5`kkU^L8kSBNRuZDVo`!Wl#b@}*xonints^giMaiRmO(w7 z$_bn<>Vh%q2HfD>Lsp>bxFpUWdP#aJID8i?tXA?Uo?eghl8%*)gg-6^D;ah*xO!hJ zHl)9wrBM2=g;EL+Rs+0*ZpR^|*o?OHCZ)mVr|NXm63k!aeo|O;jiD!wtgTk5%`dpN zSLIodaJfQ#F)q1$+Ji`3gE)BfV{fwRruS_ZS@7mV8l-Qv`3})5?ZfgR4kINt&t>h-i~D;T2|w)=H%BlZRg$*aUtup8c<++*{EMU~@iz*7r4qoxsvrNy zZb)4t*GzYar3VLs@|?VuUnlJybL+*8Uc;6rflzvb#Rcc)EXOCH>ep2drCU=uEk7~7 zpzu=Kp3IW|nc1LIou>i`(^G(-BS%BeNUb{Y&vIz5o&5Y-mC^Ory^=s@-BL%qudM9? zYwa=ujo#%*KChH_ZBkv8s_yF>c{hvpcMjKq4L6jn4Qmz7O7pg$P9-OG5wZcZbo0Q# z+BS0WpLC`*>}AFhBI>3$$2Iuo(?9hqpi{>+dHpymWc8By#+8I8T(zodGH+R?x@;(o znw5F>>U#a1>m4+DVVO+#9B)j+|wF>Kfb|Wo);L8@a((kJRgp z57ZAvQsc9)GEPSS;BXq%*A`BtyzYH|&Aj}%u|uMBwnzQy zO!P|shUHWLvJ`h`I-tMvzKq-7h~wv5JHgH1E9$R}xr#Vo@K>bNbBXjD!KOwi*IiFV`DsaA{V}U%N1KoViO>iP2PN}I{H8+~UZzn>tGBdFc}L>&OS74%}X2YWT7X)pRYvdNS< zR5c_3Kz>1s0y|%C+vkQ7AXob;SGAb}YDQrT=8A zc_t|6@5l zYrJr1dpV^{Q?Dq!%}w-FD>z5DKK2SYW{S)>T{7$k21%gD$)5b`d#x!vJw>MkE9{%YrIphsTn7Q)L8@B9??0P*qVVtRahFtmcIqz^gBsE6DpWCj1f6y zD>vJW#KYwgIT_#@A?iVDW}t5^&}s6RzFDBP2UUPLKr*zlO{<$nwa$4559@jHD3}^= zUOn=+Uly(WZXsLb{3I8adkL3)Hh+7&Y~3+XKQ1HgHLtIX7=M44^JUN-E6sO2NIg{A ziCxsrB-J2iokxhiRNW`p)~P(wm3_Q?D1=av~2)o5yHQcV1maR~ujmqt$z71(4l5ig$7( zG!V;B#1^mZ{rtn%yF7Gv$C=+gJI~M3^5b+XC95s>qhP-9C%pdDTI;0Fe{jhjrbT+^ z?ZW(s245QQ=u>&>51)cd-V{YaPX!W-0({jI_g(#yU|{7{N?N>2#2$WHk1O(aHa6{t zz1LzV?x$}y^+owp-7EZ-rDf;OVZ!#vgpby0-0#cjr;ZsDPA#()3tXp%Oyn-2*I!3(8_f`rn?3 zI?Iy3*p6jT5MK_}vh;bbs$};#P*B>LIBAQaff8})yrj~NcvJV{$<{S3h?uRTj*KMH zUR17%s07S&X)!nO;^HbR#P0nlcg2ZbF!IpIBMgJ^Fa(! zZm#~InP9ioA4-YbQlafn8N-hlN7OY7`c{x&FDE5nOU5YY$1ows-2D%ZTI}9-G#2Yw zEt@U zM*CL5$)jkS`UdZXc1cY;jwy>{SRSltL`uNhkEZ+v9={aPZ8_U4L0?W-9urJI_r8<71-cf#S0QFU#^*1*FLb{Z$??p?0kq$v){MRa{g#I(FpL2YQ;KhG z@9VF(S`+9=C6VA6fY@q!2UmOQsx~f}yYv&*zlKRhk0ukhQ}Hz23bLo7G_chbMsx-@^-(98D!FIN$)1(tNL_d3 zv2{*6+G$zDiW?y=HDUl-1tSrbQ-_g0lxd9ySFT>COAxomv@+OO^Zk&UWtNEFR8Pq* zLOy&QGmo&;;aGN;FSm-7n|*JD$8I#+GFJZZD^7(3f(N~hw@ciIsuKwr+E8V0#bc$e z>uQyylDm5|8mGFa5I;bz@{Hr^a*`KQ=_I zoQ92ikx?7ZkQ1)HpbFL0;xy|_p2;~tI`68wi0^!3~O*- z6Lkx_%ABg|nvz%6ajM@&e%dQXM2qeO+k66bzRbD%|e2$!3iBkTRP~uiB@j9*n?Z^G^%ENG$-8Y$$v4B4}OAux3%xWsc2c+*q z_3B#CccLjW0(i=VKgk~(+>tFoShmLfmeN_WGb)%Q`S9mMr7*5qxx*_34Kkce3JjM< zHpgTaPr>}S^!Sv#?7M!nF^77Q%~m+$V_T&ZK31oU-!?8@-|)Z8k)AWQqH9^!H5Eo~ z997<+!J?-A!NHpw+8aTmn|;c0gMHtBhqZk=DmezHGY4SE!)zdkbu~ z$-hCW0}maB-sW#A4HtahD4BH=K-6c%;+asCK~4Y!e0EAG8d8|rKMvL(=$T`SWv8o3 zcT$OEekcP`mt~YB-<4&=H11n>S%dK6oGf)CA5}P;F9ASCKN-QYF5*)uWp-Rb#iOMo zhp_=ddFbX8silwMhOJk@(*NGC;Ab-KIX0LNFDvfe^RoY?ww(Tel0EKrdMpFvR$DHT zpdlV0r|?d9?E5}BLA=&1gcrd44O)btoLxS?15sd-gn*j5$@B#JRm@9QUKoyAU~wWG zarILi<1Mi0ZW}-jDJdy&{W%~LT=7=dM@rN)v;id4NU7rA3R^uY8zy9@*IJRY5?ERt zH4cl+8XJ?9;^QMg6c~+J`SDT|J`fJXltL5I8P95M7A#p-jAv33M@Y^Dw0T)Z@5x@w z75?*{uSC|?hRG}bz~p@!g}1j5Kbn`)-ShGBacBbQU~w;RwRz67@wd;E|6Bb!NdFaa z=Y?cyHva8|#s9n_?jKyhYCwSYXXsux#{_XtsjzyYvPY@=WD2Qxg>@H2>RwwXzM8h$ zBtu2ktWO5EJt3;}-yM^I zrp+rHkliQXFbpxLPx$)!W+E{wb+ zD4WH&hUL(JZf6XQVU1B5t6O@OXJ! zox5{~2VYt085F!)#q!Z&jVV~b2HirX4DKLYf~tUc4~~||<_%GzA#XmGF?UxMU2UqQ zd-f+?Wfy-80R&9G$7evtPiy6efgSu{?Hp!$rlX+xzVJ2ZI;XbK;N8nF=Xkte&OTq)|ym zEg-X2MT95=DxV?`N<`ztftKUe*s1_NUqAeD+EX2!`U;uTQY#Uos7qof<`v=-=l@jF zPq;6~B1e=En>pEBVUzuD1LoT#bhb0}4jrPZ4(YHjJv5i`=_R5kWeGBfJ)^8?fx(b=x$zT#6IQc=VJ zj;6TBD!(T{r11RH{O!S~6Gn_s?g8S`D}WPADoz&z~1Nb zx;q}FWzT!wGJuO0Ath4tLOn?_%u)3!n%>&8<+_oobU2RO!!kUke}2vx#80^O{4kfz4~Z$| z(^h}f7Xom3`v8?ddY!8-e?{N-ef*6TtdxZ~r+9n&f#eNZaVt;r_%1Owyvowc9&UxB z6O|RpSe0k?>r!$8Jf>4XSq{kxgE!2GjB85Cy@L~sr=Ie+mgXo8pMle`tL%GS%u$<} zI)(i>(TsiPQIX7VT|m`NXVcl zd^XcO>@rE`)DTx!ij=^WiFe#(63R<76vRg`I{wF6D31d0?Y6K$u_HNyzv{RA*tQWT zw;t%Y8Jx9O#)=V0((Xm^W#sbQG>^Te(UNYNN!m)EG6Be-Q|w^VZ@8e;!G zMGAf<&=1oSl*gceO<8L55&&akA=FCeZD4sr%gxEUnpu8YUOqlCXdM6#i`+iQ=TSvK z&6su)Mp7y}pTf=I6ezak{E{4`F9*K&oGh*SgKsU*BoHg-oVeM%c>Xw}e9UW1pcik3 zX(Z%Po}RsHLV7=9$bu2btyH`2{xzx^H=(&4|IAcK>W^eCMIQZ+@#xEud5YxC7D1zy zkzHG{HqPko=p@ZlHGjVLDF=Cwi}G^03DF*#f~TnAS__DD=ljN|olV#mJa@L3lgaxQ zGU8PH^^?&%TG}{8PRbHP5~YD=g~Fm6>Wl)(w$j!uXNg%qzPjB(?cwPu2imy?&s26j z+S7UY%tNFkz@;@PUCB(@&|tilk;32x(ux@CGVXcvG++BAk2pMtYeG@!#wO+lpW^zf zUQ-Fyg?oe)#u5y|Ziq2SQK09!va|~*(_enFJ)28e?-%w=!c=d1Ri8@KI6$=ddz_iVL z&)na?=zrU=|29R6*DedOYEuvr$*-{jbtH#hnl}eCes1>@u1{xup}@6|-!ea{;n4Wr zsj*m3FGbxrYo;DRl8psKT`}WUaJ4qHz3!D=ZtkTy+Ji>Y*HT#1Dt~r+5+&ue{=N`7 zhgWYqfhfFlT{1j8{I;6vD)_Z&h;mAftDfpVX0n36tyo4TL6s?)+U=gmsp*n8?xzxP zQx)tc?AqOea8vx0DV1K5LfyF#rI7wk>cY5v9lupbmM8FgDpt+(j8DQ803{Eqp>#P4 zjE=VIc3U}I1&)^4Wh$|3)>i!!=2(5WiOpoQJ;K7XDbBbVY34`4T(@y7@GZi%7*^z~@m z%V_18OTdp4Uvt9lRTyJkC64J%&N_mznMux?*;Y@CDUzJm58$G#m%~lW;X}Wub|PTb zXx017`IRcER=~&9#WY>7wWqZx)^WfGs-6-?CWRM!&Y-*w!Q-|ll`5^MeghW??I9S2 z#eHQTYrKCZ=?n7A+w$&y_ylnB?!H{#RKITZ`SXUdOdU3lE6OCRtDz^WjOQ&={yjA# zE=pz|ci|v2+4GKZJa;rENGYuaPZ>3>Lkh~LtkuoPPIIa}At?}7p?sNipX@oRymHOl zDsPIra-qIP%g|>yCa7rPFOIRYZ1#Qd)|1#pc*%`O(|NWbr|KQ#!2jXWk`I9zJ z8oyCHy>fV^wQ$y`b*zvIWaLOSE1w5jKgg!7^tWKOJ55~1mmQg^+Gy07%Ir6lcdyf( z8}w6l^GW^u2WO+1)XF?Sw8^BI#@tJh?@LimrN|U1bP~yQ`pByM^Lpy{KRAA&Zv2dS zY6O>z*vP97F9)wNBR%4eXvJut5*qBlUa$som zwX3?;uB9%c3gjQ0-dng)tK@9N^$j2Tg5}N7>?N=pOWGfMm|j@@xOV-2f5Gz_XN6Ve z);SSNZ%{|Cm^V0h{GVggO4tk)Jx~__^pGbLT2%e<-B~Gb1u02)} z`$_wewR-QKzK3{kZasAaOWV5eN^-AX@fAUTo>0Z{UfHScBuLF1(x4QiRJ1qoLdxE} zv}7Y}UC_!mw>9C;e5S4BzCQ5`@vIJd)PKkQS2lx*Rl8)8ZzJcd_GkiZ<^8>4!HCn3 zqs{30?c(TvlDsWZW-k9@9k&`Q{ts^8KhBL9&Rb9#9vSJ4S`-oa&B1vKO}}AQ(7waL zdt-d1lL1 z@3-+Di`a%qTMvk+Q=gOY(@qbh`$y**;E|3i@3k_*rBEgAeTiC+DQJ)wr=M^YEV*e# z%E0o4yyAt?f>@zb*L0W|HPQt7xHr$iGJSQbpzQEFptx;r%O#6CvZmNXtmY)PSGB#t zlnc7_$hIHJCR;-q#IG}xcf1YMgG9Ofo;*6>j)Zjx%Gkw%`b62P;Jqi-81~~vX0$ke z3Xe5x6m#Na)~Q#qtDcmo%|DsTmeQiv5CdxF^mUGbat(1K-!|0xsruMBjrV1A#p=O8 zd(Xe9bOi9+Gw9KNlCY8GrdlFWlZoE!zDFjTbm+*Fn%#*=E<=(B+hkPL~s4Q~1hVp>&$6H$o$O ztAktcy@y}r;y!qc>J#9HKN<$tC?%Jr^U&00Wu~*Y z-Dpm}$%x%q^%-LQV8>>7zGBD*U8G!RuorqnQd0)NWRuhab8oNlqMaS2;~giHjIHlR zIQX`O+m#hG6;Utcr9Jy6#3NK9XjHQ}u;oX|Ur$jakP(~q9Y)j0RT`iJ!ZWg9v;iHk zzYN-XvTiJahJi_DH(Rnz41Izonmi9`%0b#S>N}6D7@!SZt`Z$i7ifG>&76Bn)=8ItSO$EEvY%Q^Z`V_(AR#+I%wF3pNtzracG+nmV`t z;E1(Psm;%Ue|xGlK(q)PVzQgH(-nY*bZ(wQF z9wEOP_p)kZ0gDrBGSFS1uNE|l+a~&M?=!IY^yuPakvz~NLW(mYOXMdaLrw%0FM{~= zc76j6dr))k4S05d0*db$5Qozb@)C>KEDK{jx`4wMKk=|jEJifD?|Wp~jra9M@4DV+ zNXGyn2S)f~CEaZYr771eAhkNKdjn&$^X4U-Hl?pqnDUq{!>6?UisScGrW9i)EK1L<^aU_bV>m74bg5fZxOr%xdN zUcnJYlFX!7oe&1%e4@2rbEz_6>s$odXL?YBS-_DdDX9S)H{{ie8q&WfKmKwV4dSz~ zOV$5Nfzp1>UUO7Jb*Hol!qJJS*{`2*sj(v+KR=#f+lP9f3lxw46bDygqDJJ;J9pU*wbp&@L&HCo`5%s4aN zwu%BOmhCJIFLx~ae{gp+>=-`OYaiel-Kay#;5ILMX?;nny+H3vB{F1_yV6bHG7yo7 z^)qHY^Nzi_Y)u+ZCr~IoMH!&Gc`c!p{I{Od0MJlP4Rgk(dQS$^Qec?fQF$;}{uiYl z*JZ>}Rj6)vW-A3`1P1=p(grtA$(3A!?AwRrQXMJtM>jV=6mXTvRj5BdbAQbw;fDk) z(v*etWk{GONqZA}b#bTT6m|xb24KWr_lOopi$@M_`>0lbewX_2#ouHvFuBOgQg2}2 ziRyn+5j=zXaREACb^VUKhVw&9W?LwwPVStDUp)-afCE@IV5mc2Br4Q}k!`4?9uy9- zVAK3i9i_!Tg4;$crjRKtvfRwDzi2uVEwx_i693CAv@t{eRQa*h1NA^B|50Y~Ee|`2 ztuGdvx#m%!UbB@xg5C<7>v>{HN8zuz`Ww-#PVNSR&vmUeg&NvPQ%_q`y3VU3lUxR_7KV0zfK(+&el^Xtq3+?KaaQlxiS8ezjeC^ zD2>MVlJ8l^kZh_qrCANa(-~=9H6^gq+hp-4eEriWwQUs8ct>at30+91Fr)kIUs)Nf z(xI5}OUrey$YsNfCFW!iI|0r7H|u>H9i!FoW(78@bf+|J@K^C=rsqnLW1i+{;o~&E zy33QqD`K9Qg3%37`07lsMZ|8@+ge=b2(zs! z-s2Iq4N2#mMc;>a*GI-4`Ut4je``HO`=0arj_+WHV(>A+vDs6@_b~0DHM+%-W0<#p zzum)lMeg}gW=~p-){*W#w|ZH!8;w}~xrvb%@r$g8MphI|WpM9Q8NU7`&rT`Y29qq^ z$y(_k&d>Ti9sDeYA&#%#uK`J45>(z9Y4yixZvSrDPgb2!tMz#^xm@Qu3TA~0qZL%_ zz3e-IoM-x6qFVtabe%HJJ@v`hJN11N-M6IefH2Q+%YtB-!a{k0ic23;xHjPuH~yJx$Fn-eZ+xZMWo}cB|Qz+&- z)Km2MM!;v<+vy5^o_c7DEKH4GA7K}7>#nd-FgtI_+{jOO&w^@(+ zF11-tS_H+t(9S@uKetuL<0GWF36@%>Nmse8>fug;3d^B08#sL@ALZR z_BqLvq~o(FviwQ(buEe`#!1U;mr`9V1(U4p4I%~AECOzeW3$9~Ft!o(efg(RnQFby zsM||AQc)g8!2}gbww3b*Up4VgP$&M2hLtpU2OX zp%qc1ucHZG2>DK-#p#>d>r1^?Dioi`1=)U}QHa$F435Fw{$W4b!S-*Dw7TpIK0K=% zvW;#mCUv$2!f3(PbEKOu0{xG`vygg){6%X_zC3+5yS$6Mh&J7meB-JF+&8v2jUj%P zZ6@QNxdHf`n$Hv8@Hw@ZASUW$_%~~`RHcJM!%@ZZIT}AdMSl2(dSaOltnsFUQR46q zMFEdP)$(~I7AA)9LY)Rq!mW2`1(Z`6Rh8f6mqg@d*A)9I;tKG}pX4}rnGV&&mPHP# z!9aL(_KWX5k8-dTaRoo5i}|F;D{8g~Ap6zVUx?L1>1gecXoauql(6Fnj;Cr899cK3 z?GR5l#Bb=tN~O^jZsZFc#Npb=WLKGMxI%$Q=%^H#v$#0nJ*ZmJt{3I_ixvfHPn^if zk%;n~aJV=jM-lKMmRb^sw52H4>mqhGxg0#GOI1Jk-ySP|!)4MBz5wI!Ec`)NG-3`a zA2zOA;Lef1d7@{cVZ$@V-_T8_^Hj$YTS&zjJn_+q8Q_I}03oBN#2Hj6Vw8nrV3-;v z5d7TZ&|uJGX@AyAWTu>j(ooS@c>K)Pz~U#El@7GcR{vmJ8pC43RVj)pSLGM+i+-dW zA3S5a!V?6xCCk~%8_`Dx3J}Y9Z9@Ff5m&rSSNL(O#aLwD?<_>Dj3AE4mUw>&8`Km@ zXNpoXC_5Gd;)qDT*-LqvXNPSNFF><16kS^np++pbzBZxD3HC$ zv4zAK&RyD*FE&A~{_Bm#1z6Pxei0bLA+b+t#|O6mu9Kw07LU+U@R%M2X9FVt?q!gL zAx$Y(BZMOVV=hNp=_NTcOd%58F4xMzp7D#M*6FlxlwYfRwbO1|EFa=4)31MkaRpCZ@6?000b>qx zinki?Vui|r2Lq+NZ0b>#pKAmPsg&ns@9gU3JY&(Sx6Zimiq3M*^3Iw))N|%`UElcK zDtbyKzrdUI2U*pOeJJ6XCd<7@XU8z%xzkH4oweYf)G?lm?VAEXXYJaIIEmsk|I)Pq z|G|~@zxm)CIB!1pe~;iI{s$rQ%?XEx!=>eYbG~tC+(J`Ic$x<;rL|_aul~QIw^FpX zL1XtSOZ$cq^jG62*m#?~I=CwdS7Cu_WB7bRg=r25<*DTg7_(^R=`{xYIJVk4F`Le^ z2)s-=@!TFMvGF9`WY_scdw}V3VQga*1VUekpETPt*C8*i@DU=SuB<%WKIsJzkVDLA zX_Fc*nP@74IRYD&KcoytBRpm~u&1tb{q}fGgu;9Fk=y0RWkfkz`=@tUn>Y_2iD6v+Oq}bQp-{_^;NMxF?55-Jukh*kt ztjs?tTu8TSq2TP%u#TsDal|)}ji}F3%docX5?`^ap~jqUcK6N6WlDLZP9~MB@ZX$aPUOBpd0`grkFPdpgWh`b0bQn7aIzyiw(Wf`l( zV&@zn7_Y)I?}$C-1#ksjH)2^wFne|m7)B`XoW6vqr+~p^X^40^gnCQMjrK8v+o3V< zkuHQz9nc%t&e8Mbk?8YhfvH+`7zdP7$?VgdJRGNmHKqrG_3&gJGCj|JMBM?S#ou(x zm1Y|&R)Jx%$Oy8&-Pw#7b{2N0(r$n264;T}5YI?69vhbRo2{XXTsUyR4ks{TT`Iy13L^vf2KnxL zvKrU=H#*%XG~ca}a)}(VT+0n`q8QWu(mlsOMH?1kw8$PfH1M{6lYc!>}{ z4(pR-Vks8y&@!s3z$~xM*Ulol!aLhBHCTomV|w#!Fuw5Gkdo*W%9C|)iHZA2J<-7( z9|+L9!bPj8bmqa@xD6(8%(ie?D#HblQY+@VcMOqT8mx%a;_G5vJr5*NUMpmzln4|5 z!j<)9A-FIV<8?6p2@m^*?1F6J%yMCo!A|Eeg(06mX)@ZI?^=UKf0O~*zCFLGz2arR zyd#_7pvT1PbApB?qzOls>{u( z(`{|8p}dt7%yQJtX4O-$ifzS%?>kp`g&-}Q6>3=R< zGK3JuoG;cESj>F&mLN62u5Xn|Kje{#;v2%1@4-GDUcKo;TXOl?M&OxuK6!n!Trj|a zRbRc!4-5n*G|9N`=9nccVZ@5<*C_!|h!ovwMUwkKf5Nw zj`z*Xb+E=b%X}aHk`t8$Cta_nfK$we;~fag_b9ZPt1F$@=YU;Ln7oB4Qik1t$(W*@ zMXfwx@~zv1Z|+ne;P|zIeNYIzetw*y%cL8VSBT+EsFDNi6xnVh#R>2 ztAiw*Wekk(>l{PeV?>`B53F*=N*5gV{|YId#XkjHp|p94$zWZMxNr3y1Y5q)AIoxD zU|%%zaHs23sX_$EF3e8Nj52frBfvi{lvSrPQO`hfDh?Doo$wV!H4jfgPeHF#4@nGjsA(8iPCFZI_ z)D`f{WJ9O2L=|D<`U)K+l`Yfa4T3BchAfcqW2Vw*m)@G_;dLR7wnUIXANirkB+rRYNs&(mYwU&4EvebtX7sh3< zNko&ha!wEmR0x6;xG{jpcUsylf66J+eUrxT!{lmaCUqf!wv(eeDL(%Ds^7K2+vVkEy5j! zjVouai7FXS0WR<;WlEritnVaYNDt{H_I(C@y=sVD98ESGjcb6y29A?`%!ut6U!Bjf zE9WzSl9?8JfK+y|Zql*Pm&r5WMS&^mS4puQk9rMp9;WmH+zNsSLs>iQha)Rhy}Vd- zkWRQ3YZp~YlA|JWCO>P)0Xqn-s-8=0$CL{;eS<%!Q@yYUM6q(bP2U~>aJ+v6+^FP% zn+g@m2?bXt5k;yui~YQbbhQ)(v&qMX;iVORXLqAW@lD)`#MQj;3v~8YUH2p_T6F}sF<4bgI93I+@hU#{T#Mg04DNv&gamp`J5Mjg4 z{z$Z+-ZZeFRPD8ub>xeyQ@|S(YF^1e;IA?ME$TpLjLU?)KkH46#T9zUS<8;pq%JYp ze*XPIrTGl}p=F%l7ma_RfX(O1D)#s($TyfQviNx{n82~AAWfQzN%`v|)=pIi)l`n3 z4nZa_T{(pt&LZy5@dNM>_wYcBQTKhqp1kn;>@^qrYqHG!E~+Wiu^;8+;qh=kx}2x< zJ=rVhF&1HG2YNs;*C@7k?Xf;e%ubZ{T$wU4K-uzcS%!`d)$7TV4q4<$t7^ZxzZ`W| z;Xn*OUi>3Q756O-H=aU7kroG@iz-64&ML?_3gY0l2>5z=P|7!;D?{Fa;Du0FK#j~& z7E$l(7r+fhc1}K?*}mkw;~}CBt9Sg2Y+2Su>5P;xB}JtE_$WpeO(kO2ry1lT1{CQl zjuI28RJ3U7G)m9`eC!aTdg@ef@!7hYq>oM()=wSms*atHf&!RL$f~#Bu;8!A-iYEc+vbqDbhk}*4N>FSvbqXJUK?{O${KdL6di^sg25V_p0tW@;=8NL6OpaiXSscu=o$2Oj+(#DP+i^1i7$I;KMACF<>6- zNNuY8J6LNim%CQKM)%fw__&3TezH*;DQ*T&m#bY*Bf9(M9F~&$%zahJ7;%MwzC+& zON0mw`od@+B@VIKK{NeDhS%o@kyZ+&R z`zE{OU;@F9@hbz-Ji~z|b!DF1+kZ(80@HS9r>wZiBBk-sya&bhk=na0Cbg20^MBE= zZm84JIE%IX$^1B#M;q7P*E|%Iu?*vwq|-aZUk!UP1Afkz!GJvEmbq4-*1X#b=L`9J z3@gdH00@6GIOy)ucHpOJDnv{waPWTJV0D!C z2d%aKVp4Y#!1Q3r&e5V1{(oqD>##VUZe4VM!Gc3@cM{y)Jvbz|YaqB2+#wKLg9ivC zxDD=u4^FTd+=9DH?)<*J&))mo``zdKbMJILHC=D7s;Qaos_9z2*1KY@nGvF8Lc^zB z5`@3nq2(ndXh!3|Ae}`~q{;`S62$y`e2YR){)qhW7cfe2W9tMJDmD#GF2u_ws9Y46 zqtjticSrvHL-hMAEtM6XGL`Iv#eP&7w^v!l7L&ZjcCopt(rRkqENZq*=Um__X@V+Y zc|bx;&dpPD=C8^u^Bvekt>I5KpnOSsir8I*CFfVE<%vzB#zLy%C~@f~6@v%$d+WSe z4&ihpW{82xa!LUHM888r*2zbS2K#W3Wut>HGX#0qsx^@_Z?1+PQd>mQ$kT+J3MQxZ z0MMM#%*JIjwLGDxHnx`Sl1Hh3&ZNu4a~*w`(Q_V~$VERHQ4}=o>zxkUNPtcE z31t}9X45LBG0iN?B+Ja~l18}al;adv^*P%AG|9>^C6{2t`_LA2euav80c*hK_)zD- zd_|s5*L|iMzUc*w_aU_n(-lx5FizMZKYguTrV_SdepOW5(#EOu=^MtEwy)N$Rt^Vc zqaHv~`*mt1OM#7eH2HzCn5s7mgWRiTl*V3jkb(=6j4;`*xF&m zTp&S!4FqJ)z}2NrfSXVzY&!Sdd-q@s%wX=jEQSX~h?L*1TOo9xFy9Gh34pv#lU{W> zhlg$3d+&jVKW_*bbM1AKKiUU26=XXGTNT)JV7Pap#yQsI^_yhZy!Nl3lt+m(ix zi_6tl$z{vEV#1@U>g)Nm5;WxbuBSck7uE?eCmw{N&w#q|*Suf&9UkwNOtu^6`?uc% zaD^_nRa8&W@yMo1pJrc+a5#G~nX-0{54>A*TMYz$ZFnew6#LGVx&OH6n|Bl7JffYu zTYE$md7gCA0FH~bY+Q#X&|ON<>n@uPzB{q@jnSW*ifW>En{NQxCo1q`Yi3>&a|)*~ zEJMVKWHqxHG0n$fBM3AJhj0X-R&1sk(ilP=54d@R2wo5rY7H*_PiXd;6(2<*-Ro(g zSpC{ReppS3nCa_*nZ7z5;}V9sF(dICV-^Jj+ch$+M|%>``agR}Xv(@&c2%h2E{~M- z53vYh@}q~QEYp=9M8F~-x)?~TI!GwjH%%I74Nht|MK*ym!@_evfP}j}i%}NQLNQ1U z>|`~&0w3OAm8#nzAYEb{CHEQdq=el`FB;Teqbc|9kd8mN9K^rLF8F}SawQxuo*IbF zHWow!SsoLL>deLRhLe3aWQl+1tZ#}{e^6*fd9B!*yMB$$Hqo<&xk#Zp3KrHwwsP-V z+MB80TfROb7Q|=!^d~afJ$F_U1V;RJ`CYUx3%EBCIa>*NS zM7#;$4pBwXE&cF*EKH9m@T4ev(C~9s?q{-qUL)xb7CACNJY-(D{k$Z1Y^;>iH12oe zjl}vp8QZ`fk}B(ma!ZMbU-&P{MaRJYEL=swuHq)S8KkTx{13ebS*CHH=HxV-C)FtZ zS;58Sj3oYbN0r8_g8Pb!%UaVn87z96hJ~a9Zga)OGfxk2B#jmGE`93p9X7h6TygOt zp#k@++R=fBKwI@)haHxta93i}(r={KHD)#4c9U0ZDaGzYv>Q;x%i{3GK*3GUh$LzEl)Ve+WJa`Nvt||L_X#MtFJp3kVAC z7B5G0=UyfJ(Jjq|JVsbs{q3fK#+YcVgMUNf@>`fVfQi`HCR6{buAaj!w%#vl5dX;W zCSjoL;SKilWA7VBl;Q~Fm%^JD$)kd$^Vc>jT zBo!So98K)AF8kl$s}=b!rcEt7;%Sbd)*a0Tx5_$G8odu%R|Tt=l7jaZ&lvolL^6?$ zmCn*BodXi+aKJq)1+yfAsiXR_&Q~~EW`eEKD#Q1hM4jqvG2iwx#AvzdQa1a>py8z1 zkWbgzM?_6mL)nWL@3>}d*FuFQl;j#W9#e8dE5acPPPN zoY14Km?5|H{|pbGFT?e>WYImBe+2R*$W%ht2w18bZr`nC>A8OYgjqixF7k{7z55HO z#~MD#HXQlDXUk-@{e9DdovfiPJ3R=Hg(~ikvBd!A4^v4 z2AN$9B1X1!IHfNUi0RzP@v7qpN6rtwxjNJ?_N6U@C{5c&ck5C|KhoAV=6{dBST=cV zxo`;TzsW6Ncv{;oSi7X6mVHuzVV(MgeNjL!A3IwJy;DckcOd-c`upb&X`6MkR*#nU zI>fJlcGpd^J;xto_tnfV*7lbC=}``Mg`*EIp)XkPT9vsm9J1(fOAl-8P~-O8J|CJ% ztgL#S6=ks{y;1`hK>!NFrpx?+%=+AO@f=vr;hQZqwVm!UCwxEBUSP zIU8Wf<)Kl;9|QZy3WDs3cQWHz(%l~A6!A|CC2~-cH%INF6&^%RHJN|%r#knPN>0`Q z>Prd@^f17K#BY-8)Jv*i{_2>u3YlnE)DaZ-pbvBpfW7VKpq z>#LS)cU+d%=XL@@`*oGKZyzwF>uIfxvS)jFte1XDkv*?HO19-TEA|})Z58r|j zI_xyN01g=Z?qjAF)wxVt)$PP*kQp(vFcWrr!>57$)})nl2)*kG*dfbo4zafG&JySm z*VrCNcVKS61a3mdAUbc~Dd=DJcf`NClasaG(X3wm3pjZ7Q@iLphy5U2*Tw%N$1jHa zrAFwvluQQ)#pbOM-@whu(0 zZD5&vN}?mn`3smsx>=!CQd*96U>+vCDVXyi$m&H4T6S~&>E6iHn5PGkH7d4~6JoNt zmygGtoh(JAErgp9FMR7$=BiaaW35RKl#S0#T>8RG1@FWjqetHS6rr}YnQysu(ElST~RdM?nj|H z)tJ)t{NNvzC(zN!x@6iIRORoW^-%VB`F#JcDJCedV8dYTfgbvN%A2GK0)ewrMs?1z z9X4AUM6wg7>hdiH$Hl%_7yzpcot=Vj*9s4=NRd02tih1;%Qi3TLRPgilk03^;w`=*I=7=wLSta_%AWwW2{;cz+^idA4 zg}leyG%0@Qwd)<^L)(xU%-16-(~)%}7e9Y-dv`4o%8}6RyDK0_Xjq{)PtHzKB2rk} z(9gs6s(H|v#vY1h;OXsyrkw1ndYKkSf`94QH+g> zI;}tq4Mr^8MDl{R7NLfGe=Dj-ps+;U$F7#yne@Ka!jEpA1n4TSq7W+`k15QETJ-ar zYn|wKXy^(jjyEdT}?vhMjGsBA|Z4g0r{43pQS^;L3qEuEg=1A3Yj;0w;2~MyUUhT zS&UkQB;XgMfaThUl3mVbO31dxOW?2|u5z?r-5bNdB(L%pkZhBOO`YAF#JFSw>?Dn$ zghh4{ll=u;=Jhbfrk)#%d}b?dA$)cB=LC2}$7-PZanTb|(tTcsiSe`i^60bdvXhlp zS?>6+yl851u(|A)U0m|)-3=QIY(1y8n>N8#!6lCV6X5>8j(c zt<~Q~s1hjl<31rz0ueYP6~<)geQpjk3ro!govpgU+y4SmzcP`Q*7G~G&%F|eYuefU zSkC!rNsn4OFW=^%5_Hj8M>L(zU7^*rsl#0ip|uol^R2cjasR3bGVGd?nH3e=-L=r2 zIS}AEu}?)@i2bcK&IKT>K(4!lZH^i1%YXS9g(USCfY-ay1yf{<(}$k92}7~vm?GGH zY(;*{elyCTuy7Dw!v%fes6Nh9b$pin&p{g8%?u}WeZIhrphc7UKV@)I0x;aj?CoOB z%z;S*i`1S13o?rr?}wA%exTsHy4YrZJTljwTa-FLxbvp2NaQlZ+gA@?W-yyrr1>60 z;G=utj&8vY3sSCqqdMV}@p)Vgn<=Bm93-JmM+YKypC??kcg6TJ!sX^)0qK!M@c~|6 zyeD!_&;=``a$D&e{UT{7+n9soepNBCBA+NdP0RtyA;(8)(mQR9@+WjFrAmG1jWl=n zK==ztr$e2m*E4cMzb1Osmu%`~q3?`tE}^x22x_D z1Zoqz){CLmICRH!adRb^cJ7p2k@?-}%O+V(MO<9VGnXoo!DQb9wb#bLWCYnRar>YP z@~DExhgYlIEG&(ZPbvz2r?KgEIA8({?NypZj(mr=cy2#kGrQ+Ng|&YH`R_3DzceWp z8F)c??89*AvCrTR`Pxc;O48PsOEy-pK!B+-`7BwX_etJLdtkE)m z03}AD1;yGkq$o3_vXhMN3p@7tU69>gH}`zO0*xyF3oq(k+0xk4>-hc=zZkE5&Zz@m znQum!n!b3HjJQog@!&5&7Vj^hJCfdsVMdt&s-&oF`|5QfGIB|xO>$0L*>`dWhE%8K zYOl^yBSm03XBJU&a%RX2sV7vvncRN(@RR)j@a$FG7T?SS;`(zs*AJ*uv&mFv63NQ& z_k3~J(*^fp3BXrODuLOLJj2}Cay7t$16|9;!xU+^P%`J`I?&7~d;G2-Jh)jckZD{^ z9uI#R&x|v&Mh%qo7MO4Hh+jeu6ltC-zV^Ha4HEu%=hTE0+wO+hggY8_PJ0$M%VV+Y zCFMMVwu?I~!M_iY1W+-aZ82eJ~KT{xr!pmTAm zv+JtMzVDYw`!fP4OKWy+8Qn%ems$aFtuFhsG6J)ne9x!C;=H|ia2tT}=Hfq5s0)B5 zCc=*==Pui5g|KM@hgXDpk7QCBI8s4pE=dSe81hqE?ll@{&mw$QgQX@`%#hUslD z&R`zp$xZD|&92zD0&C?w4^MVcoaB%Zg5!#VJ{!v*M2p8$seChJ$uFXhBDZR0` zd`Wfc24cOB$30lyBO4so|4~;W-)A@zJe%VXFE}5*@NRBrytk}Y66Cb`XCfd_|07iQ zFyWh6|F43Asb62ZKmG-91?p(TFb|_Z!_fvB#PeI}Z*~Jqr_yHwKFu8RC~FH$IZTVU zlxDxBxBZ53sv=_0$@P4BmMIK6l@_?l_zNI(LHVX#My8DXDzc3%rX*9XnIT1K1*?>a z!_?v@({~JQ3AY!|6y>*0B>({YJ`#XH0}p-4F z-{bZIQ00q%gUfpX2q@Eh$3^DSWD7&136q9*-Vqlan1aSYW55`Kz!)_`0|3w< zBEdVa_OFjX{-|3VBQ-hzYclN%+_^1ErDQqY3XYO z$Ny*V)!^0tGcEs*{r>{tJOA&!|L?m0L%wkv{$KKMlEJ?N;gUc9J)W*ilY99)8W;0l zO)+A%89wEM4nrA!DVy|6Q@WWV{tJI2og3r6tuy(PQCk^)as5|Q+EO?52G)1*i~fIr z@T1-o$NwSo{(r~+SH*WF{~p(a8)UKL{bPmoPb>sDVHfb9kO==W$ilUtk=AnKk_s)V zJJU?=J)hn%5BYDtF5H*p`3c6SaP$@rn^Y@;Sn9W%utdc1v%Vl!QaZ21qlgYF0Vp|3 z20>nT3l4kL6ViI(%8%dW+unV=z0B7A`UXrNzJC85&YoZftg6QA8#Z1JcBTNu|8(QP zpUmmTs8yq7`@Tp@XMol!n{wB;M}^J6F)|rV_dw*7@*N2*@!5V{HcEsHnX~A-TH|F3K43B5(%}p zD>ozc{^Y8k_iHyH_CYHUXy~n99!kwXE*dDn>z+lgS0{Sn!T)S9-glI1G}eAF#*pm_ zw|zcO?!v0o;4#SbkzXZY1`5$4r(&^T1hH-gA)4c>mrCMcp||`wpZ8s1$8;^YF(P1y z9;|})0c_jHELtA&D(XLfUA!=#B$HxGxr+`h@V-+!!z!3Y53n7y#;*zQam?mMN2Bp` zRcYCQ`*Px`5(o>8gqqu=nh2oYIrboV544HQqimBbCO@y1gi}K(H?=ZAm=Y8kk+owY z$_8ge(avw&p7FMNE0hj5lPv0wg!ZYuGHD^t@y-A@CUu?X4s0`jI~~*(;H^0xY`wD0 zXvZkg)ibKMZ}4KQQ-y!-0X}E~ww3q95X7NEcYfgoQyBaq>Old+)4~J!788zEA~w6d z?cAw%`ib|-+`(KZdHTBEXN5>7Dh$B0Y)@3o>i9~e3g*vELzD+6KUFm4jqe&{kjQeK__hxOh}7$L%gL;QpKbung=q zi;q15beRU`(J0TbcxxHIy2zDDh7-{>T@69XyMDhU>mGOiDBMen4I7&nBH*TxXb>qi zbHo=IJG#$sB~j#LFL!F3?S?Ikjn*^Y2HUYMb~e{a?A^z}QTnG|idH*P&sod%_ zHyMpagDoJCl{a1Zpuzkt{t|Z#mEBft7VJKVak48mMA^P5@cA@B3*bACee}fLu_W?M zc(3;!RV9=+?8zp;$2Nf9x@qj&uvQm63BJ0_jFrVL`gVPwKpA88M|)IP`058+rB_KS_eAg{{lW)PpFR(M`um8W0x58?)ytJP?D1 zROMR~I#0FfkdD~g+UX05J1|VPW1#8)P`gvMwmy$f*SeF)@~7{}OaAD+b~m@>MU**o zoSASISVdoN9_Y7Sl-}ar<`@DO5X^yqaamS)C%b2&Sj-o^uB`%S@60bz1-$d#iR5ol zD!B^jxD&{-Fkv-2r`<6##Y|5pJF>lMZ&Kc;|*qEUFJXZ{UUJghNVUl zcwNMW}{B(_xLyPL0pF|z8z|JrLd01znM)Us34&eb# zIaLU79izFY-7)DK<}U94?w#>6SGRUAtH>prcrrn7S}hi@4AhXd8iu$rpD1+4`U%v_ zTk)tfYd5<^hwKJK@F2mEsFP;6f#aFv8bms=Q|(FECWWs#F?^ zulgao!zyWEW)aUZc53OnN^2D*v>Sf`Ez$VsW=LJYF7)$~bp@BGqOPL=U807e3^|J8 zs(M=1gAocEDUMZHbM9&owfhz#9;hs2#|C^t;M-3BIemBSLUH)u7$}NLpjZ%+_d@H8 zf0{U>b|7>j!CPyy^jIQ;G9Tln@QG+M{959CYe$QBCcpEy-08Bi)Gd-3WP%wQf}e zQ&e4z^fPOdwU7(hQ=I3w+9fYC&r{{%clw^_N(HWY-xZ)~^RBgCCdQsKl}uvtm=T`m zP`9IM*Ce{6^c`ig(`UCgQZb*5#qRYA2vG@PIE}cHpOT8u5o47kTAFe&e};0Yz}h|Y z3onTe@M|wIByN5atnZ)Uy0yyY_+}ApNC109lds?0`9DSD#krV|1Ynd?j^+}SOV+DI zj3=U^yLi0NG-hp`If2L_iq&E+U-O+iYTpf`9hhoe_bJe?z(`qsC(rk;ggI9w8MsH8 z6mOClXLF}2=i%dUGvu>*PYw6^iiyE;lbW-2t)Gn96m_>%-R@j6jK2=6L>Q7&9HAXd zSdDGc%~}D^8)zknvd<1s2P~X?*icl@hG~~BcJc4U^7%4-v^UWvMAMq?P9raJ_$+KP zKj|N4YiQ3`iYE22)d9|y_JY)lJffsyH$bZ-b?#x@P@F$x8jG_BU$-i2HYM42p;iSU zQu@A7t1$uLeEPuv9di|1aJ@0OcF88$8=)4y22hkNOQDms4dCs&gD;;44Nz2rHDatm zPTB5sJ$Mgoo}kIYy;Kag=6-5yMh$AL=JkQ@8Dq%vu3R`--6n8zXQ(d#XMZQjcMUj@ zyb}Or8fdpReA37`C)l?3Y-YMh{bs*>W!Kj1zk{ zGc&Umr6B>lpmvG9922YCQ&Dje%P?RFBf^(V@s*7giWovJ21qbwGbAiGxrCl!w6itm z`Ua~81<1y+g>!JAUr>oO@8W`aN7j4MUHiHE;X?>)mX!e&vx}0midw>9jYUzhA`X!7 zQA!AC*kX(_dPa)f6mChz!f0fu&>|Jk;SDrrjxcQO>j zjh)p$s#7io=|AQ2*FM$v_4RG`^>4ilT_NBKndB)lKiEB;1V5U+lxn~qN1fOV?L8br z#D~qMd1}sI>REzwVnSk;)q){sJ(Ey_$-e-eT#>(k+`EyQ@-X9Q_-g6!29P|5U-lGy z`&MY}e&yQ1C8R@Ke(teu?>aSs9if@;7O8nIF37QGa^`KA1*AXfFJS8dXMia4*R^TI z@6RrRef#46OS&CMIdX%(?m4RZoz&MaM0167Hu`xK@>5 zSxf1YsoYR(=E}FKEWWe(3VuwZbV1i8ir zX`^nxLgQKEJSscT>DoXH8udxosj~SIJi#9LVtsm80F?!`Y`##);KiR^aCM4m;ZKDMkr(}iR{gOlX z5>eBEz}C;PvFrMfkUlY4@~)EbNu43Jf9v(RJwt#3+cA!omlXE^pL72WwpEw8kP90&#@H4tEUI&msXYNXX731(*du7&%x$st zKIxP5{-G6|c72Yb8=T|;!xQxI$SE+Z#QYS4q;Vv*^3)woow} z9n9Ee1_ecNiIc92tcZ{N1$Zz2eok&98ozb*im^JRweM>ZVH^`;HzBOJw(jIIL*Tt_rJO=;ckMtkQUj*Pk zbk+aukAw?f{aT#4g%(LA*Kzg2-H|jylKzYA5ceuL@!>T&qG#_2u8OY$mR*G*^gd>5 zSlwCc*ZQU&<7falOZgiZ*UxmW0s<5U`*I&Oat-9TI+b%%!`Xd^uZ+f4o!RJ4c)|3L z5g&NqvWrTXx*{R0al(9;MQNlsJB&C;=uGu>tr0<7YW#(CZLYMpeCY`C!MyUVO|=}FLcY13TgWyDSFD=WGly|xe(tna zh&z{8z4RUIS#skgl!{m}>wZmo0ks zMN)cfU4?}C>)Fto1-vk|P+x%{e0GN2rFEE?vQXED;d~5^LeUhp42w;2PF&ydI$&(y z7-b$iO%`7mmN03QZ`OntMOBNJ%No2XDc8&rmzJ$D%u7e#2(yoQF%hJ)Gp8pMjn3*y z-kL90k^Ps>Q0FE8{t~AKZ!#JDP3q)5bjM9PVp4@i$ua@AFFq?sS<cTl;LNl^+21Svn2o*Ue0+eA`AEuAs%yjw#mlw9;Dg9jCgv9 zKx{T0vTWpN*OW&XX&5Me1E8U%K266JHaZGOsQoU498vZ7J|K9`Fw2$0NW!A^Gx;%d z0@gXH9-AM1cEX+7teczlJnoA6%>55vjb&_IW&iV!X^z#?3zZJTAi0`PL_ma%T4huM zhowGx+e#o=vRu7|F3^DTy)P$a{>O+hy7X`R0b++4re&F9)5c4HTv(b@Br`Y?a zv^1)86}p0~Ee%(gOFITK5WuLUvS^eINldd4(X9YSEXd5A^kKi)kyB!_qS9R_jIg-_ zak!N>kwj?>!*ZWs6^qxzYb?1dHw7Qt6Q^5s`(i;CMia4zp@9eZ?10Az{tLmn^rRk@#6O z<9yf2D9|o3 zw9Xj6{jJsY*ztyZ8ZtrJO`(+SFK#IbC3jIg)4yxts7bfj#kbOLQ#uUKyuvZF5LFmL z#%LU4*9h3!V01TKDKm_Z&9$M3M$4!_w{h>d>JiDV{XH5xtiv0=BVvy!NL+^bwat7# ztRY-ohX*r^3#yV4ql(U&?duY*-yBXL5|Cpf$SP!xUAmaWTS!kONTbG0o%1%T-?FMm zZxtHZ@&81mjOO1zOWP+Xn>ERSG%YAPP{3nNWZ;F`aWBSL6DDc;#NnF=bU_l+7i;q! z7cow}FcV`YiN?=?sNF3L~JyMhanC`P*@jCWFGp9z0?6=CD)~H@yXAR1T zd=E46B{*))H^an|&M@@i^g7ol>%W1DDK{H0bxaD9So}UMEc^gvQKSy@N+(UV{e=+G0HISJ3 z0Zxh{_i8(ub9ZUn$Wz>LTyy-kYz2FCT!AktjD;cx`_de{$Uj$j+r(xP&vx;yjAYug zY4Lm?a#keKx9}0@*9P66PF`%WZc2s?-Y0m?g#pekJ*;1*pG(2cOIv8XDJNsejR(Ej z*v_}9m#frU*D*p(*^?njNRZrdH1H%cjrCo4)`4+r-3DV>xrQr7K-<#30fJ{F8@KP6 z?oo+!h#z;%De@wI-h@r*EY+z$QkEjoCl37C0PZ=@d?W09oOXBfRdhdLs+t1JLD!V= zZ8 z1GfQuasE13d1KNA@Q9qc(s$B-j8v9^w)x(D*i|@rmIi^R*%pV2s!J35D6dZ?Lg6Te z0i_r0JgAz!&qjJ1C2tp_XRoZ)nTT9ZB>Yu*4(%G!(K}%@iR&ZyEodrFojt#(tA3J{ z6QQ2l8I%?AEy>mOe%yXY41Ox)ZZS2 zPSBzLp zQN}h$8J%X!dOU75V`0f*ormt;?MN@*qot~Ie0{PSyA(T|?0!H>InGet&`3G?9Zo-} z5wfV($~0bg;3_Df(|7PXW)MpY-=Tp!Cz{9EFm&!*_Bu2B)Tz$9^NCt=-zChsK>gf> z2*wl<%i>|5rqrs6K`btAJ&%dg^xy=eH&q>0wyD7s-3qcDgXL4E(m5BGuf=6r`wEGZ z-6<82EG})ar!k-mt)rZ2yk>J;!U?xfl_6NsPpP^#9NWc;*9Bj)vMrzmP0>4nY`NRL z)kkKzUPfA?F`9W71}{^Yr;MD&P#+NOpQs4T=lk%_m?f}h6x|hZS8XP^C<^KhL~)&! zVJvcfC@xv*4PY6D*bMs3{p_7%6w(dxqlWA=S%JY;>ltx}mcIaBq#9RNF+ryrg5S^RAcfh_AQ@2P6O9GIVvr?8V28yjs2s)#w(n`xtnEB7W+O|P6X3~4!1 zH6a<!gVL`iKb z$@?uq$WVG0T}NV+PGgar4^bLT#{)gCg8^2&a6V`z*Zf_YVeR4Tmov`)isvSP-|9Wqpm?iLKEWo6grUHnb=@GX+d zZR?*Wdyh@`%_lno{0C6890SZy9+#D>Ztv&i<)?{^ZUIoY!1MCcGF(1<19hBO7zBq! z+Z{m%=@PIeQuot(-#qIkY=)VBFSWpf( z_mPI)3j`5Pi2JfS6#;t*{`9pz03&rH6lr-jx~p%@#<=C=@tyVUJkqW;`dX9}eT+A~ zpT{$NNhnTVGC^AvfH@t?(WN!rc-4S*k)1^*9$|C{{(D2i$PKb!lf z_Fus1s^qlQU%=4m!;vD4zr*!*`Y%ATk$aG1Z;m5+>`^1@u5q-3(&+-#|LAUQ88a|B zSmM-N`0-3?Q#ClzuMI_}^my{zRk{EcAXB@`2i^&eQ&gXRuAGd%UR&6t?3jGKO{U6} zy4$s*@OeJ@;aYRfiv4wOt;V@J505kmHnu(CBia2d({LT!;ct}@=+(|VwK7>9c#Kqc z&LqSY>?eVQD(SD!^k{dOv5t*Ze~okc!ht0$nByCzo)y4;BRsj`jh@{hgXnSY6BO@? z!u;qzgdl_iH|}oP!cG*>8++i86i#hOzj{(nfVOw%N(nD?CiQ#|A-bY;1XA<}qpmHtf zV~w){l}eD*#f(916!a*T)TeJhtvB(>TSR?ZeS~0^qc)q<>d3kRja)Tz=U-#;Sm}BH zc~fk!E=fvCNFDPzIE#9549f+z{Y7$@_z&COY~mJ^5T`-^OYnAWL7@~9^nr0u(1-}z zN1|I_HpFD&E=*CM8yK6EeVoG_qON`zta5E0Kjcpd2T;6!z zal8EMy$hF%e&`$DL=iN!b^2nxT-t02h~;dml{1{GQ8t7yG7KSUBj;b^qdWePcZs2 zCosYF#fjoF2V7z>2sf>I==D6!Tlov9i8219wIuno0Hnc8_ZM(<91x!r+DS@!x|oOR zttl}W+ynuu4o~cR2l5CBaSdN4f{f9Rti=Yz?DodfaGIZNAXC`|1%hjEao26j!T9(O z#XxU611BGtNAI01!a309WQU3z9{ebn71G+cE5+ke!tO5Z_rw~r-r{hD2oAGW=c+IiKVa`1B?YMN zvG=5(YW%cR!=V+PTI?9DI;{9pi@00)a2DGv_;5*f@3}JQ17~xKhJK^HACLaIJ9uB)-6h!Wt)B_4D>W zsb~;U;L$GrVT1iIDjK&?n&hIo>2us(u8lKIssE&ZMUceRh1IX_bdLFFdhb042tL7D z-QoJl7kR$AcXO|+>M;D$MfDEfp2kFG#TTi{MEa1wrF=Jlk3@+0g|TiH$$8N!?q`w| z;sPF0L=?DD)ntyaI0geFY#q#=WTm^#|E+^S3LNm2rK7}wsgKf+D>5E~kg}(+03~2P z5w~NSxUeqYssR5crpBPe`-%M7%mexUcTzma~wx3kT8C8oEWKhr%SG<}ZIQLGQZL^@YhiAQAK9-$7w z-@RDl8fut+lYmLag76*xBVc2b*7zoK2R5v$Kx0c-^}{AP--9RgE8=0@KH5)(<~cJw zqC^Iv+n9Yf%H+}YHP^Y{P1fjj{%r|s;RoFw>ophHCSl}Rx-vF~8yQIZnAWNimUJ_@ z4D~jbFiH%tabND6NafT$lNCruG;GLka{-)6?=p~ynG)B zv)=HkVe+(-DIu6!^9zumjgLw@Lz0+iLFkouc{T`K-YwTvqWXf4wS+F(%MtW8?=?eJ zm-s4s%n9@@5YF@V#p*m(KnTa}TB7`F`R&i3Wf&yFt(1U=th! zC+ccJ@p+&~h==P;9~_LeU&qD!f>`OGn5>@hk@|8^L>V$9y!aPCKj#hTSC`*4czO_p zmQ5HShL>eK*-)x!{~)@?EWOQ07UmfqvD6=x&_V-}Z#Gkw-?voMXMN~T5%@-9-fvzU zX4fzkr!I?=9JYY!$XbUr{Z88>O_|1r#%51ms@IgGVY)Hhe5Y4?|At@I!T{>p@*O;ti@z=pm> zCiLhi>KMD!Ic9H6K8zvJ@)Rki@GpyvFS#%N-Uu=HJSQq`%#RTnQ(n>dwJabJf6UOK zwEoA5XwWO$<68-YpW}Z4Xj33SU#Ci{fb+c9(_0RU_wq+o0g9B6mimNf)@KEJ{SUr# z{D$1<>S`#uC?{_+&&e*)w5vlQN*Ejs;LnRR1cxk3M*_0mzPK!iNBuzb0n;K6+xdkO zA}+5;Es`oS;mzV-IfS{Q;T)Bp^XVy=)G=o`MO?3Bu41GhQY^lhwNukFAwKQqqrSYbmdY&03AM@3kz!+4nr(VA}LJ^-U?T7jCT;7c5G zDUV%*^^Hq_FZ3qgo3^2{M@tGwi)W{7O=B1~)Zs6WA@zwDA&zO|0#btEyY(%NnKj45 z1cp18j^HGBMzeoHwhi=cewK2vGRfab?=J?vV!5X>U5#1)Rc8_UCp*f^ z$yMKj!jKA*l0ts+zFPgQo#!~_XqS?*f(*UtjT*iP&6SZWLZvkOYr-V`<_L()wIkfi zHhzf{Z+Xf7D}D3&LniD+sVRoB$l`0jtW*1oK^^Z~41D_O9~|T#DSD+q(Jg3F>UrF0 z6e!T=JnmS>Z)&3|NYarpA^pFC-S15}PqJ`pJ1As{hc zrS8wRef#>1pAfl|yu=#xK=x~wuy=y*&Z4n|(4+}o*jF0{oVVwN00CP4&|)L$q$4OC&}WQG_;hAPK+^4 zCags9T#*g%`3PqVl+1gp!9}nL?Q$ASrYFxsH~kg^%#+y}M=1`6g%OK2~?CLk-G-loQttMU4uF^yj8NVNo;Pr+rHT=4WXZM~_ zVTo|HF!2C?+UB!adm2zfAE>7P5-ws^`Kxr$#MrA{}&%^dRdqQj^krj{doAhD^NL<4;J(AqVr-e-hwB!dj z3YSovbX(JqdcGhR#RRLk;{UPf{H|G^^Uri`=8o7%n%+u-Om6vWKKRQE>mAX%B@f&R zJpy|9K9L^H13VO2nTn|H*0d>Cd{cPbaq%SlX}u3Gv{T6D^O~ZgU=Jk}bH37nN8#F#p7Ez6n=-r~{ImSntH0#Oq_`;3fp$`g@P3TzMGn}q7XyK!rawG8!1U1!QWT@%Vf@Yy0b6PAHVWhG9nL)jCP zbEjgAAzH^5=O1r=U7t?n9-98C2{hAs<<`XYnKrB;;xLNUeQq+hrE8e*I`%Zq@Ul9v zC|hSIo!a*L*G2D7v4X;$tV0cET>R3$)_A1&-`3&SM;&7{7T>mhZ&Go@AQNYrPS>4c zOt0MnG##Uz;au;J>8teEw}#vpaefu$76eSf`Hr?EgAPbhv>BN14#_`YD!?-Y7HoxewE%;`H)t|i|2`Rzi+9gUOyB|^_@$89*kF6HH6XuL;1z>qq za1X0A>Ix9U3I0$v=Haa*U9?WloEZFJp}_~5?NTu1R3S=YFG4&{K&^WqS?KI85k?4$ z*^e1U6KQ}~nCR9 zJPv%d+gd$d9KGL0tFrVAGqf_P=r((cbHeo?JgRO|V8^1GG9AVfGBBG5yCPtFiH+#4-+m*JfGAcaq26 z@78oDaT#sD`-DS~a)(}PeEfaQG##8U^~Su$!B+l|`$s_l-OAO0^D@O~h}#^ej6?Pr z*elNaPeL)*am{*~tv=27=Rpb^DH3s;rY`K&OFQx`sj##bxs&&PVcJK0n02y79hnFi zW38G4fiOAtoMXc{f>-$+f#&_*Rj|pzv(@~q_4){Y!4{na&Dm&=8mDX8CB9x~rDB-Fo5*t*rFqUPyjB7y zPFTdwCLj6z=!bmiH&1H(hpDqXDMvc0iFiMq?3)Ig-3=CR4>y_mX+zazW3Kyo-z_)? zoyp=zSk*QcgS~~mRDhd$yv)SMyzOWqzs63% zn5w?UWjFDEh^pyvp@fDI$-#6$0Yok5Yc-h}jWV@}(vVd?&vO~NSwuIS*u2YF2AUfFMkHkk;!EWBMhr!8zC(? zW_^}gJFZn+>#`ZsTC5kep5G5dgD{WBgRK3rDHRaL`xPuL_yL#Tk~myjUHn-gyrpo~ zZ(dl_*x34+3Uk_rRP=5xL@i$+nRBK>tTVP#6u(t;5q-0PVttzC7_*;~M(L*>R|{*#a8 zcz?Mn!N3d6foBGudh%9N^DN&tj?RAZppvYr1W@R49A-*L8W$!J%QVaf#nOc6hA_POgswTh|;sl1<#h?0p+j@mjEOSB9c1e6e-uJWP+pj{9~t#E1}NekPWN zPUkep*^0kdrxbz4AWT$@8d-*VAWrae?VPx2dA;S*(56mYhRBEcS=&$D;DDyPrq?1z zR?kF^I_fEFFCGzAd3!=o*NXP_BkMC|i`N;vm9}v3Vwy}6M|aO^`o~q?%jdaIMiW2oyxS|_-Huk4j)w4yhLFtg{knPq4fhQ&6Y5=I%CoGxQ%{^^dnG|m?mFT_)HGAY+f?wY6Ip6?#72%}@MpLUN_ z3w!pauwNOnrAG{$@XmqMM8w1f3#?ox<10l&`3z+xMJSxn(@y(w#vfHywe%yn@Hlt$ zSe0th@1rtzF?6au7;5`}edk@f0RIE1dg0{Eo?bfQrB-5#WB<;-AtJPqHGr1_t^9lL zH8rEWYLFKo9RvRoJ^6Hg707%rAC`R+-Y0D|J>gZx0{D7tkZ9#ZAP4R7;Mt*gk7!7O zWBeuPpXw%+C{tnk2hef|3*GqqN}CwRg(yq*gGUHbW7T}_m30PXA0DGX@=j!Su#HU@ zvHp5>Uo~M(q8$+=@?-M!s{}RTpM34Q%nnJP_7{B;pJW)`Fi2nHHYU)a|1r*HU2n+G z96h{)qH^AnHl0!rhNqn4a`37&UJUc`gu4qzTXXv0=$LG3te2)B4!k zq_fpZ?9~rfGN(gq+~4k=10et*dM{pPC9p&r(rGk+OcFJ-(+%Zi0~^BbW3~~5Mb(2Y z?LjXoG-@cj4)|q3nQ`=X>RIg)O_4saG1t`Q;?2` zY2`q}?;T5}KUI!@hPyy%HVt6>GA|4N2^FF!0`6?uGH-hI1fPy0 z{?NsMLE>hJndswSX-k&l7ZEru3meEwcw&$bGmI^yB{J24GMn5V`csp%L~W<0nRq09 zr)5DqHu1c@h6}NF_RPEl`c9u3XjYhU9pNiAN%Kz;=34aWgDw z|CU+k=Nf*(l497U@FHQRtu$!EoHSR6#}oRRZ=ihA^p~QhffGN>6ZJ-u?5*6(G5gfn z$39EXy;|!iMz;Kd)&`+9Fx}5AC00?fjCDZ-w=xIycF$t&uu`+y5B)y63}=144}THT zWVi!kvor(jM)tt^)+BE1uqaI-piZ+2d}YU^7D8-*-<#@1)WN~pxjFY11B6F>xgf14 z`#=|5KF;MGlq-wgeP9rF3HbS8+*#Af_;i8ej5X`aWY zPH4-loTdAU^+;o5LuExC)xWd+Q*}xhG zRP*H=>?&ZsoLwzZ_%%RW4_|G5+wKy#>+yxi^wZO5ggWcriBsIyLw4_ubCX_ma9v

                                                                                                        G^9Uxg%#66SND&O5Sk{@0Ledq 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 Iv42+nA73J{F8}}l literal 0 HcmV?d00001 diff --git a/_images/ipython-cookbook.jpg b/_images/ipython-cookbook.jpg new file mode 100644 index 0000000000000000000000000000000000000000..039cd0d2494906567233b975bbe89de3bfb31b97 GIT binary patch literal 44429 zcmbTc1ymf});3tUyF0->!QF!gcS~?@+zB2?aJR-?8*em(1cC>5CqR%O!Cj{F-kE#9 z`DV@h|9oeys(N}Ksr{V2>(t(->v`dM1He_5SCR+dV1)yY0|1_X0u^$;_BH^ZstT|H z0Duah!jS_=Fa!rXoZ%?`jlJPm0EBi~eT_kUeA%;ezd0_5!J{W@ z41a)OCm&DOzw#3pCbV$;i{byy1))1kK^P|ei*5gfVOD^(`4^V@i>*M;R*8c)8PhxSCs9({lcI zC;lII{4Z+#7d<$%tZl5_t({@F(t~-Ky|XRM+|E|^p7t)zwD!*b_owndL;MfB{bzuG z(7*f|1_?@@0K#`%0PZ*;fN=B!KqSBb5KQu5HE{p7+Z!}J;O~>CPqX_kzyD_l*t+oF z3w#1h0`FmOOZ&G*R!fK0(#zfZFNQr6e@{pNI)DQZ0%QO+Ko770oB$6X2#5kwfE=I< zr~^8HA@CNk1ndA1;12iz?}1Pt5{Lm3fiwUN@9NZf?EjU9sGdNo~XE-mo_i*8G zF>uLnV7NlKO1K8NcDQeFLvWLDi*P^T_TkRp?%)yNG2sc}so%g1B z+rqoS`@?^LkB85MFM_XuZ-M^?KLS4szX5*$e~ADfU?319yg=YY5JHeeP)9IAut9J~ z2ttTPNJl6_s72^N7(kdt*g!Z$xJ5)pBtWD^O-1E`h|3bjEqc-%#19EtcYxg z?0_7A9E+TbT!;J>c@lXG`4R;Mg$#uqMI1#P#T>;GB@!hIr3R%NWeVjN$_*+8Dh(KD{0)LqnjG+Z=BG!Zm)G%GYev;?#gv<|d!v|niV=y>SN=;G)) z=nm+i=$YuX=zZub=;s(17<3rI7@8RN7$F#$81)!~7(X#?G4V0kFl8}KFugG2G0QQ( zVlHByV_{)2VM$>bVR>T3V^w1HVy$7_U=v_-VJl%mLkJ-pBRnC(C*mX0Bl0E6Ch8*E zAVwf&B32@HB2FM~B%UL_BcURZCb1@oBB>>rBDp4|AeADuCXFVoBb_C^BcmmgBXcB6 zB5NgEB}XJ@BiAJNAu8wY%9-Ur@-iAJvzK8yVfrdeq;XOk&!xAGJqY$GVV+P{@<24gAlRnc& zrdFmsW>RJ)W`E{t<`ot!7D*O2mLirJR%BKoR!7!c)(JLvHhwlcwrsX>c6fFHc6;_* z_DK#T4q*;wjv|hEPE1Z|PH)a?&YxVwTyMC-xLUc6UoyNjdYSZc;N{aR{#Q<~N?t8< z<8v!>hjDjspYgEqSn_1^%6Y#6@f8_7se-scDa2Kc* z*cW6FG!x7boEIV#(h!Oj8WctnmJtpX{w#beA|T=^(kSvrlvC7Ev`TbOj9JWDtVC=} zoKDy#zqCjFp@`a?iWRc{i6up#{RGHMSG^@0ObdB_}%qtmp8K}&)tcYx& z?AO-_uN7WLzaEprm(!I4%dN@N$=k|T%bzIlD+DNfRYX!$QA|>tSE5p~RH{@uQ5IAV zRQ|4lsiLg{R@r>R_Qw59hbp|PvTBOziW;Muvs$YM9`mG+g6j81~ivM!6Rmu`<9j-H8LrQWsvYyD*X4TF~kfd(UnaGbA&8vnsO(b9M6~ z^GgdQiyVs+OIgbd%L6MZt5mCfYjNvj>s=dhn`E0kTXEYI+kHDpyL7ulds%z1{i%bZ zL%zecqq<|cpf{_aBU;_EW$%I+HJy5T0`mgaWiuHs(i0q0@r z(dJ1A3#NW}v3Nyz{q&ab&i20X(er8Y#q)Lc{o%*v7v;C>FYjL(fEZvI(DVMq`_T74 z1Em8CgW!TJf_j4KgFgiS3Q-8D2t^Nd3>^)76_y-!5w0KJ@qy|?$cL>6g^21%>`3>> z`H!L>^FJYevi~#|#T%6s^%QLtJsk5YCOzgM)-rZDjyo>%>?8%q^*{-wy=)4E~Xx+_p1NhVAe3#sM6Te zB-B*f%-Ea*C4fe^z_s|boV41tZnPP;O|~ny_jHJMKs&iQ%Rj&PoZUs#mGA}q%ZD$| z-TvK|UtPZ*ezX0y)$^`rx!0g~=DX(iu|Ac)!G8Jv-T~=>?m_Xv&qE?Z?ZZODts?>> zEkF2wKu7sUp<@DLE#rdYZ4<&19g|{{U#29dzD>WL?w?Vb8JSg^ot)F1TbMVQ-&n9( z*jsd3JYDi$x?c`iL0XAk#a&Hbqg*RmXI-z`5ZLJY`TFONP3_I)Ez7NgZIA7TUmtd` zcG7ogb}RRI_CD{+?@#IL70oOgv>-l%$fpR0-FE7%kx(N4;9`X?g9ah4uHplL%@T3{tnQ< zVjiTw8QVWu)!%RhfP+UsL_$VEg((ed0L2C1;Sdnu5fPA(5Ml8QTp+9-K*U4Bf59z{ zOrU9wLgz-v6Pi?rN-xv!jYwJq!(zylIj`%v%M`Pd@9!o{tb`csNo1} z*<{fK=uHJMi<~Tymr9oh>pR+c; zo<%G5?vDg+n2^<;a6x& zjz!aTNZ}=`?FKS(NohZ2AkHXw4q)VH)qvcX@AG$n?WyTvHMyW7+|Y=g6-zpc&r7{*eq+T_nFvatPHo5u zk4D!pA_eEDkRf8~8hm2c_evSHm09QH9jPu^^j|Gr<3V!#K5<0(@|Ve>YKm4LL!@by zhb({TyNp1!2>Pfyw)~!|w@d6?L{j|Xsc$OK4z!1c`smxg_?i~QZ+k(Z1PsO7(_<8(4D3~ZFNqE>2M%1 zw-av1IGhCsO`!1%(#@)4QUkP`tLc-is({(~c z&UI!PI#Nl-hHbI=M)7r5$`$;(j=VpR7NRX677W8?+u(UUP2n&@+8^bdxwjK-s%wFl^~$2 zVc98&DDt!w?3F7Mm<*-uwCI||;`CICvI(Ff*Q~8^*xJ|ZwndF8(d43T^(jd&Q6x84 ziNM`zzwYgbju{Vcr^%(wTNjrT$L80wYal>lK!C6NM5jBXsZ+Bg%mjzZR5JHr(uh}H zP3lPT!nI*HCN)X&_~RQ*6a8fu93~6#ih`qU1xYzVom^=-LJc@$|M2AjABxw~0On=` z+eLjK_*8S5eSj$i!JBEe3IW8ry0$8eA>IdNvIeedv_+1s?BHYp!{=lSS>u z)PNd$etGaIKJVEsL~G{d+L=~mVj59RfQ{@Q={Pn?2ir1x+eb2Ws3{Nf7JqI@+dcmI zQl&~oCKQis&rWn%$pQ2u^UcgF%F0S|v#Z;2hp^Sixt*|g-(w+Gv2$MS!{FAM?jLUZ zhI6sX6+bv~`%@Tx~ z?F-OoN-0xLX}>0q?c*HM9Mzw4R%w|dt)6!zi`@keM(zmJ!e5UfYiDp;d2$uhIx;;d z~#KFH0DTR++`r~b_ZfGR!QCOoF=OcRVp*2NW?;@z8|(!>{|3`*23fjiM!<73jH&>ZMI&cN-{j-_Xfd1B~3lcS^6=m`oR5Z`Ff-D z%oYQ-ho%aj z#tIuXui{d1rz(4ywcO9EvnGaE;~Cv-N2R0q^;c=v5O2)MhmY`8shO?n{h?}FWk;xq zEBh8Z5(Z%b(SsmlsqbW?o|E)N4+GHyv;1<<6biIEbokO+;dU=xweS~`2jG0_5WgQk zf}mule2T7`-E8VN%4RfQgW0gXMDhn6?2QbY+b~V?DB?X(z23Y;jqh*;+9RT^2PRA8+UVEZGOMVOJbgsztMu8EDE80(u|n z)voP{2A4+HmzoaL&Mq%0GFJh84WJJbOLv;i0D);Ec#R)gvM)$2&GclYJt>89JBR7! zAcNbl!@h^)vQOYhtwubkh;r(Ja8ZfkT$(X`ycrwO?tM2)3~jep$lQKZbr8SY?91YG z?X4KK9tsvqu^e1ha<(?)QbkiO3BPGj%}_rlba9$~e>*ggp?Ku(i)NHVeXSTDnmi@l zyhT*ZRM^3VWNEx$vSMPR9eQM3zc4@!tUTHY6#qzhGbH#1+kkws^~(=4z@gV@Icd;{ zcnt{_j+oGH{unx59~(rjQ+U6Fmo#d?ZG4R(rQ)_~$Hwi}ZpgK=3;&@ba5r49dvd_5 zWYs1Ab2E{R&FadVqq9oB8!jfD{RD`8iR++*R$0|rKWOF)^4f!jCF9|`cX?Y%*m_y+vft_aDKRzT+WnC9n?*3z_`1AZnsYJ0OsDXj7+#u&weBR(qdZ4#-wU%ohZM0e||EN&>BaJMVMK5);qp0v@RC) zBXgOQmMx zTBGhCurMxGH7G=6aiG|i_X-)Ag&ho0d;1-Cr3>2T$y{m_qnWk2hNZxj<=PVQiU&!r zRX%<(sUNi<&p&l*S!+eV&NUXTPa8_R+UD$P-{CfP2daAr?m|>nI}22DF7au@jTCh_ z-a9g*E^Bhe<|ibptTW(f*ljN;XJ(gcoUKe-|6v(X_S+~~DqH8+<12j3{%BYHHsxmh z#RtdiVvcoQZxkqU;@e4wBSQQAQ&Xk;MH;dv@)@u1X6^e*q4?WRx|GV!OiSv7WHXSl zSs~n^7eTyzGR|AAX+Ezg=Xw^6tIa=+x0ix=zQynANE&gOauBIG+k0{>tAjk8g;Amt z4qGON+JSeaJVKxsVz|WzdSOdnUiF@r`15qBdoN-7K{gV+H@Hn~x~h>okO`7;9QNPK z+2k*dP3GW=M4zW5tNBSZ6BZS;Yt9(@R*%GTgqOafW(%j}bp37#2D4t79ib2o@7TI8 zb&gO=En(R{epy%v6_`@`qjTY>dTVX-?V{pkvy#Mux3IAAPI$6zPTA&a4alKG6*^m& zjbGtpg=Z3DT*Zy)uP<+%JfgmI=u0#*#IC|FSXp99{$_;Zp6#AjX7!R(iipukE%(uPbNM{@HHs3mx{Q%N zoT!NC?TlR^jkmAOEGudP*bhW)l7zngkul1ejmgn+N(aef_$<>`<@dr z{0pgXJ8i@4M6{F`BKs=F&gsY|!zs0a`!4x3G`BPU`g`H~}1v5*xDg~`+8B~d}%BgmEnF&X*QSkp;AnUo`3v+ z+zI17_u zHlfczqa38r>mYVsu+&I}v1esa(dmR8I)j15k~9xOZYZR&+3FMykda%Sp5B?640K3O z<5lu{;bPQ45d8f&_aEu8;`;$&Z=4tvvxPmj9Pp-0LB|GpLsiQ%(WnP`JB_t=ygik! z!*H5nk0{mKeBai%;fJ#71Azldr$O#M{gZnH^4%%Ofh{g|fac7Yhu5oPt+id@GJMQ@ zBkLq)ZGXPVk_OHX_chDoF@B-n0XJ((7U(?gY^CSH-`8IJ(dWmAZ1v4W z_Sewi*rmAQbM{=0seTm=Y(caeC%F#GIeyfzzojy@Xj*4Mm#P{3EY0|9M1dR^MK-<} zD(c57A2TmA)6&$UD)0?wsioD(snrLedtb}G)@Tpkk8g}kIk}QrC2Q@4J?MDLY#Y7$ zv1aJfNSfImh^w>e0Hm%hq-?Gpl-B!6{M}*oV@X0|zgqtB4%dgndtxl^mVQiY5flR2+ zuj?{(4z`Da4sK?3*7PUD)T%#H{H#Iu^x=r=_S@Im!eiXFA+lPZ*RAJoYIEwV^i};c zK%W~ESI}{IATL3>C08N`T_UP7i=WJ@Na`S##(M-JIe6b54z!gz(;#V9%;mC1lPb8B z6=j5u{mI*0_6?by-*8FUxJ|ldGG47WYbtaoh*3kQ`(69&1XF29URAb9&<`9%;~Esbz6Q_$dlYu`+BHY*-&OV}7t3kz5LO!@Ae^eUMP z#RMGX0wv3-j6MFNCYm|dks@lzS4=cpXS?g|`ru1L`(M-P<| z;h#9KE+4k#f4wqH;(Rqw=ICQEg;g(M$e=Ga6dtbSBs%W4GQmY7#$7Qy*{o^4nx1}a zLrX@Q009}5nd@PlQ_p_1ciH_>fz9JM!3Tn$e4*fO5bwu_yA4~ww1_?>-%Lk8_*JWvc>&?Fc4N^n1J$zi8%gqtck!M8%~KHYGvdN{O3B~nLyk9md!58 z?6nuQ)j$rz;Qn&@OvvEZF)ZCVg*)=|rN%!l5q)=v+sF_sTe=~2H5OrpUu=o)E7Q}? z>0`5u!JW|!ZWWA=O=7mc`mDCR6Tf7Z?bGJ+KLg~L?Mp@TnH@~zN>623Rw!31;o_Bi z99gv}?PUwQ_g(`~I7V0uLRAsMpBV(L1r@hJNH;E(Lav zcZK;|bVw@YDuUdkBPW~pkVBr_F+z^R&P1Imdl--Zj zKgr~acu}PMGmy-A>gUv$K$=_9D6htJ;Y=X|(rP>#NP}f^o3(#-Bf4kees-7t5j%YA_;eI>q`g4xUcII1exdM({8bGZ)c+2}wn zH+?&%(LnS)4RK?#2_+hn%{=wjkKFju%W6{6D$K1iw(6VAUA(Wsp*Q67>edeP1Pn=u>mo>OtsD@?_#pR=5#KPj*>&h+Kclcvz2Wz%{|02(2r-S#+9E;4Cyl z(c#w>lQo-QqcC}8;z?9lymAw8csQ@w(?~6US&0&~mC~P{LVsJ|xP7XdVFdM4=_3#b zB!-r>O_XTSopl7GZdTOXIpMTZ0nAIE9uy>4?_;vknCFN>&RwSYW}~E&n$G0vXL8hrjM;s=#a^3o9-P32YrMF9Q5ZrH@Xja>cU$_8GKtZBxii))-*oX#y*ZiS)e;Ftp@D^8TaREQyJuj$ z5qW}ZJGj}j%{gcf!fFkj2KflXg>3liGM_Sxm1+&Yt6dto=e(-+*fF6Wz!mS~$+6X6 zZRL3F=j>J8)lSDT_t=&DB^Q(du>20R=YVit+{88}R*4|2HC$4ufsD3|zv5)%xUGfk z>^`n?b~G&IH8Cy+=FLa!C+RnXI4z})d3Gyd3&tuwzuDp-jb9h5SFVMq&OKxKk4GL+ z4Q595Yn@icSubBFx>wTYih=BOz3O>a8|rQ;DLLdBN>kfy!4ez9-rF`%mpaHrCORt) zH&q33Dxc9%vgz9Lem(vIk0pS<^R0dMSVcg__N+8)DNt`?+_le=W*5F=R8TcRJ%Y-bwR>k$V;0_Iiq2o{!XYQS`?vS&gO?4KS*9_&25|uMlJ?+%sUOFHKpA^?-Ruh!+b+FRK#?ifp!+ z8l{gk!@x@b$2>Ak1!ic_l@z#3^~*^FsBlUrf!}ZCAZVLBW|^HWX@rxG*;6Mpso{U* ziqv$Zcx!y!=&$SOjlasyf{qb5shuq@8Kk;FR&~|z{bicwdE~~#7^CknYafHzO$z~X z5sllDTfYM*^|T4JEiV97Gp!NTUHE}*AU+$k6uTXQWuZ{F+Q)S%D)dC49Y9^xQm&Ec zTRwu=>xiqCD|Dv|GEzF?1g$BKB*kre^QW${e6ilNK;09GPB*pLJeRj~7Rd0S42@^$ zL}RpU1Y5q00ITJ9j(V(-xH}m?ZW+t&oH*{ta1)vPzIg@;>Lu6t1Jy;T9vB`mRh2${ zNu~LtwZCNDU;F|umgVr;793?4tlLm|0GdYur%USV7(X5~TX5?%W(dy0FD%(~` ziemw~MmbGu!_>U@#~;^H7O*p(@Kz}X^;D%Y*mJCOk0igItQ&KTRJsO#bPhI|Lz{pu z6l0&5yZvUZ-}gTdFl%k2KHWypF31}&6byM0Mjx|?Hc-o!)*S&VO!_cp{dQ$mAiS>{ zSAn;F;8a5W9Ky-2(%lj9cIWY@IQoW74#0}C0*Wo$+F!?nJ0^y z6<_bI5t|s@6jw4JM9wN#)L@&UMC|cr{wV}ouNrb_`qVR>rnZ-wP*F9Y)OgPQt5O}J z9Y~|&{h}@tdyDV1aBU!YzH}z`x-hk?PA`t;5F%>#L-WZZ&vR7FGy3INLw}sttJSMk zz+1S|Sh35M;OI@2(B=oGs$d?zxIFO3w3zeqz@XO;$ zL4XFk&XcDjn?b844)x5Y=P&w4d3N?EJl(JGXIgN@Pk1ab=N?>3NcPWwstl3FY-=!;gkQ}^4`Bwet!SiD|k;rRl%L18IJcLqW{ zviSuy&%lk`#pxJ>-lqPTfqTA`CVsuO_o4)Rd3mA^N`4_ zjybBdoa<`|&tIP`Zy#Cjg7U7lZqLK|5)e9RP9W_}t&?Uviqe^}fMg;ejxxsQEH|^r zVWFhqNCqTz<;5>8=bkJmkUC&+8&BnJL5 z%|~_=row=Uo)aRH;Gz5A=teaoaMH_UJ^rKMs$k9Ss(FPNT+G`$zVp@uZ<;Xuvu|v` zPRYq*Nz0T9@74${pdhOYDZ}@TQqGARmF{B~o@uoJxx`r@*c%EmYeIHpVpz5SDx~7 zFyWs4p_<_Jmhne%Maki?O2JF}hp}XX{$rr>;xwk>{6JGV=)G;U0R!HT_*KGi>0Y@~ zmKLj1I#7ARDD229xl-hOFlov>*Q(-k(2E^Mz+M}c=LyTFHeb!mHF z!n^kSSSmS`s}C!&fA~Fm!OM0=g~@WOh&ci%%9T~lr-zYTZgy*!7$y<<`INwZ3}q@0p9?NVsO*w19iQ(D@whZJ zMXe*up!s_oJv{>D``K>?#3Yle!~IKI)w3akce5j`Mhi7_f4)lc(OzCdwofT(Y~S%v zjmF}_tzMK`HnJ_PY)mNX(=pM{ptE;H`hK@0x03QkYA=c*`}|sam6DTCQ*j@ir6>d) z>iN|qu$EA&Zb-3zqI{1HVxrXn+Jd_u%(Nz(ztgyaU-FGUcc@I)Lx|>uT>cy2%$(8Ag;AYLb4`*bc9k8)#2g5|9@` ziq6~ASklh`8evLgI=e6f)m2{FgaGvCNQ?`QsBa?Dw>4m(g3P$c1j)rl%zK^ulcasoMuTTyohchOs6bjy?O}o(e_`K< z`t7?-d9Oh8oTI62iLB~Vg-y{<;eqjlDEH%|_J+zS29Nb+3xg|Y7d7k&Bn7FV>?|k< zb_dcy!^sJ}F)y(szayGKI;hvVD@j!6hmcBIwez(cMW(;!JEh8J;I!rO8ta3^q0uYQ zX{zs--j(eocG}4u;j|)eKYtH*b1rTm8&!Br+N4^zw{F3CPwuk3dZN08;}CDE8vgQ5 zR#2iWLxl4uz01!hxw=D;=RkO{GljS}ICc+wPIHSUg;LwAZ`JD6?3mv|5HUzb&p*-~ zW&J5FT^NP==8>(|n(bA>L+3-Bee+A)4@~09OthZM(LabKXk8VSEf8t6p9l?ZstoJs z<53q?DDlVh*ex~NXE_=2e2+Abk_4SO!_@tKkkq&Yw z5=agbDxU##g9p{h)%=SlAPlPDr771RUZl?kY#m#CG!0Y`aQw7*__iA76evK##iIp!TP?Fp!wUN@aE@ySjl z9Vk$Bfw~w=55$Mq@J5m78V4*-x_l`9c<@es2I58G+pGN6oo5&l8$|epC4NnuT6;%K z3oqifBVQSPyL#lfB;HnkPK)85I1fMw>xJq}^EJ_QJUS74P=I-_3iR~LW+Q#Gpsh{#3 z-`8(th>_g+qoWWV!rs@02e(v6U#fjPRZ`C^Xuhkt2Uh3KeOC8qKjPT6L3y#VMH8Vj z&%fpV3|Ka75^dCPN%SsN+P6?Ug*0+&xeCM^+@Z^-t}1og3tBHf3|-(rjaCC|*Bxm( zmJ`;P>#u8j4)pTI2F5yaUQ7K_5W7SF(bp2^?98Qn+uai#^r!y%y4Lx30L0-S;Gv=J zh0;$22#bw}>gh5b?!R9*o4pKwbY{)a#FO};~GwL{{9ywjnp_3^6Pao`?r za-7gTy7JL8pl@yJuPXu$k^c6s7u>$dISL|syEtmrYwza%dp{#7$Lo)A5Mwac8eUS{ zF8x^nr5~Gif@AuhFD_WUzcnS(EcO-1XItb&5~iTe*-xy#N*jmDeNz-q%*4Gbmv`hy zDmMhTxjG+gsT_D#?q=fQ#`%&4b`%@JXEwusM0YlF7{)}!^f_Y?%ZPWA4}Lz0gtGG5 z5JZk=?9fb$>8(L3nW6~2>#>>?c?@Dh<98bWJjk&xfD$x9#?%DZ@^@6}*9zsdB1$g# z|6DkB-Xl0=TUzKGTYepwYUC0lgQ%1L=?v2fNAFCy(d$|fByLd=9bqg=?ksavB!f+B zoWHS>*v|?%xA3P5Gko!Q{|OEbb5ui9|C|q3XUjh(-$XEIhml%z1S3-#nqUj12D8nd zQtFYo7r$G|ztV5finu*83&m6;5MO_dJI1h3MB((*bk z)@P?;yJFno;vk!X%4mAXu2|{gj~WzA^_zK&YI|)%6F#R1Dap`+snlW?W@2l<4`@ABM<-;a-_kEDj^S6=yq z=55Tj5&dd!wb{Kcz>6-33K0bL`|pD1TGj#zFds zf)A5kD|a16G!4m-O8%5%&v8UzcjzV^KGIIUHtygEAr#i@1-64dV<)#a^4;`UJ^Cn?bN` z?`(PLb3{?^q;)FxaDmX5^dxxjg??I&9VFR&!d$MeRnK>ADT31aelInyjF2<`AbkJP z28+3&*?N?*T)HL5#J{S>9QM(usSSifK|Z#UVcWxmYCN9;Ei!nGuz$`uq9J5ZIVH~l zJF}Cw06%msGEEJIY}|iGvf1kCwB%_bgC5fX--q8_Pn=v;o_}&lEbQJ7zTv_H#J}`; zqNEW!G?fy(W8MKagy)Dm_vSA$w#@@h#VSHkS7{YrrQ9wroslJ>hYa==n~t zuxE(^&4Gk=QlgxP_g$>}A`AEkq3sz+kA>TqE2+a2F>OvBX?*3!;o6-mlmo3&=1ER) z%p$Mt1{G8-esiep^GK&*d0<_mnz?uea8>zBe}UQCex{n?^wb_mP&Lgj&0Wn-vr`Ww z1Wjx;V1?_{@L>dFaCF42PVt3MReXFA*t9Zntd(lw?BE+91D)E*JIwvwpd+3p=Mls* z$27C!^+Bjvw$+tVxVBho7UE^fFd!OcK$N8PZKvwM$KN}nP^EOKs7bL?R~~J*y^6mj z%vY_4N>nLO3sku3V>{_6vT2;_d@yePIF+A7`o2P3z48h|h5xj4-rL{5Z^Tpmix^#z zI6anebNtz+BBMkkRt^FKq++ne+9*7i<>%(= zALi@E;%pH4gu1JaA~KPFYvVHz=RQv&=s&t+5)o_bkaAX0HpI9F@wCl(s9wI&(3dl} zcCmNns)HXO#~O}%SiVEIQD#f{13PDzMU|j) z!6L$ti)~80v#j8|+0k`}bBFm;`H}%UhIbjA9y9Yr>wfu*m~==6aaD4#EjQtAN8_@Q zhRijJlSBIy3NDd`M3`P87+743R*nHV5)!5ZLeyz-0fE?YcCVB9`+A=NzrP`%v;nza zTi1-<@qSe7U}wK8>i8QiHh%iI2N|n>Ru(4@A^eVu$NYY8B8;8fklETUsb{+%a|=p7 zy?6nilZw?#y*O@^Vw^X;w1ifsI3ah=N?&+I^!2w$?p%Yn7?d49KM8L4w;ijf%A&jo zS9zg{Jy`caLZ@Fr?~sP_iD<;wPSUn3O^2sSnA#GjLlo|}+pYG6sC|rrFjzgQ>2t%2 zgaVqmI^Uh+O$s5bP7wY>yxX`k5<@$s-6Ah6?Mz<8ip(K=^)om431`n&5 zVSZx!_IP`Ity~vY~amPt*L12AKy`J4j=E3CTK#3b!@sCz;)c61@B6IWsi4~za>1vL_p$Ju# zA-2vaBU9+!M9qLAHOCVojG$=UbG5dVGk%F44UNdFtGoSC z+hy2S#@{XN)?JyO|12ty^J^wDHa~R^C!Ko+Vb5{$;z(;+yYcK7odHd3UiFd5Gw?}F zkg?K!1KGg9mOcj^i*+VW*Q?ty#hUDESx%kod|nza)07Va*fN6th1-$hgu_OjdtjHN zQIB5hEG_y^6|U87Te2GW;m@(rixZ%}t2#7~L}b6hG@2-?%i2r`e2P11-aSio(jrKT zsGg-lge!rlD4H$mpR91At-~sD6jxtKp2{sYNH>YN4+mgJ zf;_IH2H4gFl2Q=_rHNOd#b1M{i(SsC6(M`s`mRg72G{b5Nnrb)AK@zTSi2?uSE;6R z>^m`wj%pX|gVqU_^i_Jzv3*LMUpjoLtu3i4T*dfir=jx~wN*H{_6;m38dwL(>y!2+ z)*P?3q4_HeZ*jl@3(hZ9JEZXu&o(XGQN(|{5WekYjG8Wp9WY{>X=wMR<{q}ENY3o#QjMa`$ z_?#p+KKVWBrzJ2WWh-j;C++5~lth^kSvs4**=S>fy*Y1ctqEud$PV;4zb?7XH3EP1rzf0=2Ym0wC+w9fmGLni#N2_zZJP9*Oxi%a*N=cx@fJIOfYWpGXl z+GI1Xp>MkrN10W5S>btMU!CT`2RA#`&mPxuiV1NMT#u8Ik#0>h)k8sASaj=$=^wVINx|=1S%XeNAh7 z~APOu=ol)2d@4O%aPux`b&s~sn)wDBWuvNZ{q9E0OUy8i>)L1%JYj$gTFdH+izC|_~0V>ufhm*6aIQ* zb#BD1lo~REgrYHNU*82kK|MN{(nlp}vAX>hT)Q9ryK8<=?oT|%587DHJOe%}cVM(# z9sS1An*2*|^7K-d;^oKWX&m>Jnc`Q3?)t0if_xwB&e12y6GSvnk-_aXCT55k+?aUA`dWMC?&rDV z>sRc!l5AI+ve3B(ciY^Sq6@O03Q$jfwY-*-k6ErFH9=qg5AxnBAg*Q!7aanG1P#I6 zgOlKH!QI`01$T$wmf$Xf!wf#SySoqWPH-o9?)>|nz0bqmZ};&&te08cy}GN~s_Oe{ zU^9zQHuc|#(}mm)muo?OKqm2 zw^)01qDDT9UdquC4L+*aMAz0L2bRB0ZnP{-}B0@G24O7E%5s2U+q)fqjevVy`^ zQq2`|E4_7?kFvWdV86Cr5_7eT4Of*Hu-$UsA1qhPsJ%`Tvq*TO^<6ypY z+B|gT+C6|>^>^(Z**<)XT>Vo~sie?>l13Z^C+K?|<4*AoVRJt0Bb7iVB@n>k2-r_g zD2kd1=jlhlS~OHDGVrS6CU}6>BHy54=m$M6R(Mcs6$om!Z8}Z(Gi1-pY-LO~nh;3w z{PwFGV^D292upZvGZmh}G6ASQ78-5DT8-r<#Q8DaxO zgWRBb*aa*OzX>YQQ2S9cT`*Y@flDI-zg&K(wLh~(t+Z7N3`(mBaV@=z4gkB#B(5qNe5?QQuMLd zu32mw47A@hfrLl9w5s#M+^Cl>h!D#0h^|HvaxR?72 zS!HVMfzlIc2zIaw;L*!yOLL>gn~93qjSBS+hw@%c#Fl%RnmksQg+=BsfLFzM3h&(D zD^g?fUqIh%z7l%rDZ7a8RlsYcX6F{}#pBMOnjAx`Ndo*O;h5(fSo#Mu_Z;rL;S8IVDbjX>j!t90$wU|lIak0yt?ofZi5UVH=Iv! z)Age=IDMHG2g@HJy^_kP0~8f^_IM@sjqwBaXkOahe- z?V`ztFlfZWpM3br-=6qGgZZ8JGh~>*3-YmUVWBj_8doA5DwOv~i(I zYz}g-e!}ep+}YHPSF(qf@l>RT0Wb$A!^DVQ$@6fq^vQH4~k zw@w{Ys8gbi4aJRHUMxA1EIzM6H4Xj(h7Q~eG<|jb8JNle7sBng5VX${ zCJ4=4FtCVVcssxB3^MEWz?@o`P)AR+gC1t(VtLgUu7q~HLs4{VvgZ8y=XQxXH`kij z6HRij;4*Y~n6Qt9m1by~DJ4gxS2zCx*i{bsTx(Z@M2`~&>s|T6^6Wr*UQRz|;-_wD z*8|!dUr*dJKKhi|p+ku|#`w^So)KMsrxIpOH#Jl5ULZLb%OKWI6gbs}gFmv9dVTs;NI=W`DNpB1*Il94 z977AVE%Mlu*zqCN`N2GVgpoxRo86S$ufCN-rc{qgiVi*a3|Q!z5kFhGMyU-F!|>9P%?!d)pd<2v=QP;IBMflEN4OOI5y2X1 zJ+aRngU#H-mR%BK6RQLM2~UK1!@1;n@g;$(dt`@mVAD%%9-Li6qc@r>_DfG#w;{3Z z?))I=%&Gp@q0aB9-k3SC1wq2n3Nfv&m`C;Uid1V4R*bXy0=m@jaK+VZ$^|H#hXwM9K1+Y)$ao>haUUg>+6mGrPX1ppPa?TK{x+ z*GYtzuB;{<>+3OFm=tkvl$J{FeN;83qT|auLBf(FU~;e`WxSV4kc5&i_|Vy^dTm*u zM&42M{9I|OM3CxR~b4P;eu+~r^(uy)p@R5N&zBs-rbG86%GKx$7W z%9Rk@Cq2?|uzw`RDM#8^COKkPQDLg_JKLCCqj!4=44 zO_fRYmOuxFxI0*nNKgw6jhtwh(!Cu?7ijMbjB?Uf2cG4dAs37}vpEI;Z}`*tTCi3s zh#2dTH}~tBp_P#(@2@s9XM9K|vUq7wEamc!@KSYydL5A&N&S==r>JYf_;KC3Y%O>y z`JiVF*2PyHzQ;{1v)iweJWfNm#hjspPSaGFXL`wO*&RXgEbm>7zU&CH>R`Bs4o`Y( z+e0Vx8@)#!vxEkKM#%ipaTy;s`eW+5s~1=*K|%AH3`9{4j75p+flN+q7C50c-W^`_ zQTq*293|anVcqDhR%KFXyW{cU120_>M*=eTSC$G)ilblPZRop8WjI_+v>G)XSvv*d zbv?M@>VEIg;d3Jp7PqDkLyO$(xOqwV#b-YoUz^WT@Y_3^E>T@&m^%R zatc2uu7;VYqDKZ}As)JxktZwpJ!iZ;WvQ4P^OYFr_^uoz)|d^0sT;rXQoPMPX5{;g zN_Q`nrUZmPRp>nT6t~$6EEsQFZoFb%qff_2j7=3LOe(S_FSk2;=0+rh(u`9C_dv{P z)6BJ^d{5lU+by)1&YO2sjp!cS+l2UUT z^py=+m9KbQy(MO7AM(SPzxC~}hJ#?>Qq7#beX7r!pWg7Z^KY|2gV;iDUC0G-7~a}$ zZW&r(^XQal!z90}KUUI@E~!4$n)Wrgu*5-EhU=@Z;STi&;=z#t+AxPp^{K%bm~hm% zsu69znORFMQYrjoKG!QehF>{US2l4M)V^;RCg)i}Srrg{<~3*pk=rK2ST4tuBTPxk z#LBLp^t7U}Gq6Zx8mz2$Z|PeMeM5+Z&m_prUEY$`z;(IUJ2}q9_ZQ%vc}B#0Wc|q$ z_}$q$mJlqX?h#i6-%kEQXDot*{qyS?opY4>6QTby?O#AP0s6=8#O>2qcc$iB4MvI`>tijc!DAO%hg6;h-^7_Sc0aJB#FQ>_Pl7OnH3v*qM z^rTQyRGFF^`F0~mWgUM=vvUNA_N`!!oV;kXE=M}^ zJhK+eC0Xjm`HmH0%_w6)8tueXl1tD<6tEVtd0uJO+`QWBKmu3MD7pYCs>AgVvA{oQ z*J`_H2bDu^UU@s&a=$**#M`gRF9 z?)G0o^RI=8rw*B6oMZ{U60`{}v+7G2S*ZzEI*t&E!FkBQBo@8qF^sT1-(g#t{Y^i+ ze#Od=1llJu>DHF*eN!r(5w~JA?7*NWNANw782L9RZ*)ppBA?l3YLCJ}8_?mwDN%1r z3<~iA|2B!+c`bq%CM;wNDmUeGO0>J>G*1;@V2(fgQuEo-(K>W*KLfl{r|HQgg}=M- zx&G@d`IFk4>+HG-rP2*4TKhqer@+vowig-yFJamBY-0xklioLNI}!^lw#r{4o0UZM zW{hM649%goig}iNrJB)nYZ<^_LEBvd6#(KnenvS#&F-nrb$kR;SX@fCZXxE|uc4n# zgWii5NBVlbP0iYm*P=;a#Sw@C+9|D)0{Zkeo5OCL4ZQw>>c?rl05b>0Inw3|QsdBJ z`;d9b9J4N)u{FRS=1kxom&Gj>O?iJkI z%_W3(vd2DVL7vzI2HPYlaYjF{eO&zg61f~9$v7*8`F=eDmvwOKHB9BX)s5E`tWD@h zV3Q+VP%6~xOQs|`Pj02<-cu9sg7kG#`ZlenHUYg1vc2o<)OvU7wUN2vlw{MUHko8B~_z15g#;bjDXTlH)^qyMumiegU+a!7Vs zh3f7@Dx@*9-jy(^he(xuxZHq^jBQtT!gFEon2yqpwK47ew;n&n-q?VH2FG1&4J(xW5JXwiVqCSvuOr|zK%d4 zX6t!k=no+G5te0p(<8nyP3tNq{+tD3=uO!ZN)s4M;+Nn%NE3u(33N?@nXw*!Qnz@p zUK|NzF(-6L=DOukkfnQ_*^+$g%gCB)MXps`ACt~HusEtkwQVP~KJ#rF0Cxj&Fio>< zw6^q!+LOWI?JCyZj|`3H)0aNJcF|aPu`1c5GA{O(wZcu1`+DU&EkOx;Sd(BeVzGa@ zxLXCFqt2v=-_{y#OEnrAr*)6sXit5C2Y=#_tUZp8p7AZRydBqx?BkoI`O&Nw119 zBdkMbozR#s?2A$Atez> zWUHHC-jcfGVKauIgN?TZe9T?1FvMktf~!J>v=Xeq@@zXQ@k|Zliu$V-immA(o>9QG*eNcTlV*QJ_4v7&J?%KPR1Hb(xFpJxI~ju0+#z;Eu7JCiD2 ziQV;2502#>(50~gC;hBPkNAH2wkj=P`_`(i#1&oTD!TmzB%?J#x1iARv>*wyBkpsb z-ILYW#XP3QJQ*Dj4y>UX;O%CUU>ju-?1}D}*k5e>w!t3)Z)ucIv?PE(nb_5dj@KTkn++X#z*G^Ro zjrxu8QgOLmx2p?cY##m)Cn)WS_{^>CfmBF`Z&Bj3Kgw)szJN3N%nWTo4*fFNj)(J4 z8$_4d9*v3CctlwIE>p_1w0f&WAmyj0B{zZy3QA%7TOZjORbmBh{DZeJFZS=#ypQ7x z4;ltiYHZwz?_owBy3y5s?7B?pQAiHu#$mj&6;MuJ7%C%-`X4D;C$N#2SA5g;d_zT1Q%t``R!D6i#qxkevnB2o<+m z)S_|*%x(xo%~*h&9i*<;q|%h;E3KSx5I!H7gLUt3?xI-&Z&SUmOZ?Gde(<@!_eplVcq&Aj9;Sa6-!%A7gbOq9_ zhI1>u7$!*k54OyUW?pb%i9XT>=AKJiE$J{GN3@>>^q(O>WEE#``J}bO$Y+!XHMEJ0 z%u}P0^1-dItJNh+A*m!K`U^)h{+79oEshQ?oyiI>;G*Cjj1d@}DMSOW7~8*xCq4%j zoQlx)cpeKmN--#Sp??ecj`7$z1NQw$t*U6v3AGb>Nb_^WAHmccj#j2G#|Zj)sR@iWqpdHT6xK6UP!F_(8qJ(h|>20Ssy*5@Cxwh5{bzgbFB3MtxM*A(0`~o1(rn3hhyu!g zk=jYxl`1a3Pjsu(l|XB0$xzO*KCrhjQmToW5$2Nro@Hf$7RA3oRL1rfpzO7Kl|La^ zOw*|L$F)wpB^z|j8bO-H1D>gS8KX(_xmL9TdcyxG0M0F!erZ$t1lFF4r4bx#%O#iC zL=LED{M^o!e!#U?_Ayv4YDz2OYcnZ5A!tRxE!PA8T|qmYF6%gDXelAcM`cRC(+ zKEE$?p|)Sn6la}^N%oSZ{;^#JsaV27l)+&%6o{->pUqz5n~HMfm_HR5a|5*}2xbHj zl>eOnwi1oU-oO=S$+*(^cGr@+_4L=9CSO&_SXFyI;Hm99u6xe#ise42ebU=Om@Vs7zL$n6RJ*}q2t?RmX0g~R z9-{zNm27AvM{j<8m7>O6c)ed4k1%NvH44q0Fs88((!4^+J4obJ@x$f=`;Y25s#Gi+ z#y*gqs!Cu>qI)iXy(L$9fOA@r-Vx^5DqW#-zeHz%eGb}cg+Py!fkASU1VO2$e8?MY z%{C@hWse@rh-s`+0KM!Ku?cVnLsv2de-vmcLR2r)hNU_fEYGCk^Pv~NTtQCs`)HrE zP*BT7J@F87HeLHKCnZ;}x@Gg3YNDToEa}cpsTD<9VG@W1I3X;w!}wGe5N@6#g8tv} z1~u*;ib2^QFON}&FjuS~gAw1!9mfXS#T^Io zEk7kyL4}_wFhR$pI;3=mGOOV*HFJ)>+ybbS17RigDj>_!h*7@9dPR zN-1HEmsh@$kKK74+6_ zv(YpNJI!8toD_%3dHup}?16b!<(6v-rlQhx2ONPVE+YN=nP}V`0aL8w(r5@X-vd#A zD#O^z%8o7~(~VZhUZ!B#(U0f>nzk<0Dh(M_ilP(JAn%Aebyta7;HT7Y94kY!U<;8x zA?f{cef7qjZ^cZQuAa{Tz58=UqF`+(nb4#D zs2sINLo&&ifcvH_&1k0O0GbcGwLQA>Od!4$T1O(G{IVHQ-W6=1(H|xHq{;l!GO&mp zZK}$)2qKE0AAL_5Aqh%SkzoDTNn&NC`t=%)o-F$N+zXx@@Mz294HiepT1*FB`4aYr zG|nOmuvN{MHDto#WnvqfP<)7rq=|oz+W~x#m?}h?ZcI|4MoIjAT z&Qmw3WNMXAZN%42o6Qm*cU&vQO`r4@Q{c%powq=O7&Nr*!t3-!e7FVze$R+Vx`^>` zW;pP!1X(+9b9|iA7q6lJhqW5Et*$wQ7)p-6837u~#7-$9`*CW!=m`sOi@!vkFkEUKX<H7+?z7LJdwRH=2mKp{9G!t2<&ox0-+DCab zBVINAgACUFZPYyc7&t31G`84F|8uGMjIp8!Su!Khb;Z76bo&NA6;8E#$z@|1OMW>e-UPWMm$eVD%F(k2HyqnKSe)BHriFj?SHo=oKT_9#W zd~(OY_2N^H2+qXD0HGh^r zh#XEPD~eov^o5jIH{}*BM3XoLyknoLHqL<-ET8POYZi1!7-(B)qtrE+J~;4l;HxEp zPMEA`h~u@sb@AX}gG5RBXO=#WCn`_cC-IutiT;sLiim)_ipY*Ho~i4pXR%_VdqbIo z*e|C*89+wRFCY_!LkQL1oO(NpZ}ul&`=~vtHOWWgkhPH`j$LpNpEJI=t6zr1=DYm& z+$?xn**arQWZ6M7s+MX5papQf-bbx*>C+~ofCed|bdyYf`drm1M1)Xg?C${|BCLv_(z&J*u-||HQAJPz2Y^siR)L%YQ1?9! zC<{m7qR4{jB2QwK3Ky|uMbv}mPVRH?(O5wjYiJrP+d2d{p?0^V%o$Woj+_p5nJeC=L z23M)WM)Sz2E^1zlxVq5mzJ&QBCLR-_)j;0I;uRLNasBkWJ}bQ7=(Vwxr9YE(nlafz z$~J(Gr-IvxaHXew(49h>->IxMUB~Ydt9N!Zd{N48zDG?-e4>LpmiP9)DU^|aUv7jE zG0SGoNI1JKJH5^|^Hy>)1$9I4r^{sMYoRM-YKy9 zB#DTiB3kG*W(NO>5S@r?JJyC4Xu#M@kC9##bg2wC>d?b+f`a}b!Q&Y zal<6PW6lZdTIqs4jxiiW=gTIQ^*H@Xh;binVi{qYDC^NcWb&=6T`zgurREHA)OJnX z5NK_fb4rZt?4ii%2|MZ#BNbTqM<%=8LQV4BVuhsyyR@I_d~&ynHmAxC7mS_H@LHa8V_Hb?c-U6Y$pJEqMzct6R$md4SX!7f-2^s|0sJ%KMDDS zsmYCHiNnN_cV7-}GGXvh9jE2cZg721&Oldeg7hsvJuCem?NW*4N6-N(ju?4S8QvQP zw>#D!vi=2>D&>|lswcz9%>AOW3+!f4l2{^tJ_)F~;o-wP1ZVO#J<}eR#};BHI&9Ph zWnls*zf>Dp>RN7*-yD9sbYo+1U)>K9s<2ZyWckW_vW0EQs4k z=0BbG=HAnplReS_-tlXLKLmwI`sQZBN1;MB3J1!@Gs5oJmpU1QmhcMvG$M;8sjEk7 z;wG`f*t$&J`Cseejml$@e-2$6Ou0bq{d;m6iiPczSD$PRqaTz%o7^~zRPUxip1=JzL%+N8i^4JuAAI#-$R(C<`isoWyXd=tUyCGYf zu^B`S(5Bm|{FK=!Juhsd!S9Z@?0vzfa(c9UAUtPm6aSK;r1AXwi7C76VRjx`H^2S; zXQAZR1L}ydo)-tXfDGiQ9Y@+r5((1v!n|AQ_jfXaTGyZ_Vp#FHqY`r`rgLX%k$hfR zdZY%Vhi5BalL9To(16M6;iJwhhUF3d$^)spfa|*l<~^?trS$ke9ofn5;XjKTkwSwQ zh^*edl1&tFIeS+gsID5+dAz~TwKDpC^)EH48t9`~3e13GM3DIs6ahuI5y6k;vON=` zYyNyjHFB`#6>MA%(lHBIhlz}nGVg}=%U}v)%@~!_v>lo*S$(VH4<=nN_En|o82()P z>KZm-r15;@S&^a#=Z+mpXJmD(fnNSK#YPJm(~Q>f2{Hx4VH9hWR%uJuC{>Tbn*Y2+ z4HIMeKivpUW*O_ok#hD{)m?qbl}5&2=UN_7bo9Oj-$tY~`Rd{}BmJvz>PZ4@C^EPO z`}$1Z-)dNqet96#66{277wc2k`?dA0k?tkoU(%+AiEn1jD8maR3NK9+CB6Fv9|j=` zm2-1#xC`5{a@zs8@sj)N`mGngmSIu^?${-|Bju%*8UmBkc?o5G+PyVOSccre`fmi8@3S8;Y zuL+cA2x!gl*Sm9(OW9O*RXaaMq6d{lK}U)QvJe#R`*U7=&mK6Ly5FV!Z1ElGS)aPUGKR|l!uTc4SCYXLgbnE2KoK@fXl{C_6Y$1 z`|iLO2|2afh)7XBC{-Y;uhYH8Zj(q8`J67@<5=&CwE0Y3-|3)GebTbo$zG?&L(T;x z0=E6Y-V7`7IeO7Q%oQ_(qHEk=-&Uwd&3__Y7XL-A(VbtAA6q_VxGV)!k-%B^K>WuQ z=PmDll=z!*y!2x3_QMyJ-L607jB0MorVMqfr>5=sO`lJrrC$AZpMSqD&iWsmDNR&8 z*0rX+7#d96MQnC9aFRVdC0-XinX3E+RD z)^jxJvgbj#?W$n^uZl${w5xstz7uEP_=nnG$*?DO7(KRq|bvaM0SLbPiqZzvyM712EE8$0fR zH`aWU!@o!JpP`ja%r~`%v}UdTtQnYY8mS_WRkmjIk%puL1y|Ala;&`YMY`Mm|1G6T ze%+nBkIM(v^N#H7IJ_1*7=nXJdrH{|St2IANaV0&9DDl0|LNL)Iy-l;Dj3z8HTGc; zfe~A-9xu1p1PU?sT%+ucsy6htfH>u>5XL^g3_nc2R2ReWa;rI6!ex_9J_H{8K9QDZ zZ_ZbdiOU#2NNv-v%llh=`SxJ$z9ZOC-}|2r{O6M$uq(w0&Fa}44i#qLRbU;4br=ed z-7ZT;BxWO1f0f`{n~47i;onkuY zD-S$a(YhzJ&SinqBKOn#Rrj;oLHRl0|Cm#xqz>-rAvtRGO|@Zr!O}$Jb~M^iv0^d# zAmF?GkY36?4EwYSqW_u;1xMFs!lo<-P7V$vEmcv()uZemWrTL2xD$wOjz!L`(!6Kh z3poFyZ(e^eVAUK*+EkWbvP3aY8KdrsmwVRY^2CB733gwmXPPGeJ>-AOAm`tjxfpc9 zj1f(q@Z=$X43_!l%Q#VFX=f&V2}&iLFs9UhO}h@*RDemkeqzpcQ&SV!xnc(0C%bc^ zTnq8PdNy@&?NjaZUZ}`eC_5D|mZMyj!vJC z+kYd6O*>P;7PtSQGuY?;U>LI;Sk7~u5aaMT=3aS!mQC?gbw%C_Ll@N~55E5&L!17m z5=>(*2$(BM3G>%69o^1bD7Mh7ipJA>0Nc@kNpUdQ$eE+{}YnBx#{}CVE z|JmybB(Sxd{$(isV@CY{`N8?^aVaVEafL@>tnYf?>f+sqk9^{sAY0B||Gr@u7e-eNqepBtWoYV{28-y_2yJ z*y^s#u@qGsiIx@#*zZ7cIFIYxpZ9yzhAH^GN(1m1$2Uclnb^x0yHx2w9&KJ<7eBqq zGqmir!~3VSMKanSqA!5^;TH*>k9kl4drV79TplDDCO; zDHPm`^%BnAwCQs|P^tfPFBe@?zha|8HaFgZ8nisTLrdjo$5NIYN1NnHr zMV_UPBd^$4Qg#WTFnAj27c_;7{q65l^=?)mN}2~a(<^iBOm7zrA^b_s$)A-p*;*-L zcB8GhwEKqp0qh4ChOItMZfm#%~HLkzCO~T>B_bJ1Z%AB zi7T4w9avJ>5Ip3zm zC5Qc&c(?)a?;2>YIAJYrE7mqe_&O{=QT*svwWb^5`Pa&dW7hi#ce#?e{ASj{52lTl zws4I_R1XVE+rKH4i0{440dmx(WF%cqvHO7zGlu}00pDb<5A9-RxZpz z`YM@)^l}MHHWLBZr@D~(NqVv38^y>F#$rY!!h3!^C|l&SHLf|R7Od3Nup-!t7`abm zlPg)ICg zmStQ0TKN}OGtt2G!hD@unytx2SgH+6`J;KYc<&$)cly-<5?L0&YoI#cnvZFe* zfAyQF<|C#SLYV%7xn5Y-s)u{l7g}k zt*rgf=WkjyTe6o7u?gIN_1ckw+$u79B+w1~Y4r{%1G-P4O%4DD@xj@>=N` z=~063E(v~r)I^9w_|U;FpwZG^P3qS#ILlYthIu?P(c^Mp|Y$4GiXClk5(9@nx*J2olBUJuZn}s%2|^Xk-AV^Pz6K zKp&tSSz;p4n~Y=nXYoH5`t-`wL84W0qTSucgL@*RHUfmk5PCl&+}><4Q9r+@Gj4M%L=ESg}G8;Sm{AE z?P2PXR_!mgZyEeq*8>=q?}_^GG<%#ZtHTIT7(-3(-Jfj;j}_W#I-k(S&~UoR5$qoh zC%+0F7hbMcmx^u==SQ4*QZ>HcW8hU83C{78fpiiU=O|sA-W=gx?nZIr3j|0%V_fH= z>j+?MzioZuUhJt--W!Xodn0`eTh%7_>_&DH}FohYRT*rS+!y1P0}+{{ai}Br5;Sw6!7=)ve{~9 z;I}fQ+XF}sNz)>KVSjj4hwHO3B$?w7413(LwRfzcdaLToz6fREV3u5wiquHK!A*$6 z{1c?;62o^_vAk~OMi$DglQ;CD#z|6sHz0LucgA_$WZD{q%@Oa zpZ2VcFxFs5sh;Xt^C$5RGl@AeuMq$qfOHlvV~g(AK)?pK>X6l-&5XK#U*l>B4az&| zmz_Le)q-14s;jTR)V(id&rUlAM{E%|ds8vGRUXTn-Ao-baq^*-b(j`on4=R7Y{@}l zV)ius+LBMW&l;1q^ksW>%RK930t*bvaR5zfz@ezBNlL#Sm@2f9`rNhEHy~;QmSOnY7IK z5N=6NPNCFUG+)h0L=?^TD92y-UchrTH#jQ5JJ!@dDzIKb(I0=HW_6q{$3MHGFSbR| zX$1)}=oY?w*v_;*`LKtKaewR5kcMajaCIqQv4h7O2>Ni|UPz<|d4ND>$QT zrP8?ea+B+QqXOeOu!I05t4&vT3z`>$n!d>$9!33mOHSL)`rOU{m3&%7}nOgXLLdadQcl#h+(GX40=fk16+#e!a3w%wHO^HTY3WiTzYvs8kO`cE@ z`M4sttKZMXzSm^yy}94=`NMq)XO^B)yB=4F?g!b_iSsnlrX8>gw({HaNY2|!+ya~# zJ$wYGcXz34*)o%&$7-IDeZvqdE?hawsSIT}=ZCecKq#?mg)=y4-6xC@flao{EJU>r zqbGpxIF?{>!_$lD^G!TwpJUoiTvboQT5FgTQo9(~vj<^1QD(kw+TV^;ptcn?*Oe^1 zl30rs2huk&jMG-b_p&EW9Sac`MF{#LrECcgzQl_ND=F$N)Lvpv4iWzlu-m}ri^#5b z$!6U_3cabXvy9FaG5eggqU9j(q`!v^2lX`SXUtz(T{KvVEMp9kBj+KH557e(sVf(7 zDzfUZYmW)3T58(UG|I}DO~A09>zx)M!3Yyj`5e9r6eic#8T0eh-h4D8D>BlZYrbsH zst>ta#*It)%=54}g#QQNadT6_%UnSnS}09znR?Eb#~@UgpNn45lg$t*Uei+DTJxk) z-_0aK)zpnZnj4WSdFfUdTV~Cz`DnPv(hw4=|2gHYZ~JjVegM;=;jnRWw-3fgF>NOqt`Mchtqh)S~_{nZY3n=0l(e4x>%4 zA$8lu?Wh1i4k7KD!Zcug^NurWL?fb#JU9r$S{85vx3k8ul)XLLdpYR7llq`_O>VY8 z;RZ2UvoTtp71$Hk8D7Zn6 zrVJGWDFXvza0KXvXtQ^BAjazX%UikZKdHaO)F8m}yoeAPGG8KlM%A&?eC>{&~H18$9oqKy2rPzK3D0d9oCk#=<%(HePB>9E^C>3I%6Jp3(mpnTLRc5`TmZ{}`;4F_29K z#KN++#g6(IpPw^^IuA#aR{K$AH*r1S<3HT8|Mj#O5Ot?M7G{55_he?yIBOdZTED-k zux_md=^U=(*R)*Xg8ezL>@00JZAUMGbMMAN!P$iibGA zZ*(n#$D_f!sw?>R>OykydnE*;PS3RlWWTbPmBLaW7VzEn1_DjHyx-WobFSxeF9j;e zdeJB}etz^~=<*=K-?@Gh@P%{ZtYhHi8~<4A$cQ=l3+O6_7wc&unFt5l zU`|r24l?-^qIHrJQtvK*w(X`bd$EaIdl2t*uxENeltOnKe;s_MPPFYy+}PKx&a?K=wTR%H z0h;%pf*L=*Z%bNLLtPZgdcQe^NZ$tk!w!@(@H%l@Kw!D;pYdDp_;c?%QR^lADotHg z-#0)bP#=Dy8QSDPQbTP4U3wq+0~OUCqkimEPlR`n;K)cHpk$zFf&l5F2~fEzc1H z8Iu3-*M-+w|KHOh1nXFY)t6kAFA4LJpY}KIa{ElZ4jXDY{NG!XlH+N8P_iRSWtBqL zHoM&cT#ma6V|4D?%)dflrZe!MO?Yeg_QlyzPRarsG*15bGJWPR3uyMZIM=AJ1MZ!j zjC_qcf#;Hj7hWqR#0&X+8%gDRAZBCv{*6oww`ql7nc9FK)vr84^e6=P579LozGP%Q zg6&T^bMrvK_M(t)oeTB+JLar!8F`5I4yfIB3YDw@!wYQ`{`pIgV+FMF5^@4c+Nhh! zdUw-qkmu(oF0vZ%4TvL^c&loO7{+1LxRt6&+|rLOS{X$wG2R0~QedVTn?Dw?1cqFv z_S<;bf_ah@V62~=d9`lc7TxyLMGY|4dw8#q5Q3E$K2w5nC5(F;m4&s}q2jo_-f@ba z;KMVUl8egcL_vp_L;oAy*@h02XDS!tc>1;dq~lojeHiH zQmTaaDW@In#U_3OdMom6Y z%Ez8p=Z-n$BIZd1@BIMoXRGqxEz5caIuevd-@FFDV@J8tHX}uC=TEm`mK?dud0&ZH z+3(Onu~JBzZXRcK&qKdY*)g3}oS7Q)Do+E%N(Q8F$X&->{jsA)?FyNAakcI7&dzqo z3Z3q!keIhIP^|d?GAwW8><>^lq!@F=ep?&B_YkHu+uIkgt}F+Mq^OG6x^Lq8wrL$b;8Hk*0zz=8;1(#HV1*Y@xJyBh;8qY4+@+A<1lNKD4SH^!J4W|7 z-Q)lJr62CNJ^Eq2?7biM+Iy}!*P8R2--oAZ=kyal_f7$%%!Ukonf-z-{&qcByw#r* z;#Bb1lrdxAkka%mh*{%$tM@4J;e~1aPp!0#lXOg@qhNMQOJx z$N6KJ&2kcRF{0!OM-PnO$=#D*-{pCG=Pdf6Pql)8sNfe~KpaO=TJXDWHy7VWM4d2I z9(=u{2e$UIjME}l^L&%?oU3q!@OSqe7?UQ9&9j(!Gk?Q5eEIdrb+J>!?ia!y^kdEI z)ZvPXCfOI*F>Uu3fIgqdO!*saNlDSt;^>3*zK5PsIo%AdQked-?~`YcWydpMzo?OFK4bc&ZoiNt8 z>8<1pTgVDw1t?nEf0FGMugdfu<^jB-zx`dL%Gnkr&!YU+#d4QO`_pkzz)jX_9iy;Y41r+7x%CgAff%HfCi zFA7_t>fmw>`e1ww;#82%Z~n1@wHr-F6;_ohXsXxPMx)y4)hq`&R zwGDd)u@6yVV9sY3;y-Pd^34z(av#xZ)sx~wpea+3+D=(MapyfHUOweIM}4EZub$ z(`9n3inV3;0PMSCW~hW&ks#WC12=4OPjBxl*R=4c`GI!R{C&#SR(J^4Jp0|p!R?ye zeB$2Q0BN_ui^tD~#(b4%t<3{FI!$Mvg|8DXKh=fIJsLn^bG(%xNzM&8U8%FrCm#ID zyi&D3>V%QbZslj?IpzM&BzWub*4v!-Ywhm`V^xoo+cuN=l%-VUsw^NV#`6*e}|LaHJ~C5vt#!SWZxI+`JF|l&7cM& z^tpA6NZU});%D(3uAl=Sc&_1g=O2<-LANkd&AsVsUWiC?D_t^K^cC80?&aMI2?a3r z=rzdEE<4a_Pi2k~rfb7;ZIy&P!VX5=r?v6U5l{gqVep+Ge}SO6RK4Jskt-nNN>5s5 zJx-x}3$Ak=!!7*WfWPh7A6d--lFW_|(m+KN0lQZQhh#FTL+C;tz8N1-0s z6hTl7Du{TV9Z#^qWYSX@EaER!4P3jqY!9X0@`>#;)cDWerT<)j_UHnF(5@1WW5LO1 z-!3Q&=B!7y)F9*cXAPnDV+LuB-a7v3oyNgwz$TdX3wGQDREr}QjxuQWxN&&AVP)W< z&L>4`ea2wJv80Wx8$ycOmgb1-WxOZq(^wOBEw{X>g~4L&3hNbjzPdD_uRlcc5}Cc+ z4{$WY?~{y(ar|)GQe7p{qnm)tZIR8L!JM=io*_4Q@65*!RmlzEIU6y5I-<`mKF{8B zw1#yH?SgTYXjGpm?e;f=+VIx2#kFbU>!oGFnEOspnzWMoPm zEjNM!JITX%0`B6hFoqRauyJz}Bi2;k5Za@fb4<0eQ!OLg7*+^2YGc@0_>hgQ#6WFh z>PPx^S{vWN?KkCBfgAWe*hxBUJ3|ThgArrnjA849RZsQcccjkGQXe&E0wtJ}&(~{r z^B?ED?D5I8MaouSI9lgNlIYP=@os-;i^^9XE9hjN4yX`~wqkq_{@0fWv!DM>is)aZ zjsDB78Ge~N?as_z&==i3aF2G}o9HG`hMTnoALE}?KgsCDCJ9ZRfc*-ug zbqu$sTv+VG6q32SoGj)sjf$m{TamzAhm`1~86AT#oa9jPW7V0^rh=gx8hwM|IMJg8 zHon^6&#sH642V^HXvD$-xYfVx3DQb7ow0a^ySD<7UwLdv%d_F&Q{lnTnVi9nTT1;t z_)LboSu$XzQk8EKtt5{7Li(ECQ@C~gtmW#RWfg_<4=p6}(=gHdqQ?!j769>a5B0kY z-wT%pU%6+?e*r$)xl~K8$A3hCBY6+?3ak4|R)(E9Rop*OGQAjN%=Z%BK&bL8^0y1o zaKyF}4TmKF?>iV#GTo^uTooP;X^H7!UBFE5QWPEMRQy@JgHK|+#=sm`N7~w2zID0Ia$*j4Fxg-WK@Nx*Jq|EG9FWu+Z7}C1sBb* zD_AKFmGH$G5?CvSOU)IwoFio&7P5@#^R%R8t-Jy12wQ8xkvb1)(s;{qR@sri4^$654 zw2yPLQ%lQ~FVtvXMw%53RP>MzM{!c)WongSANyUux{kG;`)X1OzqVT z{NiX3qWXwCLX(!~7QeFWn7!WEDqT5VSh+m6^!C%seC*e$EFt*6DNM?RXC_3Px-iO@ z%ztB9|J|sH%!5*bD_YRpmld5GV zaA@jM6~k!|yzjPV{FYD7j`^HBzG3$q>`}IKbmg=eGZ>q)L{6N+n40bsG|8Nb8^>O0 zr3xn;82g2-cplNRT$_ zh;K6`YSW&yc02W(h%U8F&V>SC`Jty&#->Yy zBA?D@$~AY;9AxG-!c2Wzn(|aytp{&$oM|@2KsZ|u{TBe|gl>DK4{AQAa40N#&u&VdeLKdo}U zHstX5%!H;OsVcp=_?;@lY%*ywa$en&32K2WsQIc{BKB2jRpGDXDZb%L+jZD>gfE!# zJ$7ME?K5y2ED4bP&1p=#@|rF7^Troc`Bdrh@y>Njrdgbf()|!bRcO#n!otdpxR3s{ z(f8-a znKnxDL`>-@)FONn5bPbhp81KYBk17WDL%K8W!JKjFlXbE|CC!N^*uw&y;sSz3di5R z2du?kmD9GaBtC2~K~S|OV_WP=wD^x{k6e|P85=lqhOZzj-k3(Okjvl$D2Eo=OpPu~ zxVUxdsHiy;99;yX##Q3_0cR8M_M`x7v_^ol*bUjcKkWaZ#<2Oz)iq*&59}9E8MuPz zIXOMIu@jvbdMoafA1d>iLyMT7`>~qpp~Ir1sGq;#q#~Q?gX|%6z4L?-HQ;hP`kc_3 zlwC~Xo!rPXE^MdEo$|_-56(N|sV;12Cj?Hx8DiLS4ZRVFoQ6zYcwRO7 zMG9Bd`WUv?w={O8Z?&u@vA(go3R*Z9c~H{Zf)a2lNh}WUi9UhR;UF3f!GsMhAn)cx zwQd%-!3xSYeU#%vu=^J*8@`8(VZvyFt{}b&lYd8RjybcH9#i41SjN zo>`xokOHT|uL{h*`;Zhc^y6dr$!fzs9 z`ehN8?fu?2JT0B!iRXZE4ONhdfBOti^Nv9*f|i^unq{rZ@G-~rvGURPJ~+(ql{W&e ztqi~txf_97t2;7tt;v(ivdz-8-aprW0n)EZ=4O(0>WmBHICRO-Hdicjq6yo94Z{yD zTc$-E)SFX&4ftS8iyGb=()G)rDtj zNR$NVRJoMT&u6K7dS`NVN2b{dA}46yOjo@})?s^nEVQ-dChn!db(Neos0#0$PU5ro z9=gFv>Vw>;@?C>LB@@XbtAyc9oJ0@zfsPE4KJ^#?Xx^>(bP0IQ4H>of6m%pDUh)mL zYT{XqbRBd}Bdu-J=6D{D!;M#OJ@v&hx)`>g_~xePi<-ZoU-BXr`O9=`2`rDsj^74c z-@g}Ma){;}nn14!k&qUFEqjfVtHM{v$cYd=4D$MI`|-o1S(3Vd3>#hy+>auf-i0rQ z-rj8PCl}2#L^7})Y8{O(HcCE<4LB|#DZ%$>NzL9iu5c_g|udtmAlt+)1fZ0|l-2Hb+pKeJf&1Q>8dH9(* z6FFMExhh)v6kibeZm0~jM+I9|2D57tiu1Qd0*KGa9MbAkS(TmGsK@AV3Q7jm!G8hX zp@tn2Ci>&3&%)#Sz1SD*Ys=T@`RHc^zrZvz>hG1I_=PZmB{}e*P7QlLtH%J zFGJ{Gpp&b~G1P+R71$*=(%a9)29t;H@23*R>dPO<48>;7E!MV&$kk8VDybIpMHMF! zySiOZ&6BOF<=t_O$W9m6;#%be-ZzF5`2c)>6}Kql3BK;S7je7*A!8s`{3FR%87z-- z3B+%~G?<>)@$02Yp#0(Ggv?l_|1U%PZwYr_O5~KC z8r;Z23JJMziNGm`=vOfQpTTo%tmTsl&v}AoDmla;^^OY{vt7I@#jPM%ea71qGE%jq z)q_l<_GYNM_0z?a8|~EgnjM^JxLk?FAnqhRGS*K7ugMBv;Kv9kU}P$yC=< zBg_)hl(B8$u?nB5>3JXhlT4!5IQ|+Xl_Q+7hD{>lGio7=(i89VfRDQw4--|6R6K?2MPO+u&wgQG^vqqSAux=1`W%qB zM2x>DcU1QX$HBc;)A`;%B>2@}| z5m;De!|^S*JRgtIZxUIu1rC^)2e9rIjbs!VyF_asN=}PeD%Gq|C&iM*r&tm1sjVj6 zCHkvC>IZLHr^fRLNR?ST;lwlSm>*&~N}lt8e~t&f`);z@vSGRiZq@kWwZ+S3Hkyj2 z`o+CV!zzxeRs(Ooa#$HbpYQSL`$;27HLc^alm#*P`U+}E{zrv7%9K5WrVHS%I_~Gx zd#g!VL+PK9BmEUPg0;gG{(e&Lkm6|d9C1aGlk>)-*Mnn&D<4k ziM=n_*b_(Ze>up`+*-_?1D&;#M&I{?Ey8Fv8^VX&QKKZmLr=qY}YHD6oMX^ zsBf!we4VQcmxgQmmT$K-8BA|d4L@H<6U-k|uDz`GgKC9#9Nz`01WsmR#D>|8yie3v z95xo}7=z>c4@|Jv2O2-=n!Av`**B%sLB?YHt+y_44?&YL;*}M~YTkyD2AvJ@8ya`F zujH-Cd_hgseqK8ikF(+4yM$&vC+s)rNC{KFG6vvm4OjVfTjQ5I@V(VVLM>P?iDSB& zJuZw*MTM>9bAt}3_pNcn(cey3@Lz&y{+Si={0$^(^Lu#2rU(kiwbuK2c2h#4XWC1V zs^)(oAhab(o-zowy;z9#uI+vJR==4AnbUEqRoB)S>yWjjQR!Z-Ze{hfFMv0@uwX*d z1ml7_x8>}|as;f@?<6?jq+9i{m7sL}Cw|Rp6^~D3bE|w_Bv$RW8h*%W*}*~8lojnC zTw{2b(;-TpV(uw9+j%tJ!a51}hr5z3AR&eG3qoW}M@#={ zn#gy32je}?7P8)oeu@QdJEFYyZ|_$b8;+Y_iO!$N(rFSk_$gV&d{ljF-s7F51Q7FF>?@+SBqRT?0GYL3!YiChG`G!~*Z| zz)lt#%vzJ|-8;^XNf=HVoO=ae$mD}Y%qO#cP=$g6Y#4uv3q4OMIZbN0TkU4x#e?#y zyjFOlQ8I!t411No`33)<8R`w!w4!+mn3{vY)UN$Pz+(UhITBb<hM#Lc| zCa`t>|6~92gFpdipScR#!$$s-?Co!*%m1r^ASmW;XQQ~k5YNZMFyH*cvLx7&`gCZ5 z&uISl8~=DnkHC9z(1Ytek(+Q;^MfdDKcX8;IN1BmTW!JUR5Nu8`WFKOcRW`d&R~im zv^(Za^ArD>PpQ1A0uHr`&R!gQ2*uWzW8Z1o8wzBwzOHZ-9Qn?$>V70Xuyd>EfSa?p zYpUyGbMW}}bA{?YsPP!1*gnseZ9DwBSPVWvlu9iC`0l)PxoH?sJX(&4Uh{telyy(S z_KES&Zud^ik1boDSNAI<9q2!s&Lrd(uxav~yTMK##7J#;WgAK69M*;Q@rG*K1-tv+ zJ1CW5~gj`T=4a|{yyvY`@w{f;0lid4o%zQn6RgvO-DDNb%`iQ8WQ z#=4!G$SWfe?A87PzKJC!w#3QLu_4LHnfmLQ)7nt5UU5Tf{LwsTj1;JLpGW)ku7~N} zWQ2@B7o9JS6G!4hCUNoOydNj!Wa5>LE${0CY6oeA%07gA|6VXP@afac*0OJ>`#@H9BXEr^WinVvPErQ;b?xwcX_p%d*P4D7 z#}uSlY|^_m_I-1%HbW35MR~TJVOvVqq4Xq%Eb8IOTBbWO|_{*1|Z~oDA4LXVz zmKbmLFB^C$N~B@W!tKir3o^O^Zb`Z4Ste9+C%71TRE(d@F%=CA@3-}+H(O~cy?_tn zQNFlJmP3`)eSO(2n1Sp5s@EE@>9%CRNrm5|7m(gZH$WqVtt2GF{oDfln8$6KMnE9% zL2YdE97!oyOaHKgu+CdCj!g%CUi`L5-vWor^rSTV(noK3_yMekk{%ysnw0k%iXhGW zVNfr$7^PEmBJMihuU1=--S|rmf+o@=gBro`V8}O9%i}I0DO$Dg4CvRFA!o(V69_W8 z_jCVdpJ=3Opxv#MfmxtfCWLFlDSqS|lR}80=i8*pPgv5e7FX;*g@Zq+I_+(WH2wj@ zV}0;N{h~vMp0Av!pqX-HafZuUTz2rcV*^eHDWKyvrnxdH)8+b-X~amiAZWnkc~Q{r zv&=smE-ZH?mL=`-4o&cdd`hd>pIFJdSK8`y!m^erY_9Iauf+$xm9eH4q)2)(7KNd8 zv$BI@$lip9IA!cG>4G`Hj6)4!wWe;w%Z&7s1$!iHW&8BXr#-OJhf!}4UiyUfZz`H?xOXfj(-|{A&4}rQ z?^o1>WQY15>=_(cJ{i$bq~zS9JJkaL3N}HV)Y#_=Dy+Gx{hxE=7U% zWnASx0ej#_1{vQp?-3}TX489Wg4b_#j#xU!q*mg%7A@06= z(d0Aq)lBE%49R9{qMX9BwFV}HDP%^~+5g*Oe$0qV`yUCp2)Dehh&BO)zo76Zs}bg% zs}0#dh>zium~9p?LBAd_^Rd&3kBdMWZJF>=KC4@DOIXSX%#c%}|){_st%LN%L%a%8+dH^pa13-I__!r}w+Pi>j~F@p;dUxz4CVb;;7cp~2*og>?4ffP zI{j_pif!0?X*hZCyh2zPNik0~zjpH~&*D@by^P+|juYwu?hsm&*-4=D5Ngee^rK#c zwKNLcxU*Z{?lLyNh}4eSEL_rY0WU52Z_`)3F16Dp~}_~No_b~NA=LE{BErK zSV6A49nf{iRS1>;w=oix$k)c-Rym0m)oLw(<8@ZKz?0lKq}A(HZ_o)IY1+|DM=Opd zwq@d3uC_X@DSH^1cnc~sDFUZAF)aHk0>LeB<(~lF$L>@IbnLBymY!E{JE1dISn+HX z=rB;(d??iHrPq`xXq=r){OSUr0QotarB=-`l#O(zmXZ8h1W+mt7P;_Iy9J-7K()F^ zYgwbOhIn@5R0WMgNi@e1eU1=;2DF>A3CS*3<0~_s=O?3sdu!--ayKyIDUZlDtl)FR z+AR1j8@F8Br-WB2hNDXPm%+6jj9neUqaSudbkFTz_C;?7q?T|7MBWO>4;*Uej3TjW z55C{-cRVt52=#V|H{`mB)X^o(08oGHRZ!Gic(%Ffn9Q6_M*Lc)oOW&Qh4{|d-aQ2c zxmozU(6Tsh*H3_?pSH6#Z#@3#9y9_f&~=!;tm1b0v7h>^*kQTp7e?z+M@MnaEIF&3 z1YwGzD<{$J@IVz5#?&AwqHX#7k~7t~ivQQzN|vG#w`oyX>7+83dwgM*B7MP-B-DxA UJ(6pmyFq7&{=erf?!V^$17>!3$N&HU literal 0 HcmV?d00001 diff --git a/_sources/books.txt b/_sources/books.txt new file mode 100644 index 0000000..deb3a4e --- /dev/null +++ b/_sources/books.txt @@ -0,0 +1,37 @@ +===== +Books +===== + +IPython Cookbook +---------------- + +.. image:: _static/ipython-cookbook.jpg + :width: 200px + :alt: IPython Cookbook + :target: _static/ipython-cookbook.jpg + +* `IPython Interactive Computing and Visualization Cookbook `_ +* by `Cyrille Rossant `_ +* 512 pages +* Packt Publishing +* September 25 2014 + +This is an advanced-level guide to IPython for data science, and the sequel of +the IPython minibook. + +IPython Minibook +---------------- + +.. image:: _static/ipython-book.jpg + :width: 200px + :alt: IPython Minibook + :target: _static/ipython-book.jpg + +* `Learning IPython for Interactive Computing and Data Visualization `_ +* by `Cyrille Rossant `_ +* 134 pages +* Packt Publishing +* April 25 2013 + +This is a beginner-level introduction to IPython for data analysis and numerical computing, +covering NumPy, pandas, SciPy, and matplotlib. \ No newline at end of file diff --git a/_sources/index.txt b/_sources/index.txt index c6da167..98ac78a 100644 --- a/_sources/index.txt +++ b/_sources/index.txt @@ -69,8 +69,11 @@ Python 2.6 and 3.2. Announcements ============= +- **Book**: Cyrille Rossant has published the `IPython Interactive Computing and Visualization Cookbook `_, an advanced-level guide to IPython for data science, and the sequel of his previous book on IPython. We thank Packt Publishing for donating a portion of the proceeds from this book to support IPython's development. + - **IPython 2.2**: A security and bugfix release for IPython 2.x, released 6th August 2014. + - **IPython 2.0**: We are proud to announce the availability of IPython 2.0, a major new release including HTML widgets and multi-directory navigation. `Install `__ it now, or read about the changes in @@ -93,7 +96,7 @@ Announcements - **Book**: Cyrille Rossant has published the first IPython-focused book: `Learning IPython for Interactive Computing and Data Visualization - `_, + `_, for which `Matthias Bussonnier `_ was a technical reviewer. We thank Packt Publishing for donating a portion of the proceeds from this book to support IPython's development. diff --git a/_sources/install.txt b/_sources/install.txt index 256cdb9..c79ebc5 100644 --- a/_sources/install.txt +++ b/_sources/install.txt @@ -16,7 +16,7 @@ If you already have Python installed and are familiar with installing packages, Or if you want to also get the dependencies for the IPython notebook:: - pip install ipython[notebook] + pip install "ipython[notebook]" I am getting started with Python -------------------------------- diff --git a/_sources/news.txt b/_sources/news.txt index 9add934..5f1c5d3 100644 --- a/_sources/news.txt +++ b/_sources/news.txt @@ -2,6 +2,16 @@ News ==== +Release of the IPython Cookbook +------------------------------- + +On September 25 2014, Cyrille Rossant published the +`IPython Interactive Computing and Visualization Cookbook `_, +an advanced-level guide to IPython for data science, +and the sequel of his previous book on IPython. +We thank Packt Publishing for donating a portion of the proceeds from +this book to support IPython's development. + IPython 2.2 ----------- diff --git a/_static/basic.css b/_static/basic.css index 77e6ce3..1e02c5d 100644 --- a/_static/basic.css +++ b/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -89,7 +89,6 @@ div.sphinxsidebar #searchbox input[type="submit"] { img { border: 0; - max-width: 100%; } /* -- search page ----------------------------------------------------------- */ @@ -402,6 +401,10 @@ dl.glossary dt { margin: 0; } +.refcount { + color: #060; +} + .optional { font-size: 1.3em; } diff --git a/_static/doctools.js b/_static/doctools.js index c5455c9..d4619fd 100644 --- a/_static/doctools.js +++ b/_static/doctools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for all documentation. * - * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -32,7 +32,7 @@ if (!window.console || !console.firebug) { */ jQuery.urldecode = function(x) { return decodeURIComponent(x).replace(/\+/g, ' '); -}; +} /** * small helper function to urlencode strings @@ -61,6 +61,18 @@ jQuery.getQueryParameters = function(s) { 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. @@ -168,9 +180,6 @@ var Documentation = { var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; if (terms.length) { var body = $('div.body'); - if (!body.length) { - body = $('body'); - } window.setTimeout(function() { $.each(terms, function() { body.highlightText(this.toLowerCase(), 'highlighted'); diff --git a/_static/fancybox/.gitattributes b/_static/fancybox/.gitattributes new file mode 100644 index 0000000..f6bb280 --- /dev/null +++ b/_static/fancybox/.gitattributes @@ -0,0 +1,7 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# Denote all files that are truly binary and should not be modified. +*.png binary +*.jpg binary +*.gif binary \ No newline at end of file diff --git a/_static/fancybox/jquery.fancybox.js b/_static/fancybox/jquery.fancybox.js old mode 100644 new mode 100755 diff --git a/_static/fancybox/jquery.fancybox.pack.js b/_static/fancybox/jquery.fancybox.pack.js old mode 100644 new mode 100755 diff --git a/_static/ipython-book.jpg b/_static/ipython-book.jpg index 80838f946b6ec46c35b6ee56ef3a92fcad3d09e3..f3d41650b8c8906b86a4691adfa20e6851aff382 100644 GIT binary patch literal 66350 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

                                                                                                        G^9Uxg%#66SND&O5Sk{@0Ledq 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 Iv42+nA73J{F8}}l literal 63871 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

                                                                                                        43rZ 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 diff --git a/_static/ipython-cookbook.jpg b/_static/ipython-cookbook.jpg new file mode 100644 index 0000000000000000000000000000000000000000..039cd0d2494906567233b975bbe89de3bfb31b97 GIT binary patch literal 44429 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 UJ(6pmyFq7&{=erf?!V^$17>!3$N&HU literal 0 HcmV?d00001 diff --git a/_static/websupport.js b/_static/websupport.js index 71c0a13..e9bd1b8 100644 --- a/_static/websupport.js +++ b/_static/websupport.js @@ -4,7 +4,7 @@ * * sphinx.websupport utilties for all documentation. * - * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/books.html b/books.html new file mode 100644 index 0000000..58f4c49 --- /dev/null +++ b/books.html @@ -0,0 +1,280 @@ + + + + + + + + + + Books — IPython + + + + + + + + + + + + + +

                                                                                                        +
                                                                                                        + + +
                                                                                                        + Install Β· +Docs Β· +Videos Β· +News Β· +Cite Β· +Sponsors Β· +Donate +
                                                                                                        +
                                                                                                        +
                                                                                                        + +
                                                                                                        +
                                                                                                        + + +
                                                                                                        +
                                                                                                        +
                                                                                                        +
                                                                                                        Loading
                                                                                                        + + + + +
                                                                                                        +
                                                                                                        +

                                                                                                        Versions

                                                                                                        + +

                                                                                                        Stable

                                                                                                        + 2.2 – August 2014
                                                                                                        + Install +
                                                                                                        + +

                                                                                                        Development

                                                                                                        + 3.0.dev
                                                                                                        + Github +
                                                                                                        + +
                                                                                                        + + + + +
                                                                                                        +

                                                                                                        Notebook Viewer

                                                                                                        + +Share your notebooks + +
                                                                                                        + + + +
                                                                                                        +
                                                                                                        + +
                                                                                                        +

                                                                                                        Community

                                                                                                        + + + +
                                                                                                        + + + + + +
                                                                                                        + +
                                                                                                        + + +
                                                                                                        +

                                                                                                        Book

                                                                                                        + + + + +
                                                                                                        + + + + +
                                                                                                        + + +
                                                                                                        +
                                                                                                        +
                                                                                                        + +
                                                                                                        + +
                                                                                                        +
                                                                                                        +
                                                                                                        + +
                                                                                                        +

                                                                                                        BooksΒΆ

                                                                                                        +
                                                                                                        +

                                                                                                        IPython CookbookΒΆ

                                                                                                        +IPython Cookbook + +

                                                                                                        This is an advanced-level guide to IPython for data science, and the sequel of +the IPython minibook.

                                                                                                        +
                                                                                                        +
                                                                                                        +

                                                                                                        IPython MinibookΒΆ

                                                                                                        +IPython Minibook + +

                                                                                                        This is a beginner-level introduction to IPython for data analysis and numerical computing, +covering NumPy, pandas, SciPy, and matplotlib.

                                                                                                        +
                                                                                                        +
                                                                                                        + + +
                                                                                                        +
                                                                                                        +
                                                                                                        +
                                                                                                        +
                                                                                                        +
                                                                                                        +
                                                                                                        + + + + + \ No newline at end of file diff --git a/citing.html b/citing.html index 1ea5c58..e180990 100644 --- a/citing.html +++ b/citing.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
                                                                                                      @@ -222,8 +237,8 @@

                                                                                                      Citing IPythonthis paper, for which here are both a BibTex and a plaintext reference you can use:

                                                                                                      -
                                                                                                      @Article{PER-GRA:2007,
                                                                                                      -  Author    = {P\'erez, Fernando and Granger, Brian E.},
                                                                                                      +
                                                                                                      @Article{PER-GRA:2007,
                                                                                                      +  Author    = {P\'erez, Fernando and Granger, Brian E.},
                                                                                                         Title     = {{IP}ython: a System for Interactive Scientific Computing},
                                                                                                         Journal   = {Computing in Science and Engineering},
                                                                                                         Volume    = {9},
                                                                                                      @@ -231,12 +246,11 @@ 

                                                                                                      Citing IPython

                                                                                                      +}

                                                                                                      or in plaintext:

                                                                                                      @@ -259,7 +273,7 @@

                                                                                                      Citing IPython © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.1.3.

                                                                                                  diff --git a/documentation.html b/documentation.html index 8fa3f93..6d9bc7b 100644 --- a/documentation.html +++ b/documentation.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
                                                                                              @@ -325,7 +340,7 @@

                                                                                              Other projects using IPython © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.1.3.

                                                                                      diff --git a/donate.html b/donate.html index 55a78c3..019cc8f 100644 --- a/donate.html +++ b/donate.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
                                                                                  @@ -255,7 +270,7 @@

                                                                                  Support IPython Development © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.1.3.

                                                                          diff --git a/faq.html b/faq.html index 8628ff6..d376401 100644 --- a/faq.html +++ b/faq.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
                                                                      @@ -248,9 +263,8 @@

                                                                      IPython crashes under OS X when using the arrow keys

                                                                      Use a different Python version from Apple’s default (MacPython or Fink have been reported to work)

                                                                    • You can disable in your ipythonrc file the following lines by commenting them out:

                                                                      -
                                                                      readline_parse_and_bind "\e[A": history-search-backward
                                                                      -readline_parse_and_bind "\e[B": history-search-forward
                                                                      -
                                                                      +
                                                                      readline_parse_and_bind "\e[A": history-search-backward
                                                                      +readline_parse_and_bind "\e[B": history-search-forward
                                                                    • @@ -283,7 +297,7 @@

                                                                      What is the best way to install IPython? © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.1.3.

                                                              diff --git a/index.html b/index.html index a9ce459..594f36b 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
                                                          @@ -248,6 +263,7 @@

                                                          Support IPython

                                                          AnnouncementsΒΆ

                                                      diff --git a/install.html b/install.html index 691c238..033e7a8 100644 --- a/install.html +++ b/install.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
                                                  @@ -225,12 +240,10 @@

                                                  Installing IPython

                                                  I already have PythonΒΆ

                                                  If you already have Python installed and are familiar with installing packages, you can get IPython with pip:

                                                  -
                                                  pip install ipython
                                                  -
                                                  +
                                                  pip install ipython

                                                  Or if you want to also get the dependencies for the IPython notebook:

                                                  -
                                                  pip install ipython[notebook]
                                                  -
                                                  +
                                                  pip install "ipython[notebook]"
                                                  @@ -258,8 +269,7 @@

                                                  I am getting started with Python

                                                  DownloadsΒΆ

                                                  You can manually download IPython from Github or PyPI. To install one of these versions, unpack it and run the following from the top-level source directory using the Terminal:

                                                  -
                                                  python setup.py install
                                                  -
                                                  +
                                                  python setup.py install

                                                  @@ -277,7 +287,7 @@

                                                  I am getting started with Python © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.1.3.

                                          diff --git a/microsoft-donation-2013.html b/microsoft-donation-2013.html index a7e4eda..dd31b7f 100644 --- a/microsoft-donation-2013.html +++ b/microsoft-donation-2013.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
                                      @@ -252,7 +267,7 @@

                                      Support IPython

                                  diff --git a/news.html b/news.html index 7c59ec1..a7de9c3 100644 --- a/news.html +++ b/news.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
                              @@ -218,6 +233,15 @@

                              Support IPython

                              NewsΒΆ

                              +
                              +

                              Release of the IPython CookbookΒΆ

                              +

                              On September 25 2014, Cyrille Rossant published the +IPython Interactive Computing and Visualization Cookbook, +an advanced-level guide to IPython for data science, +and the sequel of his previous book on IPython. +We thank Packt Publishing for donating a portion of the proceeds from +this book to support IPython’s development.

                              +

                              IPython 2.2ΒΆ

                              IPython 2.2 includes bugfixes for 2.2, including a security fix. It was released on August 6, @@ -541,7 +565,7 @@

                              IPython 0.7.2 is released (June 6, 2006) © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.1.3.

                              diff --git a/notebook.html b/notebook.html index 0a00499..6bd9c4d 100644 --- a/notebook.html +++ b/notebook.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
                          @@ -250,7 +265,7 @@

                          Support IPython

                      diff --git a/objects.inv b/objects.inv index 912bfd91678d27e648639dd8243beb33f47a867d..755a65e85da40a13271faa6a1a7ba5b1dbeaf287 100644 GIT binary patch delta 304 zcmV-00nh%V1Dpepb$@k|O;5ux42JLh6_(gFh{28PCeRK;lZv=bSz_9V)SluL*uN)j zmWozzi=OwxPFnG->DUBK5hU72uTSVftw9DsjlyjkJAd;FKs}t{iF>j-Iwp7?aMd6= zviLo3Dm2%?Za7z#jU2W2$ABKSpv*H#?mMJ7w&&oGP${9N#D6vsc;^6#LZQ{Cv&f6O z%yQ2P-m*iJh1vu}GFqZk9os*)KVMW4t{2#|?LAKS_@eX}b}`VA#I#kJxGk(q5(yE?$ @@ -26,7 +27,7 @@
                  @@ -372,7 +387,7 @@

                  2003ΒΆ

              diff --git a/pyreadline.html b/pyreadline.html index f7799d3..452c3c4 100644 --- a/pyreadline.html +++ b/pyreadline.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
          @@ -267,7 +282,7 @@

          Status and development © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.1.3.

        diff --git a/roadmap-announcement.html b/roadmap-announcement.html index b9e1853..a5bbeee 100644 --- a/roadmap-announcement.html +++ b/roadmap-announcement.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
      @@ -270,7 +285,7 @@

      Roadmap to 1.0 and Beyond © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.1.3.

    • diff --git a/screenshots/index.html b/screenshots/index.html index 628d1e5..53ae3e8 100644 --- a/screenshots/index.html +++ b/screenshots/index.html @@ -170,9 +170,23 @@

      Community

      Book

      - +support IPython's development." width="160" height="200" id="sidebar-book-cover" +style="margin-bottom: 10px;"> +
      @@ -245,7 +259,7 @@

      HTML Notebook

      diff --git a/search.html b/search.html index 69dd430..78d7251 100644 --- a/search.html +++ b/search.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
      @@ -258,7 +273,7 @@

      Search

      diff --git a/searchresults.html b/searchresults.html index fe459e8..bcd6656 100644 --- a/searchresults.html +++ b/searchresults.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
      @@ -363,7 +378,7 @@

      Search results © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.1.3.

      diff --git a/security.html b/security.html index 4a2d59d..0dd0ce3 100644 --- a/security.html +++ b/security.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
      @@ -233,7 +248,7 @@

      Support IPython

      diff --git a/showmedo.html b/showmedo.html index a91e5a8..0f02016 100644 --- a/showmedo.html +++ b/showmedo.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@
      @@ -261,7 +276,7 @@

      A note about ShowMeDo © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.1.3. diff --git a/sloan-grant.html b/sloan-grant.html index 0ec9174..80c6114 100644 --- a/sloan-grant.html +++ b/sloan-grant.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@ @@ -279,7 +294,7 @@

      Support IPython

      diff --git a/sponsors.html b/sponsors.html index a1189de..519c001 100644 --- a/sponsors.html +++ b/sponsors.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@ @@ -287,7 +302,7 @@

      Other support © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.1.3. diff --git a/usersurvey2011.html b/usersurvey2011.html index 8e1b648..87a8863 100644 --- a/usersurvey2011.html +++ b/usersurvey2011.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@ @@ -325,7 +340,7 @@

      Design of the survey © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.1.3. diff --git a/usersurvey2013.html b/usersurvey2013.html index 27166a4..9f8273b 100644 --- a/usersurvey2013.html +++ b/usersurvey2013.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@ @@ -415,7 +430,7 @@

      Other comments © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.1.3. diff --git a/videos.html b/videos.html index 72988f1..841a1e5 100644 --- a/videos.html +++ b/videos.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@ @@ -302,7 +317,7 @@

      More videos and screencasts © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.1.3. diff --git a/whatsnew082.html b/whatsnew082.html index ea13b44..3058d40 100644 --- a/whatsnew082.html +++ b/whatsnew082.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@ @@ -304,7 +319,7 @@

      Known issues © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.1.3. diff --git a/whatsnew083.html b/whatsnew083.html index 68fd3f7..1e7b608 100644 --- a/whatsnew083.html +++ b/whatsnew083.html @@ -1,4 +1,5 @@ + @@ -26,7 +27,7 @@ @@ -286,7 +301,7 @@

      New features in 0.8.3 © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.1.3. From 21280774dc7ed536f2d91b1ab8c0af3bd2439ede Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Wed, 1 Oct 2014 17:20:52 -0700 Subject: [PATCH 031/146] Updated website (automated commit) --- _sources/index.txt | 4 ++-- _sources/news.txt | 7 +++++++ _static/basic.css | 7 ++----- _static/doctools.js | 19 +++++------------- _static/fancybox/.gitattributes | 7 ------- _static/fancybox/jquery.fancybox.js | 0 _static/fancybox/jquery.fancybox.pack.js | 0 _static/websupport.js | 2 +- books.html | 7 +++---- citing.html | 18 ++++++++--------- documentation.html | 7 +++---- donate.html | 7 +++---- faq.html | 12 ++++++------ index.html | 11 +++++------ install.html | 24 +++++++++++++---------- microsoft-donation-2013.html | 7 +++---- news.html | 13 ++++++++---- notebook.html | 7 +++---- objects.inv | Bin 412 -> 420 bytes presentation.html | 7 +++---- pyreadline.html | 7 +++---- roadmap-announcement.html | 7 +++---- screenshots/index.html | 4 ++-- search.html | 7 +++---- searchresults.html | 7 +++---- security.html | 7 +++---- showmedo.html | 7 +++---- sloan-grant.html | 7 +++---- sponsors.html | 7 +++---- usersurvey2011.html | 7 +++---- usersurvey2013.html | 7 +++---- videos.html | 7 +++---- whatsnew082.html | 7 +++---- whatsnew083.html | 7 +++---- 34 files changed, 119 insertions(+), 142 deletions(-) delete mode 100644 _static/fancybox/.gitattributes mode change 100755 => 100644 _static/fancybox/jquery.fancybox.js mode change 100755 => 100644 _static/fancybox/jquery.fancybox.pack.js diff --git a/_sources/index.txt b/_sources/index.txt index 98ac78a..50962b8 100644 --- a/_sources/index.txt +++ b/_sources/index.txt @@ -71,8 +71,8 @@ Announcements - **Book**: Cyrille Rossant has published the `IPython Interactive Computing and Visualization Cookbook `_, an advanced-level guide to IPython for data science, and the sequel of his previous book on IPython. We thank Packt Publishing for donating a portion of the proceeds from this book to support IPython's development. -- **IPython 2.2**: A security and bugfix release for IPython 2.x, released 6th - August 2014. +- **IPython 2.3**: A security and bugfix release for IPython 2.x, released 1st + October 2014. - **IPython 2.0**: We are proud to announce the availability of IPython 2.0, a major new release including HTML widgets and multi-directory navigation. diff --git a/_sources/news.txt b/_sources/news.txt index 5f1c5d3..e8b74d7 100644 --- a/_sources/news.txt +++ b/_sources/news.txt @@ -2,6 +2,13 @@ News ==== +IPython 2.3 +----------- + +IPython 2.3 includes bugfixes for 2.x, most importantly a fix for maths +rendering in notebooks exported to HTML by nbconvert. It was released on October +1, 2014. + Release of the IPython Cookbook ------------------------------- diff --git a/_static/basic.css b/_static/basic.css index 1e02c5d..77e6ce3 100644 --- a/_static/basic.css +++ b/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -89,6 +89,7 @@ div.sphinxsidebar #searchbox input[type="submit"] { img { border: 0; + max-width: 100%; } /* -- search page ----------------------------------------------------------- */ @@ -401,10 +402,6 @@ dl.glossary dt { margin: 0; } -.refcount { - color: #060; -} - .optional { font-size: 1.3em; } diff --git a/_static/doctools.js b/_static/doctools.js index d4619fd..c5455c9 100644 --- a/_static/doctools.js +++ b/_static/doctools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for all documentation. * - * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -32,7 +32,7 @@ if (!window.console || !console.firebug) { */ jQuery.urldecode = function(x) { return decodeURIComponent(x).replace(/\+/g, ' '); -} +}; /** * small helper function to urlencode strings @@ -61,18 +61,6 @@ jQuery.getQueryParameters = function(s) { 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. @@ -180,6 +168,9 @@ var Documentation = { var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; if (terms.length) { var body = $('div.body'); + if (!body.length) { + body = $('body'); + } window.setTimeout(function() { $.each(terms, function() { body.highlightText(this.toLowerCase(), 'highlighted'); diff --git a/_static/fancybox/.gitattributes b/_static/fancybox/.gitattributes deleted file mode 100644 index f6bb280..0000000 --- a/_static/fancybox/.gitattributes +++ /dev/null @@ -1,7 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto - -# Denote all files that are truly binary and should not be modified. -*.png binary -*.jpg binary -*.gif binary \ No newline at end of file diff --git a/_static/fancybox/jquery.fancybox.js b/_static/fancybox/jquery.fancybox.js old mode 100755 new mode 100644 diff --git a/_static/fancybox/jquery.fancybox.pack.js b/_static/fancybox/jquery.fancybox.pack.js old mode 100755 new mode 100644 diff --git a/_static/websupport.js b/_static/websupport.js index e9bd1b8..71c0a13 100644 --- a/_static/websupport.js +++ b/_static/websupport.js @@ -4,7 +4,7 @@ * * sphinx.websupport utilties for all documentation. * - * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/books.html b/books.html index 58f4c49..137ba16 100644 --- a/books.html +++ b/books.html @@ -1,5 +1,4 @@ - @@ -27,7 +26,7 @@ Books — IPython @@ -110,6 +107,11 @@

      Versions

      GitHub +

      Offline Docs

      + All Versions
      + GitHub +
      + diff --git a/citing.html b/citing.html index aa669cc..82165fb 100644 --- a/citing.html +++ b/citing.html @@ -7,16 +7,13 @@ Citing IPython — IPython @@ -112,6 +109,11 @@

      Versions

      GitHub +

      Offline Docs

      + All Versions
      + GitHub +
      + diff --git a/documentation.html b/documentation.html index 92acd0b..f3e4aa7 100644 --- a/documentation.html +++ b/documentation.html @@ -7,16 +7,13 @@ Documentation — IPython @@ -112,6 +109,11 @@

      Versions

      GitHub +

      Offline Docs

      + All Versions
      + GitHub +
      + @@ -238,6 +240,8 @@

      IPython manualCurrent Stable Version (2.x)
    • Current Development Version
    +

    You can download IPython documentation for offline use, and for all version of IPython on +GitHub <https://github.com/ipython/ipython-doc/tree/gh-pages>.

    This introduction to some key features is a good place to start if you haven’t used IPython before.

    See below for links to all versions of the documentation.

    @@ -249,9 +253,9 @@

    Other useful documentationVideos and screencasts.
  • IPython screenshots.
  • -
  • IPython quick reference card.
  • +
  • IPython quick reference card.
  • An article about IPython, written by Fernando -Perez and Brian Granger, published in the May/June 2007 issue of +Perez and Brian Granger, published in the May/June 2007 issue of the journal Computing in Science and Engineering.
  • @@ -271,24 +275,24 @@

    External documentation, related presentations and tutorialsJose Unpingco made this really neat screencast showing how to couple IPython’s parallel capabilities with the Vision environment. Vision is an extremely -impressive visual programming environment developed by Michel Sanner’s team at the Scripps Institute in La Jolla, +impressive visual programming environment developed by Michel Sanner’s team at the Scripps Institute in La Jolla, CA. -
  • An article +
  • An article by Noah Gift on RedHat Magazine that covers using Python, and IPython, as a better Bash.
  • -
  • An article by Noah +
  • An article by Noah Gift at the IBM Developer Works site, on using the Net-SNMP library to interactively explore and manage a network (the interactive part courtesy of IPython, of course).
  • A post and video about using IPython’s GTK support to interactively control a Pigment application. It also uses the IPython demo class.
  • -
  • An article at Linux.com about +
  • An article at Linux.com about IPython, by Conrad Koziol.
  • An article by Jeremy Jones at ONLamp.com, introducing IPython to new users and giving a tour of its features as a replacement for the default Python shell.
  • -
  • The O’Reilly book “Python for Unix and Linux System Administration” has a chapter (the first, and +
  • The O’Reilly book “Python for Unix and Linux System Administration” has a chapter (the first, and largest one) on IPython. IPython is also used throughout the book to illustrate other Python technologies.
  • diff --git a/donate.html b/donate.html index 74f6a8a..d1e3566 100644 --- a/donate.html +++ b/donate.html @@ -7,16 +7,13 @@ Support IPython Development — IPython @@ -112,6 +109,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + diff --git a/faq.html b/faq.html index 33bb3f3..d4d2067 100644 --- a/faq.html +++ b/faq.html @@ -7,16 +7,13 @@ FAQ — IPython @@ -112,6 +109,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + @@ -232,7 +234,7 @@

    Support IPython

    FAQΒΆ

    -

    If your question isn’t answered below, check the docs, then ask on the user mailing list.

    +

    If your question isn’t answered below, check the docs, then ask on the mailing list.

    • Can IPython run under IronPython/PyPy/Jython/other Python interpreters?
    • @@ -279,7 +281,7 @@

      Does IPython play well with Windows?

      What is the best way to install IPython?ΒΆ

      See the installation documentation for full details.

      -

      The standard Python installation mechanisms (setup.py, pip or easy_install) all work for installing IPython to use in a terminal. Windows users are best off installing distribute, then running the .exe installer, to create start menu shortcuts.

      +

      The standard Python installation mechanisms (setup.py, pip or easy_install) all work for installing IPython to use in a terminal. Windows users are best off installing distribute, then running the .exe installer, to create start menu shortcuts.

      To use the notebook or the Qt console, it’s easiest to install through a package manager, or download a Python distribution such as Anaconda or Enthought Canopy. Otherwise, you will need to install pyzmq, along with tornado for the notebook, and PyQt4/PySide and pygments for the Qt console.

    diff --git a/index.html b/index.html index 0d2bbee..5ed41c0 100644 --- a/index.html +++ b/index.html @@ -7,16 +7,13 @@ Announcements — IPython @@ -111,6 +108,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + diff --git a/install.html b/install.html index fc18c4c..dd31bef 100644 --- a/install.html +++ b/install.html @@ -7,16 +7,13 @@ Installing IPython — IPython @@ -112,6 +109,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + diff --git a/microsoft-donation-2013.html b/microsoft-donation-2013.html index 9da8ddd..7d3f565 100644 --- a/microsoft-donation-2013.html +++ b/microsoft-donation-2013.html @@ -7,16 +7,13 @@ Microsoft Corporation sponsors IPython — IPython @@ -112,6 +109,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + diff --git a/news.html b/news.html index eef6a12..334b486 100644 --- a/news.html +++ b/news.html @@ -7,16 +7,13 @@ News — IPython @@ -112,6 +109,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + @@ -480,7 +482,7 @@

    IPython and Django

    A new article about IPython at IBM Developer Works (Dec 12, 2007)ΒΆ

    -

    Noah Gift wrote a great article at the IBM +

    Noah Gift wrote a great article at the IBM Developer Works site, on using the Net-SNMP library to interactively explore and manage a network (the interactive part courtesy of IPython, of course).

    @@ -516,7 +518,7 @@

    IPython 0.8.1 is released (May 10, 2007)

    Article about IPython in CiSE (May 2007)ΒΆ

    -

    The issue of the journal ‘’Computing in Science and Engineering’’ was +

    The issue of the journal ‘’Computing in Science and Engineering’’ was entirely devoted to Python in scientific computing. One of the IPython.

    diff --git a/notebook.html b/notebook.html index 6db5286..a28103b 100644 --- a/notebook.html +++ b/notebook.html @@ -7,16 +7,13 @@ The IPython Notebook — IPython @@ -112,6 +109,11 @@

    Versions

    GitHub
    +

    Offline Docs

    + All Versions
    + GitHub +
    + diff --git a/objects.inv b/objects.inv index 963d640825beabf13ca3d68d1daaf6dd9a756ff2..28706ac85a3266e856b388f37c09db667854db51 100644 GIT binary patch delta 313 zcmV-90mlBO1E&L!cYi@o!!Qhm@A(y$*fog3jq4C-hoMPDT&pbc+KAMil9bVZPr5V{ ztw7wO=g-eijt%QjE9YvD4pqPaA(}_04(LFx!LaT-q^P20x@}|UZjuya>X6rtr=-A< zJtP&1Dh!{=u`&xsOCcsMd#zIMM2UdP>vj%jEwfN%V6Pe!4S$j)gI{yJs8hpse2Y(O zkQX7cRx-S2LXm+=dqmPI#1tsyqPp>l;v&^pke5QX_#r?wzTugBGMA;n%P0%thzI76 zxl>U~lD8INyB}hk`d+7+=&be}_!y;Ox_HX_yY<7|=?|zF?@Adq>`&}-v~Xey>_eF; zIyS$o^)$#*m@+oIW79jF793Fb-o|11by+P5szO=1j?*?;YL@qL9kYT>1`3}LKL2~5 LE0E$FpvwXd9yOU2 delta 312 zcmV-80muHQ1EvFzcYn=J!!Qtp?|zDv=+%hAjcY4V4@H%NxK^&cBo@wY<#i~1dy+b? zNCe_$eKWH^**LbcHzDjJ1~h^KlH6l32MnN>;MjI8QZmUi-8QKWH$4*FC-gP3?g_ke zgq}j7O3-%Er}MO6p}E!qs^anlo837zOo}++f%#*aEVLwF8-FYbco{YI=^gTHhs;Xs zEjtW3sBA0|=UEoB81e zHjY|l!_L&GS}|`U3%@7rm@ZxQ{oV3mn*PI7`frO2D~?Bwd3ZT82}ilk)feN_zdz^# KwE714rUDLn7o9Nx diff --git a/presentation.html b/presentation.html index f7b5d2c..fc6c62d 100644 --- a/presentation.html +++ b/presentation.html @@ -7,16 +7,13 @@ Presentations on IPython — IPython @@ -112,6 +109,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + @@ -321,7 +323,7 @@

    2007ΒΆ< system using IPython for high-level, fully managed access to supercomputing resources (this system hasn’t been implemented yet as of Sept 2008).
  • An article about IPython, -written by Fernando Perez and Brian Granger, published in the May/June 2007 +written by Fernando Perez and Brian Granger, published in the May/June 2007 issue of the journal ‘’Computing in Science and Engineering’‘.
  • A set of slides by diff --git a/pyreadline.html b/pyreadline.html index fc264c5..935a78c 100644 --- a/pyreadline.html +++ b/pyreadline.html @@ -7,16 +7,13 @@ PyReadline — IPython @@ -112,6 +109,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + @@ -259,7 +261,7 @@

    Installation

    Mailing listΒΆ

    -

    Questions and bug reports can be directed to the ipython-user mailing list.

    +

    Questions and bug reports can be directed to the ipython mailing list.

    Status and developmentΒΆ

    diff --git a/roadmap-announcement.html b/roadmap-announcement.html index ec95ab0..6790827 100644 --- a/roadmap-announcement.html +++ b/roadmap-announcement.html @@ -7,16 +7,13 @@ Roadmap to 1.0 and Beyond — IPython @@ -112,6 +109,11 @@

    Versions

    GitHub
    +

    Offline Docs

    + All Versions
    + GitHub +
    + diff --git a/screenshots/index.html b/screenshots/index.html index 8d51c08..1f72bb0 100644 --- a/screenshots/index.html +++ b/screenshots/index.html @@ -7,16 +7,13 @@ — IPython @@ -114,6 +111,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + diff --git a/search.html b/search.html index 36e94dd..484e80b 100644 --- a/search.html +++ b/search.html @@ -7,16 +7,13 @@ Search — IPython @@ -118,6 +115,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + diff --git a/searchresults.html b/searchresults.html index 03fff2a..54760df 100644 --- a/searchresults.html +++ b/searchresults.html @@ -7,16 +7,13 @@ Search results — IPython @@ -79,6 +76,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + diff --git a/security.html b/security.html index 22a25a9..bd7a9f0 100644 --- a/security.html +++ b/security.html @@ -7,16 +7,13 @@ Security in IPython — IPython @@ -110,6 +107,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + diff --git a/showmedo.html b/showmedo.html index d7d5321..08a6362 100644 --- a/showmedo.html +++ b/showmedo.html @@ -7,16 +7,13 @@ ShowMeDo — IPython @@ -112,6 +109,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + diff --git a/sloan-grant.html b/sloan-grant.html index 47cb433..1e14a9e 100644 --- a/sloan-grant.html +++ b/sloan-grant.html @@ -7,16 +7,13 @@ Sloan Foundation Grant — IPython @@ -112,6 +109,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + diff --git a/sponsors.html b/sponsors.html index 31e986e..5dcb28c 100644 --- a/sponsors.html +++ b/sponsors.html @@ -7,16 +7,13 @@ Sponsors — IPython @@ -112,6 +109,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + @@ -238,8 +240,8 @@

    Sponsors_images/sloan-logo.png

    In December 2012, IPython was awarded a $1.15 million grant from the Alfred P. Sloan Foundation that will fund the core team for the 2013-2014 period.

    -_images/RS_PoweredBy_OCC_logo-2c.png -

    As of Summer 2013, Rackspace generously provides +_images/RS_PoweredBy_OCC_logo-2c.png +

    As of Summer 2013, Rackspace generously provides cloud hosting for the project. This is used for development and the hosting of IPython related services, such as the IPython Notebook Viewer. We thank Jesse Noller and Kyle Kelley at Rackspace for setting up this sponsorship and helping with deployment diff --git a/usersurvey2011.html b/usersurvey2011.html index d4275ed..70606ca 100644 --- a/usersurvey2011.html +++ b/usersurvey2011.html @@ -7,16 +7,13 @@ IPython User Survey 2011 — IPython @@ -112,6 +109,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + diff --git a/usersurvey2013.html b/usersurvey2013.html index 0501e12..f2093a2 100644 --- a/usersurvey2013.html +++ b/usersurvey2013.html @@ -7,16 +7,13 @@ IPython User Survey 2013 — IPython @@ -112,6 +109,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + diff --git a/videos.html b/videos.html index af99dbc..31dc56a 100644 --- a/videos.html +++ b/videos.html @@ -7,16 +7,13 @@ Videos and Screencasts — IPython @@ -112,6 +109,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + @@ -253,7 +255,7 @@

    IPython: Python at your fingertips

    The IPython NotebookΒΆ

    A short (5 min) demonstration of the notebook’s basic features by the team at -the Pybonacci blog:

    +the Pybonacci blog:


    diff --git a/whatsnew082.html b/whatsnew082.html index 6efb6de..e033bb3 100644 --- a/whatsnew082.html +++ b/whatsnew082.html @@ -7,16 +7,13 @@ WhatsNew082 — IPython @@ -112,6 +109,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + diff --git a/whatsnew083.html b/whatsnew083.html index b9a5a6b..5b3744e 100644 --- a/whatsnew083.html +++ b/whatsnew083.html @@ -7,16 +7,13 @@ New features in 0.8.3 — IPython @@ -111,6 +108,11 @@

    Versions

    GitHub +

    Offline Docs

    + All Versions
    + GitHub +
    + From 0f5056eb4b7044cce510a05f44f8e20b6aa6cc49 Mon Sep 17 00:00:00 2001 From: TravisBot Date: Thu, 15 Jan 2015 14:28:52 +0000 Subject: [PATCH 035/146] =?UTF-8?q?Updated=20website=20(automated=20commit?= =?UTF-8?q?)=20=E2=80=93=20Thursday,=2015.=20January=202015=2002:28PM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CNAME | 1 - README.md | 17 ----------------- google46f5e5c36b67754a.html | 1 - objects.inv | Bin 423 -> 423 bytes usersurvey2013.html | 2 +- 5 files changed, 1 insertion(+), 20 deletions(-) delete mode 100644 CNAME delete mode 100644 README.md delete mode 100644 google46f5e5c36b67754a.html diff --git a/CNAME b/CNAME deleted file mode 100644 index cc33784..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -ipython.org diff --git a/README.md b/README.md deleted file mode 100644 index e38dcdc..0000000 --- a/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Build website - - -use make to build the website in the `gh-pages` directory, use - -``` -$ make gh-pages -``` - -It will clone the built-website repository, built a new version in it, and auto-commit. -Then prompt you to check that everything is fine before pushing. Of course you need -to have the right to push. - - -Additionally run `$ make linkcheck` if you have time to loose fixing old link. - - diff --git a/google46f5e5c36b67754a.html b/google46f5e5c36b67754a.html deleted file mode 100644 index bde95f2..0000000 --- a/google46f5e5c36b67754a.html +++ /dev/null @@ -1 +0,0 @@ -google-site-verification: google46f5e5c36b67754a.html \ No newline at end of file diff --git a/objects.inv b/objects.inv index 28706ac85a3266e856b388f37c09db667854db51..a1b28670c06f2c041a466aef055f4636535134f1 100644 GIT binary patch delta 313 zcmV-90mlBP1E&L!cYjS!!!Qhn@A(y$*fog3jq4`R4nvcQxK3H)brGpO#VKR|o^)xZ zwE}Ugp7+B}Qo*_lE}lW6efDOD9`qb!p!bK^`nwra#pMWAn{zxcDe-J*+XO>#67B_k z5pwCWbu34bUf=Ks10vN%qNv(MN6k2RQ$K@6Hk1o(T^(3> zAGKw=T#kNxm_LmR{xFrwb&+Ag;m9H1u^gF%gIq^hu4QYy-v;z(1SiK!a@QioOFCEg z37r!9nph?Rdom7?C={BSPn4e6%Jke4ldr6~EG{KzLVcM2eLWiX6rtr=-A< zJtP&1Dh!{=u`&xsOCcsMd#zIMM2UdP>vj%jEwfN%V6Pe!4S$j)gI{yJs8hpse2Y(O zkQX7cRx-S2LXm+=dqmPI#1tsyqPp>l;v&^pke5QX_#r?wzTugBGMA;n%P0%thzI76 zxl>U~lD8INyB}hk`d+7+=&be}_!y;Ox_HX_yY<7|=?|zF?@Adq>`&}-v~Xey>_eF; zIyS$o^)$#*m@+oIW79jF793Fb-o|11by+P5szO=1j?*?;YL@qL9kYT>1`3}LKL2~5 LE0E$FpvwXdA8wfz diff --git a/usersurvey2013.html b/usersurvey2013.html index f2093a2..7c878cc 100644 --- a/usersurvey2013.html +++ b/usersurvey2013.html @@ -248,7 +248,7 @@

    Countries_images/countries1.png +_images/countries1.png

    See the ‘Countries’ sheet of the results spreadsheet for the cleaned data.

    From 1655d2ebce5555527849d6c4bde92acfe3f011c8 Mon Sep 17 00:00:00 2001 From: Bussonnier Matthias Date: Thu, 15 Jan 2015 16:13:00 +0100 Subject: [PATCH 036/146] readd CNAME --- CNAME | 1 + README.md | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 CNAME create mode 100644 README.md diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..cc33784 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +ipython.org diff --git a/README.md b/README.md new file mode 100644 index 0000000..e38dcdc --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +# Build website + + +use make to build the website in the `gh-pages` directory, use + +``` +$ make gh-pages +``` + +It will clone the built-website repository, built a new version in it, and auto-commit. +Then prompt you to check that everything is fine before pushing. Of course you need +to have the right to push. + + +Additionally run `$ make linkcheck` if you have time to loose fixing old link. + + From 186610136fa12e3508dc708b5b2f1d383abe069c Mon Sep 17 00:00:00 2001 From: TravisBot Date: Fri, 16 Jan 2015 13:59:00 +0000 Subject: [PATCH 037/146] =?UTF-8?q?Updated=20website=20(automated=20commit?= =?UTF-8?q?)=20=E2=80=93=20Friday,=2016.=20January=202015=2001:59PM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _sources/sponsors.txt | 3 --- books.html | 2 -- citing.html | 2 -- documentation.html | 2 -- donate.html | 2 -- faq.html | 2 -- google46f5e5c36b67754a.html | 1 + index.html | 2 -- install.html | 2 -- microsoft-donation-2013.html | 2 -- news.html | 2 -- notebook.html | 2 -- objects.inv | Bin 423 -> 422 bytes presentation.html | 2 -- pyreadline.html | 2 -- roadmap-announcement.html | 2 -- screenshots/index.html | 2 -- search.html | 2 -- searchresults.html | 2 -- security.html | 2 -- showmedo.html | 2 -- sloan-grant.html | 2 -- sponsors.html | 4 ---- usersurvey2011.html | 2 -- usersurvey2013.html | 2 -- videos.html | 2 -- whatsnew082.html | 2 -- whatsnew083.html | 2 -- 28 files changed, 1 insertion(+), 55 deletions(-) create mode 100644 google46f5e5c36b67754a.html diff --git a/_sources/sponsors.txt b/_sources/sponsors.txt index 965b313..24965e1 100644 --- a/_sources/sponsors.txt +++ b/_sources/sponsors.txt @@ -84,7 +84,4 @@ following sources: - GitHub_ hosts our development workflow and documentation. -- `ShiningPanda `_ gives us a free `continuous - integration service `_. - .. include:: links.txt diff --git a/books.html b/books.html index c8c8771..29cf890 100644 --- a/books.html +++ b/books.html @@ -196,8 +196,6 @@

    For developers

    Development Chat Room

  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/citing.html b/citing.html index 82165fb..c940ea1 100644 --- a/citing.html +++ b/citing.html @@ -198,8 +198,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/documentation.html b/documentation.html index f3e4aa7..47ea0e5 100644 --- a/documentation.html +++ b/documentation.html @@ -198,8 +198,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/donate.html b/donate.html index d1e3566..eec7a81 100644 --- a/donate.html +++ b/donate.html @@ -198,8 +198,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/faq.html b/faq.html index d4d2067..f1b25c1 100644 --- a/faq.html +++ b/faq.html @@ -198,8 +198,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/google46f5e5c36b67754a.html b/google46f5e5c36b67754a.html new file mode 100644 index 0000000..bde95f2 --- /dev/null +++ b/google46f5e5c36b67754a.html @@ -0,0 +1 @@ +google-site-verification: google46f5e5c36b67754a.html \ No newline at end of file diff --git a/index.html b/index.html index 5ed41c0..7e44034 100644 --- a/index.html +++ b/index.html @@ -197,8 +197,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/install.html b/install.html index dd31bef..70a935c 100644 --- a/install.html +++ b/install.html @@ -198,8 +198,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/microsoft-donation-2013.html b/microsoft-donation-2013.html index 7d3f565..ffeb1d7 100644 --- a/microsoft-donation-2013.html +++ b/microsoft-donation-2013.html @@ -198,8 +198,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/news.html b/news.html index 334b486..21d0131 100644 --- a/news.html +++ b/news.html @@ -198,8 +198,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/notebook.html b/notebook.html index a28103b..4e64467 100644 --- a/notebook.html +++ b/notebook.html @@ -198,8 +198,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/objects.inv b/objects.inv index a1b28670c06f2c041a466aef055f4636535134f1..a477c499e717c45d282c25dd93c6b9bcd5fc6ca7 100644 GIT binary patch delta 313 zcmV-90mlBP1EvFzc7IY$Ps1<_z2{e0V%H!BH?EsNI}A-K;yPuC*G8oFl%yN`_oPiT z(F(*ZdLQ<)owGH_0YWs-P94yJT*7(4?wi=Uy9In?g(3r$_K2iah(Tx@E!9(_C4*nZ zx5|Re?iw2=5m0&EO!XPd2B@-Nr)m_2FXUL6Fs~n?a;|h(7k`zgk%rz=c|pepoBl0A za?rl^isCFxPsoADh93Y_{Tp7mBcq~ag4Z4vt<|0bAEPu(10f$DmQT~de~8Ky+d{*N z{fT|9A5KhxeYowfW%J93r>iW)IOUd2=WraBIO2i%b80GRN$}oaX#;N~mrkI=J}rCi z(V+@BJ4K?q7BVRgX>+08A(KPi9P5O@kv$|73Yva`?!1lH`CrIr2~`!9rP~gYlrR70 LSb!AYwYmZh&(4)* delta 314 zcmV-A0mc5N1E&L!c7KvhPs1<_hVS_mme@6j!Hw%C&<;bBinvZ$<8=|KJ;f|7~+GEwSb!72-+;lwaBIG7mv+X>>s((j{IO2}^a~vwP?EZeh zvNOC5nre`KnOEpAEKm7z7Fou|%*uq1>@Z}Zsskd`MxvhK0M=^)4vj{a+W-In diff --git a/presentation.html b/presentation.html index fc6c62d..83d1089 100644 --- a/presentation.html +++ b/presentation.html @@ -198,8 +198,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/pyreadline.html b/pyreadline.html index 935a78c..0fa5742 100644 --- a/pyreadline.html +++ b/pyreadline.html @@ -198,8 +198,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/roadmap-announcement.html b/roadmap-announcement.html index 6790827..ac4cc60 100644 --- a/roadmap-announcement.html +++ b/roadmap-announcement.html @@ -198,8 +198,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/screenshots/index.html b/screenshots/index.html index 1f72bb0..305a992 100644 --- a/screenshots/index.html +++ b/screenshots/index.html @@ -200,8 +200,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/search.html b/search.html index 484e80b..8f5c516 100644 --- a/search.html +++ b/search.html @@ -204,8 +204,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/searchresults.html b/searchresults.html index 54760df..50d7498 100644 --- a/searchresults.html +++ b/searchresults.html @@ -165,8 +165,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/security.html b/security.html index bd7a9f0..a4615d3 100644 --- a/security.html +++ b/security.html @@ -196,8 +196,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/showmedo.html b/showmedo.html index 08a6362..68d9a9a 100644 --- a/showmedo.html +++ b/showmedo.html @@ -198,8 +198,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/sloan-grant.html b/sloan-grant.html index 1e14a9e..f532890 100644 --- a/sloan-grant.html +++ b/sloan-grant.html @@ -198,8 +198,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/sponsors.html b/sponsors.html index 5dcb28c..a7b5945 100644 --- a/sponsors.html +++ b/sponsors.html @@ -198,8 +198,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • @@ -284,8 +282,6 @@

    Other supportBivio Software hosted an IPython sprint in 2006, in addition to their support of the Front Range Pythoneers group in Boulder, CO.
  • GitHub hosts our development workflow and documentation.
  • -
  • ShiningPanda gives us a free continuous -integration service.
  • diff --git a/usersurvey2011.html b/usersurvey2011.html index 70606ca..750b14f 100644 --- a/usersurvey2011.html +++ b/usersurvey2011.html @@ -198,8 +198,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/usersurvey2013.html b/usersurvey2013.html index 7c878cc..77ebcb5 100644 --- a/usersurvey2013.html +++ b/usersurvey2013.html @@ -198,8 +198,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/videos.html b/videos.html index 31dc56a..e4e019e 100644 --- a/videos.html +++ b/videos.html @@ -198,8 +198,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/whatsnew082.html b/whatsnew082.html index e033bb3..1f3dfa8 100644 --- a/whatsnew082.html +++ b/whatsnew082.html @@ -198,8 +198,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • diff --git a/whatsnew083.html b/whatsnew083.html index 5b3744e..d6c6fb4 100644 --- a/whatsnew083.html +++ b/whatsnew083.html @@ -197,8 +197,6 @@

    For developers

    Development Chat Room
  • Development information
  • -
  • - Shining Panda
  • Travis CI
  • From 6f77bc60d061324f5a264289b3d7c946fb109877 Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Thu, 5 Feb 2015 09:50:38 -0800 Subject: [PATCH 038/146] =?UTF-8?q?Updated=20website=20(automated=20commit?= =?UTF-8?q?)=20=E2=80=93=20Thursday,=2005.=20February=202015=2009:50AM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _sources/index.txt | 4 ++-- _sources/news.txt | 6 ++++++ _static/pygments.css | 1 - books.html | 4 ++-- citing.html | 4 ++-- documentation.html | 4 ++-- donate.html | 4 ++-- faq.html | 4 ++-- index.html | 8 ++++---- install.html | 4 ++-- microsoft-donation-2013.html | 4 ++-- news.html | 9 +++++++-- notebook.html | 4 ++-- objects.inv | Bin 422 -> 420 bytes presentation.html | 4 ++-- pyreadline.html | 4 ++-- roadmap-announcement.html | 4 ++-- screenshots/index.html | 4 ++-- search.html | 4 ++-- searchresults.html | 4 ++-- security.html | 4 ++-- showmedo.html | 4 ++-- sloan-grant.html | 4 ++-- sponsors.html | 4 ++-- usersurvey2011.html | 4 ++-- usersurvey2013.html | 6 +++--- videos.html | 4 ++-- whatsnew082.html | 4 ++-- whatsnew083.html | 4 ++-- 29 files changed, 66 insertions(+), 56 deletions(-) diff --git a/_sources/index.txt b/_sources/index.txt index 50962b8..ec18ce9 100644 --- a/_sources/index.txt +++ b/_sources/index.txt @@ -71,8 +71,8 @@ Announcements - **Book**: Cyrille Rossant has published the `IPython Interactive Computing and Visualization Cookbook `_, an advanced-level guide to IPython for data science, and the sequel of his previous book on IPython. We thank Packt Publishing for donating a portion of the proceeds from this book to support IPython's development. -- **IPython 2.3**: A security and bugfix release for IPython 2.x, released 1st - October 2014. +- **IPython 2.4**: A bugfix and minor featuer release for IPython 2.x, released + 30th January 2015. - **IPython 2.0**: We are proud to announce the availability of IPython 2.0, a major new release including HTML widgets and multi-directory navigation. diff --git a/_sources/news.txt b/_sources/news.txt index 48838ae..22a2b2b 100644 --- a/_sources/news.txt +++ b/_sources/news.txt @@ -2,6 +2,12 @@ News ==== +IPython 2.4 +----------- + +IPython 2.4 was released on January 30, 2015. It adds support for the new +notebook format coming in IPython 3.0, along with fixing bugs in the 2.x series. + IPython 2.3 ----------- diff --git a/_static/pygments.css b/_static/pygments.css index 57eadc0..d79caa1 100644 --- a/_static/pygments.css +++ b/_static/pygments.css @@ -40,7 +40,6 @@ .highlight .nv { color: #bb60d5 } /* Name.Variable */ .highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ -.highlight .mb { color: #208050 } /* Literal.Number.Bin */ .highlight .mf { color: #208050 } /* Literal.Number.Float */ .highlight .mh { color: #208050 } /* Literal.Number.Hex */ .highlight .mi { color: #208050 } /* Literal.Number.Integer */ diff --git a/books.html b/books.html index 29cf890..17fb27e 100644 --- a/books.html +++ b/books.html @@ -98,7 +98,7 @@

    Versions

    Stable

    - 2.3 – October 2014
    + 2.4 – January 2015
    Install
    @@ -271,7 +271,7 @@

    IPython Minibook © Copyright the IPython development team. - Created using Sphinx 1.2.3. + Created using Sphinx 1.2.2. diff --git a/citing.html b/citing.html index c940ea1..ed87c7a 100644 --- a/citing.html +++ b/citing.html @@ -100,7 +100,7 @@

    Versions

    Stable

    - 2.3 – October 2014
    + 2.4 – January 2015
    Install
    @@ -273,7 +273,7 @@

    Citing IPython © Copyright the IPython development team. - Created using Sphinx 1.2.3. + Created using Sphinx 1.2.2. diff --git a/documentation.html b/documentation.html index 47ea0e5..6bbcec1 100644 --- a/documentation.html +++ b/documentation.html @@ -100,7 +100,7 @@

    Versions

    Stable

    - 2.3 – October 2014
    + 2.4 – January 2015
    Install
    @@ -337,7 +337,7 @@

    Other projects using IPython © Copyright the IPython development team. - Created using Sphinx 1.2.3. + Created using Sphinx 1.2.2. diff --git a/donate.html b/donate.html index eec7a81..28ddcee 100644 --- a/donate.html +++ b/donate.html @@ -100,7 +100,7 @@

    Versions

    Stable

    - 2.3 – October 2014
    + 2.4 – January 2015
    Install
    @@ -269,7 +269,7 @@

    Support IPython Development © Copyright the IPython development team. - Created using Sphinx 1.2.3. + Created using Sphinx 1.2.2. diff --git a/faq.html b/faq.html index f1b25c1..003439f 100644 --- a/faq.html +++ b/faq.html @@ -100,7 +100,7 @@

    Versions

    Stable

    - 2.3 – October 2014
    + 2.4 – January 2015
    Install
    @@ -297,7 +297,7 @@

    What is the best way to install IPython? © Copyright the IPython development team. - Created using Sphinx 1.2.3. + Created using Sphinx 1.2.2. diff --git a/index.html b/index.html index 7e44034..81d2544 100644 --- a/index.html +++ b/index.html @@ -99,7 +99,7 @@

    Versions

    Stable

    - 2.3 – October 2014
    + 2.4 – January 2015
    Install
    @@ -263,8 +263,8 @@

    Support IPython

    AnnouncementsΒΆ

    • Book: Cyrille Rossant has published the IPython Interactive Computing and Visualization Cookbook, an advanced-level guide to IPython for data science, and the sequel of his previous book on IPython. We thank Packt Publishing for donating a portion of the proceeds from this book to support IPython’s development.
    • -
    • IPython 2.3: A security and bugfix release for IPython 2.x, released 1st -October 2014.
    • +
    • IPython 2.4: A bugfix and minor featuer release for IPython 2.x, released +30th January 2015.
    • IPython 2.0: We are proud to announce the availability of IPython 2.0, a major new release including HTML widgets and multi-directory navigation. Install it now, or read about the changes in @@ -324,7 +324,7 @@

      Announcements © Copyright the IPython development team. - Created using Sphinx 1.2.3. + Created using Sphinx 1.2.2. diff --git a/install.html b/install.html index 70a935c..7f56ca0 100644 --- a/install.html +++ b/install.html @@ -100,7 +100,7 @@

      Versions

      Stable

      - 2.3 – October 2014
      + 2.4 – January 2015
      Install
      @@ -291,7 +291,7 @@

      I am getting started with Python © Copyright the IPython development team. - Created using Sphinx 1.2.3. + Created using Sphinx 1.2.2. diff --git a/microsoft-donation-2013.html b/microsoft-donation-2013.html index ffeb1d7..0e998f2 100644 --- a/microsoft-donation-2013.html +++ b/microsoft-donation-2013.html @@ -100,7 +100,7 @@

      Versions

      Stable

      - 2.3 – October 2014
      + 2.4 – January 2015
      Install
      @@ -266,7 +266,7 @@

      Support IPython

      diff --git a/news.html b/news.html index 21d0131..d74669b 100644 --- a/news.html +++ b/news.html @@ -100,7 +100,7 @@

      Versions

      Stable

      - 2.3 – October 2014
      + 2.4 – January 2015
      Install
      @@ -232,6 +232,11 @@

      Support IPython

      NewsΒΆ

      +
      +

      IPython 2.4ΒΆ

      +

      IPython 2.4 was released on January 30, 2015. It adds support for the new +notebook format coming in IPython 3.0, along with fixing bugs in the 2.x series.

      +

      IPython 2.3ΒΆ

      IPython 2.3 includes bugfixes for 2.x, most importantly a fix for maths @@ -570,7 +575,7 @@

      IPython 0.7.2 is released (June 6, 2006) © Copyright the IPython development team. - Created using Sphinx 1.2.3. + Created using Sphinx 1.2.2.

      diff --git a/notebook.html b/notebook.html index 4e64467..196f272 100644 --- a/notebook.html +++ b/notebook.html @@ -100,7 +100,7 @@

      Versions

      Stable

      - 2.3 – October 2014
      + 2.4 – January 2015
      Install
      @@ -264,7 +264,7 @@

      Support IPython

      diff --git a/objects.inv b/objects.inv index a477c499e717c45d282c25dd93c6b9bcd5fc6ca7..912bfd91678d27e648639dd8243beb33f47a867d 100644 GIT binary patch delta 310 zcmV-60m=TR1Ed3xcYi%k!!Qut{VPtQs}Y5bwH2sCQKcZ(%C)bFRp+j<9ZLT_PFzPM z0)zQ8juq`|uP8!@=GmzOI*>~UJs}6;zKN~7`vE}JpW%f&GAddocPd9hBE=y+8+(UL4mmp334ehjdq^l0RD4>4Jd4X% z&RM`mRwy!1X^%)+g&0K3=9l*8t1QHAfi0WP;kd_z(q)+0KuaN}R%PP4s6;^Jbu+u_ z0lTGFS+G+z3T>mMdY(KsS->g_HoI$Vm;`ae1M_L>C}=UgH&`6-cH>en-FX|Y^JW<> z)~cv1jYC_jJue47MroLa_mYnf%cp73AEJ`GEi|mypV{Y670yh7eHcfjFuwfzQ5GP@ IH`KoZ4$hp9y8r+H delta 312 zcmV-80muHN1EvFzcYjS!!!QiJ=T}%_*B}NruA4wR3{5KHI%SF1Mx^$Xq#OJ9q)ju? z3dAjXANI4Ivo**8LNw1#9ngVX!g;{%o7lR$1$<Pt(GGh{_b(Lc@yv ziG8jgPE3J)xb3fH^UH{*t1QGg<(5t7a2%F6;(_^dYAR?+@ZMl)18*ajPN2g+Eqm|L zp$a%VMWVYFDKQRdbD`cLlSAGd>x96OJtPzgntp=ryp7lSU&v?)RTY(`+YXYHFaPFP KfE3@gx&jVpSCtU} diff --git a/presentation.html b/presentation.html index 83d1089..e0873fd 100644 --- a/presentation.html +++ b/presentation.html @@ -100,7 +100,7 @@

      Versions

      Stable

      - 2.3 – October 2014
      + 2.4 – January 2015
      Install
      @@ -386,7 +386,7 @@

      2003ΒΆ diff --git a/pyreadline.html b/pyreadline.html index 0fa5742..d258645 100644 --- a/pyreadline.html +++ b/pyreadline.html @@ -100,7 +100,7 @@

      Versions

      Stable

      - 2.3 – October 2014
      + 2.4 – January 2015
      Install
      @@ -281,7 +281,7 @@

      Status and development © Copyright the IPython development team. - Created using Sphinx 1.2.3. + Created using Sphinx 1.2.2. diff --git a/roadmap-announcement.html b/roadmap-announcement.html index ac4cc60..551b197 100644 --- a/roadmap-announcement.html +++ b/roadmap-announcement.html @@ -100,7 +100,7 @@

      Versions

      Stable

      - 2.3 – October 2014
      + 2.4 – January 2015
      Install
      @@ -284,7 +284,7 @@

      Roadmap to 1.0 and Beyond © Copyright the IPython development team. - Created using Sphinx 1.2.3. + Created using Sphinx 1.2.2. diff --git a/screenshots/index.html b/screenshots/index.html index 305a992..c20ac6b 100644 --- a/screenshots/index.html +++ b/screenshots/index.html @@ -102,7 +102,7 @@

      Versions

      Stable

      - 2.3 – October 2014
      + 2.4 – January 2015
      Install
      @@ -259,7 +259,7 @@

      HTML Notebook

      diff --git a/search.html b/search.html index 8f5c516..c7ccf07 100644 --- a/search.html +++ b/search.html @@ -106,7 +106,7 @@

      Versions

      Stable

      - 2.3 – October 2014
      + 2.4 – January 2015
      Install
      @@ -272,7 +272,7 @@

      Search

      diff --git a/searchresults.html b/searchresults.html index 50d7498..a413250 100644 --- a/searchresults.html +++ b/searchresults.html @@ -67,7 +67,7 @@

      Versions

      Stable

      - 2.3 – October 2014
      + 2.4 – January 2015
      Install
      @@ -377,7 +377,7 @@

      Search results © Copyright the IPython development team. - Created using Sphinx 1.2.3. + Created using Sphinx 1.2.2. diff --git a/security.html b/security.html index a4615d3..18f4078 100644 --- a/security.html +++ b/security.html @@ -98,7 +98,7 @@

      Versions

      Stable

      - 2.3 – October 2014
      + 2.4 – January 2015
      Install
      @@ -247,7 +247,7 @@

      Support IPython

      diff --git a/showmedo.html b/showmedo.html index 68d9a9a..e1f8a44 100644 --- a/showmedo.html +++ b/showmedo.html @@ -100,7 +100,7 @@

      Versions

      Stable

      - 2.3 – October 2014
      + 2.4 – January 2015
      Install
      @@ -275,7 +275,7 @@

      A note about ShowMeDo © Copyright the IPython development team. - Created using Sphinx 1.2.3. + Created using Sphinx 1.2.2. diff --git a/sloan-grant.html b/sloan-grant.html index f532890..e5945ff 100644 --- a/sloan-grant.html +++ b/sloan-grant.html @@ -100,7 +100,7 @@

      Versions

      Stable

      - 2.3 – October 2014
      + 2.4 – January 2015
      Install
      @@ -293,7 +293,7 @@

      Support IPython

      diff --git a/sponsors.html b/sponsors.html index a7b5945..eb55ef7 100644 --- a/sponsors.html +++ b/sponsors.html @@ -100,7 +100,7 @@

      Versions

      Stable

      - 2.3 – October 2014
      + 2.4 – January 2015
      Install
      @@ -299,7 +299,7 @@

      Other support © Copyright the IPython development team. - Created using Sphinx 1.2.3. + Created using Sphinx 1.2.2. diff --git a/usersurvey2011.html b/usersurvey2011.html index 750b14f..29084fb 100644 --- a/usersurvey2011.html +++ b/usersurvey2011.html @@ -100,7 +100,7 @@

      Versions

      Stable

      - 2.3 – October 2014
      + 2.4 – January 2015
      Install
      @@ -339,7 +339,7 @@

      Design of the survey © Copyright the IPython development team. - Created using Sphinx 1.2.3. + Created using Sphinx 1.2.2. diff --git a/usersurvey2013.html b/usersurvey2013.html index 77ebcb5..078c461 100644 --- a/usersurvey2013.html +++ b/usersurvey2013.html @@ -100,7 +100,7 @@

      Versions

      Stable

      - 2.3 – October 2014
      + 2.4 – January 2015
      Install
      @@ -246,7 +246,7 @@

      Countries_images/countries1.png +_images/countries1.png

      See the ‘Countries’ sheet of the results spreadsheet for the cleaned data.

      @@ -429,7 +429,7 @@

      Other comments © Copyright the IPython development team. - Created using Sphinx 1.2.3. + Created using Sphinx 1.2.2.

      diff --git a/videos.html b/videos.html index e4e019e..455511e 100644 --- a/videos.html +++ b/videos.html @@ -100,7 +100,7 @@

      Versions

      Stable

      - 2.3 – October 2014
      + 2.4 – January 2015
      Install
      @@ -316,7 +316,7 @@

      More videos and screencasts © Copyright the IPython development team. - Created using Sphinx 1.2.3. + Created using Sphinx 1.2.2. diff --git a/whatsnew082.html b/whatsnew082.html index 1f3dfa8..fe6b59e 100644 --- a/whatsnew082.html +++ b/whatsnew082.html @@ -100,7 +100,7 @@

      Versions

      Stable

      - 2.3 – October 2014
      + 2.4 – January 2015
      Install
      @@ -318,7 +318,7 @@

      Known issues © Copyright the IPython development team. - Created using Sphinx 1.2.3. + Created using Sphinx 1.2.2. diff --git a/whatsnew083.html b/whatsnew083.html index d6c6fb4..1436cb9 100644 --- a/whatsnew083.html +++ b/whatsnew083.html @@ -99,7 +99,7 @@

      Versions

      Stable

      - 2.3 – October 2014
      + 2.4 – January 2015
      Install
      @@ -300,7 +300,7 @@

      New features in 0.8.3 © Copyright the IPython development team. - Created using Sphinx 1.2.3. + Created using Sphinx 1.2.2. From 6ada061d24aa09e36431cf5220fcfee7a0fbdb6e Mon Sep 17 00:00:00 2001 From: TravisBot Date: Thu, 5 Feb 2015 17:53:19 +0000 Subject: [PATCH 039/146] =?UTF-8?q?Updated=20website=20(automated=20commit?= =?UTF-8?q?)=20=E2=80=93=20Thursday,=2005.=20February=202015=2005:53PM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _static/pygments.css | 1 + books.html | 2 +- citing.html | 2 +- documentation.html | 2 +- donate.html | 2 +- faq.html | 2 +- index.html | 2 +- install.html | 2 +- microsoft-donation-2013.html | 2 +- news.html | 2 +- notebook.html | 2 +- objects.inv | Bin 420 -> 422 bytes presentation.html | 2 +- pyreadline.html | 2 +- roadmap-announcement.html | 2 +- screenshots/index.html | 2 +- search.html | 2 +- searchresults.html | 2 +- security.html | 2 +- showmedo.html | 2 +- sloan-grant.html | 2 +- sponsors.html | 2 +- usersurvey2011.html | 2 +- usersurvey2013.html | 4 ++-- videos.html | 2 +- whatsnew082.html | 2 +- whatsnew083.html | 2 +- 27 files changed, 27 insertions(+), 26 deletions(-) diff --git a/_static/pygments.css b/_static/pygments.css index d79caa1..57eadc0 100644 --- a/_static/pygments.css +++ b/_static/pygments.css @@ -40,6 +40,7 @@ .highlight .nv { color: #bb60d5 } /* Name.Variable */ .highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mb { color: #208050 } /* Literal.Number.Bin */ .highlight .mf { color: #208050 } /* Literal.Number.Float */ .highlight .mh { color: #208050 } /* Literal.Number.Hex */ .highlight .mi { color: #208050 } /* Literal.Number.Integer */ diff --git a/books.html b/books.html index 17fb27e..e10ec0a 100644 --- a/books.html +++ b/books.html @@ -271,7 +271,7 @@

      IPython Minibook © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.2.3. diff --git a/citing.html b/citing.html index ed87c7a..9c0ae81 100644 --- a/citing.html +++ b/citing.html @@ -273,7 +273,7 @@

      Citing IPython © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.2.3. diff --git a/documentation.html b/documentation.html index 6bbcec1..9c137eb 100644 --- a/documentation.html +++ b/documentation.html @@ -337,7 +337,7 @@

      Other projects using IPython © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.2.3. diff --git a/donate.html b/donate.html index 28ddcee..13d1559 100644 --- a/donate.html +++ b/donate.html @@ -269,7 +269,7 @@

      Support IPython Development © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.2.3. diff --git a/faq.html b/faq.html index 003439f..9e7e01a 100644 --- a/faq.html +++ b/faq.html @@ -297,7 +297,7 @@

      What is the best way to install IPython? © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.2.3. diff --git a/index.html b/index.html index 81d2544..11e7e8b 100644 --- a/index.html +++ b/index.html @@ -324,7 +324,7 @@

      Announcements © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.2.3. diff --git a/install.html b/install.html index 7f56ca0..463cc8f 100644 --- a/install.html +++ b/install.html @@ -291,7 +291,7 @@

      I am getting started with Python © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.2.3. diff --git a/microsoft-donation-2013.html b/microsoft-donation-2013.html index 0e998f2..d3c6a9a 100644 --- a/microsoft-donation-2013.html +++ b/microsoft-donation-2013.html @@ -266,7 +266,7 @@

      Support IPython

      diff --git a/news.html b/news.html index d74669b..367761c 100644 --- a/news.html +++ b/news.html @@ -575,7 +575,7 @@

      IPython 0.7.2 is released (June 6, 2006) © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.2.3. diff --git a/notebook.html b/notebook.html index 196f272..a718f27 100644 --- a/notebook.html +++ b/notebook.html @@ -264,7 +264,7 @@

      Support IPython

      diff --git a/objects.inv b/objects.inv index 912bfd91678d27e648639dd8243beb33f47a867d..900ec850471f7e80c2e2a5cf15ca773d8e30699a 100644 GIT binary patch delta 289 zcmV++0p9+k1EvFzj(?4h)WW%|d=91m9w&|~5`oyP_i=vjY(W$1BS^H5-W6g2C6LBnFf{RTK2~KeL#;!P^P{_cP&yh(J^Iv@6gGiua0#>;GF{`6bh<7okgCF z%UGVXfVZqLWTC19BGpEsDB_3*=8vhhpvC-pMA+;u@yG-(BY&6LoXNAXvuhnmOxcQc zT~w+;a%AyqDlh1`u1$Ydk{q;ef}uEDZBOWd$c7&PRQ(yAxFb8P5T1Kj3D#Y3@iKp; zjFy~LQ8_AARqdjqW?t_ab^)s_DEgM|FAYx@U5K&dmTl*8?Ap3Iu<(1-mTAbX@9&lm n(;0t=N{(%zVH(BZ#39$06O(X|YrZs$&;S0p1!(mRW(figro@q2 delta 287 zcmV+)0pR|o1Ed3xj(@eUiB;#WvK>nQJx*LlBm%Kn@9W;#4vrP=Yp*Cmi00X;13HjP z2t6SO;=YNkyZZq^)t}*oJ2EO-CV1^(Q6pJ0_%%%`XpVtRe-?&y*emDu9v!NHVd_bA z*CNFsJsW$6Ob$6Z)(L?ldq^l0RD4>4Jd4X%&RM`mRwy!1X@8GMT7?)y%jTE%=c_El zZGkPD&f&Pnh0H)i@S6Q%AH41H`rFxz`Hd(+b3pTrJ zY?uUb!~^qb>L_S2y*F4K@OI-;FWq??uk&UZE!L{2ER923t33xkMroLa_mYnf%cp73 lAEJ`GEi|mypBUNaPZiEgfqfW9r7*ty`%xAk#W&Qy0uFBwg#G{k diff --git a/presentation.html b/presentation.html index e0873fd..7d724d0 100644 --- a/presentation.html +++ b/presentation.html @@ -386,7 +386,7 @@

      2003ΒΆ diff --git a/pyreadline.html b/pyreadline.html index d258645..1c7d199 100644 --- a/pyreadline.html +++ b/pyreadline.html @@ -281,7 +281,7 @@

      Status and development © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.2.3. diff --git a/roadmap-announcement.html b/roadmap-announcement.html index 551b197..22957cf 100644 --- a/roadmap-announcement.html +++ b/roadmap-announcement.html @@ -284,7 +284,7 @@

      Roadmap to 1.0 and Beyond © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.2.3. diff --git a/screenshots/index.html b/screenshots/index.html index c20ac6b..d6d176f 100644 --- a/screenshots/index.html +++ b/screenshots/index.html @@ -259,7 +259,7 @@

      HTML Notebook

      diff --git a/search.html b/search.html index c7ccf07..5a873f4 100644 --- a/search.html +++ b/search.html @@ -272,7 +272,7 @@

      Search

      diff --git a/searchresults.html b/searchresults.html index a413250..988ebbd 100644 --- a/searchresults.html +++ b/searchresults.html @@ -377,7 +377,7 @@

      Search results © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.2.3. diff --git a/security.html b/security.html index 18f4078..5251675 100644 --- a/security.html +++ b/security.html @@ -247,7 +247,7 @@

      Support IPython

      diff --git a/showmedo.html b/showmedo.html index e1f8a44..2cc79af 100644 --- a/showmedo.html +++ b/showmedo.html @@ -275,7 +275,7 @@

      A note about ShowMeDo © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.2.3. diff --git a/sloan-grant.html b/sloan-grant.html index e5945ff..89a5127 100644 --- a/sloan-grant.html +++ b/sloan-grant.html @@ -293,7 +293,7 @@

      Support IPython

      diff --git a/sponsors.html b/sponsors.html index eb55ef7..e4b4720 100644 --- a/sponsors.html +++ b/sponsors.html @@ -299,7 +299,7 @@

      Other support © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.2.3. diff --git a/usersurvey2011.html b/usersurvey2011.html index 29084fb..52fca50 100644 --- a/usersurvey2011.html +++ b/usersurvey2011.html @@ -339,7 +339,7 @@

      Design of the survey © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.2.3. diff --git a/usersurvey2013.html b/usersurvey2013.html index 078c461..5d22cb9 100644 --- a/usersurvey2013.html +++ b/usersurvey2013.html @@ -246,7 +246,7 @@

      Countries_images/countries1.png +_images/countries1.png

      See the ‘Countries’ sheet of the results spreadsheet for the cleaned data.

      @@ -429,7 +429,7 @@

      Other comments © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.2.3.

      diff --git a/videos.html b/videos.html index 455511e..033b3a1 100644 --- a/videos.html +++ b/videos.html @@ -316,7 +316,7 @@

      More videos and screencasts © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.2.3. diff --git a/whatsnew082.html b/whatsnew082.html index fe6b59e..e259d28 100644 --- a/whatsnew082.html +++ b/whatsnew082.html @@ -318,7 +318,7 @@

      Known issues © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.2.3. diff --git a/whatsnew083.html b/whatsnew083.html index 1436cb9..481b439 100644 --- a/whatsnew083.html +++ b/whatsnew083.html @@ -300,7 +300,7 @@

      New features in 0.8.3 © Copyright the IPython development team. - Created using Sphinx 1.2.2. + Created using Sphinx 1.2.3. From a45e24f3dc484a46125bcbec775aaf8001695eae Mon Sep 17 00:00:00 2001 From: TravisBot Date: Mon, 9 Feb 2015 17:21:11 +0000 Subject: [PATCH 040/146] =?UTF-8?q?Updated=20website=20(automated=20commit?= =?UTF-8?q?)=20=E2=80=93=20Monday,=2009.=20February=202015=2005:21PM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _sources/documentation.txt | 2 +- documentation.html | 2 +- objects.inv | Bin 422 -> 422 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_sources/documentation.txt b/_sources/documentation.txt index 673dfe6..fd5a493 100644 --- a/_sources/documentation.txt +++ b/_sources/documentation.txt @@ -9,7 +9,7 @@ IPython manual * `Current Development Version `_ You can download IPython documentation for offline use, and for all version of IPython on -`GitHub `. +`GitHub `_. `This introduction to some key features `_ is a good diff --git a/documentation.html b/documentation.html index 9c137eb..857ff74 100644 --- a/documentation.html +++ b/documentation.html @@ -239,7 +239,7 @@

      IPython manualCurrent Development Version

    You can download IPython documentation for offline use, and for all version of IPython on -GitHub <https://github.com/ipython/ipython-doc/tree/gh-pages>.

    +GitHub.

    This introduction to some key features is a good place to start if you haven’t used IPython before.

    See below for links to all versions of the documentation.

    diff --git a/objects.inv b/objects.inv index 900ec850471f7e80c2e2a5cf15ca773d8e30699a..90451d24e66580e354d3b261488d6d7c9908ef56 100644 GIT binary patch delta 313 zcmV-90mlBO1EvFzc7KvhPs1<_hVS_mme@6j!Hw%C5Qm{jMO>$>@!E*gp5m0Te^0tJ z6Rkkps^|T%lT@(ogNtX7Xdk`VqX)eN8R=~sJAbo)s<<4%%k~^wCiUqovP^TCmDGE7 z7_v~+0g-AWQ512+J@dyjT4)KswOB^M>!>Nqwd{=dyMP{z;D2mdUi9(@DJR90I!BCuC#USX5kQ;vhsD^KN;-2hfCOi)~t$CuP*x7oHB&MO| zgzMr`ovQ;2AELHQmm+6;m9HHBS$9TAlFyx*gCTKHSIp0brEtO zY}ocby}*E!pfU+{JO4!nHoB{9*qR1agY?UULdQVvtzC4~%rEKcTEHqB%JRv=r+=S( L0a|?nS1|$(%!r@) delta 313 zcmV-90mlBO1EvFzc7IYmPs1<}-Tf<0qN@>wjkOi1Ls6w5*2;~K)WW%|d=91m9w&|~ z5`oyP_i=vjY(W$1BS^H5-W6g2C6LBnFf{RTK2~KeL#;!P^P{_cP&yh z(J^Iv@6gGiua0#>;GF{`6bh<7okgCF%UGVXfVZqLWTC19B7fCJqA22s2j-8dwV=iP zdPLalF7e0&FC&-QoXNAXvuhnmOxcQcT~w+;a%AyqDlh1`u1$Ydk{q;ef}uEDZBOWd z$c7&PRQ(yAxFb8P5T1Kj3D#Y3@iKp;jFy~LQ8_AARqdjqW?t_ab^)s_DEgM|FAYx@ zU5K&dmTl*8>@wQAI Date: Tue, 10 Feb 2015 23:17:52 +0000 Subject: [PATCH 041/146] =?UTF-8?q?Updated=20website=20(automated=20commit?= =?UTF-8?q?)=20=E2=80=93=20Tuesday,=2010.=20February=202015=2011:17PM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _sources/news.txt | 3 ++- news.html | 3 ++- objects.inv | Bin 422 -> 422 bytes 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/_sources/news.txt b/_sources/news.txt index 22a2b2b..dae5875 100644 --- a/_sources/news.txt +++ b/_sources/news.txt @@ -6,7 +6,8 @@ IPython 2.4 ----------- IPython 2.4 was released on January 30, 2015. It adds support for the new -notebook format coming in IPython 3.0, along with fixing bugs in the 2.x series. +notebook format coming in IPython 3.0, along with fixing bugs in the 2.x series, +including compatibility with PyQt5 and Pygments 2.0. IPython 2.3 ----------- diff --git a/news.html b/news.html index 367761c..afdd6e4 100644 --- a/news.html +++ b/news.html @@ -235,7 +235,8 @@

    NewsΒΆ

    IPython 2.4ΒΆ

    IPython 2.4 was released on January 30, 2015. It adds support for the new -notebook format coming in IPython 3.0, along with fixing bugs in the 2.x series.

    +notebook format coming in IPython 3.0, along with fixing bugs in the 2.x series, +including compatibility with PyQt5 and Pygments 2.0.

    IPython 2.3ΒΆ

    diff --git a/objects.inv b/objects.inv index 90451d24e66580e354d3b261488d6d7c9908ef56..5e59797e053b89de201cfc6941ee7d54cc2573bd 100644 GIT binary patch delta 313 zcmV-90mlBO1EvFzc7IVlPs1<}-Tf<0qN@>wjkOi1Ls6w5*2uN5iBnQJx(20 zBm%LW-pBd*UV~)G;1`5wo}JpG1G$7|MDN>pa(A#9W?}eDj+F^ht)&o^b6L88by10v z)t&<%qBKk@S|<7UuzZ@j{}7dJ+d{*NeaHT)fY31o_5n7#OMh&cQZyav6r%R%Pz9Vt zOmu%jidT1DJvd}?$eUxG5IC@hghD|@K;?BiU6--(HdPkvRD(j>XsMZ>=XS>htg@iQ z{pmNjF=@R1dY3{=`9l2#$6)3W)cweBJdF^1c+=^c*!1=PK_@iPBRM$3y;QCYg> z45?768?PwN%rXNZuSE9$0H7LXc;TK*uI+Vz1#!eZ^KrVVpe4q8i{*KE8#$4*eEzrE L1xWD?`BnlB9fq4` delta 313 zcmV-90mlBO1EvFzc7KvhPs1<_hVS_mme@6j!Hw%C5Qm{jMO>$>@!E*gp5m0Te^0tJ z6Rkkps^|T%lT@(ogNtX7Xdk`VqX)eN8R=~sJAbo)s<<4%%k~^wCiUqovP^TCmDGE7 z7_v~+0g-AWQ512+J@dyjT4)KswOB^M>!>Nqwd{=dyMP{z;D2mdUi9(@DJR90I!BCuC#USX5kQ;vhsD^KN;-2hfCOi)~t$CuP*x7oHB&MO| zgzMr`ovQ;2AELHQmm+6;m9HHBS$9TAlFyx*gCTKHSIp0brEtO zY}ocby}*E!pfU+{JO4!nHoB{9*qR1agY?UULdQVvtzC4~%rEKcTEHqB%JRv=r+=S( L0a|?nS1|$(%!r@) From 4b4d0b2f41b929d1b8c22a06eba389e74d5c49a4 Mon Sep 17 00:00:00 2001 From: TravisBot Date: Wed, 11 Feb 2015 17:13:37 +0000 Subject: [PATCH 042/146] =?UTF-8?q?Updated=20website=20(automated=20commit?= =?UTF-8?q?)=20=E2=80=93=20Wednesday,=2011.=20February=202015=2005:13PM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _sources/index.txt | 2 +- index.html | 2 +- objects.inv | Bin 422 -> 423 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_sources/index.txt b/_sources/index.txt index ec18ce9..6039d0c 100644 --- a/_sources/index.txt +++ b/_sources/index.txt @@ -71,7 +71,7 @@ Announcements - **Book**: Cyrille Rossant has published the `IPython Interactive Computing and Visualization Cookbook `_, an advanced-level guide to IPython for data science, and the sequel of his previous book on IPython. We thank Packt Publishing for donating a portion of the proceeds from this book to support IPython's development. -- **IPython 2.4**: A bugfix and minor featuer release for IPython 2.x, released +- **IPython 2.4**: A bugfix and minor feature release for IPython 2.x, released 30th January 2015. - **IPython 2.0**: We are proud to announce the availability of IPython 2.0, diff --git a/index.html b/index.html index 11e7e8b..03d8971 100644 --- a/index.html +++ b/index.html @@ -263,7 +263,7 @@

    Support IPython

    AnnouncementsΒΆ