PK|sC4\@ @ cheddar-latest/installation.html Installation — cheddar 1.0 documentation

Installation

At the command line:

$ pip install cheddar
Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PK|sC|ݢcheddar-latest/history.html History — cheddar 1.0 documentation

History

1.0 (2013-11-19)

  • Initial version.
Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PK|sCg?̧77cheddar-latest/readme.html cheddar — cheddar 1.0 documentation

cheddar

https://badge.fury.io/py/cheddar.png https://travis-ci.org/jessemyers/cheddar.png?branch=develop https://pypip.in/d/cheddar/badge.png

PyPI clone with Flask and Redis. It’s the single most popular cheese in the world!

Features

Cheddar aims to simplify Python development within organizations that simultaneously work with public and private Python distributions.

Cheddar includes:

  • A local package index for internal development, supporting setuptools register and upload commands.
  • A remote package index that proxies to a public repository (such as pypi.python.org) and caches packages and package version listings to reduce latency and minimize the effect of downtime by the public repository.
  • A combined package index that unifies the best of the local and remote implementations.

In addition, Cheddar supports a few features that simplify management within an organization:

  • Packages are stored locally in separate directories for pre-releases and releases, simplifying backup strategies that wish to ignore transitive development builds.
  • Duplicate package uploads return a predictable HTTP 409 Conflict error.
  • Mistakenly uploaded packages may be deleted using a simple, RESTful API.

Configuration

Cheddar can run in any WSGI container or through Flask’s built-in development server (which is single-threaded and only recommended for development).

Configuation is loaded from the defaults.py module along with the contents of the file pointed to by the CHEDDAR_SETTINGS environment variable, if any.

You may wish to modify several of the configuration parameters from their default values, including:

  • INDEX_URL which specifies the URL of the remote package index
  • REDIS_HOSTNAME which control the location of the Redis server
  • LOCAL_CACHE_DIR which controls the storage location of locally uploaded files
  • REMOTE_CACHE_DIR which controls the storage location of cached remote files

The Local Index

To use the local index:

  1. Edit your ~/.pypirc to contain an entry for Cheddar. It should look _something_ like:

    [distutils]
    index-servers =
        pypi
        cheddar
    
    [pypi]
    repository:http://pypi.python.org
    
    [cheddar]
    repository:http://localhost:5000/pypi
    username:myusername
    password:mypassword

    Note that the URL here assume you are running the “development” server.

  2. Add credentials to Redis:

    redis-cli set cheddar.user.myusername mypasswod
  3. Upload your distribution:

    cd /path/to/directory/containing/setup.py
    python setup.py sdist upload -r cheddar

    You may also use the register -r cheddar to validate your setup.py without uploading the source distribution.

The Remote Index

Run pip using a custom index url:

pip install --index-url http://localhost:5000/simple

Note that the URL here assume you are running the “development” server.

You can also edit your ~/.pip/pip.conf to contain the index url automatically:

[install]
index-url = http://localhost:5000/simple

Data

Cheddar saves data in several places:

  • Local packages are stored in the LOCAL_CACHE_DIR
  • Remote packages may be cached in the REMOTE_CACHE_DIR
  • Remote version listings may be cached in Redis.
  • User data (for upload authentication) is stored in Redis.
  • Local package version listings are stored Redis.
Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PK|sCԩRcheddar-latest/usage.html Usage — cheddar 1.0 documentation

Usage

Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PK|sC= " "cheddar-latest/authors.html Credits — cheddar 1.0 documentation

Credits

Development Lead

Contributors

Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PK|sC; cheddar-latest/searchindex.jsSearch.setIndex({objects:{},terms:{load:5,all:2,least:2,help:2,just:2,whoever:2,control:5,offici:2,pull_request:2,cheddar:[2,0,5,1],wsgi:5,rest:5,detail:2,appropri:2,through:[2,5],follow:2,environ:5,simultan:5,feedback:2,web:2,privat:5,password:5,locat:5,cli:5,also:5,flask:5,fix:2,configur:[5,0],activ:2,littl:2,articl:2,blog:2,add:[2,5],latenc:5,chees:5,downtim:5,save:5,might:2,easier:2,bin:2,them:2,sourc:[2,5],everi:2,contribut:[2,0],thei:2,get:[2,0],python:[2,5],unifi:5,pypi:[2,5],predict:5,initi:6,repo:2,aim:5,redis_hostnam:5,jessemy:[2,4],report:2,world:5,bit:2,now:2,relev:2,like:[2,5],rtfd:5,name:2,organ:5,anyth:2,edit:5,troubleshoot:2,list:5,upload:5,authent:5,patch:2,separ:5,remot:[5,0],conflict:5,contain:5,small:2,done:2,flake8:2,manag:[2,5],pleas:2,set:[2,5],simplifi:5,request:[2,0],bugfix:2,past:2,see:2,sure:2,pass:2,server:5,myusernam:5,best:[2,5],appreci:2,virtualenv:2,lacion:4,pypirc:5,entri:5,lead:[0,4],skeptic:2,storag:5,variabl:5,per:2,your:[2,5],content:[5,0],delet:5,version:[2,5,6],"new":2,paramet:5,reproduc:2,"public":5,localhost:5,model:2,run:5,proxi:5,error:5,usag:[3,0],tox:2,here:[2,5],effect:5,popular:5,step:2,base:2,free:5,repositori:5,releas:[2,5],org:[2,5],post:2,modifi:5,valu:5,addit:5,about:2,wai:2,thread:5,local_cache_dir:5,could:2,myer:4,against:2,page:0,credit:[2,0,4],amount:2,befor:2,place:5,commit:2,implement:[2,5],narrow:2,backup:5,explain:2,oper:2,softwar:5,major:2,venv:2,volunt:2,cheddar_set:5,point:5,guidelin:[2,0],modul:[5,0],within:5,prefer:2,automat:5,gitflow:2,distutil:5,api:5,moral:4,send:2,path:5,contributor:[0,4],instal:[2,0,5,1],redi:5,should:[2,5],open:2,along:5,unit:2,duplic:5,given:2,git:2,from:5,log:2,would:2,start:[2,0],configu:5,support:[2,5],regist:5,system:2,submit:2,custom:5,websit:2,few:5,master:2,includ:[2,5],recommend:5,scope:2,type:[2,0],store:5,treat:2,fork:2,especi:2,mypassword:5,travi:2,copi:2,setuptool:5,search:0,specifi:5,apach:5,part:2,indic:0,intern:5,branch:2,essenti:2,line:1,bug:2,greatli:2,your_name_her:2,pull:[2,0],onli:5,look:[2,5],possibl:2,whether:2,wish:5,setup:[2,5],work:[2,5],remote_cache_dir:5,histori:[0,6],project:2,url:5,limit:2,can:[2,5],cach:5,doc:2,meet:2,strategi:5,local:[2,0,5],pre:5,featur:[2,0,5],conf:5,creat:2,index_url:5,process:2,flow:2,sdist:5,mistakenli:5,ani:[2,5],accept:2,jess:4,"default":5,tag:2,exist:2,file:[2,5],tabl:0,pip:[2,5,1],"return":5,transit:5,keep:2,check:2,sever:5,packag:5,alwai:2,readi:2,develop:[2,0,5,4],built:5,want:2,prior:2,receiv:2,index:[5,0],make:2,when:2,lui:4,note:5,how:2,valid:5,build:5,rememb:2,test:2,ignor:5,you:[2,5],document:[2,0,5],simpl:5,singl:[2,5],updat:2,even:2,finish:2,http:[2,5,4],distribut:5,normal:2,usernam:5,clone:[2,5],licens:5,docstr:2,driven:2,most:[2,5],user:5,consid:2,mani:2,mai:[2,5],data:[5,0],chang:2,welcom:[2,0],reduc:5,github:[2,4],off:2,write:2,"_something_":5,directori:5,com:[2,4],minim:5,descript:2,combin:5,assum:5,issu:2,more:2,which:5,without:5,command:[5,1],thi:2,push:2,credenti:5,other:2,mypasswod:5,propos:2},objtypes:{},titles:["Welcome to cheddar’s documentation!","Installation","Contributing","Usage","Credits","cheddar","History"],objnames:{},filenames:["index","installation","contributing","usage","authors","readme","history"]})PK|sC"Ɏcheddar-latest/search.html Search — cheddar 1.0 documentation

Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PK|sC̗cheddar-latest/.buildinfo# Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. config: e00b7bb2dac7e1df1d71d4cd426d7d51 tags: fbb0d17656682115ca4d033fb2f83ba1 PK|sC:5F&7&7 cheddar-latest/contributing.html Contributing — cheddar 1.0 documentation

Contributing

Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given.

You can contribute in many ways:

Types of Contributions

Report Bugs

Report bugs at https://github.com/jessemyers/cheddar/issues.

If you are reporting a bug, please include:

  • Your operating system name and version.
  • Any details about your local setup that might be helpful in troubleshooting.
  • Detailed steps to reproduce the bug.

Fix Bugs

Look through the GitHub issues for bugs. Anything tagged with “bug” is open to whoever wants to implement it.

Implement Features

Look through the GitHub issues for features. Anything tagged with “feature” is open to whoever wants to implement it.

Write Documentation

cheddar could always use more documentation, whether as part of the official cheddar docs, in docstrings, or even on the web in blog posts, articles, and such.

Submit Feedback

The best way to send feedback is to file an issue at https://github.com/jessemyers/cheddar/issues.

If you are proposing a feature:

  • Explain in detail how it would work.
  • Keep the scope as narrow as possible, to make it easier to implement.
  • Remember that this is a volunteer-driven project, and that contributions are welcome :)

Get Started!

Ready to contribute? Here’s how to set up cheddar for local development.

  1. Fork the cheddar repo on GitHub.

  2. Clone your fork locally:

    $ git clone git@github.com:your_name_here/cheddar.git
  3. Install your local copy into a virtualenv. this is how you set up your fork for local development:

    $ virtualenv venv
    $ source venv/bin/activate
    $ python setup.py develop
  4. Create a branch for local development:

    $ git flow feature start name-of-your-bugfix-or-feature
Now you can make your changes locally.

5. When you’re done making changes, check that your changes pass flake8 and the tests, including testing other Python versions with tox:

  $ flake8 cheddar tests
        $ python setup.py test
  $ tox

To get flake8 and tox, just pip install them into your virtualenv.
  1. Commit your changes and push your branch to GitHub:

    $ git add .
    $ git commit -m "Your detailed description of your changes."
    $ git flow feature finish name-of-your-bugfix-or-feature
  2. Submit a pull request through the GitHub website.

Pull Request Guidelines

Before you submit a pull request, check that it meets these guidelines:

Cheddar uses gitflow for its branch management.

  1. Implement changes in new git branches, following git-flow’s model:
  • Changes based off of develop will receive the least amount of skepticism.

  • Changes based off of a release branches (if one exists) will be considered, especially for small bug fixes relevant to the release. We are not likely to accept new features against release branches.

  • Changes based off of master or a prior release tag will be given the most skepticism. We may accept patches for major bugs against past releases, but would prefer to see such changes follow the normal git-flow process.

    We will not accept new features based off of master.

  1. Limit the scope of changes to a single bug fix or feature per branch.
  2. Treat documentation and unit tests as an essential part of any change.
  3. Update the change log appropriately.
  4. The pull request should work for Python 2.7 and PyPy Check https://travis-ci.org/jessemyers/cheddar/pull_requests and make sure that the tests pass for all supported Python versions.
Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PK|sCv4cheddar-latest/genindex.html Index — cheddar 1.0 documentation

