PK@NuCê÷¶ÿŸŸ topologist-latest/searchindex.jsSearch.setIndex({objects:{},terms:{becaus:2,tcp:2,follow:[1,2],paramet:1,current:1,layout:[1,2],graph:[1,2],configur:[1,2],yaml:[1,2],might:[1,2],match:1,real:1,"case":2,them:1,sourc:0,everi:1,thei:[1,2],expret:[1,2],nanomsg:0,topollog:1,like:1,name:1,config:2,list:2,resolv:1,"public":1,where:[1,2],page:[],set:2,some:[1,2],intern:1,connect:[1,2],server:2,extract:1,port:2,index:[],what:1,network:2,section:[0,1,2],content:0,rel:1,between:1,topolog:[1,2],refer:[0,1,2],deriv:1,insid:1,never:1,topologist:[0,1,2],given:2,here:2,parenthesi:1,host:2,address:[1,2],put:1,path:1,reusabl:1,search:[],actual:2,globmap:1,thing:1,tutori:[0,2],com:0,assign:2,origin:1,own:1,regardless:1,modul:[],bound:2,mai:1,differ:2,from:1,describ:1,wai:1,quir:[1,2],two:[1,2],interfac:2,includ:1,type:2,more:[1,2],form:1,both:[1,2],specifi:1,part:1,pars:[1,2],particular:1,info:[1,2],wide:2,kind:1,consist:2,servic:2,work:1,structur:1,exampl:[0,2],trick:[0,1],defin:1,can:1,listen:2,expect:1,want:2,indic:[],repres:[1,2],tag:1,file:[1,2],tabl:[],bracket:2,addr:2,end:1,welcom:0,reqrep:2,tip:[0,1],note:1,other:[1,2],role:[1,2],you:[1,2],document:[0,1,2],simpl:[0,2],updat:2,node:1,map:1,http:0,normal:1,extern:1,multipl:2,squar:2,github:0,directori:1,request:2,client:[1,2],thi:2,hirarchi:1},objtypes:{},titles:["Welcome to topologist’s documentation!","Topologist Reference","Topologist Tutorial"],objnames:{},filenames:["index","reference","tutorial"]})PK@NuC™éЖZZtopologist-latest/search.html Search — topologist alpha0 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@NuCã0Ç]æætopologist-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: 2409157ba7f4d20319cd2362332b782f tags: fbb0d17656682115ca4d033fb2f83ba1 PK@NuCNº…ªÆ%Æ% topologist-latest/reference.html Topologist Reference — topologist alpha0 documentation

Topologist Reference¶

Topologist configuration is a YAML file, that is parsed using quire. So you might refer to the documentation of both for more expret info.

Sections¶

Layouts¶

The layouts section describes the layouts in form of mapping. Layouts are reusable parts of the topology. Layouts represented in graph-like structure.

Topologies¶

The topologies section is a directory of the real topologies that might be resolved by end client. There are currently two kinds of topologies:

  • normal topology (the !Topology tag) is represented by hirarchy of layouts and define the connections between nodes of the topology
  • extern topology (the !Extern tag) is used to “extract” some public node addresses from other normal topollogy. So that clients, that connect to the topology never connect to some internal addresses regardless of what role and other parameters they specify.

Tips And Tricks¶

Including files¶

You can put every layout and every topology into it’s own file and include them in the following way:

layouts: !GlobMap "./layouts/(*).yaml"
topologies: !GlobMap "./topologies/(*).yaml"

Note the following things:

  • The name of the layout and topology is derived from the name of the file, in particular the part that is matched inside parenthesis.
  • The path to file is relative to the directory where original configuration file is, not relative to the current working directory as one may expect
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@NuC'YÜÓÄÄtopologist-latest/genindex.html Index — topologist alpha0 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@NuCàXTèÎÎtopologist-latest/objects.inv# Sphinx inventory version 2 # Project: topologist # Version: 0.1 # The remainder of this file is compressed using zlib. xÚËÍOÉÌKI­P(.I±ÊILJÍQÐ5T(¨ÔÍ…Jèe”äæ(+ø槔æ¤*x‚„¸ÒSó°h‚‰Bu@”§&%g *„ˆA•C$¦§rßæ1PK@NuC y3š¨.¨.topologist-latest/tutorial.html Topologist Tutorial — topologist alpha0 documentation

Topologist Tutorial¶

Topologist configuration is a YAML file, that is parsed using quire. So you might refer to the documentation of both for more expret info.

Simple Example¶

Here is a simple configuration file for one service:

server:
  config-addr: [tcp://10.0.0.1:10001]
  updates-addr: [tcp://10.0.0.2:10002]

layouts:
  simple:
    server <- client:
      port: 10010

topologies:
  simple: !Topology
    type: reqrep
    layout: simple
    assign:
      server:
      - host: 10.0.0.3

In consists of the following sections.

The Server Section¶

server:
  config-addr: [tcp://10.0.0.1:10001]
  updates-addr: [tcp://10.0.0.2:10002]

It consists of addresses where to listen to for requests and some other server-wide settings. The addresses in example are in square brackets because they are actually YAML lists, for the case you want multiple addresses to listen to (such as on different network interfaces).

The Layouts Section¶

This section represents graph of the connections with connection settings. Given the example:

layouts:
  simple:
    server <- client:
      port: 10010

There are two roles client and server. Where server is bound on the port 10010 and client connects to it.

The Topologies Section¶

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@NuC\Âà¬ÅÅtopologist-latest/index.html Welcome to topologist’s documentation! — topologist alpha0 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@NuCm%®B"B".topologist-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 topologist's documentation!q…q}q(hX&Welcome to topologist's documentation!qUparentq hubaUtagnameq!Utitleq"ubUtutorialq#h)q$}q%(hUh}q&(h]h]h]h]h]uh]q'hXTopologist Tutorialq(…q)}q*(hXTopologist Tutorialq+h h$ubah!h"ubU referenceq,h)q-}q.(hUh}q/(h]h]h]h]h]uh]q0hXTopologist Referenceq1…q2}q3(hXTopologist Referenceq4h h-ubah!h"ubuU domaindataq5}q6(Ustdq7}q8(Uversionq9KU anonlabelsq:}q;(UmodindexqUsearchU†uUlabelsq?}q@(hh>UhAhBU Search PageqI†qJhBhI…qK†b‡uU progoptionsqL}qMUobjectsqN}qOuUc}qP(hN}qQh9KuUpyqR}qS(hN}qTUmodulesqU}qVh9KuUjsqW}qX(hN}qYh9KuUrstqZ}q[(hN}q\h9KuUcppq]}q^(hN}q_h9KuuU glob_toctreesq`h]…RqaU reread_alwaysqbh]…RqcU doctreedirqdUL/var/build/user_builds/topologist/checkouts/latest/doc/_build/html/.doctreesqeUversioning_conditionqf‰U citationsqg}h9K)UsrcdirqhU6/var/build/user_builds/topologist/checkouts/latest/docqiUconfigqjcsphinx.config Config qk)ql}qm(U html_contextqn}qo(U github_userUnanomsgUnameqpX topologistUdisplay_githubˆUversions]qqUlatestqrU /en/latest/†qsaU using_theme‰U downloads]qt(UPDFUBhttps://media.readthedocs.org/pdf/topologist/latest/topologist.pdf†quUHTMLqvUFhttps://media.readthedocs.org/htmlzip/topologist/latest/topologist.zip†qwUEpubUDhttps://media.readthedocs.org/epub/topologist/latest/topologist.epub†qxeU READTHEDOCSˆUgithub_versionUmasterqyU conf_py_pathU/doc/U github_repoU topologistqzUanalytics_codeUUPRODUCTION_DOMAINUreadthedocs.orgU html_themeq{Usphinx_rtd_themeq|U new_themeˆUcurrent_versionq}hrUslugq~hzU MEDIA_URLqUhttps://media.readthedocs.org/uUpygments_styleq€UsphinxqUhtmlhelp_basenameq‚U topologistdoch{h|U master_docqƒUindexq„U source_suffixq…U.rstUtexinfo_documentsq†]q‡(UindexqˆhzUtopologist Documentationq‰UPaul ColomietsqŠhzU One line description of project.U Miscellaneoustq‹aU copyrightqŒU2013, Paul ColomietsUexclude_patternsq]qŽU_buildqah9U0.1U man_pagesq]q‘(h„hzh‰]q’hŠaKtq“aU html_styleq”NUhtml_theme_optionsq•}Utemplates_pathq–]q—(UA/home/docs/checkouts/readthedocs.org/readthedocs/templates/sphinxq˜U _templatesq™eUlatex_documentsqš]q›(hˆUtopologist.texh‰hŠUmanualtqœaUhtml_static_pathq]qž(U_staticqŸUI/home/docs/checkouts/readthedocs.org/readthedocs/templates/sphinx/_staticq eUhtml_theme_pathq¡]q¢(U_themesq£h˜eUlatex_elementsq¤}Ulanguageq¥Xenq¦U overridesq§}q¨h¥h¦sUprojectq©hzU extensionsqª]q«(Ureadthedocs_ext.readthedocsq¬U"readthedocs_ext.readthedocshtmldirq­eUreleaseq®Ualpha0Usetupq¯NubUmetadataq°}q±(h }h#}h,}uUversionchangesq²}Utoc_num_entriesq³}q´(h Kh#Kh,KuUimagesqµh)q¶h]…Rq·bUnumbered_toctreesq¸h]…Rq¹U found_docsqºh]q»(h h#h,e…Rq¼U longtitlesq½}q¾(h hh#h$h,h-uU dependenciesq¿}Utoctree_includesqÀ}qÁh ]qÂ(XtutorialqÃX referenceqÄesU temp_dataqÅ}UtocsqÆ}qÇ(h cdocutils.nodes bullet_list qÈ)qÉ}qÊ(hUh}qË(h]h]h]h]h]uh]qÌcdocutils.nodes list_item qÍ)qÎ}qÏ(hUh}qÐ(h]h]h]h]h]uh hÉh]qÑ(csphinx.addnodes compact_paragraph qÒ)qÓ}qÔ(hUh}qÕ(h]h]h]h]h]uh hÎh]qÖcdocutils.nodes reference q×)qØ}qÙ(hUh}qÚ(U anchornameUUrefurih h]h]h]h]h]Uinternalˆuh hÓh]qÛhX&Welcome to topologist's documentation!qÜ…qÝ}qÞ(hhh hØubah!U referenceqßubah!Ucompact_paragraphqàubhÈ)qá}qâ(hUh}qã(h]h]h]h]h]uh hÎh]qäcsphinx.addnodes toctree qå)qæ}qç(hUh}qè(UnumberedKUparenth U titlesonly‰Uglob‰h]h]h]h]h]Uentries]qé(NhÆqêNhĆqëeUhidden‰U includefiles]qì(hÃhÄeUmaxdepthKuh háh]h!Utoctreeqíubah!U bullet_listqîubeh!U list_itemqïubah!hîubh#hÈ)qð}qñ(hUh}qò(h]h]h]h]h]uh]qóhÍ)qô}qõ(hUh}qö(h]h]h]h]h]uh hðh]q÷(hÒ)qø}qù(hUh}qú(h]h]h]h]h]uh hôh]qûh×)qü}qý(hUh}qþ(U anchornameUUrefurih#h]h]h]h]h]Uinternalˆuh høh]qÿhXTopologist Tutorialr…r}r(hh+h hüubah!hßubah!hàubhÈ)r}r(hUh}r(h]h]h]h]h]uh hôh]rhÍ)r}r(hUh}r (h]h]h]h]h]uh jh]r (hÒ)r }r (hUh}r (h]h]h]h]h]uh jh]rh×)r}r(hUh}r(U anchornameU#simple-exampleUrefurih#h]h]h]h]h]Uinternalˆuh j h]rhXSimple Exampler…r}r(hXSimple Examplerh jubah!hßubah!hàubhÈ)r}r(hUh}r(h]h]h]h]h]uh jh]r(hÍ)r}r(hUh}r(h]h]h]h]h]uh jh]rhÒ)r}r (hUh}r!(h]h]h]h]h]uh jh]r"h×)r#}r$(hUh}r%(U anchornameU#the-server-sectionUrefurih#h]h]h]h]h]Uinternalˆuh jh]r&hXThe Server Sectionr'…r(}r)(hXThe Server Sectionr*h j#ubah!hßubah!hàubah!hïubhÍ)r+}r,(hUh}r-(h]h]h]h]h]uh jh]r.hÒ)r/}r0(hUh}r1(h]h]h]h]h]uh j+h]r2h×)r3}r4(hUh}r5(U anchornameU#the-layouts-sectionUrefurih#h]h]h]h]h]Uinternalˆuh j/h]r6hXThe Layouts Sectionr7…r8}r9(hXThe Layouts Sectionr:h j3ubah!hßubah!hàubah!hïubhÍ)r;}r<(hUh}r=(h]h]h]h]h]uh jh]r>hÒ)r?}r@(hUh}rA(h]h]h]h]h]uh j;h]rBh×)rC}rD(hUh}rE(U anchornameU#the-topologies-sectionUrefurih#h]h]h]h]h]Uinternalˆuh j?h]rFhXThe Topologies SectionrG…rH}rI(hXThe Topologies SectionrJh jCubah!hßubah!hàubah!hïubeh!hîubeh!hïubah!hîubeh!hïubah!hîubh,hÈ)rK}rL(hUh}rM(h]h]h]h]h]uh]rNhÍ)rO}rP(hUh}rQ(h]h]h]h]h]uh jKh]rR(hÒ)rS}rT(hUh}rU(h]h]h]h]h]uh jOh]rVh×)rW}rX(hUh}rY(U anchornameUUrefurih,h]h]h]h]h]Uinternalˆuh jSh]rZhXTopologist Referencer[…r\}r](hh4h jWubah!hßubah!hàubhÈ)r^}r_(hUh}r`(h]h]h]h]h]uh jOh]ra(hÍ)rb}rc(hUh}rd(h]h]h]h]h]uh j^h]re(hÒ)rf}rg(hUh}rh(h]h]h]h]h]uh jbh]rih×)rj}rk(hUh}rl(U anchornameU #sectionsUrefurih,h]h]h]h]h]Uinternalˆuh jfh]rmhXSectionsrn…ro}rp(hXSectionsrqh jjubah!hßubah!hàubhÈ)rr}rs(hUh}rt(h]h]h]h]h]uh jbh]ru(hÍ)rv}rw(hUh}rx(h]h]h]h]h]uh jrh]ryhÒ)rz}r{(hUh}r|(h]h]h]h]h]uh jvh]r}h×)r~}r(hUh}r€(U anchornameU#layoutsUrefurih,h]h]h]h]h]Uinternalˆuh jzh]rhXLayoutsr‚…rƒ}r„(hXLayoutsr…h j~ubah!hßubah!hàubah!hïubhÍ)r†}r‡(hUh}rˆ(h]h]h]h]h]uh jrh]r‰hÒ)rŠ}r‹(hUh}rŒ(h]h]h]h]h]uh j†h]rh×)rŽ}r(hUh}r(U anchornameU #topologiesUrefurih,h]h]h]h]h]Uinternalˆuh jŠh]r‘hX Topologiesr’…r“}r”(hX Topologiesr•h jŽubah!hßubah!hàubah!hïubeh!hîubeh!hïubhÍ)r–}r—(hUh}r˜(h]h]h]h]h]uh j^h]r™(hÒ)rš}r›(hUh}rœ(h]h]h]h]h]uh j–h]rh×)rž}rŸ(hUh}r (U anchornameU#tips-and-tricksUrefurih,h]h]h]h]h]Uinternalˆuh jšh]r¡hXTips And Tricksr¢…r£}r¤(hXTips And Tricksr¥h jžubah!hßubah!hàubhÈ)r¦}r§(hUh}r¨(h]h]h]h]h]uh j–h]r©hÍ)rª}r«(hUh}r¬(h]h]h]h]h]uh j¦h]r­hÒ)r®}r¯(hUh}r°(h]h]h]h]h]uh jªh]r±h×)r²}r³(hUh}r´(U anchornameU#including-filesUrefurih,h]h]h]h]h]Uinternalˆuh j®h]rµhXIncluding filesr¶…r·}r¸(hXIncluding filesr¹h j²ubah!hßubah!hàubah!hïubah!hîubeh!hïubeh!hîubeh!hïubah!hîubuU indexentriesrº}r»(h ]h#]h,]uUall_docsr¼}r½(h GAÔ£ŠêJÊ h#GAÔ£ŠêMO”h,GAÔ£ŠêL,ùuUsettingsr¾}r¿(Ucloak_email_addressesrÀˆUtrim_footnote_reference_spacerÁ‰U halt_levelrÂKUsectsubtitle_xformrÉUembed_stylesheetrĉU pep_base_urlrÅUhttp://www.python.org/dev/peps/rÆUdoctitle_xformrljUwarning_streamrÈcsphinx.util.nodes WarningStream rÉ)rÊ}rË(U_rerÌcre _compile rÍU+\((DEBUG|INFO|WARNING|ERROR|SEVERE)/[0-4]\)rÎK†RrÏUwarnfuncrÐNubUenvrÑhU rfc_base_urlrÒUhttp://tools.ietf.org/html/rÓUgettext_compactrÔˆUinput_encodingrÕU utf-8-sigrÖuUfiles_to_rebuildr×}rØ(hÄh]rÙh a…RrÚhÃh]rÛh a…RrÜuUtoc_secnumbersrÝ}U_nitpick_ignorerÞh]…Rrßub.PK@NuC¯™¿l l )topologist-latest/.doctrees/index.doctree€cdocutils.nodes document q)q}q(U nametypesq}qX&welcome to topologist's documentation!qNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhU%welcome-to-topologist-s-documentationqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qX@/var/build/user_builds/topologist/checkouts/latest/doc/index.rstq…q}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hX&Welcome to topologist's documentation!q.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2X&Welcome to topologist's documentation!q3…q4}q5(hh.hh,ubaubcdocutils.nodes paragraph q6)q7}q8(hX-Sources: http://github.com/nanomsg/topologistq9hhhhhU paragraphq:h}q;(h!]h"]h#]h$]h&]uh(Kh)hh]q<(h2X Sources: q=…q>}q?(hX Sources: hh7ubcdocutils.nodes reference q@)qA}qB(hX$http://github.com/nanomsg/topologistqCh}qD(UrefurihCh$]h#]h!]h"]h&]uhh7h]qEh2X$http://github.com/nanomsg/topologistqF…qG}qH(hUhhAubahU referenceqIubeubh6)qJ}qK(hX Contents:qLhhhhhh:h}qM(h!]h"]h#]h$]h&]uh(Kh)hh]qNh2X Contents:qO…qP}qQ(hhLhhJubaubcdocutils.nodes compound qR)qS}qT(hUhhhhhUcompoundqUh}qV(h!]h"]qWUtoctree-wrapperqXah#]h$]h&]uh(Nh)hh]qYcsphinx.addnodes toctree qZ)q[}q\(hUhhShhhUtoctreeq]h}q^(Unumberedq_KhUindexq`U titlesonlyqa‰Uglobqb‰h$]h#]h!]h"]h&]Uentriesqc]qd(NXtutorialqe†qfNX referenceqg†qheUhiddenqi‰U includefilesqj]qk(hehgeUmaxdepthqlKuh(Kh]ubaubeubahUU transformerqmNU footnote_refsqn}qoUrefnamesqp}qqUsymbol_footnotesqr]qsUautofootnote_refsqt]quUsymbol_footnote_refsqv]qwU citationsqx]qyh)hU current_lineqzNUtransform_messagesq{]q|Ureporterq}NUid_startq~KU autofootnotesq]q€U citation_refsq}q‚Uindirect_targetsqƒ]q„Usettingsq…(cdocutils.frontend Values q†oq‡}qˆ(Ufootnote_backlinksq‰KUrecord_dependenciesqŠNU rfc_base_urlq‹Uhttp://tools.ietf.org/html/qŒU tracebackqKUpep_referencesqŽNUstrip_commentsqNU toc_backlinksqUentryq‘U language_codeq’Uenq“U datestampq”NU report_levelq•KU _destinationq–NU halt_levelq—KU strip_classesq˜Nh/NUerror_encoding_error_handlerq™UbackslashreplaceqšUdebugq›NUembed_stylesheetqœ‰Uoutput_encoding_error_handlerqUstrictqžU sectnum_xformqŸKUdump_transformsq NU docinfo_xformq¡KUwarning_streamq¢NUpep_file_url_templateq£Upep-%04dq¤Uexit_status_levelq¥KUconfigq¦NUstrict_visitorq§NUcloak_email_addressesq¨ˆUtrim_footnote_reference_spaceq©‰UenvqªNUdump_pseudo_xmlq«NUexpose_internalsq¬NUsectsubtitle_xformq­‰U source_linkq®NUrfc_referencesq¯NUoutput_encodingq°Uutf-8q±U source_urlq²NUinput_encodingq³U utf-8-sigq´U_disable_configqµNU id_prefixq¶UU tab_widthq·KUerror_encodingq¸UUTF-8q¹U_sourceqºU@/var/build/user_builds/topologist/checkouts/latest/doc/index.rstq»Ugettext_compactq¼ˆU generatorq½NUdump_internalsq¾NU pep_base_urlq¿Uhttp://www.python.org/dev/peps/qÀUinput_encoding_error_handlerqÁhžUauto_id_prefixqÂUidqÃUdoctitle_xformqĉUstrip_elements_with_classesqÅNU _config_filesqÆ]qÇUfile_insertion_enabledqÈKU raw_enabledqÉKU dump_settingsqÊNubUsymbol_footnote_startqËKUidsqÌ}qÍhhsUsubstitution_namesqÎ}qÏhh)h}qÐ(h!]h$]h#]Usourcehh"]h&]uU footnotesqÑ]qÒUrefidsqÓ}qÔub.PK@NuCY±hÅ+Å+-topologist-latest/.doctrees/reference.doctree€cdocutils.nodes document q)q}q(U nametypesq}q(Xtopologist referenceqNXquireqKXyamlqKXlayoutsq NX topologiesq NXtips and tricksq NXsectionsq NXincluding filesq NuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUtopologist-referenceqhUquireqhUyamlqh Ulayoutsqh U topologiesqh Utips-and-tricksqh Usectionsqh Uincluding-filesquUchildrenq]q cdocutils.nodes section q!)q"}q#(U rawsourceq$UUparentq%hUsourceq&cdocutils.nodes reprunicode q'XD/var/build/user_builds/topologist/checkouts/latest/doc/reference.rstq(…q)}q*bUtagnameq+Usectionq,U attributesq-}q.(Udupnamesq/]Uclassesq0]Ubackrefsq1]Uidsq2]q3haUnamesq4]q5hauUlineq6KUdocumentq7hh]q8(cdocutils.nodes title q9)q:}q;(h$XTopologist Referenceq(h/]h0]h1]h2]h4]uh6Kh7hh]q?cdocutils.nodes Text q@XTopologist ReferenceqA…qB}qC(h$h(h$j9h%j7ubaubaubhÊ)r?}r@(h$X”The path to file is relative to the directory where original configuration file is, not relative to the current working directory as one may expect h%j/h&h)h+hÍh-}rA(h/]h0]h1]h2]h4]uh6Nh7hh]rBhD)rC}rD(h$X“The path to file is relative to the directory where original configuration file is, not relative to the current working directory as one may expectrEh%j?h&h)h+hGh-}rF(h/]h0]h1]h2]h4]uh6K5h]rGh@X“The path to file is relative to the directory where original configuration file is, not relative to the current working directory as one may expectrH…rI}rJ(h$jEh%jCubaubaubeubeubeubeubah$UU transformerrKNU footnote_refsrL}rMUrefnamesrN}rO(Xyaml]rPhNah_]rQh\auUsymbol_footnotesrR]rSUautofootnote_refsrT]rUUsymbol_footnote_refsrV]rWU citationsrX]rYh7hU current_linerZNUtransform_messagesr[]r\Ureporterr]NUid_startr^KU autofootnotesr_]r`U citation_refsra}rbUindirect_targetsrc]rdUsettingsre(cdocutils.frontend Values rforg}rh(Ufootnote_backlinksriKUrecord_dependenciesrjNU rfc_base_urlrkUhttp://tools.ietf.org/html/rlU tracebackrmKUpep_referencesrnNUstrip_commentsroNU toc_backlinksrpUentryrqU language_coderrUenrsU datestamprtNU report_levelruKU _destinationrvNU halt_levelrwKU strip_classesrxNh=NUerror_encoding_error_handlerryUbackslashreplacerzUdebugr{NUembed_stylesheetr|‰Uoutput_encoding_error_handlerr}Ustrictr~U sectnum_xformrKUdump_transformsr€NU docinfo_xformrKUwarning_streamr‚NUpep_file_url_templaterƒUpep-%04dr„Uexit_status_levelr…KUconfigr†NUstrict_visitorr‡NUcloak_email_addressesrˆˆUtrim_footnote_reference_spacer‰‰UenvrŠNUdump_pseudo_xmlr‹NUexpose_internalsrŒNUsectsubtitle_xformr‰U source_linkrŽNUrfc_referencesrNUoutput_encodingrUutf-8r‘U source_urlr’NUinput_encodingr“U utf-8-sigr”U_disable_configr•NU id_prefixr–UU tab_widthr—KUerror_encodingr˜UUTF-8r™U_sourceršUD/var/build/user_builds/topologist/checkouts/latest/doc/reference.rstr›Ugettext_compactrœˆU generatorrNUdump_internalsržNU pep_base_urlrŸUhttp://www.python.org/dev/peps/r Uinput_encoding_error_handlerr¡j~Uauto_id_prefixr¢Uidr£Udoctitle_xformr¤‰Ustrip_elements_with_classesr¥NU _config_filesr¦]Ufile_insertion_enabledr§KU raw_enabledr¨KU dump_settingsr©NubUsymbol_footnote_startrªKUidsr«}r¬(hhihhöhhƒhhphh"hjhh¤hhuuUsubstitution_namesr­}r®h+h7h-}r¯(h/]h2]h1]Usourceh)h0]h4]uU footnotesr°]r±Urefidsr²}r³ub.PK@NuC£vàG!G!,topologist-latest/.doctrees/tutorial.doctree€cdocutils.nodes document q)q}q(U nametypesq}q(XquireqKXthe topologies sectionqNXyamlqKXtopologist tutorialq NXthe layouts sectionq NXthe server sectionq NXsimple exampleq NuUsubstitution_defsq }qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUquireqhUthe-topologies-sectionqhUyamlqh Utopologist-tutorialqh Uthe-layouts-sectionqh Uthe-server-sectionqh Usimple-examplequUchildrenq]qcdocutils.nodes section q)q }q!(U rawsourceq"UUparentq#hUsourceq$cdocutils.nodes reprunicode q%XC/var/build/user_builds/topologist/checkouts/latest/doc/tutorial.rstq&…q'}q(bUtagnameq)Usectionq*U attributesq+}q,(Udupnamesq-]Uclassesq.]Ubackrefsq/]Uidsq0]q1haUnamesq2]q3h auUlineq4KUdocumentq5hh]q6(cdocutils.nodes title q7)q8}q9(h"XTopologist Tutorialq:h#h h$h'h)Utitleq;h+}q<(h-]h.]h/]h0]h2]uh4Kh5hh]q=cdocutils.nodes Text q>XTopologist Tutorialq?…q@}qA(h"h:h#h8ubaubcdocutils.nodes paragraph qB)qC}qD(h"XŒTopologist configuration is a YAML_ file, that is parsed using quire_. So you might refer to the documentation of both for more expret info.h#h h$h'h)U paragraphqEh+}qF(h-]h.]h/]h0]h2]uh4Kh5hh]qG(h>XTopologist configuration is a qH…qI}qJ(h"XTopologist configuration is a h#hCubcdocutils.nodes reference qK)qL}qM(h"XYAML_UresolvedqNKh#hCh)U referenceqOh+}qP(UnameXYAMLUrefuriqQXhttp://yaml.orgqRh0]h/]h-]h.]h2]uh]qSh>XYAMLqT…qU}qV(h"Uh#hLubaubh>X file, that is parsed using qW…qX}qY(h"X file, that is parsed using h#hCubhK)qZ}q[(h"Xquire_hNKh#hCh)hOh+}q\(UnameXquireq]hQXhttp://quire.readthedocs.orgq^h0]h/]h-]h.]h2]uh]q_h>Xquireq`…qa}qb(h"Uh#hZubaubh>XG. So you might refer to the documentation of both for more expret info.qc…qd}qe(h"XG. So you might refer to the documentation of both for more expret info.h#hCubeubcdocutils.nodes target qf)qg}qh(h"X'.. _quire: http://quire.readthedocs.orgU referencedqiKh#h h$h'h)Utargetqjh+}qk(hQh^h0]qlhah/]h-]h.]h2]qmhauh4K h5hh]ubhf)qn}qo(h"X.. _YAML: http://yaml.orghiKh#h h$h'h)hjh+}qp(hQhRh0]qqhah/]h-]h.]h2]qrhauh4K h5hh]ubh)qs}qt(h"Uh#h h$h'h)h*h+}qu(h-]h.]h/]h0]qvhah2]qwh auh4Kh5hh]qx(h7)qy}qz(h"XSimple Exampleq{h#hsh$h'h)h;h+}q|(h-]h.]h/]h0]h2]uh4Kh5hh]q}h>XSimple Exampleq~…q}q€(h"h{h#hyubaubhB)q}q‚(h"X4Here is a simple configuration file for one service:qƒh#hsh$h'h)hEh+}q„(h-]h.]h/]h0]h2]uh4Kh5hh]q…h>X4Here is a simple configuration file for one service:q†…q‡}qˆ(h"hƒh#hubaubcdocutils.nodes literal_block q‰)qŠ}q‹(h"Xserver: config-addr: [tcp://10.0.0.1:10001] updates-addr: [tcp://10.0.0.2:10002] layouts: simple: server <- client: port: 10010 topologies: simple: !Topology type: reqrep layout: simple assign: server: - host: 10.0.0.3h#hsh$h'h)U literal_blockqŒh+}q(UlinenosqŽ‰UlanguageqXyamlU xml:spaceqUpreserveq‘h0]h/]h-]h.]h2]uh4Kh5hh]q’h>Xserver: config-addr: [tcp://10.0.0.1:10001] updates-addr: [tcp://10.0.0.2:10002] layouts: simple: server <- client: port: 10010 topologies: simple: !Topology type: reqrep layout: simple assign: server: - host: 10.0.0.3q“…q”}q•(h"Uh#hŠubaubhB)q–}q—(h"X&In consists of the following sections.q˜h#hsh$h'h)hEh+}q™(h-]h.]h/]h0]h2]uh4K%h5hh]qšh>X&In consists of the following sections.q›…qœ}q(h"h˜h#h–ubaubh)qž}qŸ(h"Uh#hsh$h'h)h*h+}q (h-]h.]h/]h0]q¡hah2]q¢h auh4K(h5hh]q£(h7)q¤}q¥(h"XThe Server Sectionq¦h#hžh$h'h)h;h+}q§(h-]h.]h/]h0]h2]uh4K(h5hh]q¨h>XThe Server Sectionq©…qª}q«(h"h¦h#h¤ubaubh‰)q¬}q­(h"XTserver: config-addr: [tcp://10.0.0.1:10001] updates-addr: [tcp://10.0.0.2:10002]h#hžh$h'h)hŒh+}q®(hŽ‰hXyamlhh‘h0]h/]h-]h.]h2]uh4K*h5hh]q¯h>XTserver: config-addr: [tcp://10.0.0.1:10001] updates-addr: [tcp://10.0.0.2:10002]q°…q±}q²(h"Uh#h¬ubaubhB)q³}q´(h"XIt consists of addresses where to listen to for requests and some other server-wide settings. The addresses in example are in square brackets because they are actually YAML lists, for the case you want multiple addresses to listen to (such as on different network interfaces).qµh#hžh$h'h)hEh+}q¶(h-]h.]h/]h0]h2]uh4K0h5hh]q·h>XIt consists of addresses where to listen to for requests and some other server-wide settings. The addresses in example are in square brackets because they are actually YAML lists, for the case you want multiple addresses to listen to (such as on different network interfaces).q¸…q¹}qº(h"hµh#h³ubaubeubh)q»}q¼(h"Uh#hsh$h'h)h*h+}q½(h-]h.]h/]h0]q¾hah2]q¿h auh4K7h5hh]qÀ(h7)qÁ}qÂ(h"XThe Layouts SectionqÃh#h»h$h'h)h;h+}qÄ(h-]h.]h/]h0]h2]uh4K7h5hh]qÅh>XThe Layouts SectionqÆ…qÇ}qÈ(h"hÃh#hÁubaubhB)qÉ}qÊ(h"X]This section represents graph of the connections with connection settings. Given the example:qËh#h»h$h'h)hEh+}qÌ(h-]h.]h/]h0]h2]uh4K9h5hh]qÍh>X]This section represents graph of the connections with connection settings. Given the example:qÎ…qÏ}qÐ(h"hËh#hÉubaubh‰)qÑ}qÒ(h"X:layouts: simple: server <- client: port: 10010h#h»h$h'h)hŒh+}qÓ(hŽ‰hXyamlhh‘h0]h/]h-]h.]h2]uh4KX:layouts: simple: server <- client: port: 10010qÕ…qÖ}q×(h"Uh#hÑubaubhB)qØ}qÙ(h"XuThere are two roles ``client`` and ``server``. Where server is bound on the port ``10010`` and client connects to it.h#h»h$h'h)hEh+}qÚ(h-]h.]h/]h0]h2]uh4KCh5hh]qÛ(h>XThere are two roles qÜ…qÝ}qÞ(h"XThere are two roles h#hØubcdocutils.nodes literal qß)qà}qá(h"X ``client``h+}qâ(h-]h.]h/]h0]h2]uh#hØh]qãh>Xclientqä…qå}qæ(h"Uh#hàubah)Uliteralqçubh>X and qè…qé}qê(h"X and h#hØubhß)që}qì(h"X ``server``h+}qí(h-]h.]h/]h0]h2]uh#hØh]qîh>Xserverqï…qð}qñ(h"Uh#hëubah)hçubh>X$. Where server is bound on the port qò…qó}qô(h"X$. Where server is bound on the port h#hØubhß)qõ}qö(h"X ``10010``h+}q÷(h-]h.]h/]h0]h2]uh#hØh]qøh>X10010qù…qú}qû(h"Uh#hõubah)hçubh>X and client connects to it.qü…qý}qþ(h"X and client connects to it.h#hØubeubeubh)qÿ}r(h"Uh#hsh$h'h)h*h+}r(h-]h.]h/]h0]rhah2]rhauh4KHh5hh]rh7)r}r(h"XThe Topologies Sectionrh#hÿh$h'h)h;h+}r(h-]h.]h/]h0]h2]uh4KHh5hh]r h>XThe Topologies Sectionr …r }r (h"jh#jubaubaubeubeubah"UU transformerr NU footnote_refsr}rUrefnamesr}r(Xyaml]rhLah]]rhZauUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh5hU current_linerNUtransform_messagesr]rUreporterrNUid_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 tracebackr/KUpep_referencesr0NUstrip_commentsr1NU toc_backlinksr2Uentryr3U language_coder4Uenr5U datestampr6NU report_levelr7KU _destinationr8NU halt_levelr9KU strip_classesr:Nh;NUerror_encoding_error_handlerr;Ubackslashreplacer<Udebugr=NUembed_stylesheetr>‰Uoutput_encoding_error_handlerr?Ustrictr@U sectnum_xformrAKUdump_transformsrBNU docinfo_xformrCKUwarning_streamrDNUpep_file_url_templaterEUpep-%04drFUexit_status_levelrGKUconfigrHNUstrict_visitorrINUcloak_email_addressesrJˆUtrim_footnote_reference_spacerK‰UenvrLNUdump_pseudo_xmlrMNUexpose_internalsrNNUsectsubtitle_xformrO‰U source_linkrPNUrfc_referencesrQNUoutput_encodingrRUutf-8rSU source_urlrTNUinput_encodingrUU utf-8-sigrVU_disable_configrWNU id_prefixrXUU tab_widthrYKUerror_encodingrZUUTF-8r[U_sourcer\UC/var/build/user_builds/topologist/checkouts/latest/doc/tutorial.rstr]Ugettext_compactr^ˆU generatorr_NUdump_internalsr`NU pep_base_urlraUhttp://www.python.org/dev/peps/rbUinput_encoding_error_handlerrcj@Uauto_id_prefixrdUidreUdoctitle_xformrf‰Ustrip_elements_with_classesrgNU _config_filesrh]Ufile_insertion_enabledriKU raw_enabledrjKU dump_settingsrkNubUsymbol_footnote_startrlKUidsrm}rn(hhÿhhghh»hhnhhshhžhh uUsubstitution_namesro}rph)h5h+}rq(h-]h0]h/]Usourceh'h.]h2]uU footnotesrr]rsUrefidsrt}ruub.PK€…Cïa¢ÜÇÇ"topologist-latest/_static/plus.png‰PNG  IHDR &Îàq pHYs  šœtIME× 1l9tEXtCommentöÌ–¿RIDATÓczô(BÅñãÇáÒpö¿ÿ¨èˆip»‘¹P÷îÝÃc· ¸ |¶IEND®B`‚PK@NuC¡kl©\\&topologist-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€…C‘DU˜kk topologist-latest/_static/up.png‰PNG  IHDRóÿasRGB®ÎébKGDùC» pHYs × ×B(›xtIMEÚ!.<̓EëIDAT8ËÍ“±NA†¿õ®B‚P\EG{õ„Ž°³%<„ñ|éxcþþ ÀŠ cƒr6“@t×;bã$›ìü;óÿ3ø×&)—”ÿ†¹hÈ1ö“´¼!ÁÚ﫳Hzz@Ïý¨…Äç°=)p 3Ûµe°2/Üß´’ é(€úä¹ ¥%øÈ^ND^ ¼}3ûH1¨€ËDo‚Ǫ¨IS üF‹Ò±?,ð ìG`ÌÜß{¬vì±’–^ýX™Ù[b¼]พÍì&HC3{:sO&À ’²?,[öïeL#«¾éIEND®B`‚PKBFCV¾óR>>!topologist-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€…Cÿ2,~~!~!'topologist-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@NuCq»Íþ,topologist-latest/_static/readthedocs-ext.js // Intenionally left blank PK€…C<>¡¡)topologist-latest/_static/ajax-loader.gifGIF89aòÿÿÿU|ÆÖßN€U|l–®Š«¾™¶Æ!þCreated with ajaxload.info!ù !ÿ NETSCAPE2.0,3ºÜþ0ÊIkc:œN˜f E±1º™Á¶.`ÄÂqÐ-[9ݦ9 JkçH!ù ,4ºÜþNŒ! „ »°æŠDqBQT`1 `LE[¨|µußía€ ×â†C²%$*!ù ,6º2#+ÊAÈÌ”V/…côNñIBa˜«pð ̳½ƨ+YíüƒÃ2©dŸ¿!ù ,3ºb%+Ê2†‘ìœV_…‹¦ …! 1D‡aªF‚°ÑbR]ó=08,Ȥr9L!ù ,2ºr'+JçdðóL &vÃ`\bT”…„¹hYB)ÏÊ@é<Ã&,ȤR’!ù ,3º Â9ãtç¼Úž0Çà!.B¶ÊW¬¢1  sa»°5÷•0° ‰»Ÿm)J!ù ,2ºÜþð ÙœU]šîÚqp•`ˆÝaœÝ4–…AFÅ0`›¶ Â@›1€ÂÖΑ!ù ,2ºÜþ0ÊI«eBÔœ)×à ŽÇq10©Ê°®PÂaVÚ¥ ub‚ž[;PK€…CŒP¥†u u %topologist-latest/_static/comment.png‰PNG  IHDRóÿa OiCCPPhotoshop ICC profilexÚSgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p³d!sý#ø~<<+"À¾xÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€˜&S `ËcbãP-`'æÓ€ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ ² 0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóýxήÎÎ6Ž¶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ éÚWópø~<ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.Tʳ?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yn…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿѧ€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ499â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-ÛbKGDÿÿÿ ½§“ pHYs  šœtIMEÚ 1;ïV·¿§IDAT8Ëu‘ËkÜUÇ?ßsgœ4ÔØøhª‚`µ©ÖG1 RQ‚”îܸp%èBªø”n"‚bРXJ ‹.4V iZð##T;m£µ!4™üæžãbâP­~7÷rîù>ιbwïý†cû†; m;‡oª”ÓAÜàΆ ζZ^«/®þôä£Ãç¸|îs¯ÝÉø{Óý;†¯y¿»Rº¥ð¸Â=È9(rÉt¦Vo¼¾û¡­ûG÷Í1±wíÞÿ#_àÓ©¹›{»¿ìî*•›E&ç å!€€ˆÀƒ(—Lç–VŸßuïÀ«oœéêûÁᲵ‘DŽÀ€ P„‡²G”“4ÿçÊ Ü:&€¯ç~™êî*ݳÖreˆuá: ‚ááS­-,ßUšœ©^Ÿ’ú›E&·™JY[ÃPà!RˆìB ŖޞʖR@_ÎôÈ€dBfó”€NvHfÂ"è2ØTÊî]­ˆR‘’ ³ö j§'BàÖ1‰ddAak…/DIJD… ’D2‘ÌH&L`&L† $Ex,6‹|Ö~_\©¿Pœ‘ $™ýMH`I˜©=Ÿ @¨±Z|õÈÎÁ|ttv´gcåЕ—WTZ'¤õ3rŽÈîje"ܵx¾9ÿö›¯°W> ¹mb©Ñ|by¥ˆ•fFRx{wí%Dúõå¹Z½±€áCíÿÞüô$õwdüÀôðÖ«ÞH¦mW÷nètaµ(ŠM<~;9¿ôáž]C/ñ_¸ãåŸ;÷ÉãÕ«§æã‹Õ#Ÿ}ûÀáÉïoÿ`zS§áÚ·ù_>:;x컓§?Ÿ©yóÝ©ÿ|}æ’~ûwam-/ž®7ž=¾0úìS÷5è»ØíRç¿š¾P"*Ö¯ IEND®B`‚PK€…CšhßÛkk"topologist-latest/_static/down.png‰PNG  IHDRóÿasRGB®ÎébKGDùC» pHYs × ×B(›xtIMEÚ"ÅíU{ëIDAT8ËÍÒ¡NCAÐóÚJ, ++@ ™4>‡¨â/ÐUü’¤^,†~T&Ô3M^^^ÛPÅM6ÙÙ¹sïÌî*¥ôí‰RJ¿‡a)e¼GñÃ*ƒœàñ¹¡èW¸Å<"®«Fò ‡øFgÜã78G…>q ƒ†ÁOI¨p‘«‰:s“õAÕjñ5GÙ†yDœ®ƒ^+y†U:ép_%G§@D|ašÕ­O“£s„Æ(ïy¡M,"â¨Íím˜sÔx:÷£.b§@D|`–V˜åÙŸÛ²”²ÜÆìиÜe²KàÅ¿Ç/êG!‚ ™IEND®B`‚PK€…CþÉ+0ˆˆ"topologist-latest/_static/file.png‰PNG  IHDRóÿabKGDÿÿÿ ½§“ pHYs  šœtIMEÕ  )¶TIDAT8Ë­‘±JÄ@†¿Ir('[ "&xØÙYZ ‚Xø0‚!i|†_@±Ô÷•t§ÓDÄæÏ] ¹#¹Äxÿjv˜ùç› Y–ÐN‡ažE‘i«(ŠÌÄÉ™yž£µ@D¦£&±ˆ`Û6®ë–P¦Zk’$)5%"ôz½Ê.NñA#Aœba‘`Vsø¾_3ñc°,«™àä2m¼Ýñþjó [kŸìlv¹y|!IÕ´ðþyô;ÀðvÈé "Œß®°—a©?ŸAúðÄ7Œ`ô˜ñÇc^énôk?¸²Bg}»TЙ¹D#ÁÑÞ "R¹D1÷£çyüEŽRê*ŽãÝ6MJ©3þK_U«t8F~ÇIEND®B`‚PK€…C[{Ñgtt(topologist-latest/_static/up-pressed.png‰PNG  IHDRóÿasRGB®ÎébKGDùC» pHYs × ×B(›xtIMEÚ ,ˆ±ZeôIDAT8ËÍ“¿jAÆ—»*ÿW¥KkåØÙ-,ÓÙBòy‘@Ò- ÛÙˆ/`cáXYh!6jÎf GrOlXvØùvæûf¸k2±!ûóp!GOOÔ² &z·®f 6|M ©~¥%‘Ï`]*ð äΛM]K Õ‰úËZĆ1Eé¹rÅ%èȶÀc…¼ØmçÍ1Æ`= 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@NuC:>«>«>(topologist-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 = $('