Index

Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PK|sC/cheddar-latest/objects.inv# Sphinx inventory version 2 # Project: cheddar # Version: 1.0 # The remainder of this file is compressed using zlib. xOKIP(.IILJQ5T(ͅJe(+槔*xShBu@&%g*AC$r1PK|sC* ((cheddar-latest/index.html Welcome to cheddar’s documentation! — cheddar 1.0 documentation
Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
PK|sC``-cheddar-latest/.doctrees/contributing.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xwrite documentationqNX report bugsqNXtypes of contributionsqNXpull request guidelinesq NXgitflowq X contributingq NXfix bugsq NX get started!q NXsubmit feedbackqNXimplement featuresqNuUsubstitution_defsq}qUparse_messagesq]q(cdocutils.nodes system_message q)q}q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhh)q}q(hUhhUsourceqcdocutils.nodes reprunicode qX../CONTRIBUTING.rstq q!}q"bUtagnameq#Usectionq$U attributesq%}q&(Udupnamesq']Uclassesq(]Ubackrefsq)]Uidsq*]q+U contributingq,aUnamesq-]q.h auUlineq/KUdocumentq0hUchildrenq1]q2(cdocutils.nodes title q3)q4}q5(hX Contributingq6hhhh!h#Utitleq7h%}q8(h']h(]h)]h*]h-]uh/Kh0hh1]q9cdocutils.nodes Text q:X Contributingq;q<}q=(hh6hh4ubaubcdocutils.nodes paragraph q>)q?}q@(hXuContributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given.qAhhhh!h#U paragraphqBh%}qC(h']h(]h)]h*]h-]uh/Kh0hh1]qDh:XuContributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given.qEqF}qG(hhAhh?ubaubh>)qH}qI(hX You can contribute in many ways:qJhhhh!h#hBh%}qK(h']h(]h)]h*]h-]uh/Kh0hh1]qLh:X You can contribute in many ways:qMqN}qO(hhJhhHubaubh)qP}qQ(hUhhhh!h#h$h%}qR(h']h(]h)]h*]qSUtypes-of-contributionsqTah-]qUhauh/K h0hh1]qV(h3)qW}qX(hXTypes of ContributionsqYhhPhh!h#h7h%}qZ(h']h(]h)]h*]h-]uh/K h0hh1]q[h:XTypes of Contributionsq\q]}q^(hhYhhWubaubh)q_}q`(hUhhPhh!h#h$h%}qa(h']h(]h)]h*]qbU report-bugsqcah-]qdhauh/Kh0hh1]qe(h3)qf}qg(hX Report Bugsqhhh_hh!h#h7h%}qi(h']h(]h)]h*]h-]uh/Kh0hh1]qjh:X Report Bugsqkql}qm(hhhhhfubaubh>)qn}qo(hX<Report bugs at https://github.com/jessemyers/cheddar/issues.qphh_hh!h#hBh%}qq(h']h(]h)]h*]h-]uh/Kh0hh1]qr(h:XReport bugs at qsqt}qu(hXReport bugs at hhnubcdocutils.nodes reference qv)qw}qx(hX,https://github.com/jessemyers/cheddar/issuesqyh%}qz(Urefurihyh*]h)]h']h(]h-]uhhnh1]q{h:X,https://github.com/jessemyers/cheddar/issuesq|q}}q~(hUhhwubah#U referencequbh:X.q}q(hX.hhnubeubh>)q}q(hX+If you are reporting a bug, please include:qhh_hh!h#hBh%}q(h']h(]h)]h*]h-]uh/Kh0hh1]qh:X+If you are reporting a bug, please include:qq}q(hhhhubaubcdocutils.nodes bullet_list q)q}q(hUhh_hh!h#U bullet_listqh%}q(UbulletqX*h*]h)]h']h(]h-]uh/Kh0hh1]q(cdocutils.nodes list_item q)q}q(hX'Your operating system name and version.qhhhh!h#U list_itemqh%}q(h']h(]h)]h*]h-]uh/Nh0hh1]qh>)q}q(hhhhhh!h#hBh%}q(h']h(]h)]h*]h-]uh/Kh1]qh:X'Your operating system name and version.qq}q(hhhhubaubaubh)q}q(hXLAny details about your local setup that might be helpful in troubleshooting.qhhhh!h#hh%}q(h']h(]h)]h*]h-]uh/Nh0hh1]qh>)q}q(hhhhhh!h#hBh%}q(h']h(]h)]h*]h-]uh/Kh1]qh:XLAny details about your local setup that might be helpful in troubleshooting.qq}q(hhhhubaubaubh)q}q(hX%Detailed steps to reproduce the bug. hhhh!h#hh%}q(h']h(]h)]h*]h-]uh/Nh0hh1]qh>)q}q(hX$Detailed steps to reproduce the bug.qhhhh!h#hBh%}q(h']h(]h)]h*]h-]uh/Kh1]qh:X$Detailed steps to reproduce the bug.qq}q(hhhhubaubaubeubeubh)q}q(hUhhPhh!h#h$h%}q(h']h(]h)]h*]qUfix-bugsqah-]qh auh/Kh0hh1]q(h3)q}q(hXFix Bugsqhhhh!h#h7h%}q(h']h(]h)]h*]h-]uh/Kh0hh1]qh:XFix BugsqÅq}q(hhhhubaubh>)q}q(hXmLook through the GitHub issues for bugs. Anything tagged with "bug" is open to whoever wants to implement it.qhhhh!h#hBh%}q(h']h(]h)]h*]h-]uh/Kh0hh1]qh:XmLook through the GitHub issues for bugs. Anything tagged with "bug" is open to whoever wants to implement it.q˅q}q(hhhhubaubeubh)q}q(hUhhPhh!h#h$h%}q(h']h(]h)]h*]qUimplement-featuresqah-]qhauh/Kh0hh1]q(h3)q}q(hXImplement Featuresqhhhh!h#h7h%}q(h']h(]h)]h*]h-]uh/Kh0hh1]qh:XImplement Featuresqڅq}q(hhhhubaubh>)q}q(hXuLook through the GitHub issues for features. Anything tagged with "feature" is open to whoever wants to implement it.qhhhh!h#hBh%}q(h']h(]h)]h*]h-]uh/K!h0hh1]qh:XuLook through the GitHub issues for features. Anything tagged with "feature" is open to whoever wants to implement it.q⅁q}q(hhhhubaubeubh)q}q(hUhhPhh!h#h$h%}q(h']h(]h)]h*]qUwrite-documentationqah-]qhauh/K%h0hh1]q(h3)q}q(hXWrite Documentationqhhhh!h#h7h%}q(h']h(]h)]h*]h-]uh/K%h0hh1]qh:XWrite Documentationqq}q(hhhhubaubh>)q}q(hXcheddar could always use more documentation, whether as part of the official cheddar docs, in docstrings, or even on the web in blog posts, articles, and such.qhhhh!h#hBh%}q(h']h(]h)]h*]h-]uh/K'h0hh1]qh:Xcheddar could always use more documentation, whether as part of the official cheddar docs, in docstrings, or even on the web in blog posts, articles, and such.qq}q(hhhhubaubeubh)q}q(hUhhPhh!h#h$h%}q(h']h(]h)]h*]qUsubmit-feedbackrah-]rhauh/K,h0hh1]r(h3)r}r(hXSubmit Feedbackrhhhh!h#h7h%}r(h']h(]h)]h*]h-]uh/K,h0hh1]rh:XSubmit Feedbackrr }r (hjhjubaubh>)r }r (hXbThe best way to send feedback is to file an issue at https://github.com/jessemyers/cheddar/issues.r hhhh!h#hBh%}r(h']h(]h)]h*]h-]uh/K.h0hh1]r(h:X5The best way to send feedback is to file an issue at rr}r(hX5The best way to send feedback is to file an issue at hj ubhv)r}r(hX,https://github.com/jessemyers/cheddar/issuesrh%}r(Urefurijh*]h)]h']h(]h-]uhj h1]rh:X,https://github.com/jessemyers/cheddar/issuesrr}r(hUhjubah#hubh:X.r}r(hX.hj ubeubh>)r}r(hXIf you are proposing a feature:rhhhh!h#hBh%}r (h']h(]h)]h*]h-]uh/K0h0hh1]r!h:XIf you are proposing a feature:r"r#}r$(hjhjubaubh)r%}r&(hUhhhh!h#hh%}r'(hX*h*]h)]h']h(]h-]uh/K2h0hh1]r((h)r)}r*(hX$Explain in detail how it would work.r+hj%hh!h#hh%}r,(h']h(]h)]h*]h-]uh/Nh0hh1]r-h>)r.}r/(hj+hj)hh!h#hBh%}r0(h']h(]h)]h*]h-]uh/K2h1]r1h:X$Explain in detail how it would work.r2r3}r4(hj+hj.ubaubaubh)r5}r6(hXEKeep the scope as narrow as possible, to make it easier to implement.r7hj%hh!h#hh%}r8(h']h(]h)]h*]h-]uh/Nh0hh1]r9h>)r:}r;(hj7hj5hh!h#hBh%}r<(h']h(]h)]h*]h-]uh/K3h1]r=h:XEKeep the scope as narrow as possible, to make it easier to implement.r>r?}r@(hj7hj:ubaubaubh)rA}rB(hXXRemember that this is a volunteer-driven project, and that contributions are welcome :) hj%hh!h#hh%}rC(h']h(]h)]h*]h-]uh/Nh0hh1]rDh>)rE}rF(hXWRemember that this is a volunteer-driven project, and that contributions are welcome :)rGhjAhh!h#hBh%}rH(h']h(]h)]h*]h-]uh/K4h1]rIh:XWRemember that this is a volunteer-driven project, and that contributions are welcome :)rJrK}rL(hjGhjEubaubaubeubeubeubhh)rM}rN(hUhhhh!h#h$h%}rO(h']h(]h)]h*]rPUpull-request-guidelinesrQah-]rRh auh/K_h0hh1]rS(h3)rT}rU(hXPull Request GuidelinesrVhjMhh!h#h7h%}rW(h']h(]h)]h*]h-]uh/K_h0hh1]rXh:XPull Request GuidelinesrYrZ}r[(hjVhjTubaubh>)r\}r](hXGBefore you submit a pull request, check that it meets these guidelines:r^hjMhh!h#hBh%}r_(h']h(]h)]h*]h-]uh/Kah0hh1]r`h:XGBefore you submit a pull request, check that it meets these guidelines:rarb}rc(hj^hj\ubaubh>)rd}re(hX2Cheddar uses `gitflow`_ for its branch management.rfhjMhh!h#hBh%}rg(h']h(]h)]h*]h-]uh/Kch0hh1]rh(h:X Cheddar uses rirj}rk(hX Cheddar uses hjdubhv)rl}rm(hX `gitflow`_UresolvedrnKhjdh#hh%}ro(UnameXgitflowrpUrefurirqXhttps://github.com/nvie/gitflowrrh*]h)]h']h(]h-]uh1]rsh:Xgitflowrtru}rv(hUhjlubaubh:X for its branch management.rwrx}ry(hX for its branch management.hjdubeubcdocutils.nodes enumerated_list rz)r{}r|(hUhjMhh!h#Uenumerated_listr}h%}r~(UsuffixrU.h*]h)]h']UprefixrUh(]h-]UenumtyperUarabicruh/Keh0hh1]rh)r}r(hXCImplement changes in new git branches, following git-flow's model: hj{hh!h#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh1]rh>)r}r(hXBImplement changes in new git branches, following git-flow's model:rhjhh!h#hBh%}r(h']h(]h)]h*]h-]uh/Keh1]rh:XBImplement changes in new git branches, following git-flow's model:rr}r(hjhjubaubaubaubcdocutils.nodes block_quote r)r}r(hUhjMhNh#U block_quoterh%}r(h']h(]h)]h*]h-]uh/Nh0hh1]rh)r}r(hUh%}r(hX*h*]h)]h']h(]h-]uhjh1]r(h)r}r(hXLChanges based off of *develop* will receive the least amount of skepticism. h%}r(h']h(]h)]h*]h-]uhjh1]rh>)r}r(hXKChanges based off of *develop* will receive the least amount of skepticism.hjhh!h#hBh%}r(h']h(]h)]h*]h-]uh/Kgh1]r(h:XChanges based off of rr}r(hXChanges based off of hjubcdocutils.nodes emphasis r)r}r(hX *develop*h%}r(h']h(]h)]h*]h-]uhjh1]rh:Xdeveloprr}r(hUhjubah#Uemphasisrubh:X- will receive the least amount of skepticism.rr}r(hX- will receive the least amount of skepticism.hjubeubah#hubh)r}r(hXChanges based off of a *release* branches (if one exists) will be considered, especially for small bug fixes relevant to the release. We are not likely to accept new features against *release* branches. h%}r(h']h(]h)]h*]h-]uhjh1]rh>)r}r(hXChanges based off of a *release* branches (if one exists) will be considered, especially for small bug fixes relevant to the release. We are not likely to accept new features against *release* branches.hjhh!h#hBh%}r(h']h(]h)]h*]h-]uh/Kih1]r(h:XChanges based off of a rr}r(hXChanges based off of a hjubj)r}r(hX *release*h%}r(h']h(]h)]h*]h-]uhjh1]rh:Xreleaserr}r(hUhjubah#jubh:X branches (if one exists) will be considered, especially for small bug fixes relevant to the release. We are not likely to accept new features against rr}r(hX branches (if one exists) will be considered, especially for small bug fixes relevant to the release. We are not likely to accept new features against hjubj)r}r(hX *release*h%}r(h']h(]h)]h*]h-]uhjh1]rh:Xreleaserr}r(hUhjubah#jubh:X branches.rr}r(hX branches.hjubeubah#hubh)r}r(hXChanges based off of *master* or a prior release tag will be given the most skepticism. We may accept patches for major bugs against past releases, but would prefer to see such changes follow the normal git-flow process. We will not accept new features based off of *master*. h%}r(h']h(]h)]h*]h-]uhjh1]r(h>)r}r(hXChanges based off of *master* or a prior release tag will be given the most skepticism. We may accept patches for major bugs against past releases, but would prefer to see such changes follow the normal git-flow process.hjhh!h#hBh%}r(h']h(]h)]h*]h-]uh/Kmh1]r(h:XChanges based off of rr}r(hXChanges based off of hjubj)r}r(hX*master*h%}r(h']h(]h)]h*]h-]uhjh1]rh:Xmasterrr}r(hUhjubah#jubh:X or a prior release tag will be given the most skepticism. We may accept patches for major bugs against past releases, but would prefer to see such changes follow the normal git-flow process.rr}r(hX or a prior release tag will be given the most skepticism. We may accept patches for major bugs against past releases, but would prefer to see such changes follow the normal git-flow process.hjubeubj)r}r(hUh%}r(h']h(]h)]h*]h-]uhjh1]rh>)r}r(hX6We will not accept new features based off of *master*.rhjhh!h#hBh%}r(h']h(]h)]h*]h-]uh/Kqh1]r(h:X-We will not accept new features based off of rr}r(hX-We will not accept new features based off of hjubj)r}r(hX*master*h%}r(h']h(]h)]h*]h-]uhjh1]rh:Xmasterrr}r(hUhjubah#jubh:X.r}r(hX.hjubeubah#jubeh#hubeh#hubaubjz)r}r(hUhjMhh!h#j}h%}r(jU.UstartrKh*]h)]h']jUh(]h-]jjuh/Ksh0hh1]r(h)r}r(hXFLimit the scope of changes to a single bug fix or feature per branch. hjhh!h#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh1]rh>)r}r(hXELimit the scope of changes to a single bug fix or feature per branch.rhjhh!h#hBh%}r(h']h(]h)]h*]h-]uh/Ksh1]rh:XELimit the scope of changes to a single bug fix or feature per branch.rr }r (hjhjubaubaubh)r }r (hXGTreat documentation and unit tests as an essential part of any change. hjhh!h#hh%}r (h']h(]h)]h*]h-]uh/Nh0hh1]rh>)r}r(hXFTreat documentation and unit tests as an essential part of any change.rhj hh!h#hBh%}r(h']h(]h)]h*]h-]uh/Kuh1]rh:XFTreat documentation and unit tests as an essential part of any change.rr}r(hjhjubaubaubh)r}r(hX%Update the change log appropriately. hjhh!h#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh1]rh>)r}r(hX$Update the change log appropriately.rhjhh!h#hBh%}r(h']h(]h)]h*]h-]uh/Kwh1]rh:X$Update the change log appropriately.r r!}r"(hjhjubaubaubh)r#}r$(hXThe pull request should work for Python 2.7 and PyPy Check https://travis-ci.org/jessemyers/cheddar/pull_requests and make sure that the tests pass for all supported Python versions. hjhh!h#hh%}r%(h']h(]h)]h*]h-]uh/Nh0hh1]r&h>)r'}r((hXThe pull request should work for Python 2.7 and PyPy Check https://travis-ci.org/jessemyers/cheddar/pull_requests and make sure that the tests pass for all supported Python versions.hj#hh!h#hBh%}r)(h']h(]h)]h*]h-]uh/Kyh1]r*(h:X;The pull request should work for Python 2.7 and PyPy Check r+r,}r-(hX;The pull request should work for Python 2.7 and PyPy Check hj'ubhv)r.}r/(hX6https://travis-ci.org/jessemyers/cheddar/pull_requestsr0h%}r1(Urefurij0h*]h)]h']h(]h-]uhj'h1]r2h:X6https://travis-ci.org/jessemyers/cheddar/pull_requestsr3r4}r5(hUhj.ubah#hubh:XE and make sure that the tests pass for all supported Python versions.r6r7}r8(hXE and make sure that the tests pass for all supported Python versions.hj'ubeubaubeubcdocutils.nodes target r9)r:}r;(hX... _`gitflow`: https://github.com/nvie/gitflowU referencedr<KhjMhh!h#Utargetr=h%}r>(jqjrh*]r?Ugitflowr@ah)]h']h(]h-]rAh auh/Kh0hh1]ubeubeubhh!h#h$h%}rB(h']h(]h)]h*]rCU get-startedrDah-]rEh auh/K8h0hh1]rF(h3)rG}rH(hX Get Started!rIhhhh!h#h7h%}rJ(h']h(]h)]h*]h-]uh/K8h0hh1]rKh:X Get Started!rLrM}rN(hjIhjGubaubh>)rO}rP(hXJReady to contribute? Here's how to set up `cheddar` for local development.rQhhhh!h#hBh%}rR(h']h(]h)]h*]h-]uh/K:h0hh1]rS(h:X*Ready to contribute? Here's how to set up rTrU}rV(hX*Ready to contribute? Here's how to set up hjOubcdocutils.nodes title_reference rW)rX}rY(hX `cheddar`h%}rZ(h']h(]h)]h*]h-]uhjOh1]r[h:Xcheddarr\r]}r^(hUhjXubah#Utitle_referencer_ubh:X for local development.r`ra}rb(hX for local development.hjOubeubjz)rc}rd(hUhhhh!h#j}h%}re(jU.h*]h)]h']jUh(]h-]jjuh/K)rl}rm(hjihjghh!h#hBh%}rn(h']h(]h)]h*]h-]uh/K)r}r(hXClone your fork locally::hj}hh!h#hBh%}r(h']h(]h)]h*]h-]uh/K=h1]rh:XClone your fork locally:rr}r(hXClone your fork locally:hjubaubcdocutils.nodes literal_block r)r}r(hX5$ git clone git@github.com:your_name_here/cheddar.githj}h#U literal_blockrh%}r(U xml:spacerUpreserverh*]h)]h']h(]h-]uh/KAh1]rh:X5$ git clone git@github.com:your_name_here/cheddar.gitrr}r(hUhjubaubeubh)r}r(hXInstall your local copy into a virtualenv. this is how you set up your fork for local development:: $ virtualenv venv $ source venv/bin/activate $ python setup.py develop hjchh!h#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh1]r(h>)r}r(hXcInstall your local copy into a virtualenv. this is how you set up your fork for local development::hjhh!h#hBh%}r(h']h(]h)]h*]h-]uh/KAh1]rh:XbInstall your local copy into a virtualenv. this is how you set up your fork for local development:rr}r(hXbInstall your local copy into a virtualenv. this is how you set up your fork for local development:hjubaubj)r}r(hXF$ virtualenv venv $ source venv/bin/activate $ python setup.py develophjh#jh%}r(jjh*]h)]h']h(]h-]uh/KEh1]rh:XF$ virtualenv venv $ source venv/bin/activate $ python setup.py developrr}r(hUhjubaubeubh)r}r(hXbCreate a branch for local development:: $ git flow feature start name-of-your-bugfix-or-feature hjchh!h#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh1]r(h>)r}r(hX'Create a branch for local development::hjhh!h#hBh%}r(h']h(]h)]h*]h-]uh/KGh1]rh:X&Create a branch for local development:rr}r(hX&Create a branch for local development:hjubaubj)r}r(hX7$ git flow feature start name-of-your-bugfix-or-featurehjh#jh%}r(jjh*]h)]h']h(]h-]uh/KKh1]rh:X7$ git flow feature start name-of-your-bugfix-or-featurerr}r(hUhjubaubeubeubj)r}r(hUhhhh!h#jh%}r(h']h(]h)]h*]h-]uh/Nh0hh1]rh>)r}r(hX&Now you can make your changes locally.rhjhh!h#hBh%}r(h']h(]h)]h*]h-]uh/KKh1]rh:X&Now you can make your changes locally.rr}r(hjhjubaubaubh>)r}r(hX5. When you're done making changes, check that your changes pass flake8 and the tests, including testing other Python versions with tox::hhhh!h#hBh%}r(h']h(]h)]h*]h-]uh/KMh0hh1]rh:X5. When you're done making changes, check that your changes pass flake8 and the tests, including testing other Python versions with tox:rr}r(hX5. When you're done making changes, check that your changes pass flake8 and the tests, including testing other Python versions with tox:hjubaubj)r}r(hX $ flake8 cheddar tests $ python setup.py test $ tox To get flake8 and tox, just pip install them into your virtualenv.hhhh!h#jh%}r(jjh*]h)]h']h(]h-]uh/KRh0hh1]rh:X $ flake8 cheddar tests $ python setup.py test $ tox To get flake8 and tox, just pip install them into your virtualenv.rr}r(hUhjubaubjz)r}r(hUhhhh!h#j}h%}r(jU.jKh*]h)]h']jUh(]h-]jjuh/KVh0hh1]r(h)r}r(hXCommit your changes and push your branch to GitHub:: $ git add . $ git commit -m "Your detailed description of your changes." $ git flow feature finish name-of-your-bugfix-or-feature hjhh!h#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh1]r(h>)r}r(hX4Commit your changes and push your branch to GitHub::hjhh!h#hBh%}r(h']h(]h)]h*]h-]uh/KVh1]rh:X3Commit your changes and push your branch to GitHub:rr}r(hX3Commit your changes and push your branch to GitHub:hjubaubj)r}r(hX$ git add . $ git commit -m "Your detailed description of your changes." $ git flow feature finish name-of-your-bugfix-or-featurehjh#jh%}r(jjh*]h)]h']h(]h-]uh/KZh1]rh:X$ git add . $ git commit -m "Your detailed description of your changes." $ git flow feature finish name-of-your-bugfix-or-featurerr}r(hUhjubaubeubh)r}r(hX2Submit a pull request through the GitHub website. hjhh!h#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh1]rh>)r}r(hX1Submit a pull request through the GitHub website.rhjhh!h#hBh%}r(h']h(]h)]h*]h-]uh/K\h1]rh:X1Submit a pull request through the GitHub website.rr}r(hjhjubaubaubeubeubhh!h#Usystem_messagerh%}r(h']UlevelKh*]h)]Usourceh!h(]h-]UlineKUtypeUINFOruh/KVh0hh1]rh>)r}r(hUh%}r(h']h(]h)]h*]h-]uhhh1]rh:X:Enumerated list start value not ordinal-1: "6" (ordinal 6)rr}r(hUhjubah#hBubaubh)r}r(hUhjMhh!h#jh%}r(h']UlevelKh*]h)]Usourceh!h(]h-]UlineKUtypejuh/Ksh0hh1]rh>)r}r(hUh%}r(h']h(]h)]h*]h-]uhjh1]rh:X:Enumerated list start value not ordinal-1: "2" (ordinal 2)rr}r(hUhjubah#hBubaubeUcurrent_sourcer NU decorationr NUautofootnote_startr KUnameidsr }r (hhhhchhTh jQh j@h h,h hh jDhjhhuh1]rhahUU transformerrNU footnote_refsr}rUrefnamesr}rjp]rjlasUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh0hU current_linerNUtransform_messagesr]rUreporterr NUid_startr!KU autofootnotesr"]r#U citation_refsr$}r%Uindirect_targetsr&]r'Usettingsr((cdocutils.frontend Values r)or*}r+(Ufootnote_backlinksr,KUrecord_dependenciesr-NU rfc_base_urlr.Uhttp://tools.ietf.org/html/r/U tracebackr0Upep_referencesr1NUstrip_commentsr2NU toc_backlinksr3Uentryr4U language_coder5Uenr6U datestampr7NU report_levelr8KU _destinationr9NU halt_levelr:KU strip_classesr;Nh7NUerror_encoding_error_handlerr<Ubackslashreplacer=Udebugr>NUembed_stylesheetr?Uoutput_encoding_error_handlerr@UstrictrAU sectnum_xformrBKUdump_transformsrCNU docinfo_xformrDKUwarning_streamrENUpep_file_url_templaterFUpep-%04drGUexit_status_levelrHKUconfigrINUstrict_visitorrJNUcloak_email_addressesrKUtrim_footnote_reference_spacerLUenvrMNUdump_pseudo_xmlrNNUexpose_internalsrONUsectsubtitle_xformrPU source_linkrQNUrfc_referencesrRNUoutput_encodingrSUutf-8rTU source_urlrUNUinput_encodingrVU utf-8-sigrWU_disable_configrXNU id_prefixrYUU tab_widthrZKUerror_encodingr[UUTF-8r\U_sourcer]UE/var/build/user_builds/cheddar/checkouts/latest/docs/contributing.rstr^Ugettext_compactr_U generatorr`NUdump_internalsraNU smart_quotesrbU pep_base_urlrcUhttp://www.python.org/dev/peps/rdUsyntax_highlightreUlongrfUinput_encoding_error_handlerrgjAUauto_id_prefixrhUidriUdoctitle_xformrjUstrip_elements_with_classesrkNU _config_filesrl]Ufile_insertion_enabledrmKU raw_enabledrnKU dump_settingsroNubUsymbol_footnote_startrpKUidsrq}rr(jDhjQjMhch_j@j:h,hhhhhjhhhhThPuUsubstitution_namesrs}rth#h0h%}ru(h']h*]h)]UsourcehXE/var/build/user_builds/cheddar/checkouts/latest/docs/contributing.rstrvrw}rxbh(]h-]uU footnotesry]rzUrefidsr{}r|ub.PK|sC *\ \ -cheddar-latest/.doctrees/installation.doctreecdocutils.nodes document q)q}q(U nametypesq}qX installationqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhU installationqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXE/var/build/user_builds/cheddar/checkouts/latest/docs/installation.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hX Installationq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2X Installationq3q4}q5(hh.hh,ubaubcdocutils.nodes paragraph q6)q7}q8(hXAt the command line::q9hhhhhU paragraphq:h}q;(h!]h"]h#]h$]h&]uh(Kh)hh]q}q?(hXAt the command line:hh7ubaubcdocutils.nodes literal_block q@)qA}qB(hX$ pip install cheddarhhhhhU literal_blockqCh}qD(U xml:spaceqEUpreserveqFh$]h#]h!]h"]h&]uh(Kh)hh]qGh2X$ pip install cheddarqHqI}qJ(hUhhAubaubeubahUU transformerqKNU footnote_refsqL}qMUrefnamesqN}qOUsymbol_footnotesqP]qQUautofootnote_refsqR]qSUsymbol_footnote_refsqT]qUU citationsqV]qWh)hU current_lineqXNUtransform_messagesqY]qZUreporterq[NUid_startq\KU autofootnotesq]]q^U citation_refsq_}q`Uindirect_targetsqa]qbUsettingsqc(cdocutils.frontend Values qdoqe}qf(Ufootnote_backlinksqgKUrecord_dependenciesqhNU rfc_base_urlqiUhttp://tools.ietf.org/html/qjU tracebackqkUpep_referencesqlNUstrip_commentsqmNU toc_backlinksqnUentryqoU language_codeqpUenqqU datestampqrNU report_levelqsKU _destinationqtNU halt_levelquKU strip_classesqvNh/NUerror_encoding_error_handlerqwUbackslashreplaceqxUdebugqyNUembed_stylesheetqzUoutput_encoding_error_handlerq{Ustrictq|U sectnum_xformq}KUdump_transformsq~NU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUE/var/build/user_builds/cheddar/checkouts/latest/docs/installation.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqh|Uauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqKU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh)h}q(h!]h$]h#]Usourcehh"]h&]uU footnotesq]qUrefidsq}qub.PK|sCbb'cheddar-latest/.doctrees/readme.doctreecdocutils.nodes document q)q}q(U nametypesq}q(XfeaturesqNXcheddarqNX setuptoolsqXthe local indexq NXthe remote indexq NX configurationq NXdataq NuUsubstitution_defsq }qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUfeaturesqhUcheddarqhU setuptoolsqh Uthe-local-indexqh Uthe-remote-indexqh U configurationqh UdataquUchildrenq]qcdocutils.nodes section q)q }q!(U rawsourceq"UUparentq#hUsourceq$cdocutils.nodes reprunicode q%X ../README.rstq&q'}q(bUtagnameq)Usectionq*U attributesq+}q,(Udupnamesq-]Uclassesq.]Ubackrefsq/]Uidsq0]q1haUnamesq2]q3hauUlineq4KUdocumentq5hh]q6(cdocutils.nodes title q7)q8}q9(h"Xcheddarq:h#h h$h'h)Utitleq;h+}q<(h-]h.]h/]h0]h2]uh4Kh5hh]q=cdocutils.nodes Text q>Xcheddarq?q@}qA(h"h:h#h8ubaubcdocutils.nodes reference qB)qC}qD(h"Uh#h h$h'h)U referenceqEh+}qF(UrefuriXhttp://badge.fury.io/py/cheddarh0]h/]h-]h.]h2]uh4Nh5hh]qGcdocutils.nodes image qH)qI}qJ(h"X].. image:: https://badge.fury.io/py/cheddar.png :target: http://badge.fury.io/py/cheddar h+}qK(UuriX$https://badge.fury.io/py/cheddar.pngqLh0]h/]h-]h.]U candidatesqM}qNU?hLsh2]uh#hCh]h)UimageqOubaubhB)qP}qQ(h"Uh#h h$h'h)hEh+}qR(UrefuriX(https://travis-ci.org/jessemyers/cheddarh0]h/]h-]h.]h2]uh4Nh5hh]qShH)qT}qU(h"X.. image:: https://travis-ci.org/jessemyers/cheddar.png?branch=develop :target: https://travis-ci.org/jessemyers/cheddar h+}qV(UuriX;https://travis-ci.org/jessemyers/cheddar.png?branch=developqWh0]h/]h-]h.]hM}qXU?hWsh2]uh#hPh]h)hOubaubhB)qY}qZ(h"Uh#h h$h'h)hEh+}q[(UrefuriX0https://crate.io/packages/cheddar?version=latesth0]h/]h-]h.]h2]uh4Nh5hh]q\hH)q]}q^(h"Xs.. image:: https://pypip.in/d/cheddar/badge.png :target: https://crate.io/packages/cheddar?version=latest h+}q_(UuriX$https://pypip.in/d/cheddar/badge.pngq`h0]h/]h-]h.]hM}qaU?h`sh2]uh#hYh]h)hOubaubcdocutils.nodes paragraph qb)qc}qd(h"XRPyPI clone with Flask and Redis. It's the single most popular cheese in the world!qeh#h h$h'h)U paragraphqfh+}qg(h-]h.]h/]h0]h2]uh4Kh5hh]qhh>XRPyPI clone with Flask and Redis. It's the single most popular cheese in the world!qiqj}qk(h"heh#hcubaubcdocutils.nodes bullet_list ql)qm}qn(h"Uh#h h$h'h)U bullet_listqoh+}qp(UbulletqqX*h0]h/]h-]h.]h2]uh4Kh5hh]qr(cdocutils.nodes list_item qs)qt}qu(h"X Free software: Apache License V2qvh#hmh$h'h)U list_itemqwh+}qx(h-]h.]h/]h0]h2]uh4Nh5hh]qyhb)qz}q{(h"hvh#hth$h'h)hfh+}q|(h-]h.]h/]h0]h2]uh4Kh]q}h>X Free software: Apache License V2q~q}q(h"hvh#hzubaubaubhs)q}q(h"X(Documentation: http://cheddar.rtfd.org. h#hmh$h'h)hwh+}q(h-]h.]h/]h0]h2]uh4Nh5hh]qhb)q}q(h"X'Documentation: http://cheddar.rtfd.org.h#hh$h'h)hfh+}q(h-]h.]h/]h0]h2]uh4Kh]q(h>XDocumentation: qq}q(h"XDocumentation: h#hubhB)q}q(h"Xhttp://cheddar.rtfd.orgqh+}q(Urefurihh0]h/]h-]h.]h2]uh#hh]qh>Xhttp://cheddar.rtfd.orgqq}q(h"Uh#hubah)hEubh>X.q}q(h"X.h#hubeubaubeubh)q}q(h"Uh#h h$h'h)h*h+}q(h-]h.]h/]h0]qhah2]qhauh4Kh5hh]q(h7)q}q(h"XFeaturesqh#hh$h'h)h;h+}q(h-]h.]h/]h0]h2]uh4Kh5hh]qh>XFeaturesqq}q(h"hh#hubaubhb)q}q(h"XCheddar aims to simplify Python development within organizations that simultaneously work with public and private Python distributions.qh#hh$h'h)hfh+}q(h-]h.]h/]h0]h2]uh4Kh5hh]qh>XCheddar aims to simplify Python development within organizations that simultaneously work with public and private Python distributions.qq}q(h"hh#hubaubhb)q}q(h"XCheddar includes:qh#hh$h'h)hfh+}q(h-]h.]h/]h0]h2]uh4Kh5hh]qh>XCheddar includes:qq}q(h"hh#hubaubhl)q}q(h"Uh#hh$h'h)hoh+}q(hqX*h0]h/]h-]h.]h2]uh4Kh5hh]q(hs)q}q(h"XqA *local* package index for internal development, supporting `setuptools`_ ``register`` and ``upload`` commands. h#hh$h'h)hwh+}q(h-]h.]h/]h0]h2]uh4Nh5hh]qhb)q}q(h"XpA *local* package index for internal development, supporting `setuptools`_ ``register`` and ``upload`` commands.h#hh$h'h)hfh+}q(h-]h.]h/]h0]h2]uh4Kh]q(h>XA qq}q(h"XA h#hubcdocutils.nodes emphasis q)q}q(h"X*local*h+}q(h-]h.]h/]h0]h2]uh#hh]qh>Xlocalqȅq}q(h"Uh#hubah)Uemphasisqubh>X4 package index for internal development, supporting q̅q}q(h"X4 package index for internal development, supporting h#hubhB)q}q(h"X `setuptools`_UresolvedqKh#hh)hEh+}q(UnameX setuptoolsqUrefuriqX#http://pythonhosted.org/setuptools/qh0]h/]h-]h.]h2]uh]qh>X setuptoolsqׅq}q(h"Uh#hubaubh>X q}q(h"X h#hubcdocutils.nodes literal q)q}q(h"X ``register``h+}q(h-]h.]h/]h0]h2]uh#hh]qh>Xregisterqᅁq}q(h"Uh#hubah)Uliteralqubh>X and q允q}q(h"X and h#hubh)q}q(h"X ``upload``h+}q(h-]h.]h/]h0]h2]uh#hh]qh>Xuploadq셁q}q(h"Uh#hubah)hubh>X commands.qq}q(h"X commands.h#hubeubaubhs)q}q(h"XA *remote* package index that proxies to a public repository (such as ``pypi.python.org``) and *caches* packages and package version listings to reduce latency and minimize the effect of downtime by the public repository. h#hh$h'h)hwh+}q(h-]h.]h/]h0]h2]uh4Nh5hh]qhb)q}q(h"XA *remote* package index that proxies to a public repository (such as ``pypi.python.org``) and *caches* packages and package version listings to reduce latency and minimize the effect of downtime by the public repository.h#hh$h'h)hfh+}q(h-]h.]h/]h0]h2]uh4Kh]q(h>XA qq}q(h"XA h#hubh)q}q(h"X*remote*h+}q(h-]h.]h/]h0]h2]uh#hh]rh>Xremoterr}r(h"Uh#hubah)hubh>X< package index that proxies to a public repository (such as rr}r(h"X< package index that proxies to a public repository (such as h#hubh)r}r(h"X``pypi.python.org``h+}r (h-]h.]h/]h0]h2]uh#hh]r h>Xpypi.python.orgr r }r (h"Uh#jubah)hubh>X) and rr}r(h"X) and h#hubh)r}r(h"X*caches*h+}r(h-]h.]h/]h0]h2]uh#hh]rh>Xcachesrr}r(h"Uh#jubah)hubh>Xv packages and package version listings to reduce latency and minimize the effect of downtime by the public repository.rr}r(h"Xv packages and package version listings to reduce latency and minimize the effect of downtime by the public repository.h#hubeubaubhs)r}r(h"XZA *combined* package index that unifies the best of the local and remote implementations. h#hh$h'h)hwh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]rhb)r}r (h"XYA *combined* package index that unifies the best of the local and remote implementations.h#jh$h'h)hfh+}r!(h-]h.]h/]h0]h2]uh4K"h]r"(h>XA r#r$}r%(h"XA h#jubh)r&}r'(h"X *combined*h+}r((h-]h.]h/]h0]h2]uh#jh]r)h>Xcombinedr*r+}r,(h"Uh#j&ubah)hubh>XM package index that unifies the best of the local and remote implementations.r-r.}r/(h"XM package index that unifies the best of the local and remote implementations.h#jubeubaubeubhb)r0}r1(h"X]In addition, Cheddar supports a few features that simplify management within an organization:r2h#hh$h'h)hfh+}r3(h-]h.]h/]h0]h2]uh4K$h5hh]r4h>X]In addition, Cheddar supports a few features that simplify management within an organization:r5r6}r7(h"j2h#j0ubaubhl)r8}r9(h"Uh#hh$h'h)hoh+}r:(hqX*h0]h/]h-]h.]h2]uh4K&h5hh]r;(hs)r<}r=(h"XPackages are stored locally in separate directories for pre-releases and releases, simplifying backup strategies that wish to ignore transitive development builds. h#j8h$h'h)hwh+}r>(h-]h.]h/]h0]h2]uh4Nh5hh]r?hb)r@}rA(h"XPackages are stored locally in separate directories for pre-releases and releases, simplifying backup strategies that wish to ignore transitive development builds.rBh#j<h$h'h)hfh+}rC(h-]h.]h/]h0]h2]uh4K&h]rDh>XPackages are stored locally in separate directories for pre-releases and releases, simplifying backup strategies that wish to ignore transitive development builds.rErF}rG(h"jBh#j@ubaubaubhs)rH}rI(h"XJDuplicate package uploads return a predictable HTTP `409 Conflict` error. h#j8h$h'h)hwh+}rJ(h-]h.]h/]h0]h2]uh4Nh5hh]rKhb)rL}rM(h"XIDuplicate package uploads return a predictable HTTP `409 Conflict` error.h#jHh$h'h)hfh+}rN(h-]h.]h/]h0]h2]uh4K)h]rO(h>X4Duplicate package uploads return a predictable HTTP rPrQ}rR(h"X4Duplicate package uploads return a predictable HTTP h#jLubcdocutils.nodes title_reference rS)rT}rU(h"X`409 Conflict`h+}rV(h-]h.]h/]h0]h2]uh#jLh]rWh>X 409 ConflictrXrY}rZ(h"Uh#jTubah)Utitle_referencer[ubh>X error.r\r]}r^(h"X error.h#jLubeubaubhs)r_}r`(h"XIMistakenly uploaded packages may be deleted using a simple, RESTful API. h#j8h$h'h)hwh+}ra(h-]h.]h/]h0]h2]uh4Nh5hh]rbhb)rc}rd(h"XHMistakenly uploaded packages may be deleted using a simple, RESTful API.reh#j_h$h'h)hfh+}rf(h-]h.]h/]h0]h2]uh4K+h]rgh>XHMistakenly uploaded packages may be deleted using a simple, RESTful API.rhri}rj(h"jeh#jcubaubaubeubeubh)rk}rl(h"Uh#h h$h'h)h*h+}rm(h-]h.]h/]h0]rnhah2]roh auh4K.h5hh]rp(h7)rq}rr(h"X Configurationrsh#jkh$h'h)h;h+}rt(h-]h.]h/]h0]h2]uh4K.h5hh]ruh>X Configurationrvrw}rx(h"jsh#jqubaubhb)ry}rz(h"XCheddar can run in any WSGI container or through Flask's built-in development server (which is single-threaded and only recommended for development).r{h#jkh$h'h)hfh+}r|(h-]h.]h/]h0]h2]uh4K0h5hh]r}h>XCheddar can run in any WSGI container or through Flask's built-in development server (which is single-threaded and only recommended for development).r~r}r(h"j{h#jyubaubhb)r}r(h"XConfiguation is loaded from the ``defaults.py`` module along with the contents of the file pointed to by the ``CHEDDAR_SETTINGS`` environment variable, if any.h#jkh$h'h)hfh+}r(h-]h.]h/]h0]h2]uh4K3h5hh]r(h>X Configuation is loaded from the rr}r(h"X Configuation is loaded from the h#jubh)r}r(h"X``defaults.py``h+}r(h-]h.]h/]h0]h2]uh#jh]rh>X defaults.pyrr}r(h"Uh#jubah)hubh>X> module along with the contents of the file pointed to by the rr}r(h"X> module along with the contents of the file pointed to by the h#jubh)r}r(h"X``CHEDDAR_SETTINGS``h+}r(h-]h.]h/]h0]h2]uh#jh]rh>XCHEDDAR_SETTINGSrr}r(h"Uh#jubah)hubh>X environment variable, if any.rr}r(h"X environment variable, if any.h#jubeubhb)r}r(h"XdYou may wish to modify several of the configuration parameters from their default values, including:rh#jkh$h'h)hfh+}r(h-]h.]h/]h0]h2]uh4K6h5hh]rh>XdYou may wish to modify several of the configuration parameters from their default values, including:rr}r(h"jh#jubaubhl)r}r(h"Uh#jkh$h'h)hoh+}r(hqX*h0]h/]h-]h.]h2]uh4K8h5hh]r(hs)r}r(h"XA`INDEX_URL` which specifies the URL of the *remote* package indexrh#jh$h'h)hwh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]rhb)r}r(h"jh#jh$h'h)hfh+}r(h-]h.]h/]h0]h2]uh4K8h]r(jS)r}r(h"X `INDEX_URL`h+}r(h-]h.]h/]h0]h2]uh#jh]rh>X INDEX_URLrr}r(h"Uh#jubah)j[ubh>X which specifies the URL of the rr}r(h"X which specifies the URL of the h#jubh)r}r(h"X*remote*h+}r(h-]h.]h/]h0]h2]uh#jh]rh>Xremoterr}r(h"Uh#jubah)hubh>X package indexrr}r(h"X package indexh#jubeubaubhs)r}r(h"X?`REDIS_HOSTNAME` which control the location of the Redis serverrh#jh$h'h)hwh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]rhb)r}r(h"jh#jh$h'h)hfh+}r(h-]h.]h/]h0]h2]uh4K9h]r(jS)r}r(h"X`REDIS_HOSTNAME`h+}r(h-]h.]h/]h0]h2]uh#jh]rh>XREDIS_HOSTNAMErr}r(h"Uh#jubah)j[ubh>X/ which control the location of the Redis serverrr}r(h"X/ which control the location of the Redis serverh#jubeubaubhs)r}r(h"XO`LOCAL_CACHE_DIR` which controls the storage location of locally uploaded filesrh#jh$h'h)hwh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]rhb)r}r(h"jh#jh$h'h)hfh+}r(h-]h.]h/]h0]h2]uh4K:h]r(jS)r}r(h"X`LOCAL_CACHE_DIR`h+}r(h-]h.]h/]h0]h2]uh#jh]rh>XLOCAL_CACHE_DIRrr}r(h"Uh#jubah)j[ubh>X> which controls the storage location of locally uploaded filesrr}r(h"X> which controls the storage location of locally uploaded filesh#jubeubaubhs)r}r(h"XN`REMOTE_CACHE_DIR` which controls the storage location of cached remote files h#jh$h'h)hwh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]rhb)r}r(h"XM`REMOTE_CACHE_DIR` which controls the storage location of cached remote filesh#jh$h'h)hfh+}r(h-]h.]h/]h0]h2]uh4K;h]r(jS)r}r(h"X`REMOTE_CACHE_DIR`h+}r(h-]h.]h/]h0]h2]uh#jh]rh>XREMOTE_CACHE_DIRrr}r(h"Uh#jubah)j[ubh>X; which controls the storage location of cached remote filesrr}r(h"X; which controls the storage location of cached remote filesh#jubeubaubeubeubh)r}r(h"Uh#h h$h'h)h*h+}r(h-]h.]h/]h0]rhah2]rh auh4K>h5hh]r(h7)r}r(h"XThe Local Indexrh#jh$h'h)h;h+}r(h-]h.]h/]h0]h2]uh4K>h5hh]rh>XThe Local Indexrr }r (h"jh#jubaubhb)r }r (h"XTo use the local index:r h#jh$h'h)hfh+}r(h-]h.]h/]h0]h2]uh4K@h5hh]rh>XTo use the local index:rr}r(h"j h#j ubaubcdocutils.nodes block_quote r)r}r(h"Uh#jh$Nh)U block_quoterh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]rcdocutils.nodes enumerated_list r)r}r(h"Uh+}r(UsuffixrU.h0]h/]h-]UprefixrUh.]h2]UenumtyperUarabicr uh#jh]r!(hs)r"}r#(h"XEdit your ``~/.pypirc`` to contain an entry for Cheddar. It should look _something_ like:: [distutils] index-servers = pypi cheddar [pypi] repository:http://pypi.python.org [cheddar] repository:http://localhost:5000/pypi username:myusername password:mypassword Note that the URL here assume you are running the "development" server. h+}r$(h-]h.]h/]h0]h2]uh#jh]r%(hb)r&}r'(h"XZEdit your ``~/.pypirc`` to contain an entry for Cheddar. It should look _something_ like::h#j"h$h'h)hfh+}r((h-]h.]h/]h0]h2]uh4KBh]r)(h>X Edit your r*r+}r,(h"X Edit your h#j&ubh)r-}r.(h"X ``~/.pypirc``h+}r/(h-]h.]h/]h0]h2]uh#j&h]r0h>X ~/.pypircr1r2}r3(h"Uh#j-ubah)hubh>XB to contain an entry for Cheddar. It should look _something_ like:r4r5}r6(h"XB to contain an entry for Cheddar. It should look _something_ like:h#j&ubeubcdocutils.nodes literal_block r7)r8}r9(h"X[distutils] index-servers = pypi cheddar [pypi] repository:http://pypi.python.org [cheddar] repository:http://localhost:5000/pypi username:myusername password:mypasswordh#j"h)U literal_blockr:h+}r;(U xml:spacer<Upreserver=h0]h/]h-]h.]h2]uh4KFh]r>h>X[distutils] index-servers = pypi cheddar [pypi] repository:http://pypi.python.org [cheddar] repository:http://localhost:5000/pypi username:myusername password:mypasswordr?r@}rA(h"Uh#j8ubaubhb)rB}rC(h"XGNote that the URL here assume you are running the "development" server.rDh#j"h$h'h)hfh+}rE(h-]h.]h/]h0]h2]uh4KQh]rFh>XGNote that the URL here assume you are running the "development" server.rGrH}rI(h"jDh#jBubaubeh)hwubhs)rJ}rK(h"XPAdd credentials to Redis:: redis-cli set cheddar.user.myusername mypasswod h+}rL(h-]h.]h/]h0]h2]uh#jh]rM(hb)rN}rO(h"XAdd credentials to Redis::h#jJh$h'h)hfh+}rP(h-]h.]h/]h0]h2]uh4KSh]rQh>XAdd credentials to Redis:rRrS}rT(h"XAdd credentials to Redis:h#jNubaubj7)rU}rV(h"X/redis-cli set cheddar.user.myusername mypasswodh#jJh)j:h+}rW(j<j=h0]h/]h-]h.]h2]uh4KWh]rXh>X/redis-cli set cheddar.user.myusername mypasswodrYrZ}r[(h"Uh#jUubaubeh)hwubhs)r\}r](h"XUpload your distribution:: cd /path/to/directory/containing/setup.py python setup.py sdist upload -r cheddar You may also use the ``register -r cheddar`` to validate your ``setup.py`` without uploading the source distribution. h+}r^(h-]h.]h/]h0]h2]uh#jh]r_(hb)r`}ra(h"XUpload your distribution::rbh#j\h$h'h)hfh+}rc(h-]h.]h/]h0]h2]uh4KWh]rdh>XUpload your distribution:rerf}rg(h"XUpload your distribution:h#j`ubaubj7)rh}ri(h"XQcd /path/to/directory/containing/setup.py python setup.py sdist upload -r cheddarh#j\h)j:h+}rj(j<j=h0]h/]h-]h.]h2]uh4K[h]rkh>XQcd /path/to/directory/containing/setup.py python setup.py sdist upload -r cheddarrlrm}rn(h"Uh#jhubaubhb)ro}rp(h"XuYou may also use the ``register -r cheddar`` to validate your ``setup.py`` without uploading the source distribution.h#j\h$h'h)hfh+}rq(h-]h.]h/]h0]h2]uh4K\h]rr(h>XYou may also use the rsrt}ru(h"XYou may also use the h#joubh)rv}rw(h"X``register -r cheddar``h+}rx(h-]h.]h/]h0]h2]uh#joh]ryh>Xregister -r cheddarrzr{}r|(h"Uh#jvubah)hubh>X to validate your r}r~}r(h"X to validate your h#joubh)r}r(h"X ``setup.py``h+}r(h-]h.]h/]h0]h2]uh#joh]rh>Xsetup.pyrr}r(h"Uh#jubah)hubh>X+ without uploading the source distribution.rr}r(h"X+ without uploading the source distribution.h#joubeubeh)hwubeh)Uenumerated_listrubaubeubh)r}r(h"Uh#h h$h'h)h*h+}r(h-]h.]h/]h0]rhah2]rh auh4K`h5hh]r(h7)r}r(h"XThe Remote Indexrh#jh$h'h)h;h+}r(h-]h.]h/]h0]h2]uh4K`h5hh]rh>XThe Remote Indexrr}r(h"jh#jubaubhb)r}r(h"X$Run `pip` using a custom index url::rh#jh$h'h)hfh+}r(h-]h.]h/]h0]h2]uh4Kbh5hh]r(h>XRun rr}r(h"XRun h#jubjS)r}r(h"X`pip`h+}r(h-]h.]h/]h0]h2]uh#jh]rh>Xpiprr}r(h"Uh#jubah)j[ubh>X using a custom index url:rr}r(h"X using a custom index url:h#jubeubj7)r}r(h"X4pip install --index-url http://localhost:5000/simpleh#jh$h'h)j:h+}r(j<j=h0]h/]h-]h.]h2]uh4Kfh5hh]rh>X4pip install --index-url http://localhost:5000/simplerr}r(h"Uh#jubaubhb)r}r(h"XGNote that the URL here assume you are running the "development" server.rh#jh$h'h)hfh+}r(h-]h.]h/]h0]h2]uh4Kfh5hh]rh>XGNote that the URL here assume you are running the "development" server.rr}r(h"jh#jubaubhb)r}r(h"XSYou can also edit your ``~/.pip/pip.conf`` to contain the index url automatically::rh#jh$h'h)hfh+}r(h-]h.]h/]h0]h2]uh4Khh5hh]r(h>XYou can also edit your rr}r(h"XYou can also edit your h#jubh)r}r(h"X``~/.pip/pip.conf``h+}r(h-]h.]h/]h0]h2]uh#jh]rh>X~/.pip/pip.confrr}r(h"Uh#jubah)hubh>X( to contain the index url automatically:rr}r(h"X( to contain the index url automatically:h#jubeubj7)r}r(h"X2[install] index-url = http://localhost:5000/simpleh#jh$h'h)j:h+}r(j<j=h0]h/]h-]h.]h2]uh4Klh5hh]rh>X2[install] index-url = http://localhost:5000/simplerr}r(h"Uh#jubaubeubh)r}r(h"Uh#h h$h'h)h*h+}r(h-]h.]h/]h0]rhah2]rh auh4Knh5hh]r(h7)r}r(h"XDatarh#jh$h'h)h;h+}r(h-]h.]h/]h0]h2]uh4Knh5hh]rh>XDatarr}r(h"jh#jubaubhb)r}r(h"X%Cheddar saves data in several places:rh#jh$h'h)hfh+}r(h-]h.]h/]h0]h2]uh4Kph5hh]rh>X%Cheddar saves data in several places:rr}r(h"jh#jubaubhl)r}r(h"Uh#jh$h'h)hoh+}r(hqX*h0]h/]h-]h.]h2]uh4Krh5hh]r(hs)r}r(h"X2Local packages are stored in the `LOCAL_CACHE_DIR`rh#jh$h'h)hwh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]rhb)r}r(h"jh#jh$h'h)hfh+}r(h-]h.]h/]h0]h2]uh4Krh]r(h>X!Local packages are stored in the rr}r(h"X!Local packages are stored in the h#jubjS)r}r(h"X`LOCAL_CACHE_DIR`h+}r(h-]h.]h/]h0]h2]uh#jh]rh>XLOCAL_CACHE_DIRrr}r(h"Uh#jubah)j[ubeubaubhs)r}r(h"X7Remote packages may be cached in the `REMOTE_CACHE_DIR`rh#jh$h'h)hwh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]rhb)r}r(h"jh#jh$h'h)hfh+}r(h-]h.]h/]h0]h2]uh4Ksh]r(h>X%Remote packages may be cached in the r r }r (h"X%Remote packages may be cached in the h#jubjS)r }r (h"X`REMOTE_CACHE_DIR`h+}r(h-]h.]h/]h0]h2]uh#jh]rh>XREMOTE_CACHE_DIRrr}r(h"Uh#j ubah)j[ubeubaubhs)r}r(h"X/Remote version listings may be cached in Redis.rh#jh$h'h)hwh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]rhb)r}r(h"jh#jh$h'h)hfh+}r(h-]h.]h/]h0]h2]uh4Kth]rh>X/Remote version listings may be cached in Redis.rr}r(h"jh#jubaubaubhs)r}r (h"X9User data (for upload authentication) is stored in Redis.r!h#jh$h'h)hwh+}r"(h-]h.]h/]h0]h2]uh4Nh5hh]r#hb)r$}r%(h"j!h#jh$h'h)hfh+}r&(h-]h.]h/]h0]h2]uh4Kuh]r'h>X9User data (for upload authentication) is stored in Redis.r(r)}r*(h"j!h#j$ubaubaubhs)r+}r,(h"X2Local package version listings are stored Redis. h#jh$h'h)hwh+}r-(h-]h.]h/]h0]h2]uh4Nh5hh]r.hb)r/}r0(h"X0Local package version listings are stored Redis.r1h#j+h$h'h)hfh+}r2(h-]h.]h/]h0]h2]uh4Kvh]r3h>X0Local package version listings are stored Redis.r4r5}r6(h"j1h#j/ubaubaubeubcdocutils.nodes target r7)r8}r9(h"X5.. _`setuptools`: http://pythonhosted.org/setuptools/U referencedr:Kh#jh$h'h)Utargetr;h+}r<(hhh0]r=hah/]h-]h.]h2]r>hauh4K{h5hh]ubeubeubah"UU transformerr?NU footnote_refsr@}rAUrefnamesrB}rCh]rDhasUsymbol_footnotesrE]rFUautofootnote_refsrG]rHUsymbol_footnote_refsrI]rJU citationsrK]rLh5hU current_linerMNUtransform_messagesrN]rOUreporterrPNUid_startrQKU autofootnotesrR]rSU citation_refsrT}rUUindirect_targetsrV]rWUsettingsrX(cdocutils.frontend Values rYorZ}r[(Ufootnote_backlinksr\KUrecord_dependenciesr]NU rfc_base_urlr^Uhttp://tools.ietf.org/html/r_U tracebackr`Upep_referencesraNUstrip_commentsrbNU toc_backlinksrcUentryrdU language_codereUenrfU datestamprgNU report_levelrhKU _destinationriNU halt_levelrjKU strip_classesrkNh;NUerror_encoding_error_handlerrlUbackslashreplacermUdebugrnNUembed_stylesheetroUoutput_encoding_error_handlerrpUstrictrqU sectnum_xformrrKUdump_transformsrsNU docinfo_xformrtKUwarning_streamruNUpep_file_url_templatervUpep-%04drwUexit_status_levelrxKUconfigryNUstrict_visitorrzNUcloak_email_addressesr{Utrim_footnote_reference_spacer|Uenvr}NUdump_pseudo_xmlr~NUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerU?/var/build/user_builds/cheddar/checkouts/latest/docs/readme.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjqUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrKU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhhjhh hj8hjhjkhjuUsubstitution_namesr}rh)h5h+}r(h-]h0]h/]Usourceh%X?/var/build/user_builds/cheddar/checkouts/latest/docs/readme.rstrr}rbh.]h2]uU footnotesr]rUrefidsr}rub.PK|sC+y77+cheddar-latest/.doctrees/environment.pickle(csphinx.environment BuildEnvironment qoq}q(Udlfilesqcsphinx.util FilenameUniqDict q)qc__builtin__ set q]RqbUappq NU _warnfuncq NUtitlesq }q (Uindexq cdocutils.nodes title q)q}q(U rawsourceqUU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq]Unamesq]uUchildrenq]qcdocutils.nodes Text qX#Welcome to cheddar's documentation!qq}q(hX#Welcome to cheddar's documentation!qUparentq hubaUtagnameq!Utitleq"ubU installationq#h)q$}q%(hUh}q&(h]h]h]h]h]uh]q'hX Installationq(q)}q*(hX Installationq+h h$ubah!h"ubU contributingq,h)q-}q.(hUh}q/(h]h]h]h]h]uh]q0hX Contributingq1q2}q3(hX Contributingq4h h-ubah!h"ubUusageq5h)q6}q7(hUh}q8(h]h]h]h]h]uh]q9hXUsageq:q;}q<(hXUsageq=h h6ubah!h"ubUauthorsq>h)q?}q@(hUh}qA(h]h]h]h]h]uh]qBhXCreditsqCqD}qE(hXCreditsqFh h?ubah!h"ubUreadmeqGh)qH}qI(hUh}qJ(h]h]h]h]h]uh]qKhXcheddarqLqM}qN(hXcheddarqOh hHubah!h"ubUhistoryqPh)qQ}qR(hUh}qS(h]h]h]h]h]uh]qThXHistoryqUqV}qW(hXHistoryqXh hQubah!h"ubuU domaindataqY}qZ(Ustdq[}q\(Uversionq]KU anonlabelsq^}q_(Umodindexq`U py-modindexUUgenindexqahaUUsearchqbUsearchUuUlabelsqc}qd(h`U py-modindexUcsphinx.locale _TranslationProxy qecsphinx.locale mygettext qfU Module IndexqgqhhfhgqibhahaUhehfUIndexqjqkhfhjqlbhbhbUhehfU Search PageqmqnhfhmqobuU progoptionsqp}qqUobjectsqr}qsuUc}qt(hr}quh]KuUpyqv}qw(hr}qxUmodulesqy}qzh]KuUjsq{}q|(hr}q}h]KuUrstq~}q(hr}qh]KuUcppq}q(hr}qh]KuuU glob_toctreesqh]RqU reread_alwaysqh]RqU doctreedirqUJ/var/build/user_builds/cheddar/checkouts/latest/docs/_build/html/.doctreesqUversioning_conditionqU citationsq}h]K)UsrcdirqU4/var/build/user_builds/cheddar/checkouts/latest/docsqUconfigqcsphinx.config Config q)q}q(U html_contextq}q(U github_userU jessemyersUnameqXcheddarqUdisplay_githubUversions]qUlatestqU /en/latest/qaU using_themeU downloads]q(UPDFUhttps://media.readthedocs.org/epub/cheddar/latest/cheddar.epubqeU READTHEDOCSUgithub_versionUmasterqU conf_py_pathU/docs/U github_repoUcheddarqUanalytics_codeUUPRODUCTION_DOMAINUreadthedocs.orgU html_themeqUsphinx_rtd_themeqU new_themeUcurrent_versionqhUslugqhU MEDIA_URLqUhttps://media.readthedocs.org/uUpygments_styleqUsphinxqUhtmlhelp_basenameqU cheddardochhU master_docqUindexqU source_suffixqU.rstUtexinfo_documentsq]q(UindexqUcheddarqXcheddar DocumentationqX Jesse MyersqhU PyPI clone with Flask and Redis.U MiscellaneoustqaU copyrightqX2013, Jesse MyersUexclude_patternsq]qU_buildqah]U1.0qU man_pagesq]q(hhh]qhaKtqaU html_styleqNUhtml_theme_optionsq}Utemplates_pathq]q(UA/home/docs/checkouts/readthedocs.org/readthedocs/templates/sphinxqU _templatesqeUlatex_documentsq]q(hU cheddar.texhhUmanualtqaUhtml_static_pathq]q(U_staticqUI/home/docs/checkouts/readthedocs.org/readthedocs/templates/sphinx/_staticqeUhtml_theme_pathq]q(U_themesqheUlatex_elementsq}UlanguageqXenqU overridesq}qhhsUprojectqhU extensionsq]q(Usphinx.ext.autodocqUsphinx.ext.viewcodeqUreadthedocs_ext.readthedocsqU"readthedocs_ext.readthedocshtmldirqeUreleaseqhUsetupqNubUmetadataq}q(h }h#}h,}h5}h>}hG}hP}uUversionchangesq}U_viewcode_modulesq}Utoc_num_entriesq}q(h Kh#Kh,K h5Kh>KhGKhPKuUimagesqh)qh]RqbUnumbered_toctreesqh]RqU found_docsqh]q(h h#h,hGh>h5hPeRqU longtitlesq}q(h hh#h$h,h-h5h6h>h?hGhHhPhQuU dependenciesq}q(h,h]qX../CONTRIBUTING.rstqaRqhGh]qX ../README.rstqaRqhPh]qX../HISTORY.rstqaRqh>h]qX../AUTHORS.rstqaRquUtoctree_includesq}qh ]q(XreadmeqX installationqXusageqX contributingqXauthorsqXhistoryqesU temp_dataq}Utocsr}r(h cdocutils.nodes bullet_list r)r}r(hUh}r(h]h]h]h]h]uh]r(cdocutils.nodes list_item r)r}r (hUh}r (h]h]h]h]h]uh jh]r (csphinx.addnodes compact_paragraph r )r }r(hUh}r(h]h]h]h]h]uh jh]rcdocutils.nodes reference r)r}r(hUh}r(U anchornameUUrefurih h]h]h]h]h]Uinternaluh j h]rhX#Welcome to cheddar's documentation!rr}r(hhh jubah!U referencerubah!Ucompact_paragraphrubj)r}r(hUh}r(h]h]h]h]h]uh jh]rcsphinx.addnodes toctree r)r }r!(hUh}r"(UnumberedKUparenth U titlesonlyUglobh]h]h]h]h]Uentries]r#(Nhr$Nhr%Nhr&Nhr'Nhr(Nhr)eUhiddenU includefiles]r*(hhhhhheUmaxdepthKuh jh]h!Utoctreer+ubah!U bullet_listr,ubeh!U list_itemr-ubj)r.}r/(hUh}r0(h]h]h]h]h]uh jh]r1j )r2}r3(hUh}r4(h]h]h]h]h]uh j.h]r5j)r6}r7(hUh}r8(U anchornameU#indices-and-tablesUrefurih h]h]h]h]h]Uinternaluh j2h]r9hXIndices and tablesr:r;}r<(hXIndices and tablesr=h j6ubah!jubah!jubah!j-ubeh!j,ubh#j)r>}r?(hUh}r@(h]h]h]h]h]uh]rAj)rB}rC(hUh}rD(h]h]h]h]h]uh j>h]rEj )rF}rG(hUh}rH(h]h]h]h]h]uh jBh]rIj)rJ}rK(hUh}rL(U anchornameUUrefurih#h]h]h]h]h]Uinternaluh jFh]rMhX InstallationrNrO}rP(hh+h jJubah!jubah!jubah!j-ubah!j,ubh,j)rQ}rR(hUh}rS(h]h]h]h]h]uh]rTj)rU}rV(hUh}rW(h]h]h]h]h]uh jQh]rX(j )rY}rZ(hUh}r[(h]h]h]h]h]uh jUh]r\j)r]}r^(hUh}r_(U anchornameUUrefurih,h]h]h]h]h]Uinternaluh jYh]r`hX Contributingrarb}rc(hh4h j]ubah!jubah!jubj)rd}re(hUh}rf(h]h]h]h]h]uh jUh]rg(j)rh}ri(hUh}rj(h]h]h]h]h]uh jdh]rk(j )rl}rm(hUh}rn(h]h]h]h]h]uh jhh]roj)rp}rq(hUh}rr(U anchornameU#types-of-contributionsUrefurih,h]h]h]h]h]Uinternaluh jlh]rshXTypes of Contributionsrtru}rv(hXTypes of Contributionsrwh jpubah!jubah!jubj)rx}ry(hUh}rz(h]h]h]h]h]uh jhh]r{(j)r|}r}(hUh}r~(h]h]h]h]h]uh jxh]rj )r}r(hUh}r(h]h]h]h]h]uh j|h]rj)r}r(hUh}r(U anchornameU #report-bugsUrefurih,h]h]h]h]h]Uinternaluh jh]rhX Report Bugsrr}r(hX Report Bugsrh jubah!jubah!jubah!j-ubj)r}r(hUh}r(h]h]h]h]h]uh jxh]rj )r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU #fix-bugsUrefurih,h]h]h]h]h]Uinternaluh jh]rhXFix Bugsrr}r(hXFix Bugsrh jubah!jubah!jubah!j-ubj)r}r(hUh}r(h]h]h]h]h]uh jxh]rj )r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU#implement-featuresUrefurih,h]h]h]h]h]Uinternaluh jh]rhXImplement Featuresrr}r(hXImplement Featuresrh jubah!jubah!jubah!j-ubj)r}r(hUh}r(h]h]h]h]h]uh jxh]rj )r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU#write-documentationUrefurih,h]h]h]h]h]Uinternaluh jh]rhXWrite Documentationrr}r(hXWrite Documentationrh jubah!jubah!jubah!j-ubj)r}r(hUh}r(h]h]h]h]h]uh jxh]rj )r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU#submit-feedbackUrefurih,h]h]h]h]h]Uinternaluh jh]rhXSubmit Feedbackrr}r(hXSubmit Feedbackrh jubah!jubah!jubah!j-ubeh!j,ubeh!j-ubj)r}r(hUh}r(h]h]h]h]h]uh jdh]rj )r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU #get-startedUrefurih,h]h]h]h]h]Uinternaluh jh]rhX Get Started!rr}r(hX Get Started!rh jubah!jubah!jubah!j-ubj)r}r(hUh}r(h]h]h]h]h]uh jdh]rj )r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU#pull-request-guidelinesUrefurih,h]h]h]h]h]Uinternaluh jh]rhXPull Request Guidelinesrr}r(hXPull Request Guidelinesrh jubah!jubah!jubah!j-ubeh!j,ubeh!j-ubah!j,ubh5j)r}r(hUh}r(h]h]h]h]h]uh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj )r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameUUrefurih5h]h]h]h]h]Uinternaluh jh]rhXUsagerr}r(hh=h jubah!jubah!jubah!j-ubah!j,ubh>j)r}r(hUh}r(h]h]h]h]h]uh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]r(j )r}r(hUh}r (h]h]h]h]h]uh jh]r j)r }r (hUh}r (U anchornameUUrefurih>h]h]h]h]h]Uinternaluh jh]rhXCreditsrr}r(hhFh j ubah!jubah!jubj)r}r(hUh}r(h]h]h]h]h]uh jh]r(j)r}r(hUh}r(h]h]h]h]h]uh jh]rj )r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r (U anchornameU#development-leadUrefurih>h]h]h]h]h]Uinternaluh jh]r!hXDevelopment Leadr"r#}r$(hXDevelopment Leadh jubah!jubah!jubah!j-ubj)r%}r&(hUh}r'(h]h]h]h]h]uh jh]r(j )r)}r*(hUh}r+(h]h]h]h]h]uh j%h]r,j)r-}r.(hUh}r/(U anchornameU #contributorsUrefurih>h]h]h]h]h]Uinternaluh j)h]r0hX Contributorsr1r2}r3(hX Contributorsh j-ubah!jubah!jubah!j-ubeh!j,ubeh!j-ubah!j,ubhGj)r4}r5(hUh}r6(h]h]h]h]h]uh]r7j)r8}r9(hUh}r:(h]h]h]h]h]uh j4h]r;(j )r<}r=(hUh}r>(h]h]h]h]h]uh j8h]r?j)r@}rA(hUh}rB(U anchornameUUrefurihGh]h]h]h]h]Uinternaluh j<h]rChXcheddarrDrE}rF(hhOh j@ubah!jubah!jubj)rG}rH(hUh}rI(h]h]h]h]h]uh j8h]rJ(j)rK}rL(hUh}rM(h]h]h]h]h]uh jGh]rNj )rO}rP(hUh}rQ(h]h]h]h]h]uh jKh]rRj)rS}rT(hUh}rU(U anchornameU #featuresUrefurihGh]h]h]h]h]Uinternaluh jOh]rVhXFeaturesrWrX}rY(hXFeaturesrZh jSubah!jubah!jubah!j-ubj)r[}r\(hUh}r](h]h]h]h]h]uh jGh]r^j )r_}r`(hUh}ra(h]h]h]h]h]uh j[h]rbj)rc}rd(hUh}re(U anchornameU#configurationUrefurihGh]h]h]h]h]Uinternaluh j_h]rfhX Configurationrgrh}ri(hX Configurationrjh jcubah!jubah!jubah!j-ubj)rk}rl(hUh}rm(h]h]h]h]h]uh jGh]rnj )ro}rp(hUh}rq(h]h]h]h]h]uh jkh]rrj)rs}rt(hUh}ru(U anchornameU#the-local-indexUrefurihGh]h]h]h]h]Uinternaluh joh]rvhXThe Local Indexrwrx}ry(hXThe Local Indexrzh jsubah!jubah!jubah!j-ubj)r{}r|(hUh}r}(h]h]h]h]h]uh jGh]r~j )r}r(hUh}r(h]h]h]h]h]uh j{h]rj)r}r(hUh}r(U anchornameU#the-remote-indexUrefurihGh]h]h]h]h]Uinternaluh jh]rhXThe Remote Indexrr}r(hXThe Remote Indexrh jubah!jubah!jubah!j-ubj)r}r(hUh}r(h]h]h]h]h]uh jGh]rj )r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU#dataUrefurihGh]h]h]h]h]Uinternaluh jh]rhXDatarr}r(hXDatarh jubah!jubah!jubah!j-ubeh!j,ubeh!j-ubah!j,ubhPj)r}r(hUh}r(h]h]h]h]h]uh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]r(j )r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameUUrefurihPh]h]h]h]h]Uinternaluh jh]rhXHistoryrr}r(hhXh jubah!jubah!jubj)r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(h]h]h]h]h]uh jh]rj )r}r(hUh}r(h]h]h]h]h]uh jh]rj)r}r(hUh}r(U anchornameU#id1UrefurihPh]h]h]h]h]Uinternaluh jh]rhX1.0 (2013-11-19)rr}r(hX1.0 (2013-11-19)rh jubah!jubah!jubah!j-ubah!j,ubeh!j-ubah!j,ubuU indexentriesr}r(h ]h#]h,]h5]h>]hG]hP]uUall_docsr}r(h GAԢy>h#GAԢyϤUh,GAԢy|[h5GAԢy+h>GAԢyʊ@hGGAԢyҡhPGAԢy[uUsettingsr}r(Ucloak_email_addressesrUtrim_footnote_reference_spacerU halt_levelrKUsectsubtitle_xformrUembed_stylesheetrU pep_base_urlrUhttp://www.python.org/dev/peps/rUdoctitle_xformrUwarning_streamrcsphinx.util.nodes WarningStream r)r}r(U_rercre _compile rU+\((DEBUG|INFO|WARNING|ERROR|SEVERE)/[0-4]\)rKRrUwarnfuncrNubUenvrhU rfc_base_urlrUhttp://tools.ietf.org/html/rUgettext_compactrUinput_encodingrU utf-8-sigruUfiles_to_rebuildr}r(hh]rh aRrhh]rh aRrhh]rh aRrhh]rh aRrhh]rh aRrhh]rh aRruUtoc_secnumbersr}U_nitpick_ignorerh]Rrub.PK|sC@RJJ(cheddar-latest/.doctrees/authors.doctreecdocutils.nodes document q)q}q(U nametypesq}q(XcreditsqNX contributorsqNXdevelopment leadqNuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hUcreditsqhU contributorsqhUdevelopment-leadquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qX../AUTHORS.rstqq}q bUtagnameq!Usectionq"U attributesq#}q$(Udupnamesq%]Uclassesq&]Ubackrefsq']Uidsq(]q)haUnamesq*]q+hauUlineq,KUdocumentq-hh]q.(cdocutils.nodes title q/)q0}q1(hXCreditsq2hhhhh!Utitleq3h#}q4(h%]h&]h']h(]h*]uh,Kh-hh]q5cdocutils.nodes Text q6XCreditsq7q8}q9(hh2hh0ubaubh)q:}q;(hUhhhhh!h"h#}q<(h%]h&]h']h(]q=hah*]q>hauh,Kh-hh]q?(h/)q@}qA(hXDevelopment LeadqBhh:hhh!h3h#}qC(h%]h&]h']h(]h*]uh,Kh-hh]qDh6XDevelopment LeadqEqF}qG(hhBhh@ubaubcdocutils.nodes bullet_list qH)qI}qJ(hUhh:hhh!U bullet_listqKh#}qL(UbulletqMX*h(]h']h%]h&]h*]uh,Kh-hh]qNcdocutils.nodes list_item qO)qP}qQ(hX*Jesse Myers https://github.com/jessemyers hhIhhh!U list_itemqRh#}qS(h%]h&]h']h(]h*]uh,Nh-hh]qTcdocutils.nodes paragraph qU)qV}qW(hX)Jesse Myers https://github.com/jessemyershhPhhh!U paragraphqXh#}qY(h%]h&]h']h(]h*]uh,Kh]qZ(h6X Jesse Myers q[q\}q](hX Jesse Myers hhVubcdocutils.nodes reference q^)q_}q`(hXhttps://github.com/jessemyersqah#}qb(Urefurihah(]h']h%]h&]h*]uhhVh]qch6Xhttps://github.com/jessemyersqdqe}qf(hUhh_ubah!U referenceqgubeubaubaubeubh)qh}qi(hUhhhhh!h"h#}qj(h%]h&]h']h(]qkhah*]qlhauh,K h-hh]qm(h/)qn}qo(hX Contributorsqphhhhhh!h3h#}qq(h%]h&]h']h(]h*]uh,K h-hh]qrh6X Contributorsqsqt}qu(hhphhnubaubhH)qv}qw(hUhhhhhh!hKh#}qx(hMX*h(]h']h%]h&]h*]uh,K h-hh]qyhO)qz}q{(hX(Luis Morales https://github.com/lacion hhvhX%internal padding after ../AUTHORS.rstq|h!hRh#}q}(h%]h&]h']h(]h*]uh,Nh-hh]q~hU)q}q(hX&Luis Morales https://github.com/lacionqhhzhhh!hXh#}q(h%]h&]h']h(]h*]uh,K h]q(h6X Luis Morales qq}q(hX Luis Morales hhubh^)q}q(hXhttps://github.com/lacionqh#}q(Urefurihh(]h']h%]h&]h*]uhhh]qh6Xhttps://github.com/lacionqq}q(hUhhubah!hgubeubaubaubeubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh-hU current_lineqNUtransform_messagesq]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh3NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqʈUtrim_footnote_reference_spaceqˉUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqωU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqU@/var/build/user_builds/cheddar/checkouts/latest/docs/authors.rstqUgettext_compactqވU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqKU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hhhhhhh:uUsubstitution_namesq}qh!h-h#}q(h%]h(]h']UsourcehX@/var/build/user_builds/cheddar/checkouts/latest/docs/authors.rstqq}qbh&]h*]uU footnotesq]qUrefidsq}qub.PK|sC# &cheddar-latest/.doctrees/usage.doctreecdocutils.nodes document q)q}q(U nametypesq}qXusageqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUusageqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qX>/var/build/user_builds/cheddar/checkouts/latest/docs/usage.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*cdocutils.nodes title q+)q,}q-(hXUsageq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2XUsageq3q4}q5(hh.hh,ubaubaubahUU transformerq6NU footnote_refsq7}q8Urefnamesq9}q:Usymbol_footnotesq;]qUsymbol_footnote_refsq?]q@U citationsqA]qBh)hU current_lineqCNUtransform_messagesqD]qEUreporterqFNUid_startqGKU autofootnotesqH]qIU citation_refsqJ}qKUindirect_targetsqL]qMUsettingsqN(cdocutils.frontend Values qOoqP}qQ(Ufootnote_backlinksqRKUrecord_dependenciesqSNU rfc_base_urlqTUhttp://tools.ietf.org/html/qUU tracebackqVUpep_referencesqWNUstrip_commentsqXNU toc_backlinksqYUentryqZU language_codeq[Uenq\U datestampq]NU report_levelq^KU _destinationq_NU halt_levelq`KU strip_classesqaNh/NUerror_encoding_error_handlerqbUbackslashreplaceqcUdebugqdNUembed_stylesheetqeUoutput_encoding_error_handlerqfUstrictqgU sectnum_xformqhKUdump_transformsqiNU docinfo_xformqjKUwarning_streamqkNUpep_file_url_templateqlUpep-%04dqmUexit_status_levelqnKUconfigqoNUstrict_visitorqpNUcloak_email_addressesqqUtrim_footnote_reference_spaceqrUenvqsNUdump_pseudo_xmlqtNUexpose_internalsquNUsectsubtitle_xformqvU source_linkqwNUrfc_referencesqxNUoutput_encodingqyUutf-8qzU source_urlq{NUinput_encodingq|U utf-8-sigq}U_disable_configq~NU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqU>/var/build/user_builds/cheddar/checkouts/latest/docs/usage.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhgUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqKU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh)h}q(h!]h$]h#]Usourcehh"]h&]uU footnotesq]qUrefidsq}qub.PK|sCCs  &cheddar-latest/.doctrees/index.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xindices and tablesqNX#welcome to cheddar's documentation!qNuUsubstitution_defsq}q Uparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startqKUnameidsq}q(hUindices-and-tablesqhU"welcome-to-cheddar-s-documentationquUchildrenq]q(cdocutils.nodes comment q)q}q(U rawsourceqXcomplexity documentation master file, created by sphinx-quickstart on Tue Jul 9 22:26:36 2013. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive.UparentqhUsourceqcdocutils.nodes reprunicode qX>/var/build/user_builds/cheddar/checkouts/latest/docs/index.rstqq}qbUtagnameqUcommentq U attributesq!}q"(U xml:spaceq#Upreserveq$Uidsq%]Ubackrefsq&]Udupnamesq']Uclassesq(]Unamesq)]uUlineq*KUdocumentq+hh]q,cdocutils.nodes Text q-Xcomplexity documentation master file, created by sphinx-quickstart on Tue Jul 9 22:26:36 2013. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive.q.q/}q0(hUhhubaubcdocutils.nodes section q1)q2}q3(hUhhhhhUsectionq4h!}q5(h']h(]h&]h%]q6hah)]q7hauh*Kh+hh]q8(cdocutils.nodes title q9)q:}q;(hX#Welcome to cheddar's documentation!q(h']h(]h&]h%]h)]uh*Kh+hh]q?h-X#Welcome to cheddar's documentation!q@qA}qB(hh/var/build/user_builds/cheddar/checkouts/latest/docs/index.rstr"Ugettext_compactr#U generatorr$NUdump_internalsr%NU smart_quotesr&U pep_base_urlr'Uhttp://www.python.org/dev/peps/r(Usyntax_highlightr)Ulongr*Uinput_encoding_error_handlerr+jUauto_id_prefixr,Uidr-Udoctitle_xformr.Ustrip_elements_with_classesr/NU _config_filesr0]Ufile_insertion_enabledr1KU raw_enabledr2KU dump_settingsr3NubUsymbol_footnote_startr4KUidsr5}r6(hh2hhpuUsubstitution_namesr7}r8hh+h!}r9(h']h%]h&]Usourcehh(]h)]uU footnotesr:]r;Urefidsr<}r=ub.PK|sC*& & (cheddar-latest/.doctrees/history.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X1.0 (2013-11-19)qNXhistoryqNuUsubstitution_defsq}q Uparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startqKUnameidsq}q(hUid1qhUhistoryquUchildrenq]q(cdocutils.nodes comment q)q}q(U rawsourceqX :changelog:UparentqhUsourceqcdocutils.nodes reprunicode qX../HISTORY.rstqq}qbUtagnameqUcommentq U attributesq!}q"(U xml:spaceq#Upreserveq$Uidsq%]Ubackrefsq&]Udupnamesq']Uclassesq(]Unamesq)]uUlineq*KUdocumentq+hh]q,cdocutils.nodes Text q-X :changelog:q.q/}q0(hUhhubaubcdocutils.nodes section q1)q2}q3(hUhhhhhUsectionq4h!}q5(h']h(]h&]h%]q6hah)]q7hauh*Kh+hh]q8(cdocutils.nodes title q9)q:}q;(hXHistoryq(h']h(]h&]h%]h)]uh*Kh+hh]q?h-XHistoryq@qA}qB(hhz(BpipPc |IENDB`PK|sCkl\\#cheddar-latest/_static/pygments.css.highlight .hll { background-color: #ffffcc } .highlight { background: #eeffcc; } .highlight .c { color: #408090; font-style: italic } /* Comment */ .highlight .err { border: 1px solid #FF0000 } /* Error */ .highlight .k { color: #007020; font-weight: bold } /* Keyword */ .highlight .o { color: #666666 } /* Operator */ .highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ .highlight .cp { color: #007020 } /* Comment.Preproc */ .highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ .highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #A00000 } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #FF0000 } /* Generic.Error */ .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ .highlight .gi { color: #00A000 } /* Generic.Inserted */ .highlight .go { color: #333333 } /* Generic.Output */ .highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ .highlight .gt { color: #0044DD } /* Generic.Traceback */ .highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #007020 } /* Keyword.Pseudo */ .highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #902000 } /* Keyword.Type */ .highlight .m { color: #208050 } /* Literal.Number */ .highlight .s { color: #4070a0 } /* Literal.String */ .highlight .na { color: #4070a0 } /* Name.Attribute */ .highlight .nb { color: #007020 } /* Name.Builtin */ .highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ .highlight .no { color: #60add5 } /* Name.Constant */ .highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ .highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ .highlight .ne { color: #007020 } /* Name.Exception */ .highlight .nf { color: #06287e } /* Name.Function */ .highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ .highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ .highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #bb60d5 } /* Name.Variable */ .highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mf { color: #208050 } /* Literal.Number.Float */ .highlight .mh { color: #208050 } /* Literal.Number.Hex */ .highlight .mi { color: #208050 } /* Literal.Number.Integer */ .highlight .mo { color: #208050 } /* Literal.Number.Oct */ .highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ .highlight .sc { color: #4070a0 } /* Literal.String.Char */ .highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ .highlight .s2 { color: #4070a0 } /* Literal.String.Double */ .highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ .highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ .highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ .highlight .sx { color: #c65d09 } /* Literal.String.Other */ .highlight .sr { color: #235388 } /* Literal.String.Regex */ .highlight .s1 { color: #4070a0 } /* Literal.String.Single */ .highlight .ss { color: #517918 } /* Literal.String.Symbol */ .highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ .highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ .highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ .highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ .highlight .il { color: #208050 } /* Literal.Number.Integer.Long */PK[CDUkkcheddar-latest/_static/up.pngPNG  IHDRasRGBbKGDC pHYs B(xtIME!.<̓EIDAT8͓NABP\EG{%<|xc  cr6@t;b$;3&)h1!﫳Hzz@=)p 3۵e2/ߴ ( %^ND^ }3H1DoǪISFұ?, G`{v^X[b]&HC3{:sO& ?,[eL#IENDB`PKm_C"0"cheddar-latest/_static/default.css/* * default.css_t * ~~~~~~~~~~~~~ * * Sphinx stylesheet -- default theme. * * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @import url("basic.css"); /* -- page layout ----------------------------------------------------------- */ body { font-family: sans-serif; font-size: 100%; background-color: #11303d; color: #000; margin: 0; padding: 0; } div.document { background-color: #1c4e63; } div.documentwrapper { float: left; width: 100%; } div.bodywrapper { margin: 0 0 0 230px; } div.body { background-color: #ffffff; color: #000000; padding: 0 20px 30px 20px; } div.footer { color: #ffffff; width: 100%; padding: 9px 0 9px 0; text-align: center; font-size: 75%; } div.footer a { color: #ffffff; text-decoration: underline; } div.related { background-color: #133f52; line-height: 30px; color: #ffffff; } div.related a { color: #ffffff; } div.sphinxsidebar { } div.sphinxsidebar h3 { font-family: 'Trebuchet MS', sans-serif; color: #ffffff; font-size: 1.4em; font-weight: normal; margin: 0; padding: 0; } div.sphinxsidebar h3 a { color: #ffffff; } div.sphinxsidebar h4 { font-family: 'Trebuchet MS', sans-serif; color: #ffffff; font-size: 1.3em; font-weight: normal; margin: 5px 0 0 0; padding: 0; } div.sphinxsidebar p { color: #ffffff; } div.sphinxsidebar p.topless { margin: 5px 10px 10px 10px; } div.sphinxsidebar ul { margin: 10px; padding: 0; color: #ffffff; } div.sphinxsidebar a { color: #98dbcc; } div.sphinxsidebar input { border: 1px solid #98dbcc; font-family: sans-serif; font-size: 1em; } /* -- hyperlink styles ------------------------------------------------------ */ a { color: #355f7c; text-decoration: none; } a:visited { color: #355f7c; text-decoration: none; } a:hover { text-decoration: underline; } /* -- body styles ----------------------------------------------------------- */ div.body h1, div.body h2, div.body h3, div.body h4, div.body h5, div.body h6 { font-family: 'Trebuchet MS', sans-serif; background-color: #f2f2f2; font-weight: normal; color: #20435c; border-bottom: 1px solid #ccc; margin: 20px -20px 10px -20px; padding: 3px 0 3px 10px; } div.body h1 { margin-top: 0; font-size: 200%; } div.body h2 { font-size: 160%; } div.body h3 { font-size: 140%; } div.body h4 { font-size: 120%; } div.body h5 { font-size: 110%; } div.body h6 { font-size: 100%; } a.headerlink { color: #c60f0f; font-size: 0.8em; padding: 0 4px 0 4px; text-decoration: none; } a.headerlink:hover { background-color: #c60f0f; color: white; } div.body p, div.body dd, div.body li { text-align: justify; line-height: 130%; } div.admonition p.admonition-title + p { display: inline; } div.admonition p { margin-bottom: 5px; } div.admonition pre { margin-bottom: 5px; } div.admonition ul, div.admonition ol { margin-bottom: 5px; } div.note { background-color: #eee; border: 1px solid #ccc; } div.seealso { background-color: #ffc; border: 1px solid #ff6; } div.topic { background-color: #eee; } div.warning { background-color: #ffe4e4; border: 1px solid #f66; } p.admonition-title { display: inline; } p.admonition-title:after { content: ":"; } pre { padding: 5px; background-color: #eeffcc; color: #333333; line-height: 120%; border: 1px solid #ac9; border-left: none; border-right: none; } tt { background-color: #ecf0f3; padding: 0 1px 0 1px; font-size: 0.95em; } th { background-color: #ede; } .warning tt { background: #efc2c2; } .note tt { background: #d6d6d6; } .viewcode-back { font-family: sans-serif; } div.viewcode-block:target { background-color: #f4debf; border-top: 1px solid #ac9; border-bottom: 1px solid #ac9; }PKBFCVR>>cheddar-latest/_static/rtd.css/* * rtd.css * ~~~~~~~~~~~~~~~ * * Sphinx stylesheet -- sphinxdoc theme. Originally created by * Armin Ronacher for Werkzeug. * * Customized for ReadTheDocs by Eric Pierce & Eric Holscher * * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ /* RTD colors * light blue: #e8ecef * medium blue: #8ca1af * dark blue: #465158 * dark grey: #444444 * * white hover: #d1d9df; * medium blue hover: #697983; * green highlight: #8ecc4c * light blue (project bar): #e8ecef */ @import url("basic.css"); /* PAGE LAYOUT -------------------------------------------------------------- */ body { font: 100%/1.5 "ff-meta-web-pro-1","ff-meta-web-pro-2",Arial,"Helvetica Neue",sans-serif; text-align: center; color: black; background-color: #465158; padding: 0; margin: 0; } div.document { text-align: left; background-color: #e8ecef; } div.bodywrapper { background-color: #ffffff; border-left: 1px solid #ccc; border-bottom: 1px solid #ccc; margin: 0 0 0 16em; } div.body { margin: 0; padding: 0.5em 1.3em; min-width: 20em; } div.related { font-size: 1em; background-color: #465158; } div.documentwrapper { float: left; width: 100%; background-color: #e8ecef; } /* HEADINGS --------------------------------------------------------------- */ h1 { margin: 0; padding: 0.7em 0 0.3em 0; font-size: 1.5em; line-height: 1.15; color: #111; clear: both; } h2 { margin: 2em 0 0.2em 0; font-size: 1.35em; padding: 0; color: #465158; } h3 { margin: 1em 0 -0.3em 0; font-size: 1.2em; color: #6c818f; } div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a { color: black; } h1 a.anchor, h2 a.anchor, h3 a.anchor, h4 a.anchor, h5 a.anchor, h6 a.anchor { display: none; margin: 0 0 0 0.3em; padding: 0 0.2em 0 0.2em; color: #aaa !important; } h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor { display: inline; } h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover, h5 a.anchor:hover, h6 a.anchor:hover { color: #777; background-color: #eee; } /* LINKS ------------------------------------------------------------------ */ /* Normal links get a pseudo-underline */ a { color: #444; text-decoration: none; border-bottom: 1px solid #ccc; } /* Links in sidebar, TOC, index trees and tables have no underline */ .sphinxsidebar a, .toctree-wrapper a, .indextable a, #indices-and-tables a { color: #444; text-decoration: none; /* border-bottom: none; */ } /* Search box size */ div.sphinxsidebar #searchbox input[type="submit"] { width: 50px; } /* Most links get an underline-effect when hovered */ a:hover, div.toctree-wrapper a:hover, .indextable a:hover, #indices-and-tables a:hover { color: #111; text-decoration: none; border-bottom: 1px solid #111; } /* Footer links */ div.footer a { color: #86989B; text-decoration: none; border: none; } div.footer a:hover { color: #a6b8bb; text-decoration: underline; border: none; } /* Permalink anchor (subtle grey with a red hover) */ div.body a.headerlink { color: #ccc; font-size: 1em; margin-left: 6px; padding: 0 4px 0 4px; text-decoration: none; border: none; } div.body a.headerlink:hover { color: #c60f0f; border: none; } /* NAVIGATION BAR --------------------------------------------------------- */ div.related ul { height: 2.5em; } div.related ul li { margin: 0; padding: 0.65em 0; float: left; display: block; color: white; /* For the >> separators */ font-size: 0.8em; } div.related ul li.right { float: right; margin-right: 5px; color: transparent; /* Hide the | separators */ } /* "Breadcrumb" links in nav bar */ div.related ul li a { order: none; background-color: inherit; font-weight: bold; margin: 6px 0 6px 4px; line-height: 1.75em; color: #ffffff; padding: 0.4em 0.8em; border: none; border-radius: 3px; } /* previous / next / modules / index links look more like buttons */ div.related ul li.right a { margin: 0.375em 0; background-color: #697983; text-shadow: 0 1px rgba(0, 0, 0, 0.5); border-radius: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; } /* All navbar links light up as buttons when hovered */ div.related ul li a:hover { background-color: #8ca1af; color: #ffffff; text-decoration: none; border-radius: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; } /* Take extra precautions for tt within links */ a tt, div.related ul li a tt { background: inherit !important; color: inherit !important; } /* SIDEBAR ---------------------------------------------------------------- */ div.sphinxsidebarwrapper { padding: 0; } div.sphinxsidebar { margin: 0; margin-left: -100%; float: left; top: 3em; left: 0; padding: 0 1em; width: 14em; font-size: 1em; text-align: left; background-color: #e8ecef; } div.sphinxsidebar img { max-width: 12em; } div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p.logo { margin: 1.2em 0 0.3em 0; font-size: 1em; padding: 0; color: #222222; font-family: "ff-meta-web-pro-1", "ff-meta-web-pro-2", "Arial", "Helvetica Neue", sans-serif; } div.sphinxsidebar h3 a { color: #444444; } div.sphinxsidebar ul, div.sphinxsidebar p { margin-top: 0; padding-left: 0; line-height: 130%; background-color: #e8ecef; } /* No bullets for nested lists, but a little extra indentation */ div.sphinxsidebar ul ul { list-style-type: none; margin-left: 1.5em; padding: 0; } /* A little top/bottom padding to prevent adjacent links' borders * from overlapping each other */ div.sphinxsidebar ul li { padding: 1px 0; } /* A little left-padding to make these align with the ULs */ div.sphinxsidebar p.topless { padding-left: 0 0 0 1em; } /* Make these into hidden one-liners */ div.sphinxsidebar ul li, div.sphinxsidebar p.topless { white-space: nowrap; overflow: hidden; } /* ...which become visible when hovered */ div.sphinxsidebar ul li:hover, div.sphinxsidebar p.topless:hover { overflow: visible; } /* Search text box and "Go" button */ #searchbox { margin-top: 2em; margin-bottom: 1em; background: #ddd; padding: 0.5em; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; } #searchbox h3 { margin-top: 0; } /* Make search box and button abut and have a border */ input, div.sphinxsidebar input { border: 1px solid #999; float: left; } /* Search textbox */ input[type="text"] { margin: 0; padding: 0 3px; height: 20px; width: 144px; border-top-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-topleft: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-top-left-radius: 3px; -webkit-border-bottom-left-radius: 3px; } /* Search button */ input[type="submit"] { margin: 0 0 0 -1px; /* -1px prevents a double-border with textbox */ height: 22px; color: #444; background-color: #e8ecef; padding: 1px 4px; font-weight: bold; border-top-right-radius: 3px; border-bottom-right-radius: 3px; -moz-border-radius-topright: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-top-right-radius: 3px; -webkit-border-bottom-right-radius: 3px; } input[type="submit"]:hover { color: #ffffff; background-color: #8ecc4c; } div.sphinxsidebar p.searchtip { clear: both; padding: 0.5em 0 0 0; background: #ddd; color: #666; font-size: 0.9em; } /* Sidebar links are unusual */ div.sphinxsidebar li a, div.sphinxsidebar p a { background: #e8ecef; /* In case links overlap main content */ border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border: 1px solid transparent; /* To prevent things jumping around on hover */ padding: 0 5px 0 5px; } div.sphinxsidebar li a:hover, div.sphinxsidebar p a:hover { color: #111; text-decoration: none; border: 1px solid #888; } div.sphinxsidebar p.logo a { border: 0; } /* Tweak any link appearing in a heading */ div.sphinxsidebar h3 a { } /* OTHER STUFF ------------------------------------------------------------ */ cite, code, tt { font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; font-size: 0.95em; letter-spacing: 0.01em; } tt { background-color: #f2f2f2; color: #444; } tt.descname, tt.descclassname, tt.xref { border: 0; } hr { border: 1px solid #abc; margin: 2em; } pre, #_fontwidthtest { font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; margin: 1em 2em; font-size: 0.95em; letter-spacing: 0.015em; line-height: 120%; padding: 0.5em; border: 1px solid #ccc; background-color: #eee; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; } pre a { color: inherit; text-decoration: underline; } td.linenos pre { margin: 1em 0em; } td.code pre { margin: 1em 0em; } div.quotebar { background-color: #f8f8f8; max-width: 250px; float: right; padding: 2px 7px; border: 1px solid #ccc; } div.topic { background-color: #f8f8f8; } table { border-collapse: collapse; margin: 0 -0.5em 0 -0.5em; } table td, table th { padding: 0.2em 0.5em 0.2em 0.5em; } /* ADMONITIONS AND WARNINGS ------------------------------------------------- */ /* Shared by admonitions, warnings and sidebars */ div.admonition, div.warning, div.sidebar { font-size: 0.9em; margin: 2em; padding: 0; /* border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; */ } div.admonition p, div.warning p, div.sidebar p { margin: 0.5em 1em 0.5em 1em; padding: 0; } div.admonition pre, div.warning pre, div.sidebar pre { margin: 0.4em 1em 0.4em 1em; } div.admonition p.admonition-title, div.warning p.admonition-title, div.sidebar p.sidebar-title { margin: 0; padding: 0.1em 0 0.1em 0.5em; color: white; font-weight: bold; font-size: 1.1em; text-shadow: 0 1px rgba(0, 0, 0, 0.5); } div.admonition ul, div.admonition ol, div.warning ul, div.warning ol, div.sidebar ul, div.sidebar ol { margin: 0.1em 0.5em 0.5em 3em; padding: 0; } /* Admonitions and sidebars only */ div.admonition, div.sidebar { border: 1px solid #609060; background-color: #e9ffe9; } div.admonition p.admonition-title, div.sidebar p.sidebar-title { background-color: #70A070; border-bottom: 1px solid #609060; } /* Warnings only */ div.warning { border: 1px solid #900000; background-color: #ffe9e9; } div.warning p.admonition-title { background-color: #b04040; border-bottom: 1px solid #900000; } /* Sidebars only */ div.sidebar { max-width: 30%; } div.versioninfo { margin: 1em 0 0 0; border: 1px solid #ccc; background-color: #DDEAF0; padding: 8px; line-height: 1.3em; font-size: 0.9em; } .viewcode-back { font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', 'Verdana', sans-serif; } div.viewcode-block:target { background-color: #f4debf; border-top: 1px solid #ac9; border-bottom: 1px solid #ac9; } dl { margin: 1em 0 2.5em 0; } dl dt { font-style: italic; } dl dd { color: rgb(68, 68, 68); font-size: 0.95em; } /* Highlight target when you click an internal link */ dt:target { background: #ffe080; } /* Don't highlight whole divs */ div.highlight { background: transparent; } /* But do highlight spans (so search results can be highlighted) */ span.highlight { background: #ffe080; } div.footer { background-color: #465158; color: #eeeeee; padding: 0 2em 2em 2em; clear: both; font-size: 0.8em; text-align: center; } p { margin: 0.8em 0 0.5em 0; } .section p img.math { margin: 0; } .section p img { margin: 1em 2em; } table.docutils td, table.docutils th { padding: 1px 8px 1px 5px; } /* MOBILE LAYOUT -------------------------------------------------------------- */ @media screen and (max-width: 600px) { h1, h2, h3, h4, h5 { position: relative; } ul { padding-left: 1.25em; } div.bodywrapper a.headerlink, #indices-and-tables h1 a { color: #e6e6e6; font-size: 80%; float: right; line-height: 1.8; position: absolute; right: -0.7em; visibility: inherit; } div.bodywrapper h1 a.headerlink, #indices-and-tables h1 a { line-height: 1.5; } pre { font-size: 0.7em; overflow: auto; word-wrap: break-word; white-space: pre-wrap; } div.related ul { height: 2.5em; padding: 0; text-align: left; } div.related ul li { clear: both; color: #465158; padding: 0.2em 0; } div.related ul li:last-child { border-bottom: 1px dotted #8ca1af; padding-bottom: 0.4em; margin-bottom: 1em; width: 100%; } div.related ul li a { color: #465158; padding-right: 0; } div.related ul li a:hover { background: inherit; color: inherit; } div.related ul li.right { clear: none; padding: 0.65em 0; margin-bottom: 0.5em; } div.related ul li.right a { color: #fff; padding-right: 0.8em; } div.related ul li.right a:hover { background-color: #8ca1af; } div.body { clear: both; min-width: 0; word-wrap: break-word; } div.bodywrapper { margin: 0 0 0 0; } div.sphinxsidebar { float: none; margin: 0; width: auto; } div.sphinxsidebar input[type="text"] { height: 2em; line-height: 2em; width: 70%; } div.sphinxsidebar input[type="submit"] { height: 2em; margin-left: 0.5em; width: 20%; } div.sphinxsidebar p.searchtip { background: inherit; margin-bottom: 1em; } div.sphinxsidebar ul li, div.sphinxsidebar p.topless { white-space: normal; } .bodywrapper img { display: block; margin-left: auto; margin-right: auto; max-width: 100%; } div.documentwrapper { float: none; } div.admonition, div.warning, pre, blockquote { margin-left: 0em; margin-right: 0em; } .body p img { margin: 0; } #searchbox { background: transparent; } .related:not(:first-child) li { display: none; } .related:not(:first-child) li.right { display: block; } div.footer { padding: 1em; } .rtd_doc_footer .rtd-badge { float: none; margin: 1em auto; position: static; } .rtd_doc_footer .rtd-badge.revsys-inline { margin-right: auto; margin-bottom: 2em; } table.indextable { display: block; width: auto; } .indextable tr { display: block; } .indextable td { display: block; padding: 0; width: auto !important; } .indextable td dt { margin: 1em 0; } ul.search { margin-left: 0.25em; } ul.search li div.context { font-size: 90%; line-height: 1.1; margin-bottom: 1; margin-left: 0; } } PK[C2,~~!~!$cheddar-latest/_static/underscore.js// 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}})(); PK|sCq)cheddar-latest/_static/readthedocs-ext.js // Intenionally left blank PK[C<>&cheddar-latest/_static/ajax-loader.gifGIF89aU|NU|l!Created with ajaxload.info! ! NETSCAPE2.0,30Ikc:Nf E1º.`q-[9ݦ9 JkH! ,4N!  DqBQT`1 `LE[|ua C%$*! ,62#+AȐ̔V/cNIBap ̳ƨ+Y2d! ,3b%+2V_ ! 1DaFbR]=08,Ȥr9L! ,2r'+JdL &v`\bThYB)@<&,ȤR! ,3 9tڞ0!.BW1  sa50 m)J! ,2 ٜU]qp`a4AF0` @1Α! ,20IeBԜ) q10ʰPaVڥ ub[;PK[CPu u "cheddar-latest/_static/comment.pngPNG  IHDRa OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-bKGD pHYs  tIME 1;VIDAT8ukU?sg4h`G1 RQܸp%Bn"bЍXJ .4V iZ##T;m!4bP~7r>ιbwc;m;oӍAΆ ζZ^/|s{;yR=9(rtVoG1w#_ө{*E&!(LVuoᲵ‘D PG4 :&~*ݳreu: S-,U^E&JY[P!RB ŖޞʖR@_ȐdBfNvHf"2T]R j'B1ddAak/DIJD D2H&L`&L $Ex,6|~_\P $MH`I=@Z||ttvgcЕWTZ'3rje"ܵx9W> mb|byfFRx{w%DZC$wdցHmWnta(M<~;9]C/_;Տ#}o`zSڷ_>:;x컓?yݩ|}~wam-/7=0S5RP"*֯ IENDB`PK[Chkkcheddar-latest/_static/down.pngPNG  IHDRasRGBbKGDC pHYs B(xtIME"U{IDAT8ҡNCAJ, ++@4>/U^,~T&3M^^^PM6ٹs*RJa)eG*W<"F Fg78G>q OIp:sAj5GنyD^+yU:p_%G@D|aOs(yM,"msx:.b@D|`Vٟ۲иeKſ/G!IENDB`PK[C+0cheddar-latest/_static/file.pngPNG  IHDRabKGD pHYs  tIME  )TIDAT8˭J@Ir('[ "&xYZ X0!i|_@tD] #xjv YNaEi(əy@D&`6PZk$)5%"z.NA#Aba`Vs_3c,2mj [klvy|!Iմy;v "߮a?A7`c^nk?Bg}TЙD# "RD1yER*6MJ3K_Ut8F~IENDB`PK[C[{gtt%cheddar-latest/_static/up-pressed.pngPNG  IHDRasRGBbKGDC pHYs B(xtIME ,ZeIDAT8͓jA*WKk-,By@- و/`cXYh!6jf GrOlXvvfk2!p!GOOԲ &zf 6|M~%`]* ΛM]K ZĆ1Er%ȶcm1`= 0 && !jQuery(node.parentNode).hasClass(className)) { var span = document.createElement("span"); span.className = className; span.appendChild(document.createTextNode(val.substr(pos, text.length))); node.parentNode.insertBefore(span, node.parentNode.insertBefore( document.createTextNode(val.substr(pos + text.length)), node.nextSibling)); node.nodeValue = val.substr(0, pos); } } else if (!jQuery(node).is("button, select, textarea")) { jQuery.each(node.childNodes, function() { highlight(this); }); } } return this.each(function() { highlight(this); }); }; /** * Small JavaScript module for the documentation. */ var Documentation = { init : function() { this.fixFirefoxAnchorBug(); this.highlightSearchWords(); this.initIndexTable(); }, /** * i18n support */ TRANSLATIONS : {}, PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, LOCALE : 'unknown', // gettext and ngettext don't access this so that the functions // can safely bound to a different name (_ = Documentation.gettext) gettext : function(string) { var translated = Documentation.TRANSLATIONS[string]; if (typeof translated == 'undefined') return string; return (typeof translated == 'string') ? translated : translated[0]; }, ngettext : function(singular, plural, n) { var translated = Documentation.TRANSLATIONS[singular]; if (typeof translated == 'undefined') return (n == 1) ? singular : plural; return translated[Documentation.PLURALEXPR(n)]; }, addTranslations : function(catalog) { for (var key in catalog.messages) this.TRANSLATIONS[key] = catalog.messages[key]; this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); this.LOCALE = catalog.locale; }, /** * add context elements like header anchor links */ addContextElements : function() { $('div[id] > :header:first').each(function() { $('\u00B6'). attr('href', '#' + this.id). attr('title', _('Permalink to this headline')). appendTo(this); }); $('dt[id]').each(function() { $('\u00B6'). attr('href', '#' + this.id). attr('title', _('Permalink to this definition')). appendTo(this); }); }, /** * workaround a firefox stupidity */ fixFirefoxAnchorBug : function() { if (document.location.hash && $.browser.mozilla) window.setTimeout(function() { document.location.href += ''; }, 10); }, /** * highlight the search words provided in the url in the text */ highlightSearchWords : function() { var params = $.getQueryParameters(); var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; if (terms.length) { var body = $('div.body'); window.setTimeout(function() { $.each(terms, function() { body.highlightText(this.toLowerCase(), 'highlighted'); }); }, 10); $('') .appendTo($('#searchbox')); } }, /** * init the domain index toggle buttons */ initIndexTable : function() { var togglers = $('img.toggler').click(function() { var src = $(this).attr('src'); var idnum = $(this).attr('id').substr(7); $('tr.cg-' + idnum).toggle(); if (src.substr(-9) == 'minus.png') $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); else $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); }).css('display', ''); if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { togglers.click(); } }, /** * helper function to hide the search marks again */ hideSearchWords : function() { $('#searchbox .highlight-link').fadeOut(300); $('span.highlighted').removeClass('highlighted'); }, /** * make the url absolute */ makeURL : function(relativeURL) { return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; }, /** * get the current relative url */ getCurrentURL : function() { var path = document.location.pathname; var parts = path.split(/\//); $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { if (this == '..') parts.pop(); }); var url = parts.join('/'); return path.substring(url.lastIndexOf('/') + 1, path.length - 1); } }; // quick alias for translations _ = Documentation.gettext; $(document).ready(function() { Documentation.init(); }); PK[Cl8!cheddar-latest/_static/sidebar.js/* * sidebar.js * ~~~~~~~~~~ * * This script makes the Sphinx sidebar collapsible. * * .sphinxsidebar contains .sphinxsidebarwrapper. This script adds * in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton * used to collapse and expand the sidebar. * * When the sidebar is collapsed the .sphinxsidebarwrapper is hidden * and the width of the sidebar and the margin-left of the document * are decreased. When the sidebar is expanded the opposite happens. * This script saves a per-browser/per-session cookie used to * remember the position of the sidebar among the pages. * Once the browser is closed the cookie is deleted and the position * reset to the default (expanded). * * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ $(function() { // global elements used by the functions. // the 'sidebarbutton' element is defined as global after its // creation, in the add_sidebar_button function var bodywrapper = $('.bodywrapper'); var sidebar = $('.sphinxsidebar'); var sidebarwrapper = $('.sphinxsidebarwrapper'); // for some reason, the document has no sidebar; do not run into errors if (!sidebar.length) return; // original margin-left of the bodywrapper and width of the sidebar // with the sidebar expanded var bw_margin_expanded = bodywrapper.css('margin-left'); var ssb_width_expanded = sidebar.width(); // margin-left of the bodywrapper and width of the sidebar // with the sidebar collapsed var bw_margin_collapsed = '.8em'; var ssb_width_collapsed = '.8em'; // colors used by the current theme var dark_color = $('.related').css('background-color'); var light_color = $('.document').css('background-color'); function sidebar_is_collapsed() { return sidebarwrapper.is(':not(:visible)'); } function toggle_sidebar() { if (sidebar_is_collapsed()) expand_sidebar(); else collapse_sidebar(); } function collapse_sidebar() { sidebarwrapper.hide(); sidebar.css('width', ssb_width_collapsed); bodywrapper.css('margin-left', bw_margin_collapsed); sidebarbutton.css({ 'margin-left': '0', 'height': bodywrapper.height() }); sidebarbutton.find('span').text('»'); sidebarbutton.attr('title', _('Expand sidebar')); document.cookie = 'sidebar=collapsed'; } function expand_sidebar() { bodywrapper.css('margin-left', bw_margin_expanded); sidebar.css('width', ssb_width_expanded); sidebarwrapper.show(); sidebarbutton.css({ 'margin-left': ssb_width_expanded-12, 'height': bodywrapper.height() }); sidebarbutton.find('span').text('«'); sidebarbutton.attr('title', _('Collapse sidebar')); document.cookie = 'sidebar=expanded'; } function add_sidebar_button() { sidebarwrapper.css({ 'float': 'left', 'margin-right': '0', 'width': ssb_width_expanded - 28 }); // create the button sidebar.append( '
«
' ); var sidebarbutton = $('#sidebarbutton'); light_color = sidebarbutton.css('background-color'); // find the height of the viewport to center the '<<' in the page var viewport_height; if (window.innerHeight) viewport_height = window.innerHeight; else viewport_height = $(window).height(); sidebarbutton.find('span').css({ 'display': 'block', 'margin-top': (viewport_height - sidebar.position().top - 20) / 2 }); sidebarbutton.click(toggle_sidebar); sidebarbutton.attr('title', _('Collapse sidebar')); sidebarbutton.css({ 'color': '#FFFFFF', 'border-left': '1px solid ' + dark_color, 'font-size': '1.2em', 'cursor': 'pointer', 'height': bodywrapper.height(), 'padding-top': '1px', 'margin-left': ssb_width_expanded - 12 }); sidebarbutton.hover( function () { $(this).css('background-color', dark_color); }, function () { $(this).css('background-color', light_color); } ); } function set_position_from_cookie() { if (!document.cookie) return; var items = document.cookie.split(';'); for(var k=0; k>>%cheddar-latest/_static/searchtools.js/* * searchtools.js_t * ~~~~~~~~~~~~~~~~ * * Sphinx JavaScript utilties for the full-text search. * * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ /** * helper function to return a node containing the * search summary for a given text. keywords is a list * of stemmed words, hlwords is the list of normal, unstemmed * words. the first one is used to find the occurance, the * latter for highlighting it. */ jQuery.makeSearchSummary = function(text, keywords, hlwords) { var textLower = text.toLowerCase(); var start = 0; $.each(keywords, function() { var i = textLower.indexOf(this.toLowerCase()); if (i > -1) start = i; }); start = Math.max(start - 120, 0); var excerpt = ((start > 0) ? '...' : '') + $.trim(text.substr(start, 240)) + ((start + 240 - text.length) ? '...' : ''); var rv = $('
').text(excerpt); $.each(hlwords, function() { rv = rv.highlightText(this, 'highlighted'); }); return rv; } /** * Porter Stemmer */ var Stemmer = function() { var step2list = { ational: 'ate', tional: 'tion', enci: 'ence', anci: 'ance', izer: 'ize', bli: 'ble', alli: 'al', entli: 'ent', eli: 'e', ousli: 'ous', ization: 'ize', ation: 'ate', ator: 'ate', alism: 'al', iveness: 'ive', fulness: 'ful', ousness: 'ous', aliti: 'al', iviti: 'ive', biliti: 'ble', logi: 'log' }; var step3list = { icate: 'ic', ative: '', alize: 'al', iciti: 'ic', ical: 'ic', ful: '', ness: '' }; var c = "[^aeiou]"; // consonant var v = "[aeiouy]"; // vowel var C = c + "[^aeiouy]*"; // consonant sequence var V = v + "[aeiou]*"; // vowel sequence var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 var s_v = "^(" + C + ")?" + v; // vowel in stem this.stemWord = function (w) { var stem; var suffix; var firstch; var origword = w; if (w.length < 3) return w; var re; var re2; var re3; var re4; firstch = w.substr(0,1); if (firstch == "y") w = firstch.toUpperCase() + w.substr(1); // Step 1a re = /^(.+?)(ss|i)es$/; re2 = /^(.+?)([^s])s$/; if (re.test(w)) w = w.replace(re,"$1$2"); else if (re2.test(w)) w = w.replace(re2,"$1$2"); // Step 1b re = /^(.+?)eed$/; re2 = /^(.+?)(ed|ing)$/; if (re.test(w)) { var fp = re.exec(w); re = new RegExp(mgr0); if (re.test(fp[1])) { re = /.$/; w = w.replace(re,""); } } else if (re2.test(w)) { var fp = re2.exec(w); stem = fp[1]; re2 = new RegExp(s_v); if (re2.test(stem)) { w = stem; re2 = /(at|bl|iz)$/; re3 = new RegExp("([^aeiouylsz])\\1$"); re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); if (re2.test(w)) w = w + "e"; else if (re3.test(w)) { re = /.$/; w = w.replace(re,""); } else if (re4.test(w)) w = w + "e"; } } // Step 1c re = /^(.+?)y$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; re = new RegExp(s_v); if (re.test(stem)) w = stem + "i"; } // Step 2 re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; suffix = fp[2]; re = new RegExp(mgr0); if (re.test(stem)) w = stem + step2list[suffix]; } // Step 3 re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; suffix = fp[2]; re = new RegExp(mgr0); if (re.test(stem)) w = stem + step3list[suffix]; } // Step 4 re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; re2 = /^(.+?)(s|t)(ion)$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; re = new RegExp(mgr1); if (re.test(stem)) w = stem; } else if (re2.test(w)) { var fp = re2.exec(w); stem = fp[1] + fp[2]; re2 = new RegExp(mgr1); if (re2.test(stem)) w = stem; } // Step 5 re = /^(.+?)e$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; re = new RegExp(mgr1); re2 = new RegExp(meq1); re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) w = stem; } re = /ll$/; re2 = new RegExp(mgr1); if (re.test(w) && re2.test(w)) { re = /.$/; w = w.replace(re,""); } // and turn initial Y back to y if (firstch == "y") w = firstch.toLowerCase() + w.substr(1); return w; } } /** * Search Module */ var Search = { _index : null, _queued_query : null, _pulse_status : -1, init : function() { var params = $.getQueryParameters(); if (params.q) { var query = params.q[0]; $('input[name="q"]')[0].value = query; this.performSearch(query); } }, loadIndex : function(url) { $.ajax({type: "GET", url: url, data: null, success: null, dataType: "script", cache: true}); }, setIndex : function(index) { var q; this._index = index; if ((q = this._queued_query) !== null) { this._queued_query = null; Search.query(q); } }, hasIndex : function() { return this._index !== null; }, deferQuery : function(query) { this._queued_query = query; }, stopPulse : function() { this._pulse_status = 0; }, startPulse : function() { if (this._pulse_status >= 0) return; function pulse() { Search._pulse_status = (Search._pulse_status + 1) % 4; var dotString = ''; for (var i = 0; i < Search._pulse_status; i++) dotString += '.'; Search.dots.text(dotString); if (Search._pulse_status > -1) window.setTimeout(pulse, 500); }; pulse(); }, /** * perform a search for something */ performSearch : function(query) { // create the required interface elements this.out = $('#search-results'); this.title = $('

' + _('Searching') + '

').appendTo(this.out); this.dots = $('').appendTo(this.title); this.status = $('

').appendTo(this.out); this.output = $('