circuits-3.1.0/0000755000014400001440000000000012425013644014332 5ustar prologicusers00000000000000circuits-3.1.0/CHANGES.rst0000644000014400001440000001246512425013545016144 0ustar prologicusers00000000000000:orphan: ========== Change Log ========== - :release:`3.1 <2014-11-01>` - :bug:`-` Bridge waits for event processing on the other side before proxy handler ends. Now it is possible to collect values from remote handlers in %_success event. - :bug:`-` Rename the FallbackErrorHandler to FallbackExceptionHandler and the event it listens to to exception - :bug:`-` Fixes optional parameters handling (client / server). - :bug:`-` Node: add peer node: return channel name. - :bug:`-` Node: add event firewall (client / server). - :bug:`-` Node: fixes the event value issue. - :bug:`-` Node: fixes event response flood. - :bug:`-` Node: Add node examples. - :bug:`-` Fixed import of FallBackExceptionHandler - :bug:`-` Fixed exception handing in circuits.web - :bug:`-` Fixed issue in brige with ommiting all but the first events sent at once - :bug:`-` Bridge: Do not propagate no results via bridge - :bug:`-` Bridge: Send exceptions via brige before change the exceptions weren't propagated via bridge because traceback object is not pickable, now traceback object is replaced by corresponding traceback list - :bug:`113` Fixed bug with forced shutdown of subprocesses in Windows. - :bug:`115` Fixed FallbackErrorHandler API Change - :release:`3.0.1 <2014-11-01>` - :support:`117` Fixed inconsistent top-level examples. - :support:`96` Link to ChangeLog from README - :release:`3.0 <2014-08-31>` - :bug:`111 major` Fixed broken Digest Auth Test for circuits.web - :feature:`112` Improved Signal Handling - :bug:`109 major` Fixed ``Event.create()`` factory and metaclass. - :feature:`108` Improved server support for the IRC Protocol. - :bug:`107 major` Added ``__le__`` and ``__ge__`` methods to ``circuits.web.wrappers.HTTPStatus`` - :bug:`106 major` Added ``__format__`` method to circuits.web.wrappers.HTTPStatus. - :bug:`104 major` Prevent other websockets sessions from closing. - :feature:`103` Added the firing of a ``disconnect`` event for the WebSocketsDispatcher. - :bug:`102 major` Fixed minor bug with WebSocketsDispatcher causing superflusous ``connect()`` events from being fired. - :bug:`100 major` Fixed returned Content-Type in JSON-RPC Dispatcher. - :feature:`99` Added Digest Auth support to the ``circuits.web`` CLI Tool - :feature:`98` Dockerized circuits. See: https://docker.io/ - :bug:`97 major` Fixed ``tests.net.test_tcp.test_lookup_failure`` test for Windows - :support:`95` Updated Developer Documentation with corrections and a new workflow. - :feature:`94` Modified the :class:`circuits.web.Logger` to use the ``response_success`` event. - :support:`86` Telnet Tutorial - :bug:`47 major` Dispatcher does not fully respect optional arguments. web - :support:`61` circuits.web documentation enhancements docs - :support:`85` Migrate away from ShiningPanda - :support:`87` A rendered example of ``circuits.tools.graph()``. docs - :support:`88` Document the implicit registration of components attached as class attributes docs - :bug:`89 major` Class attribtues that reference methods cause duplicate event handlers core - :support:`92` Update circuitsframework.com content docs - :support:`71` Document the value_changed event docs - :support:`78` Migrate Change Log maintenance and build to Releases - :bug:`91 major` Call/Wait and specific instances of events - :bug:`59 major` circuits.web DoS in serve_file (remote denial of service) web - :bug:`66 major` web examples jsonserializer broken web - :support:`73` Fix duplication in auto generated API Docs. docs - :support:`72` Update Event Filtering section of Users Manual docs - :bug:`76 major` Missing unit test for DNS lookup failures net - :support:`70` Convention around method names of event handlers - :support:`75` Document and show examples of using circuits.tools docs - :bug:`81 major` "index" method not serving / web - :bug:`77 major` Uncaught exceptions Event collides with sockets and others core - :support:`69` Merge #circuits-dev FreeNode Channel into #circuits - :support:`65` Update tutorial to match circuits 3.0 API(s) and Semantics docs - :support:`60` meantion @handler decorator in tutorial docs - :bug:`67 major` web example jsontool is broken on python3 web - :support:`63` typos in documentation docs - :bug:`53 major` WebSocketClient treating WebSocket data in same TCP segment as HTTP response as part the HTTP response. web - :bug:`62 major` Fix packaging and bump circuits 1.5.1 for @dsuch (*Dariusz Suchojad*) for `Zato `_ - :bug:`56 major` circuits.web HEAD request send response body web - :bug:`45 major` Fixed use of ``cmp()`` and ``__cmp__()`` for Python 3 compatibility. - :bug:`48 major` Allow ``event`` to be passed to the decorated function (*the request handler*) for circuits.web - :bug:`46 major` Set ``Content-Type`` header on response for errors. (circuits.web) - :bug:`38 major` Guard against invalid headers. (circuits.web) - :bug:`37 major` Fixed a typo in :class:`~circuits.io.file.File` Older Change Logs ================= For older Change Logs of previous versions of circuits please see the respective `PyPi `_ page(s): - `circuits-2.1.0 `_ - `circuits-2.0.1 `_ - `circuits-2.0.0 `_ - `circuits-1.6 `_ - `circuits-1.5 `_ circuits-3.1.0/fabfile/0000755000014400001440000000000012425013643015721 5ustar prologicusers00000000000000circuits-3.1.0/fabfile/__init__.py0000644000014400001440000000653112402037676020046 0ustar prologicusers00000000000000# Package: fabfile # Date: 18th June 2013 # Author: James Mills, j dot mills at griffith dot edu dot au """Development Task""" from __future__ import print_function from os import getcwd from fabric.api import ( abort, cd, execute, hide, hosts, local, prefix, prompt, run, settings, task ) import help # noqa import docs # noqa import docker # noqa from .utils import msg, pip, requires, tobool @task() @requires("pip") def build(**options): """Build and install required dependencies Options can be provided to customize the build. The following options are supported: - dev -> Whether to install in development mode (Default: Fase) """ dev = tobool(options.get("dev", False)) if dev: pip(requirements="requirements-dev.txt") with settings(hide("stdout", "stderr"), warn_only=True): local("python setup.py {0:s}".format("develop" if dev else "install")) @task() def clean(): """Clean up build files and directories""" files = ["build", ".coverage", "coverage", "dist", "docs/build"] local("rm -rf {0:s}".format(" ".join(files))) local("find . -type f -name '*~' -delete") local("find . -type f -name '*.pyo' -delete") local("find . -type f -name '*.pyc' -delete") local("find . -type d -name '__pycache__' -delete") local("find . -type d -name '*egg-info' -exec rm -rf {} +") @task() def develop(): """Build and Install in Development Mode""" return execute(build, dev=True) @task() @requires("py.test") def test(): """Run all unit tests and doctests.""" local("python setup.py test") @task() @hosts("localhost") def release(): """Performs a full release""" with cd(getcwd()): with msg("Creating env"): run("mkvirtualenv test") with msg("Bootstrapping"): with prefix("workon test"): run("./bootstrap.sh") with msg("Building"): with prefix("workon test"): run("fab develop") with msg("Running tests"): with prefix("workon test"): run("fab test") with msg("Building docs"): with prefix("workon test"): run("pip install -r docs/requirements.txt") run("fab docs") version = run("python setup.py --version") if "dev" in version: abort("Detected Development Version!") print("Release version: {0:s}".format(version)) if prompt("Is this ok?", default="Y", validate=r"^[YyNn]?$") in "yY": run("hg tag {0:s}".format(version)) run("python setup.py egg_info sdist bdist_egg register upload") run("python setup.py build_sphinx upload_sphinx") with msg("Destroying env"): run("rmvirtualenv test") @task() def sync(*args): """Synchronouse Local Repository with Remote(s)""" status = local("hg status", capture=True) if status: abort( ( "Repository is not in a clean state! " "Please commit, revert or shelve!" ) ) with settings(warn_only=True): local("hg pull --update") local("hg pull --update github") local("hg pull --update upstream") local("hg bookmark -r tip master") local("hg push") local("hg push github") local("hg push upstream") circuits-3.1.0/fabfile/docs.py0000644000014400001440000000176712402037676017245 0ustar prologicusers00000000000000# Module: docs # Date: 03rd April 2013 # Author: James Mills, j dot mills at griffith dot edu dot au """Documentation Tasks""" from fabric.api import lcd, local, task from .utils import pip, requires PACKAGE = "circuits" @task() def api(): """Generate the API Documentation""" if PACKAGE is not None: pip(requirements="docs/requirements.txt") local("sphinx-apidoc -f -e -T -o docs/source/api {0:s}".format(PACKAGE)) @task() @requires("make") def clean(): """Delete Generated Documentation""" with lcd("docs"): pip(requirements="requirements.txt") local("make clean") @task(default=True) @requires("make") def build(**options): """Build the Documentation""" pip(requirements="docs/requirements.txt") with lcd("docs"): local("make html") @task() @requires("open") def view(**options): """View the Documentation""" with lcd("docs"): import webbrowser webbrowser.open_new_tab("build/html/index.html") circuits-3.1.0/fabfile/help.py0000644000014400001440000000202412402037676017230 0ustar prologicusers00000000000000# Module: help # Date: 28th November 2013 # Author: James Mills, j dot mills at griffith dot edu dot au """Help Tasks""" from __future__ import print_function from fabric import state from fabric.api import task from fabric.tasks import Task from fabric.task_utils import crawl @task(default=True) def help(name=None): """Display help for a given task Options: name - The task to display help on. To display a list of available tasks type: $ fab -l To display help on a specific task type: $ fab help: """ if name is None: name = "help" task = crawl(name, state.commands) if isinstance(task, Task): doc = getattr(task, "__doc__", None) if doc is not None: print("Help on {0:s}:".format(name)) print() print(doc) else: print("No help available for {0;s}".format(name)) else: print("No such task {0:s}".format(name)) print("For a list of tasks type: fab -l") circuits-3.1.0/fabfile/docker.py0000644000014400001440000000225512402037676017555 0ustar prologicusers00000000000000# Module: docker # Date: 24th May 2014 # Author: James Mills, j dot mills at griffith dot edu dot au """Docker Tasks""" from fabric.api import local, task from .utils import msg, requires, tobool TAG = "prologic/circuits" @task(default=True) @requires("docker") def build(**options): """Build Docker Image Options can be provided to customize the build. The following options are supported: - rebuild -> Whether to rebuild without a cache. - version -> Specific version to tag the image with (Default: latest) """ rebuild = tobool(options.get("rebuild", False)) version = options.get("version", "latest") tag = "{0:s}:{1:s}".format(TAG, version) args = ["docker", "build", "-t", tag, "."] if rebuild: args.insert(-1, "--no-cache") with msg("Building Image"): local(" ".join(args)) @task() @requires("docker") def publish(): """Publish Docker Image""" args = ["docker", "push", TAG] with msg("Pushing Image"): local(" ".join(args)) @task() @requires("docker") def run(): """Run Docker Container""" args = ["docker", "run", "-i", "-t", "--rm", TAG] local(" ".join(args)) circuits-3.1.0/fabfile/utils.py0000644000014400001440000000411312402037676017441 0ustar prologicusers00000000000000# Module: utils # Date: 03rd April 2013 # Author: James Mills, j dot mills at griffith dot edu dot au """Utilities""" from functools import wraps from imp import find_module from contextlib import contextmanager from fabric.api import abort, hide, local, puts, quiet, settings, warn def tobool(s): if isinstance(s, bool): return s return s.lower() in ["yes", "y"] def toint(s): if isinstance(s, int): return s return int(s) @contextmanager def msg(s): """Print message given as ``s`` in a context manager Prints "{s} ... OK" """ puts("{0:s} ... ".format(s), end="", flush=True) with settings(hide("everything")): yield puts("OK", show_prefix=False, flush=True) def pip(*args, **kwargs): requirements = kwargs.get("requirements", None) if requirements is not None: local("pip install -U -r {0:s}".format(kwargs["requirements"])) else: args = list(arg for arg in args if not has_module(arg)) if args: local("pip install {0:s}".format(" ".join(args))) def has_module(name): try: return find_module(name) except ImportError: return False def has_binary(name): with quiet(): return local("which {0:s}".format(name)).succeeded def requires(*names, **kwargs): """Decorator/Wrapper that aborts if not all requirements are met. Aborts if not all requirements are met given a test function (defaulting to :func:`~has_binary`). :param kwargs: Optional kwargs. e.g: ``test=has_module`` :type kwargs: dict :returns: None or aborts :rtype: None """ test = kwargs.get("test", has_binary) def decorator(f): @wraps(f) def wrapper(*args, **kwds): if all(test(name) for name in names): return f(*args, **kwds) else: for name in names: if not test(name): warn("{0:s} not found".format(name)) abort("requires({0:s}) failed".format(repr(names))) return wrapper return decorator circuits-3.1.0/tests/0000755000014400001440000000000012425013643015473 5ustar prologicusers00000000000000circuits-3.1.0/tests/conftest.pyc0000644000014400001440000001300512420400435020026 0ustar prologicusers00000000000000 ?Tc@s%dZddlZddlZddlZddlZddlmZddlmZddlm Z ddl m Z m Z m Z mZde fdYZd efd YZd Zd Zd efdYZeddZejdddZejdZdZdS(spy.test configiN(tsleep(tdeque(tTIMEOUT(thandlert BaseComponenttDebuggertManagertWatchercBsGeZdZedddddZdZd ddZRS( cCstj|_t|_dS(N(t threadingtLockt_lockRtevents(tself((s./home/prologic/work/circuits/tests/conftest.pytinitstchannelt*tpriorityg33333?@cOs$|j|jj|WdQXdS(N(R R tappend(R teventtargstkwargs((s./home/prologic/work/circuits/tests/conftest.pyt _on_events cCs|jjdS(N(R tclear(R ((s./home/prologic/work/circuits/tests/conftest.pyRsg@cCszxtt|tD]}|dkrf|j,x$|jD]}|j|kr@tSq@WWdQXnF|j;x3|jD](}|j|krz||jkrztSqzWWdQXt tqWWdXdS(N( trangetintRtNoneR R tnametTruetchannelsR(R RRttimeouttiR((s./home/prologic/work/circuits/tests/conftest.pytwait!s   N(t__name__t __module__R RRRRR(((s./home/prologic/work/circuits/tests/conftest.pyRs  tFlagcBseZeZRS((R R!tFalsetstatus(((s./home/prologic/work/circuits/tests/conftest.pyR"6scGsUt}d}xB|j|D]1}|sCt}|j||}ntdqW|S(Ng?(R#Rt waitEventRtfireR(tmanagerRt event_nameRtfiredtvaluetr((s./home/prologic/work/circuits/tests/conftest.pytcall_event_from_name:scGst|||j|S(N(R,R(R'RR((s./home/prologic/work/circuits/tests/conftest.pyt call_eventEst WaitEventcBs eZdddZdZRS(g@cs|dkr!t|dd}n||_||_tt|d|fd}|jj||_|_dS(NRcs t_dS(N(RR$(R RR(tflag(s./home/prologic/work/circuits/tests/conftest.pyton_eventTs(RtgetattrRR'R"Rt addHandlerR/(R R'RRRR0((R/s./home/prologic/work/circuits/tests/conftest.pyt__init__Ks    !cCs]zBx;tt|jtD] }|jjr3tSttqWWd|jj |j XdS(N( RRRRR/R$RRR't removeHandlerR(R R((s./home/prologic/work/circuits/tests/conftest.pyR[s   N(R R!RR3R(((s./home/prologic/work/circuits/tests/conftest.pyR.Isg@cCsddlm}xitt||D]Q}t|tjrU|||rntSnt|||krntSt |q'WdS(Ni(R( tcircuits.core.managerRRRt isinstancet collectionstCallableRR1R(tobjtattrR*RRR((s./home/prologic/work/circuits/tests/conftest.pytwait_forestscopetsessioncstfd}|j|td}j|jsPt|jjjrht }nt }t d|j S(NcsjdS(N(tstop((R'(s./home/prologic/work/circuits/tests/conftest.pyt finalizertststartedR ( Rt addfinalizerR.tstartRtAssertionErrortconfigtoptiontverboseRR#Rtregister(trequestR?twaiterRF((R's./home/prologic/work/circuits/tests/conftest.pyR'ps    cs5tjfd}|j|S(Ncs'td}j|jdS(Nt unregistered(R.t unregisterR(RI(R'twatcher(s./home/prologic/work/circuits/tests/conftest.pyR?s (RRGRA(RHR'R?((R'RLs./home/prologic/work/circuits/tests/conftest.pyRLs cCsJtdtfdtfdtfdtjfdtjd fdtffS(NR.R;R-tPLATFORMtPYVERiR,(tdictR.R;R-tsystplatformt version_infoR,(((s./home/prologic/work/circuits/tests/conftest.pytpytest_namespaces    (t__doc__tpytestRPRR7ttimeRRR5RtcircuitsRRRRRtobjectR"R,R-R.RR;tfixtureR'RLRS(((s./home/prologic/work/circuits/tests/conftest.pyts"    "#  circuits-3.1.0/tests/protocols/0000755000014400001440000000000012425013643017517 5ustar prologicusers00000000000000circuits-3.1.0/tests/protocols/__init__.py0000644000014400001440000000000012402037676021625 0ustar prologicusers00000000000000circuits-3.1.0/tests/protocols/test_irc.py0000644000014400001440000000714612406033230021706 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest from pytest import fixture from circuits import handler, Event, Component from circuits.net.events import read, write from circuits.protocols.irc import IRC from circuits.protocols.irc import strip, joinprefix, parseprefix from circuits.protocols.irc import ( PASS, USER, NICK, PONG, QUIT, JOIN, PART, PRIVMSG, NOTICE, AWAY, KICK, TOPIC, MODE, INVITE, NAMES, WHOIS ) from circuits.six import u class App(Component): def init(self): IRC().register(self) self.data = [] self.events = [] @handler(False) def reset(self): self.data = [] self.events = [] @handler() def _on_event(self, event, *args, **kwargs): self.events.append(event) def request(self, message): self.fire(write(bytes(message))) def write(self, data): self.data.append(data) @fixture(scope="function") def app(request): app = App() while app: app.flush() return app def test_strip(): s = ":\x01\x02test\x02\x01" s = strip(s) assert s == "\x01\x02test\x02\x01" s = ":\x01\x02test\x02\x01" s = strip(s, color=True) assert s == "test" def test_joinprefix(): nick, ident, host = "test", "foo", "localhost" s = joinprefix(nick, ident, host) assert s == "test!foo@localhost" def test_parseprefix(): s = "test!foo@localhost" nick, ident, host = parseprefix(s) assert nick == "test" assert ident == "foo" assert host == "localhost" s = "test" nick, ident, host = parseprefix(s) assert nick == "test" assert ident is None assert host is None @pytest.mark.parametrize("event,data", [ (PASS("secret"), b"PASS secret\r\n"), ( USER("foo", "localhost", "localhost", "Test Client"), b"USER foo localhost localhost :Test Client\r\n" ), (NICK("test"), b"NICK test\r\n"), (PONG("localhost"), b"PONG :localhost\r\n"), (QUIT(), b"QUIT Leaving\r\n"), (QUIT("Test"), b"QUIT Test\r\n"), (QUIT("Test Message"), b"QUIT :Test Message\r\n"), (JOIN("#test"), b"JOIN #test\r\n"), (JOIN("#test", "secret"), b"JOIN #test secret\r\n"), (PART("#test"), b"PART #test\r\n"), (PRIVMSG("test", "Hello"), b"PRIVMSG test Hello\r\n"), (PRIVMSG("test", "Hello World"), b"PRIVMSG test :Hello World\r\n"), (NOTICE("test", "Hello"), b"NOTICE test Hello\r\n"), (NOTICE("test", "Hello World"), b"NOTICE test :Hello World\r\n"), (KICK("#test", "test"), b"KICK #test test :\r\n"), (KICK("#test", "test", "Bye"), b"KICK #test test Bye\r\n"), (KICK("#test", "test", "Good Bye!"), b"KICK #test test :Good Bye!\r\n"), (TOPIC("#test", "Hello World!"), b"TOPIC #test :Hello World!\r\n"), (MODE("+i"), b"MODE +i\r\n"), (MODE("#test", "+o", "test"), b"MODE #test +o test\r\n"), (INVITE("test", "#test"), b"INVITE test #test\r\n"), (NAMES(), b"NAMES\r\n"), (NAMES("#test"), b"NAMES #test\r\n"), (AWAY("I am away."), b"AWAY :I am away.\r\n"), (WHOIS("somenick"), b"WHOIS :somenick\r\n"), ]) def test_commands(event, data): message = event.args[0] return bytes(message) == data @pytest.mark.parametrize("data,event", [ ( b":localhost NOTICE * :*** Looking up your hostname...\r\n", Event.create( "notice", (u("localhost"), None, None), u("*"), u("*** Looking up your hostname..."), ) ), ]) def test_responses(app, data, event): app.reset() app.fire(read(data)) while app: app.flush() e = app.events[-1] assert event.name == e.name assert event.args == e.args assert event.kwargs == e.kwargs circuits-3.1.0/tests/protocols/__pycache__/0000755000014400001440000000000012425013643021727 5ustar prologicusers00000000000000circuits-3.1.0/tests/protocols/__pycache__/test_irc.cpython-33-PYTEST.pyc0000644000014400001440000002633312414363411027222 0ustar prologicusers00000000000000 6Tfc@sddlZddljjZddlZddlmZddlm Z m Z m Z ddl m Z mZddlmZddlmZmZmZddlmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#ddl$m%Z%Gd d d e Z&ed d d dZ'ddZ(ddZ)ddZ*ej+j,deddfedddddfeddfeddfedfed d!fed"d#fed$d%fed$dd&fed$d'fedd(d)fedd*d+fedd(d,fedd*d-fed$dd.fed$dd/d0fed$dd1d2fed$d3d4fe d5d6fe d$d7dd8fe!dd$d9fe"d:fe"d$d;fed<d=fe#d>d?fgd@dAZ-ej+j,dBdCe j.dDe%dddfe%dEe%dFfgdGdHZ0dS(IiN(ufixture(uhandleruEventu Component(ureaduwrite(uIRC(ustripu joinprefixu parseprefix(uPASSuUSERuNICKuPONGuQUITuJOINuPARTuPRIVMSGuNOTICEuAWAYuKICKuTOPICuMODEuINVITEuNAMESuWHOIS(uucBse|EeZdZddZed ddZeddZddZd d Z d S( uAppcCs&tj|g|_g|_dS(N(uIRCuregisterudatauevents(uself((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyuinits uApp.initcCsg|_g|_dS(N(udatauevents(uself((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyureset s u App.resetcOs|jj|dS(N(ueventsuappend(uselfueventuargsukwargs((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyu _on_event%su App._on_eventcCs|jtt|dS(N(ufireuwriteubytes(uselfumessage((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyurequest)su App.requestcCs|jj|dS(N(udatauappend(uselfudata((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyuwrite,su App.writeNF( u__name__u __module__u __qualname__uinituhandleruFalseuresetu _on_eventurequestuwrite(u __locals__((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyuApps   uAppuscopeufunctioncCs$t}x|r|jq W|S(N(uAppuflush(urequestuapp((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyuapp0s  uappcCsd}t|}d}||k}|stjd |fd||fitj|d6dtjks|tj|rtj|ndd6}di|d 6}ttj|nd}}d}t|d d}d }||k}|stjd|fd||fitj|d6dtjksKtj|rZtj|ndd6}di|d 6}ttj|nd}}dS(Nu :testutestu==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5ucolorutest(u==(u%(py0)s == %(py3)suassert %(py5)sT(u==(u%(py0)s == %(py3)suassert %(py5)s( ustripu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuTrue(usu @py_assert2u @py_assert1u @py_format4u @py_format6((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyu test_strip:s$  l  lu test_stripcCsd \}}}t|||}d}||k}|stjd|fd||fitj|d6dtjkstj|rtj|ndd 6}di|d 6}ttj|nd}}dS(Nutestufoou localhostutest!foo@localhostu==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(utestufoou localhost(u==(u%(py0)s == %(py3)suassert %(py5)s( u joinprefixu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(unickuidentuhostusu @py_assert2u @py_assert1u @py_format4u @py_format6((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyutest_joinprefixDs lutest_joinprefixc Csd}t|\}}}d}||k}|stjd|fd||fitj|d6dtjkstj|rtj|ndd6}di|d 6}ttj|nd}}d }||k}|stjd|fd||fitj|d6d tjks<tj|rKtj|nd d6}di|d 6}ttj|nd}}d }||k}|s6tjd|fd||fitj|d6dtjkstj|rtj|ndd6}di|d 6}ttj|nd}}d}t|\}}}d}||k}|stjd|fd||fitj|d6dtjkstj|rtj|ndd6}d i|d 6}ttj|nd}}|dk}|stjd!|fd"|dfidtjksftjdrutjdndd6d tjkstj|rtj|nd d6}d#i|d6} ttj| nd}|dk}|stjd$|fd%|dfidtjks:tjdrItjdndd6dtjksqtj|rtj|ndd6}d&i|d6} ttj| nd}dS('Nutest!foo@localhostutestu==u%(py0)s == %(py3)supy3unickupy0uuassert %(py5)supy5ufoouidentu localhostuhostuisu%(py0)s is %(py2)suNoneupy2uassert %(py4)supy4(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uis(u%(py0)s is %(py2)suassert %(py4)s(uis(u%(py0)s is %(py2)suassert %(py4)s( u parseprefixu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone( usunickuidentuhostu @py_assert2u @py_assert1u @py_format4u @py_format6u @py_format3u @py_format5((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyutest_parseprefixJsX l  l  l  l   utest_parseprefixu event,datausecrets PASS secret ufoou localhostu Test Clients+USER foo localhost localhost :Test Client utests NICK test sPONG :localhost sQUIT Leaving uTests QUIT Test u Test MessagesQUIT :Test Message u#tests JOIN #test sJOIN #test secret s PART #test uHellosPRIVMSG test Hello u Hello WorldsPRIVMSG test :Hello World sNOTICE test Hello sNOTICE test :Hello World sKICK #test test : uByesKICK #test test Bye u Good Bye!sKICK #test test :Good Bye! u Hello World!sTOPIC #test :Hello World! u+is MODE +i u+osMODE #test +o test sINVITE test #test sNAMES s NAMES #test u I am away.sAWAY :I am away. usomenicksWHOIS :somenick cCs|jd}t||kS(Ni(uargsubytes(ueventudataumessage((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyu test_commandsXs u test_commandsu data,events6:localhost NOTICE * :*** Looking up your hostname... unoticeu*u*** Looking up your hostname...c Cso|j|jt|x|r3|jq W|jd}|j}|j}||k}|sAtjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6dt j kstj |r tj|ndd 6}di|d 6}t tj |nd}}}|j}|j}||k}|sOtjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6dt j ks tj |rtj|ndd 6}di|d 6}t tj |nd}}}|j}|j}||k}|s]tjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6dt j kstj |r)tj|ndd 6}di|d 6}t tj |nd}}}dS(Niu==uF%(py2)s {%(py2)s = %(py0)s.name } == %(py6)s {%(py6)s = %(py4)s.name }upy2ueventupy0upy6ueupy4uuassert %(py8)supy8uF%(py2)s {%(py2)s = %(py0)s.args } == %(py6)s {%(py6)s = %(py4)s.args }uJ%(py2)s {%(py2)s = %(py0)s.kwargs } == %(py6)s {%(py6)s = %(py4)s.kwargs }i(u==(uF%(py2)s {%(py2)s = %(py0)s.name } == %(py6)s {%(py6)s = %(py4)s.name }uassert %(py8)s(u==(uF%(py2)s {%(py2)s = %(py0)s.args } == %(py6)s {%(py6)s = %(py4)s.args }uassert %(py8)s(u==(uJ%(py2)s {%(py2)s = %(py0)s.kwargs } == %(py6)s {%(py6)s = %(py4)s.kwargs }uassert %(py8)s(uresetufireureaduflushueventsunameu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuargsukwargs( uappudataueventueu @py_assert1u @py_assert5u @py_assert3u @py_format7u @py_format9((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyutest_responses{s:      utest_responses(1ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestufixtureucircuitsuhandleruEventu Componentucircuits.net.eventsureaduwriteucircuits.protocols.ircuIRCustripu joinprefixu parseprefixuPASSuUSERuNICKuPONGuQUITuJOINuPARTuPRIVMSGuNOTICEuAWAYuKICKuTOPICuMODEuINVITEuNAMESuWHOISu circuits.sixuuuAppuappu test_striputest_joinprefixutest_parseprefixumarku parametrizeu test_commandsucreateuNoneutest_responses(((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyus\  j     $ circuits-3.1.0/tests/protocols/__pycache__/test_line.cpython-27-PYTEST.pyc0000644000014400001440000001160112414363102027364 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z ddl m Z m Z de fdYZ de fdYZd e fd YZd Zd ZdS( iN(t defaultdict(tLine(tEventt ComponenttreadcBseZdZRS(s read Event(t__name__t __module__t__doc__(((s9/home/prologic/work/circuits/tests/protocols/test_line.pyR stAppcBseZgZdZRS(cCs|jj|dS(N(tlinestappend(tselftline((s9/home/prologic/work/circuits/tests/protocols/test_line.pyR s(RRR R (((s9/home/prologic/work/circuits/tests/protocols/test_line.pyR st AppServercBseZdZgZdZRS(tservercCs|jj||fdS(N(R R (R tsockR ((s9/home/prologic/work/circuits/tests/protocols/test_line.pyR s(RRtchannelR R (((s9/home/prologic/work/circuits/tests/protocols/test_line.pyR scCsAt}tj|x|r/|jqW|jtdx|rY|jqFW|jd}d}||k}|stjd|fd||fitj |d6tj |d6}di|d 6}t tj |nd}}}|jd }d }||k}|stjd|fd||fitj |d6tj |d6}di|d 6}t tj |nd}}}|jd }d}||k}|s/tjd|fd||fitj |d6tj |d6}di|d 6}t tj |nd}}}dS(Ns1 2 3 4it1s==s%(py1)s == %(py4)stpy1tpy4tsassert %(py6)stpy6it2it3(s==(s%(py1)s == %(py4)ssassert %(py6)s(s==(s%(py1)s == %(py4)ssassert %(py6)s(s==(s%(py1)s == %(py4)ssassert %(py6)s( RRtregistertflushtfireRR t @pytest_art_call_reprcomparet _safereprtAssertionErrort_format_explanationtNone(tappt @py_assert0t @py_assert3t @py_assert2t @py_format5t @py_format7((s9/home/prologic/work/circuits/tests/protocols/test_line.pyttests>     E  E  EcCs[t}tt}td|jd|jj|x|rM|jq:W|jt dd|jt ddx|r|jq}W|j d}d}||k}|s$t j d|fd||fit j |d 6t j |d 6}di|d6}tt j|nd}}}|j d}d}||k}|st j d|fd||fit j |d 6t j |d 6}di|d6}tt j|nd}}}|j d}d}||k}|sft j d|fd||fit j |d 6t j |d 6}di|d6}tt j|nd}}}|j d}d }||k}|st j d!|fd"||fit j |d 6t j |d 6}d#i|d6}tt j|nd}}}|j d}d$}||k}|st j d%|fd&||fit j |d 6t j |d 6}d'i|d6}tt j|nd}}}|j d}d(}||k}|sIt j d)|fd*||fit j |d 6t j |d 6}d+i|d6}tt j|nd}}}dS(,Nt getBuffert updateBufferis1 2 3 4iiRs==s%(py1)s == %(py4)sRRRsassert %(py6)sRRRiii(iR(s==(s%(py1)s == %(py4)ssassert %(py6)s(iR(s==(s%(py1)s == %(py4)ssassert %(py6)s(iR(s==(s%(py1)s == %(py4)ssassert %(py6)s(iR(s==(s%(py1)s == %(py4)ssassert %(py6)s(iR(s==(s%(py1)s == %(py4)ssassert %(py6)s(iR(s==(s%(py1)s == %(py4)ssassert %(py6)s(R RtbytesRt __getitem__t __setitem__RRRRR RRRRRR (R!tbuffersR"R#R$R%R&((s9/home/prologic/work/circuits/tests/protocols/test_line.pyt test_server0sx        E  E  E  E  E  E(t __builtin__t @py_builtinst_pytest.assertion.rewritet assertiontrewriteRt collectionsRtcircuits.protocolsRtcircuitsRRRRR R'R.(((s9/home/prologic/work/circuits/tests/protocols/test_line.pyts  circuits-3.1.0/tests/protocols/__pycache__/test_line.cpython-34-PYTEST.pyc0000644000014400001440000001000312414363522027363 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZddlm Z ddl m Z m Z Gddde Z Gddde ZGd d d e Zd d Zd dZdS)N) defaultdict)Line)Event Componentc@seZdZdZdS)readz read EventN)__name__ __module__ __qualname____doc__r r 9/home/prologic/work/circuits/tests/protocols/test_line.pyr s rc@s"eZdZgZddZdS)AppcCs|jj|dS)N)linesappend)selfliner r r rszApp.lineN)rrr rrr r r r r s r c@s(eZdZdZgZddZdS) AppServerservercCs|jj||fdS)N)rr)rsockrr r r rszAppServer.lineN)rrr channelrrr r r r rs rcCsAt}tj|x|r/|jqW|jtdx|rY|jqFW|jd}d}||k}|stjd|fd||fitj |d6tj |d6}di|d 6}t tj |nt }}}|jd }d }||k}|stjd|fd||fitj |d6tj |d6}di|d 6}t tj |nt }}}|jd }d}||k}|s/tjd|fd||fitj |d6tj |d6}di|d 6}t tj |nt }}}dS)Ns1 2 3 4r1==%(py1)s == %(py4)spy1py4assert %(py6)spy623)r)rr)r)rr)r)rr) r rregisterflushfirerr @pytest_ar_call_reprcompare _safereprAssertionError_format_explanationNone)app @py_assert0 @py_assert3 @py_assert2 @py_format5 @py_format7r r r tests>     E  E  Er1cCs[t}tt}td|jd|jj|x|rM|jq:W|jt dd|jt ddx|r|jq}W|j d}d}||k}|s$t j d|fd||fit j |d 6t j |d 6}di|d6}tt j|nt}}}|j d}d}||k}|st j d|fd||fit j |d 6t j |d 6}di|d6}tt j|nt}}}|j d}d}||k}|sft j d|fd||fit j |d 6t j |d 6}di|d6}tt j|nt}}}|j d}d }||k}|st j d!|fd"||fit j |d 6t j |d 6}d#i|d6}tt j|nt}}}|j d}d$}||k}|st j d%|fd&||fit j |d 6t j |d 6}d'i|d6}tt j|nt}}}|j d}d(}||k}|sIt j d)|fd*||fit j |d 6t j |d 6}d+i|d6}tt j|nt}}}dS),N getBuffer updateBufferrs1 2 3 4r rrr%(py1)s == %(py4)srrrassert %(py6)srrr!)rr)r)r4r5)rr)r)r4r5)rr!)r)r4r5)r r)r)r4r5)r r)r)r4r5)r r!)r)r4r5)rrbytesr __getitem__ __setitem__r"r#r$rrr%r&r'r(r)r*)r+Zbuffersr,r-r.r/r0r r r test_server0sr  "    E  E  E  E  E  Er<)builtins @py_builtins_pytest.assertion.rewrite assertionrewriter% collectionsrZcircuits.protocolsrcircuitsrrrr rr1r<r r r r s  circuits-3.1.0/tests/protocols/__pycache__/test_line.cpython-32-PYTEST.pyc0000644000014400001440000001252512414363276027402 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlmZddlm Z ddl m Z m Z Gdde Z Gdde ZGd d e Zd Zd ZdS( iN(u defaultdict(uLine(uEventu ComponentcBs|EeZdZdS(u read EventN(u__name__u __module__u__doc__(u __locals__((u9/home/prologic/work/circuits/tests/protocols/test_line.pyuread s ureadcBs|EeZgZdZdS(cCs|jj|dS(N(ulinesuappend(uselfuline((u9/home/prologic/work/circuits/tests/protocols/test_line.pyulinesN(u__name__u __module__ulinesuline(u __locals__((u9/home/prologic/work/circuits/tests/protocols/test_line.pyuApp s uAppcBs#|EeZdZgZdZdS(uservercCs|jj||fdS(N(ulinesuappend(uselfusockuline((u9/home/prologic/work/circuits/tests/protocols/test_line.pyulinesN(u__name__u __module__uchannelulinesuline(u __locals__((u9/home/prologic/work/circuits/tests/protocols/test_line.pyu AppServers u AppServercCsAt}tj|x|r/|jqW|jtdx|rY|jqFW|jd}d}||k}|stjd|fd||fitj |d6tj |d6}di|d 6}t tj |nd}}}|jd }d }||k}|stjd|fd||fitj |d6tj |d6}di|d 6}t tj |nd}}}|jd }d}||k}|s/tjd|fd||fitj |d6tj |d6}di|d 6}t tj |nd}}}dS(Ns1 2 3 4is1u==u%(py1)s == %(py4)supy1upy4uuassert %(py6)supy6is2is3(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s( uAppuLineuregisteruflushufireureadulinesu @pytest_aru_call_reprcompareu _saferepruAssertionErroru_format_explanationuNone(uappu @py_assert0u @py_assert3u @py_assert2u @py_format5u @py_format7((u9/home/prologic/work/circuits/tests/protocols/test_line.pyutests>     E  E  EcCs[t}tt}td|jd|jj|x|rM|jq:W|jt dd|jt ddx|r|jq}W|j d}d}||k}|s$t j d|fd||fit j |d 6t j |d 6}di|d6}tt j|nd}}}|j d}d}||k}|st j d|fd||fit j |d 6t j |d 6}di|d6}tt j|nd}}}|j d}d}||k}|sft j d|fd||fit j |d 6t j |d 6}di|d6}tt j|nd}}}|j d}d }||k}|st j d!|fd"||fit j |d 6t j |d 6}d#i|d6}tt j|nd}}}|j d}d$}||k}|st j d%|fd&||fit j |d 6t j |d 6}d'i|d6}tt j|nd}}}|j d}d(}||k}|sIt j d)|fd*||fit j |d 6t j |d 6}d+i|d6}tt j|nd}}}dS(,Nu getBufferu updateBufferis1 2 3 4iis1u==u%(py1)s == %(py4)supy1upy4uuassert %(py6)supy6s2s3iii(is1(u==(u%(py1)s == %(py4)suassert %(py6)s(is2(u==(u%(py1)s == %(py4)suassert %(py6)s(is3(u==(u%(py1)s == %(py4)suassert %(py6)s(is1(u==(u%(py1)s == %(py4)suassert %(py6)s(is2(u==(u%(py1)s == %(py4)suassert %(py6)s(is3(u==(u%(py1)s == %(py4)suassert %(py6)s(u AppServeru defaultdictubytesuLineu __getitem__u __setitem__uregisteruflushufireureadulinesu @pytest_aru_call_reprcompareu _saferepruAssertionErroru_format_explanationuNone(uappubuffersu @py_assert0u @py_assert3u @py_assert2u @py_format5u @py_format7((u9/home/prologic/work/circuits/tests/protocols/test_line.pyu test_server0sx        E  E  E  E  E  E(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru collectionsu defaultdictucircuits.protocolsuLineucircuitsuEventu ComponentureaduAppu AppServerutestu test_server(((u9/home/prologic/work/circuits/tests/protocols/test_line.pyus  circuits-3.1.0/tests/protocols/__pycache__/__init__.cpython-33.pyc0000644000014400001440000000022712414363411026111 0ustar prologicusers00000000000000 ?Tc@sdS(N((((u8/home/prologic/work/circuits/tests/protocols/__init__.pyuscircuits-3.1.0/tests/protocols/__pycache__/__init__.cpython-34.pyc0000644000014400001440000000021312414363522026110 0ustar prologicusers00000000000000 ?T@sdS)Nrrr8/home/prologic/work/circuits/tests/protocols/__init__.pyscircuits-3.1.0/tests/protocols/__pycache__/test_irc.cpython-32-PYTEST.pyc0000644000014400001440000002575012414363276027234 0ustar prologicusers00000000000000l 6Tfc@srddlZddljjZddlZddlmZddlm Z m Z m Z ddl m Z mZddlmZddlmZmZmZddlmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#ddl$m%Z%Gd d e Z&ed d d Z'dZ(dZ)dZ*ej+j,deddfedddddfeddfeddfedfeddfeddfed d!fed dd"fed d#fedd$d%fedd&d'fedd$d(fedd&d)fed dd*fed dd+d,fed dd-d.fed d/d0fe d1d2fe d d3dd4fe!dd d5fe"d6fe"d d7fed8d9fe#d:d;fgd<Z-ej+j,d=d>e j.d?e%dddfe%d@e%dAfgdBZ0dS(CiN(ufixture(uhandleruEventu Component(ureaduwrite(uIRC(ustripu joinprefixu parseprefix(uPASSuUSERuNICKuPONGuQUITuJOINuPARTuPRIVMSGuNOTICEuAWAYuKICKuTOPICuMODEuINVITEuNAMESuWHOIS(uucBsP|EeZdZeddZedZdZdZdS(cCs&tj|g|_g|_dS(N(uIRCuregisterudatauevents(uself((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyuinits cCsg|_g|_dS(N(udatauevents(uself((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyureset s cOs|jj|dS(N(ueventsuappend(uselfueventuargsukwargs((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyu _on_event%scCs|jtt|dS(N(ufireuwriteubytes(uselfumessage((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyurequest)scCs|jj|dS(N(udatauappend(uselfudata((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyuwrite,sNF( u__name__u __module__uinituhandleruFalseuresetu _on_eventurequestuwrite(u __locals__((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyuApps   uAppuscopeufunctioncCs$t}x|r|jq W|S(N(uAppuflush(urequestuapp((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyuapp0s  cCsd}t|}d}||k}|stjd |fd||fitj|d6dtjks|tj|rtj|ndd6}di|d 6}ttj|nd}}d}t|d d}d }||k}|stjd|fd||fitj|d6dtjksKtj|rZtj|ndd6}di|d 6}ttj|nd}}dS(Nu :testutestu==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5ucolorutest(u==(u%(py0)s == %(py3)suassert %(py5)sT(u==(u%(py0)s == %(py3)suassert %(py5)s( ustripu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuTrue(usu @py_assert2u @py_assert1u @py_format4u @py_format6((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyu test_strip:s$  l  lcCsd \}}}t|||}d}||k}|stjd|fd||fitj|d6dtjkstj|rtj|ndd 6}di|d 6}ttj|nd}}dS(Nutestufoou localhostutest!foo@localhostu==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(utestufoou localhost(u==(u%(py0)s == %(py3)suassert %(py5)s( u joinprefixu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(unickuidentuhostusu @py_assert2u @py_assert1u @py_format4u @py_format6((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyutest_joinprefixDs lc Csd}t|\}}}d}||k}|stjd|fd||fitj|d6dtjkstj|rtj|ndd6}di|d 6}ttj|nd}}d }||k}|stjd|fd||fitj|d6d tjks<tj|rKtj|nd d6}di|d 6}ttj|nd}}d }||k}|s6tjd|fd||fitj|d6dtjkstj|rtj|ndd6}di|d 6}ttj|nd}}d}t|\}}}d}||k}|stjd|fd||fitj|d6dtjkstj|rtj|ndd6}d i|d 6}ttj|nd}}|dk}|stjd!|fd"|dfidtjksftjdrutjdndd6d tjkstj|rtj|nd d6}d#i|d6} ttj| nd}|dk}|stjd$|fd%|dfidtjks:tjdrItjdndd6dtjksqtj|rtj|ndd6}d&i|d6} ttj| nd}dS('Nutest!foo@localhostutestu==u%(py0)s == %(py3)supy3unickupy0uuassert %(py5)supy5ufoouidentu localhostuhostuisu%(py0)s is %(py2)suNoneupy2uassert %(py4)supy4(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uis(u%(py0)s is %(py2)suassert %(py4)s(uis(u%(py0)s is %(py2)suassert %(py4)s( u parseprefixu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone( usunickuidentuhostu @py_assert2u @py_assert1u @py_format4u @py_format6u @py_format3u @py_format5((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyutest_parseprefixJsX l  l  l  l   u event,datausecrets PASS secret ufoou localhostu Test Clients+USER foo localhost localhost :Test Client utests NICK test sPONG :localhost sQUIT Leaving uTests QUIT Test u Test MessagesQUIT :Test Message u#tests JOIN #test sJOIN #test secret s PART #test uHellosPRIVMSG test Hello u Hello WorldsPRIVMSG test :Hello World sNOTICE test Hello sNOTICE test :Hello World sKICK #test test : uByesKICK #test test Bye u Good Bye!sKICK #test test :Good Bye! u Hello World!sTOPIC #test :Hello World! u+is MODE +i u+osMODE #test +o test sINVITE test #test sNAMES s NAMES #test u I am away.sAWAY :I am away. usomenicksWHOIS :somenick cCs|jd}t||kS(Ni(uargsubytes(ueventudataumessage((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyu test_commandsXs u data,events6:localhost NOTICE * :*** Looking up your hostname... unoticeu*u*** Looking up your hostname...c Cso|j|jt|x|r3|jq W|jd}|j}|j}||k}|sAtjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6dt j kstj |r tj|ndd 6}di|d 6}t tj |nd}}}|j}|j}||k}|sOtjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6dt j ks tj |rtj|ndd 6}di|d 6}t tj |nd}}}|j}|j}||k}|s]tjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6dt j kstj |r)tj|ndd 6}di|d 6}t tj |nd}}}dS(Niu==uF%(py2)s {%(py2)s = %(py0)s.name } == %(py6)s {%(py6)s = %(py4)s.name }upy2ueventupy0upy6ueupy4uuassert %(py8)supy8uF%(py2)s {%(py2)s = %(py0)s.args } == %(py6)s {%(py6)s = %(py4)s.args }uJ%(py2)s {%(py2)s = %(py0)s.kwargs } == %(py6)s {%(py6)s = %(py4)s.kwargs }i(u==(uF%(py2)s {%(py2)s = %(py0)s.name } == %(py6)s {%(py6)s = %(py4)s.name }uassert %(py8)s(u==(uF%(py2)s {%(py2)s = %(py0)s.args } == %(py6)s {%(py6)s = %(py4)s.args }uassert %(py8)s(u==(uJ%(py2)s {%(py2)s = %(py0)s.kwargs } == %(py6)s {%(py6)s = %(py4)s.kwargs }uassert %(py8)s(uresetufireureaduflushueventsunameu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuargsukwargs( uappudataueventueu @py_assert1u @py_assert5u @py_assert3u @py_format7u @py_format9((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyutest_responses{s:      (1ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestufixtureucircuitsuhandleruEventu Componentucircuits.net.eventsureaduwriteucircuits.protocols.ircuIRCustripu joinprefixu parseprefixuPASSuUSERuNICKuPONGuQUITuJOINuPARTuPRIVMSGuNOTICEuAWAYuKICKuTOPICuMODEuINVITEuNAMESuWHOISu circuits.sixuuuAppuappu test_striputest_joinprefixutest_parseprefixumarku parametrizeu test_commandsucreateuNoneutest_responses(((u8/home/prologic/work/circuits/tests/protocols/test_irc.pyus\  j     ! circuits-3.1.0/tests/protocols/__pycache__/__init__.cpython-32.pyc0000644000014400001440000000022312414363276026115 0ustar prologicusers00000000000000l ?Tc@sdS(N((((u8/home/prologic/work/circuits/tests/protocols/__init__.pyuscircuits-3.1.0/tests/protocols/__pycache__/test_irc.cpython-26-PYTEST.pyc0000644000014400001440000002341712407376151027233 0ustar prologicusers00000000000000 6Tfc&@suddkZddkiiZddkZddklZddkl Z l Z l Z ddk l Z lZddklZddklZlZlZddklZlZlZlZlZlZlZlZlZlZlZlZl Z l!Z!l"Z"l#Z#ddk$l%Z%d e fd YZ&ed d d Z'dZ(dZ)dZ*ei+i,deddfedddddfeddfeddfedfeddfeddfed d!fed dd"fed d#fedd$d%fedd&d'fedd$d(fedd&d)fed dd*fed dd+d,fed dd-d.fed d/d0fe d1d2fe d d3dd4fe!dd d5fe"d6fe"d d7fed8d9fe#d:d;fgd<Z-ei+i,d=d>e i.d?e%dddfe%d@e%dAfgdBZ0dS(CiN(tfixture(thandlertEventt Component(treadtwrite(tIRC(tstript joinprefixt parseprefix(tPASStUSERtNICKtPONGtQUITtJOINtPARTtPRIVMSGtNOTICEtAWAYtKICKtTOPICtMODEtINVITEtNAMEStWHOIS(tutAppcBsJeZdZeedZedZdZdZRS(cCs&ti|g|_g|_dS(N(Rtregistertdatatevents(tself((s8/home/prologic/work/circuits/tests/protocols/test_irc.pytinits cCsg|_g|_dS(N(RR(R((s8/home/prologic/work/circuits/tests/protocols/test_irc.pytreset s cOs|ii|dS(N(Rtappend(Rteventtargstkwargs((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyt _on_event%scCs|itt|dS(N(tfireRtbytes(Rtmessage((s8/home/prologic/work/circuits/tests/protocols/test_irc.pytrequest)scCs|ii|dS(N(RR"(RR((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyR,s( t__name__t __module__R RtFalseR!R&R*R(((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyRs   tscopetfunctioncCs&t}x|o|iq W|S(N(Rtflush(R*tapp((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyR10s  cCsd}t|}d}||j}|ptid |fd ||fhdtijpti|oti|ndd6ti|d6}dh|d 6}tti|nd}}d}t|d t }d }||j}|ptid|fd||fhdtijpti|oti|ndd6ti|d6}dh|d 6}tti|nd}}dS(Ns :teststests==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5tcolorttest(s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s( Rt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetTrue(R2t @py_assert2t @py_assert1t @py_format4t @py_format6((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyt test_strip:s$  o  ocCsd \}}}t|||}d}||j}|ptid |fd||fhdtijpti|oti|ndd6ti|d 6}d h|d 6}tti|nd}}dS(NR7tfoot localhoststest!foo@localhosts==s%(py0)s == %(py3)sR2R3R4sassert %(py5)sR5(stestsfoos localhost(s==(s%(py0)s == %(py3)s( RR8R9R:R;R<R=R>R?R@(tnicktidentthostR2RBRCRDRE((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyttest_joinprefixDs oc Csd}t|\}}}d}||j}|ptid|fd||fhdtijpti|oti|ndd6ti|d6}dh|d 6}tti|nd}}d }||j}|ptid|fd||fhd tijpti|oti|nd d6ti|d6}dh|d 6}tti|nd}}d }||j}|ptid|fd||fhd tijpti|oti|nd d6ti|d6}dh|d 6}tti|nd}}d}t|\}}}d}||j}|ptid|fd||fhdtijpti|oti|ndd6ti|d6}dh|d 6}tti|nd}}|dj}|ptid|fd|dfhd tijpti|oti|nd d6dtijptidotidndd6}dh|d6} tti| nd}|dj}|ptid|fd|dfhd tijpti|oti|nd d6dtijptidotidndd6}dh|d6} tti| nd}dS( Nstest!foo@localhostR7s==s%(py0)s == %(py3)sRIR3R4sassert %(py5)sR5RGRJRHRKtiss%(py0)s is %(py2)sR@tpy2sassert %(py4)stpy4(s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s(RM(s%(py0)s is %(py2)s(RM(s%(py0)s is %(py2)s( R R8R9R:R;R<R=R>R?R@( R2RIRJRKRBRCRDREt @py_format3t @py_format5((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyttest_parseprefixJsX o  o  o  o   s event,datatsecrets PASS secret RGRHs Test Clients+USER foo localhost localhost :Test Client R7s NICK test sPONG :localhost sQUIT Leaving tTests QUIT Test s Test MessagesQUIT :Test Message s#tests JOIN #test sJOIN #test secret s PART #test tHellosPRIVMSG test Hello s Hello WorldsPRIVMSG test :Hello World sNOTICE test Hello sNOTICE test :Hello World sKICK #test test : tByesKICK #test test Bye s Good Bye!sKICK #test test :Good Bye! s Hello World!sTOPIC #test :Hello World! s+is MODE +i s+osMODE #test +o test sINVITE test #test sNAMES s NAMES #test s I am away.sAWAY :I am away. tsomenicksWHOIS :somenick cCs|id}t||jS(Ni(R$R((R#RR)((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyt test_commandsXs s data,events6:localhost NOTICE * :*** Looking up your hostname... tnoticet*s*** Looking up your hostname...c Cs|i|it|x|o|iq W|id}|i}|i}||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6dti jpti |oti |ndd6ti |d 6}d h|d 6}t ti |nd}}}|i}|i}||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6dti jpti |oti |ndd6ti |d 6}d h|d 6}t ti |nd}}}|i}|i}||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6dti jpti |oti |ndd6ti |d 6}d h|d 6}t ti |nd}}}dS(Nis==sF%(py2)s {%(py2)s = %(py0)s.name } == %(py6)s {%(py6)s = %(py4)s.name }R#R3RNteROtpy6sassert %(py8)stpy8sF%(py2)s {%(py2)s = %(py0)s.args } == %(py6)s {%(py6)s = %(py4)s.args }sJ%(py2)s {%(py2)s = %(py0)s.kwargs } == %(py6)s {%(py6)s = %(py4)s.kwargs }(s==(sF%(py2)s {%(py2)s = %(py0)s.name } == %(py6)s {%(py6)s = %(py4)s.name }(s==(sF%(py2)s {%(py2)s = %(py0)s.args } == %(py6)s {%(py6)s = %(py4)s.args }(s==(sJ%(py2)s {%(py2)s = %(py0)s.kwargs } == %(py6)s {%(py6)s = %(py4)s.kwargs }(R!R'RR0RtnameR8R9R:R;R<R=R>R?R@R$R%( R1RR#R[RCt @py_assert5t @py_assert3t @py_format7t @py_format9((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyttest_responses{s<     (1t __builtin__R:t_pytest.assertion.rewritet assertiontrewriteR8tpytestRtcircuitsRRRtcircuits.net.eventsRRtcircuits.protocols.ircRRRR R R R R RRRRRRRRRRRRt circuits.sixRRR1RFRLRRtmarkt parametrizeRXtcreateR@Rc(((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyts\  j     ! circuits-3.1.0/tests/protocols/__pycache__/test_line.cpython-26-PYTEST.pyc0000644000014400001440000001135612407376151027404 0ustar prologicusers00000000000000 ?Tc@sddkZddkiiZddklZddkl Z ddk l Z l Z de fdYZ de fdYZd e fd YZd Zd ZdS( iN(t defaultdict(tLine(tEventt ComponenttreadcBseZdZRS(s read Event(t__name__t __module__t__doc__(((s9/home/prologic/work/circuits/tests/protocols/test_line.pyR stAppcBseZgZdZRS(cCs|ii|dS(N(tlinestappend(tselftline((s9/home/prologic/work/circuits/tests/protocols/test_line.pyR s(RRR R (((s9/home/prologic/work/circuits/tests/protocols/test_line.pyR st AppServercBseZdZgZdZRS(tservercCs|ii||fdS(N(R R (R tsockR ((s9/home/prologic/work/circuits/tests/protocols/test_line.pyR s(RRtchannelR R (((s9/home/prologic/work/circuits/tests/protocols/test_line.pyR scCsKt}ti|x|o|iqW|itdx|o|iqHW|id}d}||j}|potid|fd||fhti |d6ti |d6}dh|d 6}t ti |nd}}}|id }d }||j}|potid|fd||fhti |d6ti |d6}dh|d 6}t ti |nd}}}|id }d }||j}|potid|fd||fhti |d6ti |d6}dh|d 6}t ti |nd}}}dS(Ns1 2 3 4it1s==s%(py1)s == %(py4)stpy1tpy4sassert %(py6)stpy6it2it3(s==(s%(py1)s == %(py4)s(s==(s%(py1)s == %(py4)s(s==(s%(py1)s == %(py4)s( RRtregistertflushtfireRR t @pytest_art_call_reprcomparet _safereprtAssertionErrort_format_explanationtNone(tappt @py_assert0t @py_assert3t @py_assert2t @py_format5t @py_format7((s9/home/prologic/work/circuits/tests/protocols/test_line.pyttestsB   E  E  EcCskt}tt}td|id|ii|x|o|iq:W|it dd|it ddx|o|iqW|i d}d}||j}|pot i d|fd||fht i |d 6t i |d 6}d h|d 6}tt i|nd}}}|i d}d}||j}|pot i d|fd||fht i |d 6t i |d 6}d h|d 6}tt i|nd}}}|i d}d}||j}|pot i d|fd||fht i |d 6t i |d 6}d h|d 6}tt i|nd}}}|i d}d}||j}|pot i d|fd||fht i |d 6t i |d 6}d h|d 6}tt i|nd}}}|i d}d}||j}|pot i d |fd!||fht i |d 6t i |d 6}d h|d 6}tt i|nd}}}|i d}d"}||j}|pot i d#|fd$||fht i |d 6t i |d 6}d h|d 6}tt i|nd}}}dS(%Nt getBuffert updateBufferis1 2 3 4iiRs==s%(py1)s == %(py4)sRRsassert %(py6)sRRRiii(iR(s==(s%(py1)s == %(py4)s(iR(s==(s%(py1)s == %(py4)s(iR(s==(s%(py1)s == %(py4)s(iR(s==(s%(py1)s == %(py4)s(iR(s==(s%(py1)s == %(py4)s(iR(s==(s%(py1)s == %(py4)s(R RtbytesRt __getitem__t __setitem__RRRRR RRRRRR(R tbuffersR!R"R#R$R%((s9/home/prologic/work/circuits/tests/protocols/test_line.pyt test_server0s|      E  E  E  E  E  E(t __builtin__t @py_builtinst_pytest.assertion.rewritet assertiontrewriteRt collectionsRtcircuits.protocolsRtcircuitsRRRRR R&R-(((s9/home/prologic/work/circuits/tests/protocols/test_line.pyts  circuits-3.1.0/tests/protocols/__pycache__/test_irc.cpython-34-PYTEST.pyc0000644000014400001440000002023512414363522027221 0ustar prologicusers00000000000000 6Tf@sddlZddljjZddlZddlmZddlm Z m Z m Z ddl m Z mZddlmZddlmZmZmZddlmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#ddl$m%Z%Gd d d e Z&ed d d dZ'ddZ(ddZ)ddZ*ej+j,deddfedddddfeddfeddfedfed d!fed"d#fed$d%fed$dd&fed$d'fedd(d)fedd*d+fedd(d,fedd*d-fed$dd.fed$dd/d0fed$dd1d2fed$d3d4fe d5d6fe d$d7dd8fe!dd$d9fe"d:fe"d$d;fed<d=fe#d>d?fgd@dAZ-ej+j,dBdCe j.dDe%dddfe%dEe%dFfgdGdHZ/dS)IN)fixture)handlerEvent Component)readwrite)IRC)strip joinprefix parseprefix)PASSUSERNICKPONGQUITJOINPARTPRIVMSGNOTICEAWAYKICKTOPICMODEINVITENAMESWHOIS)uc@saeZdZddZedddZeddZdd Zd d Zd S) AppcCs&tj|g|_g|_dS)N)rregisterdataevents)selfr"8/home/prologic/work/circuits/tests/protocols/test_irc.pyinits zApp.initFcCsg|_g|_dS)N)rr )r!r"r"r#reset s z App.resetcOs|jj|dS)N)r append)r!eventargskwargsr"r"r# _on_event%sz App._on_eventcCs|jtt|dS)N)firerbytes)r!messager"r"r#request)sz App.requestcCs|jj|dS)N)rr&)r!rr"r"r#r,sz App.writeN) __name__ __module__ __qualname__r$rr%r*r.rr"r"r"r#rs   rscopefunctioncCs$t}x|r|jq W|S)N)rflush)r.appr"r"r#r50s  r5cCsd}t|}d}||k}|stjd|fd||fitj|d6dtjks|tj|rtj|ndd6}di|d 6}ttj|nt }}d}t|d d }d }||k}|stjd|fd||fitj|d6dtjksKtj|rZtj|ndd6}di|d 6}ttj|nt }}dS)Nz :testztest==%(py0)s == %(py3)spy3spy0assert %(py5)spy5colorTtest)r6)r7r<)r6)r7r<) r @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)r9 @py_assert2 @py_assert1 @py_format4 @py_format6r"r"r# test_strip:s$  l  lrMcCsd \}}}t|||}d}||k}|stjd|fd||fitj|d6dtjkstj|rtj|ndd 6}di|d 6}ttj|nt }}dS)Nr?foo localhostztest!foo@localhostr6%(py0)s == %(py3)sr8r9r:r;assert %(py5)sr=)ztestzfooz localhost)r6)rPrQ) r r@rArBrCrDrErFrGrH)nickidenthostr9rIrJrKrLr"r"r#test_joinprefixDs lrUc Csd}t|\}}}d}||k}|stjd|fd||fitj|d6dtjkstj|rtj|ndd6}di|d 6}ttj|nt }}d }||k}|stjd|fd||fitj|d6d tjks<tj|rKtj|nd d6}di|d 6}ttj|nt }}d }||k}|s6tjd|fd||fitj|d6dtjkstj|rtj|ndd6}di|d 6}ttj|nt }}d}t|\}}}d}||k}|stjd|fd||fitj|d6dtjkstj|rtj|ndd6}di|d 6}ttj|nt }}d}||k}|stjd|fd||fitj|d6d tjks|tj|rtj|nd d6}di|d 6}ttj|nt }}d}||k}|svtjd |fd!||fitj|d6dtjks3tj|rBtj|ndd6}d"i|d 6}ttj|nt }}dS)#Nztest!foo@localhostr?r6%(py0)s == %(py3)sr8rRr:r;assert %(py5)sr=rNrSrOrTis%(py0)s is %(py3)s)r6)rVrW)r6)rVrW)r6)rVrW)r6)rVrW)rX)rYrW)rX)rYrW) r r@rArBrCrDrErFrGrH)r9rRrSrTrIrJrKrLr"r"r#test_parseprefixJs\ l  l  l  l  l  lrZz event,datasecrets PASS secret rNrOz Test Clients+USER foo localhost localhost :Test Client r?s NICK test sPONG :localhost sQUIT Leaving Tests QUIT Test z Test MessagesQUIT :Test Message z#tests JOIN #test sJOIN #test secret s PART #test HellosPRIVMSG test Hello z Hello WorldsPRIVMSG test :Hello World sNOTICE test Hello sNOTICE test :Hello World sKICK #test test : ZByesKICK #test test Bye z Good Bye!sKICK #test test :Good Bye! z Hello World!sTOPIC #test :Hello World! z+is MODE +i z+osMODE #test +o test sINVITE test #test sNAMES s NAMES #test z I am away.sAWAY :I am away. ZsomenicksWHOIS :somenick cCs|jd}t||kS)Nr)r(r,)r'rr-r"r"r# test_commandsXs r^z data,events6:localhost NOTICE * :*** Looking up your hostname... Znotice*z*** Looking up your hostname...c Cso|j|jt|x|r3|jq W|jd}|j}|j}||k}|sAtjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6dt j kstj |r tj|ndd 6}di|d 6}t tj |nt}}}|j}|j}||k}|sOtjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6dt j ks tj |rtj|ndd 6}di|d 6}t tj |nt}}}|j}|j}||k}|s]tjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6dt j kstj |r)tj|ndd 6}di|d 6}t tj |nt}}}dS)Nr6F%(py2)s {%(py2)s = %(py0)s.name } == %(py6)s {%(py6)s = %(py4)s.name }py2py6r'r:epy4r;assert %(py8)spy8F%(py2)s {%(py2)s = %(py0)s.args } == %(py6)s {%(py6)s = %(py4)s.args }J%(py2)s {%(py2)s = %(py0)s.kwargs } == %(py6)s {%(py6)s = %(py4)s.kwargs })r6)rarf)r6)rhrf)r6)rirf)r%r+rr4r namer@rArBrCrDrErFrGrHr(r)) r5rr'rdrJ @py_assert5 @py_assert3 @py_format7 @py_format9r"r"r#test_responses{s:      rp)0builtinsrC_pytest.assertion.rewrite assertionrewriter@pytestrcircuitsrrrZcircuits.net.eventsrrZcircuits.protocols.ircrr r r r r rrrrrrrrrrrrrrZ circuits.sixrrr5rMrUrZmark parametrizer^createrpr"r"r"r#s\  j     $ circuits-3.1.0/tests/protocols/__pycache__/test_irc.cpython-27-PYTEST.pyc0000644000014400001440000002366412414363102027226 0ustar prologicusers00000000000000 6Tfc@suddlZddljjZddlZddlmZddlm Z m Z m Z ddl m Z mZddlmZddlmZmZmZddlmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#ddl$m%Z%d e fd YZ&ed d d Z'dZ(dZ)dZ*ej+j,deddfedddddfeddfeddfedfeddfeddfed d!fed dd"fed d#fedd$d%fedd&d'fedd$d(fedd&d)fed dd*fed dd+d,fed dd-d.fed d/d0fe d1d2fe d d3dd4fe!dd d5fe"d6fe"d d7fed8d9fe#d:d;fgd<Z-ej+j,d=d>e j.d?e%dddfe%d@e%dAfgdBZ0dS(CiN(tfixture(thandlertEventt Component(treadtwrite(tIRC(tstript joinprefixt parseprefix(tPASStUSERtNICKtPONGtQUITtJOINtPARTtPRIVMSGtNOTICEtAWAYtKICKtTOPICtMODEtINVITEtNAMEStWHOIS(tutAppcBsJeZdZeedZedZdZdZRS(cCs&tj|g|_g|_dS(N(Rtregistertdatatevents(tself((s8/home/prologic/work/circuits/tests/protocols/test_irc.pytinits cCsg|_g|_dS(N(RR(R((s8/home/prologic/work/circuits/tests/protocols/test_irc.pytreset s cOs|jj|dS(N(Rtappend(Rteventtargstkwargs((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyt _on_event%scCs|jtt|dS(N(tfireRtbytes(Rtmessage((s8/home/prologic/work/circuits/tests/protocols/test_irc.pytrequest)scCs|jj|dS(N(RR"(RR((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyR,s( t__name__t __module__R RtFalseR!R&R*R(((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyRs   tscopetfunctioncCs$t}x|r|jq W|S(N(Rtflush(R*tapp((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyR10s  cCsd}t|}d}||k}|stjd |fd||fitj|d6dtjks|tj|rtj|ndd6}di|d 6}ttj|nd}}d}t|d t }d }||k}|stjd|fd||fitj|d6dtjksKtj|rZtj|ndd6}di|d 6}ttj|nd}}dS(Ns :teststests==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5tcolorttest(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s( Rt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonetTrue(R3t @py_assert2t @py_assert1t @py_format4t @py_format6((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyt test_strip:s$  l  lcCsd \}}}t|||}d}||k}|stjd|fd||fitj|d6dtjkstj|rtj|ndd 6}di|d 6}ttj|nd}}dS(NR8tfoot localhoststest!foo@localhosts==s%(py0)s == %(py3)sR2R3R4R5sassert %(py5)sR6(stestsfoos localhost(s==(s%(py0)s == %(py3)ssassert %(py5)s( RR9R:R;R<R=R>R?R@RA(tnicktidentthostR3RCRDRERF((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyttest_joinprefixDs lc Csd}t|\}}}d}||k}|stjd|fd||fitj|d6dtjkstj|rtj|ndd6}di|d 6}ttj|nd}}d }||k}|stjd|fd||fitj|d6d tjks<tj|rKtj|nd d6}di|d 6}ttj|nd}}d }||k}|s6tjd|fd||fitj|d6dtjkstj|rtj|ndd6}di|d 6}ttj|nd}}d}t|\}}}d}||k}|stjd|fd||fitj|d6dtjkstj|rtj|ndd6}d i|d 6}ttj|nd}}|dk}|stjd!|fd"|dfidtjksftjdrutjdndd6d tjkstj|rtj|nd d6}d#i|d6} ttj| nd}|dk}|stjd$|fd%|dfidtjks:tjdrItjdndd6dtjksqtj|rtj|ndd6}d&i|d6} ttj| nd}dS('Nstest!foo@localhostR8s==s%(py0)s == %(py3)sR2RJR4R5sassert %(py5)sR6RHRKRIRLtiss%(py0)s is %(py2)sRAtpy2sassert %(py4)stpy4(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(RN(s%(py0)s is %(py2)ssassert %(py4)s(RN(s%(py0)s is %(py2)ssassert %(py4)s( R R9R:R;R<R=R>R?R@RA( R3RJRKRLRCRDRERFt @py_format3t @py_format5((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyttest_parseprefixJsX l  l  l  l   s event,datatsecrets PASS secret RHRIs Test Clients+USER foo localhost localhost :Test Client R8s NICK test sPONG :localhost sQUIT Leaving tTests QUIT Test s Test MessagesQUIT :Test Message s#tests JOIN #test sJOIN #test secret s PART #test tHellosPRIVMSG test Hello s Hello WorldsPRIVMSG test :Hello World sNOTICE test Hello sNOTICE test :Hello World sKICK #test test : tByesKICK #test test Bye s Good Bye!sKICK #test test :Good Bye! s Hello World!sTOPIC #test :Hello World! s+is MODE +i s+osMODE #test +o test sINVITE test #test sNAMES s NAMES #test s I am away.sAWAY :I am away. tsomenicksWHOIS :somenick cCs|jd}t||kS(Ni(R$R((R#RR)((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyt test_commandsXs s data,events6:localhost NOTICE * :*** Looking up your hostname... tnoticet*s*** Looking up your hostname...c Cso|j|jt|x|r3|jq W|jd}|j}|j}||k}|sAtjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6dt j kstj |r tj|ndd 6}di|d 6}t tj |nd}}}|j}|j}||k}|sOtjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6dt j ks tj |rtj|ndd 6}di|d 6}t tj |nd}}}|j}|j}||k}|s]tjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6dt j kstj |r)tj|ndd 6}di|d 6}t tj |nd}}}dS(Nis==sF%(py2)s {%(py2)s = %(py0)s.name } == %(py6)s {%(py6)s = %(py4)s.name }ROR#R4tpy6teRPR5sassert %(py8)stpy8sF%(py2)s {%(py2)s = %(py0)s.args } == %(py6)s {%(py6)s = %(py4)s.args }sJ%(py2)s {%(py2)s = %(py0)s.kwargs } == %(py6)s {%(py6)s = %(py4)s.kwargs }(s==(sF%(py2)s {%(py2)s = %(py0)s.name } == %(py6)s {%(py6)s = %(py4)s.name }sassert %(py8)s(s==(sF%(py2)s {%(py2)s = %(py0)s.args } == %(py6)s {%(py6)s = %(py4)s.args }sassert %(py8)s(s==(sJ%(py2)s {%(py2)s = %(py0)s.kwargs } == %(py6)s {%(py6)s = %(py4)s.kwargs }sassert %(py8)s(R!R'RR0RtnameR9R:R;R<R=R>R?R@RAR$R%( R1RR#R]RDt @py_assert5t @py_assert3t @py_format7t @py_format9((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyttest_responses{s:      (1t __builtin__R<t_pytest.assertion.rewritet assertiontrewriteR9tpytestRtcircuitsRRRtcircuits.net.eventsRRtcircuits.protocols.ircRRRR R R R R RRRRRRRRRRRRt circuits.sixRRR1RGRMRStmarkt parametrizeRYtcreateRARd(((s8/home/prologic/work/circuits/tests/protocols/test_irc.pyts\  j     ! circuits-3.1.0/tests/protocols/__pycache__/test_line.cpython-33-PYTEST.pyc0000644000014400001440000001300712414363411027366 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z ddl m Z m Z Gddde Z Gddde ZGd d d e Zd d Zd dZdS(iN(u defaultdict(uLine(uEventu ComponentcBs|EeZdZdZdS(ureadu read EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u9/home/prologic/work/circuits/tests/protocols/test_line.pyuread sureadcBs&|EeZdZgZddZdS(uAppcCs|jj|dS(N(ulinesuappend(uselfuline((u9/home/prologic/work/circuits/tests/protocols/test_line.pyulinesuApp.lineN(u__name__u __module__u __qualname__ulinesuline(u __locals__((u9/home/prologic/work/circuits/tests/protocols/test_line.pyuApp suAppcBs,|EeZdZdZgZddZdS(u AppServeruservercCs|jj||fdS(N(ulinesuappend(uselfusockuline((u9/home/prologic/work/circuits/tests/protocols/test_line.pyulinesuAppServer.lineN(u__name__u __module__u __qualname__uchannelulinesuline(u __locals__((u9/home/prologic/work/circuits/tests/protocols/test_line.pyu AppServersu AppServercCsAt}tj|x|r/|jqW|jtdx|rY|jqFW|jd}d}||k}|stjd|fd||fitj |d6tj |d6}di|d 6}t tj |nd}}}|jd }d }||k}|stjd|fd||fitj |d6tj |d6}di|d 6}t tj |nd}}}|jd }d}||k}|s/tjd|fd||fitj |d6tj |d6}di|d 6}t tj |nd}}}dS(Ns1 2 3 4is1u==u%(py1)s == %(py4)supy1upy4uuassert %(py6)supy6is2is3(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s( uAppuLineuregisteruflushufireureadulinesu @pytest_aru_call_reprcompareu _saferepruAssertionErroru_format_explanationuNone(uappu @py_assert0u @py_assert3u @py_assert2u @py_format5u @py_format7((u9/home/prologic/work/circuits/tests/protocols/test_line.pyutests>     E  E  EutestcCs[t}tt}td|jd|jj|x|rM|jq:W|jt dd|jt ddx|r|jq}W|j d}d}||k}|s$t j d|fd||fit j |d 6t j |d 6}di|d6}tt j|nd}}}|j d}d}||k}|st j d|fd||fit j |d 6t j |d 6}di|d6}tt j|nd}}}|j d}d}||k}|sft j d|fd||fit j |d 6t j |d 6}di|d6}tt j|nd}}}|j d}d }||k}|st j d!|fd"||fit j |d 6t j |d 6}d#i|d6}tt j|nd}}}|j d}d$}||k}|st j d%|fd&||fit j |d 6t j |d 6}d'i|d6}tt j|nd}}}|j d}d(}||k}|sIt j d)|fd*||fit j |d 6t j |d 6}d+i|d6}tt j|nd}}}dS(,Nu getBufferu updateBufferis1 2 3 4iis1u==u%(py1)s == %(py4)supy1upy4uuassert %(py6)supy6s2s3iii(is1(u==(u%(py1)s == %(py4)suassert %(py6)s(is2(u==(u%(py1)s == %(py4)suassert %(py6)s(is3(u==(u%(py1)s == %(py4)suassert %(py6)s(is1(u==(u%(py1)s == %(py4)suassert %(py6)s(is2(u==(u%(py1)s == %(py4)suassert %(py6)s(is3(u==(u%(py1)s == %(py4)suassert %(py6)s(u AppServeru defaultdictubytesuLineu __getitem__u __setitem__uregisteruflushufireureadulinesu @pytest_aru_call_reprcompareu _saferepruAssertionErroru_format_explanationuNone(uappubuffersu @py_assert0u @py_assert3u @py_assert2u @py_format5u @py_format7((u9/home/prologic/work/circuits/tests/protocols/test_line.pyu test_server0sx        E  E  E  E  E  Eu test_server(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru collectionsu defaultdictucircuits.protocolsuLineucircuitsuEventu ComponentureaduAppu AppServerutestu test_server(((u9/home/prologic/work/circuits/tests/protocols/test_line.pyus  circuits-3.1.0/tests/protocols/test_line.py0000644000014400001440000000233012402037676022064 0ustar prologicusers00000000000000#!/usr/bin/env python from collections import defaultdict from circuits.protocols import Line from circuits import Event, Component class read(Event): """read Event""" class App(Component): lines = [] def line(self, line): self.lines.append(line) class AppServer(Component): channel = "server" lines = [] def line(self, sock, line): self.lines.append((sock, line)) def test(): app = App() Line().register(app) while app: app.flush() app.fire(read(b"1\n2\r\n3\n4")) while app: app.flush() assert app.lines[0] == b"1" assert app.lines[1] == b"2" assert app.lines[2] == b"3" def test_server(): app = AppServer() buffers = defaultdict(bytes) Line( getBuffer=buffers.__getitem__, updateBuffer=buffers.__setitem__ ).register(app) while app: app.flush() app.fire(read(1, b"1\n2\r\n3\n4")) app.fire(read(2, b"1\n2\r\n3\n4")) while app: app.flush() assert app.lines[0] == (1, b"1") assert app.lines[1] == (1, b"2") assert app.lines[2] == (1, b"3") assert app.lines[3] == (2, b"1") assert app.lines[4] == (2, b"2") assert app.lines[5] == (2, b"3") circuits-3.1.0/tests/protocols/__init__.pyc0000644000014400001440000000021712420400436021766 0ustar prologicusers00000000000000 ?Tc@sdS(N((((s8/home/prologic/work/circuits/tests/protocols/__init__.pytscircuits-3.1.0/tests/__init__.py0000644000014400001440000000020612174742426017613 0ustar prologicusers00000000000000# Package: tests # Date: 10 February 2010 # Author: James Mills, prologic at shortcircuit dot net dot au """circuits tests""" circuits-3.1.0/tests/net/0000755000014400001440000000000012425013643016261 5ustar prologicusers00000000000000circuits-3.1.0/tests/net/__init__.py0000644000014400001440000000000012174742426020371 0ustar prologicusers00000000000000circuits-3.1.0/tests/net/server.py0000644000014400001440000000160012402037676020145 0ustar prologicusers00000000000000from circuits import Component from circuits.net.events import write class Server(Component): channel = "server" def __init__(self): super(Server, self).__init__() self.data = "" self.host = None self.port = None self.client = None self.ready = False self.closed = False self.connected = False self.disconnected = False def ready(self, server, bind): self.ready = True self.host, self.port = bind def close(self): return def closed(self): self.closed = True def connect(self, sock, *args): self.connected = True self.client = args self.fire(write(sock, b"Ready")) def disconnect(self, sock): self.client = None self.disconnected = True def read(self, sock, data): self.data = data return data circuits-3.1.0/tests/net/test_client.py0000644000014400001440000000163012402037676021157 0ustar prologicusers00000000000000#!/usr/bin/env python from socket import gaierror def test_client_bind_int(): from circuits.net.sockets import Client class TestClient(Client): def _create_socket(self): return None client = TestClient(1234) assert client._bind[1] == 1234 def test_client_bind_int_gaierror(monkeypatch): from circuits.net import sockets def broken_gethostname(): raise gaierror() monkeypatch.setattr(sockets, "gethostname", broken_gethostname) class TestClient(sockets.Client): def _create_socket(self): return None client = TestClient(1234) assert client._bind == ("0.0.0.0", 1234) def test_client_bind_str(): from circuits.net.sockets import Client class TestClient(Client): def _create_socket(self): return None client = TestClient("0.0.0.0:1234") assert client._bind == ("0.0.0.0", 1234) circuits-3.1.0/tests/net/test_pipe.py0000644000014400001440000000202212402037676020632 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest if pytest.PLATFORM == "win32": pytest.skip("Unsupported Platform") from circuits import Manager from circuits.net.sockets import Pipe from circuits.core.pollers import Select from circuits.net.events import close, write from .client import Client def pytest_generate_tests(metafunc): metafunc.addcall(funcargs={"Poller": Select}) def test_pipe(Poller): m = Manager() + Poller() a, b = Pipe("a", "b") a.register(m) b.register(m) a = Client(channel=a.channel).register(m) b = Client(channel=b.channel).register(m) m.start() try: assert pytest.wait_for(a, "ready") assert pytest.wait_for(b, "ready") a.fire(write(b"foo")) assert pytest.wait_for(b, "data", b"foo") b.fire(write(b"foo")) assert pytest.wait_for(a, "data", b"foo") a.fire(close()) assert pytest.wait_for(a, "disconnected") b.fire(close()) assert pytest.wait_for(b, "disconnected") finally: m.stop() circuits-3.1.0/tests/net/test_udp.py0000644000014400001440000000506312402037676020475 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest import socket import select from circuits import Manager from circuits.net.events import close, write from circuits.core.pollers import Select, Poll, EPoll, KQueue from circuits.net.sockets import UDPServer, UDPClient, UDP6Server, UDP6Client from .client import Client from .server import Server def wait_host(server): def checker(obj, attr): return all((getattr(obj, a) for a in attr)) assert pytest.wait_for(server, ("host", "port"), checker) def _pytest_generate_tests(metafunc, ipv6): metafunc.addcall(funcargs={"Poller": Select, "ipv6": ipv6}) if hasattr(select, "poll"): metafunc.addcall(funcargs={"Poller": Poll, "ipv6": ipv6}) if hasattr(select, "epoll"): metafunc.addcall(funcargs={"Poller": EPoll, "ipv6": ipv6}) if hasattr(select, "kqueue"): metafunc.addcall(funcargs={"Poller": KQueue, "ipv6": ipv6}) def pytest_generate_tests(metafunc): _pytest_generate_tests(metafunc, ipv6=False) if socket.has_ipv6: _pytest_generate_tests(metafunc, ipv6=True) def test_basic(Poller, ipv6): m = Manager() + Poller() if ipv6: udp_server = UDP6Server(("::1", 0)) udp_client = UDP6Client(("::1", 0), channel="client") else: udp_server = UDPServer(0) udp_client = UDPClient(0, channel="client") server = Server() + udp_server client = Client() + udp_client server.register(m) client.register(m) m.start() try: assert pytest.wait_for(server, "ready") assert pytest.wait_for(client, "ready") wait_host(server) client.fire(write((server.host, server.port), b"foo")) assert pytest.wait_for(server, "data", b"foo") client.fire(close()) assert pytest.wait_for(client, "closed") server.fire(close()) assert pytest.wait_for(server, "closed") finally: m.stop() def test_close(Poller, ipv6): m = Manager() + Poller() server = Server() + UDPServer(0) server.register(m) m.start() try: assert pytest.wait_for(server, "ready") wait_host(server) host, port = server.host, server.port server.fire(close()) assert pytest.wait_for(server, "disconnected") server.unregister() def test(obj, attr): return attr not in obj.components assert pytest.wait_for(m, server, value=test) server = Server() + UDPServer((host, port)) server.register(m) assert pytest.wait_for(server, "ready", timeout=30.0) finally: m.stop() circuits-3.1.0/tests/net/client.pyc0000644000014400001440000000374712420400436020262 0ustar prologicusers00000000000000 ?Tc@s*ddlmZdefdYZdS(i(t ComponenttClientcBsYeZdZedZdZdZdZdZdZdZ dZ RS( tclientcCsStt|jd|d|_d|_t|_t|_t|_ t|_ dS(Ntchannelt( tsuperRt__init__tdatatNoneterrortFalsetreadytclosedt connectedt disconnected(tselfR((s0/home/prologic/work/circuits/tests/net/client.pyRs     cGs t|_dS(N(tTrueR (Rtargs((s0/home/prologic/work/circuits/tests/net/client.pyR scCs ||_dS(N(R (RR ((s0/home/prologic/work/circuits/tests/net/client.pyR scCs t|_dS(N(RR (Rthosttport((s0/home/prologic/work/circuits/tests/net/client.pyR scGsdS(N((RR((s0/home/prologic/work/circuits/tests/net/client.pyt disconnectscCs t|_dS(N(RR(R((s0/home/prologic/work/circuits/tests/net/client.pyRscCs t|_dS(N(RR (R((s0/home/prologic/work/circuits/tests/net/client.pyR !scGs8t|dkr!|\}}n |d}||_dS(Nii(tlenR(RRt_R((s0/home/prologic/work/circuits/tests/net/client.pytread$s ( t__name__t __module__RRR R R RRR R(((s0/home/prologic/work/circuits/tests/net/client.pyRs      N(tcircuitsRR(((s0/home/prologic/work/circuits/tests/net/client.pytscircuits-3.1.0/tests/net/server.pyc0000644000014400001440000000372712420400436020310 0ustar prologicusers00000000000000 ?Tc@s:ddlmZddlmZdefdYZdS(i(t Component(twritetServercBsMeZdZdZdZdZdZdZdZdZ RS(tservercCs_tt|jd|_d|_d|_d|_t|_ t|_ t|_ t|_ dS(Nt( tsuperRt__init__tdatatNonethosttporttclienttFalsetreadytclosedt connectedt disconnected(tself((s0/home/prologic/work/circuits/tests/net/server.pyR s       cCst|_|\|_|_dS(N(tTrueR R R (RRtbind((s0/home/prologic/work/circuits/tests/net/server.pyR s cCsdS(N((R((s0/home/prologic/work/circuits/tests/net/server.pytclosescCs t|_dS(N(RR(R((s0/home/prologic/work/circuits/tests/net/server.pyRscGs,t|_||_|jt|ddS(NtReady(RRR tfireR(Rtsocktargs((s0/home/prologic/work/circuits/tests/net/server.pytconnects  cCsd|_t|_dS(N(RR RR(RR((s0/home/prologic/work/circuits/tests/net/server.pyt disconnect$s cCs ||_|S(N(R(RRR((s0/home/prologic/work/circuits/tests/net/server.pytread(s ( t__name__t __module__tchannelRR RRRRR(((s0/home/prologic/work/circuits/tests/net/server.pyRs     N(tcircuitsRtcircuits.net.eventsRR(((s0/home/prologic/work/circuits/tests/net/server.pytscircuits-3.1.0/tests/net/__pycache__/0000755000014400001440000000000012425013643020471 5ustar prologicusers00000000000000circuits-3.1.0/tests/net/__pycache__/test_poller_reuse.cpython-27-PYTEST.pyc0000644000014400001440000000405212414363102027701 0ustar prologicusers00000000000000 ?Tc@swddlZddljjZddlmZddlm Z ddl m Z m Z ddl mZmZdZdS(iN(tManager(tfindtype(t BasePollertPoller(t TCPServert TCPClientc Cs<t}tj|}tdj|tj||jzt|tdt}t |}d}||k}|s`t j d|fd||fit j |d6dt jkst j|rt j |ndd6d t jks t jt rt j t nd d 6t j |d 6}di|d6}tt j|nd}}}|d}||k}|st j d|fd||fidt jkst j|rt j |ndd6t j |d6} di| d6} tt j| nd}}Wd|jXdS(Nitallis==s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)stpy3tpollerstpy1tlentpy0tpy6tsassert %(py8)stpy8tiss%(py1)s is %(py3)stpollersassert %(py5)stpy5(s==(s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)ssassert %(py8)s(R(s%(py1)s is %(py3)ssassert %(py5)s(RRtregisterRRtstartRRtTrueR t @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonetstop( tmRRt @py_assert2t @py_assert5t @py_assert4t @py_format7t @py_format9t @py_assert0t @py_format4t @py_format6((s;/home/prologic/work/circuits/tests/net/test_poller_reuse.pyttest s.     l(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtcircuitsRtcircuits.core.utilsRtcircuits.core.pollersRRtcircuits.net.socketsRRR((((s;/home/prologic/work/circuits/tests/net/test_poller_reuse.pyts circuits-3.1.0/tests/net/__pycache__/server.cpython-34.pyc0000644000014400001440000000312212414363522024423 0ustar prologicusers00000000000000 ?T@s:ddlmZddlmZGdddeZdS)) Component)writecspeZdZdZfddZddZddZdd Zd d Zd d Z ddZ S)Serverservercs_tt|jd|_d|_d|_d|_d|_d|_d|_ d|_ dS)NF) superr__init__datahostportclientreadyclosed connected disconnected)self) __class__0/home/prologic/work/circuits/tests/net/server.pyr s       zServer.__init__cCsd|_|\|_|_dS)NT)r r r )rrbindrrrr s z Server.readycCsdS)Nr)rrrrclosesz Server.closecCs d|_dS)NT)r)rrrrrsz Server.closedcGs,d|_||_|jt|ddS)NTsReady)rr firer)rsockargsrrrconnects  zServer.connectcCsd|_d|_dS)NT)r r)rrrrr disconnect$s zServer.disconnectcCs ||_|S)N)r )rrr rrrread(s z Server.read) __name__ __module__ __qualname__channelrr rrrrrrr)rrrs      rN)circuitsrcircuits.net.eventsrrrrrrscircuits-3.1.0/tests/net/__pycache__/client.cpython-33.pyc0000644000014400001440000000502712414363411024375 0ustar prologicusers00000000000000 ?TEc@s*ddlmZGdddeZdS(i(u Componentcs|EeZdZdZefddZddZddZdd Zd d Zd d Z ddZ ddZ S(uClientuclientcsStt|jd|d|_d|_d|_d|_d|_ d|_ dS(NuchanneluF( usuperuClientu__init__udatauNoneuerroruFalseureadyuclosedu connectedu disconnected(uselfuchannel(u __class__(u0/home/prologic/work/circuits/tests/net/client.pyu__init__s     uClient.__init__cGs d|_dS(NT(uTrueuready(uselfuargs((u0/home/prologic/work/circuits/tests/net/client.pyureadysu Client.readycCs ||_dS(N(uerror(uselfuerror((u0/home/prologic/work/circuits/tests/net/client.pyuerrorsu Client.errorcCs d|_dS(NT(uTrueu connected(uselfuhostuport((u0/home/prologic/work/circuits/tests/net/client.pyu connectedsuClient.connectedcGsdS(N((uselfuargs((u0/home/prologic/work/circuits/tests/net/client.pyu disconnectsuClient.disconnectcCs d|_dS(NT(uTrueu disconnected(uself((u0/home/prologic/work/circuits/tests/net/client.pyu disconnectedsuClient.disconnectedcCs d|_dS(NT(uTrueuclosed(uself((u0/home/prologic/work/circuits/tests/net/client.pyuclosed!su Client.closedcGs8t|dkr!|\}}n |d}||_dS(Nii(ulenudata(uselfuargsu_udata((u0/home/prologic/work/circuits/tests/net/client.pyuread$s u Client.read( u__name__u __module__u __qualname__uchannelu__init__ureadyuerroru connectedu disconnectu disconnecteducloseduread(u __locals__((u __class__u0/home/prologic/work/circuits/tests/net/client.pyuClients      uClientN(ucircuitsu ComponentuClient(((u0/home/prologic/work/circuits/tests/net/client.pyuscircuits-3.1.0/tests/net/__pycache__/test_client.cpython-32-PYTEST.pyc0000644000014400001440000001132112414363276026464 0ustar prologicusers00000000000000l ?Tc@sMddlZddljjZddlmZdZdZ dZ dS(iN(ugaierrorcCsddlm}Gdd|}|d}|jd}d}||k}|stjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nd}}}dS(Ni(uClientcBs|EeZdZdS(cSsdS(N(uNone(uself((u5/home/prologic/work/circuits/tests/net/test_client.pyu_create_socket sN(u__name__u __module__u_create_socket(u __locals__((u5/home/prologic/work/circuits/tests/net/test_client.pyu TestClient s u TestClientiiu==u%(py1)s == %(py4)supy1upy4uuassert %(py6)supy6(u==(u%(py1)s == %(py4)suassert %(py6)s( ucircuits.net.socketsuClientu_bindu @pytest_aru_call_reprcompareu _saferepruAssertionErroru_format_explanationuNone(uClientu TestClientuclientu @py_assert0u @py_assert3u @py_assert2u @py_format5u @py_format7((u5/home/prologic/work/circuits/tests/net/test_client.pyutest_client_bind_ints   Ec Cs&ddlm}d}|j|d|Gdd|j}|d}|j}d}||k}|stjd|fd||fitj|d 6d tj kstj |rtj|nd d 6tj|d6}di|d6} t tj | nd}}}dS(Ni(usocketscSs tdS(N(ugaierror(((u5/home/prologic/work/circuits/tests/net/test_client.pyubroken_gethostnamesu gethostnamecBs|EeZdZdS(cSsdS(N(uNone(uself((u5/home/prologic/work/circuits/tests/net/test_client.pyu_create_socketsN(u__name__u __module__u_create_socket(u __locals__((u5/home/prologic/work/circuits/tests/net/test_client.pyu TestClients u TestClientiu0.0.0.0u==u-%(py2)s {%(py2)s = %(py0)s._bind } == %(py5)supy2uclientupy0upy5uuassert %(py7)supy7(u0.0.0.0i(u==(u-%(py2)s {%(py2)s = %(py0)s._bind } == %(py5)suassert %(py7)s(u circuits.netusocketsusetattruClientu_bindu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone( u monkeypatchusocketsubroken_gethostnameu TestClientuclientu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u5/home/prologic/work/circuits/tests/net/test_client.pyutest_client_bind_int_gaierrors    |cCsddlm}Gdd|}|d}|j}d}||k}|stjd|fd||fitj|d 6d tjkstj|rtj|nd d 6tj|d 6}di|d6}t tj |nd}}}dS(Ni(uClientcBs|EeZdZdS(cSsdS(N(uNone(uself((u5/home/prologic/work/circuits/tests/net/test_client.pyu_create_socket*sN(u__name__u __module__u_create_socket(u __locals__((u5/home/prologic/work/circuits/tests/net/test_client.pyu TestClient(s u TestClientu 0.0.0.0:1234u0.0.0.0iu==u-%(py2)s {%(py2)s = %(py0)s._bind } == %(py5)supy2uclientupy0upy5uuassert %(py7)supy7(u0.0.0.0i(u==(u-%(py2)s {%(py2)s = %(py0)s._bind } == %(py5)suassert %(py7)s( ucircuits.net.socketsuClientu_bindu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uClientu TestClientuclientu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u5/home/prologic/work/circuits/tests/net/test_client.pyutest_client_bind_str%s   |( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arusocketugaierrorutest_client_bind_intutest_client_bind_int_gaierrorutest_client_bind_str(((u5/home/prologic/work/circuits/tests/net/test_client.pyus  circuits-3.1.0/tests/net/__pycache__/test_unix.cpython-33-PYTEST.pyc0000644000014400001440000001222412414363411026164 0ustar prologicusers00000000000000 ?Tc@s ddlZddljjZddlZddlZddlZddl Z ej dkrmej dnddl m Z ddlmZmZmZddlmZmZddlmZmZmZmZd d lmZd d lmZd d ZddZdS(iNuwin32ucygwinuTest Not Applicable on Windows(uManager(ucloseuconnectuwrite(u UNIXServeru UNIXClient(uSelectuPolluEPolluKQueuei(uClient(uServercCs|jditd6ttdr@|jditd6nttdri|jditd6nttdr|jditd6ndS(NufuncargsuPollerupolluepollukqueue(uaddcalluSelectuhasattruselectuPolluEPolluKQueue(umetafunc((u3/home/prologic/work/circuits/tests/net/test_unix.pyupytest_generate_testssupytest_generate_testsc Cs t|}|jd}t|}tt|}tt}|j||j||jz* t j }d}|||} | s]ddidt j kst j|rt j|ndd6t j|d6dt j ks t jt rt jt ndd 6t j| d 6t j|d 6} tt j| nd}}} t j }d}|||} | sSddid t j kst j|rt j|nd d6t j|d6dt j kst jt rt jt ndd 6t j| d 6t j|d 6} tt j| nd}}} |jt|t j }d }|||} | s\ddid t j kst j|rt j|nd d6t j|d6dt j ks t jt rt jt ndd 6t j| d 6t j|d 6} tt j| nd}}} t j }d }|||} | sRddidt j kst j|rt j|ndd6t j|d6dt j kst jt rt jt ndd 6t j| d 6t j|d 6} tt j| nd}}} t j }d}d} |||| } | saddid t j kst j|rt j|nd d6t j|d6dt j kst jt rt jt ndd 6t j| d 6t j|d 6t j| d6} tt j| nd}}} } |jtdt j }d}d} |||| } | sddidt j kst j|rt j|ndd6t j|d6dt j ks%t jt r4t jt ndd 6t j| d 6t j|d 6t j| d6} tt j| nd}}} } |jtt j }d}|||} | sddid t j kst j|rt j|nd d6t j|d6dt j ks?t jt rNt jt ndd 6t j| d 6t j|d 6} tt j| nd}}} t j }d}|||} | sddidt j kst j|rt j|ndd6t j|d6dt j ks5t jt rDt jt ndd 6t j| d 6t j|d 6} tt j| nd}}} |jtt j }d}|||} | s ddidt j kst j|r t j|ndd6t j|d6dt j ks; t jt rJ t jt ndd 6t j| d 6t j|d 6} tt j| nd}}} Wd|jtj|XdS(Nu test.sockureadyuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }userverupy3upy2upytestupy0upy7upy5uclientu connectedudatasReadyu\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }upy9sfoou disconnecteduclosed(uManageruensureustruServeru UNIXServeruClientu UNIXClienturegisterustartupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneufireuconnectuwriteucloseustopuosuremove( utmpdiruPollerumusockpathufilenameuserveruclientu @py_assert1u @py_assert4u @py_assert6u @py_format8u @py_assert8u @py_format10((u3/home/prologic/work/circuits/tests/net/test_unix.pyu test_unix"s              u test_unix(uwin32ucygwin(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuosusysuselectuplatformuskipucircuitsuManagerucircuits.net.socketsucloseuconnectuwriteu UNIXServeru UNIXClientucircuits.core.pollersuSelectuPolluEPolluKQueueuclientuClientuserveruServerupytest_generate_testsu test_unix(((u3/home/prologic/work/circuits/tests/net/test_unix.pyus     " circuits-3.1.0/tests/net/__pycache__/test_tcp.cpython-34-PYTEST.pyc0000644000014400001440000004655012414363522026004 0ustar prologicusers00000000000000 ?T}@sxddlZddljjZddlZddlZddlm Z ddlm Z m Z ddlmZm Z mZmZmZddlmZddlmZmZmZddlmZmZmZmZddlmZmZmZm Z d d l!m"Z"d d l#m$Z$d d Z%ddZ&ddZ'ddZ(ddZ)ddZ*ddZ+ddZ,dS)N)error) EAI_NODATA EAI_NONAME)socketAF_INETAF_INET6 SOCK_STREAMhas_ipv6)Manager)closeconnectwrite)SelectPollEPollKQueue) TCPServer TCP6Server TCPClient TCP6Client)Client)ServercCs@dd}tj}d}||||}|s.dditj|d6tj|d6d tjks~tjtrtjtnd d 6tj|d 6d tjkstj|rtj|nd d 6dtjkstj|r tj|ndd6}ttj|nt }}}dS)Ncstfdd|DS)Nc3s|]}t|VqdS)N)getattr).0a)obj2/home/prologic/work/circuits/tests/net/test_tcp.py sz-wait_host..checker..)all)rattrr)rrcheckerszwait_host..checkerhostportz\assert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py6)s) }py2py8pytestpy0py5r"py6serverpy3)zhostzport) r(wait_for @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)r,r" @py_assert1 @py_assert4 @py_assert7 @py_format9rrr wait_hosts  r;cCs|jditd6|d6ttdrN|jditd6|d6nttdr~|jditd6|d6nttdr|jditd6|d6ndS)NfuncargsPolleripv6pollepollkqueue)addcallrhasattrselectrrr)metafuncr>rrr_pytest_generate_testss!!rFcCs-t|ddtr)t|ddndS)Nr>FT)rFr )rErrrpytest_generate_tests&srGc Cs t|}|r.td}t}ntd}t}t|}t|}|j||j||jzP t j }d}|||} | slddit j |d6t j |d6t j | d6d t jkst j|rt j |nd d 6d t jks:t jt rIt j t nd d 6} tt j| nt}}} t j }d}|||} | sbddit j |d6t j |d6t j | d6d t jkst j|rt j |nd d 6d t jks0t jt r?t j t nd d 6} tt j| nt}}} t||jt|j|jt j }d}|||} | s~ddit j |d6t j |d6t j | d6d t jkst j|r$t j |nd d 6d t jksLt jt r[t j t nd d 6} tt j| nt}}} t j }d}|||} | stddit j |d6t j |d6t j | d6d t jks t j|rt j |nd d 6d t jksBt jt rQt j t nd d 6} tt j| nt}}} t j }d}d} |||| } | sddit j | d6t j |d6t j | d6d t jks t jt rt j t nd d 6t j |d6d t jksQt j|r`t j |nd d 6} tt j| nt}}} } |jtdt j }d}d} |||| } | sddit j | d6t j |d6t j | d6d t jks0t jt r?t j t nd d 6t j |d6d t jkswt j|rt j |nd d 6} tt j| nt}}} } t j }d}d} |||| } | sddit j | d6t j |d6t j | d6d t jksCt jt rRt j t nd d 6t j |d6d t jkst j|rt j |nd d 6} tt j| nt}}} } |jtt j }d}|||} | sddit j |d6t j |d6t j | d6d t jks]t j|rlt j |nd d 6d t jkst jt rt j t nd d 6} tt j| nt}}} t j }d}|||} | s ddit j |d6t j |d6t j | d6d t jksS t j|rb t j |nd d 6d t jks t jt r t j t nd d 6} tt j| nt}}} |jtt j }d}|||} | s ddit j |d6t j |d6t j | d6d t jksY t j|rh t j |nd d 6d t jks t jt r t j t nd d 6} tt j| nt}}} Wd|jXdS)N::1rreadyr%zSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }r*r&py7clientr-r(r)r, connecteddatasReadyz\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }py9sfoo disconnectedclosed)rHr)r rrrrrrregisterstartr(r.r/r0r1r2r3r4r5r6r;firer r#r$r r stop) r=r>m tcp_server tcp_clientr,rKr7r8 @py_assert6 @py_format8 @py_assert8 @py_format10rrrtest_tcp_basic,s                    r\c 'CsOtjdkr8tjdddkr8tjdnt|}|rftd}t}ntd}t}t |}t |}|j ||j ||j ztj }d}|||} | sdd itj|d 6tj|d 6tj| d 6d tjks;tj|rJtj|nd d6dtjksrtjtrtjtndd6} ttj| nt}}} tj }d}|||} | sdd itj|d 6tj|d 6tj| d 6dtjks1tj|r@tj|ndd6dtjkshtjtrwtjtndd6} ttj| nt}}} t||jt|j|jtj }d}|||} | sdd itj|d 6tj|d 6tj| d 6d tjksMtj|r\tj|nd d6dtjkstjtrtjtndd6} ttj| nt}}} tj }d}|||} | sdd itj|d 6tj|d 6tj| d 6dtjksCtj|rRtj|ndd6dtjksztjtrtjtndd6} ttj| nt}}} tj }d}d} |||| } | sdditj| d6tj|d 6tj| d 6dtjksBtjtrQtjtndd6tj|d 6d tjkstj|rtj|nd d6} ttj| nt}}} } |jtdtj }d}d} |||| } | sdditj| d6tj|d 6tj| d 6dtjkshtjtrwtjtndd6tj|d 6dtjkstj|rtj|ndd6} ttj| nt}}} } |jttj }d}|||} | sdd itj|d 6tj|d 6tj| d 6d tjkstj|rtj|nd d6dtjkstjtrtjtndd6} ttj| nt}}} |jt|j|jtj }d}|||} | sdd itj|d 6tj|d 6tj| d 6d tjkstj|rtj|nd d6dtjkstjtrtjtndd6} ttj| nt}}} tj }d}|||} | s dd itj|d 6tj|d 6tj| d 6dtjks tj|r tj|ndd6dtjks tjtr tjtndd6} ttj| nt}}} tj }d}d} |||| } | s dditj| d6tj|d 6tj| d 6dtjks tjtr tjtndd6tj|d 6d tjks tj|r tj|nd d6} ttj| nt}}} } |jtdtj }d}d} |||| } | s( dditj| d6tj|d 6tj| d 6dtjks tjtr tjtndd6tj|d 6dtjks tj|r tj|ndd6} ttj| nt}}} } |jttj }d}|||} | s2 dd itj|d 6tj|d 6tj| d 6d tjks tj|r tj|nd d6dtjks tjtr tjtndd6} ttj| nt}}} tj }d}|||} | s(dd itj|d 6tj|d 6tj| d 6dtjks tj|r tj|ndd6dtjks tjtrtjtndd6} ttj| nt}}} |jttj }d}|||} | s.dd itj|d 6tj|d 6tj| d 6dtjkstj|rtj|ndd6dtjkstjtr tjtndd6} ttj| nt}}} Wd|jXdS)Nwin32zBroken on Windows on Python 3.2::1rrIr%zSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }r*r&rJrKr-r(r)r,rLrMsReadyz\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }rNsfoorOrP)r_r^)r`r)r(PLATFORMPYVERskipr rrrrrrrQrRr.r/r0r1r2r3r4r5r6r;rSr r#r$r r rT) r=r>rUrVrWr,rKr7r8rXrYrZr[rrrtest_tcp_reconnectUs(                        rdcCsxtjdkrtjdnt|}|rMtd"}t}ntd}t}t|}t |}|j ||j ||j ztj }d}|||} | sddit j|d6t j|d 6t j| d 6d tjks"t j|r1t j|nd d 6d tjksYt jtrht jtnd d6} tt j| nt}}} tj }d}|||} | sddit j|d6t j|d 6t j| d 6dtjkst j|r't j|ndd 6d tjksOt jtr^t jtnd d6} tt j| nt}}} t||j|j} } |jj|jt| | tj }d}|||} | sddit j|d6t j|d 6t j| d 6d tjksNt j|r]t j|nd d 6d tjkst jtrt jtnd d6} tt j| nt}}} |j} t| t}|sddid tjkst j|rt j|nd d6dtjksEt jtrTt jtndd6t j|d6t j| d 6dtjkst jtrt jtndd6}tt j|nt} }|jtdtj }d}|||} | sddit j|d6t j|d 6t j| d 6d tjksjt j|ryt j|nd d 6d tjkst jtrt jtnd d6} tt j| nt}}} d|_ |jtdtj }d}d} |||d| }d}||k}|sKt j!d#|fd$||fit j|d6t j|d 6t j| d 6d tjkst jtrt jtnd d6t j|d6d tjkst j|rt j|nd d 6t j|d6}d%i|d!6}tt j|nt}}} }}}Wd|j"XdS)&Nr]zBroken on Windows::1rrIr%zSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }r*r&rJrKr-r(r)r,rLzPassert %(py6)s {%(py6)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.error }, %(py4)s) }py1 SocketErrorpy4r+ isinstancesfoorOFg?timeoutisi%(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, timeout=%(py7)s) } is %(py12)srNpy12assert %(py14)spy14)rer)rk)rlrn)#r(rarcr rrrrrrrQrRr.r/r0r1r2r3r4r5r6r;r#r$_sockr rSr rrirgr rO_call_reprcomparerT)r=r>rUrVrWr,rKr7r8rXrYr#r$ @py_assert2 @py_assert5 @py_format7rZ @py_assert11 @py_assert10 @py_format13 @py_format15rrrtest_tcp_connect_closed_ports                    rycCsb t|}|rttt}|jd|jd|j\}}}}|jtt d}t t }nhtt t}|jd|jd|j\}}|jtt d}t t}|j||j||jz= tj}d} ||| } | sdditj| d6tj|d6tj| d 6d tjkstj|rtj|nd d 6d tjkstjtrtjtnd d 6} ttj| nt}} } tj}d} ||| } | sdditj| d6tj|d6tj| d 6dtjkstj|rtj|ndd 6d tjkstjtrtjtnd d 6} ttj| nt}} } t||jt|j|jtj}d} ||| } | sdditj| d6tj|d6tj| d 6d tjkstj|rtj|nd d 6d tjkstjtrtjtnd d 6} ttj| nt}} } tj}d} ||| } | sdditj| d6tj|d6tj| d 6dtjkstj|rtj|ndd 6d tjkstjtrtjtnd d 6} ttj| nt}} } tj}d} d} ||| | } | sdditj| d6tj|d6tj| d 6d tjkstjtrtjtnd d 6tj| d6d tjkstj|rtj|nd d 6} ttj| nt}} } } |jt dtj}d} d} ||| | } | s;dditj| d6tj|d6tj| d 6d tjkstjtrtjtnd d 6tj| d6dtjks tj|rtj|ndd 6} ttj| nt}} } } |jttj}d} ||| } | sEdditj| d6tj|d6tj| d 6d tjkstj|rtj|nd d 6d tjkstjtr"tjtnd d 6} ttj| nt}} } tj}d} ||| } | s; dditj| d6tj|d6tj| d 6dtjkstj|rtj|ndd 6d tjks tjtr tjtnd d 6} ttj| nt}} } |jttj}d} ||| } | sA dditj| d6tj|d6tj| d 6dtjks tj|r tj|ndd 6d tjks tjtr tjtnd d 6} ttj| nt}} } Wd|j!XdS)N::1rr%rIzSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }r*r&rJrKr-r(r)r,rLrMsReadyz\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }rNsfoorOrP)rzr)rzr)r%r)"r rrrbindlisten getsocknamer rrrrrrrrQrRr(r.r/r0r1r2r3r4r5r6r;rSr r#r$r rT)r=r>rUsock_Z bind_portr,rKr7r8rXrYrZr[rrr test_tcp_binds                   rc Cst|}|r"t}n t}t|}|j||jz#tj}d}|||}|s:dditj |d6tj |d6tj |d6dt j kstj |rtj |ndd6d t j kstj trtj tnd d 6}t tj|nt}}}|jtd d tj}d }dd}||||} | sedditj | d6tj |d6tj |d6d t j kstj trtj tnd d 6tj |d6dt j ks3tj |rBtj |ndd6} t tj| nt}}}} tjdkrz|j}|j} d}| |k} | setjd| fd| |fitj |d6tj |d6dt j kstj |r!tj |ndd 6tj | d6}di|d6} t tj| nt}} } }n|j}|j} ttf}| |k} | s_tjd| fd| |fitj |d6tj |d6dt j ks tj |rtj |ndd 6tj | d6}di|d6} t tj| nt}} } }Wd|jXdS) NrIr%zSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }r*r&rJrKr-r(r)fooircSstt||tS)N)rirrg)rr!rrrsz)test_tcp_lookup_failure..z\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }rNr]i*==H%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error }.errno } == %(py7)srhassert %(py9)sinH%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error }.errno } in %(py7)s)r)rr)r)rr)r rrrrQrRr(r.r/r0r1r2r3r4r5r6rSr rarerrnorqrrrT) r=r>rUrWrKr7r8rXrYrZr[ @py_assert3rsrrrtest_tcp_lookup_failuresX           r)-builtinsr1_pytest.assertion.rewrite assertionrewriter/r(rDrrrgrrrrrr circuitsr Zcircuits.net.eventsr r r circuits.core.pollersrrrrcircuits.net.socketsrrrrrKrr,rr;rFrGr\rdryrrrrrrs(   (""   ) = 0 2circuits-3.1.0/tests/net/__pycache__/test_unix.cpython-26-PYTEST.pyc0000644000014400001440000001160412407376151026176 0ustar prologicusers00000000000000 ?Tc@s ddkZddkiiZddkZddkZddkZddk Z ei djoei dnddk l Z ddklZlZlZddklZlZddklZlZlZlZd d klZd d klZd Zd ZdS(iNtwin32tcygwinsTest Not Applicable on Windows(tManager(tclosetconnecttwrite(t UNIXServert UNIXClient(tSelecttPolltEPolltKQueuei(tClient(tServercCs|idhtd6ttdo|idhtd6nttdo|idhtd6nttdo|idhtd6ndS(NtfuncargstPollertpolltepolltkqueue(taddcallRthasattrtselectR R R (tmetafunc((s3/home/prologic/work/circuits/tests/net/test_unix.pytpytest_generate_testssc Cs t|}|id}t|}tt|}tt}|i||i||izN t i }d}|||} | pdhdt i jpt it ot it ndd6dt i jpt i|ot i|ndd6t i|d6t i|d 6t i| d 6} tt i| nd}}} t i }d}|||} | pdhdt i jpt it ot it ndd6d t i jpt i|ot i|nd d6t i|d6t i|d 6t i| d 6} tt i| nd}}} |it|t i }d }|||} | pdhdt i jpt it ot it ndd6d t i jpt i|ot i|nd d6t i|d6t i|d 6t i| d 6} tt i| nd}}} t i }d }|||} | pdhdt i jpt it ot it ndd6dt i jpt i|ot i|ndd6t i|d6t i|d 6t i| d 6} tt i| nd}}} t i }d }d} |||| } | pdhdt i jpt it ot it ndd6d t i jpt i|ot i|nd d6t i|d6t i|d 6t i| d 6t i| d6} tt i| nd}}} } |itdt i }d }d} |||| } | pdhdt i jpt it ot it ndd6dt i jpt i|ot i|ndd6t i|d6t i|d 6t i| d 6t i| d6} tt i| nd}}} } |itt i }d}|||} | pdhdt i jpt it ot it ndd6d t i jpt i|ot i|nd d6t i|d6t i|d 6t i| d 6} tt i| nd}}} t i }d}|||} | pdhdt i jpt it ot it ndd6dt i jpt i|ot i|ndd6t i|d6t i|d 6t i| d 6} tt i| nd}}} |itt i }d}|||} | pdhdt i jpt it ot it ndd6dt i jpt i|ot i|ndd6t i|d6t i|d 6t i| d 6} tt i| nd}}} Wd|iti|XdS(Ns test.socktreadysSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }tpytesttpy0tservertpy3tpy2tpy5tpy7tclientt connectedtdatatReadys\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }tpy9tfoot disconnectedtclosed(RtensuretstrR RR RtregistertstartRtwait_fort @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetfireRRRtstoptostremove( ttmpdirRtmtsockpathtfilenameRR t @py_assert1t @py_assert4t @py_assert6t @py_format8t @py_assert8t @py_format10((s3/home/prologic/work/circuits/tests/net/test_unix.pyt test_unix"s              (swin32scygwin(t __builtin__R-t_pytest.assertion.rewritet assertiontrewriteR/RR7tsysRtplatformtskiptcircuitsRtcircuits.net.socketsRRRRRtcircuits.core.pollersRR R R R R RR RRC(((s3/home/prologic/work/circuits/tests/net/test_unix.pyts     " circuits-3.1.0/tests/net/__pycache__/server.cpython-33.pyc0000644000014400001440000000471212414363411024425 0ustar prologicusers00000000000000 ?Tc@s:ddlmZddlmZGdddeZdS(i(u Component(uwritecst|EeZdZdZfddZddZddZdd Zd d Zd d Z ddZ S(uServeruservercs_tt|jd|_d|_d|_d|_d|_ d|_ d|_ d|_ dS(NuF( usuperuServeru__init__udatauNoneuhostuportuclientuFalseureadyuclosedu connectedu disconnected(uself(u __class__(u0/home/prologic/work/circuits/tests/net/server.pyu__init__ s       uServer.__init__cCsd|_|\|_|_dS(NT(uTrueureadyuhostuport(uselfuserverubind((u0/home/prologic/work/circuits/tests/net/server.pyureadys u Server.readycCsdS(N((uself((u0/home/prologic/work/circuits/tests/net/server.pyuclosesu Server.closecCs d|_dS(NT(uTrueuclosed(uself((u0/home/prologic/work/circuits/tests/net/server.pyuclosedsu Server.closedcGs,d|_||_|jt|ddS(NsReadyT(uTrueu connecteduclientufireuwrite(uselfusockuargs((u0/home/prologic/work/circuits/tests/net/server.pyuconnects  uServer.connectcCsd|_d|_dS(NT(uNoneuclientuTrueu disconnected(uselfusock((u0/home/prologic/work/circuits/tests/net/server.pyu disconnect$s uServer.disconnectcCs ||_|S(N(udata(uselfusockudata((u0/home/prologic/work/circuits/tests/net/server.pyuread(s u Server.read( u__name__u __module__u __qualname__uchannelu__init__ureadyucloseucloseduconnectu disconnecturead(u __locals__((u __class__u0/home/prologic/work/circuits/tests/net/server.pyuServers     uServerN(ucircuitsu Componentucircuits.net.eventsuwriteuServer(((u0/home/prologic/work/circuits/tests/net/server.pyuscircuits-3.1.0/tests/net/__pycache__/test_pipe.cpython-27-PYTEST.pyc0000644000014400001440000000702012414363102026134 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZejdkrIejdnddl m Z ddl m Z ddl mZddlmZmZdd lmZd Zd ZdS( iNtwin32sUnsupported Platform(tManager(tPipe(tSelect(tclosetwritei(tClientcCs|jditd6dS(NtfuncargstPoller(taddcallR(tmetafunc((s3/home/prologic/work/circuits/tests/net/test_pipe.pytpytest_generate_testssc Cst|}tdd\}}|j||j|td|jj|}td|jj|}|jzHtj}d}|||}|sjddidtj kst j |rt j |ndd6t j |d6d tj kst j tr't j tnd d 6t j |d 6t j |d 6}t t j|nd}}}tj}d}|||}|s`ddidtj kst j |rt j |ndd6t j |d6d tj kst j trt j tnd d 6t j |d 6t j |d 6}t t j|nd}}}|jtd tj}d}d }||||}|sddidtj kst j |rt j |ndd6t j |d6d tj ks t j tr/t j tnd d 6t j |d 6t j |d 6t j |d6} t t j| nd}}}}|jtd tj}d}d }||||}|sddidtj kst j |rt j |ndd6t j |d6d tj ksFt j trUt j tnd d 6t j |d 6t j |d 6t j |d6} t t j| nd}}}}|jttj}d}|||}|sddidtj kst j |r(t j |ndd6t j |d6d tj ks`t j trot j tnd d 6t j |d 6t j |d 6}t t j|nd}}}|jttj}d}|||}|sddidtj kst j |r.t j |ndd6t j |d6d tj ksft j trut j tnd d 6t j |d 6t j |d 6}t t j|nd}}}Wd|jXdS(NtatbtchanneltreadytsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }tpy3tpy2tpytesttpy0tpy7tpy5tfootdatas\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }tpy9t disconnected(RRtregisterRRtstartRtwait_fort @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetfireRRtstop( RtmR R t @py_assert1t @py_assert4t @py_assert6t @py_format8t @py_assert8t @py_format10((s3/home/prologic/work/circuits/tests/net/test_pipe.pyt test_pipesr         (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteR RtPLATFORMtskiptcircuitsRtcircuits.net.socketsRtcircuits.core.pollersRtcircuits.net.eventsRRtclientRR R/(((s3/home/prologic/work/circuits/tests/net/test_pipe.pyts   circuits-3.1.0/tests/net/__pycache__/__init__.cpython-33.pyc0000644000014400001440000000022112414363411024645 0ustar prologicusers00000000000000 Qc@sdS(N((((u2/home/prologic/work/circuits/tests/net/__init__.pyuscircuits-3.1.0/tests/net/__pycache__/test_pipe.cpython-32-PYTEST.pyc0000644000014400001440000000725212414363276026153 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlZejdkrIejdnddl m Z ddl m Z ddl mZddlmZmZdd lmZd Zd ZdS( iNuwin32uUnsupported Platform(uManager(uPipe(uSelect(ucloseuwritei(uClientcCs|jditd6dS(NufuncargsuPoller(uaddcalluSelect(umetafunc((u3/home/prologic/work/circuits/tests/net/test_pipe.pyupytest_generate_testssc Cst|}tdd\}}|j||j|td|jj|}td|jj|}|jzHtj}d}|||}|sjddidtj kst j |rt j |ndd6t j |d6d tj kst j tr't j tnd d 6t j |d 6t j |d 6}t t j|nd}}}tj}d}|||}|s`ddidtj kst j |rt j |ndd6t j |d6d tj kst j trt j tnd d 6t j |d 6t j |d 6}t t j|nd}}}|jtd tj}d}d }||||}|sddidtj kst j |rt j |ndd6t j |d6d tj ks t j tr/t j tnd d 6t j |d 6t j |d 6t j |d6} t t j| nd}}}}|jtd tj}d}d }||||}|sddidtj kst j |rt j |ndd6t j |d6d tj ksFt j trUt j tnd d 6t j |d 6t j |d 6t j |d6} t t j| nd}}}}|jttj}d}|||}|sddidtj kst j |r(t j |ndd6t j |d6d tj ks`t j trot j tnd d 6t j |d 6t j |d 6}t t j|nd}}}|jttj}d}|||}|sddidtj kst j |r.t j |ndd6t j |d6d tj ksft j trut j tnd d 6t j |d 6t j |d 6}t t j|nd}}}Wd|jXdS(NuaubuchannelureadyuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }upy3upy2upytestupy0upy7upy5sfooudatau\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }upy9u disconnected(uManageruPipeuregisteruClientuchannelustartupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneufireuwriteucloseustop( uPollerumuaubu @py_assert1u @py_assert4u @py_assert6u @py_format8u @py_assert8u @py_format10((u3/home/prologic/work/circuits/tests/net/test_pipe.pyu test_pipesr         (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuPLATFORMuskipucircuitsuManagerucircuits.net.socketsuPipeucircuits.core.pollersuSelectucircuits.net.eventsucloseuwriteuclientuClientupytest_generate_testsu test_pipe(((u3/home/prologic/work/circuits/tests/net/test_pipe.pyus   circuits-3.1.0/tests/net/__pycache__/__init__.cpython-34.pyc0000644000014400001440000000020512414363522024653 0ustar prologicusers00000000000000 Q@sdS)Nrrr2/home/prologic/work/circuits/tests/net/__init__.pyscircuits-3.1.0/tests/net/__pycache__/client.cpython-32.pyc0000644000014400001440000000447312414363276024411 0ustar prologicusers00000000000000l ?Tc@s'ddlmZGddeZdS(i(u Componentcse|EeZdZefdZdZdZdZdZdZdZ dZ S( uclientcsStt|jd|d|_d|_d|_d|_d|_ d|_ dS(NuchanneluF( usuperuClientu__init__udatauNoneuerroruFalseureadyuclosedu connectedu disconnected(uselfuchannel(u __class__(u0/home/prologic/work/circuits/tests/net/client.pyu__init__s     cGs d|_dS(NT(uTrueuready(uselfuargs((u0/home/prologic/work/circuits/tests/net/client.pyureadyscCs ||_dS(N(uerror(uselfuerror((u0/home/prologic/work/circuits/tests/net/client.pyuerrorscCs d|_dS(NT(uTrueu connected(uselfuhostuport((u0/home/prologic/work/circuits/tests/net/client.pyu connectedscGsdS(N((uselfuargs((u0/home/prologic/work/circuits/tests/net/client.pyu disconnectscCs d|_dS(NT(uTrueu disconnected(uself((u0/home/prologic/work/circuits/tests/net/client.pyu disconnectedscCs d|_dS(NT(uTrueuclosed(uself((u0/home/prologic/work/circuits/tests/net/client.pyuclosed!scGs8t|dkr!|\}}n |d}||_dS(Nii(ulenudata(uselfuargsu_udata((u0/home/prologic/work/circuits/tests/net/client.pyuread$s ( u__name__u __module__uchannelu__init__ureadyuerroru connectedu disconnectu disconnecteducloseduread(u __locals__((u __class__u0/home/prologic/work/circuits/tests/net/client.pyuClients       uClientN(ucircuitsu ComponentuClient(((u0/home/prologic/work/circuits/tests/net/client.pyuscircuits-3.1.0/tests/net/__pycache__/test_tcp.cpython-32-PYTEST.pyc0000644000014400001440000005566312414363276026015 0ustar prologicusers00000000000000l ?T}c@s`ddlZddljjZddlZddlZddlm Z ddlm Z m Z ddlmZm Z mZmZmZddlmZddlmZmZmZddlmZmZmZmZddlmZmZmZm Z d d l!m"Z"d d l#m$Z$d Z%d Z&dZ'dZ(dZ)dZ*dZ+dZ,dS(iN(uerror(u EAI_NODATAu EAI_NONAME(usocketuAF_INETuAF_INET6u SOCK_STREAMuhas_ipv6(uManager(ucloseuconnectuwrite(uSelectuPolluEPolluKQueue(u TCPServeru TCP6Serveru TCPClientu TCP6Clienti(uClient(uServercCs=d}tj}d}||||}|s+ddidtjks[tj|rjtj|ndd6tj|d6d tjkstjtrtjtnd d 6d tjkstj|rtj|nd d 6tj|d 6tj|d6}ttj|nd}}}dS(Ncstfd|DS(Nc3s|]}t|VqdS(N(ugetattr(u.0ua(uobj(u2/home/prologic/work/circuits/tests/net/test_tcp.pyu s(uall(uobjuattr((uobju2/home/prologic/work/circuits/tests/net/test_tcp.pyucheckersuhostuportuu\assert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py6)s) }userverupy3upy2upytestupy0ucheckerupy6upy5upy8(uhostuport( upytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(userverucheckeru @py_assert1u @py_assert4u @py_assert7u @py_format9((u2/home/prologic/work/circuits/tests/net/test_tcp.pyu wait_hosts  cCs|jditd6|d6ttdrN|jditd6|d6nttdr~|jditd6|d6nttdr|jditd6|d6ndS(NufuncargsuPolleruipv6upolluepollukqueue(uaddcalluSelectuhasattruselectuPolluEPolluKQueue(umetafuncuipv6((u2/home/prologic/work/circuits/tests/net/test_tcp.pyu_pytest_generate_testss!!cCs-t|ddtr)t|ddndS(Nuipv6FT(u_pytest_generate_testsuFalseuhas_ipv6uTrue(umetafunc((u2/home/prologic/work/circuits/tests/net/test_tcp.pyupytest_generate_tests&sc Cs t|}|r.td}t}ntd}t}t|}t|}|j||j||jzP t j }d}|||} | slddidt j kst j|rt j|ndd6t j|d6d t j kst jt r)t jt nd d 6t j| d 6t j|d 6} tt j| nd}}} t j }d}|||} | sbddid t j kst j|rt j|nd d6t j|d6d t j kst jt rt jt nd d 6t j| d 6t j|d 6} tt j| nd}}} t||jt|j|jt j }d}|||} | s~ddidt j kst j|rt j|ndd6t j|d6d t j ks,t jt r;t jt nd d 6t j| d 6t j|d 6} tt j| nd}}} t j }d}|||} | stddid t j kst j|rt j|nd d6t j|d6d t j ks"t jt r1t jt nd d 6t j| d 6t j|d 6} tt j| nd}}} t j }d}d} |||| } | sddidt j kst j|rt j|ndd6t j|d6d t j ks!t jt r0t jt nd d 6t j| d 6t j|d 6t j| d6} tt j| nd}}} } |jtdt j }d}d} |||| } | sddid t j kst j|rt j|nd d6t j|d6d t j ksGt jt rVt jt nd d 6t j| d 6t j|d 6t j| d6} tt j| nd}}} } t j }d}d} |||| } | sddidt j kst j|r"t j|ndd6t j|d6d t j ksZt jt rit jt nd d 6t j| d 6t j|d 6t j| d6} tt j| nd}}} } |jtt j }d}|||} | sddidt j ks-t j|r<t j|ndd6t j|d6d t j kstt jt rt jt nd d 6t j| d 6t j|d 6} tt j| nd}}} t j }d}|||} | s ddid t j ks# t j|r2 t j|nd d6t j|d6d t j ksj t jt ry t jt nd d 6t j| d 6t j|d 6} tt j| nd}}} |jtt j }d}|||} | s ddid t j ks) t j|r8 t j|nd d6t j|d6d t j ksp t jt r t jt nd d 6t j| d 6t j|d 6} tt j| nd}}} Wd|jXdS(Nu::1iureadyuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uclientupy3upy2upytestupy0upy7upy5userveru connectedudatasReadyu\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }upy9sfoou disconnecteduclosed(u::1i(uManageru TCP6Serveru TCP6Clientu TCPServeru TCPClientuServeruClienturegisterustartupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneu wait_hostufireuconnectuhostuportuwriteucloseustop( uPolleruipv6umu tcp_serveru tcp_clientuserveruclientu @py_assert1u @py_assert4u @py_assert6u @py_format8u @py_assert8u @py_format10((u2/home/prologic/work/circuits/tests/net/test_tcp.pyutest_tcp_basic,s                    c 'CsOtjdkr8tjdddkr8tjdnt|}|rftd}t}ntd}t}t |}t |}|j ||j ||j ztj }d}|||} | sdd id tjks tj|rtj|nd d 6tj|d 6d tjksRtjtratjtnd d6tj| d6tj|d6} ttj| nd}}} tj }d}|||} | sdd idtjkstj|rtj|ndd 6tj|d 6d tjksHtjtrWtjtnd d6tj| d6tj|d6} ttj| nd}}} t||jt|j|jtj }d}|||} | sdd id tjkstj|r,tj|nd d 6tj|d 6d tjksdtjtrstjtnd d6tj| d6tj|d6} ttj| nd}}} tj }d}|||} | sdd idtjkstj|r"tj|ndd 6tj|d 6d tjksZtjtritjtnd d6tj| d6tj|d6} ttj| nd}}} tj }d}d} |||| } | sddid tjkstj|r!tj|nd d 6tj|d 6d tjksYtjtrhtjtnd d6tj| d6tj|d6tj| d6} ttj| nd}}} } |jtdtj }d}d} |||| } | sddidtjks8tj|rGtj|ndd 6tj|d 6d tjkstjtrtjtnd d6tj| d6tj|d6tj| d6} ttj| nd}}} } |jttj }d}|||} | sdd id tjksRtj|ratj|nd d 6tj|d 6d tjkstjtrtjtnd d6tj| d6tj|d6} ttj| nd}}} |jt|j|jtj }d}|||} | sdd id tjksdtj|rstj|nd d 6tj|d 6d tjkstjtrtjtnd d6tj| d6tj|d6} ttj| nd}}} tj }d}|||} | s dd idtjksZ tj|ri tj|ndd 6tj|d 6d tjks tjtr tjtnd d6tj| d6tj|d6} ttj| nd}}} tj }d}d} |||| } | s ddid tjksY tj|rh tj|nd d 6tj|d 6d tjks tjtr tjtnd d6tj| d6tj|d6tj| d6} ttj| nd}}} } |jtdtj }d}d} |||| } | s( ddidtjks tj|r tj|ndd 6tj|d 6d tjks tjtr tjtnd d6tj| d6tj|d6tj| d6} ttj| nd}}} } |jttj }d}|||} | s2 dd id tjks tj|r tj|nd d 6tj|d 6d tjks tjtr tjtnd d6tj| d6tj|d6} ttj| nd}}} tj }d}|||} | s(dd idtjks tj|r tj|ndd 6tj|d 6d tjks tjtr tjtnd d6tj| d6tj|d6} ttj| nd}}} |jttj }d}|||} | s.dd idtjkstj|rtj|ndd 6tj|d 6d tjkstjtrtjtnd d6tj| d6tj|d6} ttj| nd}}} Wd|jXdS(Nuwin32iiuBroken on Windows on Python 3.2u::1iureadyuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uclientupy3upy2upytestupy0upy7upy5userveru connectedudatasReadyu\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }upy9sfoou disconnecteduclosed(ii(u::1i(upytestuPLATFORMuPYVERuskipuManageru TCP6Serveru TCP6Clientu TCPServeru TCPClientuServeruClienturegisterustartuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneu wait_hostufireuconnectuhostuportuwriteucloseustop( uPolleruipv6umu tcp_serveru tcp_clientuserveruclientu @py_assert1u @py_assert4u @py_assert6u @py_format8u @py_assert8u @py_format10((u2/home/prologic/work/circuits/tests/net/test_tcp.pyutest_tcp_reconnectUs(                        cCstjdkrtjdnt|}|rStddf}t}ntd}t}t|}t |}|j ||j ||j ztj }d}|||} | rddidt jkptj|rtj|ndd 6tj|d 6d t jkp=tjtrOtjtnd d 6tj| d 6tj|d6} ttj| nt}}} tj }d}|||} | rddidt jkptj|rtj|ndd 6tj|d 6d t jkp4tjtrFtjtnd d 6tj| d 6tj|d6} ttj| nt}}} t||j|jf\} } |jj|jt| | tj }d}|||} | rddidt jkp)tj|r;tj|ndd 6tj|d 6d t jkpptjtrtjtnd d 6tj| d 6tj|d6} ttj| nt}}} |j} t| t}| rdditj| d 6dt jkp*tj|r<tj|ndd6dt jkpatjtrstjtndd 6tj|d6dt jkptjtrtjtndd6}ttj|nt} }|jtdtj }d}|||} | rddidt jkpGtj|rYtj|ndd 6tj|d 6d t jkptjtrtjtnd d 6tj| d 6tj|d6} ttj| nt}}} t |_!|jtdtj }d}d} |||d| }|tk}| rtj"df|fdf|tfidt jkptjtrtjtndd6dt jkptj|rtj|ndd 6tj|d 6d t jkp tjtrtjtnd d 6tj| d 6tj|d6tj|d6}dd i|d!6}ttj|nt}}} }}Wd|j#XdS("Nuwin32uBroken on Windowsu::1iureadyuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uclientupy3upy2upytestupy0upy7upy5userveru connecteduPassert %(py6)s {%(py6)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.error }, %(py4)s) }upy1u isinstanceupy6u SocketErrorupy4sfoou disconnectedg?utimeoutuisui%(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, timeout=%(py7)s) } is %(py11)suNoneupy11upy9uassert %(py13)supy13($upytestuPLATFORMuskipuManageru TCP6Serveru TCP6Clientu TCPServeru TCPClientuServeruClienturegisterustartuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneu wait_hostuhostuportu_sockucloseufireuconnectuerroru isinstanceu SocketErroruwriteuFalseu disconnectedu_call_reprcompareustop(uPolleruipv6umu tcp_serveru tcp_clientuserveruclientu @py_assert1u @py_assert4u @py_assert6u @py_format8uhostuportu @py_assert2u @py_assert5u @py_format7u @py_assert8u @py_assert10u @py_format12u @py_format14((u2/home/prologic/work/circuits/tests/net/test_tcp.pyutest_tcp_connect_closed_ports                   cCsb t|}|rttt}|jd|jd|j\}}}}|jtt d}t t }nhtt t}|jd|jd|j\}}|jtt d}t t}|j||j||jz= tj}d} ||| } | sddidtjksetj|rttj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6} ttj| nd}} } tj}d} ||| } | sddidtjks[tj|rjtj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6} ttj| nd}} } t||jt|j|jtj}d} ||| } | sddidtjkswtj|rtj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6} ttj| nd}} } tj}d} ||| } | sddidtjksmtj|r|tj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6} ttj| nd}} } tj}d} d} ||| | } | sddidtjksltj|r{tj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6tj| d6} ttj| nd}} } } |jt dtj}d} d} ||| | } | s;ddidtjkstj|rtj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6tj| d6} ttj| nd}} } } |jttj}d} ||| } | sEddidtjkstj|rtj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6} ttj| nd}} } tj}d} ||| } | s; ddidtjkstj|rtj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6} ttj| nd}} } |jttj}d} ||| } | sA ddidtjks tj|r tj|ndd6tj|d 6d tjks tjtr tjtnd d 6tj| d 6tj| d 6} ttj| nd}} } Wd|j!XdS(Nu::1iiuureadyuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uclientupy3upy2upytestupy0upy7upy5userveru connectedudatasReadyu\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }upy9sfoou disconnecteduclosed(u::1i(u::1i(ui("uManagerusocketuAF_INET6u SOCK_STREAMubindulistenu getsocknameucloseuServeru TCP6ServeruClientu TCP6ClientuAF_INETu TCPServeru TCPClienturegisterustartupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneu wait_hostufireuconnectuhostuportuwriteustop(uPolleruipv6umusocku_u bind_portuserveruclientu @py_assert1u @py_assert4u @py_assert6u @py_format8u @py_assert8u @py_format10((u2/home/prologic/work/circuits/tests/net/test_tcp.pyu test_tcp_binds                   c Cst|}|r"t}n t}t|}|j||jz tj}d}|||}|s:ddidtj kst j |rt j |ndd6t j |d6dtj kst j trt j tndd6t j |d 6t j |d 6}t t j|nd}}}|jtd d tj}d }d}||||} | sbddidtj kst j |rt j |ndd6t j |d6dtj kst j trt j tndd6t j |d 6t j |d 6t j | d6} t t j| nd}}}} tjdkrw|j}|j} d}| |k} | sbt jd| fd| |fit j |d6dtj kst j |rt j |ndd6t j |d 6t j | d6}di|d6} t t j| nd}} } }n|j}|j} ttf}| |k} | s\t jd| fd| |fit j |d6dtj kst j |rt j |ndd6t j |d 6t j | d6}di|d6} t t j| nd}} } }Wd|jXdS(NureadyuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uclientupy3upy2upytestupy0upy7upy5ufooiuerrorcSstt||tS(N(u isinstanceugetattru SocketError(uobjuattr((u2/home/prologic/work/circuits/tests/net/test_tcp.pyusu\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }upy9uwin32i*u==uH%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error }.errno } == %(py7)supy4uassert %(py9)suinuH%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error }.errno } in %(py7)s(u==(uH%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error }.errno } == %(py7)suassert %(py9)s(uin(uH%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error }.errno } in %(py7)suassert %(py9)s(uManageru TCP6Clientu TCPClientuClienturegisterustartupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneufireuconnectuPLATFORMuerroruerrnou_call_reprcompareu EAI_NODATAu EAI_NONAMEustop( uPolleruipv6umu tcp_clientuclientu @py_assert1u @py_assert4u @py_assert6u @py_format8u @py_assert8u @py_format10u @py_assert3u @py_assert5((u2/home/prologic/work/circuits/tests/net/test_tcp.pyutest_tcp_lookup_failuresX           (-ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuselectusocketuerroru SocketErroru EAI_NODATAu EAI_NONAMEuAF_INETuAF_INET6u SOCK_STREAMuhas_ipv6ucircuitsuManagerucircuits.net.eventsucloseuconnectuwriteucircuits.core.pollersuSelectuPolluEPolluKQueueucircuits.net.socketsu TCPServeru TCP6Serveru TCPClientu TCP6ClientuclientuClientuserveruServeru wait_hostu_pytest_generate_testsupytest_generate_testsutest_tcp_basicutest_tcp_reconnectutest_tcp_connect_closed_portu test_tcp_bindutest_tcp_lookup_failure(((u2/home/prologic/work/circuits/tests/net/test_tcp.pyus(   (""   ) = 0 2circuits-3.1.0/tests/net/__pycache__/__init__.cpython-32.pyc0000644000014400001440000000021512414363276024660 0ustar prologicusers00000000000000l Qc@sdS(N((((u2/home/prologic/work/circuits/tests/net/__init__.pyuscircuits-3.1.0/tests/net/__pycache__/test_client.cpython-27-PYTEST.pyc0000644000014400001440000000766212414363102026471 0ustar prologicusers00000000000000 ?Tc@sMddlZddljjZddlmZdZdZ dZ dS(iN(tgaierrorcCsddlm}d|fdY}|d}|jd}d}||k}|stjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nd}}}dS(Ni(tClientt TestClientcBseZdZRS(cSsdS(N(tNone(tself((s5/home/prologic/work/circuits/tests/net/test_client.pyt_create_socket s(t__name__t __module__R(((s5/home/prologic/work/circuits/tests/net/test_client.pyR siis==s%(py1)s == %(py4)stpy1tpy4tsassert %(py6)stpy6(s==(s%(py1)s == %(py4)ssassert %(py6)s( tcircuits.net.socketsRt_bindt @pytest_art_call_reprcomparet _safereprtAssertionErrort_format_explanationR(RRtclientt @py_assert0t @py_assert3t @py_assert2t @py_format5t @py_format7((s5/home/prologic/work/circuits/tests/net/test_client.pyttest_client_bind_ints   Ec Cs)ddlm}d}|j|d|d|jfdY}|d}|j}d}||k}|stjd|fd||fitj|d 6d tj kstj |rtj|nd d 6tj|d6}di|d6} t tj | nd}}}dS(Ni(tsocketscSs tdS(N(R(((s5/home/prologic/work/circuits/tests/net/test_client.pytbroken_gethostnamest gethostnameRcBseZdZRS(cSsdS(N(R(R((s5/home/prologic/work/circuits/tests/net/test_client.pyRs(RRR(((s5/home/prologic/work/circuits/tests/net/test_client.pyRsis0.0.0.0s==s-%(py2)s {%(py2)s = %(py0)s._bind } == %(py5)stpy2Rtpy0tpy5R sassert %(py7)stpy7(s0.0.0.0i(s==(s-%(py2)s {%(py2)s = %(py0)s._bind } == %(py5)ssassert %(py7)s(t circuits.netRtsetattrRR RRRt @py_builtinstlocalst_should_repr_global_nameRRR( t monkeypatchRRRRt @py_assert1t @py_assert4Rt @py_format6t @py_format8((s5/home/prologic/work/circuits/tests/net/test_client.pyttest_client_bind_int_gaierrors    |cCs ddlm}d|fdY}|d}|j}d}||k}|stjd|fd||fitj|d 6d tjkstj|rtj|nd d 6tj|d 6}di|d6}t tj |nd}}}dS(Ni(RRcBseZdZRS(cSsdS(N(R(R((s5/home/prologic/work/circuits/tests/net/test_client.pyR*s(RRR(((s5/home/prologic/work/circuits/tests/net/test_client.pyR(ss 0.0.0.0:1234s0.0.0.0is==s-%(py2)s {%(py2)s = %(py0)s._bind } == %(py5)sRRRRR sassert %(py7)sR (s0.0.0.0i(s==(s-%(py2)s {%(py2)s = %(py0)s._bind } == %(py5)ssassert %(py7)s( R RR RRRR#R$R%RRR(RRRR'R(RR)R*((s5/home/prologic/work/circuits/tests/net/test_client.pyttest_client_bind_str%s   |( t __builtin__R#t_pytest.assertion.rewritet assertiontrewriteRtsocketRRR+R,(((s5/home/prologic/work/circuits/tests/net/test_client.pyts  circuits-3.1.0/tests/net/__pycache__/test_unix.cpython-32-PYTEST.pyc0000644000014400001440000001214612414363276026177 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlZddlZddlZddl Z ej dkrmej dnddl m Z ddlmZmZmZddlmZmZddlmZmZmZmZd d lmZd d lmZd Zd ZdS(iNuwin32ucygwinuTest Not Applicable on Windows(uManager(ucloseuconnectuwrite(u UNIXServeru UNIXClient(uSelectuPolluEPolluKQueuei(uClient(uServercCs|jditd6ttdr@|jditd6nttdri|jditd6nttdr|jditd6ndS(NufuncargsuPollerupolluepollukqueue(uaddcalluSelectuhasattruselectuPolluEPolluKQueue(umetafunc((u3/home/prologic/work/circuits/tests/net/test_unix.pyupytest_generate_testssc Cs t|}|jd}t|}tt|}tt}|j||j||jz* t j }d}|||} | s]ddidt j kst j|rt j|ndd6t j|d6dt j ks t jt rt jt ndd 6t j| d 6t j|d 6} tt j| nd}}} t j }d}|||} | sSddid t j kst j|rt j|nd d6t j|d6dt j kst jt rt jt ndd 6t j| d 6t j|d 6} tt j| nd}}} |jt|t j }d }|||} | s\ddid t j kst j|rt j|nd d6t j|d6dt j ks t jt rt jt ndd 6t j| d 6t j|d 6} tt j| nd}}} t j }d }|||} | sRddidt j kst j|rt j|ndd6t j|d6dt j kst jt rt jt ndd 6t j| d 6t j|d 6} tt j| nd}}} t j }d}d} |||| } | saddid t j kst j|rt j|nd d6t j|d6dt j kst jt rt jt ndd 6t j| d 6t j|d 6t j| d6} tt j| nd}}} } |jtdt j }d}d} |||| } | sddidt j kst j|rt j|ndd6t j|d6dt j ks%t jt r4t jt ndd 6t j| d 6t j|d 6t j| d6} tt j| nd}}} } |jtt j }d}|||} | sddid t j kst j|rt j|nd d6t j|d6dt j ks?t jt rNt jt ndd 6t j| d 6t j|d 6} tt j| nd}}} t j }d}|||} | sddidt j kst j|rt j|ndd6t j|d6dt j ks5t jt rDt jt ndd 6t j| d 6t j|d 6} tt j| nd}}} |jtt j }d}|||} | s ddidt j kst j|r t j|ndd6t j|d6dt j ks; t jt rJ t jt ndd 6t j| d 6t j|d 6} tt j| nd}}} Wd|jtj|XdS(Nu test.sockureadyuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }userverupy3upy2upytestupy0upy7upy5uclientu connectedudatasReadyu\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }upy9sfoou disconnecteduclosed(uManageruensureustruServeru UNIXServeruClientu UNIXClienturegisterustartupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneufireuconnectuwriteucloseustopuosuremove( utmpdiruPollerumusockpathufilenameuserveruclientu @py_assert1u @py_assert4u @py_assert6u @py_format8u @py_assert8u @py_format10((u3/home/prologic/work/circuits/tests/net/test_unix.pyu test_unix"s              (uwin32ucygwin(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuosusysuselectuplatformuskipucircuitsuManagerucircuits.net.socketsucloseuconnectuwriteu UNIXServeru UNIXClientucircuits.core.pollersuSelectuPolluEPolluKQueueuclientuClientuserveruServerupytest_generate_testsu test_unix(((u3/home/prologic/work/circuits/tests/net/test_unix.pyus     " circuits-3.1.0/tests/net/__pycache__/test_poller_reuse.cpython-26-PYTEST.pyc0000644000014400001440000000401412407376151027710 0ustar prologicusers00000000000000 ?Tc@swddkZddkiiZddklZddkl Z ddk l Z l Z ddk lZlZdZdS(iN(tManager(tfindtype(t BasePollertPoller(t TCPServert TCPClientc CsIt}ti|}tdi|ti||izt|tdt}t |}d}||j}|pt i d|fd||fhdt i jpt i|ot i|ndd6dt i jpt it ot it ndd 6t i|d 6t i|d 6}d h|d 6}tt i|nd}}}|d}||j}|pt i d|fd||fht i|d6dt i jpt i|ot i|ndd 6} dh| d6} tt i| nd}}Wd|iXdS(Nitallis==s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)stpollerstpy1tlentpy0tpy3tpy6sassert %(py8)stpy8tiss%(py1)s is %(py3)stpollersassert %(py5)stpy5(s==(s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)s(R(s%(py1)s is %(py3)s(RRtregisterRRtstartRRtTrueR t @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetstop( tmRRt @py_assert2t @py_assert5t @py_assert4t @py_format7t @py_format9t @py_assert0t @py_format4t @py_format6((s;/home/prologic/work/circuits/tests/net/test_poller_reuse.pyttest s.     o(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtcircuitsRtcircuits.core.utilsRtcircuits.core.pollersRRtcircuits.net.socketsRRR'(((s;/home/prologic/work/circuits/tests/net/test_poller_reuse.pyts circuits-3.1.0/tests/net/__pycache__/test_pipe.cpython-34-PYTEST.pyc0000644000014400001440000000633412414363522026147 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlZejdkrIejdnddl m Z ddl m Z ddl mZddlmZmZdd lmZd d Zd d ZdS)Nwin32zUnsupported Platform)Manager)Pipe)Select)closewrite)ClientcCs|jditd6dS)NfuncargsPoller)addcallr)metafuncr3/home/prologic/work/circuits/tests/net/test_pipe.pypytest_generate_testssrc Cst|}tdd\}}|j||j|td|jj|}td|jj|}|jzHtj}d}|||}|sjdditj |d6tj |d6tj |d 6dt j kstj |rtj |ndd 6d t j ks8tj trGtj tnd d 6}t tj|nt}}}tj}d}|||}|s`dditj |d6tj |d6tj |d 6dt j kstj |rtj |ndd 6d t j ks.tj tr=tj tnd d 6}t tj|nt}}}|jtd tj}d}d }||||}|sdditj |d6tj |d6tj |d 6d t j ks tj trtj tnd d 6tj |d6dt j ksPtj |r_tj |ndd 6} t tj| nt}}}}|jtd tj}d}d }||||}|sdditj |d6tj |d6tj |d 6d t j ks/tj tr>tj tnd d 6tj |d6dt j ksvtj |rtj |ndd 6} t tj| nt}}}}|jttj}d}|||}|sdditj |d6tj |d6tj |d 6dt j ksItj |rXtj |ndd 6d t j kstj trtj tnd d 6}t tj|nt}}}|jttj}d}|||}|sdditj |d6tj |d6tj |d 6dt j ksOtj |r^tj |ndd 6d t j kstj trtj tnd d 6}t tj|nt}}}Wd|jXdS)NabchannelreadyzSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }py5py2py7py3pytestpy0sfoodataz\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }py9 disconnected)rrregisterr rstartrwait_for @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonefirerrstop) r mrr @py_assert1 @py_assert4 @py_assert6 @py_format8 @py_assert8 @py_format10rrr test_pipesr         r3)builtinsr$_pytest.assertion.rewrite assertionrewriter"rPLATFORMskipcircuitsrcircuits.net.socketsrcircuits.core.pollersrZcircuits.net.eventsrrclientr rr3rrrrs   circuits-3.1.0/tests/net/__pycache__/test_udp.cpython-26-PYTEST.pyc0000644000014400001440000001663012407376151026007 0ustar prologicusers00000000000000 ?T3 c @sddkZddkiiZddkZddkZddkZddk l Z ddk l Z l Z ddklZlZlZlZddklZlZlZlZddklZddklZd Zd Zd Zd Zd Z dS(iN(tManager(tclosetwrite(tSelecttPolltEPolltKQueue(t UDPServert UDPClientt UDP6Servert UDP6Clienti(tClient(tServercCsDd}ti}d}||||}|pdhdtijptitotitndd6dtijpti|oti|ndd6ti|d 6ti|d 6d tijpti|oti|nd d 6ti|d 6}tti|nd}}}dS(Ncstfd|DS(Nc3s"x|]}t|VqWdS(N(tgetattr(t.0ta(tobj(s2/home/prologic/work/circuits/tests/net/test_udp.pys s (tall(Rtattr((Rs2/home/prologic/work/circuits/tests/net/test_udp.pytcheckersthosttports\assert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py6)s) }tpytesttpy0tservertpy3tpy2tpy5Rtpy6tpy8(shostsport( Rtwait_fort @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(RRt @py_assert1t @py_assert4t @py_assert7t @py_format9((s2/home/prologic/work/circuits/tests/net/test_udp.pyt wait_hosts  cCs|idhtd6|d6ttdo"|idhtd6|d6nttdo"|idhtd6|d6nttdo"|idhtd6|d6ndS(NtfuncargstPollertipv6tpolltepolltkqueue(taddcallRthasattrtselectRRR(tmetafuncR.((s2/home/prologic/work/circuits/tests/net/test_udp.pyt_pytest_generate_testss""cCs2t|dttiot|dtndS(NR.(R6tFalsetsocketthas_ipv6tTrue(R5((s2/home/prologic/work/circuits/tests/net/test_udp.pytpytest_generate_tests$s c Cst|}|o"td}tddd}ntd}tddd}t|}t|}|i||i||izOt i }d}|||} | pdhdt i jpt it ot it ndd6d t i jpt i|ot i|nd d 6t i|d 6t i|d 6t i| d 6} tt i| nd}}} t i }d}|||} | pdhdt i jpt it ot it ndd6dt i jpt i|ot i|ndd 6t i|d 6t i|d 6t i| d 6} tt i| nd}}} t||it|i|ifdt i }d}d} |||| } | pdhdt i jpt it ot it ndd6d t i jpt i|ot i|nd d 6t i|d 6t i|d 6t i| d 6t i| d6} tt i| nd}}} } |itt i }d}|||} | pdhdt i jpt it ot it ndd6dt i jpt i|ot i|ndd 6t i|d 6t i|d 6t i| d 6} tt i| nd}}} |itt i }d}|||} | pdhdt i jpt it ot it ndd6d t i jpt i|ot i|nd d 6t i|d 6t i|d 6t i| d 6} tt i| nd}}} Wd|iXdS(Ns::1itchanneltclienttreadysSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }RRRRRRtpy7tfootdatas\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }tpy9tclosed(s::1i(s::1i(RR R RRR R tregistertstartRRRR R!R"R#R$R%R&R+tfireRRRRtstop( R-R.tmt udp_servert udp_clientRR=R'R(t @py_assert6t @py_format8t @py_assert8t @py_format10((s2/home/prologic/work/circuits/tests/net/test_udp.pyt test_basic*sj          "   c Cs't|}ttd}|i||izti}d}|||}| odhdtijp t i tot i tndd6dtijp t i |ot i |ndd6t i |d6t i |d 6t i |d 6}t t i |nt}}}t||i|if\}} |itti}d }|||}| odhdtijp t i tot i tndd6dtijp t i |ot i |ndd6t i |d6t i |d 6t i |d 6}t t i |nt}}}|id } ti}|||d | }| o+dhdtijp t i tot i tndd6dtijp t i |ot i |ndd6t i |d6dtijp t i | ot i | ndd 6dtijp t i |ot i |ndd6t i |d 6}t t i |nt}}tt|| f}|i|ti}d}d}|||d|} | odhdtijp t i tot i tndd6dtijp t i |ot i |ndd6t i |d6t i |d 6t i |d 6t i | d6} t t i | nt}}}} Wd|iXdS(NiR>sSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }RRRRRRR?t disconnectedcSs ||ijS(N(t components(RR((s2/home/prologic/work/circuits/tests/net/test_udp.pyttest]stvaluesbassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py4)s, value=%(py5)s) }RHRRtpy4g>@ttimeoutsdassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, timeout=%(py7)s) }RB(RR RRDRERRRR R!R"R#R$R%R&R+RRRFRt unregisterRG( R-R.RHRR'R(RKRLRRRRRMRN((s2/home/prologic/work/circuits/tests/net/test_udp.pyt test_closeLsT           (!t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteR!RR8R4tcircuitsRtcircuits.net.eventsRRtcircuits.core.pollersRRRRtcircuits.net.socketsRRR R R=R RR R+R6R;RORW(((s2/home/prologic/work/circuits/tests/net/test_udp.pyts    ""   "circuits-3.1.0/tests/net/__pycache__/test_unix.cpython-27-PYTEST.pyc0000644000014400001440000001153512414363102026170 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZddlZddlZddl Z ej dkrmej dnddl m Z ddlmZmZmZddlmZmZddlmZmZmZmZd d lmZd d lmZd Zd ZdS(iNtwin32tcygwinsTest Not Applicable on Windows(tManager(tclosetconnecttwrite(t UNIXServert UNIXClient(tSelecttPolltEPolltKQueuei(tClient(tServercCs|jditd6ttdr@|jditd6nttdri|jditd6nttdr|jditd6ndS(NtfuncargstPollertpolltepolltkqueue(taddcallRthasattrtselectR R R (tmetafunc((s3/home/prologic/work/circuits/tests/net/test_unix.pytpytest_generate_testssc Cs t|}|jd}t|}tt|}tt}|j||j||jz* t j }d}|||} | s]ddidt j kst j|rt j|ndd6t j|d6dt j ks t jt rt jt ndd 6t j| d 6t j|d 6} tt j| nd}}} t j }d}|||} | sSddid t j kst j|rt j|nd d6t j|d6dt j kst jt rt jt ndd 6t j| d 6t j|d 6} tt j| nd}}} |jt|t j }d }|||} | s\ddid t j kst j|rt j|nd d6t j|d6dt j ks t jt rt jt ndd 6t j| d 6t j|d 6} tt j| nd}}} t j }d }|||} | sRddidt j kst j|rt j|ndd6t j|d6dt j kst jt rt jt ndd 6t j| d 6t j|d 6} tt j| nd}}} t j }d}d} |||| } | saddid t j kst j|rt j|nd d6t j|d6dt j kst jt rt jt ndd 6t j| d 6t j|d 6t j| d6} tt j| nd}}} } |jtdt j }d}d} |||| } | sddidt j kst j|rt j|ndd6t j|d6dt j ks%t jt r4t jt ndd 6t j| d 6t j|d 6t j| d6} tt j| nd}}} } |jtt j }d}|||} | sddid t j kst j|rt j|nd d6t j|d6dt j ks?t jt rNt jt ndd 6t j| d 6t j|d 6} tt j| nd}}} t j }d}|||} | sddidt j kst j|rt j|ndd6t j|d6dt j ks5t jt rDt jt ndd 6t j| d 6t j|d 6} tt j| nd}}} |jtt j }d}|||} | s ddidt j kst j|r t j|ndd6t j|d6dt j ks; t jt rJ t jt ndd 6t j| d 6t j|d 6} tt j| nd}}} Wd|jtj|XdS(Ns test.socktreadytsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }tservertpy3tpy2tpytesttpy0tpy7tpy5tclientt connectedtdatatReadys\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }tpy9tfoot disconnectedtclosed(RtensuretstrR RR RtregistertstartRtwait_fort @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetfireRRRtstoptostremove( ttmpdirRtmtsockpathtfilenameRR!t @py_assert1t @py_assert4t @py_assert6t @py_format8t @py_assert8t @py_format10((s3/home/prologic/work/circuits/tests/net/test_unix.pyt test_unix"s              (swin32scygwin(t __builtin__R.t_pytest.assertion.rewritet assertiontrewriteR0RR8tsysRtplatformtskiptcircuitsRtcircuits.net.socketsRRRRRtcircuits.core.pollersRR R R R!R RR RRD(((s3/home/prologic/work/circuits/tests/net/test_unix.pyts     " circuits-3.1.0/tests/net/__pycache__/test_client.cpython-26-PYTEST.pyc0000644000014400001440000000756612407376151026505 0ustar prologicusers00000000000000 ?Tc@sMddkZddkiiZddklZdZdZ dZ dS(iN(tgaierrorcCsddkl}d|fdY}|d}|id}d}||j}|potid |fd||fhti|d 6ti|d 6}d h|d 6}tti|nd}}}dS(Ni(tClientt TestClientcBseZdZRS(cSsdS(N(tNone(tself((s5/home/prologic/work/circuits/tests/net/test_client.pyt_create_socket s(t__name__t __module__R(((s5/home/prologic/work/circuits/tests/net/test_client.pyR siis==s%(py1)s == %(py4)stpy1tpy4sassert %(py6)stpy6(s==(s%(py1)s == %(py4)s( tcircuits.net.socketsRt_bindt @pytest_art_call_reprcomparet _safereprtAssertionErrort_format_explanationR(RRtclientt @py_assert0t @py_assert3t @py_assert2t @py_format5t @py_format7((s5/home/prologic/work/circuits/tests/net/test_client.pyttest_client_bind_ints   Ec Cs.ddkl}d}|i|d|d|ifdY}|d}|i}d}||j}|ptid|fd||fhd tijpti |oti |nd d 6ti |d 6ti |d6}dh|d6} t ti | nd}}}dS(Ni(tsocketscSs tdS(N(R(((s5/home/prologic/work/circuits/tests/net/test_client.pytbroken_gethostnamest gethostnameRcBseZdZRS(cSsdS(N(R(R((s5/home/prologic/work/circuits/tests/net/test_client.pyRs(RRR(((s5/home/prologic/work/circuits/tests/net/test_client.pyRsis0.0.0.0s==s-%(py2)s {%(py2)s = %(py0)s._bind } == %(py5)sRtpy0tpy2tpy5sassert %(py7)stpy7(s0.0.0.0i(s==(s-%(py2)s {%(py2)s = %(py0)s._bind } == %(py5)s(t circuits.netRtsetattrRR R Rt @py_builtinstlocalst_should_repr_global_nameRRRR( t monkeypatchRRRRt @py_assert1t @py_assert4Rt @py_format6t @py_format8((s5/home/prologic/work/circuits/tests/net/test_client.pyttest_client_bind_int_gaierrors    cCsddkl}d|fdY}|d}|i}d}||j}|ptid|fd||fhd tijpti|oti|nd d 6ti|d 6ti|d 6}dh|d6}t ti |nd}}}dS(Ni(RRcBseZdZRS(cSsdS(N(R(R((s5/home/prologic/work/circuits/tests/net/test_client.pyR*s(RRR(((s5/home/prologic/work/circuits/tests/net/test_client.pyR(ss 0.0.0.0:1234s0.0.0.0is==s-%(py2)s {%(py2)s = %(py0)s._bind } == %(py5)sRRRRsassert %(py7)sR(s0.0.0.0i(s==(s-%(py2)s {%(py2)s = %(py0)s._bind } == %(py5)s( R RR R RR"R#R$RRRR(RRRR&R'RR(R)((s5/home/prologic/work/circuits/tests/net/test_client.pyttest_client_bind_str%s   ( t __builtin__R"t_pytest.assertion.rewritet assertiontrewriteR tsocketRRR*R+(((s5/home/prologic/work/circuits/tests/net/test_client.pyts  circuits-3.1.0/tests/net/__pycache__/test_poller_reuse.cpython-33-PYTEST.pyc0000644000014400001440000000431212414363411027700 0ustar prologicusers00000000000000 ?Tc@szddlZddljjZddlmZddlm Z ddl m Z m Z ddl mZmZddZdS(iN(uManager(ufindtype(u BasePolleruPoller(u TCPServeru TCPClientc Cs<t}tj|}tdj|tj||jzt|tdd}t |}d}||k}|s`t j d|fd||fit j |d6dt jkst j|rt j |ndd6d t jks t jt rt j t nd d 6t j |d 6}di|d6}tt j|nd}}}|d}||k}|st j d|fd||fidt jkst j|rt j |ndd6t j |d6} di| d6} tt j| nd}}Wd|jXdS(Niualliu==u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)supy3upollersupy1ulenupy0upy6uuassert %(py8)supy8uisu%(py1)s is %(py3)supolleruassert %(py5)supy5T(u==(u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)suassert %(py8)s(uis(u%(py1)s is %(py3)suassert %(py5)s(uManageruPolleruregisteru TCPServeru TCPClientustartufindtypeu BasePolleruTrueulenu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneustop( umupollerupollersu @py_assert2u @py_assert5u @py_assert4u @py_format7u @py_format9u @py_assert0u @py_format4u @py_format6((u;/home/prologic/work/circuits/tests/net/test_poller_reuse.pyutest s.     lutest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsuManagerucircuits.core.utilsufindtypeucircuits.core.pollersu BasePolleruPollerucircuits.net.socketsu TCPServeru TCPClientutest(((u;/home/prologic/work/circuits/tests/net/test_poller_reuse.pyus circuits-3.1.0/tests/net/__pycache__/test_pipe.cpython-33-PYTEST.pyc0000644000014400001440000000733012414363411026140 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZejdkrIejdnddl m Z ddl m Z ddl mZddlmZmZdd lmZd d Zd d ZdS(iNuwin32uUnsupported Platform(uManager(uPipe(uSelect(ucloseuwritei(uClientcCs|jditd6dS(NufuncargsuPoller(uaddcalluSelect(umetafunc((u3/home/prologic/work/circuits/tests/net/test_pipe.pyupytest_generate_testssupytest_generate_testsc Cst|}tdd\}}|j||j|td|jj|}td|jj|}|jzHtj}d}|||}|sjddidtj kst j |rt j |ndd6t j |d6d tj kst j tr't j tnd d 6t j |d 6t j |d 6}t t j|nd}}}tj}d}|||}|s`ddidtj kst j |rt j |ndd6t j |d6d tj kst j trt j tnd d 6t j |d 6t j |d 6}t t j|nd}}}|jtd tj}d}d }||||}|sddidtj kst j |rt j |ndd6t j |d6d tj ks t j tr/t j tnd d 6t j |d 6t j |d 6t j |d6} t t j| nd}}}}|jtd tj}d}d }||||}|sddidtj kst j |rt j |ndd6t j |d6d tj ksFt j trUt j tnd d 6t j |d 6t j |d 6t j |d6} t t j| nd}}}}|jttj}d}|||}|sddidtj kst j |r(t j |ndd6t j |d6d tj ks`t j trot j tnd d 6t j |d 6t j |d 6}t t j|nd}}}|jttj}d}|||}|sddidtj kst j |r.t j |ndd6t j |d6d tj ksft j trut j tnd d 6t j |d 6t j |d 6}t t j|nd}}}Wd|jXdS(NuaubuchannelureadyuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }upy3upy2upytestupy0upy7upy5sfooudatau\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }upy9u disconnected(uManageruPipeuregisteruClientuchannelustartupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneufireuwriteucloseustop( uPollerumuaubu @py_assert1u @py_assert4u @py_assert6u @py_format8u @py_assert8u @py_format10((u3/home/prologic/work/circuits/tests/net/test_pipe.pyu test_pipesr         u test_pipe(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuPLATFORMuskipucircuitsuManagerucircuits.net.socketsuPipeucircuits.core.pollersuSelectucircuits.net.eventsucloseuwriteuclientuClientupytest_generate_testsu test_pipe(((u3/home/prologic/work/circuits/tests/net/test_pipe.pyus   circuits-3.1.0/tests/net/__pycache__/test_poller_reuse.cpython-32-PYTEST.pyc0000644000014400001440000000427612414363276027721 0ustar prologicusers00000000000000l ?Tc@swddlZddljjZddlmZddlm Z ddl m Z m Z ddl mZmZdZdS(iN(uManager(ufindtype(u BasePolleruPoller(u TCPServeru TCPClientc Cs<t}tj|}tdj|tj||jzt|tdd}t |}d}||k}|s`t j d|fd||fit j |d6dt jkst j|rt j |ndd6d t jks t jt rt j t nd d 6t j |d 6}di|d6}tt j|nd}}}|d}||k}|st j d|fd||fidt jkst j|rt j |ndd6t j |d6} di| d6} tt j| nd}}Wd|jXdS(Niualliu==u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)supy3upollersupy1ulenupy0upy6uuassert %(py8)supy8uisu%(py1)s is %(py3)supolleruassert %(py5)supy5T(u==(u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)suassert %(py8)s(uis(u%(py1)s is %(py3)suassert %(py5)s(uManageruPolleruregisteru TCPServeru TCPClientustartufindtypeu BasePolleruTrueulenu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneustop( umupollerupollersu @py_assert2u @py_assert5u @py_assert4u @py_format7u @py_format9u @py_assert0u @py_format4u @py_format6((u;/home/prologic/work/circuits/tests/net/test_poller_reuse.pyutest s.     l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsuManagerucircuits.core.utilsufindtypeucircuits.core.pollersu BasePolleruPollerucircuits.net.socketsu TCPServeru TCPClientutest(((u;/home/prologic/work/circuits/tests/net/test_poller_reuse.pyus circuits-3.1.0/tests/net/__pycache__/test_client.cpython-34-PYTEST.pyc0000644000014400001440000000665512414363522026476 0ustar prologicusers00000000000000 ?T@sVddlZddljjZddlmZddZddZ ddZ dS) N)gaierrorcCsddlm}Gddd|}|d}|jd}d}||k}|stjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nt}}}dS)Nr)Clientc@seZdZddZdS)z(test_client_bind_int..TestClientcSsdS)N)selfrr5/home/prologic/work/circuits/tests/net/test_client.py_create_socket sz7test_client_bind_int..TestClient._create_socketN)__name__ __module__ __qualname__rrrrr TestClient s r i==%(py1)s == %(py4)spy1py4assert %(py6)spy6)r )rr) circuits.net.socketsr_bind @pytest_ar_call_reprcompare _safereprAssertionError_format_explanationNone)rr client @py_assert0 @py_assert3 @py_assert2 @py_format5 @py_format7rrrtest_client_bind_ints   Er"c Cs,ddlm}dd}|j|d|Gddd|j}|d}|j}d}||k}|stjd|fd||fitj|d 6tj|d 6dtj kstj |rtj|ndd6}di|d6} t tj | nt }}}dS)Nr)socketscSs tdS)N)rrrrrbroken_gethostnamesz9test_client_bind_int_gaierror..broken_gethostname gethostnamec@seZdZddZdS)z1test_client_bind_int_gaierror..TestClientcSsdS)Nr)rrrrrsz@test_client_bind_int_gaierror..TestClient._create_socketN)rr r rrrrrr s r 0.0.0.0r -%(py2)s {%(py2)s = %(py0)s._bind } == %(py5)spy5py2rpy0rassert %(py7)spy7)r'r&)r )r(r,)Z circuits.netr#setattrrrrrr @py_builtinslocals_should_repr_global_namerrr) monkeypatchr#r$r r @py_assert1 @py_assert4r @py_format6 @py_format8rrrtest_client_bind_int_gaierrors    |r7cCs ddlm}Gddd|}|d}|j}d}||k}|stjd|fd||fitj|d 6tj|d 6d tjkstj|rtj|nd d 6}di|d6}t tj |nt }}}dS)Nr)rc@seZdZddZdS)z(test_client_bind_str..TestClientcSsdS)Nr)rrrrr*sz7test_client_bind_str..TestClient._create_socketN)rr r rrrrrr (s r z 0.0.0.0:12340.0.0.0r -%(py2)s {%(py2)s = %(py0)s._bind } == %(py5)sr)r*rr+rassert %(py7)sr-)r8r9)r )r:r;) rrrrrrr/r0r1rrr)rr rr3r4rr5r6rrrtest_client_bind_str%s   |r<) builtinsr/_pytest.assertion.rewrite assertionrewritersocketrr"r7r<rrrrs  circuits-3.1.0/tests/net/__pycache__/test_udp.cpython-32-PYTEST.pyc0000644000014400001440000002040212414363276025776 0ustar prologicusers00000000000000l ?T3 c@sddlZddljjZddlZddlZddlZddl m Z ddl m Z m Z ddlmZmZmZmZddlmZmZmZmZddlmZddlmZd Zd Zd Zd Zd Z dS(iN(uManager(ucloseuwrite(uSelectuPolluEPolluKQueue(u UDPServeru UDPClientu UDP6Serveru UDP6Clienti(uClient(uServercCs=d}tj}d}||||}|s+ddidtjks[tj|rjtj|ndd6tj|d6d tjkstjtrtjtnd d 6d tjkstj|rtj|nd d 6tj|d 6tj|d6}ttj|nd}}}dS(Ncstfd|DS(Nc3s|]}t|VqdS(N(ugetattr(u.0ua(uobj(u2/home/prologic/work/circuits/tests/net/test_udp.pyu s(uall(uobjuattr((uobju2/home/prologic/work/circuits/tests/net/test_udp.pyucheckersuhostuportuu\assert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py6)s) }userverupy3upy2upytestupy0ucheckerupy6upy5upy8(uhostuport( upytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(userverucheckeru @py_assert1u @py_assert4u @py_assert7u @py_format9((u2/home/prologic/work/circuits/tests/net/test_udp.pyu wait_hosts  cCs|jditd6|d6ttdrN|jditd6|d6nttdr~|jditd6|d6nttdr|jditd6|d6ndS(NufuncargsuPolleruipv6upolluepollukqueue(uaddcalluSelectuhasattruselectuPolluEPolluKQueue(umetafuncuipv6((u2/home/prologic/work/circuits/tests/net/test_udp.pyu_pytest_generate_testss!!cCs0t|ddtjr,t|ddndS(Nuipv6FT(u_pytest_generate_testsuFalseusocketuhas_ipv6uTrue(umetafunc((u2/home/prologic/work/circuits/tests/net/test_udp.pyupytest_generate_tests$s c Cst|}|r7td}tddd}ntd}tddd}t|}t|}|j||j||jz;t j }d}|||} | s~ddidt j kst j|rt j|ndd 6t j|d 6d t j ks,t jt r;t jt nd d 6t j| d 6t j|d6} tt j| nd}}} t j }d}|||} | stddidt j kst j|rt j|ndd 6t j|d 6d t j ks"t jt r1t jt nd d 6t j| d 6t j|d6} tt j| nd}}} t||jt|j|jfdt j }d}d} |||| } | sddidt j kst j|rt j|ndd 6t j|d 6d t j ksMt jt r\t jt nd d 6t j| d 6t j|d6t j| d6} tt j| nd}}} } |jtt j }d}|||} | sddidt j ks t j|r/t j|ndd 6t j|d 6d t j ksgt jt rvt jt nd d 6t j| d 6t j|d6} tt j| nd}}} |jtt j }d}|||} | sddidt j ks&t j|r5t j|ndd 6t j|d 6d t j ksmt jt r|t jt nd d 6t j| d 6t j|d6} tt j| nd}}} Wd|jXdS(Nu::1iuchanneluclientureadyuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }userverupy3upy2upytestupy0upy7upy5sfooudatau\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }upy9uclosed(u::1i(u::1i(uManageru UDP6Serveru UDP6Clientu UDPServeru UDPClientuServeruClienturegisterustartupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneu wait_hostufireuwriteuhostuportucloseustop( uPolleruipv6umu udp_serveru udp_clientuserveruclientu @py_assert1u @py_assert4u @py_assert6u @py_format8u @py_assert8u @py_format10((u2/home/prologic/work/circuits/tests/net/test_udp.pyu test_basic*sj          "   c Cst|}ttd}|j||jztj}d}|||}| r&ddidtjkpt j |rt j |ndd6t j |d6dtjkpt j trt j tndd 6t j |d 6t j |d 6}t t j |nt}}}t||j|jf\}} |jttj}d }|||}| rOddidtjkpt j |rt j |ndd6t j |d6dtjkpt j tr t j tndd 6t j |d 6t j |d 6}t t j |nt}}}|jd } tj}|||d| }| rddidtjkpt j |rt j |ndd6t j |d6dtjkpt j trt j tndd 6t j |d 6dtjkpKt j | r]t j | ndd 6dtjkpt j |rt j |ndd6}t t j |nt}}tt|| f}|j|tj}d}d}|||d|} | rddidtjkp@t j |rRt j |ndd6t j |d6dtjkpt j trt j tndd 6t j |d 6t j |d 6t j | d6} t t j | nt}}}} Wd|jXdS(NiureadyuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }userverupy3upy2upytestupy0upy7upy5u disconnectedcSs ||jkS(N(u components(uobjuattr((u2/home/prologic/work/circuits/tests/net/test_udp.pyutest]suvalueubassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py4)s, value=%(py5)s) }umutestupy4g>@utimeoutudassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, timeout=%(py7)s) }upy9(uManageruServeru UDPServeruregisterustartupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneu wait_hostuhostuportufireucloseu unregisterustop( uPolleruipv6umuserveru @py_assert1u @py_assert4u @py_assert6u @py_format8uhostuportutestu @py_assert8u @py_format10((u2/home/prologic/work/circuits/tests/net/test_udp.pyu test_closeLsT            (!ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestusocketuselectucircuitsuManagerucircuits.net.eventsucloseuwriteucircuits.core.pollersuSelectuPolluEPolluKQueueucircuits.net.socketsu UDPServeru UDPClientu UDP6Serveru UDP6ClientuclientuClientuserveruServeru wait_hostu_pytest_generate_testsupytest_generate_testsu test_basicu test_close(((u2/home/prologic/work/circuits/tests/net/test_udp.pyus    ""   "circuits-3.1.0/tests/net/__pycache__/test_tcp.cpython-26-PYTEST.pyc0000644000014400001440000005120212407376151025777 0ustar prologicusers00000000000000 ?T}c@s`ddkZddkiiZddkZddkZddkl Z ddkl Z l Z ddklZl Z lZlZlZddklZddklZlZlZddklZlZlZlZddklZlZlZl Z d d k!l"Z"d d k#l$Z$d Z%d Z&dZ'dZ(dZ)dZ*dZ+dZ,dS(iN(terror(t EAI_NODATAt EAI_NONAME(tsockettAF_INETtAF_INET6t SOCK_STREAMthas_ipv6(tManager(tclosetconnecttwrite(tSelecttPolltEPolltKQueue(t TCPServert TCP6Servert TCPClientt TCP6Clienti(tClient(tServercCsDd}ti}d}||||}|pdhdtijptitotitndd6dtijpti|oti|ndd6ti|d 6ti|d 6d tijpti|oti|nd d 6ti|d 6}tti|nd}}}dS(Ncstfd|DS(Nc3s"x|]}t|VqWdS(N(tgetattr(t.0ta(tobj(s2/home/prologic/work/circuits/tests/net/test_tcp.pys s (tall(Rtattr((Rs2/home/prologic/work/circuits/tests/net/test_tcp.pytcheckersthosttports\assert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py6)s) }tpytesttpy0tservertpy3tpy2tpy5Rtpy6tpy8(shostsport( Rtwait_fort @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(R!Rt @py_assert1t @py_assert4t @py_assert7t @py_format9((s2/home/prologic/work/circuits/tests/net/test_tcp.pyt wait_hosts  cCs|idhtd6|d6ttdo"|idhtd6|d6nttdo"|idhtd6|d6nttdo"|idhtd6|d6ndS(NtfuncargstPollertipv6tpolltepolltkqueue(taddcallR thasattrtselectR RR(tmetafuncR7((s2/home/prologic/work/circuits/tests/net/test_tcp.pyt_pytest_generate_testss""cCs/t|dttot|dtndS(NR7(R?tFalseRtTrue(R>((s2/home/prologic/work/circuits/tests/net/test_tcp.pytpytest_generate_tests&sc Cs t|}|otd}t}ntd}t}t|}t|}|i||i||izx t i }d}|||} | pdhdt i jpt it ot it ndd6dt i jpt i|ot i|ndd6t i|d 6t i|d 6t i| d 6} tt i| nd}}} t i }d}|||} | pdhdt i jpt it ot it ndd6d t i jpt i|ot i|nd d6t i|d 6t i|d 6t i| d 6} tt i| nd}}} t||it|i|it i }d }|||} | pdhdt i jpt it ot it ndd6dt i jpt i|ot i|ndd6t i|d 6t i|d 6t i| d 6} tt i| nd}}} t i }d }|||} | pdhdt i jpt it ot it ndd6d t i jpt i|ot i|nd d6t i|d 6t i|d 6t i| d 6} tt i| nd}}} t i }d}d} |||| } | pdhdt i jpt it ot it ndd6dt i jpt i|ot i|ndd6t i|d 6t i|d 6t i| d 6t i| d6} tt i| nd}}} } |itdt i }d}d} |||| } | pdhdt i jpt it ot it ndd6d t i jpt i|ot i|nd d6t i|d 6t i|d 6t i| d 6t i| d6} tt i| nd}}} } t i }d}d} |||| } | pdhdt i jpt it ot it ndd6dt i jpt i|ot i|ndd6t i|d 6t i|d 6t i| d 6t i| d6} tt i| nd}}} } |itt i }d}|||} | pdhdt i jpt it ot it ndd6dt i jpt i|ot i|ndd6t i|d 6t i|d 6t i| d 6} tt i| nd}}} t i }d}|||} | pdhdt i jpt it ot it ndd6d t i jpt i|ot i|nd d6t i|d 6t i|d 6t i| d 6} tt i| nd}}} |itt i }d}|||} | pdhdt i jpt it ot it ndd6d t i jpt i|ot i|nd d6t i|d 6t i|d 6t i| d 6} tt i| nd}}} Wd|iXdS(Ns::1itreadysSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }RR tclientR"R#R$tpy7R!t connectedtdatatReadys\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }tpy9tfoot disconnectedtclosed(s::1i(RRRRRRRtregistertstartRR'R(R)R*R+R,R-R.R/R4tfireR RRR R tstop( R6R7tmt tcp_servert tcp_clientR!RDR0R1t @py_assert6t @py_format8t @py_assert8t @py_format10((s2/home/prologic/work/circuits/tests/net/test_tcp.pyttest_tcp_basic,s                    c Cstidjo%tid djotidnt|}|otd}t}ntd}t}t |}t |}|i ||i ||i zti }d}|||} | pdhd tijptitotitnd d 6d tijpti|oti|nd d 6ti|d 6ti|d6ti| d6} tti| nd}}} ti }d}|||} | pdhd tijptitotitnd d 6dtijpti|oti|ndd 6ti|d 6ti|d6ti| d6} tti| nd}}} t||it|i|iti }d}|||} | pdhd tijptitotitnd d 6d tijpti|oti|nd d 6ti|d 6ti|d6ti| d6} tti| nd}}} ti }d}|||} | pdhd tijptitotitnd d 6dtijpti|oti|ndd 6ti|d 6ti|d6ti| d6} tti| nd}}} ti }d}d} |||| } | pdhd tijptitotitnd d 6d tijpti|oti|nd d 6ti|d 6ti|d6ti| d6ti| d6} tti| nd}}} } |itdti }d}d} |||| } | pdhd tijptitotitnd d 6dtijpti|oti|ndd 6ti|d 6ti|d6ti| d6ti| d6} tti| nd}}} } |itti }d}|||} | pdhd tijptitotitnd d 6d tijpti|oti|nd d 6ti|d 6ti|d6ti| d6} tti| nd}}} |it|i|iti }d}|||} | pdhd tijptitotitnd d 6d tijpti|oti|nd d 6ti|d 6ti|d6ti| d6} tti| nd}}} ti }d}|||} | pdhd tijptitotitnd d 6dtijpti|oti|ndd 6ti|d 6ti|d6ti| d6} tti| nd}}} ti }d}d} |||| } | pdhd tijptitotitnd d 6d tijpti|oti|nd d 6ti|d 6ti|d6ti| d6ti| d6} tti| nd}}} } |itdti }d}d} |||| } | pdhd tijptitotitnd d 6dtijpti|oti|ndd 6ti|d 6ti|d6ti| d6ti| d6} tti| nd}}} } |itti }d}|||} | pdhd tijptitotitnd d 6d tijpti|oti|nd d 6ti|d 6ti|d6ti| d6} tti| nd}}} ti }d}|||} | pdhd tijptitotitnd d 6dtijpti|oti|ndd 6ti|d 6ti|d6ti| d6} tti| nd}}} |itti }d}|||} | pdhd tijptitotitnd d 6dtijpti|oti|ndd 6ti|d 6ti|d6ti| d6} tti| nd}}} Wd|iXdS(Ntwin32iisBroken on Windows on Python 3.2s::1iRCsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }RR RDR"R#R$RER!RFRGRHs\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }RIRJRKRL(ii(s::1i(RtPLATFORMtPYVERtskipRRRRRRRRMRNR'R(R)R*R+R,R-R.R/R4ROR RRR R RP( R6R7RQRRRSR!RDR0R1RTRURVRW((s2/home/prologic/work/circuits/tests/net/test_tcp.pyttest_tcp_reconnectUs$                        c Cstidjotidnt|}|otddf}t}ntd}t}t|}t |}|i ||i ||i zti }d}|||} | odhdt ijp titotitndd6d t ijp ti|oti|nd d 6ti|d 6ti|d 6ti| d 6} tti| nt}}} ti }d}|||} | odhdt ijp titotitndd6dt ijp ti|oti|ndd 6ti|d 6ti|d 6ti| d 6} tti| nt}}} t||i|if\} } |ii|it| | ti }d}|||} | odhdt ijp titotitndd6d t ijp ti|oti|nd d 6ti|d 6ti|d 6ti| d 6} tti| nt}}} |i} t| t}| odhd t ijp ti|oti|nd d6dt ijp titotitndd6ti| d 6dt ijp titotitndd6ti|d6}tti|nt} }|itdti }d}|||} | odhdt ijp titotitndd6d t ijp ti|oti|nd d 6ti|d 6ti|d 6ti| d 6} tti| nt}}} t |_!|itdti }d}d} |||d| }|tj}| oCti"df|fdf|tfhdt ijp titotitndd6dt ijp titotitndd6d t ijp ti|oti|nd d 6ti|d 6ti|d 6ti| d 6ti|d6}dh|d 6}tti|nt}}} }}Wd|i#XdS(!NRYsBroken on Windowss::1iRCsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }RR RDR"R#R$RER!RFsPassert %(py6)s {%(py6)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.error }, %(py4)s) }tpy1t isinstancet SocketErrortpy4R%RJRKg?ttimeouttissi%(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, timeout=%(py7)s) } is %(py11)sR/tpy11RIsassert %(py13)stpy13($RRZR\RRRRRRRRMRNR'R(R)R*R+R,R-R.R/R4RRt_sockR ROR RR_R`R R@RKt_call_reprcompareRP(R6R7RQRRRSR!RDR0R1RTRURRt @py_assert2t @py_assert5t @py_format7RVt @py_assert10t @py_format12t @py_format14((s2/home/prologic/work/circuits/tests/net/test_tcp.pyttest_tcp_connect_closed_ports                   cCs t|}|orttt}|id|id|i\}}}}|itt d}t t }nitt t}|id|id|i\}}|itt d}t t}|i||i||iza ti}d} ||| } | pdhdtijptitotitndd6d tijpti|oti|nd d 6ti|d 6ti| d 6ti| d 6} tti| nd}} } ti}d} ||| } | pdhdtijptitotitndd6dtijpti|oti|ndd 6ti|d 6ti| d 6ti| d 6} tti| nd}} } t||it|i|iti}d} ||| } | pdhdtijptitotitndd6d tijpti|oti|nd d 6ti|d 6ti| d 6ti| d 6} tti| nd}} } ti}d} ||| } | pdhdtijptitotitndd6dtijpti|oti|ndd 6ti|d 6ti| d 6ti| d 6} tti| nd}} } ti}d} d} ||| | } | pdhdtijptitotitndd6d tijpti|oti|nd d 6ti|d 6ti| d 6ti| d 6ti| d6} tti| nd}} } } |it dti}d} d} ||| | } | pdhdtijptitotitndd6dtijpti|oti|ndd 6ti|d 6ti| d 6ti| d 6ti| d6} tti| nd}} } } |itti}d} ||| } | pdhdtijptitotitndd6d tijpti|oti|nd d 6ti|d 6ti| d 6ti| d 6} tti| nd}} } ti}d} ||| } | pdhdtijptitotitndd6dtijpti|oti|ndd 6ti|d 6ti| d 6ti| d 6} tti| nd}} } |itti}d} ||| } | pdhdtijptitotitndd6dtijpti|oti|ndd 6ti|d 6ti| d 6ti| d 6} tti| nd}} } Wd|i!XdS(Ns::1iitRCsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }RR RDR"R#R$RER!RFRGRHs\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }RIRJRKRL(s::1i(s::1i(Roi("RRRRtbindtlistent getsocknameR RRRRRRRRMRNRR'R(R)R*R+R,R-R.R/R4ROR RRR RP(R6R7RQtsockt_t bind_portR!RDR0R1RTRURVRW((s2/home/prologic/work/circuits/tests/net/test_tcp.pyt test_tcp_binds                   c Cst|}|o t}n t}t|}|i||iz4ti}d}|||}|pdhdti jpt i tot i tndd6dti jpt i |ot i |ndd6t i |d6t i |d6t i |d 6}t t i|nd}}}|itd d ti}d }d }||||} | pdhdti jpt i tot i tndd6dti jpt i |ot i |ndd6t i |d6t i |d6t i |d 6t i | d6} t t i| nd}}}} tidjo|i}|i} d}| |j} | pt id| fd| |fhdti jpt i |ot i |ndd6t i |d6t i | d6t i |d 6}dh|d6} t t i| nd}} } }n|i}|i} ttf}| |j} | pt id| fd| |fhdti jpt i |ot i |ndd6t i |d6t i | d6t i |d 6}dh|d6} t t i| nd}} } }Wd|iXdS(NRCsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }RR RDR"R#R$RERJiRcSstt||tS((R_RR`(RR((s2/home/prologic/work/circuits/tests/net/test_tcp.pytss\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }RIRYi*s==sH%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error }.errno } == %(py7)sRasassert %(py9)stinsH%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error }.errno } in %(py7)s(s==(sH%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error }.errno } == %(py7)s(Rx(sH%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error }.errno } in %(py7)s(RRRRRMRNRR'R(R)R*R+R,R-R.R/ROR RZRterrnoRgRRRP( R6R7RQRSRDR0R1RTRURVRWt @py_assert3Ri((s2/home/prologic/work/circuits/tests/net/test_tcp.pyttest_tcp_lookup_failuresX           (-t __builtin__R(t_pytest.assertion.rewritet assertiontrewriteR*RR=RRR`RRRRRRtcircuitsRtcircuits.net.eventsR R R tcircuits.core.pollersR R RRtcircuits.net.socketsRRRRRDRR!RR4R?RBRXR]RnRvR{(((s2/home/prologic/work/circuits/tests/net/test_tcp.pyts(   (""   ) = 0 2circuits-3.1.0/tests/net/__pycache__/test_udp.cpython-34-PYTEST.pyc0000644000014400001440000001531012414363522025774 0ustar prologicusers00000000000000 ?T3 @s ddlZddljjZddlZddlZddlZddl m Z ddl m Z m Z ddlmZmZmZmZddlmZmZmZmZddlmZddlmZd d Zd d Zd dZddZddZ dS)N)Manager)closewrite)SelectPollEPollKQueue) UDPServer UDPClient UDP6Server UDP6Client)Client)ServercCs@dd}tj}d}||||}|s.dditj|d6tj|d6d tjks~tjtrtjtnd d 6tj|d 6d tjkstj|rtj|nd d 6dtjkstj|r tj|ndd6}ttj|nt }}}dS)Ncstfdd|DS)Nc3s|]}t|VqdS)N)getattr).0a)obj2/home/prologic/work/circuits/tests/net/test_udp.py sz-wait_host..checker..)all)rattrr)rrcheckerszwait_host..checkerhostportz\assert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py6)s) }py2py8pytestpy0py5rpy6serverpy3)zhostzport) rwait_for @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)r#r @py_assert1 @py_assert4 @py_assert7 @py_format9rrr wait_hosts  r2cCs|jditd6|d6ttdrN|jditd6|d6nttdr~|jditd6|d6nttdr|jditd6|d6ndS)NfuncargsPolleripv6pollepollkqueue)addcallrhasattrselectrrr)metafuncr5rrr_pytest_generate_testss!!r=cCs0t|ddtjr,t|ddndS)Nr5FT)r=sockethas_ipv6)r<rrrpytest_generate_tests$s r@c Cst|}|r7td}tddd}ntd}tddd}t|}t|}|j||j||jz;t j }d}|||} | s~ddit j |d6t j |d 6t j | d 6d t jkst j|r$t j |nd d 6d t jksLt jt r[t j t nd d6} tt j| nt}}} t j }d}|||} | stddit j |d6t j |d 6t j | d 6dt jks t j|rt j |ndd 6d t jksBt jt rQt j t nd d6} tt j| nt}}} t||jt|j|jfdt j }d}d} |||| } | sddit j | d6t j |d 6t j | d 6d t jks6t jt rEt j t nd d6t j |d6d t jks}t j|rt j |nd d 6} tt j| nt}}} } |jtt j }d}|||} | sddit j |d6t j |d 6t j | d 6dt jksPt j|r_t j |ndd 6d t jkst jt rt j t nd d6} tt j| nt}}} |jtt j }d}|||} | sddit j |d6t j |d 6t j | d 6d t jksVt j|ret j |nd d 6d t jkst jt rt j t nd d6} tt j| nt}}} Wd|jXdS)N::1rchannelclientreadyrzSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }r!rpy7r#r$rr sfoodataz\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }py9closed)rAr)rAr)rr r r r rrregisterstartrr%r&r'r(r)r*r+r,r-r2firerrrrstop) r4r5mZ udp_serverZ udp_clientr#rCr.r/ @py_assert6 @py_format8 @py_assert8 @py_format10rrr test_basic*sj          "   rRc Cst|}ttd}|j||jztj}d}|||}| r&dditj|d6tj|d6tj|d6dt j kptj |rtj|ndd 6d t j kptj trtjtnd d 6}t tj |nt}}}t||j|jf\}} |jttj}d }|||}| rOdditj|d6tj|d6tj|d6dt j kptj |rtj|ndd 6d t j kptj tr,tjtnd d 6}t tj |nt}}}|jd d} tj}|||d| }| rdditj|d6tj|d6d t j kptj trtjtnd d 6dt j kptj | r)tj| ndd6dt j kpNtj |r`tj|ndd6dt j kptj |rtj|ndd 6}t tj |nt}}tt|| f}|j|tj}d}d}|||d|} | rdditj| d6tj|d6tj|d6d t j kpstj trtjtnd d 6tj|d6dt j kptj |rtj|ndd 6} t tj | nt}}}} Wd|jXdS)NrrDrzSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }r!rrEr#r$rr disconnectedcSs ||jkS)N) components)rrrrrtest]sztest_close..testvaluezbassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py4)s, value=%(py5)s) }rUpy4rMg>@timeoutzdassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, timeout=%(py7)s) }rG)rrr rIrJrr%r&r'r(r)r*r+r,r-r2rrrKr unregisterrL) r4r5rMr#r.r/rNrOrrrUrPrQrrr test_closeLsT            rZ)!builtinsr(_pytest.assertion.rewrite assertionrewriter&rr>r;circuitsrZcircuits.net.eventsrrcircuits.core.pollersrrrrcircuits.net.socketsr r r r rCrr#rr2r=r@rRrZrrrrs    ""   "circuits-3.1.0/tests/net/__pycache__/client.cpython-34.pyc0000644000014400001440000000313612414363522024400 0ustar prologicusers00000000000000 ?TE@s*ddlmZGdddeZdS)) ComponentcseZdZdZefddZddZddZdd Zd d Zd d Z ddZ ddZ S)ClientclientcsStt|jd|d|_d|_d|_d|_d|_d|_dS)NchannelF) superr__init__dataerrorreadyclosed connected disconnected)selfr) __class__0/home/prologic/work/circuits/tests/net/client.pyrs     zClient.__init__cGs d|_dS)NT)r )rargsrrrr sz Client.readycCs ||_dS)N)r )rr rrrr sz Client.errorcCs d|_dS)NT)r )rhostportrrrr szClient.connectedcGsdS)Nr)rrrrr disconnectszClient.disconnectcCs d|_dS)NT)r)rrrrrszClient.disconnectedcCs d|_dS)NT)r )rrrrr !sz Client.closedcGs8t|dkr!|\}}n |d}||_dS)Nr)lenr )rr_r rrrread$s z Client.read) __name__ __module__ __qualname__rrr r r rrr rrr)rrrs       rN)circuitsrrrrrrscircuits-3.1.0/tests/net/__pycache__/test_tcp.cpython-27-PYTEST.pyc0000644000014400001440000005075212414363102025777 0ustar prologicusers00000000000000 ?T}c@s`ddlZddljjZddlZddlZddlm Z ddlm Z m Z ddlmZm Z mZmZmZddlmZddlmZmZmZddlmZmZmZmZddlmZmZmZm Z d d l!m"Z"d d l#m$Z$d Z%d Z&dZ'dZ(dZ)dZ*dZ+dZ,dS(iN(terror(t EAI_NODATAt EAI_NONAME(tsockettAF_INETtAF_INET6t SOCK_STREAMthas_ipv6(tManager(tclosetconnecttwrite(tSelecttPolltEPolltKQueue(t TCPServert TCP6Servert TCPClientt TCP6Clienti(tClient(tServercCs=d}tj}d}||||}|s+ddidtjks[tj|rjtj|ndd6tj|d6d tjkstjtrtjtnd d 6d tjkstj|rtj|nd d 6tj|d 6tj|d6}ttj|nd}}}dS(Ncstfd|DS(Nc3s|]}t|VqdS(N(tgetattr(t.0ta(tobj(s2/home/prologic/work/circuits/tests/net/test_tcp.pys s(tall(Rtattr((Rs2/home/prologic/work/circuits/tests/net/test_tcp.pytcheckersthosttportts\assert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py6)s) }tservertpy3tpy2tpytesttpy0Rtpy6tpy5tpy8(shostsport( R#twait_fort @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(R Rt @py_assert1t @py_assert4t @py_assert7t @py_format9((s2/home/prologic/work/circuits/tests/net/test_tcp.pyt wait_hosts  cCs|jditd6|d6ttdrN|jditd6|d6nttdr~|jditd6|d6nttdr|jditd6|d6ndS(NtfuncargstPollertipv6tpolltepolltkqueue(taddcallR thasattrtselectR RR(tmetafuncR8((s2/home/prologic/work/circuits/tests/net/test_tcp.pyt_pytest_generate_testss!!cCs-t|dttr)t|dtndS(NR8(R@tFalseRtTrue(R?((s2/home/prologic/work/circuits/tests/net/test_tcp.pytpytest_generate_tests&sc Cs t|}|r.td}t}ntd}t}t|}t|}|j||j||jzP t j }d}|||} | slddidt j kst j|rt j|ndd6t j|d6d t j kst jt r)t jt nd d 6t j| d 6t j|d 6} tt j| nd}}} t j }d}|||} | sbddid t j kst j|rt j|nd d6t j|d6d t j kst jt rt jt nd d 6t j| d 6t j|d 6} tt j| nd}}} t||jt|j|jt j }d}|||} | s~ddidt j kst j|rt j|ndd6t j|d6d t j ks,t jt r;t jt nd d 6t j| d 6t j|d 6} tt j| nd}}} t j }d}|||} | stddid t j kst j|rt j|nd d6t j|d6d t j ks"t jt r1t jt nd d 6t j| d 6t j|d 6} tt j| nd}}} t j }d}d} |||| } | sddidt j kst j|rt j|ndd6t j|d6d t j ks!t jt r0t jt nd d 6t j| d 6t j|d 6t j| d6} tt j| nd}}} } |jtdt j }d}d} |||| } | sddid t j kst j|rt j|nd d6t j|d6d t j ksGt jt rVt jt nd d 6t j| d 6t j|d 6t j| d6} tt j| nd}}} } t j }d}d} |||| } | sddidt j kst j|r"t j|ndd6t j|d6d t j ksZt jt rit jt nd d 6t j| d 6t j|d 6t j| d6} tt j| nd}}} } |jtt j }d}|||} | sddidt j ks-t j|r<t j|ndd6t j|d6d t j kstt jt rt jt nd d 6t j| d 6t j|d 6} tt j| nd}}} t j }d}|||} | s ddid t j ks# t j|r2 t j|nd d6t j|d6d t j ksj t jt ry t jt nd d 6t j| d 6t j|d 6} tt j| nd}}} |jtt j }d}|||} | s ddid t j ks) t j|r8 t j|nd d6t j|d6d t j ksp t jt r t jt nd d 6t j| d 6t j|d 6} tt j| nd}}} Wd|jXdS(Ns::1itreadyRsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }tclientR!R"R#R$tpy7R&R t connectedtdatatReadys\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }tpy9tfoot disconnectedtclosed(s::1i(RRRRRRRtregistertstartR#R(R)R*R+R,R-R.R/R0R5tfireR RRR R tstop( R7R8tmt tcp_servert tcp_clientR RER1R2t @py_assert6t @py_format8t @py_assert8t @py_format10((s2/home/prologic/work/circuits/tests/net/test_tcp.pyttest_tcp_basic,s                    c CsItjdkr2tjd dkr2tjdnt|}|r`td}t}ntd}t}t |}t |}|j ||j ||j ztj }d}|||} | sdd id tjkstj|rtj|nd d 6tj|d 6d tjksLtjtr[tjtnd d6tj| d6tj|d6} ttj| nd}}} tj }d}|||} | sdd idtjkstj|r tj|ndd 6tj|d 6d tjksBtjtrQtjtnd d6tj| d6tj|d6} ttj| nd}}} t||jt|j|jtj }d}|||} | sdd id tjkstj|r&tj|nd d 6tj|d 6d tjks^tjtrmtjtnd d6tj| d6tj|d6} ttj| nd}}} tj }d}|||} | sdd idtjks tj|rtj|ndd 6tj|d 6d tjksTtjtrctjtnd d6tj| d6tj|d6} ttj| nd}}} tj }d}d} |||| } | sddid tjks tj|rtj|nd d 6tj|d 6d tjksStjtrbtjtnd d6tj| d6tj|d6tj| d6} ttj| nd}}} } |jtdtj }d}d} |||| } | sddidtjks2tj|rAtj|ndd 6tj|d 6d tjksytjtrtjtnd d6tj| d6tj|d6tj| d6} ttj| nd}}} } |jttj }d}|||} | sdd id tjksLtj|r[tj|nd d 6tj|d 6d tjkstjtrtjtnd d6tj| d6tj|d6} ttj| nd}}} |jt|j|jtj }d}|||} | sdd id tjks^tj|rmtj|nd d 6tj|d 6d tjkstjtrtjtnd d6tj| d6tj|d6} ttj| nd}}} tj }d}|||} | s dd idtjksT tj|rc tj|ndd 6tj|d 6d tjks tjtr tjtnd d6tj| d6tj|d6} ttj| nd}}} tj }d}d} |||| } | s ddid tjksS tj|rb tj|nd d 6tj|d 6d tjks tjtr tjtnd d6tj| d6tj|d6tj| d6} ttj| nd}}} } |jtdtj }d}d} |||| } | s" ddidtjksy tj|r tj|ndd 6tj|d 6d tjks tjtr tjtnd d6tj| d6tj|d6tj| d6} ttj| nd}}} } |jttj }d}|||} | s, dd id tjks tj|r tj|nd d 6tj|d 6d tjks tjtr tjtnd d6tj| d6tj|d6} ttj| nd}}} tj }d}|||} | s"dd idtjks tj|r tj|ndd 6tj|d 6d tjks tjtr tjtnd d6tj| d6tj|d6} ttj| nd}}} |jttj }d}|||} | s(dd idtjkstj|rtj|ndd 6tj|d 6d tjkstjtrtjtnd d6tj| d6tj|d6} ttj| nd}}} Wd|jXdS(Ntwin32iisBroken on Windows on Python 3.2s::1iRDRsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }RER!R"R#R$RFR&R RGRHRIs\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }RJRKRLRM(ii(s::1i(R#tPLATFORMtPYVERtskipRRRRRRRRNROR(R)R*R+R,R-R.R/R0R5RPR RRR R RQ( R7R8RRRSRTR RER1R2RURVRWRX((s2/home/prologic/work/circuits/tests/net/test_tcp.pyttest_tcp_reconnectUs"                        cCstjdkrtjdnt|}|rStddf}t}ntd}t}t|}t |}|j ||j ||j ztj }d}|||} | rddidt jkptj|rtj|ndd 6tj|d 6d t jkp=tjtrOtjtnd d 6tj| d 6tj|d6} ttj| nt}}} tj }d}|||} | rddidt jkptj|rtj|ndd 6tj|d 6d t jkp4tjtrFtjtnd d 6tj| d 6tj|d6} ttj| nt}}} t||j|jf\} } |jj|jt| | tj }d}|||} | rddidt jkp)tj|r;tj|ndd 6tj|d 6d t jkpptjtrtjtnd d 6tj| d 6tj|d6} ttj| nt}}} |j} t| t}| rdditj| d 6dt jkp*tj|r<tj|ndd6dt jkpatjtrstjtndd 6tj|d6dt jkptjtrtjtndd6}ttj|nt} }|jtdtj }d}|||} | rddidt jkpGtj|rYtj|ndd 6tj|d 6d t jkptjtrtjtnd d 6tj| d 6tj|d6} ttj| nt}}} t |_!|jtdtj }d}d} |||d| }|tk}| rtj"df|fdf|tfidt jkptjtrtjtndd6dt jkptj|rtj|ndd 6tj|d 6d t jkp tjtrtjtnd d 6tj| d 6tj|d6tj|d6}dd i|d!6}ttj|nt}}} }}Wd|j#XdS("NRZsBroken on Windowss::1iRDRsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }RER!R"R#R$RFR&R RGsPassert %(py6)s {%(py6)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.error }, %(py4)s) }tpy1t isinstanceR%t SocketErrortpy4RKRLg?ttimeouttissi%(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, timeout=%(py7)s) } is %(py11)sR0tpy11RJsassert %(py13)stpy13($R#R[R]RRRRRRRRNROR(R)R*R+R,R-R.R/R0R5RRt_sockR RPR RR`RaR RARLt_call_reprcompareRQ(R7R8RRRSRTR RER1R2RURVRRt @py_assert2t @py_assert5t @py_format7RWt @py_assert10t @py_format12t @py_format14((s2/home/prologic/work/circuits/tests/net/test_tcp.pyttest_tcp_connect_closed_ports                   cCsb t|}|rttt}|jd|jd|j\}}}}|jtt d}t t }nhtt t}|jd|jd|j\}}|jtt d}t t}|j||j||jz= tj}d} ||| } | sddidtjksetj|rttj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6} ttj| nd}} } tj}d} ||| } | sddidtjks[tj|rjtj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6} ttj| nd}} } t||jt|j|jtj}d} ||| } | sddidtjkswtj|rtj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6} ttj| nd}} } tj}d} ||| } | sddidtjksmtj|r|tj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6} ttj| nd}} } tj}d} d} ||| | } | sddidtjksltj|r{tj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6tj| d6} ttj| nd}} } } |jt dtj}d} d} ||| | } | s;ddidtjkstj|rtj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6tj| d6} ttj| nd}} } } |jttj}d} ||| } | sEddidtjkstj|rtj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6} ttj| nd}} } tj}d} ||| } | s; ddidtjkstj|rtj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6} ttj| nd}} } |jttj}d} ||| } | sA ddidtjks tj|r tj|ndd6tj|d 6d tjks tjtr tjtnd d 6tj| d 6tj| d 6} ttj| nd}} } Wd|j!XdS(Ns::1iiRRDsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }RER!R"R#R$RFR&R RGRHRIs\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }RJRKRLRM(s::1i(s::1i(Ri("RRRRtbindtlistent getsocknameR RRRRRRRRNROR#R(R)R*R+R,R-R.R/R0R5RPR RRR RQ(R7R8RRtsockt_t bind_portR RER1R2RURVRWRX((s2/home/prologic/work/circuits/tests/net/test_tcp.pyt test_tcp_binds                   c Cst|}|r"t}n t}t|}|j||jz tj}d}|||}|s:ddidtj kst j |rt j |ndd6t j |d6dtj kst j trt j tndd6t j |d 6t j |d 6}t t j|nd}}}|jtd d tj}d }d}||||} | sbddidtj kst j |rt j |ndd6t j |d6dtj kst j trt j tndd6t j |d 6t j |d 6t j | d6} t t j| nd}}}} tjdkrw|j}|j} d}| |k} | sbt jd| fd| |fit j |d6dtj kst j |rt j |ndd6t j |d 6t j | d6}di|d6} t t j| nd}} } }n|j}|j} ttf}| |k} | s\t jd| fd| |fit j |d6dtj kst j |rt j |ndd6t j |d 6t j | d6}di|d6} t t j| nd}} } }Wd|jXdS(NRDRsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }RER!R"R#R$RFR&RKiRcSstt||tS(N(R`RRa(RR((s2/home/prologic/work/circuits/tests/net/test_tcp.pytss\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }RJRZi*s==sH%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error }.errno } == %(py7)sRbsassert %(py9)stinsH%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error }.errno } in %(py7)s(s==(sH%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error }.errno } == %(py7)ssassert %(py9)s(Rx(sH%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error }.errno } in %(py7)ssassert %(py9)s(RRRRRNROR#R(R)R*R+R,R-R.R/R0RPR R[RterrnoRhRRRQ( R7R8RRRTRER1R2RURVRWRXt @py_assert3Rj((s2/home/prologic/work/circuits/tests/net/test_tcp.pyttest_tcp_lookup_failuresX           (-t __builtin__R)t_pytest.assertion.rewritet assertiontrewriteR+R#R>RRRaRRRRRRtcircuitsRtcircuits.net.eventsR R R tcircuits.core.pollersR R RRtcircuits.net.socketsRRRRRERR RR5R@RCRYR^RoRvR{(((s2/home/prologic/work/circuits/tests/net/test_tcp.pyts(   (""   ) = 0 2circuits-3.1.0/tests/net/__pycache__/server.cpython-32.pyc0000644000014400001440000000441312414363276024433 0ustar prologicusers00000000000000l ?Tc@s7ddlmZddlmZGddeZdS(i(u Component(uwritecsY|EeZdZfdZdZdZdZdZdZdZ S(uservercs_tt|jd|_d|_d|_d|_d|_ d|_ d|_ d|_ dS(NuF( usuperuServeru__init__udatauNoneuhostuportuclientuFalseureadyuclosedu connectedu disconnected(uself(u __class__(u0/home/prologic/work/circuits/tests/net/server.pyu__init__ s       cCsd|_|\|_|_dS(NT(uTrueureadyuhostuport(uselfuserverubind((u0/home/prologic/work/circuits/tests/net/server.pyureadys cCsdS(N((uself((u0/home/prologic/work/circuits/tests/net/server.pyuclosescCs d|_dS(NT(uTrueuclosed(uself((u0/home/prologic/work/circuits/tests/net/server.pyuclosedscGs,d|_||_|jt|ddS(NsReadyT(uTrueu connecteduclientufireuwrite(uselfusockuargs((u0/home/prologic/work/circuits/tests/net/server.pyuconnects  cCsd|_d|_dS(NT(uNoneuclientuTrueu disconnected(uselfusock((u0/home/prologic/work/circuits/tests/net/server.pyu disconnect$s cCs ||_|S(N(udata(uselfusockudata((u0/home/prologic/work/circuits/tests/net/server.pyuread(s ( u__name__u __module__uchannelu__init__ureadyucloseucloseduconnectu disconnecturead(u __locals__((u __class__u0/home/prologic/work/circuits/tests/net/server.pyuServers      uServerN(ucircuitsu Componentucircuits.net.eventsuwriteuServer(((u0/home/prologic/work/circuits/tests/net/server.pyuscircuits-3.1.0/tests/net/__pycache__/test_unix.cpython-34-PYTEST.pyc0000644000014400001440000001074112414363522026172 0ustar prologicusers00000000000000 ?T@s ddlZddljjZddlZddlZddlZddl Z ej dkrmej dnddl m Z ddlmZmZmZddlmZmZddlmZmZmZmZd d lmZd d lmZd d ZddZdS)Nwin32cygwinzTest Not Applicable on Windows)Manager)closeconnectwrite) UNIXServer UNIXClient)SelectPollEPollKQueue)Client)ServercCs|jditd6ttdr@|jditd6nttdri|jditd6nttdr|jditd6ndS)NfuncargsPollerpollepollkqueue)addcallr hasattrselectr r r )metafuncr3/home/prologic/work/circuits/tests/net/test_unix.pypytest_generate_testssrc Cs t|}|jd}t|}tt|}tt}|j||j||jz* t j }d}|||} | s]ddit j |d6t j |d6t j | d6dt jkst j|rt j |ndd 6d t jks+t jt r:t j t nd d 6} tt j| nt}}} t j }d}|||} | sSddit j |d6t j |d6t j | d6d t jkst j|rt j |nd d 6d t jks!t jt r0t j t nd d 6} tt j| nt}}} |jt|t j }d }|||} | s\ddit j |d6t j |d6t j | d6d t jkst j|rt j |nd d 6d t jks*t jt r9t j t nd d 6} tt j| nt}}} t j }d }|||} | sRddit j |d6t j |d6t j | d6dt jkst j|rt j |ndd 6d t jks t jt r/t j t nd d 6} tt j| nt}}} t j }d}d} |||| } | saddit j | d6t j |d6t j | d6d t jkst jt rt j t nd d 6t j |d6d t jks/t j|r>t j |nd d 6} tt j| nt}}} } |jtdt j }d}d} |||| } | sddit j | d6t j |d6t j | d6d t jkst jt rt j t nd d 6t j |d6dt jksUt j|rdt j |ndd 6} tt j| nt}}} } |jtt j }d}|||} | sddit j |d6t j |d6t j | d6d t jks(t j|r7t j |nd d 6d t jks_t jt rnt j t nd d 6} tt j| nt}}} t j }d}|||} | sddit j |d6t j |d6t j | d6dt jkst j|r-t j |ndd 6d t jksUt jt rdt j t nd d 6} tt j| nt}}} |jtt j }d}|||} | s ddit j |d6t j |d6t j | d6dt jks$ t j|r3 t j |ndd 6d t jks[ t jt rj t j t nd d 6} tt j| nt}}} Wd|jtj|XdS)Nz test.sockreadyzSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }py5py2py7serverpy3pytestpy0client connecteddatasReadyz\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }py9sfoo disconnectedclosed)rensurestrrrrr registerstartr$wait_for @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonefirerrrstoposremove) tmpdirrmZsockpathfilenamer"r& @py_assert1 @py_assert4 @py_assert6 @py_format8 @py_assert8 @py_format10rrr test_unix"s              rF)zwin32zcygwin)builtinsr3_pytest.assertion.rewrite assertionrewriter1r$r;sysrplatformskipcircuitsrcircuits.net.socketsrrrrr circuits.core.pollersr r r r r&rr"rrrFrrrrs     " circuits-3.1.0/tests/net/__pycache__/test_client.cpython-33-PYTEST.pyc0000644000014400001440000001242312414363411026460 0ustar prologicusers00000000000000 ?Tc@sVddlZddljjZddlmZddZddZ ddZ dS( iN(ugaierrorcCsddlm}Gddd|}|d}|jd}d}||k}|stjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nd}}}dS(Ni(uClientcBs |EeZdZddZdS(u(test_client_bind_int..TestClientcSsdS(N(uNone(uself((u5/home/prologic/work/circuits/tests/net/test_client.pyu_create_socket su7test_client_bind_int..TestClient._create_socketN(u__name__u __module__u __qualname__u_create_socket(u __locals__((u5/home/prologic/work/circuits/tests/net/test_client.pyu TestClient su TestClientiiu==u%(py1)s == %(py4)supy1upy4uuassert %(py6)supy6(u==(u%(py1)s == %(py4)suassert %(py6)s( ucircuits.net.socketsuClientu_bindu @pytest_aru_call_reprcompareu _saferepruAssertionErroru_format_explanationuNone(uClientu TestClientuclientu @py_assert0u @py_assert3u @py_assert2u @py_format5u @py_format7((u5/home/prologic/work/circuits/tests/net/test_client.pyutest_client_bind_ints   Eutest_client_bind_intc Cs,ddlm}dd}|j|d|Gddd|j}|d}|j}d}||k}|stjd|fd||fitj|d 6d tj kstj |rtj|nd d6tj|d6}di|d6} t tj | nd}}}dS(Ni(usocketscSs tdS(N(ugaierror(((u5/home/prologic/work/circuits/tests/net/test_client.pyubroken_gethostnamesu9test_client_bind_int_gaierror..broken_gethostnameu gethostnamecBs |EeZdZddZdS(u1test_client_bind_int_gaierror..TestClientcSsdS(N(uNone(uself((u5/home/prologic/work/circuits/tests/net/test_client.pyu_create_socketsu@test_client_bind_int_gaierror..TestClient._create_socketN(u__name__u __module__u __qualname__u_create_socket(u __locals__((u5/home/prologic/work/circuits/tests/net/test_client.pyu TestClientsu TestClientiu0.0.0.0u==u-%(py2)s {%(py2)s = %(py0)s._bind } == %(py5)supy2uclientupy0upy5uuassert %(py7)supy7(u0.0.0.0i(u==(u-%(py2)s {%(py2)s = %(py0)s._bind } == %(py5)suassert %(py7)s(u circuits.netusocketsusetattruClientu_bindu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone( u monkeypatchusocketsubroken_gethostnameu TestClientuclientu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u5/home/prologic/work/circuits/tests/net/test_client.pyutest_client_bind_int_gaierrors    |utest_client_bind_int_gaierrorcCs ddlm}Gddd|}|d}|j}d}||k}|stjd|fd||fitj|d 6d tjkstj|rtj|nd d 6tj|d 6}di|d6}t tj |nd}}}dS(Ni(uClientcBs |EeZdZddZdS(u(test_client_bind_str..TestClientcSsdS(N(uNone(uself((u5/home/prologic/work/circuits/tests/net/test_client.pyu_create_socket*su7test_client_bind_str..TestClient._create_socketN(u__name__u __module__u __qualname__u_create_socket(u __locals__((u5/home/prologic/work/circuits/tests/net/test_client.pyu TestClient(su TestClientu 0.0.0.0:1234u0.0.0.0iu==u-%(py2)s {%(py2)s = %(py0)s._bind } == %(py5)supy2uclientupy0upy5uuassert %(py7)supy7(u0.0.0.0i(u==(u-%(py2)s {%(py2)s = %(py0)s._bind } == %(py5)suassert %(py7)s( ucircuits.net.socketsuClientu_bindu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uClientu TestClientuclientu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u5/home/prologic/work/circuits/tests/net/test_client.pyutest_client_bind_str%s   |utest_client_bind_str( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arusocketugaierrorutest_client_bind_intutest_client_bind_int_gaierrorutest_client_bind_str(((u5/home/prologic/work/circuits/tests/net/test_client.pyus  circuits-3.1.0/tests/net/__pycache__/test_poller_reuse.cpython-34-PYTEST.pyc0000644000014400001440000000330512414363522027705 0ustar prologicusers00000000000000 ?T@szddlZddljjZddlmZddlm Z ddl m Z m Z ddl mZmZddZdS)N)Manager)findtype) BasePollerPoller) TCPServer TCPClientc Cs<t}tj|}tdj|tj||jzt|tdd}t|}d}||k}|s`t j d|fd||fidt j kst j |rt j|ndd6t j|d 6t j|d 6d t j kst j tr,t jtnd d 6}di|d6}tt j|nt}}}|d}||k}|st j d|fd||fit j|d6dt j kst j |rt j|ndd 6} di| d6} tt j| nt}}Wd|jXdS)NrallT==0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)spollerspy1py6py3lenpy0assert %(py8)spy8is%(py1)s is %(py3)spollerassert %(py5)spy5)r )r r)r)rr)rrregisterrrstartrrr @pytest_ar_call_reprcompare @py_builtinslocals_should_repr_global_name _safereprAssertionError_format_explanationNonestop) mrr @py_assert2 @py_assert5 @py_assert4 @py_format7 @py_format9 @py_assert0 @py_format4 @py_format6r/;/home/prologic/work/circuits/tests/net/test_poller_reuse.pytest s.     lr1)builtinsr_pytest.assertion.rewrite assertionrewritercircuitsrcircuits.core.utilsrcircuits.core.pollersrrcircuits.net.socketsrrr1r/r/r/r0s circuits-3.1.0/tests/net/__pycache__/test_udp.cpython-27-PYTEST.pyc0000644000014400001440000001655012414363102025777 0ustar prologicusers00000000000000 ?T3 c@sddlZddljjZddlZddlZddlZddl m Z ddl m Z m Z ddlmZmZmZmZddlmZmZmZmZddlmZddlmZd Zd Zd Zd Zd Z dS(iN(tManager(tclosetwrite(tSelecttPolltEPolltKQueue(t UDPServert UDPClientt UDP6Servert UDP6Clienti(tClient(tServercCs=d}tj}d}||||}|s+ddidtjks[tj|rjtj|ndd6tj|d6d tjkstjtrtjtnd d 6d tjkstj|rtj|nd d 6tj|d 6tj|d6}ttj|nd}}}dS(Ncstfd|DS(Nc3s|]}t|VqdS(N(tgetattr(t.0ta(tobj(s2/home/prologic/work/circuits/tests/net/test_udp.pys s(tall(Rtattr((Rs2/home/prologic/work/circuits/tests/net/test_udp.pytcheckersthosttportts\assert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py6)s) }tservertpy3tpy2tpytesttpy0Rtpy6tpy5tpy8(shostsport( Rtwait_fort @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(RRt @py_assert1t @py_assert4t @py_assert7t @py_format9((s2/home/prologic/work/circuits/tests/net/test_udp.pyt wait_hosts  cCs|jditd6|d6ttdrN|jditd6|d6nttdr~|jditd6|d6nttdr|jditd6|d6ndS(NtfuncargstPollertipv6tpolltepolltkqueue(taddcallRthasattrtselectRRR(tmetafuncR/((s2/home/prologic/work/circuits/tests/net/test_udp.pyt_pytest_generate_testss!!cCs0t|dttjr,t|dtndS(NR/(R7tFalsetsocketthas_ipv6tTrue(R6((s2/home/prologic/work/circuits/tests/net/test_udp.pytpytest_generate_tests$s c Cst|}|r7td}tddd}ntd}tddd}t|}t|}|j||j||jz;t j }d}|||} | s~ddidt j kst j|rt j|ndd 6t j|d 6d t j ks,t jt r;t jt nd d 6t j| d 6t j|d6} tt j| nd}}} t j }d}|||} | stddidt j kst j|rt j|ndd 6t j|d 6d t j ks"t jt r1t jt nd d 6t j| d 6t j|d6} tt j| nd}}} t||jt|j|jfdt j }d}d} |||| } | sddidt j kst j|rt j|ndd 6t j|d 6d t j ksMt jt r\t jt nd d 6t j| d 6t j|d6t j| d6} tt j| nd}}} } |jtt j }d}|||} | sddidt j ks t j|r/t j|ndd 6t j|d 6d t j ksgt jt rvt jt nd d 6t j| d 6t j|d6} tt j| nd}}} |jtt j }d}|||} | sddidt j ks&t j|r5t j|ndd 6t j|d 6d t j ksmt jt r|t jt nd d 6t j| d 6t j|d6} tt j| nd}}} Wd|jXdS(Ns::1itchanneltclienttreadyRsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }RRRRRtpy7Rtfootdatas\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }tpy9tclosed(s::1i(s::1i(RR R RRR R tregistertstartRRR R!R"R#R$R%R&R'R,tfireRRRRtstop( R.R/tmt udp_servert udp_clientRR>R(R)t @py_assert6t @py_format8t @py_assert8t @py_format10((s2/home/prologic/work/circuits/tests/net/test_udp.pyt test_basic*sj          "   c Cst|}ttd}|j||jztj}d}|||}| r&ddidtjkpt j |rt j |ndd6t j |d6dtjkpt j trt j tndd 6t j |d 6t j |d 6}t t j |nt}}}t||j|jf\}} |jttj}d }|||}| rOddidtjkpt j |rt j |ndd6t j |d6dtjkpt j tr t j tndd 6t j |d 6t j |d 6}t t j |nt}}}|jd } tj}|||d| }| rddidtjkpt j |rt j |ndd6t j |d6dtjkpt j trt j tndd 6t j |d 6dtjkpKt j | r]t j | ndd 6dtjkpt j |rt j |ndd6}t t j |nt}}tt|| f}|j|tj}d}d}|||d|} | rddidtjkp@t j |rRt j |ndd6t j |d6dtjkpt j trt j tndd 6t j |d 6t j |d 6t j | d6} t t j | nt}}}} Wd|jXdS(NiR?RsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }RRRRRR@Rt disconnectedcSs ||jkS(N(t components(RR((s2/home/prologic/work/circuits/tests/net/test_udp.pyttest]stvaluesbassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py4)s, value=%(py5)s) }RIRStpy4g>@ttimeoutsdassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, timeout=%(py7)s) }RC(RR RRERFRRR R!R"R#R$R%R&R'R,RRRGRt unregisterRH( R.R/RIRR(R)RLRMRRRSRNRO((s2/home/prologic/work/circuits/tests/net/test_udp.pyt test_closeLsT            (!t __builtin__R t_pytest.assertion.rewritet assertiontrewriteR"RR9R5tcircuitsRtcircuits.net.eventsRRtcircuits.core.pollersRRRRtcircuits.net.socketsRRR R R>R RR R,R7R<RPRX(((s2/home/prologic/work/circuits/tests/net/test_udp.pyts    ""   "circuits-3.1.0/tests/net/__pycache__/test_udp.cpython-33-PYTEST.pyc0000644000014400001440000002075112414363411025775 0ustar prologicusers00000000000000 ?T3 c@s ddlZddljjZddlZddlZddlZddl m Z ddl m Z m Z ddlmZmZmZmZddlmZmZmZmZddlmZddlmZd d Zd d Zd dZddZddZ dS(iN(uManager(ucloseuwrite(uSelectuPolluEPolluKQueue(u UDPServeru UDPClientu UDP6Serveru UDP6Clienti(uClient(uServercCs@dd}tj}d}||||}|s.ddidtjks^tj|rmtj|ndd6tj|d 6d tjkstjtrtjtnd d 6d tjkstj|rtj|nd d 6tj|d6tj|d6}ttj|nd}}}dS(Ncstfdd|DS(Nc3s|]}t|VqdS(N(ugetattr(u.0ua(uobj(u2/home/prologic/work/circuits/tests/net/test_udp.pyu su-wait_host..checker..(uall(uobjuattr((uobju2/home/prologic/work/circuits/tests/net/test_udp.pyucheckersuwait_host..checkeruhostuportuu\assert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py6)s) }userverupy3upy2upytestupy0ucheckerupy6upy5upy8(uhostuport( upytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(userverucheckeru @py_assert1u @py_assert4u @py_assert7u @py_format9((u2/home/prologic/work/circuits/tests/net/test_udp.pyu wait_hosts  u wait_hostcCs|jditd6|d6ttdrN|jditd6|d6nttdr~|jditd6|d6nttdr|jditd6|d6ndS(NufuncargsuPolleruipv6upolluepollukqueue(uaddcalluSelectuhasattruselectuPolluEPolluKQueue(umetafuncuipv6((u2/home/prologic/work/circuits/tests/net/test_udp.pyu_pytest_generate_testss!!u_pytest_generate_testscCs0t|ddtjr,t|ddndS(Nuipv6FT(u_pytest_generate_testsuFalseusocketuhas_ipv6uTrue(umetafunc((u2/home/prologic/work/circuits/tests/net/test_udp.pyupytest_generate_tests$s upytest_generate_testsc Cst|}|r7td}tddd}ntd}tddd}t|}t|}|j||j||jz;t j }d}|||} | s~ddidt j kst j|rt j|ndd 6t j|d 6d t j ks,t jt r;t jt nd d 6t j| d 6t j|d6} tt j| nd}}} t j }d}|||} | stddidt j kst j|rt j|ndd 6t j|d 6d t j ks"t jt r1t jt nd d 6t j| d 6t j|d6} tt j| nd}}} t||jt|j|jfdt j }d}d} |||| } | sddidt j kst j|rt j|ndd 6t j|d 6d t j ksMt jt r\t jt nd d 6t j| d 6t j|d6t j| d6} tt j| nd}}} } |jtt j }d}|||} | sddidt j ks t j|r/t j|ndd 6t j|d 6d t j ksgt jt rvt jt nd d 6t j| d 6t j|d6} tt j| nd}}} |jtt j }d}|||} | sddidt j ks&t j|r5t j|ndd 6t j|d 6d t j ksmt jt r|t jt nd d 6t j| d 6t j|d6} tt j| nd}}} Wd|jXdS(Nu::1iuchanneluclientureadyuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }userverupy3upy2upytestupy0upy7upy5sfooudatau\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }upy9uclosed(u::1i(u::1i(uManageru UDP6Serveru UDP6Clientu UDPServeru UDPClientuServeruClienturegisterustartupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneu wait_hostufireuwriteuhostuportucloseustop( uPolleruipv6umu udp_serveru udp_clientuserveruclientu @py_assert1u @py_assert4u @py_assert6u @py_format8u @py_assert8u @py_format10((u2/home/prologic/work/circuits/tests/net/test_udp.pyu test_basic*sj          "   u test_basicc Cst|}ttd}|j||jztj}d}|||}| r&ddidtjkpt j |rt j |ndd6t j |d6dtjkpt j trt j tndd 6t j |d 6t j |d 6}t t j |nt}}}t||j|jf\}} |jttj}d }|||}| rOddidtjkpt j |rt j |ndd6t j |d6dtjkpt j tr t j tndd 6t j |d 6t j |d 6}t t j |nt}}}|jd d} tj}|||d| }| rddidtjkpt j |rt j |ndd6t j |d6dtjkpt j trt j tndd 6t j |d 6dtjkpNt j | r`t j | ndd 6dtjkpt j |rt j |ndd6}t t j |nt}}tt|| f}|j|tj}d}d}|||d|} | rddidtjkpCt j |rUt j |ndd6t j |d6dtjkpt j trt j tndd 6t j |d 6t j |d 6t j | d6} t t j | nt}}}} Wd|jXdS(NiureadyuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }userverupy3upy2upytestupy0upy7upy5u disconnectedcSs ||jkS(N(u components(uobjuattr((u2/home/prologic/work/circuits/tests/net/test_udp.pyutest]sutest_close..testuvalueubassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py4)s, value=%(py5)s) }umutestupy4g>@utimeoutudassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, timeout=%(py7)s) }upy9(uManageruServeru UDPServeruregisterustartupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneu wait_hostuhostuportufireucloseu unregisterustop( uPolleruipv6umuserveru @py_assert1u @py_assert4u @py_assert6u @py_format8uhostuportutestu @py_assert8u @py_format10((u2/home/prologic/work/circuits/tests/net/test_udp.pyu test_closeLsT            u test_close(!ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestusocketuselectucircuitsuManagerucircuits.net.eventsucloseuwriteucircuits.core.pollersuSelectuPolluEPolluKQueueucircuits.net.socketsu UDPServeru UDPClientu UDP6Serveru UDP6ClientuclientuClientuserveruServeru wait_hostu_pytest_generate_testsupytest_generate_testsu test_basicu test_close(((u2/home/prologic/work/circuits/tests/net/test_udp.pyus    ""   "circuits-3.1.0/tests/net/__pycache__/test_tcp.cpython-33-PYTEST.pyc0000644000014400001440000005641712414363411026003 0ustar prologicusers00000000000000 ?T}c@sxddlZddljjZddlZddlZddlm Z ddlm Z m Z ddlmZm Z mZmZmZddlmZddlmZmZmZddlmZmZmZmZddlmZmZmZm Z d d l!m"Z"d d l#m$Z$d d Z%ddZ&ddZ'ddZ(ddZ)ddZ*ddZ+ddZ,dS(iN(uerror(u EAI_NODATAu EAI_NONAME(usocketuAF_INETuAF_INET6u SOCK_STREAMuhas_ipv6(uManager(ucloseuconnectuwrite(uSelectuPolluEPolluKQueue(u TCPServeru TCP6Serveru TCPClientu TCP6Clienti(uClient(uServercCs@dd}tj}d}||||}|s.ddidtjks^tj|rmtj|ndd6tj|d 6d tjkstjtrtjtnd d 6d tjkstj|rtj|nd d 6tj|d6tj|d6}ttj|nd}}}dS(Ncstfdd|DS(Nc3s|]}t|VqdS(N(ugetattr(u.0ua(uobj(u2/home/prologic/work/circuits/tests/net/test_tcp.pyu su-wait_host..checker..(uall(uobjuattr((uobju2/home/prologic/work/circuits/tests/net/test_tcp.pyucheckersuwait_host..checkeruhostuportuu\assert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py6)s) }userverupy3upy2upytestupy0ucheckerupy6upy5upy8(uhostuport( upytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(userverucheckeru @py_assert1u @py_assert4u @py_assert7u @py_format9((u2/home/prologic/work/circuits/tests/net/test_tcp.pyu wait_hosts  u wait_hostcCs|jditd6|d6ttdrN|jditd6|d6nttdr~|jditd6|d6nttdr|jditd6|d6ndS(NufuncargsuPolleruipv6upolluepollukqueue(uaddcalluSelectuhasattruselectuPolluEPolluKQueue(umetafuncuipv6((u2/home/prologic/work/circuits/tests/net/test_tcp.pyu_pytest_generate_testss!!u_pytest_generate_testscCs-t|ddtr)t|ddndS(Nuipv6FT(u_pytest_generate_testsuFalseuhas_ipv6uTrue(umetafunc((u2/home/prologic/work/circuits/tests/net/test_tcp.pyupytest_generate_tests&supytest_generate_testsc Cs t|}|r.td}t}ntd}t}t|}t|}|j||j||jzP t j }d}|||} | slddidt j kst j|rt j|ndd6t j|d6d t j kst jt r)t jt nd d 6t j| d 6t j|d 6} tt j| nd}}} t j }d}|||} | sbddid t j kst j|rt j|nd d6t j|d6d t j kst jt rt jt nd d 6t j| d 6t j|d 6} tt j| nd}}} t||jt|j|jt j }d}|||} | s~ddidt j kst j|rt j|ndd6t j|d6d t j ks,t jt r;t jt nd d 6t j| d 6t j|d 6} tt j| nd}}} t j }d}|||} | stddid t j kst j|rt j|nd d6t j|d6d t j ks"t jt r1t jt nd d 6t j| d 6t j|d 6} tt j| nd}}} t j }d}d} |||| } | sddidt j kst j|rt j|ndd6t j|d6d t j ks!t jt r0t jt nd d 6t j| d 6t j|d 6t j| d6} tt j| nd}}} } |jtdt j }d}d} |||| } | sddid t j kst j|rt j|nd d6t j|d6d t j ksGt jt rVt jt nd d 6t j| d 6t j|d 6t j| d6} tt j| nd}}} } t j }d}d} |||| } | sddidt j kst j|r"t j|ndd6t j|d6d t j ksZt jt rit jt nd d 6t j| d 6t j|d 6t j| d6} tt j| nd}}} } |jtt j }d}|||} | sddidt j ks-t j|r<t j|ndd6t j|d6d t j kstt jt rt jt nd d 6t j| d 6t j|d 6} tt j| nd}}} t j }d}|||} | s ddid t j ks# t j|r2 t j|nd d6t j|d6d t j ksj t jt ry t jt nd d 6t j| d 6t j|d 6} tt j| nd}}} |jtt j }d}|||} | s ddid t j ks) t j|r8 t j|nd d6t j|d6d t j ksp t jt r t jt nd d 6t j| d 6t j|d 6} tt j| nd}}} Wd|jXdS(Nu::1iureadyuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uclientupy3upy2upytestupy0upy7upy5userveru connectedudatasReadyu\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }upy9sfoou disconnecteduclosed(u::1i(uManageru TCP6Serveru TCP6Clientu TCPServeru TCPClientuServeruClienturegisterustartupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneu wait_hostufireuconnectuhostuportuwriteucloseustop( uPolleruipv6umu tcp_serveru tcp_clientuserveruclientu @py_assert1u @py_assert4u @py_assert6u @py_format8u @py_assert8u @py_format10((u2/home/prologic/work/circuits/tests/net/test_tcp.pyutest_tcp_basic,s                    utest_tcp_basicc 'CsOtjdkr8tjdddkr8tjdnt|}|rftd}t}ntd}t}t |}t |}|j ||j ||j ztj }d}|||} | sdd id tjks tj|rtj|nd d 6tj|d 6d tjksRtjtratjtnd d6tj| d6tj|d6} ttj| nd}}} tj }d}|||} | sdd idtjkstj|rtj|ndd 6tj|d 6d tjksHtjtrWtjtnd d6tj| d6tj|d6} ttj| nd}}} t||jt|j|jtj }d}|||} | sdd id tjkstj|r,tj|nd d 6tj|d 6d tjksdtjtrstjtnd d6tj| d6tj|d6} ttj| nd}}} tj }d}|||} | sdd idtjkstj|r"tj|ndd 6tj|d 6d tjksZtjtritjtnd d6tj| d6tj|d6} ttj| nd}}} tj }d}d} |||| } | sddid tjkstj|r!tj|nd d 6tj|d 6d tjksYtjtrhtjtnd d6tj| d6tj|d6tj| d6} ttj| nd}}} } |jtdtj }d}d} |||| } | sddidtjks8tj|rGtj|ndd 6tj|d 6d tjkstjtrtjtnd d6tj| d6tj|d6tj| d6} ttj| nd}}} } |jttj }d}|||} | sdd id tjksRtj|ratj|nd d 6tj|d 6d tjkstjtrtjtnd d6tj| d6tj|d6} ttj| nd}}} |jt|j|jtj }d}|||} | sdd id tjksdtj|rstj|nd d 6tj|d 6d tjkstjtrtjtnd d6tj| d6tj|d6} ttj| nd}}} tj }d}|||} | s dd idtjksZ tj|ri tj|ndd 6tj|d 6d tjks tjtr tjtnd d6tj| d6tj|d6} ttj| nd}}} tj }d}d} |||| } | s ddid tjksY tj|rh tj|nd d 6tj|d 6d tjks tjtr tjtnd d6tj| d6tj|d6tj| d6} ttj| nd}}} } |jtdtj }d}d} |||| } | s( ddidtjks tj|r tj|ndd 6tj|d 6d tjks tjtr tjtnd d6tj| d6tj|d6tj| d6} ttj| nd}}} } |jttj }d}|||} | s2 dd id tjks tj|r tj|nd d 6tj|d 6d tjks tjtr tjtnd d6tj| d6tj|d6} ttj| nd}}} tj }d}|||} | s(dd idtjks tj|r tj|ndd 6tj|d 6d tjks tjtr tjtnd d6tj| d6tj|d6} ttj| nd}}} |jttj }d}|||} | s.dd idtjkstj|rtj|ndd 6tj|d 6d tjkstjtrtjtnd d6tj| d6tj|d6} ttj| nd}}} Wd|jXdS(Nuwin32iiuBroken on Windows on Python 3.2u::1iureadyuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uclientupy3upy2upytestupy0upy7upy5userveru connectedudatasReadyu\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }upy9sfoou disconnecteduclosed(ii(u::1i(upytestuPLATFORMuPYVERuskipuManageru TCP6Serveru TCP6Clientu TCPServeru TCPClientuServeruClienturegisterustartuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneu wait_hostufireuconnectuhostuportuwriteucloseustop( uPolleruipv6umu tcp_serveru tcp_clientuserveruclientu @py_assert1u @py_assert4u @py_assert6u @py_format8u @py_assert8u @py_format10((u2/home/prologic/work/circuits/tests/net/test_tcp.pyutest_tcp_reconnectUs(                        utest_tcp_reconnectcCstjdkrtjdnt|}|rStddf}t}ntd}t}t|}t |}|j ||j ||j ztj }d}|||} | rddidt jkptj|rtj|ndd 6tj|d 6d t jkp=tjtrOtjtnd d 6tj| d 6tj|d6} ttj| nt}}} tj }d}|||} | rddidt jkptj|rtj|ndd 6tj|d 6d t jkp4tjtrFtjtnd d 6tj| d 6tj|d6} ttj| nt}}} t||j|jf\} } |jj|jt| | tj }d}|||} | rddidt jkp)tj|r;tj|ndd 6tj|d 6d t jkpptjtrtjtnd d 6tj| d 6tj|d6} ttj| nt}}} |j} t| t}| rdditj| d 6dt jkp*tj|r<tj|ndd6dt jkpatjtrstjtndd 6tj|d6dt jkptjtrtjtndd6}ttj|nt} }|jtdtj }d}|||} | rddidt jkpGtj|rYtj|ndd 6tj|d 6d t jkptjtrtjtnd d 6tj| d 6tj|d6} ttj| nt}}} t |_!|jtdtj }d}d} |||d| }|tk}| rtj"df|fdf|tfidt jkptj|rtj|ndd 6tj|d 6d t jkptjtrtjtnd d 6tj| d 6tj|d6dt jkp-tjtr?tjtndd6tj|d6}dd i|d!6}ttj|nt}}} }}Wd|j#XdS("Nuwin32uBroken on Windowsu::1iureadyuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uclientupy3upy2upytestupy0upy7upy5userveru connecteduPassert %(py6)s {%(py6)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.error }, %(py4)s) }upy1u isinstanceupy6u SocketErrorupy4sfoou disconnectedg?utimeoutuisui%(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, timeout=%(py7)s) } is %(py11)suNoneupy11upy9uassert %(py13)supy13($upytestuPLATFORMuskipuManageru TCP6Serveru TCP6Clientu TCPServeru TCPClientuServeruClienturegisterustartuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneu wait_hostuhostuportu_sockucloseufireuconnectuerroru isinstanceu SocketErroruwriteuFalseu disconnectedu_call_reprcompareustop(uPolleruipv6umu tcp_serveru tcp_clientuserveruclientu @py_assert1u @py_assert4u @py_assert6u @py_format8uhostuportu @py_assert2u @py_assert5u @py_format7u @py_assert8u @py_assert10u @py_format12u @py_format14((u2/home/prologic/work/circuits/tests/net/test_tcp.pyutest_tcp_connect_closed_ports                   utest_tcp_connect_closed_portcCsb t|}|rttt}|jd|jd|j\}}}}|jtt d}t t }nhtt t}|jd|jd|j\}}|jtt d}t t}|j||j||jz= tj}d} ||| } | sddidtjksetj|rttj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6} ttj| nd}} } tj}d} ||| } | sddidtjks[tj|rjtj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6} ttj| nd}} } t||jt|j|jtj}d} ||| } | sddidtjkswtj|rtj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6} ttj| nd}} } tj}d} ||| } | sddidtjksmtj|r|tj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6} ttj| nd}} } tj}d} d} ||| | } | sddidtjksltj|r{tj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6tj| d6} ttj| nd}} } } |jt dtj}d} d} ||| | } | s;ddidtjkstj|rtj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6tj| d6} ttj| nd}} } } |jttj}d} ||| } | sEddidtjkstj|rtj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6} ttj| nd}} } tj}d} ||| } | s; ddidtjkstj|rtj|ndd6tj|d 6d tjkstjtrtjtnd d 6tj| d 6tj| d 6} ttj| nd}} } |jttj}d} ||| } | sA ddidtjks tj|r tj|ndd6tj|d 6d tjks tjtr tjtnd d 6tj| d 6tj| d 6} ttj| nd}} } Wd|j!XdS(Nu::1iiuureadyuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uclientupy3upy2upytestupy0upy7upy5userveru connectedudatasReadyu\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }upy9sfoou disconnecteduclosed(u::1i(u::1i(ui("uManagerusocketuAF_INET6u SOCK_STREAMubindulistenu getsocknameucloseuServeru TCP6ServeruClientu TCP6ClientuAF_INETu TCPServeru TCPClienturegisterustartupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneu wait_hostufireuconnectuhostuportuwriteustop(uPolleruipv6umusocku_u bind_portuserveruclientu @py_assert1u @py_assert4u @py_assert6u @py_format8u @py_assert8u @py_format10((u2/home/prologic/work/circuits/tests/net/test_tcp.pyu test_tcp_binds                   u test_tcp_bindc Cst|}|r"t}n t}t|}|j||jz#tj}d}|||}|s:ddidtj kst j |rt j |ndd6t j |d6dtj kst j trt j tndd6t j |d 6t j |d 6}t t j|nd}}}|jtd d tj}d }dd}||||} | seddidtj kst j |rt j |ndd6t j |d6dtj kst j trt j tndd6t j |d 6t j |d 6t j | d6} t t j| nd}}}} tjdkrz|j}|j} d}| |k} | set jd| fd| |fit j |d6dtj kst j |rt j |ndd6t j |d 6t j | d6}di|d6} t t j| nd}} } }n|j}|j} ttf}| |k} | s_t jd| fd| |fit j |d6dtj kst j |r t j |ndd6t j |d 6t j | d6}di|d6} t t j| nd}} } }Wd|jXdS( NureadyuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uclientupy3upy2upytestupy0upy7upy5ufooiuerrorcSstt||tS(N(u isinstanceugetattru SocketError(uobjuattr((u2/home/prologic/work/circuits/tests/net/test_tcp.pyusu)test_tcp_lookup_failure..u\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }upy9uwin32i*u==uH%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error }.errno } == %(py7)supy4uassert %(py9)suinuH%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error }.errno } in %(py7)s(u==(uH%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error }.errno } == %(py7)suassert %(py9)s(uin(uH%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error }.errno } in %(py7)suassert %(py9)s(uManageru TCP6Clientu TCPClientuClienturegisterustartupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneufireuconnectuPLATFORMuerroruerrnou_call_reprcompareu EAI_NODATAu EAI_NONAMEustop( uPolleruipv6umu tcp_clientuclientu @py_assert1u @py_assert4u @py_assert6u @py_format8u @py_assert8u @py_format10u @py_assert3u @py_assert5((u2/home/prologic/work/circuits/tests/net/test_tcp.pyutest_tcp_lookup_failuresX           utest_tcp_lookup_failure(-ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuselectusocketuerroru SocketErroru EAI_NODATAu EAI_NONAMEuAF_INETuAF_INET6u SOCK_STREAMuhas_ipv6ucircuitsuManagerucircuits.net.eventsucloseuconnectuwriteucircuits.core.pollersuSelectuPolluEPolluKQueueucircuits.net.socketsu TCPServeru TCP6Serveru TCPClientu TCP6ClientuclientuClientuserveruServeru wait_hostu_pytest_generate_testsupytest_generate_testsutest_tcp_basicutest_tcp_reconnectutest_tcp_connect_closed_portu test_tcp_bindutest_tcp_lookup_failure(((u2/home/prologic/work/circuits/tests/net/test_tcp.pyus(   (""   ) = 0 2circuits-3.1.0/tests/net/__pycache__/test_pipe.cpython-26-PYTEST.pyc0000644000014400001440000000704512407376151026154 0ustar prologicusers00000000000000 ?Tc @sddkZddkiiZddkZeidjoeidnddk l Z ddk l Z ddk lZddklZlZdd klZd Zd ZdS( iNtwin32sUnsupported Platform(tManager(tPipe(tSelect(tclosetwritei(tClientcCs|idhtd6dS(NtfuncargstPoller(taddcallR(tmetafunc((s3/home/prologic/work/circuits/tests/net/test_pipe.pytpytest_generate_testssc Cst|}tdd\}}|i||i|td|ii|}td|ii|}|iz`ti}d}|||}|pdhdti jpt i tot i tndd6dti jpt i |ot i |ndd6t i |d 6t i |d 6t i |d 6}t t i|nd}}}ti}d}|||}|pdhdti jpt i tot i tndd6dti jpt i |ot i |ndd6t i |d 6t i |d 6t i |d 6}t t i|nd}}}|itd ti}d }d }||||}|pdhdti jpt i tot i tndd6dti jpt i |ot i |ndd6t i |d 6t i |d 6t i |d 6t i |d6} t t i| nd}}}}|itd ti}d }d }||||}|pdhdti jpt i tot i tndd6dti jpt i |ot i |ndd6t i |d 6t i |d 6t i |d 6t i |d6} t t i| nd}}}}|itti}d}|||}|pdhdti jpt i tot i tndd6dti jpt i |ot i |ndd6t i |d 6t i |d 6t i |d 6}t t i|nd}}}|itti}d}|||}|pdhdti jpt i tot i tndd6dti jpt i |ot i |ndd6t i |d 6t i |d 6t i |d 6}t t i|nd}}}Wd|iXdS(NtatbtchanneltreadysSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }tpytesttpy0tpy3tpy2tpy5tpy7tfootdatas\assert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s, %(py7)s) }tpy9t disconnected(RRtregisterRRtstartRtwait_fort @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetfireRRtstop( RtmR R t @py_assert1t @py_assert4t @py_assert6t @py_format8t @py_assert8t @py_format10((s3/home/prologic/work/circuits/tests/net/test_pipe.pyt test_pipesr         (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRRtPLATFORMtskiptcircuitsRtcircuits.net.socketsRtcircuits.core.pollersRtcircuits.net.eventsRRtclientRR R.(((s3/home/prologic/work/circuits/tests/net/test_pipe.pyts   circuits-3.1.0/tests/net/test_unix.py0000644000014400001440000000327612402037676020674 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest import os import sys import select if sys.platform in ("win32", "cygwin"): pytest.skip("Test Not Applicable on Windows") from circuits import Manager from circuits.net.sockets import close, connect, write from circuits.net.sockets import UNIXServer, UNIXClient from circuits.core.pollers import Select, Poll, EPoll, KQueue from .client import Client from .server import Server def pytest_generate_tests(metafunc): metafunc.addcall(funcargs={"Poller": Select}) if hasattr(select, "poll"): metafunc.addcall(funcargs={"Poller": Poll}) if hasattr(select, "epoll"): metafunc.addcall(funcargs={"Poller": EPoll}) if hasattr(select, "kqueue"): metafunc.addcall(funcargs={"Poller": KQueue}) def test_unix(tmpdir, Poller): m = Manager() + Poller() sockpath = tmpdir.ensure("test.sock") filename = str(sockpath) server = Server() + UNIXServer(filename) client = Client() + UNIXClient() server.register(m) client.register(m) m.start() try: assert pytest.wait_for(server, "ready") assert pytest.wait_for(client, "ready") client.fire(connect(filename)) assert pytest.wait_for(client, "connected") assert pytest.wait_for(server, "connected") assert pytest.wait_for(client, "data", b"Ready") client.fire(write(b"foo")) assert pytest.wait_for(server, "data", b"foo") client.fire(close()) assert pytest.wait_for(client, "disconnected") assert pytest.wait_for(server, "disconnected") server.fire(close()) assert pytest.wait_for(server, "closed") finally: m.stop() os.remove(filename) circuits-3.1.0/tests/net/client.py0000644000014400001440000000150512402037676020121 0ustar prologicusers00000000000000from circuits import Component class Client(Component): channel = "client" def __init__(self, channel=channel): super(Client, self).__init__(channel=channel) self.data = "" self.error = None self.ready = False self.closed = False self.connected = False self.disconnected = False def ready(self, *args): self.ready = True def error(self, error): self.error = error def connected(self, host, port): self.connected = True def disconnect(self, *args): return def disconnected(self): self.disconnected = True def closed(self): self.closed = True def read(self, *args): if len(args) == 2: _, data = args else: data = args[0] self.data = data circuits-3.1.0/tests/net/test_tcp.py0000644000014400001440000001657512402037676020505 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest import select from socket import error as SocketError from socket import EAI_NODATA, EAI_NONAME from socket import socket, AF_INET, AF_INET6, SOCK_STREAM, has_ipv6 from circuits import Manager from circuits.net.events import close, connect, write from circuits.core.pollers import Select, Poll, EPoll, KQueue from circuits.net.sockets import TCPServer, TCP6Server, TCPClient, TCP6Client from .client import Client from .server import Server def wait_host(server): def checker(obj, attr): return all((getattr(obj, a) for a in attr)) assert pytest.wait_for(server, ("host", "port"), checker) def _pytest_generate_tests(metafunc, ipv6): metafunc.addcall(funcargs={"Poller": Select, "ipv6": ipv6}) if hasattr(select, "poll"): metafunc.addcall(funcargs={"Poller": Poll, "ipv6": ipv6}) if hasattr(select, "epoll"): metafunc.addcall(funcargs={"Poller": EPoll, "ipv6": ipv6}) if hasattr(select, "kqueue"): metafunc.addcall(funcargs={"Poller": KQueue, "ipv6": ipv6}) def pytest_generate_tests(metafunc): _pytest_generate_tests(metafunc, ipv6=False) if has_ipv6: _pytest_generate_tests(metafunc, ipv6=True) def test_tcp_basic(Poller, ipv6): m = Manager() + Poller() if ipv6: tcp_server = TCP6Server(("::1", 0)) tcp_client = TCP6Client() else: tcp_server = TCPServer(0) tcp_client = TCPClient() server = Server() + tcp_server client = Client() + tcp_client server.register(m) client.register(m) m.start() try: assert pytest.wait_for(client, "ready") assert pytest.wait_for(server, "ready") wait_host(server) client.fire(connect(server.host, server.port)) assert pytest.wait_for(client, "connected") assert pytest.wait_for(server, "connected") assert pytest.wait_for(client, "data", b"Ready") client.fire(write(b"foo")) assert pytest.wait_for(server, "data", b"foo") assert pytest.wait_for(client, "data", b"foo") client.fire(close()) assert pytest.wait_for(client, "disconnected") assert pytest.wait_for(server, "disconnected") server.fire(close()) assert pytest.wait_for(server, "closed") finally: m.stop() def test_tcp_reconnect(Poller, ipv6): ### XXX: Apparently this doesn't work on Windows either? ### XXX: UPDATE: Apparently Broken on Windows + Python 3.2 ### TODO: Need to look into this. Find out why... if pytest.PLATFORM == "win32" and pytest.PYVER[:2] >= (3, 2): pytest.skip("Broken on Windows on Python 3.2") m = Manager() + Poller() if ipv6: tcp_server = TCP6Server(("::1", 0)) tcp_client = TCP6Client() else: tcp_server = TCPServer(0) tcp_client = TCPClient() server = Server() + tcp_server client = Client() + tcp_client server.register(m) client.register(m) m.start() try: assert pytest.wait_for(client, "ready") assert pytest.wait_for(server, "ready") wait_host(server) # 1st connect client.fire(connect(server.host, server.port)) assert pytest.wait_for(client, "connected") assert pytest.wait_for(server, "connected") assert pytest.wait_for(client, "data", b"Ready") client.fire(write(b"foo")) assert pytest.wait_for(server, "data", b"foo") # disconnect client.fire(close()) assert pytest.wait_for(client, "disconnected") # 2nd reconnect client.fire(connect(server.host, server.port)) assert pytest.wait_for(client, "connected") assert pytest.wait_for(server, "connected") assert pytest.wait_for(client, "data", b"Ready") client.fire(write(b"foo")) assert pytest.wait_for(server, "data", b"foo") client.fire(close()) assert pytest.wait_for(client, "disconnected") assert pytest.wait_for(server, "disconnected") server.fire(close()) assert pytest.wait_for(server, "closed") finally: m.stop() def test_tcp_connect_closed_port(Poller, ipv6): ### FIXME: This test is wrong. ### We need to figure out the sequence of events on Windows ### for this scenario. I think if you attempt to connect to ### a shutdown listening socket (tcp server) you should get ### an error event as response. if pytest.PLATFORM == "win32": pytest.skip("Broken on Windows") m = Manager() + Poller() if ipv6: tcp_server = TCP6Server(("::1", 0)) tcp_client = TCP6Client() else: tcp_server = TCPServer(0) tcp_client = TCPClient() server = Server() + tcp_server client = Client() + tcp_client server.register(m) client.register(m) m.start() try: assert pytest.wait_for(client, "ready") assert pytest.wait_for(server, "ready") wait_host(server) host, port = server.host, server.port tcp_server._sock.close() # 1st connect client.fire(connect(host, port)) assert pytest.wait_for(client, "connected") assert isinstance(client.error, SocketError) client.fire(write(b"foo")) assert pytest.wait_for(client, "disconnected") client.disconnected = False client.fire(write(b"foo")) assert pytest.wait_for(client, "disconnected", timeout=1.0) is None finally: m.stop() def test_tcp_bind(Poller, ipv6): m = Manager() + Poller() if ipv6: sock = socket(AF_INET6, SOCK_STREAM) sock.bind(("::1", 0)) sock.listen(5) _, bind_port, _, _ = sock.getsockname() sock.close() server = Server() + TCP6Server(("::1", 0)) client = Client() + TCP6Client() else: sock = socket(AF_INET, SOCK_STREAM) sock.bind(("", 0)) sock.listen(5) _, bind_port = sock.getsockname() sock.close() server = Server() + TCPServer(0) client = Client() + TCPClient() server.register(m) client.register(m) m.start() try: assert pytest.wait_for(client, "ready") assert pytest.wait_for(server, "ready") wait_host(server) client.fire(connect(server.host, server.port)) assert pytest.wait_for(client, "connected") assert pytest.wait_for(server, "connected") assert pytest.wait_for(client, "data", b"Ready") #assert server.client[1] == bind_port client.fire(write(b"foo")) assert pytest.wait_for(server, "data", b"foo") client.fire(close()) assert pytest.wait_for(client, "disconnected") assert pytest.wait_for(server, "disconnected") server.fire(close()) assert pytest.wait_for(server, "closed") finally: m.stop() def test_tcp_lookup_failure(Poller, ipv6): m = Manager() + Poller() if ipv6: tcp_client = TCP6Client() else: tcp_client = TCPClient() client = Client() + tcp_client client.register(m) m.start() try: assert pytest.wait_for(client, "ready") client.fire(connect("foo", 1234)) assert pytest.wait_for(client, "error", lambda obj, attr: isinstance(getattr(obj, attr), SocketError)) if pytest.PLATFORM == "win32": assert client.error.errno == 11004 else: assert client.error.errno in (EAI_NODATA, EAI_NONAME,) finally: m.stop() circuits-3.1.0/tests/net/__init__.pyc0000644000014400001440000000021112420400435020521 0ustar prologicusers00000000000000 Qc@sdS(N((((s2/home/prologic/work/circuits/tests/net/__init__.pytscircuits-3.1.0/tests/net/test_poller_reuse.py0000644000014400001440000000076512402037676022411 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import Manager from circuits.core.utils import findtype from circuits.core.pollers import BasePoller, Poller from circuits.net.sockets import TCPServer, TCPClient def test(): m = Manager() poller = Poller().register(m) TCPServer(0).register(m) TCPClient().register(m) m.start() try: pollers = findtype(m, BasePoller, all=True) assert len(pollers) == 1 assert pollers[0] is poller finally: m.stop() circuits-3.1.0/tests/node/0000755000014400001440000000000012425013643016420 5ustar prologicusers00000000000000circuits-3.1.0/tests/node/test_node.py0000644000014400001440000000301612402037676020765 0ustar prologicusers00000000000000#!/usr/bin/env python from pytest import fixture, skip, PLATFORM if PLATFORM == "win32": skip("Broken on Windows") from circuits import Component, Event from circuits.net.events import close from circuits.node import Node, remote from circuits.net.sockets import UDPServer class App(Component): ready = False value = False disconnected = False def foo(self): return "Hello World!" def ready(self, *args): self.ready = True def disconnect(self, component): self.disconnected = True def remote_value_changed(self, value): self.value = True @fixture() def bind(request, manager, watcher): server = UDPServer(0).register(manager) assert watcher.wait("ready") host, port = server.host, server.port server.fire(close()) assert watcher.wait("closed") server.unregister() assert watcher.wait("unregistered") return host, port @fixture() def app(request, manager, watcher, bind): app = App().register(manager) node = Node().register(app) watcher.wait("ready") child = (App() + Node(bind)) child.start(process=True) node.add("child", *bind) watcher.wait("connected") def finalizer(): child.stop() request.addfinalizer(finalizer) return app def test_return_value(app, watcher): e = Event.create("foo") e.notify = True r = remote(e, "child") r.notify = True value = app.fire(r) assert watcher.wait("remote_value_changed") assert value.value == "Hello World!" circuits-3.1.0/tests/node/__pycache__/0000755000014400001440000000000012425013643020630 5ustar prologicusers00000000000000circuits-3.1.0/tests/node/__pycache__/test_node.cpython-26-PYTEST.pyc0000644000014400001440000001127512407376151026303 0ustar prologicusers00000000000000 ?Tc @sddkZddkiiZddklZlZl Z e djoednddk l Z l Z ddk lZddklZlZddklZd e fd YZed Zed Zd ZdS(iN(tfixturetskiptPLATFORMtwin32sBroken on Windows(t ComponenttEvent(tclose(tNodetremote(t UDPServertAppcBs>eZeZeZeZdZdZdZdZRS(cCsdS(Ns Hello World!((tself((s4/home/prologic/work/circuits/tests/node/test_node.pytfooscGs t|_dS(N(tTruetready(R targs((s4/home/prologic/work/circuits/tests/node/test_node.pyRscCs t|_dS(N(R t disconnected(R t component((s4/home/prologic/work/circuits/tests/node/test_node.pyt disconnectscCs t|_dS(N(R tvalue(R R((s4/home/prologic/work/circuits/tests/node/test_node.pytremote_value_changed s( t__name__t __module__tFalseRRRR RR(((s4/home/prologic/work/circuits/tests/node/test_node.pyR s   c Cstdi|}|i}d}||}|pdhdtijpti|oti|ndd6ti|d6ti|d6ti|d6}tti |nd}}}|i |i }} |i t|i}d }||}|pdhdtijpti|oti|ndd6ti|d6ti|d6ti|d6}tti |nd}}}|i|i}d }||}|pdhdtijpti|oti|ndd6ti|d6ti|d6ti|d6}tti |nd}}}|| fS( NiRsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }twatchertpy0tpy2tpy4tpy6tclosedt unregistered(R tregistertwaitt @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonethosttporttfireRt unregister( trequesttmanagerRtservert @py_assert1t @py_assert3t @py_assert5t @py_format7R)R*((s4/home/prologic/work/circuits/tests/node/test_node.pytbind$s4  t  t   tcsti|}ti|}|idtt|idt|id||idfd}|i||S(NRtprocesstchildt connectedcsidS(N(tstop((R6(s4/home/prologic/work/circuits/tests/node/test_node.pyt finalizer@s(R RRR tstartR taddt addfinalizer(R-R.RR4tapptnodeR9((R6s4/home/prologic/work/circuits/tests/node/test_node.pyR=4s   c Cstid}t|_t|d}t|_|i|}|i}d}||}|pdhdtijpt i |ot i |ndd6t i |d6t i |d6t i |d 6}t t i |nd}}}|i}d } || j}|pt id|fd|| fhd tijpt i |ot i |nd d6t i |d6t i | d6} dh| d6} t t i | nd}}} dS(NR R6RsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRRRs Hello World!s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sRtpy5sassert %(py7)stpy7(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)s(RtcreateR tnotifyRR+R R!R"R#R$R%R&R'R(Rt_call_reprcompare( R=RtetrRR0R1R2R3t @py_assert4t @py_format6t @py_format8((s4/home/prologic/work/circuits/tests/node/test_node.pyttest_return_valueHs(    t  (t __builtin__R!t_pytest.assertion.rewritet assertiontrewriteR#tpytestRRRtcircuitsRRtcircuits.net.eventsRt circuits.nodeRRtcircuits.net.socketsR R R4R=RI(((s4/home/prologic/work/circuits/tests/node/test_node.pyts  circuits-3.1.0/tests/node/__pycache__/test_node.cpython-32-PYTEST.pyc0000644000014400001440000001245112414363276026277 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlmZmZm Z e dkrSednddl m Z m Z ddl mZddlmZmZddlmZGd d e Zed Zed Zd ZdS(iN(ufixtureuskipuPLATFORMuwin32uBroken on Windows(u ComponentuEvent(uclose(uNodeuremote(u UDPServercBsD|EeZdZdZdZdZdZdZdZdS(cCsdS(Nu Hello World!((uself((u4/home/prologic/work/circuits/tests/node/test_node.pyufooscGs d|_dS(NT(uTrueuready(uselfuargs((u4/home/prologic/work/circuits/tests/node/test_node.pyureadyscCs d|_dS(NT(uTrueu disconnected(uselfu component((u4/home/prologic/work/circuits/tests/node/test_node.pyu disconnectscCs d|_dS(NT(uTrueuvalue(uselfuvalue((u4/home/prologic/work/circuits/tests/node/test_node.pyuremote_value_changed sNF( u__name__u __module__uFalseureadyuvalueu disconnectedufoou disconnecturemote_value_changed(u __locals__((u4/home/prologic/work/circuits/tests/node/test_node.pyuApps    uAppc Cstdj|}|j}d}||}|sdditj|d6dtjksqtj|rtj|ndd6tj|d6tj|d 6}ttj |nd}}}|j |j }} |j t|j}d }||}|sdditj|d6dtjksPtj|r_tj|ndd6tj|d6tj|d 6}ttj |nd}}}|j|j}d }||}|shdditj|d6dtjkstj|r%tj|ndd6tj|d6tj|d 6}ttj |nd}}}|| fS( NiureadyuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4uclosedu unregistered(u UDPServeruregisteruwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuhostuportufireucloseu unregister( urequestumanageruwatcheruserveru @py_assert1u @py_assert3u @py_assert5u @py_format7uhostuport((u4/home/prologic/work/circuits/tests/node/test_node.pyubind$s4  u  u   ucstj|}tj|}|jdtt|jdd|jd||jdfd}|j||S(Nureadyuprocessuchildu connectedcsjdS(N(ustop((uchild(u4/home/prologic/work/circuits/tests/node/test_node.pyu finalizer@sT(uAppuregisteruNodeuwaitustartuTrueuaddu addfinalizer(urequestumanageruwatcherubinduappunodeu finalizer((uchildu4/home/prologic/work/circuits/tests/node/test_node.pyuapp4s   c Cstjd}d|_t|d}d|_|j|}|j}d}||}|sdditj|d6dt j kstj |rtj|ndd6tj|d 6tj|d 6}t tj |nd}}}|j}d } || k}|stjd|fd|| fitj|d6dt j ksntj |r}tj|ndd6tj| d6} di| d6} t tj | nd}}} dS(Nufoouchilduremote_value_changeduuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4u Hello World!u==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suvalueupy5uassert %(py7)supy7T(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(uEventucreateuTrueunotifyuremoteufireuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( uappuwatcherueuruvalueu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_assert4u @py_format6u @py_format8((u4/home/prologic/work/circuits/tests/node/test_node.pyutest_return_valueHs(    u  |(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestufixtureuskipuPLATFORMucircuitsu ComponentuEventucircuits.net.eventsucloseu circuits.nodeuNodeuremoteucircuits.net.socketsu UDPServeruAppubinduapputest_return_value(((u4/home/prologic/work/circuits/tests/node/test_node.pyus   circuits-3.1.0/tests/node/__pycache__/test_node.cpython-34-PYTEST.pyc0000644000014400001440000000773312414363522026302 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZmZm Z e dkrSednddl m Z m Z ddl mZddlmZmZddlmZGd d d e Zed d Zed dZddZdS)N)fixtureskipPLATFORMwin32zBroken on Windows) ComponentEvent)close)Noderemote) UDPServerc@sReZdZdZdZdZddZddZddZdd Zd S) AppFcCsdS)Nz Hello World!)selfr r 4/home/prologic/work/circuits/tests/node/test_node.pyfooszApp.foocGs d|_dS)NT)ready)rargsr r rrsz App.readycCs d|_dS)NT) disconnected)r componentr r r disconnectszApp.disconnectcCs d|_dS)NT)value)rrr r rremote_value_changed szApp.remote_value_changedN) __name__ __module__ __qualname__rrrrrrr r r rr s    r c Cstdj|}|j}d}||}|sdditj|d6tj|d6dtjkstj|rtj|ndd6tj|d 6}ttj |nt }}}|j |j }} |j t|j}d }||}|sdditj|d6tj|d6dtjks`tj|rotj|ndd6tj|d 6}ttj |nt }}}|j|j}d }||}|shdditj|d6tj|d6dtjks&tj|r5tj|ndd6tj|d 6}ttj |nt }}}|| fS) NrrzFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }py2py6watcherpy0py4closed unregistered)r registerwait @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonehostportfirer unregister) requestmanagerrserver @py_assert1 @py_assert3 @py_assert5 @py_format7r-r.r r rbind$s4  u  u   ur8cstj|}tj|}|jdtt|jdd|jd||jdfdd}|j||S)NrprocessTchild connectedcsjdS)N)stopr )r:r r finalizer@szapp..finalizer)r r#r r$startadd addfinalizer)r1r2rr8appnoder=r )r:rrA4s   rAc Cstjd}d|_t|d}d|_|j|}|j}d}||}|sdditj|d6tj|d6d tj kstj |rtj|nd d 6tj|d 6}t tj |nt }}}|j}d } || k}|stjd|fd|| fitj| d6tj|d6dtj ks~tj |rtj|ndd 6} di| d6} t tj | nt }}} dS)NrTr:rrzFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }rrrrr z Hello World!==-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)spy5rassert %(py7)spy7)rC)rDrF)rcreatenotifyr r/r$r%r&r'r(r)r*r+r,r_call_reprcompare) rArerrr4r5r6r7 @py_assert4 @py_format6 @py_format8r r rtest_return_valueHs(    u  |rP)builtinsr'_pytest.assertion.rewrite assertionrewriter%pytestrrrcircuitsrrZcircuits.net.eventsrZ circuits.noder r circuits.net.socketsr r r8rArPr r r rs   circuits-3.1.0/tests/node/__pycache__/test_utils.cpython-26-PYTEST.pyc0000644000014400001440000001032512407376151026511 0ustar prologicusers00000000000000 ?Tyc@s`dZddkZddkiiZddklZdefdYZ dZ dZ dS(stest_utils ... iN(tEventttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s5/home/prologic/work/circuits/tests/node/test_utils.pyRsc Csddkl}l}tddddd}t|_t|_d}|||}||\}}d}t||}|pd hd t i jpt i |ot i |nd d 6d t i jpt i tot i tnd d 6t i |d6t i |d6}tt i|nd}}d}t||}|pd hd t i jpt i |ot i |nd d 6d t i jpt i tot i tnd d 6t i |d6t i |d6}tt i|nd}}d}t||}|pd hd t i jpt i |ot i |nd d 6d t i jpt i tot i tnd d 6t i |d6t i |d6}tt i|nd}}d}t||}|pd hd t i jpt i |ot i |nd d 6d t i jpt i tot i tnd d 6t i |d6t i |d6}tt i|nd}}d}t||}|pd hd t i jpt i |ot i |nd d 6d t i jpt i tot i tnd d 6t i |d6t i |d6}tt i|nd}}d}t||}|pd hd t i jpt i |ot i |nd d 6d t i jpt i tot i tnd d 6t i |d6t i |d6}tt i|nd}}dS(Ni(t dump_eventt load_eventiiitfootbartargss5assert %(py5)s {%(py5)s = %(py0)s(%(py1)s, %(py3)s) }txtpy1thasattrtpy0tpy3tpy5tkwargstsuccesstfailuretchannelstnotify(tcircuits.node.utilsRRRtTrueRtFalseRR t @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone( RRtetidtsR t @py_assert2t @py_assert4t @py_format6((s5/home/prologic/work/circuits/tests/node/test_utils.pyt test_eventssV       cCsddkl}l}ddkl}|}d|_t|_d|_||}||\}}}|i}||j} | pt i d| fd||fhdt i jpt i |ot i|ndd 6t i|d 6d t i jpt i |ot i|nd d 6} d h| d6} tt i| nd}} d} || j}|pt i d|fd|| fhdt i jpt i |ot i|ndd 6t i| d6} dh| d6}tt i|nd}} | }|p]dhdt i jpt i |ot i|ndd 6}tt i|nd}dS(Ni(t dump_valuet load_value(tValueRis==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py4)stvR tpy2R tpy4sassert %(py6)stpy6s%(py0)s == %(py3)sR!Rsassert %(py5)sRsassert not %(py0)sterrors(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py4)s(s==(s%(py0)s == %(py3)s(RR'R(tcircuits.core.valuesR)tvalueRR.tnode_trnRt_call_reprcompareRRRRRRR(R'R(R)R*R"R R!R.t @py_assert1t @py_assert3t @py_format5t @py_format7R#t @py_format4R%t @py_format2((s5/home/prologic/work/circuits/tests/node/test_utils.pyt test_values%s6        o D( Rt __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtcircuitsRRR&R9(((s5/home/prologic/work/circuits/tests/node/test_utils.pyts   circuits-3.1.0/tests/node/__pycache__/test_utils.cpython-33-PYTEST.pyc0000644000014400001440000001130212414363411026474 0ustar prologicusers00000000000000 ?Tyc@sfdZddlZddljjZddlmZGdddeZ ddZ dd Z dS( utest_utils ... iN(uEventcBs|EeZdZdZdS(utestu test EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u5/home/prologic/work/circuits/tests/node/test_utils.pyutestsutestc Csddlm}m}tddddd}d|_d|_d}|||}||\}}d}t||}|s6d d it j |d 6d t j kst j |rt j |nd d 6dt j kst j trt j tndd6t j |d6}tt j|nd}}d}t||}|sd d it j |d 6d t j kst j |rt j |nd d 6dt j kst j trt j tndd6t j |d6}tt j|nd}}d}t||}|sd d it j |d 6d t j ksot j |r~t j |nd d 6dt j kst j trt j tndd6t j |d6}tt j|nd}}d}t||}|sd d it j |d 6d t j ksHt j |rWt j |nd d 6dt j kst j trt j tndd6t j |d6}tt j|nd}}d}t||}|sd d it j |d 6d t j ks!t j |r0t j |nd d 6dt j ksXt j trgt j tndd6t j |d6}tt j|nd}}d}t||}|ssd d it j |d 6d t j kst j |r t j |nd d 6dt j ks1t j tr@t j tndd6t j |d6}tt j|nd}}dS(Ni(u dump_eventu load_eventiiiufooubaruargsuu5assert %(py5)s {%(py5)s = %(py0)s(%(py1)s, %(py3)s) }upy3uxupy1uhasattrupy0upy5ukwargsusuccessufailureuchannelsunotifyTF(ucircuits.node.utilsu dump_eventu load_eventutestuTrueusuccessuFalseufailureuhasattru @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone( u dump_eventu load_eventueuidusuxu @py_assert2u @py_assert4u @py_format6((u5/home/prologic/work/circuits/tests/node/test_utils.pyu test_eventssV       u test_eventscCsddlm}m}ddlm}|}d|_d|_d|_||}||\}}}|j}||k} | sRt j d| fd||fit j |d6d t j kst j|rt j |nd d 6d t j kst j|rt j |nd d 6} di| d6} tt j| nd}} d} || k}|s t j d|fd|| fit j | d6dt j kst j|rt j |ndd 6} di| d6}tt j|nd}} | }|sydidt j ksGt j|rVt j |ndd 6}tt j|nd}dS(Ni(u dump_valueu load_value(uValueufooiu==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py4)supy2uvupy0uxupy4uuassert %(py6)supy6u%(py0)s == %(py3)supy3uiduassert %(py5)supy5uassert not %(py0)suerrorsF(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py4)suassert %(py6)s(u==(u%(py0)s == %(py3)suassert %(py5)suassert not %(py0)s(ucircuits.node.utilsu dump_valueu load_valueucircuits.core.valuesuValueuvalueuFalseuerrorsunode_trnu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(u dump_valueu load_valueuValueuvusuxuiduerrorsu @py_assert1u @py_assert3u @py_format5u @py_format7u @py_assert2u @py_format4u @py_format6u @py_format2((u5/home/prologic/work/circuits/tests/node/test_utils.pyu test_values%s6        l Au test_values( u__doc__ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsuEventutestu test_eventsu test_values(((u5/home/prologic/work/circuits/tests/node/test_utils.pyus   circuits-3.1.0/tests/node/__pycache__/test_utils.cpython-27-PYTEST.pyc0000644000014400001440000001036212414363102026501 0ustar prologicusers00000000000000 ?Tyc@s`dZddlZddljjZddlmZdefdYZ dZ dZ dS(stest_utils ... iN(tEventttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s5/home/prologic/work/circuits/tests/node/test_utils.pyRsc Csddlm}m}tddddd}t|_t|_d}|||}||\}}d}t||}|s6d d it j |d 6d t j kst j |rt j |nd d 6dt j kst j trt j tndd6t j |d6}tt j|nd}}d}t||}|sd d it j |d 6d t j kst j |rt j |nd d 6dt j kst j trt j tndd6t j |d6}tt j|nd}}d}t||}|sd d it j |d 6d t j ksot j |r~t j |nd d 6dt j kst j trt j tndd6t j |d6}tt j|nd}}d}t||}|sd d it j |d 6d t j ksHt j |rWt j |nd d 6dt j kst j trt j tndd6t j |d6}tt j|nd}}d}t||}|sd d it j |d 6d t j ks!t j |r0t j |nd d 6dt j ksXt j trgt j tndd6t j |d6}tt j|nd}}d}t||}|ssd d it j |d 6d t j kst j |r t j |nd d 6dt j ks1t j tr@t j tndd6t j |d6}tt j|nd}}dS(Ni(t dump_eventt load_eventiiitfootbartargsts5assert %(py5)s {%(py5)s = %(py0)s(%(py1)s, %(py3)s) }tpy3txtpy1thasattrtpy0tpy5tkwargstsuccesstfailuretchannelstnotify(tcircuits.node.utilsRRRtTrueRtFalseRRt @pytest_art _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone( RRtetidtsR t @py_assert2t @py_assert4t @py_format6((s5/home/prologic/work/circuits/tests/node/test_utils.pyt test_eventssV       cCsddlm}m}ddlm}|}d|_t|_d|_||}||\}}}|j}||k} | sRt j d| fd||fit j |d6d t j kst j|rt j |nd d 6d t j kst j|rt j |nd d 6} di| d6} tt j| nd}} d} || k}|s t j d|fd|| fit j | d6dt j kst j|rt j |ndd 6} di| d6}tt j|nd}} | }|sydidt j ksGt j|rVt j |ndd 6}tt j|nd}dS(Ni(t dump_valuet load_value(tValueRis==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py4)stpy2tvRR tpy4R sassert %(py6)stpy6s%(py0)s == %(py3)sR R"sassert %(py5)sRsassert not %(py0)sterrors(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py4)ssassert %(py6)s(s==(s%(py0)s == %(py3)ssassert %(py5)ssassert not %(py0)s(RR(R)tcircuits.core.valuesR*tvalueRR/tnode_trnRt_call_reprcompareRRRRRRR (R(R)R*R,R#R R"R/t @py_assert1t @py_assert3t @py_format5t @py_format7R$t @py_format4R&t @py_format2((s5/home/prologic/work/circuits/tests/node/test_utils.pyt test_values%s6        l A( Rt __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtcircuitsRRR'R:(((s5/home/prologic/work/circuits/tests/node/test_utils.pyts   circuits-3.1.0/tests/node/__pycache__/test_node.cpython-33-PYTEST.pyc0000644000014400001440000001275712414363411026300 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZmZm Z e dkrSednddl m Z m Z ddl mZddlmZmZddlmZGd d d e Zed d Zed dZddZdS(iN(ufixtureuskipuPLATFORMuwin32uBroken on Windows(u ComponentuEvent(uclose(uNodeuremote(u UDPServercBsV|EeZdZd Zd Zd ZddZddZddZddZ d S( uAppcCsdS(Nu Hello World!((uself((u4/home/prologic/work/circuits/tests/node/test_node.pyufoosuApp.foocGs d|_dS(NT(uTrueuready(uselfuargs((u4/home/prologic/work/circuits/tests/node/test_node.pyureadysu App.readycCs d|_dS(NT(uTrueu disconnected(uselfu component((u4/home/prologic/work/circuits/tests/node/test_node.pyu disconnectsuApp.disconnectcCs d|_dS(NT(uTrueuvalue(uselfuvalue((u4/home/prologic/work/circuits/tests/node/test_node.pyuremote_value_changed suApp.remote_value_changedNF( u__name__u __module__u __qualname__uFalseureadyuvalueu disconnectedufoou disconnecturemote_value_changed(u __locals__((u4/home/prologic/work/circuits/tests/node/test_node.pyuApps   uAppc Cstdj|}|j}d}||}|sdditj|d6dtjksqtj|rtj|ndd6tj|d6tj|d 6}ttj |nd}}}|j |j }} |j t|j}d }||}|sdditj|d6dtjksPtj|r_tj|ndd6tj|d6tj|d 6}ttj |nd}}}|j|j}d }||}|shdditj|d6dtjkstj|r%tj|ndd6tj|d6tj|d 6}ttj |nd}}}|| fS( NiureadyuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4uclosedu unregistered(u UDPServeruregisteruwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuhostuportufireucloseu unregister( urequestumanageruwatcheruserveru @py_assert1u @py_assert3u @py_assert5u @py_format7uhostuport((u4/home/prologic/work/circuits/tests/node/test_node.pyubind$s4  u  u   uubindcstj|}tj|}|jdtt|jdd|jd||jdfdd}|j||S(Nureadyuprocessuchildu connectedcsjdS(N(ustop((uchild(u4/home/prologic/work/circuits/tests/node/test_node.pyu finalizer@suapp..finalizerT(uAppuregisteruNodeuwaitustartuTrueuaddu addfinalizer(urequestumanageruwatcherubinduappunodeu finalizer((uchildu4/home/prologic/work/circuits/tests/node/test_node.pyuapp4s   uappc Cstjd}d|_t|d}d|_|j|}|j}d}||}|sdditj|d6dt j kstj |rtj|ndd6tj|d 6tj|d 6}t tj |nd}}}|j}d } || k}|stjd|fd|| fitj|d6dt j ksntj |r}tj|ndd6tj| d6} di| d6} t tj | nd}}} dS(Nufoouchilduremote_value_changeduuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4u Hello World!u==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suvalueupy5uassert %(py7)supy7T(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(uEventucreateuTrueunotifyuremoteufireuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( uappuwatcherueuruvalueu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_assert4u @py_format6u @py_format8((u4/home/prologic/work/circuits/tests/node/test_node.pyutest_return_valueHs(    u  |utest_return_value(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestufixtureuskipuPLATFORMucircuitsu ComponentuEventucircuits.net.eventsucloseu circuits.nodeuNodeuremoteucircuits.net.socketsu UDPServeruAppubinduapputest_return_value(((u4/home/prologic/work/circuits/tests/node/test_node.pyus   circuits-3.1.0/tests/node/__pycache__/test_node.cpython-27-PYTEST.pyc0000644000014400001440000001131712414363102026267 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZmZm Z e dkrSednddl m Z m Z ddl mZddlmZmZddlmZd e fd YZed Zed Zd ZdS(iN(tfixturetskiptPLATFORMtwin32sBroken on Windows(t ComponenttEvent(tclose(tNodetremote(t UDPServertAppcBs>eZeZeZeZdZdZdZdZRS(cCsdS(Ns Hello World!((tself((s4/home/prologic/work/circuits/tests/node/test_node.pytfooscGs t|_dS(N(tTruetready(R targs((s4/home/prologic/work/circuits/tests/node/test_node.pyRscCs t|_dS(N(R t disconnected(R t component((s4/home/prologic/work/circuits/tests/node/test_node.pyt disconnectscCs t|_dS(N(R tvalue(R R((s4/home/prologic/work/circuits/tests/node/test_node.pytremote_value_changed s( t__name__t __module__tFalseRRRR RR(((s4/home/prologic/work/circuits/tests/node/test_node.pyR s   c Cstdj|}|j}d}||}|sdditj|d6dtjksqtj|rtj|ndd6tj|d6tj|d 6}ttj |nd}}}|j |j }} |j t|j}d }||}|sdditj|d6dtjksPtj|r_tj|ndd6tj|d6tj|d 6}ttj |nd}}}|j|j}d }||}|shdditj|d6dtjkstj|r%tj|ndd6tj|d6tj|d 6}ttj |nd}}}|| fS( NiRtsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }tpy2twatchertpy0tpy6tpy4tclosedt unregistered(R tregistertwaitt @pytest_art _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonethosttporttfireRt unregister( trequesttmanagerRtservert @py_assert1t @py_assert3t @py_assert5t @py_format7R*R+((s4/home/prologic/work/circuits/tests/node/test_node.pytbind$s4  u  u   ucstj|}tj|}|jdtt|jdt|jd||jdfd}|j||S(NRtprocesstchildt connectedcsjdS(N(tstop((R7(s4/home/prologic/work/circuits/tests/node/test_node.pyt finalizer@s(R R RR!tstartR taddt addfinalizer(R.R/RR5tapptnodeR:((R7s4/home/prologic/work/circuits/tests/node/test_node.pyR>4s   c Cstjd}t|_t|d}t|_|j|}|j}d}||}|sdditj|d6dt j kstj |rtj|ndd6tj|d 6tj|d 6}t tj |nd}}}|j}d } || k}|stjd|fd|| fitj|d6dt j ksntj |r}tj|ndd6tj| d6} di| d6} t tj | nd}}} dS(NR R7RRsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRRRs Hello World!s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sRtpy5sassert %(py7)stpy7(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(RtcreateR tnotifyRR,R!R"R#R$R%R&R'R(R)Rt_call_reprcompare( R>RtetrRR1R2R3R4t @py_assert4t @py_format6t @py_format8((s4/home/prologic/work/circuits/tests/node/test_node.pyttest_return_valueHs(    u  |(t __builtin__R$t_pytest.assertion.rewritet assertiontrewriteR"tpytestRRRtcircuitsRRtcircuits.net.eventsRt circuits.nodeRRtcircuits.net.socketsR R R5R>RJ(((s4/home/prologic/work/circuits/tests/node/test_node.pyts   circuits-3.1.0/tests/node/__pycache__/test_utils.cpython-34-PYTEST.pyc0000644000014400001440000000736212414363522026513 0ustar prologicusers00000000000000 ?Ty@sfdZddlZddljjZddlmZGdddeZ ddZ dd Z dS) ztest_utils ... N)Eventc@seZdZdZdS)testz test EventN)__name__ __module__ __qualname____doc__rr5/home/prologic/work/circuits/tests/node/test_utils.pyrs rc Csddlm}m}tddddd}d|_d |_d}|||}||\}}d }t||}|s6d d id tjkst j |rt j |nd d6t j |d6t j |d6dtjkst j trt j tndd6}t t j |nt}}d}t||}|sd d id tjkst j |rt j |nd d6t j |d6t j |d6dtjkst j trt j tndd6}t t j |nt}}d}t||}|sd d id tjks_t j |rnt j |nd d6t j |d6t j |d6dtjkst j trt j tndd6}t t j |nt}}d}t||}|sd d id tjks8t j |rGt j |nd d6t j |d6t j |d6dtjkst j trt j tndd6}t t j |nt}}d}t||}|sd d id tjkst j |r t j |nd d6t j |d6t j |d6dtjksht j trwt j tndd6}t t j |nt}}d}t||}|ssd d id tjkst j |rt j |nd d6t j |d6t j |d6dtjksAt j trPt j tndd6}t t j |nt}}dS)Nr) dump_event load_eventfoobarTFargsz5assert %(py5)s {%(py5)s = %(py0)s(%(py1)s, %(py3)s) }xpy1py5py3hasattrpy0kwargssuccessfailurechannelsnotify)circuits.node.utilsr r rrrr @py_builtinslocals @pytest_ar_should_repr_global_name _safereprAssertionError_format_explanationNone) r r eidsr @py_assert2 @py_assert4 @py_format6rrr test_eventssV       r-cCsddlm}m}ddlm}|}d|_d|_d|_||}||\}}}|j}||k} | sRtj d| fd||fitj |d 6d t j kstj |rtj |nd d 6d t j kstj |rtj |nd d 6} di| d6} ttj| nt}} d} || k}|s tj d|fd|| fitj | d6dt j kstj |rtj |ndd 6} di| d6}ttj|nt}} | }|sydidt j ksGtj |rVtj |ndd 6}ttj|nt}dS)Nr) dump_value load_value)ValuerFr ==-%(py2)s {%(py2)s = %(py0)s.value } == %(py4)spy2vrrpy4rassert %(py6)spy6%(py0)s == %(py3)srr(assert %(py5)srassert not %(py0)serrors)r1)r2r6)r1)r8r9r:)rr.r/Zcircuits.core.valuesr0valuer;node_trnr!_call_reprcomparer#rr r"r$r%r&)r.r/r0r4r)rr(r; @py_assert1 @py_assert3 @py_format5 @py_format7r* @py_format4r, @py_format2rrr test_values%s6        l ArE) rbuiltinsr_pytest.assertion.rewrite assertionrewriter!circuitsrrr-rErrrr s   circuits-3.1.0/tests/node/__pycache__/test_utils.cpython-32-PYTEST.pyc0000644000014400001440000001117112414363276026510 0ustar prologicusers00000000000000l ?Tyc@s]dZddlZddljjZddlmZGddeZ dZ dZ dS(utest_utils ... iN(uEventcBs|EeZdZdS(u test EventN(u__name__u __module__u__doc__(u __locals__((u5/home/prologic/work/circuits/tests/node/test_utils.pyutests utestc Csddlm}m}tddddd}d|_d|_d}|||}||\}}d}t||}|s6d d it j |d 6d t j kst j |rt j |nd d 6dt j kst j trt j tndd6t j |d6}tt j|nd}}d}t||}|sd d it j |d 6d t j kst j |rt j |nd d 6dt j kst j trt j tndd6t j |d6}tt j|nd}}d}t||}|sd d it j |d 6d t j ksot j |r~t j |nd d 6dt j kst j trt j tndd6t j |d6}tt j|nd}}d}t||}|sd d it j |d 6d t j ksHt j |rWt j |nd d 6dt j kst j trt j tndd6t j |d6}tt j|nd}}d}t||}|sd d it j |d 6d t j ks!t j |r0t j |nd d 6dt j ksXt j trgt j tndd6t j |d6}tt j|nd}}d}t||}|ssd d it j |d 6d t j kst j |r t j |nd d 6dt j ks1t j tr@t j tndd6t j |d6}tt j|nd}}dS(Ni(u dump_eventu load_eventiiiufooubaruargsuu5assert %(py5)s {%(py5)s = %(py0)s(%(py1)s, %(py3)s) }upy3uxupy1uhasattrupy0upy5ukwargsusuccessufailureuchannelsunotifyTF(ucircuits.node.utilsu dump_eventu load_eventutestuTrueusuccessuFalseufailureuhasattru @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone( u dump_eventu load_eventueuidusuxu @py_assert2u @py_assert4u @py_format6((u5/home/prologic/work/circuits/tests/node/test_utils.pyu test_eventssV       cCsddlm}m}ddlm}|}d|_d|_d|_||}||\}}}|j}||k} | sRt j d| fd||fit j |d6d t j kst j|rt j |nd d 6d t j kst j|rt j |nd d 6} di| d6} tt j| nd}} d} || k}|s t j d|fd|| fit j | d6dt j kst j|rt j |ndd 6} di| d6}tt j|nd}} | }|sydidt j ksGt j|rVt j |ndd 6}tt j|nd}dS(Ni(u dump_valueu load_value(uValueufooiu==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py4)supy2uvupy0uxupy4uuassert %(py6)supy6u%(py0)s == %(py3)supy3uiduassert %(py5)supy5uassert not %(py0)suerrorsF(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py4)suassert %(py6)s(u==(u%(py0)s == %(py3)suassert %(py5)suassert not %(py0)s(ucircuits.node.utilsu dump_valueu load_valueucircuits.core.valuesuValueuvalueuFalseuerrorsunode_trnu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(u dump_valueu load_valueuValueuvusuxuiduerrorsu @py_assert1u @py_assert3u @py_format5u @py_format7u @py_assert2u @py_format4u @py_format6u @py_format2((u5/home/prologic/work/circuits/tests/node/test_utils.pyu test_values%s6        l A( u__doc__ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsuEventutestu test_eventsu test_values(((u5/home/prologic/work/circuits/tests/node/test_utils.pyus   circuits-3.1.0/tests/node/test_utils.py0000644000014400001440000000157112402037676021204 0ustar prologicusers00000000000000# Module: test_utils # Date: ... # Author: ... """test_utils ... """ from circuits import Event class test(Event): """test Event""" def test_events(): from circuits.node.utils import dump_event, load_event e = test(1, 2, 3, foo="bar") e.success = True e.failure = False id = 1 s = dump_event(e, id) x, id = load_event(s) assert hasattr(x, "args") assert hasattr(x, "kwargs") assert hasattr(x, "success") assert hasattr(x, "failure") assert hasattr(x, "channels") assert hasattr(x, "notify") def test_values(): from circuits.node.utils import dump_value, load_value from circuits.core.values import Value v = Value() v.value = 'foo' v.errors = False v.node_trn = 1 s = dump_value(v) x, id, errors = load_value(s) assert v.value == x assert id == 1 assert not errors circuits-3.1.0/tests/main.pyc0000644000014400001440000000226012402040047017125 0ustar prologicusers00000000000000 ?Tc@stddlZddlmZddlmZmZddlmZmZdZ dZ e dkrpe ndS(iN(t ModuleType(tabspathtdirname(tPopentSTDOUTcCsEy,t|tt}t|tkSWntk r@tSXdS(N(t __import__tglobalstlocalsttypeRt ImportErrortFalse(tmoduletm((s*/home/prologic/work/circuits/tests/main.pyt importable s  cCsddddg}tdr;|jd|jdn|jttttt|dtjd t j dS( Nspy.tests-rtfsxXs --ignore=tmpt pytest_covs--cov=circuitss--cov-report=htmltstdouttstderr( R tappendRRt__file__t SystemExitRtsysRRtwait(tcmd((s*/home/prologic/work/circuits/tests/main.pytmains   t__main__( RttypesRtos.pathRRt subprocessRRR Rt__name__(((s*/home/prologic/work/circuits/tests/main.pyts   circuits-3.1.0/tests/io/0000755000014400001440000000000012425013643016102 5ustar prologicusers00000000000000circuits-3.1.0/tests/io/__init__.py0000644000014400001440000000000012174742426020212 0ustar prologicusers00000000000000circuits-3.1.0/tests/io/__pycache__/0000755000014400001440000000000012425013643020312 5ustar prologicusers00000000000000circuits-3.1.0/tests/io/__pycache__/test_file.cpython-33-PYTEST.pyc0000644000014400001440000002276412414363411025753 0ustar prologicusers00000000000000 ?T@c@sddlZddljjZddlZejdkrIejdnddl m Z ddl m Z ddl mZddlmZmZGdd d eZd d Zd d ZdS(iNuwin32uUnsupported Platform(uBytesIO(uFile(u Component(uwriteuclosecBsD|EeZdZddZddZddZddZd S( uFileAppcOs=t||j||_d|_d|_t|_dS(NF(uFileuregisterufileuFalseueofucloseduBytesIOubuffer(uselfuargsukwargs((u2/home/prologic/work/circuits/tests/io/test_file.pyuinits  u FileApp.initcCs|jj|dS(N(ubufferuwrite(uselfudata((u2/home/prologic/work/circuits/tests/io/test_file.pyureadsu FileApp.readcCs d|_dS(NT(uTrueueof(uself((u2/home/prologic/work/circuits/tests/io/test_file.pyueofsu FileApp.eofcCs d|_dS(NT(uTrueuclosed(uself((u2/home/prologic/work/circuits/tests/io/test_file.pyuclosedsuFileApp.closedN(u__name__u __module__u __qualname__uinitureadueofuclosed(u __locals__((u2/home/prologic/work/circuits/tests/io/test_file.pyuFileApp s   uFileAppcCst|jd}t|d}|jdWdQXt|d}t|j|}|j}d}|j} | j} ||| } | sxddit j | d6t j |d 6d t j kst j |rt j |nd d 6t j | d 6d t j ks&t j |r5t j |nd d6t j |d6t j | d6} tt j| nd}}} } } |j}d}|j} | j} ||| } | sddit j | d6t j |d 6d t j kst j |rt j |nd d 6t j | d 6d t j ksVt j |ret j |nd d6t j |d6t j | d6} tt j| nd}}} } } |j}|s:ddit j |d 6d t j kst j |rt j |nd d 6} tt j| nd}|jt|jj|j}d}|j} | j} ||| } | ssddit j | d6t j |d 6d t j kst j |rt j |nd d 6t j | d 6d t j ks!t j |r0t j |nd d6t j |d6t j | d6} tt j| nd}}} } } |j}|sddit j |d 6d t j kst j |rt j |nd d 6} tt j| nd}|j|j}d}||}|sddit j |d 6d t j ksqt j |rt j |nd d 6t j |d6t j |d6}tt j|nd}}}|jj}d}||k}|st jd|fd||fit j |d6dt j ksJt j |rYt j |ndd 6}d i|d6}tt j|nd}}dS(!Nuhelloworld.txtuwu Hello World!uruopeneduuassert %(py11)s {%(py11)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py9)s {%(py9)s = %(py7)s {%(py7)s = %(py5)s.file }.channel }) }upy11upy2uwatcherupy0upy7uappupy5upy4upy9ueofu'assert %(py2)s {%(py2)s = %(py0)s.eof }uclosedu*assert %(py2)s {%(py2)s = %(py0)s.closed }u unregistereduFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy6s Hello World!u==u%(py0)s == %(py3)supy3usuassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(ustruensureuopenuwriteuFileAppuregisteruwaitufileuchannelu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneueofufireucloseuclosedu unregisterubufferugetvalueu_call_reprcompare(umanageruwatcherutmpdirufilenameufufileobjuappu @py_assert1u @py_assert3u @py_assert6u @py_assert8u @py_assert10u @py_format12u @py_format3u @py_assert5u @py_format7usu @py_assert2u @py_format4u @py_format6((u2/home/prologic/work/circuits/tests/io/test_file.pyutest_open_fileobj sv     U   U   u lutest_open_fileobjcCs t|jd}t|dj|}|j}d}|j}|j}|||} | sGdditj| d6tj|d6dt j kstj |rtj|ndd 6tj|d 6d t j kstj |rtj|nd d 6tj|d 6tj|d6} t tj | nd}}}}} |jtd|jj|j}d}|j}|j}|||} | sdditj| d6tj|d6dt j kstj |r tj|ndd 6tj|d 6d t j ksAtj |rPtj|nd d 6tj|d 6tj|d6} t tj | nd}}}}} |jt|jj|j}d}|j}|j}|||} | sdditj| d6tj|d6dt j ksCtj |rRtj|ndd 6tj|d 6d t j kstj |rtj|nd d 6tj|d 6tj|d6} t tj | nd}}}}} |j}|sndditj|d6d t j ks<tj |rKtj|nd d 6} t tj | nd}|j|j}d}||} | s,dditj|d6dt j kstj |rtj|ndd 6tj| d6tj|d 6} t tj | nd}}} t|dj|}|j}d}|j}|j}|||} | sldditj| d6tj|d6dt j kstj |rtj|ndd 6tj|d 6d t j kstj |r)tj|nd d 6tj|d 6tj|d6} t tj | nd}}}}} |j}d}|j}|j}|||} | sdditj| d6tj|d6dt j kstj |rtj|ndd 6tj|d 6d t j ksJtj |rYtj|nd d 6tj|d 6tj|d6} t tj | nd}}}}} |j}|s.dditj|d6d t j kstj |r tj|nd d 6} t tj | nd}|jt|jj|j}d}|j}|j}|||} | sg dditj| d6tj|d6dt j kstj |rtj|ndd 6tj|d 6d t j ks tj |r$ tj|nd d 6tj|d 6tj|d6} t tj | nd}}}}} |j}|s dditj|d6d t j ks tj |r tj|nd d 6} t tj | nd}|j|j}d}||} | s dditj|d6dt j kse tj |rt tj|ndd 6tj| d6tj|d 6} t tj | nd}}} |jj}d}||k}|s tjd|fd||fitj|d6dt j ks> tj |rM tj|ndd 6}d i|d 6}t tj |nd}}dS(!Nuhelloworld.txtuwuopeneduuassert %(py11)s {%(py11)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py9)s {%(py9)s = %(py7)s {%(py7)s = %(py5)s.file }.channel }) }upy11upy2uwatcherupy0upy7uappupy5upy4upy9s Hello World!uwriteuclosedu*assert %(py2)s {%(py2)s = %(py0)s.closed }u unregistereduFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy6urueofu'assert %(py2)s {%(py2)s = %(py0)s.eof }u==u%(py0)s == %(py3)supy3usuassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(ustruensureuFileAppuregisteruwaitufileuchannelu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneufireuwriteucloseuclosedu unregisterueofubufferugetvalueu_call_reprcompare(umanageruwatcherutmpdirufilenameuappu @py_assert1u @py_assert3u @py_assert6u @py_assert8u @py_assert10u @py_format12u @py_format3u @py_assert5u @py_format7usu @py_assert2u @py_format4u @py_format6((u2/home/prologic/work/circuits/tests/io/test_file.pyutest_read_write8s       U   u     U   U   u lutest_read_write(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuPLATFORMuskipuiouBytesIOu circuits.iouFileucircuitsu Componentucircuits.io.eventsuwriteucloseuFileApputest_open_fileobjutest_read_write(((u2/home/prologic/work/circuits/tests/io/test_file.pyus   circuits-3.1.0/tests/io/__pycache__/__init__.cpython-33.pyc0000644000014400001440000000022012414363411024465 0ustar prologicusers00000000000000 Qc@sdS(N((((u1/home/prologic/work/circuits/tests/io/__init__.pyuscircuits-3.1.0/tests/io/__pycache__/__init__.cpython-34.pyc0000644000014400001440000000020412414363521024472 0ustar prologicusers00000000000000 Q@sdS)Nrrr1/home/prologic/work/circuits/tests/io/__init__.pyscircuits-3.1.0/tests/io/__pycache__/test_notify.cpython-32-PYTEST.pyc0000644000014400001440000000466412414363276026353 0ustar prologicusers00000000000000l ?T>c@s}ddlZddljjZddlZejdddlm Z ddl m Z m Z Gdde Z dZdS(iNu pyinotify(uNotify(u ComponentuhandlercBs2|EeZdZeddddZdS(cOs d|_dS(NF(uFalseucreated(uselfuargsukwargs((u4/home/prologic/work/circuits/tests/io/test_notify.pyuinit sucreateduchannelunotifycOs d|_dS(NT(uTrueucreated(uselfuargsukwargs((u4/home/prologic/work/circuits/tests/io/test_notify.pyucreatedsN(u__name__u __module__uinituhandlerucreated(u __locals__((u4/home/prologic/work/circuits/tests/io/test_notify.pyuApp s  uAppc Cstj|}tj|}|jd|jt||jd|jd|j}|sdditj |d6dt j kstj |rtj |ndd6}t tj|nd}d |_|jt||jd |jd|j}| }|sdd itj |d6dt j ksgtj |rvtj |ndd6}t tj|nd}}|j|jd dS( Nu registereduhelloworld.txtucreateduu+assert %(py2)s {%(py2)s = %(py0)s.created }upy2uappupy0uhelloworld2.txtu/assert not %(py2)s {%(py2)s = %(py0)s.created }u unregisteredF(uAppuregisteruNotifyuwaituadd_pathustruensureucreatedu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuFalseu remove_pathu unregister( umanageruwatcherutmpdiruappunotifyu @py_assert1u @py_format3u @py_assert3u @py_format4((u4/home/prologic/work/circuits/tests/io/test_notify.pyu test_notifys.    U    U  (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestu importorskipucircuits.io.notifyuNotifyucircuitsu ComponentuhandleruAppu test_notify(((u4/home/prologic/work/circuits/tests/io/test_notify.pyus    circuits-3.1.0/tests/io/__pycache__/__init__.cpython-32.pyc0000644000014400001440000000021412414363276024500 0ustar prologicusers00000000000000l Qc@sdS(N((((u1/home/prologic/work/circuits/tests/io/__init__.pyuscircuits-3.1.0/tests/io/__pycache__/test_notify.cpython-33-PYTEST.pyc0000644000014400001440000000501412414363411026331 0ustar prologicusers00000000000000 ?T>c@sddlZddljjZddlZejdddlm Z ddl m Z m Z Gddde Z ddZdS( iNu pyinotify(uNotify(u ComponentuhandlercBs>|EeZdZddZedddddZdS( uAppcOs d|_dS(NF(uFalseucreated(uselfuargsukwargs((u4/home/prologic/work/circuits/tests/io/test_notify.pyuinit suApp.initucreateduchannelunotifycOs d|_dS(NT(uTrueucreated(uselfuargsukwargs((u4/home/prologic/work/circuits/tests/io/test_notify.pyucreatedsu App.createdN(u__name__u __module__u __qualname__uinituhandlerucreated(u __locals__((u4/home/prologic/work/circuits/tests/io/test_notify.pyuApp s uAppc Cstj|}tj|}|jd|jt||jd|jd|j}|sdditj |d6dt j kstj |rtj |ndd6}t tj|nd}d |_|jt||jd |jd|j}| }|sdd itj |d6dt j ksgtj |rvtj |ndd6}t tj|nd}}|j|jd dS( Nu registereduhelloworld.txtucreateduu+assert %(py2)s {%(py2)s = %(py0)s.created }upy2uappupy0uhelloworld2.txtu/assert not %(py2)s {%(py2)s = %(py0)s.created }u unregisteredF(uAppuregisteruNotifyuwaituadd_pathustruensureucreatedu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuFalseu remove_pathu unregister( umanageruwatcherutmpdiruappunotifyu @py_assert1u @py_format3u @py_assert3u @py_format4((u4/home/prologic/work/circuits/tests/io/test_notify.pyu test_notifys.    U    U  u test_notify(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestu importorskipucircuits.io.notifyuNotifyucircuitsu ComponentuhandleruAppu test_notify(((u4/home/prologic/work/circuits/tests/io/test_notify.pyus    circuits-3.1.0/tests/io/__pycache__/test_process.cpython-32-PYTEST.pyc0000644000014400001440000001301712414363276026511 0ustar prologicusers00000000000000l ?Tc@suddlZddljjZddlZejdkrIejdnddl m Z m Z dZ dZ dS(iNuwin32uUnsupported Platform(uProcessuwritec Cstddgj|}|j}d}||}|sdditj|d6dtjkswtj|rtj|ndd6tj|d 6tj|d 6}ttj |nd}}}|j |j}d }|j }|||}|sdd itj|d6dtjksItj|rXtj|ndd6tj|d 6dtjkstj|rtj|ndd6tj|d 6tj|d6} ttj | nd}}}}|j}d}|j }|||}|sdd itj|d6dtjks\tj|rktj|ndd6tj|d 6dtjkstj|rtj|ndd6tj|d 6tj|d6} ttj | nd}}}}|j j} d} | | k}|stjd|fd| | fitj| d6dtjkstj| rtj| ndd6} di| d6} ttj | nd}} dS(Nuechou Hello World!u registereduuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4ustartedulassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py7)s {%(py7)s = %(py5)s.channel }) }upy7upupy5upy9ustoppeds Hello World! u==u%(py0)s == %(py3)supy3usuassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uProcessuregisteruwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneustartuchannelustdoutugetvalueu_call_reprcompare(umanageruwatcherupu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_assert6u @py_assert8u @py_format10usu @py_assert2u @py_format4u @py_format6((u5/home/prologic/work/circuits/tests/io/test_process.pyutest sB  u      lcCs|jd}tdjt|gddj|}|j}d}||}|sdditj|d6dt j kstj |rtj|ndd 6tj|d 6tj|d 6}t tj |nd}}}|j|j}d }|j} ||| } | sdd itj|d6dt j ksjtj |rytj|ndd 6tj| d6dt j kstj |rtj|ndd6tj|d 6tj| d6} t tj | nd}}} } |jtd|j|j}d}|j} ||| } | s/dditj|d6dt j kstj |rtj|ndd 6tj| d6dt j kstj |rtj|ndd6tj|d 6tj| d6} t tj | nd}}} } |j|j}d}|j} | j} ||| } | sedditj| d6tj|d6dt j kstj |rtj|ndd 6tj| d6dt j kstj |r"tj|ndd6tj|d 6tj| d6} t tj | nd}}} } } |jd}|j}|}d} || k}|sltjd|fd|| fitj|d6dt j ks tj |rtj|ndd 6tj| d6tj|d 6}d i|d6} t tj | nd}}}} WdQXdS(!Nufoo.txtu cat - > {0:s}ushellu registereduuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4ustartedulassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py7)s {%(py7)s = %(py5)s.channel }) }upy7upupy5upy9u Hello World!uwriteukassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py7)s {%(py7)s = %(py5)s._stdin }) }ueofuassert %(py11)s {%(py11)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py9)s {%(py9)s = %(py7)s {%(py7)s = %(py5)s._stdout }.channel }) }upy11uru==uC%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.read }() } == %(py7)sufuassert %(py9)sT(u==(uC%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.read }() } == %(py7)suassert %(py9)s(uensureuProcessuformatustruTrueuregisteruwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneustartuchannelufireuwriteu_stdinustopu_stdoutuopenureadu_call_reprcompare(umanageruwatcherutmpdirufooupu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_assert6u @py_assert8u @py_format10u @py_assert10u @py_format12ufu @py_format8((u5/home/prologic/work/circuits/tests/io/test_process.pyutest2s^-  u          (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuPLATFORMuskipu circuits.iouProcessuwriteutestutest2(((u5/home/prologic/work/circuits/tests/io/test_process.pyus   circuits-3.1.0/tests/io/__pycache__/test_process.cpython-34-PYTEST.pyc0000644000014400001440000001122412414363522026503 0ustar prologicusers00000000000000 ?T@s{ddlZddljjZddlZejdkrIejdnddl m Z m Z ddZ ddZ dS) Nwin32zUnsupported Platform)Processwritec Cstddgj|}|j}d}||}|sdditj|d6tj|d6dtjkstj|rtj|ndd 6tj|d 6}ttj |nt }}}|j |j}d }|j }|||}|sdd itj|d 6tj|d6tj|d6dtjksitj|rxtj|ndd6tj|d 6dtjkstj|rtj|ndd 6} ttj | nt }}}}|j}d}|j }|||}|sdd itj|d 6tj|d6tj|d6dtjks|tj|rtj|ndd6tj|d 6dtjkstj|rtj|ndd 6} ttj | nt }}}}|j j} d} | | k}|stjd|fd| | fitj| d6dtjkstj| rtj| ndd 6} di| d6} ttj | nt }} dS)NZechoz Hello World! registeredzFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }py2py6watcherpy0py4startedzlassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py7)s {%(py7)s = %(py5)s.channel }) }py9py7ppy5stoppeds Hello World! ==%(py0)s == %(py3)spy3sassert %(py5)s)r)rr)rregisterwait @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonestartchannelstdoutgetvalue_call_reprcompare)managerr r @py_assert1 @py_assert3 @py_assert5 @py_format7 @py_assert6 @py_assert8 @py_format10r @py_assert2 @py_format4 @py_format6r15/home/prologic/work/circuits/tests/io/test_process.pytest sB  u      lr3cCs|jd}tdjt|gddj|}|j}d}||}|sdditj|d6tj|d 6d tj kstj |rtj|nd d 6tj|d 6}t tj |nt }}}|j|j}d }|j} ||| } | sdditj| d6tj|d6tj| d6dtj kstj |rtj|ndd6tj|d 6d tj kstj |rtj|nd d 6} t tj | nt }}} } |jtd|j|j}d}|j} ||| } | s/dditj| d6tj|d6tj| d6dtj kstj |rtj|ndd6tj|d 6d tj kstj |r tj|nd d 6} t tj | nt }}} } |j|j}d}|j} | j} ||| } | sedditj| d6tj|d6tj| d6dtj kstj |rtj|ndd6tj|d 6tj| d6d tj ks3tj |rBtj|nd d 6} t tj | nt }}} } } |jd}|j}|}d} || k}|sltjd|fd|| fitj|d6tj| d6dtj kstj |r(tj|ndd 6tj|d 6}d i|d6} t tj | nt }}}} WdQXdS)!Nzfoo.txtz cat - > {0:s}shellTrrzFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }rrr r r r zlassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py7)s {%(py7)s = %(py5)s.channel }) }r rrrz Hello World!rzkassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py7)s {%(py7)s = %(py5)s._stdin }) }eofzassert %(py11)s {%(py11)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py9)s {%(py9)s = %(py7)s {%(py7)s = %(py5)s._stdout }.channel }) }py11rrC%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.read }() } == %(py7)sfassert %(py9)s)r)r8r:)ensurerformatstrrrrrrrrrrr r!r"firer_stdinstop_stdoutopenreadr%)r&r tmpdirfoorr'r(r)r*r+r,r- @py_assert10 @py_format12r9 @py_format8r1r1r2test2s^-  u          rI)builtinsr_pytest.assertion.rewrite assertionrewriterpytestPLATFORMskipZ circuits.iorrr3rIr1r1r1r2s   circuits-3.1.0/tests/io/__pycache__/test_process.cpython-33-PYTEST.pyc0000644000014400001440000001305012414363411026476 0ustar prologicusers00000000000000 ?Tc@s{ddlZddljjZddlZejdkrIejdnddl m Z m Z ddZ ddZ dS( iNuwin32uUnsupported Platform(uProcessuwritec Cstddgj|}|j}d}||}|sdditj|d6dtjkswtj|rtj|ndd6tj|d 6tj|d 6}ttj |nd}}}|j |j}d }|j }|||}|sdd itj|d6dtjksItj|rXtj|ndd6tj|d 6dtjkstj|rtj|ndd6tj|d 6tj|d6} ttj | nd}}}}|j}d}|j }|||}|sdd itj|d6dtjks\tj|rktj|ndd6tj|d 6dtjkstj|rtj|ndd6tj|d 6tj|d6} ttj | nd}}}}|j j} d} | | k}|stjd|fd| | fitj| d6dtjkstj| rtj| ndd6} di| d6} ttj | nd}} dS(Nuechou Hello World!u registereduuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4ustartedulassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py7)s {%(py7)s = %(py5)s.channel }) }upy7upupy5upy9ustoppeds Hello World! u==u%(py0)s == %(py3)supy3usuassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uProcessuregisteruwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneustartuchannelustdoutugetvalueu_call_reprcompare(umanageruwatcherupu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_assert6u @py_assert8u @py_format10usu @py_assert2u @py_format4u @py_format6((u5/home/prologic/work/circuits/tests/io/test_process.pyutest sB  u      lutestcCs|jd}tdjt|gddj|}|j}d}||}|sdditj|d6dt j kstj |rtj|ndd 6tj|d 6tj|d 6}t tj |nd}}}|j|j}d }|j} ||| } | sdd itj|d6dt j ksjtj |rytj|ndd 6tj| d6dt j kstj |rtj|ndd6tj|d 6tj| d6} t tj | nd}}} } |jtd|j|j}d}|j} ||| } | s/dditj|d6dt j kstj |rtj|ndd 6tj| d6dt j kstj |rtj|ndd6tj|d 6tj| d6} t tj | nd}}} } |j|j}d}|j} | j} ||| } | sedditj| d6tj|d6dt j kstj |rtj|ndd 6tj| d6dt j kstj |r"tj|ndd6tj|d 6tj| d6} t tj | nd}}} } } |jd}|j}|}d} || k}|sltjd|fd|| fitj|d6dt j ks tj |rtj|ndd 6tj| d6tj|d 6}d i|d6} t tj | nd}}}} WdQXdS(!Nufoo.txtu cat - > {0:s}ushellu registereduuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4ustartedulassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py7)s {%(py7)s = %(py5)s.channel }) }upy7upupy5upy9u Hello World!uwriteukassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py7)s {%(py7)s = %(py5)s._stdin }) }ueofuassert %(py11)s {%(py11)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py9)s {%(py9)s = %(py7)s {%(py7)s = %(py5)s._stdout }.channel }) }upy11uru==uC%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.read }() } == %(py7)sufuassert %(py9)sT(u==(uC%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.read }() } == %(py7)suassert %(py9)s(uensureuProcessuformatustruTrueuregisteruwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneustartuchannelufireuwriteu_stdinustopu_stdoutuopenureadu_call_reprcompare(umanageruwatcherutmpdirufooupu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_assert6u @py_assert8u @py_format10u @py_assert10u @py_format12ufu @py_format8((u5/home/prologic/work/circuits/tests/io/test_process.pyutest2s^-  u          utest2(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuPLATFORMuskipu circuits.iouProcessuwriteutestutest2(((u5/home/prologic/work/circuits/tests/io/test_process.pyus   circuits-3.1.0/tests/io/__pycache__/test_notify.cpython-26-PYTEST.pyc0000644000014400001440000000436312407376151026350 0ustar prologicusers00000000000000 ?T>c@sddkZddkiiZddkZeidddkl Z ddk l Z l Z de fdYZ dZdS(iNt pyinotify(tNotify(t ComponentthandlertAppcBs,eZdZeddddZRS(cOs t|_dS(N(tFalsetcreated(tselftargstkwargs((s4/home/prologic/work/circuits/tests/io/test_notify.pytinit sRtchanneltnotifycOs t|_dS(N(tTrueR(RRR ((s4/home/prologic/work/circuits/tests/io/test_notify.pyRs(t__name__t __module__R RR(((s4/home/prologic/work/circuits/tests/io/test_notify.pyR s c Csti|}ti|}|id|it||id|id|i}|pmdhdti jpt i |ot i |ndd6t i |d6}t t i|nd}t|_|it||id|id|i}| }|pmd hdti jpt i |ot i |ndd6t i |d6}t t i|nd}}|i|id dS( Nt registeredshelloworld.txtRs+assert %(py2)s {%(py2)s = %(py0)s.created }tapptpy0tpy2shelloworld2.txts/assert not %(py2)s {%(py2)s = %(py0)s.created }t unregistered(RtregisterRtwaittadd_pathtstrtensureRt @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNoneRt remove_patht unregister( tmanagertwatcherttmpdirRR t @py_assert1t @py_format3t @py_assert3t @py_format4((s4/home/prologic/work/circuits/tests/io/test_notify.pyt test_notifys.    T    T  (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtpytestt importorskiptcircuits.io.notifyRtcircuitsRRRR+(((s4/home/prologic/work/circuits/tests/io/test_notify.pyts    circuits-3.1.0/tests/io/__pycache__/test_notify.cpython-34-PYTEST.pyc0000644000014400001440000000361012414363521026334 0ustar prologicusers00000000000000 ?T>@sddlZddljjZddlZejdddlm Z ddl m Z m Z Gddde Z ddZdS) NZ pyinotify)Notify) Componenthandlerc@s:eZdZddZedddddZdS) AppcOs d|_dS)NF)created)selfargskwargsr 4/home/prologic/work/circuits/tests/io/test_notify.pyinit szApp.initrchannelnotifycOs d|_dS)NT)r)rrr r r r rsz App.createdN)__name__ __module__ __qualname__r rrr r r r r s  rc Cstj|}tj|}|jd|jt||jd|jd|j}|sdditj |d6dt j kstj |rtj |ndd6}t tj|nt}d |_|jt||jd |jd|j}| }|sdd itj |d6dt j ksgtj |rvtj |ndd6}t tj|nt}}|j|jd dS) N registeredzhelloworld.txtrz+assert %(py2)s {%(py2)s = %(py0)s.created }py2apppy0Fzhelloworld2.txtz/assert not %(py2)s {%(py2)s = %(py0)s.created } unregistered)rregisterrwaitZadd_pathstrensurer @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNoneZ remove_path unregister) managerwatchertmpdirrr @py_assert1 @py_format3 @py_assert3 @py_format4r r r test_notifys.    U    U  r,)builtinsr_pytest.assertion.rewrite assertionrewriterpytest importorskipZcircuits.io.notifyrcircuitsrrrr,r r r r s    circuits-3.1.0/tests/io/__pycache__/test_file.cpython-32-PYTEST.pyc0000644000014400001440000002251512414363276025755 0ustar prologicusers00000000000000l ?T@c@sddlZddljjZddlZejdkrIejdnddl m Z ddl m Z ddl mZddlmZmZGdd eZd Zd ZdS( iNuwin32uUnsupported Platform(uBytesIO(uFile(u Component(uwriteuclosecBs2|EeZdZdZdZdZdS(cOs=t||j||_d|_d|_t|_dS(NF(uFileuregisterufileuFalseueofucloseduBytesIOubuffer(uselfuargsukwargs((u2/home/prologic/work/circuits/tests/io/test_file.pyuinits  cCs|jj|dS(N(ubufferuwrite(uselfudata((u2/home/prologic/work/circuits/tests/io/test_file.pyureadscCs d|_dS(NT(uTrueueof(uself((u2/home/prologic/work/circuits/tests/io/test_file.pyueofscCs d|_dS(NT(uTrueuclosed(uself((u2/home/prologic/work/circuits/tests/io/test_file.pyuclosedsN(u__name__u __module__uinitureadueofuclosed(u __locals__((u2/home/prologic/work/circuits/tests/io/test_file.pyuFileApp s    uFileAppcCst|jd}t|d}|jdWdQXt|d}t|j|}|j}d}|j} | j} ||| } | sxddit j | d6t j |d 6d t j kst j |rt j |nd d 6t j | d 6d t j ks&t j |r5t j |nd d6t j |d6t j | d6} tt j| nd}}} } } |j}d}|j} | j} ||| } | sddit j | d6t j |d 6d t j kst j |rt j |nd d 6t j | d 6d t j ksVt j |ret j |nd d6t j |d6t j | d6} tt j| nd}}} } } |j}|s:ddit j |d 6d t j kst j |rt j |nd d 6} tt j| nd}|jt|jj|j}d}|j} | j} ||| } | ssddit j | d6t j |d 6d t j kst j |rt j |nd d 6t j | d 6d t j ks!t j |r0t j |nd d6t j |d6t j | d6} tt j| nd}}} } } |j}|sddit j |d 6d t j kst j |rt j |nd d 6} tt j| nd}|j|j}d}||}|sddit j |d 6d t j ksqt j |rt j |nd d 6t j |d6t j |d6}tt j|nd}}}|jj}d}||k}|st jd|fd||fit j |d6dt j ksJt j |rYt j |ndd 6}d i|d6}tt j|nd}}dS(!Nuhelloworld.txtuwu Hello World!uruopeneduuassert %(py11)s {%(py11)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py9)s {%(py9)s = %(py7)s {%(py7)s = %(py5)s.file }.channel }) }upy11upy2uwatcherupy0upy7uappupy5upy4upy9ueofu'assert %(py2)s {%(py2)s = %(py0)s.eof }uclosedu*assert %(py2)s {%(py2)s = %(py0)s.closed }u unregistereduFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy6s Hello World!u==u%(py0)s == %(py3)supy3usuassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(ustruensureuopenuwriteuFileAppuregisteruwaitufileuchannelu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneueofufireucloseuclosedu unregisterubufferugetvalueu_call_reprcompare(umanageruwatcherutmpdirufilenameufufileobjuappu @py_assert1u @py_assert3u @py_assert6u @py_assert8u @py_assert10u @py_format12u @py_format3u @py_assert5u @py_format7usu @py_assert2u @py_format4u @py_format6((u2/home/prologic/work/circuits/tests/io/test_file.pyutest_open_fileobj sv     U   U   u lcCs t|jd}t|dj|}|j}d}|j}|j}|||} | sGdditj| d6tj|d6dt j kstj |rtj|ndd 6tj|d 6d t j kstj |rtj|nd d 6tj|d 6tj|d6} t tj | nd}}}}} |jtd|jj|j}d}|j}|j}|||} | sdditj| d6tj|d6dt j kstj |r tj|ndd 6tj|d 6d t j ksAtj |rPtj|nd d 6tj|d 6tj|d6} t tj | nd}}}}} |jt|jj|j}d}|j}|j}|||} | sdditj| d6tj|d6dt j ksCtj |rRtj|ndd 6tj|d 6d t j kstj |rtj|nd d 6tj|d 6tj|d6} t tj | nd}}}}} |j}|sndditj|d6d t j ks<tj |rKtj|nd d 6} t tj | nd}|j|j}d}||} | s,dditj|d6dt j kstj |rtj|ndd 6tj| d6tj|d 6} t tj | nd}}} t|dj|}|j}d}|j}|j}|||} | sldditj| d6tj|d6dt j kstj |rtj|ndd 6tj|d 6d t j kstj |r)tj|nd d 6tj|d 6tj|d6} t tj | nd}}}}} |j}d}|j}|j}|||} | sdditj| d6tj|d6dt j kstj |rtj|ndd 6tj|d 6d t j ksJtj |rYtj|nd d 6tj|d 6tj|d6} t tj | nd}}}}} |j}|s.dditj|d6d t j kstj |r tj|nd d 6} t tj | nd}|jt|jj|j}d}|j}|j}|||} | sg dditj| d6tj|d6dt j kstj |rtj|ndd 6tj|d 6d t j ks tj |r$ tj|nd d 6tj|d 6tj|d6} t tj | nd}}}}} |j}|s dditj|d6d t j ks tj |r tj|nd d 6} t tj | nd}|j|j}d}||} | s dditj|d6dt j kse tj |rt tj|ndd 6tj| d6tj|d 6} t tj | nd}}} |jj}d}||k}|s tjd|fd||fitj|d6dt j ks> tj |rM tj|ndd 6}d i|d 6}t tj |nd}}dS(!Nuhelloworld.txtuwuopeneduuassert %(py11)s {%(py11)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py9)s {%(py9)s = %(py7)s {%(py7)s = %(py5)s.file }.channel }) }upy11upy2uwatcherupy0upy7uappupy5upy4upy9s Hello World!uwriteuclosedu*assert %(py2)s {%(py2)s = %(py0)s.closed }u unregistereduFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy6urueofu'assert %(py2)s {%(py2)s = %(py0)s.eof }u==u%(py0)s == %(py3)supy3usuassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(ustruensureuFileAppuregisteruwaitufileuchannelu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneufireuwriteucloseuclosedu unregisterueofubufferugetvalueu_call_reprcompare(umanageruwatcherutmpdirufilenameuappu @py_assert1u @py_assert3u @py_assert6u @py_assert8u @py_assert10u @py_format12u @py_format3u @py_assert5u @py_format7usu @py_assert2u @py_format4u @py_format6((u2/home/prologic/work/circuits/tests/io/test_file.pyutest_read_write8s       U   u     U   U   u l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuPLATFORMuskipuiouBytesIOu circuits.iouFileucircuitsu Componentucircuits.io.eventsuwriteucloseuFileApputest_open_fileobjutest_read_write(((u2/home/prologic/work/circuits/tests/io/test_file.pyus   circuits-3.1.0/tests/io/__pycache__/test_file.cpython-34-PYTEST.pyc0000644000014400001440000001767212414363521025760 0ustar prologicusers00000000000000 ?T@@sddlZddljjZddlZejdkrIejdnddl m Z ddl m Z ddl mZddlmZmZGdd d eZd d Zd d ZdS)Nwin32zUnsupported Platform)BytesIO)File) Component)writeclosec@s@eZdZddZddZddZddZd S) FileAppcOs=t||j||_d|_d|_t|_dS)NF)rregisterfileeofclosedrbuffer)selfargskwargsr2/home/prologic/work/circuits/tests/io/test_file.pyinits  z FileApp.initcCs|jj|dS)N)r r)rdatarrrreadsz FileApp.readcCs d|_dS)NT)r )rrrrr sz FileApp.eofcCs d|_dS)NT)r )rrrrr szFileApp.closedN)__name__ __module__ __qualname__rrr r rrrrr s    rcCst|jd}t|d}|jdWdQXt|d}t|j|}|j}d}|j} | j} ||| } | sxddit j | d6t j |d 6t j | d 6d t j kst j |rt j |nd d 6t j |d 6t j | d6dt j ksFt j |rUt j |ndd6} tt j| nt}}} } } |j}d}|j} | j} ||| } | sddit j | d6t j |d 6t j | d 6d t j kst j |r.t j |nd d 6t j |d 6t j | d6dt j ksvt j |rt j |ndd6} tt j| nt}}} } } |j}|s:ddit j |d 6d t j kst j |rt j |nd d6} tt j| nt}|jt|jj|j}d}|j} | j} ||| } | ssddit j | d6t j |d 6t j | d 6d t j kst j |rt j |nd d 6t j |d 6t j | d6dt j ksAt j |rPt j |ndd6} tt j| nt}}} } } |j}|sddit j |d 6d t j kst j |rt j |nd d6} tt j| nt}|j|j}d}||}|sddit j |d 6t j |d6dt j kst j |rt j |ndd6t j |d 6}tt j|nt}}}|jj}d}||k}|st jd|fd||fit j |d6dt j ksJt j |rYt j |ndd6}d i|d 6}tt j|nt}}dS)!Nzhelloworld.txtwz Hello World!ropenedzassert %(py11)s {%(py11)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py9)s {%(py9)s = %(py7)s {%(py7)s = %(py5)s.file }.channel }) }py9py2py7apppy5py4py11watcherpy0r z'assert %(py2)s {%(py2)s = %(py0)s.eof }r z*assert %(py2)s {%(py2)s = %(py0)s.closed } unregisteredzFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }py6s Hello World!==%(py0)s == %(py3)spy3sassert %(py5)s)r()r)r,)strensureopenrrr waitr channel @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNoner firerr unregisterr getvalue_call_reprcompare)managerr$tmpdirfilenameffileobjr @py_assert1 @py_assert3 @py_assert6 @py_assert8 @py_assert10 @py_format12 @py_format3 @py_assert5 @py_format7r+ @py_assert2 @py_format4 @py_format6rrrtest_open_fileobj sv     U   U   u lrOcCs t|jd}t|dj|}|j}d}|j}|j}|||} | sGdditj|d6tj|d6tj|d6d t j kstj |rtj|nd d 6tj|d 6tj| d 6d t j kstj |r$tj|nd d6} t tj | nt}}}}} |jtd|jj|j}d}|j}|j}|||} | sdditj|d6tj|d6tj|d6d t j ks tj |rtj|nd d 6tj|d 6tj| d 6d t j ksatj |rptj|nd d6} t tj | nt}}}}} |jt|jj|j}d}|j}|j}|||} | sdditj|d6tj|d6tj|d6d t j ksStj |rbtj|nd d 6tj|d 6tj| d 6d t j kstj |rtj|nd d6} t tj | nt}}}}} |j}|sndditj|d6d t j ks<tj |rKtj|nd d6} t tj | nt}|j|j}d}||} | s,dditj|d6tj| d6d t j kstj |rtj|nd d6tj|d 6} t tj | nt}}} t|dj|}|j}d}|j}|j}|||} | sldditj|d6tj|d6tj|d6d t j kstj |rtj|nd d 6tj|d 6tj| d 6d t j ks:tj |rItj|nd d6} t tj | nt}}}}} |j}d}|j}|j}|||} | sdditj|d6tj|d6tj|d6d t j kstj |r"tj|nd d 6tj|d 6tj| d 6d t j ksjtj |rytj|nd d6} t tj | nt}}}}} |j}|s.dditj|d6d t j kstj |r tj|nd d6} t tj | nt}|jt|jj|j}d}|j}|j}|||} | sg dditj|d6tj|d6tj|d6d t j kstj |rtj|nd d 6tj|d 6tj| d 6d t j ks5 tj |rD tj|nd d6} t tj | nt}}}}} |j}|s dditj|d6d t j ks tj |r tj|nd d6} t tj | nt}|j|j}d}||} | s dditj|d6tj| d6d t j ksu tj |r tj|nd d6tj|d 6} t tj | nt}}} |jj}d}||k}|s tjd|fd||fitj|d6dt j ks> tj |rM tj|ndd6}d i|d 6}t tj |nt}}dS)!Nzhelloworld.txtrrrzassert %(py11)s {%(py11)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py9)s {%(py9)s = %(py7)s {%(py7)s = %(py5)s.file }.channel }) }rrrr r!r"r#r$r%s Hello World!rr z*assert %(py2)s {%(py2)s = %(py0)s.closed }r&zFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }r'rr z'assert %(py2)s {%(py2)s = %(py0)s.eof }r(%(py0)s == %(py3)sr*r+assert %(py5)s)r()rPrQ)r-r.rr r0r r1r2r3r4r5r6r7r8r9r:rrr r;r r r<r=)r>r$r?r@r rCrDrErFrGrHrIrJrKr+rLrMrNrrrtest_read_write8s       U   u     U   U   u lrR)builtinsr4_pytest.assertion.rewrite assertionrewriter2pytestPLATFORMskipiorZ circuits.iorcircuitsrZcircuits.io.eventsrrrrOrRrrrrs   circuits-3.1.0/tests/io/__pycache__/test_file.cpython-26-PYTEST.pyc0000644000014400001440000002124612407376151025756 0ustar prologicusers00000000000000 ?T@c @sddkZddkiiZddkZeidjoeidnddk l Z ddk l Z ddk lZddklZlZdefd YZd Zd ZdS( iNtwin32sUnsupported Platform(tBytesIO(tFile(t Component(twritetclosetFileAppcBs,eZdZdZdZdZRS(cOs=t||i||_t|_t|_t|_dS(N(RtregistertfiletFalseteoftclosedRtbuffer(tselftargstkwargs((s2/home/prologic/work/circuits/tests/io/test_file.pytinits  cCs|ii|dS(N(R R(R tdata((s2/home/prologic/work/circuits/tests/io/test_file.pytreadscCs t|_dS(N(tTrueR (R ((s2/home/prologic/work/circuits/tests/io/test_file.pyR scCs t|_dS(N(RR (R ((s2/home/prologic/work/circuits/tests/io/test_file.pyR s(t__name__t __module__RRR R (((s2/home/prologic/work/circuits/tests/io/test_file.pyR s   c Cst|id}t|dii}z|~}|idWdQXt|d}t|i|}|i}d} |i } | i } || | } | pdht i | d6dt ijpt i|ot i |ndd 6t i |d 6d t ijpt i|ot i |nd d 6t i | d 6t i | d6t i | d6} tt i| nd}} } } } |i}d} |i } | i } || | } | pdht i | d6dt ijpt i|ot i |ndd 6t i |d 6d t ijpt i|ot i |nd d 6t i | d 6t i | d6t i | d6} tt i| nd}} } } } |i}|pmdhd t ijpt i|ot i |nd d 6t i |d 6}tt i|nd}|it|i i |i}d} |i } | i } || | } | pdht i | d6dt ijpt i|ot i |ndd 6t i |d 6d t ijpt i|ot i |nd d 6t i | d 6t i | d6t i | d6} tt i| nd}} } } } |i}|pmdhd t ijpt i|ot i |nd d 6t i |d 6}tt i|nd}|i|i}d} || }|pdhdt ijpt i|ot i |ndd 6t i |d 6t i | d 6t i |d6}tt i|nd}} }|ii}d}||j}|pt id|fd||fhdt ijpt i|ot i |ndd 6t i |d6}dh|d 6}tt i|nd}}dS(Nshelloworld.txttws Hello World!trtopenedsassert %(py11)s {%(py11)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py9)s {%(py9)s = %(py7)s {%(py7)s = %(py5)s.file }.channel }) }tpy11twatchertpy0tpy2tapptpy5tpy4tpy7tpy9R s'assert %(py2)s {%(py2)s = %(py0)s.eof }R s*assert %(py2)s {%(py2)s = %(py0)s.closed }t unregisteredsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }tpy6s==s%(py0)s == %(py3)ststpy3sassert %(py5)s(s==(s%(py0)s == %(py3)s(tstrtensuretopent__exit__t __enter__RRRtwaitRtchannelt @pytest_art _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNoneR tfireRR t unregisterR tgetvaluet_call_reprcompare(tmanagerRttmpdirtfilenamet_[1]tftfileobjRt @py_assert1t @py_assert3t @py_assert6t @py_assert8t @py_assert10t @py_format12t @py_format3t @py_assert5t @py_format7R$t @py_assert2t @py_format4t @py_format6((s2/home/prologic/work/circuits/tests/io/test_file.pyttest_open_fileobj sv&     T   T   t ocCs t|id}t|di|}|i}d}|i}|i}|||} | pdhti| d6dt i jpti |oti|ndd6ti|d6d t i jpti |oti|nd d 6ti|d 6ti|d 6ti|d 6} t ti | nd}}}}} |itd|ii|i}d}|i}|i}|||} | pdhti| d6dt i jpti |oti|ndd6ti|d6d t i jpti |oti|nd d 6ti|d 6ti|d 6ti|d 6} t ti | nd}}}}} |it|ii|i}d}|i}|i}|||} | pdhti| d6dt i jpti |oti|ndd6ti|d6d t i jpti |oti|nd d 6ti|d 6ti|d 6ti|d 6} t ti | nd}}}}} |i}|pmdhd t i jpti |oti|nd d6ti|d6} t ti | nd}|i|i}d}||} | pdhdt i jpti |oti|ndd6ti|d6ti|d 6ti| d6} t ti | nd}}} t|di|}|i}d}|i}|i}|||} | pdhti| d6dt i jpti |oti|ndd6ti|d6d t i jpti |oti|nd d 6ti|d 6ti|d 6ti|d 6} t ti | nd}}}}} |i}d}|i}|i}|||} | pdhti| d6dt i jpti |oti|ndd6ti|d6d t i jpti |oti|nd d 6ti|d 6ti|d 6ti|d 6} t ti | nd}}}}} |i}|pmdhd t i jpti |oti|nd d6ti|d6} t ti | nd}|it|ii|i}d}|i}|i}|||} | pdhti| d6dt i jpti |oti|ndd6ti|d6d t i jpti |oti|nd d 6ti|d 6ti|d 6ti|d 6} t ti | nd}}}}} |i}|pmdhd t i jpti |oti|nd d6ti|d6} t ti | nd}|i|i}d}||} | pdhdt i jpti |oti|ndd6ti|d6ti|d 6ti| d6} t ti | nd}}} |ii}d}||j}|ptid|fd||fhdt i jpti |oti|ndd6ti|d6}dh|d 6}t ti |nd}}dS(Nshelloworld.txtRRsassert %(py11)s {%(py11)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py9)s {%(py9)s = %(py7)s {%(py7)s = %(py5)s.file }.channel }) }RRRRRRRR R!s Hello World!RR s*assert %(py2)s {%(py2)s = %(py0)s.closed }R"sFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }R#RR s'assert %(py2)s {%(py2)s = %(py0)s.eof }s==s%(py0)s == %(py3)sR$R%sassert %(py5)s(s==(s%(py0)s == %(py3)s(R&R'RRR+RR,R-R.R/R0R1R2R3R4R5RRR R6R R R7R8(R9RR:R;RR?R@RARBRCRDRERFRGR$RHRIRJ((s2/home/prologic/work/circuits/tests/io/test_file.pyttest_read_write8s       T   t     T   T   t o(t __builtin__R/t_pytest.assertion.rewritet assertiontrewriteR-tpytesttPLATFORMtskiptioRt circuits.ioRtcircuitsRtcircuits.io.eventsRRRRKRL(((s2/home/prologic/work/circuits/tests/io/test_file.pyts   circuits-3.1.0/tests/io/__pycache__/test_process.cpython-26-PYTEST.pyc0000644000014400001440000001231412407376151026511 0ustar prologicusers00000000000000 ?Tc@swddkZddkiiZddkZeidjoeidnddk l Z l Z dZ dZ dS(iNtwin32sUnsupported Platform(tProcesstwritecCstddgi|}|i}d}||}|pdhdtijpti|oti|ndd6ti|d6ti|d6ti|d 6}tti |nd}}}|i |i}d }|i }|||}|pd hdtijpti|oti|ndd6ti|d6d tijpti|oti|nd d 6ti|d6ti|d6ti|d6} tti | nd}}}}|i}d}|i }|||}|pd hdtijpti|oti|ndd6ti|d6d tijpti|oti|nd d 6ti|d6ti|d6ti|d6} tti | nd}}}}|i i} d} | | j}|ptid|fd| | fhdtijpti| oti| ndd6ti| d6} dh| d 6} tti | nd}} dS(Ntechos Hello World!t registeredsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }twatchertpy0tpy2tpy4tpy6tstartedslassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py7)s {%(py7)s = %(py5)s.channel }) }tptpy5tpy7tpy9tstoppeds Hello World! s==s%(py0)s == %(py3)ststpy3sassert %(py5)s(s==(s%(py0)s == %(py3)s(Rtregistertwaitt @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetstarttchanneltstdouttgetvaluet_call_reprcompare(tmanagerRR t @py_assert1t @py_assert3t @py_assert5t @py_format7t @py_assert6t @py_assert8t @py_format10Rt @py_assert2t @py_format4t @py_format6((s5/home/prologic/work/circuits/tests/io/test_process.pyttest sB  t      oc Cs|id}tdit|gdti|}|i}d}||}|pdhdtijpt i |ot i |ndd6t i |d6t i |d 6t i |d 6}t t i |nd}}}|i|i}d }|i} ||| } | pd hdtijpt i |ot i |ndd6t i |d6d tijpt i |ot i |nd d6t i |d 6t i | d6t i | d6} t t i | nd}}} } |itd|i|i}d}|i} ||| } | pdhdtijpt i |ot i |ndd6t i |d6d tijpt i |ot i |nd d6t i |d 6t i | d6t i | d6} t t i | nd}}} } |i|i}d}|i} | i} ||| } | pdht i | d6dtijpt i |ot i |ndd6t i |d6d tijpt i |ot i |nd d6t i |d 6t i | d6t i | d6} t t i | nd}}} } } |idii}z|~}|i}|}d} || j}|pt id|fd|| fhdtijpt i |ot i |ndd6t i |d6t i |d 6t i | d6}dh|d6} t t i | nd}}}} WdQXdS(Nsfoo.txts cat - > {0:s}tshellRsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRRR R slassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py7)s {%(py7)s = %(py5)s.channel }) }R R R Rs Hello World!Rskassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py7)s {%(py7)s = %(py5)s._stdin }) }teofsassert %(py11)s {%(py11)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py9)s {%(py9)s = %(py7)s {%(py7)s = %(py5)s._stdout }.channel }) }tpy11trs==sC%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.read }() } == %(py7)stfsassert %(py9)s(s==(sC%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.read }() } == %(py7)s(tensureRtformattstrtTrueRRRRRRRRRRRRtfireRt_stdintstopt_stdouttopent__exit__t __enter__treadR (R!RttmpdirtfooR R"R#R$R%R&R'R(t @py_assert10t @py_format12t_[1]R1t @py_format8((s5/home/prologic/work/circuits/tests/io/test_process.pyttest2s^-  t        &  (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtpytesttPLATFORMtskipt circuits.ioRRR,RD(((s5/home/prologic/work/circuits/tests/io/test_process.pyts   circuits-3.1.0/tests/io/__pycache__/test_process.cpython-27-PYTEST.pyc0000644000014400001440000001224212414363102026500 0ustar prologicusers00000000000000 ?Tc@suddlZddljjZddlZejdkrIejdnddl m Z m Z dZ dZ dS(iNtwin32sUnsupported Platform(tProcesstwritecCstddgj|}|j}d}||}|sdditj|d6dtjkswtj|rtj|ndd6tj|d 6tj|d 6}ttj |nd}}}|j |j}d }|j }|||}|sdd itj|d6dtjksItj|rXtj|ndd6tj|d 6dtjkstj|rtj|ndd6tj|d 6tj|d6} ttj | nd}}}}|j}d}|j }|||}|sdd itj|d6dtjks\tj|rktj|ndd6tj|d 6dtjkstj|rtj|ndd6tj|d 6tj|d6} ttj | nd}}}}|j j} d} | | k}|stjd|fd| | fitj| d6dtjkstj| rtj| ndd6} di| d6} ttj | nd}} dS(Ntechos Hello World!t registeredtsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }tpy2twatchertpy0tpy6tpy4tstartedslassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py7)s {%(py7)s = %(py5)s.channel }) }tpy7tptpy5tpy9tstoppeds Hello World! s==s%(py0)s == %(py3)stpy3tssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(Rtregistertwaitt @pytest_art _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonetstarttchanneltstdouttgetvaluet_call_reprcompare(tmanagerRR t @py_assert1t @py_assert3t @py_assert5t @py_format7t @py_assert6t @py_assert8t @py_format10Rt @py_assert2t @py_format4t @py_format6((s5/home/prologic/work/circuits/tests/io/test_process.pyttest sB  u      lc Cs|jd}tdjt|gdtj|}|j}d}||}|sdditj|d6dt j kstj |rtj|ndd 6tj|d 6tj|d 6}t tj |nd}}}|j|j}d }|j} ||| } | sdd itj|d6dt j ksjtj |rytj|ndd 6tj| d6dt j kstj |rtj|ndd6tj|d 6tj| d6} t tj | nd}}} } |jtd|j|j}d}|j} ||| } | s/dditj|d6dt j kstj |rtj|ndd 6tj| d6dt j kstj |rtj|ndd6tj|d 6tj| d6} t tj | nd}}} } |j|j}d}|j} | j} ||| } | sedditj| d6tj|d6dt j kstj |rtj|ndd 6tj| d6dt j kstj |r"tj|ndd6tj|d 6tj| d6} t tj | nd}}} } } |jd}|j}|}d} || k}|sltjd|fd|| fitj|d6dt j ks tj |rtj|ndd 6tj| d6tj|d 6}di|d6} t tj | nd}}}} WdQXdS( Nsfoo.txts cat - > {0:s}tshellRRsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRR R R slassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py7)s {%(py7)s = %(py5)s.channel }) }R R RRs Hello World!Rskassert %(py9)s {%(py9)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py7)s {%(py7)s = %(py5)s._stdin }) }teofsassert %(py11)s {%(py11)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py9)s {%(py9)s = %(py7)s {%(py7)s = %(py5)s._stdout }.channel }) }tpy11trs==sC%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.read }() } == %(py7)stfsassert %(py9)s(s==(sC%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.read }() } == %(py7)ssassert %(py9)s(tensureRtformattstrtTrueRRRRRRRRRRRRtfireRt_stdintstopt_stdouttopentreadR!(R"RttmpdirtfooR R#R$R%R&R'R(R)t @py_assert10t @py_format12R2t @py_format8((s5/home/prologic/work/circuits/tests/io/test_process.pyttest2s^-  u          (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtpytesttPLATFORMtskipt circuits.ioRRR-RB(((s5/home/prologic/work/circuits/tests/io/test_process.pyts   circuits-3.1.0/tests/io/__pycache__/test_file.cpython-27-PYTEST.pyc0000644000014400001440000002114612414363102025744 0ustar prologicusers00000000000000 ?T@c@sddlZddljjZddlZejdkrIejdnddl m Z ddl m Z ddl mZddlmZmZdefd YZd Zd ZdS( iNtwin32sUnsupported Platform(tBytesIO(tFile(t Component(twritetclosetFileAppcBs,eZdZdZdZdZRS(cOs=t||j||_t|_t|_t|_dS(N(RtregistertfiletFalseteoftclosedRtbuffer(tselftargstkwargs((s2/home/prologic/work/circuits/tests/io/test_file.pytinits  cCs|jj|dS(N(R R(R tdata((s2/home/prologic/work/circuits/tests/io/test_file.pytreadscCs t|_dS(N(tTrueR (R ((s2/home/prologic/work/circuits/tests/io/test_file.pyR scCs t|_dS(N(RR (R ((s2/home/prologic/work/circuits/tests/io/test_file.pyR s(t__name__t __module__RRR R (((s2/home/prologic/work/circuits/tests/io/test_file.pyR s   cCst|jd}t|d}|jdWdQXt|d}t|j|}|j}d}|j} | j} ||| } | sxddit j | d6t j |d 6d t j kst j |rt j |nd d 6t j | d 6d t j ks&t j |r5t j |nd d6t j |d6t j | d6} tt j| nd}}} } } |j}d}|j} | j} ||| } | sddit j | d6t j |d 6d t j kst j |rt j |nd d 6t j | d 6d t j ksVt j |ret j |nd d6t j |d6t j | d6} tt j| nd}}} } } |j}|s:ddit j |d 6d t j kst j |rt j |nd d 6} tt j| nd}|jt|jj|j}d}|j} | j} ||| } | ssddit j | d6t j |d 6d t j kst j |rt j |nd d 6t j | d 6d t j ks!t j |r0t j |nd d6t j |d6t j | d6} tt j| nd}}} } } |j}|sddit j |d 6d t j kst j |rt j |nd d 6} tt j| nd}|j|j}d}||}|sddit j |d 6d t j ksqt j |rt j |nd d 6t j |d6t j |d6}tt j|nd}}}|jj}d}||k}|st jd|fd||fit j |d6dt j ksJt j |rYt j |ndd 6}di|d6}tt j|nd}}dS( Nshelloworld.txttws Hello World!trtopenedtsassert %(py11)s {%(py11)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py9)s {%(py9)s = %(py7)s {%(py7)s = %(py5)s.file }.channel }) }tpy11tpy2twatchertpy0tpy7tapptpy5tpy4tpy9R s'assert %(py2)s {%(py2)s = %(py0)s.eof }R s*assert %(py2)s {%(py2)s = %(py0)s.closed }t unregisteredsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }tpy6s==s%(py0)s == %(py3)stpy3tssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(tstrtensuretopenRRRtwaitRtchannelt @pytest_art _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNoneR tfireRR t unregisterR tgetvaluet_call_reprcompare(tmanagerRttmpdirtfilenametftfileobjRt @py_assert1t @py_assert3t @py_assert6t @py_assert8t @py_assert10t @py_format12t @py_format3t @py_assert5t @py_format7R&t @py_assert2t @py_format4t @py_format6((s2/home/prologic/work/circuits/tests/io/test_file.pyttest_open_fileobj sv     U   U   u lcCs t|jd}t|dj|}|j}d}|j}|j}|||} | sGdditj| d6tj|d6dt j kstj |rtj|ndd 6tj|d 6d t j kstj |rtj|nd d 6tj|d 6tj|d6} t tj | nd}}}}} |jtd|jj|j}d}|j}|j}|||} | sdditj| d6tj|d6dt j kstj |r tj|ndd 6tj|d 6d t j ksAtj |rPtj|nd d 6tj|d 6tj|d6} t tj | nd}}}}} |jt|jj|j}d}|j}|j}|||} | sdditj| d6tj|d6dt j ksCtj |rRtj|ndd 6tj|d 6d t j kstj |rtj|nd d 6tj|d 6tj|d6} t tj | nd}}}}} |j}|sndditj|d6d t j ks<tj |rKtj|nd d 6} t tj | nd}|j|j}d}||} | s,dditj|d6dt j kstj |rtj|ndd 6tj| d6tj|d 6} t tj | nd}}} t|dj|}|j}d}|j}|j}|||} | sldditj| d6tj|d6dt j kstj |rtj|ndd 6tj|d 6d t j kstj |r)tj|nd d 6tj|d 6tj|d6} t tj | nd}}}}} |j}d}|j}|j}|||} | sdditj| d6tj|d6dt j kstj |rtj|ndd 6tj|d 6d t j ksJtj |rYtj|nd d 6tj|d 6tj|d6} t tj | nd}}}}} |j}|s.dditj|d6d t j kstj |r tj|nd d 6} t tj | nd}|jt|jj|j}d}|j}|j}|||} | sg dditj| d6tj|d6dt j kstj |rtj|ndd 6tj|d 6d t j ks tj |r$ tj|nd d 6tj|d 6tj|d6} t tj | nd}}}}} |j}|s dditj|d6d t j ks tj |r tj|nd d 6} t tj | nd}|j|j}d}||} | s dditj|d6dt j kse tj |rt tj|ndd 6tj| d6tj|d 6} t tj | nd}}} |jj}d}||k}|s tjd|fd||fitj|d6dt j ks> tj |rM tj|ndd 6}d i|d 6}t tj |nd}}dS(!Nshelloworld.txtRRRsassert %(py11)s {%(py11)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, %(py9)s {%(py9)s = %(py7)s {%(py7)s = %(py5)s.file }.channel }) }RRRRRRR R!R"s Hello World!RR s*assert %(py2)s {%(py2)s = %(py0)s.closed }R#sFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }R$RR s'assert %(py2)s {%(py2)s = %(py0)s.eof }s==s%(py0)s == %(py3)sR%R&sassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(R'R(RRR*RR+R,R-R.R/R0R1R2R3R4RRR R5R R R6R7(R8RR9R:RR=R>R?R@RARBRCRDRER&RFRGRH((s2/home/prologic/work/circuits/tests/io/test_file.pyttest_read_write8s       U   u     U   U   u l(t __builtin__R.t_pytest.assertion.rewritet assertiontrewriteR,tpytesttPLATFORMtskiptioRt circuits.ioRtcircuitsRtcircuits.io.eventsRRRRIRJ(((s2/home/prologic/work/circuits/tests/io/test_file.pyts   circuits-3.1.0/tests/io/__pycache__/test_notify.cpython-27-PYTEST.pyc0000644000014400001440000000436612414363102026342 0ustar prologicusers00000000000000 ?T>c@sddlZddljjZddlZejdddlm Z ddl m Z m Z de fdYZ dZdS(iNt pyinotify(tNotify(t ComponentthandlertAppcBs,eZdZeddddZRS(cOs t|_dS(N(tFalsetcreated(tselftargstkwargs((s4/home/prologic/work/circuits/tests/io/test_notify.pytinit sRtchanneltnotifycOs t|_dS(N(tTrueR(RRR ((s4/home/prologic/work/circuits/tests/io/test_notify.pyRs(t__name__t __module__R RR(((s4/home/prologic/work/circuits/tests/io/test_notify.pyR s c Cstj|}tj|}|jd|jt||jd|jd|j}|sdditj |d6dt j kstj |rtj |ndd6}t tj|nd}t|_|jt||jd |jd|j}| }|sdd itj |d6dt j ksgtj |rvtj |ndd6}t tj|nd}}|j|jd dS( Nt registeredshelloworld.txtRts+assert %(py2)s {%(py2)s = %(py0)s.created }tpy2tapptpy0shelloworld2.txts/assert not %(py2)s {%(py2)s = %(py0)s.created }t unregistered(RtregisterRtwaittadd_pathtstrtensureRt @pytest_art _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNoneRt remove_patht unregister( tmanagertwatcherttmpdirRR t @py_assert1t @py_format3t @py_assert3t @py_format4((s4/home/prologic/work/circuits/tests/io/test_notify.pyt test_notifys.    U    U  (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtpytestt importorskiptcircuits.io.notifyRtcircuitsRRRR,(((s4/home/prologic/work/circuits/tests/io/test_notify.pyts    circuits-3.1.0/tests/io/test_notify.py0000644000014400001440000000147612402037676021042 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest pytest.importorskip("pyinotify") from circuits.io.notify import Notify from circuits import Component, handler class App(Component): def init(self, *args, **kwargs): self.created = False @handler('created', channel='notify') def created(self, *args, **kwargs): self.created = True def test_notify(manager, watcher, tmpdir): app = App().register(manager) notify = Notify().register(app) watcher.wait("registered") notify.add_path(str(tmpdir)) tmpdir.ensure("helloworld.txt") watcher.wait("created") assert app.created app.created = False notify.remove_path(str(tmpdir)) tmpdir.ensure("helloworld2.txt") watcher.wait("created") assert not app.created app.unregister() watcher.wait("unregistered") circuits-3.1.0/tests/io/test_process.py0000644000014400001440000000164012402037676021201 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest if pytest.PLATFORM == "win32": pytest.skip("Unsupported Platform") from circuits.io import Process, write def test(manager, watcher): p = Process(["echo", "Hello World!"]).register(manager) assert watcher.wait("registered") p.start() assert watcher.wait("started", p.channel) assert watcher.wait("stopped", p.channel) s = p.stdout.getvalue() assert s == b"Hello World!\n" def test2(manager, watcher, tmpdir): foo = tmpdir.ensure("foo.txt") p = Process(["cat - > {0:s}".format(str(foo))], shell=True).register(manager) assert watcher.wait("registered") p.start() assert watcher.wait("started", p.channel) p.fire(write("Hello World!"), p._stdin) assert watcher.wait("write", p._stdin) p.stop() assert watcher.wait("eof", p._stdout.channel) with foo.open("r") as f: assert f.read() == "Hello World!" circuits-3.1.0/tests/io/test_file.py0000644000014400001440000000410012402037676020434 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest if pytest.PLATFORM == "win32": pytest.skip("Unsupported Platform") from io import BytesIO from circuits.io import File from circuits import Component from circuits.io.events import write, close class FileApp(Component): def init(self, *args, **kwargs): self.file = File(*args, **kwargs).register(self) self.eof = False self.closed = False self.buffer = BytesIO() def read(self, data): self.buffer.write(data) def eof(self): self.eof = True def closed(self): self.closed = True def test_open_fileobj(manager, watcher, tmpdir): filename = str(tmpdir.ensure("helloworld.txt")) with open(filename, "w") as f: f.write("Hello World!") fileobj = open(filename, "r") app = FileApp(fileobj).register(manager) assert watcher.wait("opened", app.file.channel) assert watcher.wait("eof", app.file.channel) assert app.eof app.fire(close(), app.file.channel) assert watcher.wait("closed", app.file.channel) assert app.closed app.unregister() assert watcher.wait("unregistered") s = app.buffer.getvalue() assert s == b"Hello World!" def test_read_write(manager, watcher, tmpdir): filename = str(tmpdir.ensure("helloworld.txt")) app = FileApp(filename, "w").register(manager) assert watcher.wait("opened", app.file.channel) app.fire(write(b"Hello World!"), app.file.channel) assert watcher.wait("write", app.file.channel) app.fire(close(), app.file.channel) assert watcher.wait("closed", app.file.channel) assert app.closed app.unregister() assert watcher.wait("unregistered") app = FileApp(filename, "r").register(manager) assert watcher.wait("opened", app.file.channel) assert watcher.wait("eof", app.file.channel) assert app.eof app.fire(close(), app.file.channel) assert watcher.wait("closed", app.file.channel) assert app.closed app.unregister() assert watcher.wait("unregistered") s = app.buffer.getvalue() assert s == b"Hello World!" circuits-3.1.0/tests/io/__init__.pyc0000644000014400001440000000021012420400435020341 0ustar prologicusers00000000000000 Qc@sdS(N((((s1/home/prologic/work/circuits/tests/io/__init__.pytscircuits-3.1.0/tests/__pycache__/0000755000014400001440000000000012425013643017703 5ustar prologicusers00000000000000circuits-3.1.0/tests/__pycache__/__init__.cpython-33.pyc0000644000014400001440000000026212414363410024063 0ustar prologicusers00000000000000 Qc@s dZdS(ucircuits testsN(u__doc__(((u./home/prologic/work/circuits/tests/__init__.pyuscircuits-3.1.0/tests/__pycache__/__init__.cpython-34.pyc0000644000014400001440000000023512414363520024066 0ustar prologicusers00000000000000 Q@s dZdS)zcircuits testsN)__doc__rr./home/prologic/work/circuits/tests/__init__.pyscircuits-3.1.0/tests/__pycache__/__init__.cpython-32.pyc0000644000014400001440000000025612414363275024076 0ustar prologicusers00000000000000l Qc@s dZdS(ucircuits testsN(u__doc__(((u./home/prologic/work/circuits/tests/__init__.pyuscircuits-3.1.0/tests/__pycache__/conftest.cpython-34.pyc0000644000014400001440000001112112414363520024150 0ustar prologicusers00000000000000 ?T#@s7dZddlZddlZddlZddlZddlmZddlmZddlm Z ddl m Z m Z m Z mZGddde ZGd d d eZd d Zd dZGdddeZddddZejddddZejddZddZdS)zpy.test configN)sleep)deque)TIMEOUT)handler BaseComponentDebuggerManagerc@s[eZdZddZeddddddZd d Zd d d dZd S)WatchercCstj|_t|_dS)N) threadingLock_lockrevents)selfr./home/prologic/work/circuits/tests/conftest.pyinitsz Watcher.initchannel*Zpriorityg33333?@c Os$|j|jj|WdQXdS)N)r r append)reventargskwargsrrr _on_events zWatcher._on_eventcCs|jjdS)N)r clear)rrrrrsz Watcher.clearNg@cCszxtt|tD]}|dkrf|j,x$|jD]}|j|kr@dSq@WWdQXnF|j;x3|jD](}|j|krz||jkrzdSqzWWdQXttqWWdXdS)NT)rangeintrr r namechannelsr)rrrtimeoutirrrrwait!s   z Watcher.wait)__name__ __module__ __qualname__rrrrr rrrrr s  ! r c@seZdZdZdS)FlagFN)r!r"r#statusrrrrr$6s r$cGsUd}d}xB|j|D]1}|sCd}|j||}ntdqW|S)NFTg?)Z waitEventZfirer)managerrZ event_namerZfiredvaluerrrrcall_event_from_name:sr)cGst|||j|S)N)r)r)r&rrrrr call_eventEsr*c@s.eZdZddddZddZdS) WaitEventNg@cs|dkr!t|dd}n||_||_tt|d|fdd}|jj||_|_dS)Nrcs d_dS)NT)r%)rrr)flagrron_eventTsz$WaitEvent.__init__..on_event)getattrrr&r$r addHandlerr,)rr&rrrr-r)r,r__init__Ks    $zWaitEvent.__init__c Cs]zBx;tt|jtD] }|jjr3dSttqWWd|jj|j XdS)NT) rrrrr,r%rr&Z removeHandlerr)rrrrrr [s   zWaitEvent.wait)r!r"r#r0r rrrrr+Is r+Tg@cCsddlm}xitt||D]Q}t|tjrU|||rndSnt|||krndSt|q'WdS)Nr)rT) circuits.core.managerrrr isinstance collectionsCallabler.r)objattrr'rrrrrrwait_foresr7scopesessioncstfdd}|j|td}j|jsSt|jjjrkd}nd}t d|j S)NcsjdS)N)stopr)r&rr finalizertszmanager..finalizerstartedTFr ) r addfinalizerr+startr AssertionErrorconfigoptionverboserregister)requestr;waiterrBr)r&rr&ps    r&cs8tjfdd}|j|S)Ncs'td}j|jdS)NZ unregistered)r+ unregisterr )rE)r&watcherrrr;s zwatcher..finalizer)r rCr=)rDr&r;r)r&rGrrGs rGc CsPtdtfdtfdtfdtjfdtjddfdtffS)Nr+r7r*ZPLATFORMZPYVERr))dictr+r7r*sysplatform version_infor)rrrrpytest_namespaces    rM)__doc__pytestrJr r3timerrr1rZcircuitsrrrrr objectr$r)r*r+r7fixturer&rGrMrrrrs"    "#  circuits-3.1.0/tests/__pycache__/conftest.cpython-33.pyc0000644000014400001440000001606012414363410024154 0ustar prologicusers00000000000000 ?T#c@s7dZddlZddlZddlZddlZddlmZddlmZddlm Z ddl m Z m Z m Z mZGddde ZGd d d eZd d Zd dZGdddeZddddZejddddZejddZddZdS(upy.test configiN(usleep(udeque(uTIMEOUT(uhandleru BaseComponentuDebuggeruManagercBs_|EeZdZddZeddddddZd d Zdd d d ZdS(uWatchercCstj|_t|_dS(N(u threadinguLocku_lockudequeuevents(uself((u./home/prologic/work/circuits/tests/conftest.pyuinitsu Watcher.inituchannelu*upriorityg33333?@c Os$|j|jj|WdQXdS(N(u_lockueventsuappend(uselfueventuargsukwargs((u./home/prologic/work/circuits/tests/conftest.pyu _on_events uWatcher._on_eventcCs|jjdS(N(ueventsuclear(uself((u./home/prologic/work/circuits/tests/conftest.pyuclearsu Watcher.clearg@cCszxtt|tD]}|dkrf|j,x$|jD]}|j|kr@dSq@WWdQXnF|j;x3|jD](}|j|krz||jkrzdSqzWWdQXt tqWWdXdS(NT( urangeuintuTIMEOUTuNoneu_lockueventsunameuTrueuchannelsusleep(uselfunameuchannelutimeoutuiuevent((u./home/prologic/work/circuits/tests/conftest.pyuwait!s   u Watcher.waitN( u__name__u __module__u __qualname__uinituhandleru _on_eventuclearuNoneuwait(u __locals__((u./home/prologic/work/circuits/tests/conftest.pyuWatchers ! uWatchercBs|EeZdZdZdS(uFlagNF(u__name__u __module__u __qualname__uFalseustatus(u __locals__((u./home/prologic/work/circuits/tests/conftest.pyuFlag6suFlagcGsUd}d}xB|j|D]1}|sCd}|j||}ntdqW|S(Ng?FT(uFalseuNoneu waitEventuTrueufireusleep(umanagerueventu event_nameuchannelsufireduvalueur((u./home/prologic/work/circuits/tests/conftest.pyucall_event_from_name:sucall_event_from_namecGst|||j|S(N(ucall_event_from_nameuname(umanagerueventuchannels((u./home/prologic/work/circuits/tests/conftest.pyu call_eventEsu call_eventcBs2|EeZdZddddZddZdS(u WaitEventg@cs|dkr!t|dd}n||_||_tt|d|fdd}|jj||_|_dS(Nuchannelcs d_dS(NT(uTrueustatus(uselfuargsukwargs(uflag(u./home/prologic/work/circuits/tests/conftest.pyuon_eventTsu$WaitEvent.__init__..on_event(uNoneugetattrutimeoutumanageruFlaguhandleru addHandleruflag(uselfumanagerunameuchannelutimeoutuon_event((uflagu./home/prologic/work/circuits/tests/conftest.pyu__init__Ks    $uWaitEvent.__init__c Cs]zBx;tt|jtD] }|jjr3dSttqWWd|jj |j XdS(NT( urangeuintutimeoutuTIMEOUTuflagustatusuTrueusleepumanageru removeHandleruhandler(uselfui((u./home/prologic/work/circuits/tests/conftest.pyuwait[s   uWaitEvent.waitN(u__name__u __module__u __qualname__uNoneu__init__uwait(u __locals__((u./home/prologic/work/circuits/tests/conftest.pyu WaitEventIsu WaitEventg@cCsddlm}xitt||D]Q}t|tjrU|||rndSnt|||krndSt |q'WdS(Ni(uTIMEOUTT( ucircuits.core.manageruTIMEOUTurangeuintu isinstanceu collectionsuCallableuTrueugetattrusleep(uobjuattruvalueutimeoutuTIMEOUTui((u./home/prologic/work/circuits/tests/conftest.pyuwait_foresuwait_foruscopeusessioncstfdd}|j|td}j|jsSt|jjjrkd}nd}t d|j S(NcsjdS(N(ustop((umanager(u./home/prologic/work/circuits/tests/conftest.pyu finalizertsumanager..finalizerustartedueventsTF( uManageru addfinalizeru WaitEventustartuwaituAssertionErroruconfiguoptionuverboseuTrueuFalseuDebuggeruregister(urequestu finalizeruwaiteruverbose((umanageru./home/prologic/work/circuits/tests/conftest.pyumanagerps    umanagercs8tjfdd}|j|S(Ncs'td}j|jdS(Nu unregistered(u WaitEventu unregisteruwait(uwaiter(umanageruwatcher(u./home/prologic/work/circuits/tests/conftest.pyu finalizers uwatcher..finalizer(uWatcheruregisteru addfinalizer(urequestumanageru finalizer((umanageruwatcheru./home/prologic/work/circuits/tests/conftest.pyuwatchers uwatcherc CsPtdtfdtfdtfdtjfdtjddfdtffS(Nu WaitEventuwait_foru call_eventuPLATFORMuPYVERiucall_event_from_name(udictu WaitEventuwait_foru call_eventusysuplatformu version_infoucall_event_from_name(((u./home/prologic/work/circuits/tests/conftest.pyupytest_namespaces    upytest_namespaceT(u__doc__upytestusysu threadingu collectionsutimeusleepudequeucircuits.core.manageruTIMEOUTucircuitsuhandleru BaseComponentuDebuggeruManageruWatcheruobjectuFlagucall_event_from_nameu call_eventu WaitEventuTrueuwait_forufixtureumanageruwatcherupytest_namespace(((u./home/prologic/work/circuits/tests/conftest.pyus"    "#  circuits-3.1.0/tests/__pycache__/conftest.cpython-32.pyc0000644000014400001440000001512112414363275024161 0ustar prologicusers00000000000000l ?Tc@sdZddlZddlZddlZddlZddlmZddlmZddlm Z ddl m Z m Z m Z mZGdde ZGd d eZd Zd ZGd deZdddZejdddZejdZdZdS(upy.test configiN(usleep(udeque(uTIMEOUT(uhandleru BaseComponentuDebuggeruManagercBsM|EeZdZedddddZdZd ddZd S( cCstj|_t|_dS(N(u threadinguLocku_lockudequeuevents(uself((u./home/prologic/work/circuits/tests/conftest.pyuinitsuchannelu*upriorityg33333?@c Os$|j|jj|WdQXdS(N(u_lockueventsuappend(uselfueventuargsukwargs((u./home/prologic/work/circuits/tests/conftest.pyu _on_events cCs|jjdS(N(ueventsuclear(uself((u./home/prologic/work/circuits/tests/conftest.pyuclearsg@cCszxtt|tD]}|dkrf|j,x$|jD]}|j|kr@dSq@WWdQXnF|j;x3|jD](}|j|krz||jkrzdSqzWWdQXt tqWWdXdS(NT( urangeuintuTIMEOUTuNoneu_lockueventsunameuTrueuchannelsusleep(uselfunameuchannelutimeoutuiuevent((u./home/prologic/work/circuits/tests/conftest.pyuwait!s   N(u__name__u __module__uinituhandleru _on_eventuclearuNoneuwait(u __locals__((u./home/prologic/work/circuits/tests/conftest.pyuWatchers   uWatchercBs|EeZdZdS(NF(u__name__u __module__uFalseustatus(u __locals__((u./home/prologic/work/circuits/tests/conftest.pyuFlag6s uFlagcGsUd}d}xB|j|D]1}|sCd}|j||}ntdqW|S(Ng?FT(uFalseuNoneu waitEventuTrueufireusleep(umanagerueventu event_nameuchannelsufireduvalueur((u./home/prologic/work/circuits/tests/conftest.pyucall_event_from_name:scGst|||j|S(N(ucall_event_from_nameuname(umanagerueventuchannels((u./home/prologic/work/circuits/tests/conftest.pyu call_eventEscBs&|EeZdddZdZdS(g@cs|dkr!t|dd}n||_||_tt|d|fd}|jj||_|_dS(Nuchannelcs d_dS(NT(uTrueustatus(uselfuargsukwargs(uflag(u./home/prologic/work/circuits/tests/conftest.pyuon_eventTs(uNoneugetattrutimeoutumanageruFlaguhandleru addHandleruflag(uselfumanagerunameuchannelutimeoutuon_event((uflagu./home/prologic/work/circuits/tests/conftest.pyu__init__Ks    !c Cs]zBx;tt|jtD] }|jjr3dSttqWWd|jj |j XdS(NT( urangeuintutimeoutuTIMEOUTuflagustatusuTrueusleepumanageru removeHandleruhandler(uselfui((u./home/prologic/work/circuits/tests/conftest.pyuwait[s   N(u__name__u __module__uNoneu__init__uwait(u __locals__((u./home/prologic/work/circuits/tests/conftest.pyu WaitEventIs u WaitEventg@cCsddlm}xitt||D]Q}t|tjrU|||rndSnt|||krndSt |q'WdS(Ni(uTIMEOUTT( ucircuits.core.manageruTIMEOUTurangeuintu isinstanceu collectionsuCallableuTrueugetattrusleep(uobjuattruvalueutimeoutuTIMEOUTui((u./home/prologic/work/circuits/tests/conftest.pyuwait_foresuscopeusessioncstfd}|j|td}j|jsPt|jjjrhd}nd}t d|j S(NcsjdS(N(ustop((umanager(u./home/prologic/work/circuits/tests/conftest.pyu finalizertsustartedueventsTF( uManageru addfinalizeru WaitEventustartuwaituAssertionErroruconfiguoptionuverboseuTrueuFalseuDebuggeruregister(urequestu finalizeruwaiteruverbose((umanageru./home/prologic/work/circuits/tests/conftest.pyumanagerps    cs5tjfd}|j|S(Ncs'td}j|jdS(Nu unregistered(u WaitEventu unregisteruwait(uwaiter(umanageruwatcher(u./home/prologic/work/circuits/tests/conftest.pyu finalizers (uWatcheruregisteru addfinalizer(urequestumanageru finalizer((umanageruwatcheru./home/prologic/work/circuits/tests/conftest.pyuwatchers c CsPtdtfdtfdtfdtjfdtjddfdtffS(Nu WaitEventuwait_foru call_eventuPLATFORMuPYVERiucall_event_from_name(udictu WaitEventuwait_foru call_eventusysuplatformu version_infoucall_event_from_name(((u./home/prologic/work/circuits/tests/conftest.pyupytest_namespaces    T(u__doc__upytestusysu threadingu collectionsutimeusleepudequeucircuits.core.manageruTIMEOUTucircuitsuhandleru BaseComponentuDebuggeruManageruWatcheruobjectuFlagucall_event_from_nameu call_eventu WaitEventuTrueuwait_forufixtureumanageruwatcherupytest_namespace(((u./home/prologic/work/circuits/tests/conftest.pyus"    "#  circuits-3.1.0/tests/web/0000755000014400001440000000000012425013643016250 5ustar prologicusers00000000000000circuits-3.1.0/tests/web/conftest.pyc0000644000014400001440000000702712420400435020612 0ustar prologicusers00000000000000 ?Tc@sdZddlZddlZddlmZddlmZmZddlm Z m Z m Z ddl m Z mZejjejjedZde fd YZd e fd YZejd d dZejd d dZdS(spy.test configiN(tclose(tServertStatic(thandlert ComponenttDebugger(tClienttrequesttstatictWebAppcBseZdZdZRS(twebcCsAt|_tdj||_tdtdtj|dS(Nis/statict dirlisting(tFalsetclosedRtregistertserverRtDOCROOTtTrue(tself((s2/home/prologic/work/circuits/tests/web/conftest.pytinits (t__name__t __module__tchannelR(((s2/home/prologic/work/circuits/tests/web/conftest.pyR st WebClientcBsAeZdZdidZeddddddZRS( cOs t|_dS(N(R R (Rtargstkwargs((s2/home/prologic/work/circuits/tests/web/conftest.pyR!scCsPtj|dd|j}|jt|||||jsIt|jS(NtresponseR(tpytestt WaitEventRtfireRtwaittAssertionErrorR(Rtmethodtpathtbodytheaderstwaiter((s2/home/prologic/work/circuits/tests/web/conftest.pyt__call__$sR Rt*tpriorityg?cCs t|_dS(N(RR (R((s2/home/prologic/work/circuits/tests/web/conftest.pyt _on_closed+sN(RRRtNoneR%RR((((s2/home/prologic/work/circuits/tests/web/conftest.pyRs tscopetmodulecstt|jdrZddlm}t|jd}|i|d6jnt|jdd}|dk r|jn|jj j rt jnt j d}j|jstfd}|j|S(Nt applicationi(tGatewayt/tRoottreadycs$jtjjdS(N(RRRtstop((twebapp(s2/home/prologic/work/circuits/tests/web/conftest.pyt finalizerDs(R thasattrR+tcircuits.web.wsgiR-tgetattrRR)tconfigtoptiontverboseRRRtstartRRt addfinalizer(RR-R,R/R$R3((R2s2/home/prologic/work/circuits/tests/web/conftest.pyR20s     cscttjddj}j||jsCtfd}|j|S(NR0RcsjdS(N(t unregister((t webclient(s2/home/prologic/work/circuits/tests/web/conftest.pyR3Ts(RRRRRRRR;(RR2R$R3((R=s2/home/prologic/work/circuits/tests/web/conftest.pyR=Ms   (t__doc__tosRtcircuits.net.socketsRt circuits.webRRtcircuitsRRRtcircuits.web.clientRRR!tjointdirnamet__file__RR RtfixtureR2R=(((s2/home/prologic/work/circuits/tests/web/conftest.pyts  ! circuits-3.1.0/tests/web/test_wsgi_application_yield.py0000644000014400001440000000056512402037676024420 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Controller from circuits.web.wsgi import Application from .helpers import urlopen class Root(Controller): def index(self): yield "Hello " yield "World!" application = Application() + Root() def test(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" circuits-3.1.0/tests/web/test_conn.py0000644000014400001440000000124212402037676020624 0ustar prologicusers00000000000000#!/usr/bin/env python try: from httplib import HTTPConnection except ImportError: from http.client import HTTPConnection # NOQA from circuits.web import Controller class Root(Controller): def index(self): return "Hello World!" def test(webapp): connection = HTTPConnection(webapp.server.host, webapp.server.port) connection.auto_open = False connection.connect() for i in range(2): connection.request("GET", "/") response = connection.getresponse() assert response.status == 200 assert response.reason == "OK" s = response.read() assert s == b"Hello World!" connection.close() circuits-3.1.0/tests/web/test_disps.py0000644000014400001440000000337612402037676021023 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.core.manager import Manager from circuits.core.handlers import handler from circuits.core.components import BaseComponent from circuits.web import BaseServer, Controller from circuits.web.dispatchers.dispatcher import Dispatcher from .helpers import urlopen, urljoin class PrefixingDispatcher(BaseComponent): """Forward to another Dispatcher based on the channel.""" def __init__(self, channel): super(PrefixingDispatcher, self).__init__(channel=channel) @handler("request", priority=1.0) def _on_request(self, event, request, response): path = request.path.strip("/") path = urljoin("/%s/" % self.channel, path) request.path = path class DummyRoot(Controller): channel = "/" def index(self): return "Not used" class Root1(Controller): channel = "/site1" def index(self): return "Hello from site 1!" class Root2(Controller): channel = "/site2" def index(self): return "Hello from site 2!" def test_disps(): manager = Manager() server1 = BaseServer(0, channel="site1") server1.register(manager) PrefixingDispatcher(channel="site1").register(server1) Dispatcher(channel="site1").register(server1) Root1().register(manager) server2 = BaseServer(("localhost", 0), channel="site2") server2.register(manager) PrefixingDispatcher(channel="site2").register(server2) Dispatcher(channel="site2").register(server2) Root2().register(manager) DummyRoot().register(manager) manager.start() f = urlopen(server1.http.base, timeout=3) s = f.read() assert s == b"Hello from site 1!" f = urlopen(server2.http.base, timeout=3) s = f.read() assert s == b"Hello from site 2!" circuits-3.1.0/tests/web/test_value.py0000644000014400001440000000072312402037676021006 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Controller from circuits import Event, Component from .helpers import urlopen class hello(Event): """hello Event""" class App(Component): def hello(self): return "Hello World!" class Root(Controller): def index(self): return self.fire(hello()) def test(webapp): App().register(webapp) f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" circuits-3.1.0/tests/web/test_unicode.py0000644000014400001440000000464412402037676021326 0ustar prologicusers00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- try: from httplib import HTTPConnection except ImportError: from http.client import HTTPConnection # NOQA from circuits.six import b from circuits.web import Controller from circuits.web.client import Client, request from .helpers import urlopen class Root(Controller): def index(self): return "Hello World!" def request_body(self): return self.request.body.read() def response_body(self): return "ä" def request_headers(self): return self.request.headers["A"] def response_headers(self): self.response.headers["A"] = "ä" return "ä" def test_index(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b("Hello World!") def test_request_body(webapp): connection = HTTPConnection(webapp.server.host, webapp.server.port) connection.connect() body = b("ä") connection.request("GET", "/request_body", body) response = connection.getresponse() assert response.status == 200 assert response.reason == "OK" s = response.read() assert s == b("ä") connection.close() def test_response_body(webapp): connection = HTTPConnection(webapp.server.host, webapp.server.port) connection.connect() connection.request("GET", "/response_body") response = connection.getresponse() assert response.status == 200 assert response.reason == "OK" s = response.read() assert s == b("ä") connection.close() def test_request_headers(webapp): connection = HTTPConnection(webapp.server.host, webapp.server.port) connection.connect() body = b("") headers = {"A": "ä"} connection.request("GET", "/request_headers", body, headers) response = connection.getresponse() assert response.status == 200 assert response.reason == "OK" s = response.read() assert s == b("ä") connection.close() def test_response_headers(webapp): client = Client() client.start() client.fire( request( "GET", "http://%s:%s/response_headers" % ( webapp.server.host, webapp.server.port ) ) ) while client.response is None: pass assert client.response.status == 200 assert client.response.reason == 'OK' s = client.response.read() a = client.response.headers.get('A') assert a == "ä" assert s == b("ä") circuits-3.1.0/tests/web/test_vpath_args.py0000644000014400001440000000125612402037676022032 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import expose, Controller from .helpers import urlopen class Root(Controller): @expose("test.txt") def index(self): return "Hello world!" class Leaf(Controller): channel = "/test" @expose("test.txt") def index(self, vpath=None): if vpath is None: return "Hello world!" else: return "Hello world! " + vpath def test(webapp): Leaf().register(webapp) f = urlopen(webapp.server.http.base + "/test.txt") s = f.read() assert s == b"Hello world!" f = urlopen(webapp.server.http.base + "/test/test.txt") s = f.read() assert s == b"Hello world!" circuits-3.1.0/tests/web/__init__.py0000644000014400001440000000000012174742426020360 0ustar prologicusers00000000000000circuits-3.1.0/tests/web/test_logger.py0000644000014400001440000000503612402037676021153 0ustar prologicusers00000000000000#!/usr/bin/env python import sys try: from StringIO import StringIO except ImportError: from io import StringIO # NOQA from socket import gaierror, gethostbyname, gethostname from circuits.web import Controller, Logger from .helpers import urlopen class DummyLogger(object): def __init__(self): super(DummyLogger, self).__init__() self.message = None def info(self, message): self.message = message class Root(Controller): def index(self): return "Hello World!" def test_file(webapp): logfile = StringIO() logger = Logger(file=logfile) logger.register(webapp) f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" logfile.seek(0) s = logfile.read().strip() try: address = gethostbyname(gethostname()) except gaierror: address = "127.0.0.1" d = {} d["h"] = address d["l"] = "-" d["u"] = "-" d["r"] = "GET / HTTP/1.1" d["s"] = "200" d["b"] = "12" d["f"] = "" d["a"] = "Python-urllib/%s" % sys.version[:3] keys = list(d.keys()) for k in keys: assert d[k] in s logfile.close() logger.unregister() def test_logger(webapp): logobj = DummyLogger() logger = Logger(logger=logobj) logger.register(webapp) f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" s = logobj.message try: address = gethostbyname(gethostname()) except gaierror: address = "127.0.0.1" d = {} d["h"] = address d["l"] = "-" d["u"] = "-" d["r"] = "GET / HTTP/1.1" d["s"] = "200" d["b"] = "12" d["f"] = "" d["a"] = "Python-urllib/%s" % sys.version[:3] keys = list(d.keys()) for k in keys: assert d[k] in s logger.unregister() def test_filename(webapp, tmpdir): logfile = str(tmpdir.ensure("logfile")) logger = Logger(file=logfile) logger.register(webapp) logfile = open(logfile, "r") f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" logfile.seek(0) s = logfile.read().strip() try: address = gethostbyname(gethostname()) except gaierror: address = "127.0.0.1" d = {} d["h"] = address d["l"] = "-" d["u"] = "-" d["r"] = "GET / HTTP/1.1" d["s"] = "200" d["b"] = "12" d["f"] = "" d["a"] = "Python-urllib/%s" % sys.version[:3] keys = list(d.keys()) for k in keys: assert d[k] in s logfile.close() logger.unregister() circuits-3.1.0/tests/web/test_dispatcher2.py0000644000014400001440000000405212402037676022101 0ustar prologicusers00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- from circuits.web import expose, Controller from .helpers import urlopen class Root(Controller): def __init__(self, *args, **kwargs): super(Root, self).__init__(*args, **kwargs) self += Hello() self += World() def index(self): return "index" def hello1(self): return "hello1" @expose("hello2") def hello2(self): return "hello2" def query(req, test): return 'query %s' % test class Hello(Controller): channel = "/hello" def index(self): return 'hello index' def test(self): return 'hello test' def query(req, test): return 'hello query %s' % test class World(Controller): channel = "/world" def index(self): return 'world index' def test(self): return 'world test' def test_simple(webapp): url = "%s/hello1" % webapp.server.http.base f = urlopen(url) s = f.read() assert s == b"hello1" def test_expose(webapp): url = "%s/hello2" % webapp.server.http.base f = urlopen(url) s = f.read() assert s == b"hello2" def test_index(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b"index" def test_controller_index(webapp): url = "%s/hello/" % webapp.server.http.base f = urlopen(url) s = f.read() assert s == b"hello index" url = "%s/world/" % webapp.server.http.base f = urlopen(url) s = f.read() assert s == b"world index" def test_controller_expose(webapp): url = "%s/hello/test" % webapp.server.http.base f = urlopen(url) s = f.read() assert s == b"hello test" url = "%s/world/test" % webapp.server.http.base f = urlopen(url) s = f.read() assert s == b"world test" def test_query(webapp): url = "%s/query?test=1" % webapp.server.http.base f = urlopen(url) s = f.read() assert s == b"query 1" url = "%s/hello/query?test=2" % webapp.server.http.base f = urlopen(url) s = f.read() assert s == b"hello query 2" circuits-3.1.0/tests/web/test_wsgi_gateway_multiple_apps.py0000644000014400001440000000203012402037676025313 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest if pytest.PYVER[:2] == (3, 3): pytest.skip("Broken on Python 3.3") from circuits.web import Server from circuits.web.wsgi import Gateway from .helpers import urlopen def hello(environ, start_response): status = "200 OK" response_headers = [("Content-type", "text/plain")] start_response(status, response_headers) return "Hello World!" def foobar(environ, start_response): status = "200 OK" response_headers = [("Content-type", "text/plain")] start_response(status, response_headers) return "FooBar!" @pytest.fixture def apps(request): return { "/": hello, "/foobar": foobar } def test(apps): server = Server(0) Gateway(apps).register(server) waiter = pytest.WaitEvent(server, "ready") server.start() waiter.wait() f = urlopen(server.http.base) s = f.read() assert s == b"Hello World!" f = urlopen("{0:s}/foobar/".format(server.http.base)) s = f.read() assert s == b"FooBar!" server.stop() circuits-3.1.0/tests/web/test_wsgi_gateway.py0000644000014400001440000000054312402037676022364 0ustar prologicusers00000000000000#!/usr/bin/env python from .helpers import urlopen def application(environ, start_response): status = "200 OK" response_headers = [("Content-type", "text/plain")] start_response(status, response_headers) return "Hello World!" def test(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" circuits-3.1.0/tests/web/test_http.py0000644000014400001440000000227212402037676020652 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest from circuits import Component from circuits.web import Controller from circuits.web.client import parse_url from circuits.net.sockets import TCPClient from circuits.net.events import connect, write class Client(Component): def __init__(self, *args, **kwargs): super(Client, self).__init__(*args, **kwargs) self._buffer = [] self.done = False def read(self, data): self._buffer.append(data) if data.find(b"\r\n") != -1: self.done = True def buffer(self): return b''.join(self._buffer) class Root(Controller): def index(self): return "Hello World!" def test(webapp): transport = TCPClient() client = Client() client += transport client.start() host, port, resource, secure = parse_url(webapp.server.http.base) client.fire(connect(host, port)) assert pytest.wait_for(transport, "connected") client.fire(write(b"GET / HTTP/1.1\r\n")) client.fire(write(b"Content-Type: text/plain\r\n\r\n")) assert pytest.wait_for(client, "done") client.stop() s = client.buffer().decode('utf-8').split('\r\n')[0] assert s == "HTTP/1.1 200 OK" circuits-3.1.0/tests/web/test_methods.py0000644000014400001440000000150512402037676021334 0ustar prologicusers00000000000000#!/usr/bin/env python try: from httplib import HTTPConnection except ImportError: from http.client import HTTPConnection # NOQA from circuits.web import Controller class Root(Controller): def index(self): return "Hello World!" def test_GET(webapp): connection = HTTPConnection(webapp.server.host, webapp.server.port) connection.request("GET", "/") response = connection.getresponse() assert response.status == 200 assert response.reason == "OK" s = response.read() assert s == b"Hello World!" def test_HEAD(webapp): connection = HTTPConnection(webapp.server.host, webapp.server.port) connection.request("HEAD", "/") response = connection.getresponse() assert response.status == 200 assert response.reason == "OK" s = response.read() assert s == b"" circuits-3.1.0/tests/web/test_large_post.py0000644000014400001440000000122212402037676022024 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Controller from .helpers import urlencode, urlopen class Root(Controller): def index(self, *args, **kwargs): args = tuple(( x.encode("utf-8") if type(x) != str else x for x in args )) return "{0}\n{1}".format(repr(args), repr(kwargs)) def test(webapp): args = ("1", "2", "3") kwargs = {"data": "\x00" * 4096} url = "%s/%s" % (webapp.server.http.base, "/".join(args)) data = urlencode(kwargs).encode('utf-8') f = urlopen(url, data) data = f.read().split(b"\n") assert eval(data[0]) == args assert eval(data[1]) == kwargs circuits-3.1.0/tests/web/test_serve_download.py0000644000014400001440000000162312402037676022705 0ustar prologicusers00000000000000#!/usr/bin/env python import os from tempfile import mkstemp from circuits import handler from circuits.web import Controller from .helpers import urlopen class Root(Controller): @handler("started", priority=1.0, channel="*") def _on_started(self, component): fd, self.filename = mkstemp() os.write(fd, b"Hello World!") os.close(fd) @handler("stopped", channel="(") def _on_stopped(self, component): os.remove(self.filename) def index(self): return self.serve_download(self.filename) def test(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" contentType = f.headers["Content-Type"] contentDisposition = f.headers["Content-Disposition"] assert contentType == "application/x-download" assert contentDisposition.startswith("attachment;") assert "filename" in contentDisposition circuits-3.1.0/tests/web/multipartform.py0000644000014400001440000000355212402037676021543 0ustar prologicusers00000000000000 import itertools from mimetypes import guess_type from email.generator import _make_boundary class MultiPartForm(dict): def __init__(self): self.files = [] self.boundary = _make_boundary() def get_content_type(self): return "multipart/form-data; boundary=%s" % self.boundary def add_file(self, fieldname, filename, fd, mimetype=None): body = fd.read() if mimetype is None: mimetype = guess_type(filename)[0] or "application/octet-stream" self.files.append((fieldname, filename, mimetype, body)) def bytes(self): parts = [] part_boundary = bytearray("--%s" % self.boundary, "ascii") # Add the form fields parts.extend([ part_boundary, bytearray( "Content-Disposition: form-data; name=\"%s\"" % k, "ascii" ), bytes(), v if isinstance(v, bytes) else bytearray(v, "ascii") ] for k, v in list(self.items())) # Add the files to upload parts.extend([ part_boundary, bytearray( "Content-Disposition: form-data; name=\"%s\"; filename=\"%s\"" % ( fieldname, filename), "ascii" ), bytearray("Content-Type: %s" % content_type, "ascii"), bytearray(), body if isinstance(body, bytes) else bytearray(body, "ascii"), ] for fieldname, filename, content_type, body in self.files) # Flatten the list and add closing boundary marker, # then return CR+LF separated data flattened = list(itertools.chain(*parts)) flattened.append(bytearray("--%s--" % self.boundary, "ascii")) res = bytearray() for item in flattened: res += item res += bytearray("\r\n", "ascii") return res circuits-3.1.0/tests/web/test_basicauth.py0000644000014400001440000000176412402037676021643 0ustar prologicusers00000000000000from circuits.web import Controller from circuits.web.tools import check_auth, basic_auth from .helpers import HTTPError, HTTPBasicAuthHandler from .helpers import urlopen, build_opener, install_opener class Root(Controller): def index(self): realm = "Test" users = {"admin": "admin"} encrypt = str if check_auth(self.request, self.response, realm, users, encrypt): return "Hello World!" return basic_auth(self.request, self.response, realm, users, encrypt) def test(webapp): try: f = urlopen(webapp.server.http.base) except HTTPError as e: assert e.code == 401 assert e.msg == "Unauthorized" else: assert False handler = HTTPBasicAuthHandler() handler.add_password("Test", webapp.server.http.base, "admin", "admin") opener = build_opener(handler) install_opener(opener) f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" install_opener(None) circuits-3.1.0/tests/web/test_gzip.py0000644000014400001440000000275012402037676020645 0ustar prologicusers00000000000000#!/usr/bin/env python from pytest import fixture from os import path from io import BytesIO from circuits.web import Controller from circuits.web.tools import gzip from circuits import handler, Component from .conftest import DOCROOT from .helpers import build_opener, Request class Gzip(Component): channel = "web" @handler("response", priority=1.0) def _on_response(self, event, *args, **kwargs): event[0] = gzip(event[0]) class Root(Controller): def index(self): return "Hello World!" @fixture(scope="module") def gziptool(request, webapp): gziptool = Gzip().register(webapp) def finalizer(): gziptool.unregister() request.addfinalizer(finalizer) return gziptool def decompress(body): import gzip zbuf = BytesIO() zbuf.write(body) zbuf.seek(0) zfile = gzip.GzipFile(mode='rb', fileobj=zbuf) data = zfile.read() zfile.close() return data def test1(webapp, gziptool): request = Request(webapp.server.http.base) request.add_header("Accept-Encoding", "gzip") opener = build_opener() f = opener.open(request) s = decompress(f.read()) assert s == b"Hello World!" def test2(webapp, gziptool): request = Request("%s/static/largefile.txt" % webapp.server.http.base) request.add_header("Accept-Encoding", "gzip") opener = build_opener() f = opener.open(request) s = decompress(f.read()) assert s == open(path.join(DOCROOT, "largefile.txt"), "rb").read() circuits-3.1.0/tests/web/test_websockets.py0000644000014400001440000000451612402037676022047 0ustar prologicusers00000000000000#!/usr/bin/env python from __future__ import print_function from circuits import Component from circuits.web.servers import Server from circuits.web.controllers import Controller from circuits.net.sockets import close, write from circuits.web.websockets import WebSocketClient, WebSocketsDispatcher from .helpers import urlopen class Echo(Component): channel = "wsserver" def init(self): self.clients = [] def connect(self, sock, host, port): self.clients.append(sock) print("WebSocket Client Connected:", host, port) self.fire(write(sock, "Welcome {0:s}:{1:d}".format(host, port))) def disconnect(self, sock): self.clients.remove(sock) def read(self, sock, data): self.fire(write(sock, "Received: " + data)) class Root(Controller): def index(self): return "Hello World!" class Client(Component): channel = "ws" def init(self, *args, **kwargs): self.response = None def read(self, data): self.response = data def test(manager, watcher, webapp): server = Server(0).register(manager) watcher.wait("ready") echo = Echo().register(server) Root().register(server) watcher.wait("registered", channel="wsserver") f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" watcher.clear() WebSocketsDispatcher("/websocket").register(server) watcher.wait("registered", channel="web") uri = "ws://{0:s}:{1:d}/websocket".format(server.host, server.port) WebSocketClient(uri).register(manager) client = Client().register(manager) watcher.wait("registered", channel="wsclient") watcher.wait("connected", channel="wsclient") assert len(echo.clients) == 1 watcher.wait("read", channel="ws") assert client.response.startswith("Welcome") watcher.clear() client.fire(write("Hello!"), "ws") watcher.wait("read", channel="ws") assert client.response == "Received: Hello!" f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" assert len(echo.clients) == 1 client.fire(close(), "ws") watcher.wait("disconnect", channel="wsserver") assert len(echo.clients) == 0 client.unregister() watcher.wait("unregistered") watcher.clear() server.unregister() watcher.wait("unregistered") circuits-3.1.0/tests/web/test_servers.py0000644000014400001440000000622712402037676021370 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest from os import path from socket import gaierror from circuits.web import Controller from circuits import handler, Component from circuits.web import BaseServer, Server from .helpers import urlopen, URLError CERTFILE = path.join(path.dirname(__file__), "cert.pem") class BaseRoot(Component): channel = "web" def request(self, request, response): return "Hello World!" class Root(Controller): def index(self): return "Hello World!" class MakeQuiet(Component): @handler("ready", channel="*", priority=1.0) def _on_ready(self, event, *args): event.stop() def test_baseserver(manager, watcher): server = BaseServer(0).register(manager) MakeQuiet().register(server) watcher.wait("ready") BaseRoot().register(server) watcher.wait("registered") try: f = urlopen(server.http.base) except URLError as e: if type(e[0]) is gaierror: f = urlopen("http://127.0.0.1:9000") else: raise s = f.read() assert s == b"Hello World!" server.unregister() watcher.wait("unregistered") def test_server(manager, watcher): server = Server(0).register(manager) MakeQuiet().register(server) watcher.wait("ready") Root().register(server) try: f = urlopen(server.http.base) except URLError as e: if type(e[0]) is gaierror: f = urlopen("http://127.0.0.1:9000") else: raise s = f.read() assert s == b"Hello World!" server.unregister() watcher.wait("unregistered") def test_secure_server(manager, watcher): pytest.importorskip("ssl") server = Server(0, secure=True, certfile=CERTFILE).register(manager) MakeQuiet().register(server) watcher.wait("ready") Root().register(server) try: f = urlopen(server.http.base) except URLError as e: if type(e[0]) is gaierror: f = urlopen("http://127.0.0.1:9000") else: raise s = f.read() assert s == b"Hello World!" server.unregister() watcher.wait("unregistered") def test_unixserver(manager, watcher, tmpdir): if pytest.PLATFORM == "win32": pytest.skip("Unsupported Platform") sockpath = tmpdir.ensure("test.sock") socket = str(sockpath) server = Server(socket).register(manager) MakeQuiet().register(server) watcher.wait("ready") Root().register(server) assert path.basename(server.host) == "test.sock" server.unregister() watcher.wait("unregistered") def test_multi_servers(manager, watcher): pytest.importorskip("ssl") insecure_server = Server(0, channel="insecure") secure_server = Server( 0, channel="secure", secure=True, certfile=CERTFILE ) server = (insecure_server + secure_server).register(manager) MakeQuiet().register(server) watcher.wait("ready") Root().register(server) f = urlopen(insecure_server.http.base) s = f.read() assert s == b"Hello World!" f = urlopen(secure_server.http.base) s = f.read() assert s == b"Hello World!" server.unregister() watcher.wait("unregistered") circuits-3.1.0/tests/web/test_multipartformdata.py0000644000014400001440000000370712402037676023436 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest from os import path from io import BytesIO from circuits.web import Controller from .multipartform import MultiPartForm from .helpers import urlopen, Request @pytest.fixture() def sample_file(request): return open( path.join( path.dirname(__file__), "static", "unicode.txt" ), "rb" ) class Root(Controller): def index(self, file, description=""): yield "Filename: %s\n" % file.filename yield "Description: %s\n" % description yield "Content:\n" yield file.value def upload(self, file, description=""): return file.value def test(webapp): form = MultiPartForm() form["description"] = "Hello World!" fd = BytesIO(b"Hello World!") form.add_file("file", "helloworld.txt", fd, "text/plain; charset=utf-8") # Build the request url = webapp.server.http.base data = form.bytes() headers = { "Content-Type": form.get_content_type(), "Content-Length": len(data), } request = Request(url, data, headers) f = urlopen(request) s = f.read() lines = s.split(b"\n") assert lines[0] == b"Filename: helloworld.txt" assert lines[1] == b"Description: Hello World!" assert lines[2] == b"Content:" assert lines[3] == b"Hello World!" def test_unicode(webapp, sample_file): form = MultiPartForm() form["description"] = sample_file.name form.add_file( "file", "helloworld.txt", sample_file, "text/plain; charset=utf-8" ) # Build the request url = "{0:s}/upload".format(webapp.server.http.base) data = form.bytes() headers = { "Content-Type": form.get_content_type(), "Content-Length": len(data), } request = Request(url, data, headers) f = urlopen(request) s = f.read() sample_file.seek(0) expected_output = sample_file.read() # use the byte stream assert s == expected_output circuits-3.1.0/tests/web/test_sessions.py0000644000014400001440000000146112402037676021540 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Controller, Sessions from .helpers import build_opener, HTTPCookieProcessor from .helpers import CookieJar class Root(Controller): def index(self, vpath=None): if vpath: name = vpath self.session["name"] = name else: name = self.session.get("name", "World!") return "Hello %s" % name def test(webapp): Sessions().register(webapp) cj = CookieJar() opener = build_opener(HTTPCookieProcessor(cj)) f = opener.open(webapp.server.http.base) s = f.read() assert s == b"Hello World!" f = opener.open(webapp.server.http.base + "/test") s = f.read() assert s == b"Hello test" f = opener.open(webapp.server.http.base) s = f.read() assert s == b"Hello test" circuits-3.1.0/tests/web/test_core.py0000644000014400001440000000504412402037676020623 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest from circuits.six import b, u from circuits.web import Controller from .helpers import urlencode, urlopen, HTTPError class Root(Controller): def index(self): return "Hello World!" def test_args(self, *args, **kwargs): return "{0}\n{1}".format(repr(args), repr(kwargs)) def test_default_args(self, a=None, b=None): return "a={0}\nb={1}".format(a, b) def test_redirect(self): return self.redirect("/") def test_forbidden(self): return self.forbidden() def test_notfound(self): return self.notfound() def test_failure(self): raise Exception() def test_root(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" def test_404(webapp): try: urlopen("%s/foo" % webapp.server.http.base) except HTTPError as e: assert e.code == 404 assert e.msg == "Not Found" else: assert False def test_args(webapp): args = ("1", "2", "3") kwargs = {"1": "one", "2": "two", "3": "three"} url = "%s/test_args/%s" % (webapp.server.http.base, "/".join(args)) data = urlencode(kwargs).encode('utf-8') f = urlopen(url, data) data = f.read().split(b"\n") assert eval(data[0]) == args assert eval(data[1]) == kwargs @pytest.mark.parametrize("data,expected", [ ((["1"], {}), b("a=1\nb=None")), ((["1", "2"], {}), b("a=1\nb=2")), ((["1"], {"b": "2"}), b("a=1\nb=2")), ]) def test_default_args(webapp, data, expected): args, kwargs = data url = u("{0:s}/test_default_args/{1:s}".format( webapp.server.http.base, u("/").join(args) )) data = urlencode(kwargs).encode("utf-8") f = urlopen(url, data) assert f.read() == expected def test_redirect(webapp): f = urlopen("%s/test_redirect" % webapp.server.http.base) s = f.read() assert s == b"Hello World!" def test_forbidden(webapp): try: urlopen("%s/test_forbidden" % webapp.server.http.base) except HTTPError as e: assert e.code == 403 assert e.msg == "Forbidden" else: assert False def test_notfound(webapp): try: urlopen("%s/test_notfound" % webapp.server.http.base) except HTTPError as e: assert e.code == 404 assert e.msg == "Not Found" else: assert False def test_failure(webapp): try: urlopen("%s/test_failure" % webapp.server.http.base) except HTTPError as e: assert e.code == 500 else: assert False circuits-3.1.0/tests/web/test_headers.py0000644000014400001440000000226412402037676021307 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Controller from .helpers import urlopen class Root(Controller): def index(self): return "Hello World!" def foo(self): self.response.headers["Content-Type"] = "text/plain" return "Hello World!" def empty(self): return "" def test_default(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" content_type = f.headers["Content-Type"] assert content_type == "text/html; charset=utf-8" def test_explicit(webapp): f = urlopen("{0:s}/foo".format(webapp.server.http.base)) s = f.read() assert s == b"Hello World!" content_type = f.headers["Content-Type"] assert content_type == "text/plain" def test_static(webapp): f = urlopen("{0:s}/static/test.css".format(webapp.server.http.base)) s = f.read() assert s == b"body { }\n" content_type = f.headers["Content-Type"] assert content_type == "text/css" def test_empty(webapp): f = urlopen("{0:s}/empty".format(webapp.server.http.base)) s = f.read() assert s == b"" content_length = f.headers["Content-Length"] assert int(content_length) == 0 circuits-3.1.0/tests/web/test_wsgi_application.py0000644000014400001440000000354012402037676023226 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Controller from circuits.web.wsgi import Application from .helpers import urlencode, urlopen, HTTPError class Root(Controller): def index(self): return "Hello World!" def test_args(self, *args, **kwargs): args = [arg if isinstance(arg, str) else arg.encode() for arg in args] return "%s\n%s" % (repr(tuple(args)), repr(kwargs)) def test_redirect(self): return self.redirect("/") def test_forbidden(self): return self.forbidden() def test_notfound(self): return self.notfound() application = Application() + Root() def test(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" def test_404(webapp): try: urlopen("%s/foo" % webapp.server.http.base) except HTTPError as e: assert e.code == 404 assert e.msg == "Not Found" else: assert False def test_args(webapp): args = ("1", "2", "3") kwargs = {"1": "one", "2": "two", "3": "three"} url = "%s/test_args/%s" % (webapp.server.http.base, "/".join(args)) data = urlencode(kwargs).encode() f = urlopen(url, data) data = f.read().split(b"\n") assert eval(data[0]) == args assert eval(data[1]) == kwargs def test_redirect(webapp): f = urlopen("%s/test_redirect" % webapp.server.http.base) s = f.read() assert s == b"Hello World!" def test_forbidden(webapp): try: urlopen("%s/test_forbidden" % webapp.server.http.base) except HTTPError as e: assert e.code == 403 assert e.msg == "Forbidden" else: assert False def test_notfound(webapp): try: urlopen("%s/test_notfound" % webapp.server.http.base) except HTTPError as e: assert e.code == 404 assert e.msg == "Not Found" else: assert False circuits-3.1.0/tests/web/test_yield.py0000644000014400001440000000044512402037676021001 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Controller from .helpers import urlopen class Root(Controller): def index(self): yield "Hello " yield "World!" def test(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" circuits-3.1.0/tests/web/websocket.py0000644000014400001440000003616712402037676020634 0ustar prologicusers00000000000000""" websocket - WebSocket client library for Python Copyright (C) 2010 Hiroki Ohtani(liris) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA """ import socket import random import struct from hashlib import md5 import logging from .helpers import urlparse logger = logging.getLogger() class WebSocketException(Exception): pass class ConnectionClosedException(WebSocketException): pass default_timeout = None traceEnabled = False def enableTrace(tracable): """ turn on/off the tracability. """ global traceEnabled traceEnabled = tracable if tracable: if not logger.handlers: logger.addHandler(logging.StreamHandler()) logger.setLevel(logging.DEBUG) def setdefaulttimeout(timeout): """ Set the global timeout setting to connect. """ global default_timeout default_timeout = timeout def getdefaulttimeout(): """ Return the global timeout setting to connect. """ return default_timeout def _parse_url(url): """ parse url and the result is tuple of (hostname, port, resource path and the flag of secure mode) """ parsed = urlparse(url) if parsed.hostname: hostname = parsed.hostname else: raise ValueError("hostname is invalid") port = 0 if parsed.port: port = parsed.port is_secure = False if parsed.scheme == "ws": if not port: port = 80 elif parsed.scheme == "wss": is_secure = True if not port: port = 443 else: raise ValueError("scheme %s is invalid" % parsed.scheme) if parsed.path: resource = parsed.path else: resource = "/" return (hostname, port, resource, is_secure) def create_connection(url, timeout=None, **options): """ connect to url and return websocket object. Connect to url and return the WebSocket object. Passing optional timeout parameter will set the timeout on the socket. If no timeout is supplied, the global default timeout setting returned by getdefauttimeout() is used. """ websock = WebSocket() websock.settimeout(timeout is not None and timeout or default_timeout) websock.connect(url, **options) return websock _MAX_INTEGER = (1 << 32) - 1 _AVAILABLE_KEY_CHARS = list(range(0x21, 0x2f + 1)).extend( list(range(0x3a, 0x7e + 1)) ) _MAX_CHAR_BYTE = (1 << 8) - 1 _MAX_ASCII_BYTE = (1 << 7) - 1 # ref. Websocket gets an update, and it breaks stuff. # http://axod.blogspot.com/2010/06/websocket-gets-update-and-it-breaks.html def _create_sec_websocket_key(): spaces_n = random.randint(1, 12) max_n = _MAX_INTEGER / spaces_n number_n = random.randint(0, int(max_n)) product_n = number_n * spaces_n key_n = str(product_n) for i in range(random.randint(1, 12)): c = random.choice(_AVAILABLE_KEY_CHARS) pos = random.randint(0, len(key_n)) key_n = key_n[0:pos] + chr(c) + key_n[pos:] for i in range(spaces_n): pos = random.randint(1, len(key_n)-1) key_n = key_n[0:pos] + " " + key_n[pos:] return number_n, key_n def _create_key3(): return "".join([chr(random.randint(0, _MAX_ASCII_BYTE)) for i in range(8)]) HEADERS_TO_CHECK = { "upgrade": "websocket", "connection": "upgrade", } HEADERS_TO_EXIST_FOR_HYBI00 = [ "sec-websocket-origin", "sec-websocket-location", ] HEADERS_TO_EXIST_FOR_HIXIE75 = [ "websocket-origin", "websocket-location", ] class _SSLSocketWrapper(object): def __init__(self, sock): self.ssl = socket.ssl(sock) def recv(self, bufsize): return self.ssl.read(bufsize) def send(self, payload): return self.ssl.write(payload) class WebSocket(object): """ Low level WebSocket interface. This class is based on The WebSocket protocol draft-hixie-thewebsocketprotocol-76 http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76 We can connect to the websocket server and send/recieve data. The following example is a echo client. >>> import websocket >>> ws = websocket.WebSocket() >>> ws.Connect("ws://localhost:8080/echo") >>> ws.send("Hello, Server") >>> ws.recv() 'Hello, Server' >>> ws.close() """ def __init__(self): """ Initalize WebSocket object. """ self.connected = False self.io_sock = self.sock = socket.socket() def settimeout(self, timeout): """ Set the timeout to the websocket. """ self.sock.settimeout(timeout) def gettimeout(self): """ Get the websocket timeout. """ return self.sock.gettimeout() def connect(self, url, **options): """ Connect to url. url is websocket url scheme. ie. ws://host:port/resource """ hostname, port, resource, is_secure = _parse_url(url) # TODO: we need to support proxy self.sock.connect((hostname, port)) if is_secure: self.io_sock = _SSLSocketWrapper(self.sock) self._handshake(hostname, port, resource, **options) def _handshake(self, host, port, resource, **options): sock = self.io_sock headers = [] headers.append("GET %s HTTP/1.1" % resource) headers.append("Upgrade: WebSocket") headers.append("Connection: Upgrade") if port == 80: hostport = host else: hostport = "%s:%d" % (host, port) headers.append("Host: %s" % hostport) headers.append("Origin: %s" % hostport) number_1, key_1 = _create_sec_websocket_key() headers.append("Sec-WebSocket-Key1: %s" % key_1) number_2, key_2 = _create_sec_websocket_key() headers.append("Sec-WebSocket-Key2: %s" % key_2) if "header" in options: headers.extend(options["header"]) headers.append("") key3 = _create_key3() headers.append(key3) header_str = "\r\n".join(headers) sock.send(header_str.encode('utf-8')) if traceEnabled: logger.debug("--- request header ---") logger.debug(header_str) logger.debug("-----------------------") status, resp_headers = self._read_headers() if status != 101: self.close() raise WebSocketException("Handshake Status %d" % status) success, secure = self._validate_header(resp_headers) if not success: self.close() raise WebSocketException("Invalid WebSocket Header") if secure: resp = self._get_resp() if not self._validate_resp(number_1, number_2, key3, resp): self.close() raise WebSocketException("challenge-response error") self.connected = True def _validate_resp(self, number_1, number_2, key3, resp): challenge = struct.pack("!I", number_1) challenge += struct.pack("!I", number_2) challenge += key3.encode('utf-8') digest = md5(challenge).digest() return resp == digest def _get_resp(self): result = self._recv(16) if traceEnabled: logger.debug("--- challenge response result ---") logger.debug(repr(result)) logger.debug("---------------------------------") return result def _validate_header(self, headers): #TODO: check other headers for key, value in HEADERS_TO_CHECK.items(): v = headers.get(key, None) if value != v: return False, False success = 0 for key in HEADERS_TO_EXIST_FOR_HYBI00: if key in headers: success += 1 if success == len(HEADERS_TO_EXIST_FOR_HYBI00): return True, True elif success != 0: return False, True success = 0 for key in HEADERS_TO_EXIST_FOR_HIXIE75: if key in headers: success += 1 if success == len(HEADERS_TO_EXIST_FOR_HIXIE75): return True, False return False, False def _read_headers(self): status = None headers = {} if traceEnabled: logger.debug("--- response header ---") while True: line = self._recv_line() if line == b"\r\n": break line = line.strip() if traceEnabled: logger.debug(line) if not status: status_info = line.split(b" ", 2) status = int(status_info[1]) else: kv = line.split(b":", 1) if len(kv) == 2: key, value = kv headers[key.lower().decode('utf-8')] \ = value.strip().lower().decode('utf-8') else: raise WebSocketException("Invalid header") if traceEnabled: logger.debug("-----------------------") return status, headers def send(self, payload): """ Send the data as string. payload must be utf-8 string or unicoce. """ if isinstance(payload, str): payload = payload.encode("utf-8") data = b"".join([b"\x00", payload, b"\xff"]) self.io_sock.send(data) if traceEnabled: logger.debug("send: " + repr(data)) def recv(self): """ Reeive utf-8 string data from the server. """ b = self._recv(1) if enableTrace: logger.debug("recv frame: " + repr(b)) frame_type = ord(b) if frame_type == 0x00: bytes = [] while True: b = self._recv(1) if b == b"\xff": break else: bytes.append(b) return b"".join(bytes) elif 0x80 < frame_type < 0xff: # which frame type is valid? length = self._read_length() bytes = self._recv_strict(length) return bytes elif frame_type == 0xff: self._recv(1) self._closeInternal() return None else: raise WebSocketException("Invalid frame type") def _read_length(self): length = 0 while True: b = ord(self._recv(1)) length = length * (1 << 7) + (b & 0x7f) if b < 0x80: break return length def close(self): """ Close Websocket object """ if self.connected: try: self.io_sock.send("\xff\x00") timeout = self.sock.gettimeout() self.sock.settimeout(1) try: result = self._recv(2) if result != "\xff\x00": logger.error("bad closing Handshake") except: pass self.sock.settimeout(timeout) self.sock.shutdown(socket.SHUT_RDWR) except: pass self._closeInternal() def _closeInternal(self): self.connected = False self.sock.close() self.io_sock = self.sock def _recv(self, bufsize): bytes = self.io_sock.recv(bufsize) if not bytes: raise ConnectionClosedException() return bytes def _recv_strict(self, bufsize): remaining = bufsize bytes = "" while remaining: bytes += self._recv(remaining) remaining = bufsize - len(bytes) return bytes def _recv_line(self): line = [] while True: c = self._recv(1) line.append(c) if c == b"\n": break return b"".join(line) class WebSocketApp(object): """ Higher level of APIs are provided. The interface is like JavaScript WebSocket object. """ def __init__(self, url, on_open=None, on_message=None, on_error=None, on_close=None): """ url: websocket url. on_open: callable object which is called at opening websocket. this function has one argument. The arugment is this class object. on_message: callbale object which is called when recieved data. on_message has 2 arguments. The 1st arugment is this class object. The passing 2nd arugment is utf-8 string which we get from the server. on_error: callable object which is called when we get error. on_error has 2 arguments. The 1st arugment is this class object. The passing 2nd arugment is exception object. on_close: callable object which is called when closed the connection. this function has one argument. The arugment is this class object. """ self.url = url self.on_open = on_open self.on_message = on_message self.on_error = on_error self.on_close = on_close self.sock = None def send(self, data): """ send message. data must be utf-8 string or unicode. """ self.sock.send(data) def close(self): """ close websocket connection. """ self.sock.close() def run_forever(self): """ run event loop for WebSocket framework. This loop is infinite loop and is alive during websocket is available. """ if self.sock: raise WebSocketException("socket is already opened") try: self.sock = WebSocket() self.sock.connect(self.url) self._run_with_no_err(self.on_open) while True: data = self.sock.recv() if data is None: break self._run_with_no_err(self.on_message, data) except Exception as e: self._run_with_no_err(self.on_error, e) finally: self.sock.close() self._run_with_no_err(self.on_close) self.sock = None def _run_with_no_err(self, callback, *args): if callback: try: callback(self, *args) except Exception as e: if logger.isEnabledFor(logging.DEBUG): logger.error(e) if __name__ == "__main__": enableTrace(True) #ws = create_connection("ws://localhost:8080/echo") ws = create_connection("ws://localhost:5000/chat") print("Sending 'Hello, World'...") ws.send("Hello, World") print("Sent") print("Receiving...") result = ws.recv() print("Received '%s'" % result) ws.close() circuits-3.1.0/tests/web/cert.pem0000644000014400001440000000420512402037676017720 0ustar prologicusers00000000000000-----BEGIN RSA PRIVATE KEY----- MIICWwIBAAKBgQC9B7hV67bzhLA//STrZUIi0iHD4WFtftOhvj+xiHRNnYw0+r+4 WdQv1YiL+ab03pn/J9R1SQuOGwYDVPQvYX+qEFVRUFP9yvXIQl7PG40HQzfs8lJz hnmI+64HJT//oJ9e7PiyDHLfFH1FuCqSy9RlvzOd4hmydX9J3VxFFzrpJQIDAQAB AoGAHhGxT/Gb+6a6xqMFEXDdEV7twhQDBIDtN0hlJ192aLZMDE1q2+9mImnMO7/t v/v88Sqr0DBbZzKDRVppMXRH80ZtnmMu3/3kUCtA3WAbKxyFpIiXGv/NAUHZe5Gz rua+z3lUvmt6CmwMm2ReB70Q61zxr9q4HjrjYI82dtJ4M40CQQDnGujxdBdbPmiR oc8mcShfmPNP7igQrUkf/DpB0GWnLWdA97mmXLw4jHXpHy9gm3wGc+9uOi0Ex8Ml 1t9xAGFjAkEA0WSGwG45d5dmYV8Oa/9UsY5/F6hAlYAAI1TxRsKcl2YTqaQastac glV1GSUrgGw/8UBvdKKS2REF7cpAkiQV1wJAPtQhCiuOgf7YfOcpowDWgg7Z7xwH Bmml3K08xVG7oRSF4rK2ZRUHErSVBbi1r6T1tedk62mjfY41bp8ZBeadkwJAD7AG YHhhmdIf+3+Rpwm0ILFaWD1kyU6TtBHzGagO71DYfEctMOTfSOx6H24nejGiAMMh Fo3vjo+18ADNIaXOdQJAYdm+dUdyVaW2IDUi7ew0shyKTC4OaEZtXIwwINvrqUsX //6z8mw/S5rXGlfKadiz4uwzcXlSvg727O1efpibvA== -----END RSA PRIVATE KEY----- -----BEGIN CERTIFICATE----- MIIDjTCCAvagAwIBAgIJAN0msyL5El/jMA0GCSqGSIb3DQEBBQUAMIGMMQswCQYD VQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUx FTATBgNVBAoTDFNob3J0Q2lyY3VpdDEUMBIGA1UEAxMLSmFtZXMgTWlsbHMxKDAm BgkqhkiG9w0BCQEWGWFkbWluQHNob3J0Y2lyY3VpdC5uZXQuYXUwHhcNMTAwMTEz MDczOTAwWhcNMTEwMTEzMDczOTAwWjCBjDELMAkGA1UEBhMCQVUxEzARBgNVBAgT ClF1ZWVuc2xhbmQxETAPBgNVBAcTCEJyaXNiYW5lMRUwEwYDVQQKEwxTaG9ydENp cmN1aXQxFDASBgNVBAMTC0phbWVzIE1pbGxzMSgwJgYJKoZIhvcNAQkBFhlhZG1p bkBzaG9ydGNpcmN1aXQubmV0LmF1MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB gQC9B7hV67bzhLA//STrZUIi0iHD4WFtftOhvj+xiHRNnYw0+r+4WdQv1YiL+ab0 3pn/J9R1SQuOGwYDVPQvYX+qEFVRUFP9yvXIQl7PG40HQzfs8lJzhnmI+64HJT// oJ9e7PiyDHLfFH1FuCqSy9RlvzOd4hmydX9J3VxFFzrpJQIDAQABo4H0MIHxMB0G A1UdDgQWBBSq+tU5ZDymUuMcgZ83gxk1PTN89zCBwQYDVR0jBIG5MIG2gBSq+tU5 ZDymUuMcgZ83gxk1PTN896GBkqSBjzCBjDELMAkGA1UEBhMCQVUxEzARBgNVBAgT ClF1ZWVuc2xhbmQxETAPBgNVBAcTCEJyaXNiYW5lMRUwEwYDVQQKEwxTaG9ydENp cmN1aXQxFDASBgNVBAMTC0phbWVzIE1pbGxzMSgwJgYJKoZIhvcNAQkBFhlhZG1p bkBzaG9ydGNpcmN1aXQubmV0LmF1ggkA3SazIvkSX+MwDAYDVR0TBAUwAwEB/zAN BgkqhkiG9w0BAQUFAAOBgQAokSGDpbFV2osC8nM8K12vheeDBVDHGxOaENXGVIm8 SWPXsaIUsm6JQx0wm/eouWRPbNJkOBwBrNCls1oMmdxdxG8mBh+kAMWUkdVeuT2H lCo9BRJnhUr4L6poJ7ORzL2oUilGZNwONpHGY0cWzFG8/tOoRJsfKZm23bwXbIxv Hw== -----END CERTIFICATE----- circuits-3.1.0/tests/web/test_client.py0000755000014400001440000000102212402037676021144 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Controller from circuits.web.client import Client, request class Root(Controller): def index(self): return "Hello World!" def test(webapp): client = Client() client.start() client.fire(request("GET", webapp.server.http.base)) while client.response is None: pass client.stop() response = client.response assert response.status == 200 assert response.reason == "OK" s = response.read() assert s == b"Hello World!" circuits-3.1.0/tests/web/helpers.pyc0000644000014400001440000000207412420400436020425 0ustar prologicusers00000000000000 ?Tc@sy~ddlmZmZddlmZmZmZddlmZm Z ddlm Z m Z m Z ddlm Z mZWnek r ddlmZddlmZmZddlmZmZm Z ddlmZm Z dd lm Z m Z m Z mZnXydd lmZWn!ek rCdd lmZnXydd lmZWn!ek r{dd lmZnXd S( i(t HTTPErrortURLError(tquotet urlencodeturljoin(tHTTPBasicAuthHandlertHTTPCookieProcessor(turlopent build_openertinstall_opener(tHTTPDigestAuthHandlertRequest(R(RR(RRR (RRR R (t CookieJar(turlparseN(t urllib.errorRRt urllib.parseRRRturllib.requestRRRRR R R t ImportErrorR turllibturllib2thttp.cookiejarR t cookielib(((s1/home/prologic/work/circuits/tests/web/helpers.pyts& &  circuits-3.1.0/tests/web/test_jsonrpc.py0000644000014400001440000000134412402037676021350 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import Component from circuits.web import Controller, JSONRPC from .jsonrpclib import ServerProxy from .helpers import urlopen class App(Component): def eval(self, s): return eval(s) class Root(Controller): def index(self): return "Hello World!" def test(webapp): rpc = JSONRPC("/rpc") test = App() rpc.register(webapp) test.register(webapp) f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" url = "%s/rpc" % webapp.server.http.base jsonrpc = ServerProxy(url, allow_none=True, encoding='utf-8') data = jsonrpc.eval("1 + 2") assert data["result"] == 3 rpc.unregister() test.unregister() circuits-3.1.0/tests/web/helpers.py0000644000014400001440000000147412402037676020301 0ustar prologicusers00000000000000try: from urllib.error import HTTPError, URLError from urllib.parse import quote, urlencode, urljoin from urllib.request import HTTPBasicAuthHandler, HTTPCookieProcessor from urllib.request import urlopen, build_opener, install_opener from urllib.request import HTTPDigestAuthHandler, Request except ImportError: from urlparse import urljoin from urllib import quote, urlencode from urllib2 import HTTPError, URLError, HTTPDigestAuthHandler from urllib2 import HTTPBasicAuthHandler, HTTPCookieProcessor from urllib2 import urlopen, build_opener, install_opener, Request try: from http.cookiejar import CookieJar except ImportError: from cookielib import CookieJar try: from urllib.parse import urlparse except ImportError: from urlparse import urlparse # pylama:skip=1 circuits-3.1.0/tests/web/jsonrpclib.pyc0000644000014400001440000002637312420400436021140 0ustar prologicusers00000000000000 ?Tc@sWddlZddlZddlZejddkZy$ddlmZddlmZWn1ek rddl m Zddl m ZnXy0ddl m Z dd l mZmZmZWn=ek rddlm Z dd lmZmZmZnXd Zd ad Zd efdYZdefdYZdZdddddZdefdYZdefdYZdefdYZdd&dYZdefdYZ defdYZ!e"dkrSe!d d!d Z#e#j$d"Z%e%GHe#j&d#Z'e'GHe#j$d"d$Z(e(GHe#j$d%Z)e)GHndS('iNii(tHTTPConnection(tHTTPSConnection(tHTTP(tHTTPS(tunquote(t splithostt splittypet splitusers0.0.1icCstdatS(Ni(tID(((s4/home/prologic/work/circuits/tests/web/jsonrpclib.pyt_gen_id:s tErrorcBseZdZdZRS(sBase class for client errors.cCs t|S(N(trepr(tself((s4/home/prologic/work/circuits/tests/web/jsonrpclib.pyt__str__Hs(t__name__t __module__t__doc__R (((s4/home/prologic/work/circuits/tests/web/jsonrpclib.pyR Fst ProtocolErrorcBs eZdZdZdZRS(s!Indicates an HTTP protocol error.cCs>tj|||_||_||_||_||_dS(N(R t__init__turlterrcodeterrmsgtheaderstresponse(R RRRRR((s4/home/prologic/work/circuits/tests/web/jsonrpclib.pyRYs      cCsd|j|j|jfS(Ns(RRR(R ((s4/home/prologic/work/circuits/tests/web/jsonrpclib.pyt__repr__as(RRRRR(((s4/home/prologic/work/circuits/tests/web/jsonrpclib.pyRVs cCs"t|}t|}||fS(N(t UnmarshallertParser(tencodingtuntpar((s4/home/prologic/work/circuits/tests/web/jsonrpclib.pyt getparserhs  cCs>|r:i}||d<||d4scCsP|jdd|jdtt||j|rL|j|ndS(Ns Content-Typestext/xmlsContent-Length(Ratstrtlent endheadersR3(R R_RN((s4/home/prologic/work/circuits/tests/web/jsonrpclib.pyR?=s  cCs|j|dS(N(RKR((R tfile((s4/home/prologic/work/circuits/tests/web/jsonrpclib.pytparse_responseJscCs|j|\}}x^|r0|jd}n|jd}|sIPn|jrfdt|fGHn|j|q|j|j|jS(Nisbody:(RtrecvRGRHR R*R-(R RkRJRtptuR((s4/home/prologic/work/circuits/tests/web/jsonrpclib.pyRKXs   (RRRt __version__RgR'RR\R9R;R=R>R?RlRK(((s4/home/prologic/work/circuits/tests/web/jsonrpclib.pyR8s -    t SafeTransportcBseZdZdZRS(s3Handles an HTTPS transaction to an JSON-RPC server.cCs\|j|\}}}y t}Wntk rAtdnX||d|pTiSdS(Ns-your version of httplib doesn't support HTTPS(R\RRBtNotImplementedErrorR((R RLR[RYR((s4/home/prologic/work/circuits/tests/web/jsonrpclib.pyR9vs   (RRRR9(((s4/home/prologic/work/circuits/tests/web/jsonrpclib.pyRqqst ServerProxycBs>eZdddddZdZdZeZdZRS(icCst|\}}|dkr-tdnt|\|_|_|jsZd|_n|dkr|dkr~t}qt}n||_||_ ||_ ||_ dS(NthttpthttpssUnsupported JSONRPC protocols/RPC2(shttpshttps( RtIOErrorRt_ServerProxy__hostt_ServerProxy__handlerR(RqR8t_ServerProxy__transportt_ServerProxy__encodingt_ServerProxy__verboset_ServerProxy__allow_none(R turit transportRRHR&tutype((s4/home/prologic/work/circuits/tests/web/jsonrpclib.pyRs          cCs}t||d|jd|j}|jj|j|j|j|j|jd|j}t |dkry|d}n|S(s+call a method on the remote server RR&RHii( R#RzR|RyR'RwRxtencodeR{Ri(R R$R R'R((s4/home/prologic/work/circuits/tests/web/jsonrpclib.pyt __requests     cCsd|j|jfS(Ns(RwRx(R ((s4/home/prologic/work/circuits/tests/web/jsonrpclib.pyRscCst|j|S(N(R0t_ServerProxy__request(R R4((s4/home/prologic/work/circuits/tests/web/jsonrpclib.pyR5sN(RRR(RRRR R5(((s4/home/prologic/work/circuits/tests/web/jsonrpclib.pyRss   t__main__shttp://localhost:8080/foo/RHsfoo bartothertbazi((*tsysR"RUt version_infoR<t http.clientRRt ImportErrorthttplibRRt urllib.parseRRRRturllibRpRR t ExceptionR RRR(R#tobjectRRR0R8RqRsRtstechotctbadtdtetf(((s4/home/prologic/work/circuits/tests/web/jsonrpclib.pyt!sN           9 circuits-3.1.0/tests/web/test_request_failure.py0000644000014400001440000000076712402037676023101 0ustar prologicusers00000000000000#!/usr/bin/env python from .helpers import urlopen, HTTPError from circuits.core.handlers import handler from circuits.core.components import BaseComponent class Root(BaseComponent): channel = "web" @handler("request", priority=0.2) def request(self, request, response): raise Exception() def test(webapp): try: Root().register(webapp) urlopen(webapp.server.http.base) except HTTPError as e: assert e.code == 500 else: assert False circuits-3.1.0/tests/web/test_security.py0000644000014400001440000000175012402037676021542 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Controller try: from httplib import HTTPConnection except ImportError: from http.client import HTTPConnection # NOQA from .helpers import urlopen, HTTPError class Root(Controller): def index(self): return "Hello World!" def test_root(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" def test_badpath_notfound(webapp): try: url = "%s/../../../../../../etc/passwd" % webapp.server.http.base urlopen(url) except HTTPError as e: assert e.code == 404 else: assert False def test_badpath_redirect(webapp): connection = HTTPConnection(webapp.server.host, webapp.server.port) connection.connect() path = "/../../../../../../etc/passwd" connection.request("GET", path) response = connection.getresponse() assert response.status == 301 assert response.reason == "Moved Permanently" connection.close() circuits-3.1.0/tests/web/test_wsgi_gateway_yield.py0000644000014400001440000000055712402037676023557 0ustar prologicusers00000000000000#!/usr/bin/env python from .helpers import urlopen def application(environ, start_response): status = "200 OK" response_headers = [("Content-type", "text/plain")] start_response(status, response_headers) yield "Hello " yield "World!" def test(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" circuits-3.1.0/tests/web/test_generator.py0000644000014400001440000000053712402037676021663 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Controller from .helpers import urlopen class Root(Controller): def index(self): def response(): yield "Hello " yield "World!" return response() def test(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" circuits-3.1.0/tests/web/test_exceptions.py0000644000014400001440000000263112402037676022053 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Controller from circuits.web.exceptions import Forbidden, NotFound, Redirect from .helpers import urlopen, HTTPError class Root(Controller): def index(self): return "Hello World!" def test_redirect(self): raise Redirect("/") def test_forbidden(self): raise Forbidden() def test_notfound(self): raise NotFound() def test_contenttype(self): self.response.headers["Content-Type"] = "application/json" raise Exception() def test_redirect(webapp): f = urlopen("%s/test_redirect" % webapp.server.http.base) s = f.read() assert s == b"Hello World!" def test_forbidden(webapp): try: urlopen("%s/test_forbidden" % webapp.server.http.base) except HTTPError as e: assert e.code == 403 assert e.msg == "Forbidden" else: assert False def test_notfound(webapp): try: urlopen("%s/test_notfound" % webapp.server.http.base) except HTTPError as e: assert e.code == 404 assert e.msg == "Not Found" else: assert False def test_contenttype(webapp): try: f = urlopen("%s/test_contenttype" % webapp.server.http.base) except HTTPError as e: assert e.code == 500 assert e.msg == "Internal Server Error" assert e.headers.get("Content-Type") == "text/html" else: assert False circuits-3.1.0/tests/web/jsonrpclib.py0000644000014400001440000003072512402037676021005 0ustar prologicusers00000000000000# a port of xmlrpclib to json.... # # # The JSON-RPC client interface is based on the XML-RPC client # # Copyright (c) 1999-2002 by Secret Labs AB # Copyright (c) 1999-2002 by Fredrik Lundh # Copyright (c) 2006 by Matt Harrison # # By obtaining, using, and/or copying this software and/or its # associated documentation, you agree that you have read, understood, # and will comply with the following terms and conditions: # # Permission to use, copy, modify, and distribute this software and # its associated documentation for any purpose and without fee is # hereby granted, provided that the above copyright notice appears in # all copies, and that both that copyright notice and this permission # notice appear in supporting documentation, and that the name of # Secret Labs AB or the author not be used in advertising or publicity # pertaining to distribution of the software without specific, written # prior permission. # # SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD # TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- # ABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR # BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY # DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS # ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE # OF THIS SOFTWARE. # -------------------------------------------------------------------- import sys import json import base64 PY3 = sys.version_info[0] == 3 try: from http.client import HTTPConnection from http.client import HTTPSConnection except ImportError: from httplib import HTTP as HTTPConnection # NOQA from httplib import HTTPS as HTTPSConnection # NOQA try: from urllib.parse import unquote from urllib.parse import splithost, splittype, splituser except ImportError: from urllib import unquote # NOQA from urllib import splithost, splittype, splituser # NOQA __version__ = "0.0.1" ID = 1 def _gen_id(): global ID ID = ID + 1 return ID # -------------------------------------------------------------------- # Exceptions ## # Base class for all kinds of client-side errors. class Error(Exception): """Base class for client errors.""" def __str__(self): return repr(self) ## # Indicates an HTTP-level protocol error. This is raised by the HTTP # transport layer, if the server returns an error code other than 200 # (OK). # # @param url The target URL. # @param errcode The HTTP error code. # @param errmsg The HTTP error message. # @param headers The HTTP header dictionary. class ProtocolError(Error): """Indicates an HTTP protocol error.""" def __init__(self, url, errcode, errmsg, headers, response): Error.__init__(self) self.url = url self.errcode = errcode self.errmsg = errmsg self.headers = headers self.response = response def __repr__(self): return ( "" % (self.url, self.errcode, self.errmsg) ) def getparser(encoding): un = Unmarshaller(encoding) par = Parser(un) return par, un def dumps(params, methodname=None, methodresponse=None, encoding=None, allow_none=0): if methodname: request = {} request["method"] = methodname request["params"] = params request["id"] = _gen_id() return json.dumps(request) class Unmarshaller(object): def __init__(self, encoding): self.data = None self.encoding = encoding def feed(self, data): if self.data is None: self.data = data else: self.data = self.data + data def close(self): #try to convert string to json return json.loads(self.data.decode(self.encoding)) class Parser(object): def __init__(self, unmarshaller): self._target = unmarshaller self.data = None def feed(self, data): if self.data is None: self.data = data else: self.data = self.data + data def close(self): self._target.feed(self.data) class _Method(object): # some magic to bind an JSON-RPC method to an RPC server. # supports "nested" methods (e.g. examples.getStateName) def __init__(self, send, name): self.__send = send self.__name = name def __getattr__(self, name): return _Method(self.__send, "%s.%s" % (self.__name, name)) def __call__(self, *args): return self.__send(self.__name, args) ## # Standard transport class for JSON-RPC over HTTP. #

# You can create custom transports by subclassing this method, and # overriding selected methods. class Transport: """Handles an HTTP transaction to an JSON-RPC server.""" # client identifier (may be overridden) user_agent = "jsonlib.py/%s (by matt harrison)" % __version__ ## # Send a complete request, and parse the response. # # @param host Target host. # @param handler Target PRC handler. # @param request_body JSON-RPC request body. # @param verbose Debugging flag. # @return Parsed response. def request(self, host, handler, request_body, encoding, verbose=0): # issue JSON-RPC request h = self.make_connection(host) if verbose: h.set_debuglevel(1) self.send_request(h, handler, request_body) if not PY3: self.send_host(h, host) self.send_user_agent(h) self.send_content(h, request_body) try: errcode, errmsg, headers = h.getreply() r = h.getfile() except AttributeError: r = h.getresponse() errcode = r.status errmsg = r.reason headers = r.getheaders() if errcode != 200: response = r.read() raise ProtocolError( host + handler, errcode, errmsg, headers, response ) self.verbose = verbose try: sock = h._conn.sock except AttributeError: sock = None return self._parse_response(r, sock, encoding) ## # Create parser. # # @return A 2-tuple containing a parser and a unmarshaller. def getparser(self, encoding): # get parser and unmarshaller return getparser(encoding) ## # Get authorization info from host parameter # Host may be a string, or a (host, x509-dict) tuple; if a string, # it is checked for a "user:pw@host" format, and a "Basic # Authentication" header is added if appropriate. # # @param host Host descriptor (URL or (URL, x509 info) tuple). # @return A 3-tuple containing (actual host, extra headers, # x509 info). The header and x509 fields may be None. def get_host_info(self, host): x509 = {} if isinstance(host, tuple): host, x509 = host auth, host = splituser(host) if auth: auth = base64.encodestring(unquote(auth)) auth = "".join(auth.split()) # get rid of whitespace extra_headers = [ ("Authorization", "Basic " + auth) ] else: extra_headers = None return host, extra_headers, x509 ## # Connect to server. # # @param host Target host. # @return A connection handle. def make_connection(self, host): # create a HTTP connection object from a host descriptor host, extra_headers, x509 = self.get_host_info(host) return HTTPConnection(host) ## # Send request header. # # @param connection Connection handle. # @param handler Target RPC handler. # @param request_body JSON-RPC body. def send_request(self, connection, handler, request_body): connection.putrequest("POST", handler) ## # Send host name. # # @param connection Connection handle. # @param host Host name. def send_host(self, connection, host): host, extra_headers, x509 = self.get_host_info(host) connection.putheader("Host", host) if extra_headers: if isinstance(extra_headers, dict): extra_headers = list(extra_headers.items()) for key, value in extra_headers: connection.putheader(key, value) ## # Send user-agent identifier. # # @param connection Connection handle. def send_user_agent(self, connection): connection.putheader("User-Agent", self.user_agent) ## # Send request body. # # @param connection Connection handle. # @param request_body JSON-RPC request body. def send_content(self, connection, request_body): connection.putheader("Content-Type", "text/xml") connection.putheader("Content-Length", str(len(request_body))) connection.endheaders() if request_body: connection.send(request_body) ## # Parse response. # # @param file Stream. # @return Response tuple and target method. def parse_response(self, file): # compatibility interface return self._parse_response(file, None) ## # Parse response (alternate interface). This is similar to the # parse_response method, but also provides direct access to the # underlying socket object (where available). # # @param file Stream. # @param sock Socket handle (or None, if the socket object # could not be accessed). # @return Response tuple and target method. def _parse_response(self, file, sock, encoding): # read response from input file/socket, and parse it p, u = self.getparser(encoding) while 1: if sock: response = sock.recv(1024) else: response = file.read(1024) if not response: break if self.verbose: print("body:", repr(response)) p.feed(response) file.close() p.close() return u.close() ## # Standard transport class for JSON-RPC over HTTPS. class SafeTransport(Transport): """Handles an HTTPS transaction to an JSON-RPC server.""" # FIXME: mostly untested def make_connection(self, host): # create a HTTPS connection object from a host descriptor # host may be a string, or a (host, x509-dict) tuple host, extra_headers, x509 = self.get_host_info(host) try: HTTPS = HTTPSConnection except AttributeError: raise NotImplementedError( "your version of httplib doesn't support HTTPS" ) else: return HTTPS(host, None, **(x509 or {})) class ServerProxy(object): def __init__(self, uri, transport=None, encoding=None, verbose=None, allow_none=0): utype, uri = splittype(uri) if utype not in ("http", "https"): raise IOError("Unsupported JSONRPC protocol") self.__host, self.__handler = splithost(uri) if not self.__handler: self.__handler = "/RPC2" if transport is None: if utype == "https": transport = SafeTransport() else: transport = Transport() self.__transport = transport self.__encoding = encoding self.__verbose = verbose self.__allow_none = allow_none def __request(self, methodname, params): """call a method on the remote server """ request = dumps(params, methodname, encoding=self.__encoding, allow_none=self.__allow_none) response = self.__transport.request( self.__host, self.__handler, request.encode(self.__encoding), self.__encoding, verbose=self.__verbose ) if len(response) == 1: response = response[0] return response def __repr__(self): return ("" % (self.__host, self.__handler) ) __str__ = __repr__ def __getattr__(self, name): #dispatch return _Method(self.__request, name) # note: to call a remote object with an non-standard name, use # result getattr(server, "strange-python-name")(args) if __name__ == "__main__": s = ServerProxy("http://localhost:8080/foo/", verbose=1) c = s.echo("foo bar") print(c) d = s.bad("other") print(d) e = s.echo("foo bar", "baz") print(e) f = s.echo(5) print(f) circuits-3.1.0/tests/web/test_dispatcher.py0000644000014400001440000000270712402037676022024 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Controller from circuits.web.client import Client, request class Root(Controller): def __init__(self, *args, **kwargs): super(Root, self).__init__(*args, **kwargs) self += Leaf() def index(self): return "Hello World!" def name(self): return "Earth" class Leaf(Controller): channel = "/world/country/region" def index(self): return "Hello cities!" def city(self): return "Hello City!" def make_request(webapp, path): client = Client() client.start() client.fire(request("GET", path)) while client.response is None: pass client.stop() response = client.response s = response.read() return response.status, s def test_root(webapp): status, content = make_request(webapp, webapp.server.http.base) assert status == 200 assert content == b"Hello World!" def test_root_name(webapp): status, content = make_request(webapp, "%s/name" % webapp.server.http.base) assert status == 200 assert content == b"Earth" def test_leaf(webapp): status, content = make_request(webapp, "%s/world/country/region" % webapp.server.http.base) assert status == 200 assert content == b"Hello cities!" def test_city(webapp): status, content = make_request(webapp, "%s/world/country/region/city" % webapp.server.http.base) assert status == 200 assert content == b"Hello City!" circuits-3.1.0/tests/web/__pycache__/0000755000014400001440000000000012425013644020461 5ustar prologicusers00000000000000circuits-3.1.0/tests/web/__pycache__/test_dispatcher3.cpython-33-PYTEST.pyc0000644000014400001440000001014012414363411027374 0ustar prologicusers00000000000000 ?TCc@sddlZddljjZddlZyddlmZWn"e k rbddl mZYnXddl m Z Gddde Z ejjdddd d gd d ZdS( iN(uHTTPConnection(u ControllercBsD|EeZdZddZddZddZddZd S( uRootcCsdS(NuGET((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyuGETsuRoot.GETcCsdS(NuPUT((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyuPUTsuRoot.PUTcCsdS(NuPOST((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyuPOSTsu Root.POSTcCsdS(NuDELETE((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyuDELETEsu Root.DELETEN(u__name__u __module__u __qualname__uGETuPUTuPOSTuDELETE(u __locals__((u:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyuRoots   uRootumethoduGETuPUTuPOSTuDELETEcCst|jj|jj}|j|j|d|j}|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}di|d 6}ttj|nd}}}|j}d }||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}d i|d 6}ttj|nd}}}|j} d} | j}||} | j} d} | | }| |k}|sYtj d!|fd"| |fitj | d6tj | d6tj | d6dt j kstj | rtj | ndd6dt j kstj |rtj |ndd6tj |d6tj | d6tj |d6}d#i|d6}ttj|nd}} }} } } }|jdS($Nu/iu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7uOKu.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)su{0:s}uutf-8u%(py0)s == %(py14)s {%(py14)s = %(py10)s {%(py10)s = %(py8)s {%(py8)s = %(py5)s {%(py5)s = %(py3)s.format }(%(py6)s) }.encode }(%(py12)s) }upy3upy10upy12usumethodupy6upy8upy14uassert %(py16)supy16(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suassert %(py7)s(u==(u%(py0)s == %(py14)s {%(py14)s = %(py10)s {%(py10)s = %(py8)s {%(py8)s = %(py5)s {%(py5)s = %(py3)s.format }(%(py6)s) }.encode }(%(py12)s) }uassert %(py16)s(uHTTPConnectionuserveruhostuportuconnecturequestu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneureasonureaduformatuencodeuclose(uwebappumethodu connectionuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8usu @py_assert2u @py_assert7u @py_assert9u @py_assert11u @py_assert13u @py_format15u @py_format17((u:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyutestsD    |  |   utest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuhttplibuHTTPConnectionu ImportErroru http.clientu circuits.webu ControlleruRootumarku parametrizeutest(((u:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyus   circuits-3.1.0/tests/web/__pycache__/test_jsonrpc.cpython-26-PYTEST.pyc0000644000014400001440000000522612407376151026663 0ustar prologicusers00000000000000 ?Tc @sddkZddkiiZddklZddkl Z l Z ddk l Z ddk lZdefdYZd e fd YZd ZdS( iN(t Component(t ControllertJSONRPCi(t ServerProxy(turlopentAppcBseZdZRS(cCs t|S(N(teval(tselfts((s6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyR s(t__name__t __module__R(((s6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyR stRootcBseZdZRS(cCsdS(Ns Hello World!((R((s6/home/prologic/work/circuits/tests/web/test_jsonrpc.pytindexs(R R R (((s6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyR scCstd}t}|i||i|t|iii}|i}d}||j}|pti d|fd||fhdt i jpti |oti |ndd6ti |d6}dh|d 6}tti|nd}}d |iii} t| d td d } | id} | d} d} | | j}|poti d|fd| | fhti | d6ti | d6}dh|d6}tti|nd} }} |i|idS(Ns/rpcs Hello World!s==s%(py0)s == %(py3)sRtpy0tpy3sassert %(py5)stpy5s%s/rpct allow_nonetencodingsutf-8s1 + 2tresultis%(py1)s == %(py4)stpy1tpy4sassert %(py6)stpy6(s==(s%(py0)s == %(py3)s(s==(s%(py1)s == %(py4)s(RRtregisterRtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNoneRtTrueRt unregister(twebapptrpcttesttfRt @py_assert2t @py_assert1t @py_format4t @py_format6turltjsonrpctdatat @py_assert0t @py_assert3t @py_format5t @py_format7((s6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyR(s4      o   E (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtcircuitsRt circuits.webRRt jsonrpclibRthelpersRRR R((((s6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyts circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_multiple_apps.cpython-26-PYTEST.pyc0000644000014400001440000000543512407376151032637 0ustar prologicusers00000000000000 ?Tc @sddkZddkiiZddkZeid d joeidnddk l Z ddk l Z ddk lZd Zd Zeid Zd ZdS(iNiisBroken on Python 3.3(tServer(tGatewayi(turlopencCs d}dg}|||dS(Ns200 OKs Content-types text/plains Hello World!(s Content-types text/plain((tenvirontstart_responsetstatustresponse_headers((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pythello s  cCs d}dg}|||dS(Ns200 OKs Content-types text/plainsFooBar!(s Content-types text/plain((RRRR((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pytfoobars  cCshtd6td6S(Nt/s/foobar(RR(trequest((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pytappssc Cstd}t|i|ti|d}|i|it|ii }|i }d}||j}|pt i d |fd||fhdt ijpt i|ot i|ndd6t i|d6}d h|d 6}tt i|nd}}td i|ii }|i }d }||j}|pt i d|fd||fhdt ijpt i|ot i|ndd6t i|d6}d h|d 6}tt i|nd}}|idS(Nitreadys Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5s {0:s}/foobar/sFooBar!(s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s(RRtregistertpytestt WaitEventtstarttwaitRthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetformattstop( R tservertwaitertfR t @py_assert2t @py_assert1t @py_format4t @py_format6((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pyttest#s0     o   o (ii(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRRtPYVERtskipt circuits.webRtcircuits.web.wsgiRthelpersRRRtfixtureR R+(((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pyts    circuits-3.1.0/tests/web/__pycache__/test_value.cpython-27-PYTEST.pyc0000644000014400001440000000427512414363102026313 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z m Z ddl m Z de fdYZ de fd YZd efd YZd ZdS( iN(t Controller(tEventt Componenti(turlopenthellocBseZdZRS(s hello Event(t__name__t __module__t__doc__(((s4/home/prologic/work/circuits/tests/web/test_value.pyR stAppcBseZdZRS(cCsdS(Ns Hello World!((tself((s4/home/prologic/work/circuits/tests/web/test_value.pyRs(RRR(((s4/home/prologic/work/circuits/tests/web/test_value.pyR stRootcBseZdZRS(cCs|jtS(N(tfireR(R ((s4/home/prologic/work/circuits/tests/web/test_value.pytindexs(RRR (((s4/home/prologic/work/circuits/tests/web/test_value.pyR scCstj|t|jjj}|j}d}||k}|stjd |fd ||fitj |d6dt j kstj |rtj |ndd6}d i|d 6}t tj|nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(RtregisterRtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((s4/home/prologic/work/circuits/tests/web/test_value.pyttests  l(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRtcircuitsRRthelpersRRRR R&(((s4/home/prologic/work/circuits/tests/web/test_value.pyts circuits-3.1.0/tests/web/__pycache__/test_exceptions.cpython-26-PYTEST.pyc0000644000014400001440000001571112407376151027366 0ustar prologicusers00000000000000 ?Tc@sddkZddkiiZddklZddkl Z l Z l Z ddk l Z lZdefdYZdZd Zd Zd ZdS( iN(t Controller(t ForbiddentNotFoundtRedirecti(turlopent HTTPErrortRootcBs5eZdZdZdZdZdZRS(cCsdS(Ns Hello World!((tself((s9/home/prologic/work/circuits/tests/web/test_exceptions.pytindex scCstddS(Nt/(R(R((s9/home/prologic/work/circuits/tests/web/test_exceptions.pyt test_redirectscCs tdS(N(R(R((s9/home/prologic/work/circuits/tests/web/test_exceptions.pyttest_forbiddenscCs tdS(N(R(R((s9/home/prologic/work/circuits/tests/web/test_exceptions.pyt test_notfoundscCsd|iids   circuits-3.1.0/tests/web/__pycache__/test_call_wait.cpython-27-PYTEST.pyc0000644000014400001440000000450512414363102027132 0ustar prologicusers00000000000000 ?TJc@sddlZddljjZddlmZddlm Z m Z ddl m Z de fdYZ de fd YZd efd YZd ZdS( iN(t Controller(t ComponenttEventi(turlopentfoocBseZdZRS(s foo Event(t__name__t __module__t__doc__(((s8/home/prologic/work/circuits/tests/web/test_call_wait.pyR stAppcBseZdZdZRS(tappcCsdS(Ns Hello World!((tself((s8/home/prologic/work/circuits/tests/web/test_call_wait.pyRs(RRtchannelR(((s8/home/prologic/work/circuits/tests/web/test_call_wait.pyR stRootcBseZdZRS(ccs"|jtdV}|jVdS(NR (tcallRtvalue(R R((s8/home/prologic/work/circuits/tests/web/test_call_wait.pytindexs(RRR(((s8/home/prologic/work/circuits/tests/web/test_call_wait.pyR scCstj|}zt|jjj}|j}d}||k}|stjd |fd ||fitj |d6dt j kstj |rtj |ndd6}d i|d 6}t tj|nd}}Wd|jXdS( Ns Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(RtregisterRtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonet unregister(twebappR tfRt @py_assert2t @py_assert1t @py_format4t @py_format6((s8/home/prologic/work/circuits/tests/web/test_call_wait.pyttests  l(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRtcircuitsRRthelpersRRRR R*(((s8/home/prologic/work/circuits/tests/web/test_call_wait.pyts circuits-3.1.0/tests/web/__pycache__/test_security.cpython-27-PYTEST.pyc0000644000014400001440000000777212414363102027053 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZyddlm Z Wn!e k reddl m Z nXddl m Z mZdefdYZdZd Zd ZdS( iN(t Controller(tHTTPConnectioni(turlopent HTTPErrortRootcBseZdZRS(cCsdS(Ns Hello World!((tself((s7/home/prologic/work/circuits/tests/web/test_security.pytindexs(t__name__t __module__R(((s7/home/prologic/work/circuits/tests/web/test_security.pyR scCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(twebapptfR t @py_assert2t @py_assert1t @py_format4t @py_format6((s7/home/prologic/work/circuits/tests/web/test_security.pyt test_roots  lc Csny!d|jjj}t|Wntk r }|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}n`Xtsjdid t j ks8tj trGtjtnd d6}t tj |ndS(Ns%s/../../../../../../etc/passwdis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)stpy2teR R R sassert %(py7)stpy7sassert %(py0)stFalse(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)ssassert %(py7)ssassert %(py0)s(RRRRRtcodeRRRRRRRRRR%( RturlR#Rt @py_assert4t @py_assert3R t @py_format8t @py_format1((s7/home/prologic/work/circuits/tests/web/test_security.pyttest_badpath_notfounds  |Ac Cst|jj|jj}|jd}|jd||j}|j}d}||k}|s tj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d 6}di|d 6}ttj|nd}}}|j}d }||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d 6}di|d 6}ttj|nd}}}|jdS(Ns/../../../../../../etc/passwdtGETi-s==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)sR"tresponseR R R sassert %(py7)sR$sMoved Permanentlys.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)ssassert %(py7)s(s==(s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ssassert %(py7)s(RRthosttporttconnecttrequestt getresponsetstatusRRRRRRRRRtreasontclose( Rt connectiontpathR.RR(R)R R*((s7/home/prologic/work/circuits/tests/web/test_security.pyttest_badpath_redirect#s,    |  |(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRthttplibRt ImportErrort http.clientthelpersRRRR!R,R9(((s7/home/prologic/work/circuits/tests/web/test_security.pyts    circuits-3.1.0/tests/web/__pycache__/test_dispatcher2.cpython-32-PYTEST.pyc0000644000014400001440000002265312414363276027417 0ustar prologicusers00000000000000l ?T*c@sddlZddljjZddlmZmZddl m Z GddeZ GddeZ Gd d eZ d Zd Zd ZdZdZdZdS(iN(uexposeu Controlleri(uurlopencsM|EeZfdZdZdZeddZdZS(cs7tt|j|||t7}|t7}dS(N(usuperuRootu__init__uHellouWorld(uselfuargsukwargs(u __class__(u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyu__init__ s cCsdS(Nuindex((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuindexscCsdS(Nuhello1((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuhello1suhello2cCsdS(Nuhello2((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuhello2scCsd|S(Nuquery %s((urequtest((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuquerys(u__name__u __module__u__init__uindexuhello1uexposeuhello2uquery(u __locals__((u __class__u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuRoot s   uRootcBs/|EeZdZdZdZdZdS(u/hellocCsdS(Nu hello index((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuindex scCsdS(Nu hello test((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyutest#scCsd|S(Nuhello query %s((urequtest((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuquery&sN(u__name__u __module__uchanneluindexutestuquery(u __locals__((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuHellos   uHellocBs&|EeZdZdZdZdS(u/worldcCsdS(Nu world index((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuindex-scCsdS(Nu world test((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyutest0sN(u__name__u __module__uchanneluindexutest(u __locals__((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuWorld*s  uWorldcCsd|jjj}t|}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS(Nu %s/hello1shello1u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(userveruhttpubaseuurlopenureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappuurlufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyu test_simple4s   lcCsd|jjj}t|}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS(Nu %s/hello2shello2u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(userveruhttpubaseuurlopenureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappuurlufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyu test_expose;s   lcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Nsindexu==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyu test_indexBs  lcCsd|jjj}t|}|j}d}||k}|stjd |fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}d |jjj}t|}|j}d }||k}|stjd|fd||fitj|d6dtj kswtj |rtj|ndd6}di|d 6}t tj |nd}}dS(Nu %s/hello/s hello indexu==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u %s/world/s world index(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(userveruhttpubaseuurlopenureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappuurlufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyutest_controller_indexHs(   l    lcCsd|jjj}t|}|j}d}||k}|stjd |fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}d |jjj}t|}|j}d }||k}|stjd|fd||fitj|d6dtj kswtj |rtj|ndd6}di|d 6}t tj |nd}}dS(Nu %s/hello/tests hello testu==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u %s/world/tests world test(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(userveruhttpubaseuurlopenureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappuurlufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyutest_controller_exposeTs(   l    lcCsd|jjj}t|}|j}d}||k}|stjd |fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}d |jjj}t|}|j}d }||k}|stjd|fd||fitj|d6dtj kswtj |rtj|ndd6}di|d 6}t tj |nd}}dS(Nu%s/query?test=1squery 1u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u%s/hello/query?test=2s hello query 2(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(userveruhttpubaseuurlopenureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappuurlufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyu test_query`s(   l    l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webuexposeu ControlleruhelpersuurlopenuRootuHellouWorldu test_simpleu test_exposeu test_indexutest_controller_indexutest_controller_exposeu test_query(((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyus      circuits-3.1.0/tests/web/__pycache__/test_static.cpython-26-PYTEST.pyc0000644000014400001440000002630612407376151026476 0ustar prologicusers00000000000000 ?T c @sddkZddkiiZddklZyddkl Z Wn#e j oddk l Z nXddk l Z ddklZddklZlZlZde fd YZd Zd Zd Zd ZdZdZdZdZdZdZdS(iN(tpath(tHTTPConnection(t Controlleri(tDOCROOT(tquoteturlopent HTTPErrortRootcBseZdZRS(cCsdS(Ns Hello World!((tself((s5/home/prologic/work/circuits/tests/web/test_static.pytindexs(t__name__t __module__R (((s5/home/prologic/work/circuits/tests/web/test_static.pyRscCst|iii}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(twebapptfR t @py_assert2t @py_assert1t @py_format4t @py_format6((s5/home/prologic/work/circuits/tests/web/test_static.pyttests  ocCsMytd|iiiWntj o}|i}d}||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}|i}d }||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}nfXtp]d hdti jpti toti tndd6}t ti |ndS(Ns%s/foois==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)steR tpy2Rsassert %(py7)stpy7s Not Founds+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)stFalse(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)s(RRRRRtcodeRRRRRRRRRtmsgR'(RR$R t @py_assert4t @py_assert3R"t @py_format8t @py_format1((s5/home/prologic/work/circuits/tests/web/test_static.pyttest_404s,    DcCsd|iii}t|}|ii}d}||j}|ptid |fd ||fhdti jpti |oti |ndd6ti |d6}dh|d 6}t ti |nd}}dS( Ns%s/static/helloworld.txts Hello World!s==s%(py0)s == %(py3)sR R Rsassert %(py5)sR(s==(s%(py0)s == %(py3)s(RRRRRtstripRRRRRRRRR(RturlRR RR R!R"((s5/home/prologic/work/circuits/tests/web/test_static.pyt test_file(s  ocCs]d|iii}t|}|ii}ti}d}|t|}d}t ||}|i} | } || j} | ot i df| fdf|| fh t i | d6t i |d6t i | d6t i |d 6t i |d 6d t ijp t i|ot i |nd d 6d t ijp t itot i tnd d6dt ijp t it ot i t ndd6t i |d6dt ijp t itot i tndd6t i |d6} dh| d6} tt i| nt} }}}}}} } dS(Ns%s/static/largefile.txts largefile.txttrbs==s%(py0)s == %(py18)s {%(py18)s = %(py16)s {%(py16)s = %(py14)s {%(py14)s = %(py2)s(%(py10)s {%(py10)s = %(py5)s {%(py5)s = %(py3)s.join }(%(py6)s, %(py8)s) }, %(py12)s) }.read }() }tpy18tpy14tpy16tpy10tpy12R R RRtopenR%RRtpy6tpy8sassert %(py20)stpy20(RRRRRR/RtjoinRR8RRRRRRRRR(RR0RR R*t @py_assert7t @py_assert9t @py_assert11t @py_assert13t @py_assert15t @py_assert17R t @py_format19t @py_format21((s5/home/prologic/work/circuits/tests/web/test_static.pyttest_largefile/s"   cCsMytd|iiiWntj o}|i}d}||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}|i}d }||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}nfXtp]d hdti jpti toti tndd6}t ti |ndS(Ns%s/static/foo.txtis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sR$R R%Rsassert %(py7)sR&s Not Founds+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)sR'(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)s(RRRRRR(RRRRRRRRRR)R'(RR$R R*R+R"R,R-((s5/home/prologic/work/circuits/tests/web/test_static.pyt test_file4046s,    DcCstd|iii}|i}d}||j}|ptid |fd ||fhti|d6dti jpti |oti|ndd6}dh|d 6}t ti |nd}}dS( Ns %s/static/shelloworld.txttins%(py1)s in %(py3)stpy1R Rsassert %(py5)sR(RG(s%(py1)s in %(py3)s(RRRRRRRRRRRRRR(RRR t @py_assert0RR!R"((s5/home/prologic/work/circuits/tests/web/test_static.pyttest_directory@s  ocCsdi|iiitd}t|}|ii}d}||j}|pti d |fd ||fhdt i jpti |oti |ndd6ti |d6}d h|d 6}tti|nd}}dS( Ns {0:s}{1:s}s/static/#foobar.txts Hello World!s==s%(py0)s == %(py3)sR R Rsassert %(py5)sR(s==(s%(py0)s == %(py3)s(tformatRRRRRRR/RRRRRRRRR(RR0RR RR R!R"((s5/home/prologic/work/circuits/tests/web/test_static.pyttest_file_quoatingFs!  ocCst|ii|ii}|idd|iiidhdd6|i}|i}d}||j}| ot i df|fdf||fhd t i jp t i |ot i|nd d 6t i|d 6t i|d 6}d h|d6}tt i|nt}}}|i}ti}d} |t| } d} t| | } | i} d}| |}||j}| ot i df|fdf||fh t i|d6t i|d6t i| d6t i| d6t i| d6t i| d6dt i jp t i |ot i|ndd 6dt i jp t i tot itndd6dt i jp t i tot itndd 6t i|d 6dt i jp t i tot itndd6t i| d6}d h|d!6}tt i|nt}}} } } } } }}dS("NtGETs%s/static/largefile.txttheaderss bytes=0-100tRangeis==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)stresponseR R%Rsassert %(py7)sR&s largefile.txtR2ies%(py0)s == %(py20)s {%(py20)s = %(py16)s {%(py16)s = %(py14)s {%(py14)s = %(py2)s(%(py10)s {%(py10)s = %(py5)s {%(py5)s = %(py3)s.join }(%(py6)s, %(py8)s) }, %(py12)s) }.read }(%(py18)s) }R;R3R4R5R6R7R RRR8RR9R:sassert %(py22)stpy22(RRthosttporttrequestRRt getresponsetstatusRRRRRRRRRRRR<RR8(Rt connectionRPR R*R+R"R,R R=R>R?R@RARBt @py_assert19RDt @py_format23((s5/home/prologic/work/circuits/tests/web/test_static.pyt test_rangeMs6*       cCs.t|ii|ii}|idd|iiidhdd6|i}|i}d}||j}|pt i d|fd||fhd t i jpt i |ot i|nd d 6t i|d 6t i|d 6}d h|d6}tt i|nd}}}dS(NRMs%s/static/largefile.txtRNsbytes=0-50,51-100ROis==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)sRPR R%Rsassert %(py7)sR&(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)s(RRRRRSRTRRRURVRRRRRRRRR(RRWRPR R*R+R"R,((s5/home/prologic/work/circuits/tests/web/test_static.pyt test_rangesWs*   cCs.t|ii|ii}|idd|iiidhdd6|i}|i}d}||j}|pt i d|fd||fhd t i jpt i |ot i|nd d 6t i|d 6t i|d 6}d h|d6}tt i|nd}}}dS(NRMs%s/static/largefile.txtRNsbytes=0-100,100-10000,0-1ROis==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)sRPR R%Rsassert %(py7)sR&(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)s(RRRRRSRTRRRURVRRRRRRRRR(RRWRPR R*R+R"R,((s5/home/prologic/work/circuits/tests/web/test_static.pyttest_unsatisfiable_range1es*   (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtosRthttplibRt ImportErrort http.clientt circuits.webRtconftestRthelpersRRRRR#R.R1RERFRJRLRZR[R\(((s5/home/prologic/work/circuits/tests/web/test_static.pyts(       circuits-3.1.0/tests/web/__pycache__/test_jsonrpc.cpython-27-PYTEST.pyc0000644000014400001440000000527212414363102026653 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z m Z ddl m Z ddl mZdefdYZd e fd YZd ZdS( iN(t Component(t ControllertJSONRPCi(t ServerProxy(turlopentAppcBseZdZRS(cCs t|S(N(teval(tselfts((s6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyR s(t__name__t __module__R(((s6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyR stRootcBseZdZRS(cCsdS(Ns Hello World!((R((s6/home/prologic/work/circuits/tests/web/test_jsonrpc.pytindexs(R R R (((s6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyR scCstd}t}|j||j|t|jjj}|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nd}}d |jjj} t| d td d} | jd} | d} d} | | k}|stj d|fd| | fitj | d6tj | d6}di|d6}ttj|nd} }} |j|jdS(Ns/rpcs Hello World!s==s%(py0)s == %(py3)stpy3Rtpy0tsassert %(py5)stpy5s%s/rpct allow_nonetencodingsutf-8s1 + 2tresultis%(py1)s == %(py4)stpy1tpy4sassert %(py6)stpy6(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py1)s == %(py4)ssassert %(py6)s(RRtregisterRtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNoneRtTrueRt unregister(twebapptrpcttesttfRt @py_assert2t @py_assert1t @py_format4t @py_format6turltjsonrpctdatat @py_assert0t @py_assert3t @py_format5t @py_format7((s6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyR)s4      l   E (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtcircuitsRt circuits.webRRt jsonrpclibRthelpersRRR R)(((s6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyts circuits-3.1.0/tests/web/__pycache__/jsonrpclib.cpython-33.pyc0000644000014400001440000003520012414363412025250 0ustar prologicusers00000000000000 ?T1c@svddlZddlZddlZejddkZy$ddlmZddlmZWn2ek rddl m Zddl m ZYnXy0ddl m Z ddl mZmZmZWn>ek rddlm Z ddlmZmZmZYnXd Zd ad d ZGd ddeZGdddeZddZddddddZGdddeZGdddeZGdddeZGdddZGdddeZ Gdd d eZ!e"d!krre!d"d#d Z#e#j$d$Z%e&e%e#j'd%Z(e&e(e#j$d$d&Z)e&e)e#j$d'Z*e&e*ndS((iNi(uHTTPConnection(uHTTPSConnection(uHTTP(uHTTPS(uunquote(u splithostu splittypeu splituseru0.0.1icCstdatS(Ni(uID(((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu_gen_id:s u_gen_idcBs&|EeZdZdZddZdS(uErroruBase class for client errors.cCs t|S(N(urepr(uself((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu__str__Hsu Error.__str__N(u__name__u __module__u __qualname__u__doc__u__str__(u __locals__((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyuErrorFsuErrorcBs2|EeZdZdZddZddZdS(u ProtocolErroru!Indicates an HTTP protocol error.cCs>tj|||_||_||_||_||_dS(N(uErroru__init__uurluerrcodeuerrmsguheadersuresponse(uselfuurluerrcodeuerrmsguheadersuresponse((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu__init__Ys      uProtocolError.__init__cCsd|j|j|jfS(Nu(uurluerrcodeuerrmsg(uself((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu__repr__asuProtocolError.__repr__N(u__name__u __module__u __qualname__u__doc__u__init__u__repr__(u __locals__((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu ProtocolErrorVs u ProtocolErrorcCs"t|}t|}||fS(N(u UnmarshalleruParser(uencodinguunupar((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu getparserhs  u getparsercCs>|r:i}||d<||d(u_ServerProxy__hostu_ServerProxy__handler(uself((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu__repr__suServerProxy.__repr__cCst|j|S(N(u_Methodu_ServerProxy__request(uselfuname((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu __getattr__suServerProxy.__getattr__N( u__name__u __module__u __qualname__uNoneu__init__u_ServerProxy__requestu__repr__u__str__u __getattr__(u __locals__((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu ServerProxys   u ServerProxyu__main__uhttp://localhost:8080/foo/uverboseufoo baruotherubazi(+usysujsonubase64u version_infouPY3u http.clientuHTTPConnectionuHTTPSConnectionu ImportErroruhttplibuHTTPuHTTPSu urllib.parseuunquoteu splithostu splittypeu splituseruurllibu __version__uIDu_gen_idu ExceptionuErroru ProtocolErroru getparseruNoneudumpsuobjectu UnmarshalleruParseru_Methodu Transportu SafeTransportu ServerProxyu__name__usuechoucuprintubadudueuf(((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu!sN      !    9    circuits-3.1.0/tests/web/__pycache__/helpers.cpython-34.pyc0000644000014400001440000000172512414363522024555 0ustar prologicusers00000000000000 ?T<@sy~ddlmZmZddlmZmZmZddlmZm Z ddlm Z m Z m Z ddlm Z mZWnek r ddlmZddlmZmZddlmZmZm Z ddlmZm Z dd lm Z m Z m Z mZYnXydd lmZWn"ek rEdd lmZYnXydd lmZWn"ek r~dd lmZYnXd S) ) HTTPErrorURLError)quote urlencodeurljoin)HTTPBasicAuthHandlerHTTPCookieProcessor)urlopen build_openerinstall_opener)HTTPDigestAuthHandlerRequest)r)rr)rrr )r r r r ) CookieJar)urlparseN) urllib.errorrr urllib.parserrrurllib.requestrrr r r r r ImportErrorrurllibZurllib2http.cookiejarr cookielibrr1/home/prologic/work/circuits/tests/web/helpers.pys& '  circuits-3.1.0/tests/web/__pycache__/test_headers.cpython-34-PYTEST.pyc0000644000014400001440000001100612414363522026604 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZddlm Z GdddeZ ddZ d d Z d d Z d dZdS)N) Controller)urlopenc@s4eZdZddZddZddZdS)RootcCsdS)Nz Hello World!)selfrr6/home/prologic/work/circuits/tests/web/test_headers.pyindex sz Root.indexcCsd|jjds  circuits-3.1.0/tests/web/__pycache__/test_disps.cpython-33-PYTEST.pyc0000644000014400001440000001203612414363411026313 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z ddl m Z ddl m Z mZddlmZddlmZmZGd d d e ZGd d d eZGd ddeZGdddeZddZdS(iN(uManager(uhandler(u BaseComponent(u BaseServeru Controller(u Dispatcheri(uurlopenuurljoincsJ|EeZdZdZfddZedddddZS( uPrefixingDispatcheru3Forward to another Dispatcher based on the channel.cstt|jd|dS(Nuchannel(usuperuPrefixingDispatcheru__init__(uselfuchannel(u __class__(u4/home/prologic/work/circuits/tests/web/test_disps.pyu__init__suPrefixingDispatcher.__init__urequestupriorityg?cCs5|jjd}td|j|}||_dS(Nu/u/%s/(upathustripuurljoinuchannel(uselfueventurequesturesponseupath((u4/home/prologic/work/circuits/tests/web/test_disps.pyu _on_requestsuPrefixingDispatcher._on_request(u__name__u __module__u __qualname__u__doc__u__init__uhandleru _on_request(u __locals__((u __class__u4/home/prologic/work/circuits/tests/web/test_disps.pyuPrefixingDispatcher suPrefixingDispatchercBs&|EeZdZdZddZdS(u DummyRootu/cCsdS(NuNot used((uself((u4/home/prologic/work/circuits/tests/web/test_disps.pyuindexsuDummyRoot.indexN(u__name__u __module__u __qualname__uchanneluindex(u __locals__((u4/home/prologic/work/circuits/tests/web/test_disps.pyu DummyRootsu DummyRootcBs&|EeZdZdZddZdS(uRoot1u/site1cCsdS(NuHello from site 1!((uself((u4/home/prologic/work/circuits/tests/web/test_disps.pyuindex'su Root1.indexN(u__name__u __module__u __qualname__uchanneluindex(u __locals__((u4/home/prologic/work/circuits/tests/web/test_disps.pyuRoot1#suRoot1cBs&|EeZdZdZddZdS(uRoot2u/site2cCsdS(NuHello from site 2!((uself((u4/home/prologic/work/circuits/tests/web/test_disps.pyuindex/su Root2.indexN(u__name__u __module__u __qualname__uchanneluindex(u __locals__((u4/home/prologic/work/circuits/tests/web/test_disps.pyuRoot2+suRoot2c Cst}tddd}|j|tddj|tddj|tj|tddd}|j|tddj|tddj|tj|tj||jt |j j dd}|j }d}||k}|st jd|fd||fit j|d 6d tjksgt j|rvt j|nd d 6}di|d6}tt j|nd}}t |j j dd}|j }d}||k}|st jd|fd||fit j|d 6d tjksBt j|rQt j|nd d 6}di|d6}tt j|nd}}dS(Niuchannelusite1u localhostusite2utimeoutisHello from site 1!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5sHello from site 2!(u localhosti(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uManageru BaseServeruregisteruPrefixingDispatcheru DispatcheruRoot1uRoot2u DummyRootustartuurlopenuhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone( umanageruserver1userver2ufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u4/home/prologic/work/circuits/tests/web/test_disps.pyu test_disps3s>      l   lu test_disps(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuits.core.manageruManagerucircuits.core.handlersuhandlerucircuits.core.componentsu BaseComponentu circuits.webu BaseServeru Controlleru#circuits.web.dispatchers.dispatcheru DispatcheruhelpersuurlopenuurljoinuPrefixingDispatcheru DummyRootuRoot1uRoot2u test_disps(((u4/home/prologic/work/circuits/tests/web/test_disps.pyus circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_generator.cpython-34-PYTEST.pyc0000644000014400001440000000250412414363523031735 0ustar prologicusers00000000000000 ?T@sJddlZddljjZddlmZddZddZ dS)N)urlopencCs/d}dg}|||dd}|S)Nz200 OK Content-type text/plaincssdVdVdS)NzHello zWorld!rrrE/home/prologic/work/circuits/tests/web/test_wsgi_gateway_generator.pyresponse szapplication..response)rrr)environstart_responsestatusresponse_headersrrrr applications    r cCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS) Ns Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5)r)rr)rserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)webappfr @py_assert2 @py_assert1 @py_format4 @py_format6rrrtests  lr)) builtinsr_pytest.assertion.rewrite assertionrewriterhelpersrr r)rrrrs  circuits-3.1.0/tests/web/__pycache__/test_digestauth.cpython-33-PYTEST.pyc0000644000014400001440000000715212414363411027335 0ustar prologicusers00000000000000 ?T=c@sddlZddljjZddlZejdddkrSejdnddl m Z ddl m Z m Z ddlmZmZdd lmZmZmZGd d d e Zd d ZdS(iNiiuBroken on Python 3.3(u Controller(u check_authu digest_authi(u HTTPErroruHTTPDigestAuthHandler(uurlopenu build_openeruinstall_openercBs |EeZdZddZdS(uRootcCsKd}idd6}t|j|j||r2dSt|j|j||S(NuTestuadminu Hello World!(u check_authurequesturesponseu digest_auth(uselfurealmuusers((u9/home/prologic/work/circuits/tests/web/test_digestauth.pyuindexs  u Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u9/home/prologic/work/circuits/tests/web/test_digestauth.pyuRootsuRootcCslyt|jjj}Wntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksutj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsHdidt j kstj dr%tjdndd6}t tj |nt} | jd|jjjddt| } t| t|jjj}|j} d} | | k}|sTtjd|fd| | fitj| d6dt j kstj | r tj| ndd6} d i| d6}t tj |nd}} tddS(!Niu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Unauthorizedu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalseuTestuadmins Hello World!u%(py0)s == %(py3)supy3usuassert %(py5)s(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalseuHTTPDigestAuthHandleru add_passwordu build_openeruinstall_openeruread(uwebappufueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1uhandleruopenerusu @py_assert2u @py_format4((u9/home/prologic/work/circuits/tests/web/test_digestauth.pyutestsH  |  |!A     l utest(ii(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuPYVERuskipu circuits.webu Controllerucircuits.web.toolsu check_authu digest_authuhelpersu HTTPErroruHTTPDigestAuthHandleruurlopenu build_openeruinstall_openeruRootutest(((u9/home/prologic/work/circuits/tests/web/test_digestauth.pyus   circuits-3.1.0/tests/web/__pycache__/test_call_wait.cpython-34-PYTEST.pyc0000644000014400001440000000354412414363522027140 0ustar prologicusers00000000000000 ?TJ@sddlZddljjZddlmZddlm Z m Z ddl m Z Gddde Z Gdd d e ZGd d d eZd d ZdS)N) Controller) ComponentEvent)urlopenc@seZdZdZdS)fooz foo EventN)__name__ __module__ __qualname____doc__r r 8/home/prologic/work/circuits/tests/web/test_call_wait.pyr s rc@s"eZdZdZddZdS)AppappcCsdS)Nz Hello World!r )selfr r r rszApp.fooN)rr r channelrr r r r r s rc@seZdZddZdS)Rootccs"|jtdV}|jVdS)Nr)callrvalue)rrr r r indexsz Root.indexN)rr r rr r r r rs rc Cstj|}zt|jjj}|j}d}||k}|stjd |fd ||fitj |d6dt j kstj |rtj |ndd6}d i|d 6}t tj|nt}}Wd|jXdS) Ns Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5)r)rr)rregisterrserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone unregister)webapprfr @py_assert2 @py_assert1 @py_format4 @py_format6r r r tests  lr3)builtinsr&_pytest.assertion.rewrite assertionrewriter# circuits.webrcircuitsrrhelpersrrrrr3r r r r s circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_multiple_apps.cpython-32-PYTEST.pyc0000644000014400001440000000574512414363276032642 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlZejddd krSejdnddl m Z ddl m Z ddl mZd Zd Zejd Zd ZdS(iNiiuBroken on Python 3.3(uServer(uGatewayi(uurlopencCs d}dg}|||dS(Nu200 OKu Content-typeu text/plainu Hello World!(u Content-typeu text/plain((uenvironustart_responseustatusuresponse_headers((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pyuhello s  cCs d}dg}|||dS(Nu200 OKu Content-typeu text/plainuFooBar!(u Content-typeu text/plain((uenvironustart_responseustatusuresponse_headers((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pyufoobars  cCsitd6td6S(Nu/u/foobar(uhelloufoobar(urequest((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pyuappssc Cstd}t|j|tj|d}|j|jt|jj }|j }d}||k}|st j d|fd||fit j |d6dtjkst j|rt j |ndd6}di|d 6}tt j|nd}}td j|jj }|j }d }||k}|st j d|fd||fit j |d6dtjkst j|rt j |ndd6}di|d 6}tt j|nd}}|jdS(Niureadys Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u {0:s}/foobar/sFooBar!(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uServeruGatewayuregisterupytestu WaitEventustartuwaituurlopenuhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuformatustop( uappsuserveruwaiterufusu @py_assert2u @py_assert1u @py_format4u @py_format6((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pyutest#s0     l   l (ii(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuPYVERuskipu circuits.webuServerucircuits.web.wsgiuGatewayuhelpersuurlopenuhelloufoobarufixtureuappsutest(((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pyus    circuits-3.1.0/tests/web/__pycache__/test_serve_download.cpython-32-PYTEST.pyc0000644000014400001440000000720612414363276030217 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZGdde Zd ZdS( iN(umkstemp(uhandler(u Controlleri(uurlopencBsS|EeZeddddddZeddddZd Zd S( ustartedupriorityg?uchannelu*cCs3t\}|_tj|dtj|dS(Ns Hello World!(umkstempufilenameuosuwriteuclose(uselfu componentufd((u=/home/prologic/work/circuits/tests/web/test_serve_download.pyu _on_startedsustoppedu(cCstj|jdS(N(uosuremoveufilename(uselfu component((u=/home/prologic/work/circuits/tests/web/test_serve_download.pyu _on_stoppedscCs|j|jS(N(userve_downloadufilename(uself((u=/home/prologic/work/circuits/tests/web/test_serve_download.pyuindexsN(u__name__u __module__uhandleru _on_startedu _on_stoppeduindex(u __locals__((u=/home/prologic/work/circuits/tests/web/test_serve_download.pyuRoot s !uRootc Cs t|jjj}|j}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}|jd }|jd }d }||k}|stjd|fd||fitj|d6d tj ks\tj |rktj|nd d6}di|d 6}t tj |nd}}|j}d} || } | sWdditj|d6dtj kstj |rtj|ndd6tj| d6tj| d6} t tj | nd}} } d} | |k}|stjd|fd| |fidtj kstj |rtj|ndd6tj| d6}d i|d 6}t tj |nd} }dS(!Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u Content-TypeuContent-Dispositionuapplication/x-downloadu contentTypeu attachment;uLassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.startswith }(%(py4)s) }upy2ucontentDispositionupy6upy4ufilenameuinu%(py1)s in %(py3)supy1(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uin(u%(py1)s in %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuheadersu startswith( uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6u contentTypeucontentDispositionu @py_assert3u @py_assert5u @py_format7u @py_assert0((u=/home/prologic/work/circuits/tests/web/test_serve_download.pyutests@  l    l   u l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruosutempfileumkstempucircuitsuhandleru circuits.webu ControlleruhelpersuurlopenuRootutest(((u=/home/prologic/work/circuits/tests/web/test_serve_download.pyus  circuits-3.1.0/tests/web/__pycache__/test_websockets.cpython-33-PYTEST.pyc0000644000014400001440000001752112414363412027347 0ustar prologicusers00000000000000 ?TN c@sddlmZddlZddljjZddlm Z ddl m Z ddl m Z ddlmZmZddlmZmZdd lmZGd d d e ZGd d d e ZGddde ZddZdS(i(uprint_functionN(u Component(uServer(u Controller(ucloseuwrite(uWebSocketClientuWebSocketsDispatcheri(uurlopencBsJ|EeZdZdZddZddZddZdd Zd S( uEchouwsservercCs g|_dS(N(uclients(uself((u9/home/prologic/work/circuits/tests/web/test_websockets.pyuinitsu Echo.initcCsF|jj|td|||jt|dj||dS(NuWebSocket Client Connected:uWelcome {0:s}:{1:d}(uclientsuappenduprintufireuwriteuformat(uselfusockuhostuport((u9/home/prologic/work/circuits/tests/web/test_websockets.pyuconnectsu Echo.connectcCs|jj|dS(N(uclientsuremove(uselfusock((u9/home/prologic/work/circuits/tests/web/test_websockets.pyu disconnectsuEcho.disconnectcCs|jt|d|dS(Nu Received: (ufireuwrite(uselfusockudata((u9/home/prologic/work/circuits/tests/web/test_websockets.pyuread su Echo.readN(u__name__u __module__u __qualname__uchanneluinituconnectu disconnecturead(u __locals__((u9/home/prologic/work/circuits/tests/web/test_websockets.pyuEchos    uEchocBs |EeZdZddZdS(uRootcCsdS(Nu Hello World!((uself((u9/home/prologic/work/circuits/tests/web/test_websockets.pyuindex&su Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u9/home/prologic/work/circuits/tests/web/test_websockets.pyuRoot$suRootcBs2|EeZdZdZddZddZdS(uClientuwscOs d|_dS(N(uNoneuresponse(uselfuargsukwargs((u9/home/prologic/work/circuits/tests/web/test_websockets.pyuinit.su Client.initcCs ||_dS(N(uresponse(uselfudata((u9/home/prologic/work/circuits/tests/web/test_websockets.pyuread1su Client.readN(u__name__u __module__u __qualname__uchanneluinituread(u __locals__((u9/home/prologic/work/circuits/tests/web/test_websockets.pyuClient*s uClientcCsptdj|}|jdtj|}tj||jdddt|jjj}|j }d}||k}|s%t j d+|fd,||fit j |d 6d t jkst j|rt j |nd d 6} d-i| d6} tt j| nd}}|jtdj||jddddj|j|j} t| j|tj|} |jddd|jddd|j}t|} d}| |k}|st j d.|fd/| |fit j |d 6dt jksAt j|rPt j |ndd6dt jksxt jtrt j tndd 6t j |d6t j | d6}d0i|d6}tt j|nd}} }}|jddd| j}|j}d}||}|sd dit j |d 6d!t jkset j| rtt j | nd!d 6t j |d"6t j |d6t j |d#6}tt j|nd}}}}|j| jtd$d|jddd| j}d%} || k}|st j d1|fd2|| fit j |d 6d!t jkst j| rt j | nd!d 6t j | d6} d3i| d(6}tt j|nd}}} t|jjj}|j }d}||k}|st j d4|fd5||fit j |d 6d t jkskt j|rzt j |nd d 6} d6i| d6} tt j| nd}}|j}t|} d}| |k}|st j d7|fd8| |fit j |d 6dt jks7t j|rFt j |ndd6dt jksnt jtr}t j tndd 6t j |d6t j | d6}d9i|d6}tt j|nd}} }}| jt d|jd)dd|j}t|} d}| |k}|s"t j d:|fd;| |fit j |d 6dt jkst j|rt j |ndd6dt jkst jtrt j tndd 6t j |d6t j | d6}d<i|d6}tt j|nd}} }}| j!|jd*|j|j!|jd*dS(=Niureadyu registereduchanneluwsservers Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u /websocketuwebuws://{0:s}:{1:d}/websocketuwsclientu connectediuM%(py5)s {%(py5)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.clients }) } == %(py8)suechoupy1ulenupy8uassert %(py10)supy10ureaduwsuWelcomeujassert %(py8)s {%(py8)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.startswith }(%(py6)s) }upy2uclientupy6upy4uHello!uReceived: Hello!u0%(py2)s {%(py2)s = %(py0)s.response } == %(py5)suassert %(py7)supy7u disconnectu unregistered(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(uM%(py5)s {%(py5)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.clients }) } == %(py8)suassert %(py10)s(u==(u0%(py2)s {%(py2)s = %(py0)s.response } == %(py5)suassert %(py7)s(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(uM%(py5)s {%(py5)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.clients }) } == %(py8)suassert %(py10)s(u==(uM%(py5)s {%(py5)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.clients }) } == %(py8)suassert %(py10)s("uServeruregisteruwaituEchouRootuurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuclearuWebSocketsDispatcheruformatuhostuportuWebSocketClientuClientuclientsulenuresponseu startswithufireuwriteucloseu unregister(umanageruwatcheruwebappuserveruechoufusu @py_assert2u @py_assert1u @py_format4u @py_format6uuriuclientu @py_assert4u @py_assert7u @py_assert6u @py_format9u @py_format11u @py_assert3u @py_assert5u @py_format8((u9/home/prologic/work/circuits/tests/web/test_websockets.pyutest5s   l         |  l         utest(u __future__uprint_functionubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsu Componentucircuits.web.serversuServerucircuits.web.controllersu Controllerucircuits.net.socketsucloseuwriteucircuits.web.websocketsuWebSocketClientuWebSocketsDispatcheruhelpersuurlopenuEchouRootuClientutest(((u9/home/prologic/work/circuits/tests/web/test_websockets.pyus  circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_null_response.cpython-27-PYTEST.pyc0000644000014400001440000000356212414363102032637 0ustar prologicusers00000000000000 ?Tc@sjddlZddljjZddlmZddlm Z de fdYZ dZ dZ dS( iNi(turlopen(t ControllertRootcBseZdZRS(cOsdS(NtERROR((tselftargstkwargs((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pytindex s(t__name__t __module__R(((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pyRscCsd}||gdgS(Ns200 OKt((tenvirontstart_responsetstatus((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pyt applications cCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d6}t tj |nd}}dS( NR s==s%(py0)s == %(py3)stpy3tstpy0sassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pyttests  l( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthelpersRt circuits.webRRRR&(((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pyts  circuits-3.1.0/tests/web/__pycache__/test_sessions.cpython-32-PYTEST.pyc0000644000014400001440000000524112414363276027047 0ustar prologicusers00000000000000l ?T1c@szddlZddljjZddlmZmZddl m Z m Z ddl m Z GddeZ dZdS( iN(u ControlleruSessionsi(u build_openeruHTTPCookieProcessor(u CookieJarcBs|EeZddZdS(cCs9|r|}||jds  circuits-3.1.0/tests/web/__pycache__/test_core.cpython-34-PYTEST.pyc0000644000014400001440000002157312414363522026133 0ustar prologicusers00000000000000 ?T$ @sMddlZddljjZddlZddlmZm Z ddl m Z ddl m Z mZmZGddde Zdd Zd d Zd d Zejjddgifedfddgifedfdgidd6fedfgddZddZddZddZddZdS)N)bu) Controller) urlencodeurlopen HTTPErrorc@sjeZdZddZddZddddZdd Zd d Zd d ZddZ dS)RootcCsdS)Nz Hello World!)selfr r 3/home/prologic/work/circuits/tests/web/test_core.pyindexsz Root.indexcOsdjt|t|S)Nz{0} {1})formatrepr)r argskwargsr r r test_argsszRoot.test_argsNcCsdj||S)Nz a={0} b={1})r)r arr r r test_default_argsszRoot.test_default_argscCs |jdS)N/)redirect)r r r r test_redirectszRoot.test_redirectcCs |jS)N) forbidden)r r r r test_forbiddenszRoot.test_forbiddencCs |jS)N)notfound)r r r r test_notfoundszRoot.test_notfoundcCs tdS)N) Exception)r r r r test_failure!szRoot.test_failure) __name__ __module__ __qualname__r rrrrrrr r r r r s      r cCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS) Ns Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5)r!)r"r')rserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)webappfr$ @py_assert2 @py_assert1 @py_format4 @py_format6r r r test_root%s  lr<c Cs3ytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}|j}d }||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}WYdd}~XnEXd}|s)ditj|d6}t tj |nt}dS)Nz%s/fooir!,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sr(py2er%r&assert %(py7)spy7z Not Found+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)sFassert %(py1)spy1)r!)r=r@)r!)rBr@rC)rr)r*r+rcoder-r.r/r0r1r2r3r4r5msg) r6r?r9 @py_assert4 @py_assert3r; @py_format8 @py_assert0 @py_format2r r r test_404+s0  |  |!rLc Csd}idd6dd6dd6}d|jjjdj|f}t|jd }t||}|jjd }|d }t |}||k}|st j d|fd||fit j |d6dt jkst j|rt j |ndd6dt jks-t jt r<t j t ndd6t j |d6} di| d6} tt j| nt}}}|d}t |}||k}|st j d|fd||fit j |d6dt jkst j|rt j |ndd6dt jks?t jt rNt j t ndd6t j |d6} di| d6} tt j| nt}}}dS) N123ZoneZtwoZthreez%s/test_args/%srzutf-8s rr!0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)sr>rpy6evalr%py4r&assert %(py8)spy8rr)rMrNrO)r!)rPrT)r!)rPrT)r)r*r+joinrencoderr,splitrRr-r.r/r0r1r2r3r4r5) r6rrurldatar7r9rH @py_assert5 @py_format7 @py_format9r r r r5s,"  rz data,expectedrMz a=1 b=NonerNza=1 b=2rc Csr|\}}tdj|jjjtdj|}t|jd}t||}|j }|}||k} | s`t j d| fd||fit j |d6dt jkst j|rt j |ndd6d t jks t j|rt j |nd d 6t j |d 6} di| d6} tt j| nt}}} dS)Nz{0:s}/test_default_args/{1:s}rzutf-8r!C%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.read }() } == %(py6)sr>expectedrQr7r%rSr&assert %(py8)srU)r!)r^r`)rrr)r*r+rVrrWrr,r-r.r/r0r1r2r3r4r5) r6rZr_rrrYr7r9rHr[r\r]r r r r@s    rcCstd|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS)Nz%s/test_redirects Hello World!r!%(py0)s == %(py3)sr#r$r%r&assert %(py5)sr()r!)rarb)rr)r*r+r,r-r.r/r0r1r2r3r4r5)r6r7r$r8r9r:r;r r r rPs  lrc Cs3ytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}|j}d }||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}WYdd}~XnEXd}|s)ditj|d6}t tj |nt}dS)Nz%s/test_forbiddenir!,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sr(r>r?r%r&assert %(py7)srA Forbidden+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)sFassert %(py1)srD)r!)rcrd)r!)rfrdrg)rr)r*r+rrEr-r.r/r0r1r2r3r4r5rF) r6r?r9rGrHr;rIrJrKr r r rVs0  |  |!rc Cs3ytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}|j}d }||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}WYdd}~XnEXd}|s)ditj|d6}t tj |nt}dS)Nz%s/test_notfoundir!,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sr(r>r?r%r&assert %(py7)srAz Not Found+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)sFassert %(py1)srD)r!)rhri)r!)rjrirk)rr)r*r+rrEr-r.r/r0r1r2r3r4r5rF) r6r?r9rGrHr;rIrJrKr r r r`s0  |  |!rc Cs_ytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}WYdd}~XnEXd }|sUditj|d6}t tj |nt}dS)Nz%s/test_failureir!,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sr(r>r?r%r&assert %(py7)srAFassert %(py1)srD)r!)rlrmrn)rr)r*r+rrEr-r.r/r0r1r2r3r4r5) r6r?r9rGrHr;rIrJrKr r r rjs   |!r)builtinsr0_pytest.assertion.rewrite assertionrewriter-pytestZ circuits.sixrr circuits.webrhelpersrrrr r<rLrmark parametrizerrrrrr r r r s"    4  circuits-3.1.0/tests/web/__pycache__/test_basicauth.cpython-27-PYTEST.pyc0000644000014400001440000000623612414363102027141 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z m Z ddl m Z m Z ddl mZmZmZdefdYZd ZdS( iN(t Controller(t check_autht basic_authi(t HTTPErrortHTTPBasicAuthHandler(turlopent build_openertinstall_openertRootcBseZdZRS(cCsWd}idd6}t}t|j|j|||r;dSt|j|j|||S(NtTesttadmins Hello World!(tstrRtrequesttresponseR(tselftrealmtuserstencrypt((s8/home/prologic/work/circuits/tests/web/test_basicauth.pytindex s  (t__name__t __module__R(((s8/home/prologic/work/circuits/tests/web/test_basicauth.pyRscCsZyt|jjj}Wntk r}|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksrtj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}n`Xts6didt j kstj trtjtndd6}t tj |nt} | jd|jjjddt| } t| t|jjj}|j} d} | | k}|sBtjd|fd| | fitj| d6dt j kstj | rtj| ndd6} di| d6}t tj |nd}} tddS( Nis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)stpy2tetpy0tpy5tsassert %(py7)stpy7t Unauthorizeds+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)stFalseR R s Hello World!s%(py0)s == %(py3)stpy3tssassert %(py5)s(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)ssassert %(py7)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py7)ssassert %(py0)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(RtserverthttptbaseRtcodet @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonetmsgRRt add_passwordRRtread(twebapptfRt @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8t @py_format1thandlertopenerRt @py_assert2t @py_format4((s8/home/prologic/work/circuits/tests/web/test_basicauth.pyttestsH  |  |A     l (t __builtin__R&t_pytest.assertion.rewritet assertiontrewriteR#t circuits.webRtcircuits.web.toolsRRthelpersRRRRRRR;(((s8/home/prologic/work/circuits/tests/web/test_basicauth.pyts  circuits-3.1.0/tests/web/__pycache__/test_value.cpython-33-PYTEST.pyc0000644000014400001440000000507712414363412026315 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z m Z ddl m Z Gddde Z Gdd d e ZGd d d eZd d ZdS(iN(u Controller(uEventu Componenti(uurlopencBs|EeZdZdZdS(uhellou hello EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u4/home/prologic/work/circuits/tests/web/test_value.pyuhello suhellocBs |EeZdZddZdS(uAppcCsdS(Nu Hello World!((uself((u4/home/prologic/work/circuits/tests/web/test_value.pyuhellosu App.helloN(u__name__u __module__u __qualname__uhello(u __locals__((u4/home/prologic/work/circuits/tests/web/test_value.pyuApp suAppcBs |EeZdZddZdS(uRootcCs|jtS(N(ufireuhello(uself((u4/home/prologic/work/circuits/tests/web/test_value.pyuindexsu Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u4/home/prologic/work/circuits/tests/web/test_value.pyuRootsuRootcCstj|t|jjj}|j}d}||k}|stjd |fd ||fitj |d6dt j kstj |rtj |ndd6}d i|d 6}t tj|nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uAppuregisteruurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u4/home/prologic/work/circuits/tests/web/test_value.pyutests  lutest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu ControllerucircuitsuEventu ComponentuhelpersuurlopenuhellouAppuRootutest(((u4/home/prologic/work/circuits/tests/web/test_value.pyus circuits-3.1.0/tests/web/__pycache__/test_websockets.cpython-27-PYTEST.pyc0000644000014400001440000001603112414363102027341 0ustar prologicusers00000000000000 ?TN c@sddlmZddlZddljjZddlm Z ddl m Z ddl m Z ddlmZmZddlmZmZdd lmZd e fd YZd e fd YZde fdYZdZdS(i(tprint_functionN(t Component(tServer(t Controller(tclosetwrite(tWebSocketClienttWebSocketsDispatcheri(turlopentEchocBs2eZdZdZdZdZdZRS(twsservercCs g|_dS(N(tclients(tself((s9/home/prologic/work/circuits/tests/web/test_websockets.pytinitscCsF|jj|td|||jt|dj||dS(NsWebSocket Client Connected:sWelcome {0:s}:{1:d}(R tappendtprinttfireRtformat(R tsockthosttport((s9/home/prologic/work/circuits/tests/web/test_websockets.pytconnectscCs|jj|dS(N(R tremove(R R((s9/home/prologic/work/circuits/tests/web/test_websockets.pyt disconnectscCs|jt|d|dS(Ns Received: (RR(R Rtdata((s9/home/prologic/work/circuits/tests/web/test_websockets.pytread s(t__name__t __module__tchannelR RRR(((s9/home/prologic/work/circuits/tests/web/test_websockets.pyR s    tRootcBseZdZRS(cCsdS(Ns Hello World!((R ((s9/home/prologic/work/circuits/tests/web/test_websockets.pytindex&s(RRR(((s9/home/prologic/work/circuits/tests/web/test_websockets.pyR$stClientcBs eZdZdZdZRS(twscOs d|_dS(N(tNonetresponse(R targstkwargs((s9/home/prologic/work/circuits/tests/web/test_websockets.pyR .scCs ||_dS(N(R"(R R((s9/home/prologic/work/circuits/tests/web/test_websockets.pyR1s(RRRR R(((s9/home/prologic/work/circuits/tests/web/test_websockets.pyR*s cCsptdj|}|jdtj|}tj||jdddt|jjj}|j }d}||k}|s%t j d+|fd,||fit j |d 6d t jkst j|rt j |nd d 6} d-i| d6} tt j| nd}}|jtdj||jddddj|j|j} t| j|tj|} |jddd|jddd|j}t|} d}| |k}|st j d.|fd/| |fit j |d 6dt jksAt j|rPt j |ndd6dt jksxt jtrt j tndd 6t j |d6t j | d6}d0i|d6}tt j|nd}} }}|jddd| j}|j}d}||}|sd dit j |d 6d!t jkset j| rtt j | nd!d 6t j |d"6t j |d6t j |d#6}tt j|nd}}}}|j| jtd$d|jddd| j}d%} || k}|st j d1|fd2|| fit j |d 6d!t jkst j| rt j | nd!d 6t j | d6} d3i| d(6}tt j|nd}}} t|jjj}|j }d}||k}|st j d4|fd5||fit j |d 6d t jkskt j|rzt j |nd d 6} d6i| d6} tt j| nd}}|j}t|} d}| |k}|st j d7|fd8| |fit j |d 6dt jks7t j|rFt j |ndd6dt jksnt jtr}t j tndd 6t j |d6t j | d6}d9i|d6}tt j|nd}} }}| jt d|jd)dd|j}t|} d}| |k}|s"t j d:|fd;| |fit j |d 6dt jkst j|rt j |ndd6dt jkst jtrt j tndd 6t j |d6t j | d6}d<i|d6}tt j|nd}} }}| j!|jd*|j|j!|jd*dS(=Nitreadyt registeredRR s Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5s /websockettwebsws://{0:s}:{1:d}/websockettwsclientt connectedisM%(py5)s {%(py5)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.clients }) } == %(py8)stechotpy1tlentpy8sassert %(py10)stpy10RR tWelcomesjassert %(py8)s {%(py8)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.startswith }(%(py6)s) }tpy2tclienttpy6tpy4sHello!sReceived: Hello!s0%(py2)s {%(py2)s = %(py0)s.response } == %(py5)ssassert %(py7)stpy7Rt unregistered(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(sM%(py5)s {%(py5)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.clients }) } == %(py8)ssassert %(py10)s(s==(s0%(py2)s {%(py2)s = %(py0)s.response } == %(py5)ssassert %(py7)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(sM%(py5)s {%(py5)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.clients }) } == %(py8)ssassert %(py10)s(s==(sM%(py5)s {%(py5)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.clients }) } == %(py8)ssassert %(py10)s("RtregistertwaitR RRtserverthttptbaseRt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationR!tclearRRRRRRR R1R"t startswithRRRt unregister(tmanagertwatchertwebappR=R/tfR(t @py_assert2t @py_assert1t @py_format4t @py_format6turiR6t @py_assert4t @py_assert7t @py_assert6t @py_format9t @py_format11t @py_assert3t @py_assert5t @py_format8((s9/home/prologic/work/circuits/tests/web/test_websockets.pyttest5s   l         |  l         (t __future__Rt __builtin__RCt_pytest.assertion.rewritet assertiontrewriteR@tcircuitsRtcircuits.web.serversRtcircuits.web.controllersRtcircuits.net.socketsRRtcircuits.web.websocketsRRthelpersRR RRR\(((s9/home/prologic/work/circuits/tests/web/test_websockets.pyts  circuits-3.1.0/tests/web/__pycache__/test_client.cpython-32-PYTEST.pyc0000644000014400001440000000524612414363276026464 0ustar prologicusers00000000000000l ?Tc@sdddlZddljjZddlmZddlm Z m Z GddeZ dZ dS(iN(u Controller(uClienturequestcBs|EeZdZdS(cCsdS(Nu Hello World!((uself((u5/home/prologic/work/circuits/tests/web/test_client.pyuindex sN(u__name__u __module__uindex(u __locals__((u5/home/prologic/work/circuits/tests/web/test_client.pyuRoots uRootc Cst}|j|jtd|jjjx|jdkrGq5W|j |j}|j }d}||k}|s!t j d|fd||fit j |d6dtjkst j|rt j |ndd6t j |d6}di|d 6}tt j|nd}}}|j}d }||k}|st j d|fd||fit j |d6dtjkst j|rt j |ndd6t j |d6}di|d 6}tt j|nd}}}|j}d} || k}|st j d|fd|| fit j | d6dtjksyt j|rt j |ndd6} di| d6}tt j|nd}} dS(NuGETiu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7uOKu.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss Hello World!u%(py0)s == %(py3)supy3usuassert %(py5)s(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suassert %(py7)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uClientustartufireurequestuserveruhttpubaseuresponseuNoneustopustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationureasonuread( uwebappuclienturesponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8usu @py_assert2u @py_format4((u5/home/prologic/work/circuits/tests/web/test_client.pyutests>      |  |  l( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu Controllerucircuits.web.clientuClienturequestuRootutest(((u5/home/prologic/work/circuits/tests/web/test_client.pyus circuits-3.1.0/tests/web/__pycache__/test_static.cpython-32-PYTEST.pyc0000644000014400001440000003357012414363276026476 0ustar prologicusers00000000000000l ?T c @sddlZddljjZddlmZyddlm Z Wn"e k rfddl m Z YnXddl m Z ddlmZddlmZmZmZGdd e Zd Zd Zd Zd ZdZdZdZdZdZdZdS(iN(upath(uHTTPConnection(u Controlleri(uDOCROOT(uquoteuurlopenu HTTPErrorcBs|EeZdZdS(cCsdS(Nu Hello World!((uself((u5/home/prologic/work/circuits/tests/web/test_static.pyuindexsN(u__name__u __module__uindex(u __locals__((u5/home/prologic/work/circuits/tests/web/test_static.pyuRoots uRootcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u5/home/prologic/work/circuits/tests/web/test_static.pyutests  lcCsNytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j kswtj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsJdidt j kstj dr'tjdndd6}t tj |ndS(Nu%s/fooiu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Not Foundu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u5/home/prologic/work/circuits/tests/web/test_static.pyutest_404s,  |  |!AcCsd|jjj}t|}|jj}d}||k}|stjd |fd ||fitj|d6dt j kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS(Nu%s/static/helloworld.txts Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(userveruhttpubaseuurlopenureadustripu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappuurlufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u5/home/prologic/work/circuits/tests/web/test_static.pyu test_file(s  lcCsSd|jjj}t|}|jj}tj}d}|t|}d}t ||}|j} | } || k} | r-t j df| fdf|| fi t j |d6dt jkpt jtrt j tndd6d t jkpt jt r't j t nd d 6t j |d 6d t jkp\t j|rnt j |nd d 6dt jkpt jtrt j tndd6t j |d6t j | d6t j | d6t j |d6t j |d6} ddi| d6} tt j| nt} }}}}}} } dS(Nu%s/static/largefile.txtu largefile.txturbu==u%(py0)s == %(py18)s {%(py18)s = %(py16)s {%(py16)s = %(py14)s {%(py14)s = %(py2)s(%(py10)s {%(py10)s = %(py5)s {%(py5)s = %(py3)s.join }(%(py6)s, %(py8)s) }, %(py12)s) }.read }() }upy10upathupy3uopenupy2upy12usupy0uDOCROOTupy6upy5upy16upy18upy8upy14uuassert %(py20)supy20(userveruhttpubaseuurlopenureadustripupathujoinuDOCROOTuopenu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappuurlufusu @py_assert4u @py_assert7u @py_assert9u @py_assert11u @py_assert13u @py_assert15u @py_assert17u @py_assert1u @py_format19u @py_format21((u5/home/prologic/work/circuits/tests/web/test_static.pyutest_largefile/s"   xcCsNytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j kswtj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsJdidt j kstj dr'tjdndd6}t tj |ndS(Nu%s/static/foo.txtiu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Not Foundu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u5/home/prologic/work/circuits/tests/web/test_static.pyu test_file4046s,  |  |!AcCstd|jjj}|j}d}||k}|stjd |fd ||fidtjkstj |rtj |ndd6tj |d6}d i|d 6}t tj |nd}}dS(Nu %s/static/shelloworld.txtuinu%(py1)s in %(py3)susupy3upy1uuassert %(py5)supy5(uin(u%(py1)s in %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(uwebappufusu @py_assert0u @py_assert2u @py_format4u @py_format6((u5/home/prologic/work/circuits/tests/web/test_static.pyutest_directory@s  lcCsdj|jjjtd}t|}|jj}d}||k}|stj d |fd ||fitj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nd}}dS(Nu {0:s}{1:s}u/static/#foobar.txts Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uformatuserveruhttpubaseuquoteuurlopenureadustripu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappuurlufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u5/home/prologic/work/circuits/tests/web/test_static.pyutest_file_quoatingFs!  lc Cs{t|jj|jj}|jdd|jjjdidd6|j}|j}d}||k}| r"t j df|fdf||fit j |d 6d t j kpt j|rt j |nd d 6t j |d 6}d di|d6}tt j|nt}}}|j}tj}d} |t| } d} t| | } | j} d}| |}||k}| rQt j df|fdf||fi t j | d6t j |d6dt j kpt jtrt j tndd6dt j kp9t jtrKt j tndd 6t j | d6dt j kpt j|rt j |ndd 6dt j kpt jtrt j tndd6t j |d 6t j | d6t j |d6t j | d6t j | d 6}d d!i|d"6}tt j|nt}}} } } } } }}dS(#NuGETu%s/static/largefile.txtuheadersu bytes=0-100uRangeiu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7u largefile.txturbieu%(py0)s == %(py20)s {%(py20)s = %(py16)s {%(py16)s = %(py14)s {%(py14)s = %(py2)s(%(py10)s {%(py10)s = %(py5)s {%(py5)s = %(py3)s.join }(%(py6)s, %(py8)s) }, %(py12)s) }.read }(%(py18)s) }upy10upy20upathupy3uopenupy12usuDOCROOTupy6upy16upy18upy8upy14uassert %(py22)supy22(uHTTPConnectionuserveruhostuporturequestuhttpubaseu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneureadupathujoinuDOCROOTuopen(uwebappu connectionuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8usu @py_assert7u @py_assert9u @py_assert11u @py_assert13u @py_assert15u @py_assert17u @py_assert19u @py_format21u @py_format23((u5/home/prologic/work/circuits/tests/web/test_static.pyu test_rangeMs6*       cCs)t|jj|jj}|jdd|jjjdidd6|j}|j}d}||k}|st j d|fd||fit j |d 6d t j kst j|rt j |nd d 6t j |d 6}di|d6}tt j|nd}}}dS(NuGETu%s/static/largefile.txtuheadersubytes=0-50,51-100uRangeiu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(uHTTPConnectionuserveruhostuporturequestuhttpubaseu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappu connectionuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u5/home/prologic/work/circuits/tests/web/test_static.pyu test_rangesWs*   |cCs)t|jj|jj}|jdd|jjjdidd6|j}|j}d}||k}|st j d|fd||fit j |d 6d t j kst j|rt j |nd d 6t j |d 6}di|d6}tt j|nd}}}dS(NuGETu%s/static/largefile.txtuheadersubytes=0-100,100-10000,0-1uRangeiu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(uHTTPConnectionuserveruhostuporturequestuhttpubaseu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappu connectionuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u5/home/prologic/work/circuits/tests/web/test_static.pyutest_unsatisfiable_range1es*   |(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruosupathuhttplibuHTTPConnectionu ImportErroru http.clientu circuits.webu ControlleruconftestuDOCROOTuhelpersuquoteuurlopenu HTTPErroruRootutestutest_404u test_fileutest_largefileu test_file404utest_directoryutest_file_quoatingu test_rangeu test_rangesutest_unsatisfiable_range1(((u5/home/prologic/work/circuits/tests/web/test_static.pyus(        circuits-3.1.0/tests/web/__pycache__/test_sessions.cpython-27-PYTEST.pyc0000644000014400001440000000475012414363102027043 0ustar prologicusers00000000000000 ?T1c@s}ddlZddljjZddlmZmZddl m Z m Z ddl m Z defdYZ dZdS( iN(t ControllertSessionsi(t build_openertHTTPCookieProcessor(t CookieJartRootcBseZddZRS(cCs9|r|}||jds  circuits-3.1.0/tests/web/__pycache__/test_null_response.cpython-34-PYTEST.pyc0000644000014400001440000000343512414363522030070 0ustar prologicusers00000000000000 ?TK@sjddlZddljjZddlmZddlm Z m Z GdddeZ ddZ dS) N) Controller)urlopen HTTPErrorc@seZdZddZdS)RootcCsdS)N)selfrrs circuits-3.1.0/tests/web/__pycache__/test_xmlrpc.cpython-26-PYTEST.pyc0000644000014400001440000000511312407376151026505 0ustar prologicusers00000000000000 ?T c @sddkZddkiiZyddklZWn#ej oddk lZnXddk l Z ddk l Z lZddklZde fdYZd e fd YZd ZdS( iN(t ServerProxy(t Component(t ControllertXMLRPCi(turlopentAppcBseZdZRS(cCs t|S(N(teval(tselfts((s5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyRs(t__name__t __module__R(((s5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyRstRootcBseZdZRS(cCsdS(Ns Hello World!((R((s5/home/prologic/work/circuits/tests/web/test_xmlrpc.pytindexs(R R R (((s5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyR sc Cstd}t}|i||i|t|iii}|i}d}||j}|pti d|fd||fhdt i jpti |oti |ndd6ti |d6}dh|d 6}tti|nd}}d |iii} t| d t} | id } d }| |j}|pti d|fd| |fhdt i jpti | oti | ndd6ti |d6}dh|d 6}tti|nd}}|i|idS(Ns/rpcs Hello World!s==s%(py0)s == %(py3)sRtpy0tpy3sassert %(py5)stpy5s%s/rpct allow_nones1 + 2itr(s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s(RRtregisterRtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNoneRtTrueRt unregister( twebapptrpcttesttfRt @py_assert2t @py_assert1t @py_format4t @py_format6turlRR((s5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyR$s2      o  o  (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt xmlrpc.clientRt ImportErrort xmlrpclibtcircuitsRt circuits.webRRthelpersRRR R$(((s5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyts circuits-3.1.0/tests/web/__pycache__/test_expose.cpython-27-PYTEST.pyc0000644000014400001440000000554312414363102026501 0ustar prologicusers00000000000000 ?Tc@sgddlZddljjZddlmZmZddl m Z defdYZ dZ dS(iN(texposet Controlleri(turlopentRootcBs>eZdZeddZedddZRS(cCsdS(Ns Hello World!((tself((s5/home/prologic/work/circuits/tests/web/test_expose.pytindexss+testcCsdS(Nttest((R((s5/home/prologic/work/circuits/tests/web/test_expose.pyR ssfoo+bartfoo_barcCsdS(Ntfoobar((R((s5/home/prologic/work/circuits/tests/web/test_expose.pyRs(t__name__t __module__RRRR(((s5/home/prologic/work/circuits/tests/web/test_expose.pyRs cCspt|jjj}|j}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}td |jjj}|j}d }||k}|stjd|fd||fitj|d6dtj ksgtj |rvtj|ndd6}di|d 6}t tj |nd}}td |jjj}|j}d }||k}|stjd|fd||fitj|d6dtj ksCtj |rRtj|ndd6}di|d 6}t tj |nd}}td|jjj}|j}d }||k}|sbtjd|fd||fitj|d6dtj kstj |r.tj|ndd6}di|d 6}t tj |nd}}dS(Ns Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5s%s/+testRs %s/foo+barRs %s/foo_bar(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(twebapptfR t @py_assert2t @py_assert1t @py_format4t @py_format6((s5/home/prologic/work/circuits/tests/web/test_expose.pyRsH  l   l   l   l( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRRthelpersRRR(((s5/home/prologic/work/circuits/tests/web/test_expose.pyts circuits-3.1.0/tests/web/__pycache__/test_exceptions.cpython-33-PYTEST.pyc0000644000014400001440000002071112414363411027351 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z m Z m Z ddl m Z mZGdddeZdd Zd d Zd d ZddZdS(iN(u Controller(u ForbiddenuNotFounduRedirecti(uurlopenu HTTPErrorcBsP|EeZdZddZddZddZddZd d Zd S( uRootcCsdS(Nu Hello World!((uself((u9/home/prologic/work/circuits/tests/web/test_exceptions.pyuindex su Root.indexcCstddS(Nu/(uRedirect(uself((u9/home/prologic/work/circuits/tests/web/test_exceptions.pyu test_redirectsuRoot.test_redirectcCs tdS(N(u Forbidden(uself((u9/home/prologic/work/circuits/tests/web/test_exceptions.pyutest_forbiddensuRoot.test_forbiddencCs tdS(N(uNotFound(uself((u9/home/prologic/work/circuits/tests/web/test_exceptions.pyu test_notfoundsuRoot.test_notfoundcCsd|jjds   circuits-3.1.0/tests/web/__pycache__/test_multipartformdata.cpython-32-PYTEST.pyc0000644000014400001440000001213012414363276030733 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZddlmZmZejdZGd d e Zd Zd ZdS( iN(upath(uBytesIO(u Controlleri(u MultiPartForm(uurlopenuRequestcCs%ttjtjtdddS(Nustaticu unicode.txturb(uopenupathujoinudirnameu__file__(urequest((u@/home/prologic/work/circuits/tests/web/test_multipartformdata.pyu sample_files   cBs&|EeZddZddZdS(uccs&d|jVd|VdV|jVdS(Nu Filename: %s uDescription: %s u Content: (ufilenameuvalue(uselfufileu description((u@/home/prologic/work/circuits/tests/web/test_multipartformdata.pyuindexs  cCs|jS(N(uvalue(uselfufileu description((u@/home/prologic/work/circuits/tests/web/test_multipartformdata.pyuupload!sN(u__name__u __module__uindexuupload(u __locals__((u@/home/prologic/work/circuits/tests/web/test_multipartformdata.pyuRoots  uRootcCs%t}d|dtj|rMtj|nd d6} di| d6} ttj| nd} dS(Nu descriptionufileuhelloworld.txtutext/plain; charset=utf-8u {0:s}/uploadu Content-TypeuContent-Lengthiu==u%(py0)s == %(py2)suexpected_outputupy2usupy0uuassert %(py4)supy4(u==(u%(py0)s == %(py2)suassert %(py4)s(u MultiPartFormunameuadd_fileuformatuserveruhttpubaseubytesuget_content_typeulenuRequestuurlopenureaduseeku @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone( uwebappu sample_fileuformuurludatauheadersurequestufusuexpected_outputu @py_assert1u @py_format3u @py_format5((u@/home/prologic/work/circuits/tests/web/test_multipartformdata.pyu test_unicode@s*          (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuosupathuiouBytesIOu circuits.webu Controlleru multipartformu MultiPartFormuhelpersuurlopenuRequestufixtureu sample_fileuRootutestu test_unicode(((u@/home/prologic/work/circuits/tests/web/test_multipartformdata.pyus    circuits-3.1.0/tests/web/__pycache__/test_wsgi_application_yield.cpython-34-PYTEST.pyc0000644000014400001440000000255412414363522031723 0ustar prologicusers00000000000000 ?Tu@sddlZddljjZddlmZddlm Z ddl m Z GdddeZ e e Z dd ZdS) N) Controller) Application)urlopenc@seZdZddZdS)RootccsdVdVdS)NzHello zWorld!)selfrrE/home/prologic/work/circuits/tests/web/test_wsgi_application_yield.pyindex sz Root.indexN)__name__ __module__ __qualname__r rrrr r s rcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS) Ns Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5)r)rr)rserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)webappfr @py_assert2 @py_assert1 @py_format4 @py_format6rrr tests  lr))builtinsr_pytest.assertion.rewrite assertionrewriter circuits.webrcircuits.web.wsgirhelpersrr applicationr)rrrr s circuits-3.1.0/tests/web/__pycache__/test_jsonrpc.cpython-33-PYTEST.pyc0000644000014400001440000000600612414363412026650 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z m Z ddl m Z ddl mZGdddeZGd d d e Zd d ZdS( iN(u Component(u ControlleruJSONRPCi(u ServerProxy(uurlopencBs |EeZdZddZdS(uAppcCs t|S(N(ueval(uselfus((u6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyueval suApp.evalN(u__name__u __module__u __qualname__ueval(u __locals__((u6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyuApp suAppcBs |EeZdZddZdS(uRootcCsdS(Nu Hello World!((uself((u6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyuindexsu Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyuRootsuRootcCstd}t}|j||j|t|jjj}|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nd}}d |jjj} t| d dd d} | jd} | d} d} | | k}|stj d|fd| | fitj | d6tj | d6}di|d6}ttj|nd} }} |j|jdS(Nu/rpcs Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u%s/rpcu allow_noneuencodinguutf-8u1 + 2uresultiu%(py1)s == %(py4)supy1upy4uassert %(py6)supy6(u==(u%(py0)s == %(py3)suassert %(py5)sT(u==(u%(py1)s == %(py4)suassert %(py6)s(uJSONRPCuAppuregisteruurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu ServerProxyuTrueuevalu unregister(uwebappurpcutestufusu @py_assert2u @py_assert1u @py_format4u @py_format6uurlujsonrpcudatau @py_assert0u @py_assert3u @py_format5u @py_format7((u6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyutests4      l   E utest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsu Componentu circuits.webu ControlleruJSONRPCu jsonrpclibu ServerProxyuhelpersuurlopenuAppuRootutest(((u6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyus circuits-3.1.0/tests/web/__pycache__/multipartform.cpython-33.pyc0000644000014400001440000000605112414363412026012 0ustar prologicusers00000000000000 ?Tjc@sFddlZddlmZddlmZGdddeZdS(iN(u guess_type(u_make_boundarycBsG|EeZdZddZddZd ddZddZd S( u MultiPartFormcCsg|_t|_dS(N(ufilesu_make_boundaryuboundary(uself((u7/home/prologic/work/circuits/tests/web/multipartform.pyu__init__ s uMultiPartForm.__init__cCs d|jS(Nu multipart/form-data; boundary=%s(uboundary(uself((u7/home/prologic/work/circuits/tests/web/multipartform.pyuget_content_type suMultiPartForm.get_content_typecCsQ|j}|dkr1t|dp+d}n|jj||||fdS(Niuapplication/octet-stream(ureaduNoneu guess_typeufilesuappend(uselfu fieldnameufilenameufdumimetypeubody((u7/home/prologic/work/circuits/tests/web/multipartform.pyuadd_files  uMultiPartForm.add_filecsg}td|jd|jfddt|jD|jfdd|jDttj|}|jtd|jdt}x+|D]#}||7}|tdd7}qW|S(Nu--%suasciic3sU|]K\}}td|dtt|tr=|n t|dgVqdS(u)Content-Disposition: form-data; name="%s"uasciiN(u bytearrayubytesu isinstance(u.0ukuv(u part_boundary(u7/home/prologic/work/circuits/tests/web/multipartform.pyu su&MultiPartForm.bytes..c3sq|]g\}}}}td||fdtd|dtt|trY|n t|dgVqdS(u8Content-Disposition: form-data; name="%s"; filename="%s"uasciiuContent-Type: %sN(u bytearrayu isinstanceubytes(u.0u fieldnameufilenameu content_typeubody(u part_boundary(u7/home/prologic/work/circuits/tests/web/multipartform.pyu &s u--%s--u ( u bytearrayuboundaryuextendulistuitemsufilesu itertoolsuchainuappend(uselfupartsu flatteneduresuitem((u part_boundaryu7/home/prologic/work/circuits/tests/web/multipartform.pyubytess    uMultiPartForm.bytesN(u__name__u __module__u __qualname__u__init__uget_content_typeuNoneuadd_fileubytes(u __locals__((u7/home/prologic/work/circuits/tests/web/multipartform.pyu MultiPartForms  u MultiPartForm(u itertoolsu mimetypesu guess_typeuemail.generatoru_make_boundaryudictu MultiPartForm(((u7/home/prologic/work/circuits/tests/web/multipartform.pyus circuits-3.1.0/tests/web/__pycache__/test_headers.cpython-26-PYTEST.pyc0000644000014400001440000001253012407376151026614 0ustar prologicusers00000000000000 ?Tc@s|ddkZddkiiZddklZddkl Z defdYZ dZ dZ d Z d ZdS( iN(t Controlleri(turlopentRootcBs#eZdZdZdZRS(cCsdS(Ns Hello World!((tself((s6/home/prologic/work/circuits/tests/web/test_headers.pytindex scCsd|iids  circuits-3.1.0/tests/web/__pycache__/test_request_failure.cpython-32-PYTEST.pyc0000644000014400001440000000440512414363276030401 0ustar prologicusers00000000000000l ?Tc@stddlZddljjZddlmZmZddl m Z ddl m Z Gdde Z dZdS( iNi(uurlopenu HTTPError(uhandler(u BaseComponentcBs/|EeZdZeddddZdS(uweburequestupriorityg?cCs tdS(N(u Exception(uselfurequesturesponse((u>/home/prologic/work/circuits/tests/web/test_request_failure.pyurequest sN(u__name__u __module__uchanneluhandlerurequest(u __locals__((u>/home/prologic/work/circuits/tests/web/test_request_failure.pyuRoots uRootcCsy'tj|t|jjjWntk r"}z|j}d}||k}|stj d |fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}di|d 6}ttj|nd}}}WYdd}~Xn`Xdsdid t j ksPtj dr_tj dnd d6}ttj|ndS(Niu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7uassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)sFuassert %(py0)s(uRooturegisteruurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u>/home/prologic/work/circuits/tests/web/test_request_failure.pyutests  |!A(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhelpersuurlopenu HTTPErrorucircuits.core.handlersuhandlerucircuits.core.componentsu BaseComponentuRootutest(((u>/home/prologic/work/circuits/tests/web/test_request_failure.pyus  circuits-3.1.0/tests/web/__pycache__/test_headers.cpython-33-PYTEST.pyc0000644000014400001440000001477712414363411026622 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z GdddeZ ddZ d d Z d d Z d dZdS(iN(u Controlleri(uurlopencBs8|EeZdZddZddZddZdS(uRootcCsdS(Nu Hello World!((uself((u6/home/prologic/work/circuits/tests/web/test_headers.pyuindex su Root.indexcCsd|jjds  circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_generator.cpython-32-PYTEST.pyc0000644000014400001440000000341112414363276031736 0ustar prologicusers00000000000000l ?Tc@sDddlZddljjZddlmZdZdZ dS(iNi(uurlopencCs,d}dg}|||d}|S(Nu200 OKu Content-typeu text/plaincssdVdVdS(NuHello uWorld!((((uE/home/prologic/work/circuits/tests/web/test_wsgi_gateway_generator.pyuresponse s(u Content-typeu text/plain((uenvironustart_responseustatusuresponse_headersuresponse((uE/home/prologic/work/circuits/tests/web/test_wsgi_gateway_generator.pyu applications    cCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((uE/home/prologic/work/circuits/tests/web/test_wsgi_gateway_generator.pyutests  l( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhelpersuurlopenu applicationutest(((uE/home/prologic/work/circuits/tests/web/test_wsgi_gateway_generator.pyus  circuits-3.1.0/tests/web/__pycache__/test_exceptions.cpython-32-PYTEST.pyc0000644000014400001440000002032012414363276027355 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlmZddlm Z m Z m Z ddl m Z mZGddeZdZd Zd Zd ZdS( iN(u Controller(u ForbiddenuNotFounduRedirecti(uurlopenu HTTPErrorcBs;|EeZdZdZdZdZdZdS(cCsdS(Nu Hello World!((uself((u9/home/prologic/work/circuits/tests/web/test_exceptions.pyuindex scCstddS(Nu/(uRedirect(uself((u9/home/prologic/work/circuits/tests/web/test_exceptions.pyu test_redirectscCs tdS(N(u Forbidden(uself((u9/home/prologic/work/circuits/tests/web/test_exceptions.pyutest_forbiddenscCs tdS(N(uNotFound(uself((u9/home/prologic/work/circuits/tests/web/test_exceptions.pyu test_notfoundscCsd|jjds   circuits-3.1.0/tests/web/__pycache__/test_jsonrpc.cpython-32-PYTEST.pyc0000644000014400001440000000562312414363276026663 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlmZddlm Z m Z ddl m Z ddl mZGddeZGd d e Zd ZdS( iN(u Component(u ControlleruJSONRPCi(u ServerProxy(uurlopencBs|EeZdZdS(cCs t|S(N(ueval(uselfus((u6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyueval sN(u__name__u __module__ueval(u __locals__((u6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyuApp s uAppcBs|EeZdZdS(cCsdS(Nu Hello World!((uself((u6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyuindexsN(u__name__u __module__uindex(u __locals__((u6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyuRoots uRootcCstd}t}|j||j|t|jjj}|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nd}}d |jjj} t| d dd d} | jd} | d} d} | | k}|stj d|fd| | fitj | d6tj | d6}di|d6}ttj|nd} }} |j|jdS(Nu/rpcs Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u%s/rpcu allow_noneuencodinguutf-8u1 + 2uresultiu%(py1)s == %(py4)supy1upy4uassert %(py6)supy6(u==(u%(py0)s == %(py3)suassert %(py5)sT(u==(u%(py1)s == %(py4)suassert %(py6)s(uJSONRPCuAppuregisteruurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu ServerProxyuTrueuevalu unregister(uwebappurpcutestufusu @py_assert2u @py_assert1u @py_format4u @py_format6uurlujsonrpcudatau @py_assert0u @py_assert3u @py_format5u @py_format7((u6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyutests4      l   E (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsu Componentu circuits.webu ControlleruJSONRPCu jsonrpclibu ServerProxyuhelpersuurlopenuAppuRootutest(((u6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyus circuits-3.1.0/tests/web/__pycache__/test_yield.cpython-27-PYTEST.pyc0000644000014400001440000000306212414363102026276 0ustar prologicusers00000000000000 ?T%c@saddlZddljjZddlmZddlm Z defdYZ dZ dS(iN(t Controlleri(turlopentRootcBseZdZRS(ccsdVdVdS(NsHello sWorld!((tself((s4/home/prologic/work/circuits/tests/web/test_yield.pytindex s(t__name__t __module__R(((s4/home/prologic/work/circuits/tests/web/test_yield.pyRscCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((s4/home/prologic/work/circuits/tests/web/test_yield.pyttests  l( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRthelpersRRR(((s4/home/prologic/work/circuits/tests/web/test_yield.pyts circuits-3.1.0/tests/web/__pycache__/test_serve_file.cpython-27-PYTEST.pyc0000644000014400001440000000445212414363102027317 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZde fdYZd ZdS( iN(tmkstemp(thandler(t Controlleri(turlopentRootcBsMeZeddddddZeddddZd ZRS( tstartedtpriorityg?tchannelt*cCs3t\}|_tj|dtj|dS(Ns Hello World!(Rtfilenametostwritetclose(tselft componenttfd((s9/home/prologic/work/circuits/tests/web/test_serve_file.pyt _on_startedststoppedt(cCstj|jdS(N(R tremoveR (R R((s9/home/prologic/work/circuits/tests/web/test_serve_file.pyt _on_stoppedscCs|j|jS(N(t serve_fileR (R ((s9/home/prologic/work/circuits/tests/web/test_serve_file.pytindexs(t__name__t __module__RRRR(((s9/home/prologic/work/circuits/tests/web/test_serve_file.pyR s!cCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((s9/home/prologic/work/circuits/tests/web/test_serve_file.pyttests  l(t __builtin__R%t_pytest.assertion.rewritet assertiontrewriteR"R ttempfileRtcircuitsRt circuits.webRthelpersRRR1(((s9/home/prologic/work/circuits/tests/web/test_serve_file.pyts  circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway.cpython-34-PYTEST.pyc0000644000014400001440000000225012414363523027665 0ustar prologicusers00000000000000 ?Tc@sJddlZddljjZddlmZddZddZ dS)N)urlopencCs d}dg}|||dS)Nz200 OK Content-type text/plainz Hello World!)rr)environstart_responsestatusresponse_headersrr;/home/prologic/work/circuits/tests/web/test_wsgi_gateway.py applications  r cCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS) Ns Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5)r )rr)rserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)webappfr @py_assert2 @py_assert1 @py_format4 @py_format6rrr test s  lr() builtinsr_pytest.assertion.rewrite assertionrewriterhelpersrr r(rrrr s  circuits-3.1.0/tests/web/__pycache__/test_jsonrpc.cpython-34-PYTEST.pyc0000644000014400001440000000425012414363522026652 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZddlm Z m Z ddl m Z ddl mZGdddeZGd d d e Zd d ZdS) N) Component) ControllerJSONRPC) ServerProxy)urlopenc@seZdZddZdS)AppcCs t|S)N)eval)selfsr 6/home/prologic/work/circuits/tests/web/test_jsonrpc.pyr szApp.evalN)__name__ __module__ __qualname__r r r r r r s rc@seZdZddZdS)RootcCsdS)Nz Hello World!r )r r r r indexsz Root.indexN)rrrrr r r r rs rcCstd}t}|j||j|t|jjj}|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nt}}d |jjj} t| d d dd} | jd} | d} d} | | k}|stj d|fd| | fitj | d6tj | d6}di|d6}ttj|nt} }} |j|jdS)Nz/rpcs Hello World!==%(py0)s == %(py3)spy3r py0assert %(py5)spy5z%s/rpc allow_noneTencodingzutf-8z1 + 2result%(py1)s == %(py4)spy1py4assert %(py6)spy6)r)rr)r)rr!)rrregisterrserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonerr unregister)webapprpctestfr @py_assert2 @py_assert1 @py_format4 @py_format6urljsonrpcdata @py_assert0 @py_assert3 @py_format5 @py_format7r r r r4s4      l   E r4)builtinsr+_pytest.assertion.rewrite assertionrewriter(circuitsr circuits.webrrZ jsonrpclibrhelpersrrrr4r r r r s circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_write.cpython-33-PYTEST.pyc0000644000014400001440000000316612414363412031102 0ustar prologicusers00000000000000 ?T{c@sJddlZddljjZddlmZddZddZ dS(iNi(uurlopencCs/d}dg}|||}|ddgS(Nu200 OKu Content-typeu text/plainu Hello World!u(u Content-typeu text/plain((uenvironustart_responseustatusuresponse_headersuwrite((uA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_write.pyu applications   u applicationcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((uA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_write.pyutests  lutest( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhelpersuurlopenu applicationutest(((uA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_write.pyus  circuits-3.1.0/tests/web/__pycache__/test_expose.cpython-34-PYTEST.pyc0000644000014400001440000000453612414363522026506 0ustar prologicusers00000000000000 ?T@sjddlZddljjZddlmZmZddl m Z GdddeZ ddZ dS) N)expose Controller)urlopenc@sOeZdZddZedddZedddd Zd S) RootcCsdS)Nz Hello World!)selfrr5/home/prologic/work/circuits/tests/web/test_expose.pyindexsz Root.indexz+testcCsdS)Ntestr)rrrr r sz Root.testzfoo+barZfoo_barcCsdS)Nfoobarr)rrrr r sz Root.foobarN)__name__ __module__ __qualname__r rr r rrrr rs  rc Cspt|jjj}|j}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nt }}td |jjj}|j}d }||k}|stjd|fd||fitj|d6dtj ksgtj |rvtj|ndd6}di|d 6}t tj |nt }}td |jjj}|j}d }||k}|stjd|fd||fitj|d6dtj ksCtj |rRtj|ndd6}di|d 6}t tj |nt }}td|jjj}|j}d }||k}|sbtjd|fd||fitj|d6dtj kstj |r.tj|ndd6}di|d 6}t tj |nt }}dS)Ns Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5z%s/+teststestz %s/foo+barsfoobarz %s/foo_bar)r)rr)r)rr)r)rr)r)rr)rserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)webappfr @py_assert2 @py_assert1 @py_format4 @py_format6rrr r sH  l   l   l   lr ) builtinsr_pytest.assertion.rewrite assertionrewriter circuits.webrrhelpersrrr rrrr s circuits-3.1.0/tests/web/__pycache__/test_logger.cpython-32-PYTEST.pyc0000644000014400001440000001640512414363276026464 0ustar prologicusers00000000000000l ?T c @sddlZddljjZddlZyddlmZWn"ek rbddl mZYnXddl m Z m Z m Z ddlmZmZddlmZGddeZGd d eZd Zd Zd ZdS(iN(uStringIO(ugaierroru gethostbynameu gethostname(u ControlleruLoggeri(uurlopencs&|EeZfdZdZS(cs tt|jd|_dS(N(usuperu DummyLoggeru__init__uNoneumessage(uself(u __class__(u5/home/prologic/work/circuits/tests/web/test_logger.pyu__init__scCs ||_dS(N(umessage(uselfumessage((u5/home/prologic/work/circuits/tests/web/test_logger.pyuinfos(u__name__u __module__u__init__uinfo(u __locals__((u __class__u5/home/prologic/work/circuits/tests/web/test_logger.pyu DummyLoggers u DummyLoggercBs|EeZdZdS(cCsdS(Nu Hello World!((uself((u5/home/prologic/work/circuits/tests/web/test_logger.pyuindexsN(u__name__u __module__uindex(u __locals__((u5/home/prologic/work/circuits/tests/web/test_logger.pyuRoots uRootcCst}td|}|j|t|jjj}|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nd}}|jd |jj}ytt} Wntk rId } YnXi} | | d s     $ "circuits-3.1.0/tests/web/__pycache__/test_dispatcher.cpython-34-PYTEST.pyc0000644000014400001440000001144512414363522027326 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZddlm Z m Z GdddeZ GdddeZ dd Z d d Zd d ZddZddZdS)N) Controller)Clientrequestcs:eZdZfddZddZddZS)Rootcs*tt|j|||t7}dS)N)superr__init__Leaf)selfargskwargs) __class__9/home/prologic/work/circuits/tests/web/test_dispatcher.pyrsz Root.__init__cCsdS)Nz Hello World!r )r r r rindex sz Root.indexcCsdS)NZEarthr )r r r rnamesz Root.name)__name__ __module__ __qualname__rrrr r )r rrs  rc@s.eZdZdZddZddZdS)rz/world/country/regioncCsdS)Nz Hello cities!r )r r r rrsz Leaf.indexcCsdS)Nz Hello City!r )r r r rcitysz Leaf.cityN)rrrchannelrrr r r rrs  rcCskt}|j|jtd|x|jdkr>q,W|j|j}|j}|j|fS)NGET)rstartfirerresponsestopreadstatus)webapppathclientrsr r r make_requests     r!cCst||jjj\}}d}||k}|stjd |fd ||fitj|d6dtjkstj |rtj|ndd6}di|d 6}t tj |nt }}d }||k}|stjd|fd||fitj|d6d tjks?tj |rNtj|nd d6}di|d 6}t tj |nt }}dS)N==%(py0)s == %(py3)spy3rpy0assert %(py5)spy5s Hello World!content)r#)r$r()r#)r$r() r!serverhttpbase @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)rrr* @py_assert2 @py_assert1 @py_format4 @py_format6r r r test_root-s l  lr;cCst|d|jjj\}}d}||k}|stjd |fd||fitj|d6dtjkstj |rtj|ndd6}di|d 6}t tj |nt }}d }||k}|stjd|fd||fitj|d6d tjksCtj |rRtj|nd d6}di|d 6}t tj |nt }}dS)Nz%s/namer"r#%(py0)s == %(py3)sr%rr&r'assert %(py5)sr)sEarthr*)r#)r<r=)r#)r<r=) r!r+r,r-r.r/r0r1r2r3r4r5r6)rrr*r7r8r9r:r r rtest_root_name4s" l  lr>cCst|d|jjj\}}d}||k}|stjd |fd||fitj|d6dtjkstj |rtj|ndd6}di|d 6}t tj |nt }}d }||k}|stjd|fd||fitj|d6d tjksCtj |rRtj|nd d6}di|d 6}t tj |nt }}dS)Nz%s/world/country/regionr"r#%(py0)s == %(py3)sr%rr&r'assert %(py5)sr)s Hello cities!r*)r#)r?r@)r#)r?r@) r!r+r,r-r.r/r0r1r2r3r4r5r6)rrr*r7r8r9r:r r r test_leaf;s" l  lrAcCst|d|jjj\}}d}||k}|stjd |fd||fitj|d6dtjkstj |rtj|ndd6}di|d 6}t tj |nt }}d }||k}|stjd|fd||fitj|d6d tjksCtj |rRtj|nd d6}di|d 6}t tj |nt }}dS)Nz%s/world/country/region/cityr"r#%(py0)s == %(py3)sr%rr&r'assert %(py5)sr)s Hello City!r*)r#)rBrC)r#)rBrC) r!r+r,r-r.r/r0r1r2r3r4r5r6)rrr*r7r8r9r:r r r test_cityBs" l  lrD)builtinsr1_pytest.assertion.rewrite assertionrewriter. circuits.webrcircuits.web.clientrrrrr!r;r>rArDr r r rs      circuits-3.1.0/tests/web/__pycache__/test_unicode.cpython-33-PYTEST.pyc0000644000014400001440000003015312414363412026620 0ustar prologicusers00000000000000 ?T c @sddlZddljjZyddlmZWn"ek rVddl mZYnXddl m Z ddl m Z ddlmZmZddlmZGdd d e Zd d Zd d ZddZddZddZdS(iN(uHTTPConnection(ub(u Controller(uClienturequesti(uurlopencBsP|EeZdZddZddZddZddZd d Zd S( uRootcCsdS(Nu Hello World!((uself((u6/home/prologic/work/circuits/tests/web/test_unicode.pyuindexsu Root.indexcCs|jjjS(N(urequestubodyuread(uself((u6/home/prologic/work/circuits/tests/web/test_unicode.pyu request_bodysuRoot.request_bodycCsdS(Nuä((uself((u6/home/prologic/work/circuits/tests/web/test_unicode.pyu response_bodysuRoot.response_bodycCs|jjdS(NuA(urequestuheaders(uself((u6/home/prologic/work/circuits/tests/web/test_unicode.pyurequest_headerssuRoot.request_headerscCsd|jjd     |  |  utest_request_bodyc Cst|jj|jj}|j|jdd|j}|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d 6}di|d 6}ttj|nd}}}|j}d }||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d 6}di|d 6}ttj|nd}}}|j}d}t|} || k}|stj d|fd|| fidt j ks[tj trjtj tndd6dt j kstj |rtj |ndd6tj | d6tj |d6} di| d6} ttj| nd}}} |jdS( NuGETu/response_bodyiu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7uOKu.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suäu0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }ubusupy6upy4uassert %(py8)supy8(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suassert %(py7)s(u==(u0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }uassert %(py8)s(uHTTPConnectionuserveruhostuportuconnecturequestu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneureasonureadubuclose( uwebappu connectionuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8usu @py_assert5u @py_format7u @py_format9((u6/home/prologic/work/circuits/tests/web/test_unicode.pyutest_response_body8s<    |  |  utest_response_bodycCs0t|jj|jj}|jtd}idd6}|jdd|||j}|j}d}||k}|s&t j d|fd||fit j |d 6d t j kst j|rt j |nd d 6t j |d 6}di|d6} tt j| nd}}}|j}d}||k}|st j d|fd||fit j |d 6d t j kst j|rt j |nd d 6t j |d 6}di|d6} tt j| nd}}}|j} d}t|} | | k}|st j d|fd| | fidt j kszt jtrt j tndd 6dt j kst j| rt j | ndd 6t j | d6t j |d6} d i| d6} tt j| nd}}} |jdS(!NuuäuAuGETu/request_headersiu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uassert %(py7)supy7uOKu.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)su0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }ubusupy6upy4uassert %(py8)supy8(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suassert %(py7)s(u==(u0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }uassert %(py8)s(uHTTPConnectionuserveruhostuportuconnectuburequestu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneureasonureaduclose(uwebappu connectionubodyuheadersuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8usu @py_assert5u @py_format7u @py_format9((u6/home/prologic/work/circuits/tests/web/test_unicode.pyutest_request_headersFs@      |  |  utest_request_headersc Cs$t}|j|jtdd|jj|jjfx|jdkrTqBW|j}|j }d}||k}|s4t j d|fd||fit j |d6dt jkst j|rt j |ndd6t j |d 6t j |d 6}di|d 6}tt j|nd}}}}|j}|j}d}||k}|s%t j d |fd!||fit j |d6dt jkst j|rt j |ndd6t j |d 6t j |d 6}d"i|d 6}tt j|nd}}}}|jj}|jjjd} d} | | k}|st j d#|fd$| | fit j | d6dt jkst j| rt j | ndd6} d%i| d6} tt j| nd}} d}t|}||k}|st j d&|fd'||fidt jksxt jtrt j tndd6dt jkst j|rt j |ndd6t j |d6t j |d 6} d(i| d6}tt j|nd}}}dS()NuGETuhttp://%s:%s/response_headersiu==uL%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.status } == %(py7)supy2uclientupy0upy7upy4uuassert %(py9)supy9uOKuL%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.reason } == %(py7)suAuäu%(py0)s == %(py3)supy3uauassert %(py5)supy5u0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }ubusupy6uassert %(py8)supy8(u==(uL%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.status } == %(py7)suassert %(py9)s(u==(uL%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.reason } == %(py7)suassert %(py9)s(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }uassert %(py8)s(uClientustartufireurequestuserveruhostuporturesponseuNoneustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationureasonureaduheadersugetub(uwebappuclientu @py_assert1u @py_assert3u @py_assert6u @py_assert5u @py_format8u @py_format10usuau @py_assert2u @py_format4u @py_format6u @py_format7u @py_format9((u6/home/prologic/work/circuits/tests/web/test_unicode.pyutest_response_headersVsX       l  utest_response_headers(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhttplibuHTTPConnectionu ImportErroru http.clientu circuits.sixubu circuits.webu Controllerucircuits.web.clientuClienturequestuhelpersuurlopenuRootu test_indexutest_request_bodyutest_response_bodyutest_request_headersutest_response_headers(((u6/home/prologic/work/circuits/tests/web/test_unicode.pyus      circuits-3.1.0/tests/web/__pycache__/test_wsgi_application.cpython-32-PYTEST.pyc0000644000014400001440000002426312414363276030542 0ustar prologicusers00000000000000l ?T`c@sddlZddljjZddlmZddlm Z ddl m Z m Z m Z GddeZe eZdZd Zd Zd Zd Zd ZdS(iN(u Controller(u Applicationi(u urlencodeuurlopenu HTTPErrorcBs;|EeZdZdZdZdZdZdS(cCsdS(Nu Hello World!((uself((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyuindex scOs0d|D}dtt|t|fS(NcSs1g|]'}t|tr!|n |jqS((u isinstanceustruencode(u.0uarg((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyu s u%s %s(ureprutuple(uselfuargsukwargs((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyu test_argsscCs |jdS(Nu/(uredirect(uself((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyu test_redirectscCs |jS(N(u forbidden(uself((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyutest_forbiddenscCs |jS(N(unotfound(uself((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyu test_notfoundsN(u__name__u __module__uindexu test_argsu test_redirectutest_forbiddenu test_notfound(u __locals__((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyuRoot s     uRootcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyutests  lcCsNytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j kswtj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsJdidt j kstj dr'tjdndd6}t tj |ndS(Nu%s/fooiu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Not Foundu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyutest_404$s,  |  |!Ac Csd}idd6dd6dd6}d|jjjdj|f}t|j}t||}|jjd }|d }t |}||k}|s}t j d|fd||fit j |d 6dt jkst jt rt j t ndd6dt jks*t j|r9t j |ndd6t j |d6} di| d6} tt j| nd}}}|d}t |}||k}|st j d|fd||fit j |d 6dt jkst jt rt j t ndd6dt jks<t j|rKt j |ndd6t j |d6} di| d6} tt j| nd}}}dS(Nu1u2u3uoneutwouthreeu%s/test_args/%su/s iu==u0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)supy2uevalupy0uargsupy6upy4uuassert %(py8)supy8iukwargs(u1u2u3(u==(u0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)suassert %(py8)s(u==(u0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)suassert %(py8)s(userveruhttpubaseujoinu urlencodeuencodeuurlopenureadusplituevalu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone( uwebappuargsukwargsuurludataufu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_format9((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyu test_args.s,"  cCstd|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS(Nu%s/test_redirects Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyu test_redirect:s  lcCsNytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j kswtj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsJdidt j kstj dr'tjdndd6}t tj |ndS(Nu%s/test_forbiddeniu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Forbiddenu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyutest_forbidden@s,  |  |!AcCsNytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j kswtj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsJdidt j kstj dr'tjdndd6}t tj |ndS(Nu%s/test_notfoundiu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Not Foundu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyu test_notfoundJs,  |  |!A(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu Controllerucircuits.web.wsgiu Applicationuhelpersu urlencodeuurlopenu HTTPErroruRootu applicationutestutest_404u test_argsu test_redirectutest_forbiddenu test_notfound(((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyus    circuits-3.1.0/tests/web/__pycache__/test_wsgi_application_generator.cpython-27-PYTEST.pyc0000644000014400001440000000362712414363102032601 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z ddl m Z defdYZ e e Z dZdS( iN(t Controller(t Applicationi(turlopentRootcBseZdZRS(cCsd}|S(NcssdVdVdS(NsHello sWorld!((((sI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pytresponse s((tselfR((sI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pytindex s (t__name__t __module__R(((sI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pyR scCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(twebapptfR t @py_assert2t @py_assert1t @py_format4t @py_format6((sI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pyttests  l(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRtcircuits.web.wsgiRthelpersRRt applicationR!(((sI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pyts circuits-3.1.0/tests/web/__pycache__/test_core.cpython-32-PYTEST.pyc0000644000014400001440000003153412414363276026135 0ustar prologicusers00000000000000l ?T$ c@s2ddlZddljjZddlZddlmZm Z ddl m Z ddl m Z mZmZGdde ZdZd Zd Zejjd d gifed fd dgifedfd gidd6fedfgdZdZdZdZdZdS(iN(ubuu(u Controlleri(u urlencodeuurlopenu HTTPErrorcBsS|EeZdZdZdddZdZdZdZdZ dS(cCsdS(Nu Hello World!((uself((u3/home/prologic/work/circuits/tests/web/test_core.pyuindexscOsdjt|t|S(Nu{0} {1}(uformaturepr(uselfuargsukwargs((u3/home/prologic/work/circuits/tests/web/test_core.pyu test_argsscCsdj||S(Nu a={0} b={1}(uformat(uselfuaub((u3/home/prologic/work/circuits/tests/web/test_core.pyutest_default_argsscCs |jdS(Nu/(uredirect(uself((u3/home/prologic/work/circuits/tests/web/test_core.pyu test_redirectscCs |jS(N(u forbidden(uself((u3/home/prologic/work/circuits/tests/web/test_core.pyutest_forbiddenscCs |jS(N(unotfound(uself((u3/home/prologic/work/circuits/tests/web/test_core.pyu test_notfoundscCs tdS(N(u Exception(uself((u3/home/prologic/work/circuits/tests/web/test_core.pyu test_failure!sN( u__name__u __module__uindexu test_argsuNoneutest_default_argsu test_redirectutest_forbiddenu test_notfoundu test_failure(u __locals__((u3/home/prologic/work/circuits/tests/web/test_core.pyuRoot s      uRootcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u3/home/prologic/work/circuits/tests/web/test_core.pyu test_root%s  lcCsNytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j kswtj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsJdidt j kstj dr'tjdndd6}t tj |ndS(Nu%s/fooiu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Not Foundu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u3/home/prologic/work/circuits/tests/web/test_core.pyutest_404+s,  |  |!Ac Csd}idd6dd6dd6}d|jjjdj|f}t|jd }t||}|jjd }|d }t |}||k}|st j d|fd||fit j |d6dt jkst jt rt j t ndd6dt jks-t j|r<t j |ndd6t j |d6} di| d6} tt j| nd}}}|d}t |}||k}|st j d|fd||fit j |d6dt jkst jt rt j t ndd6dt jks?t j|rNt j |ndd6t j |d6} di| d6} tt j| nd}}}dS( Nu1u2u3uoneutwouthreeu%s/test_args/%su/uutf-8s iu==u0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)supy2uevalupy0uargsupy6upy4uuassert %(py8)supy8iukwargs(u1u2u3(u==(u0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)suassert %(py8)s(u==(u0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)suassert %(py8)s(userveruhttpubaseujoinu urlencodeuencodeuurlopenureadusplituevalu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone( uwebappuargsukwargsuurludataufu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_format9((u3/home/prologic/work/circuits/tests/web/test_core.pyu test_args5s,"  u data,expectedu1u a=1 b=Noneu2ua=1 b=2ubc Csr|\}}tdj|jjjtdj|}t|jd}t||}|j }|}||k} | s`t j d| fd||fit j |d6dt jkst j|rt j |ndd6d t jks t j|rt j |nd d 6t j |d 6} di| d6} tt j| nd}}} dS(Nu{0:s}/test_default_args/{1:s}u/uutf-8u==uC%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.read }() } == %(py6)supy2ufupy0uexpectedupy6upy4uuassert %(py8)supy8(u==(uC%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.read }() } == %(py6)suassert %(py8)s(uuuformatuserveruhttpubaseujoinu urlencodeuencodeuurlopenureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone( uwebappudatauexpecteduargsukwargsuurlufu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_format9((u3/home/prologic/work/circuits/tests/web/test_core.pyutest_default_args@s    cCstd|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS(Nu%s/test_redirects Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u3/home/prologic/work/circuits/tests/web/test_core.pyu test_redirectPs  lcCsNytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j kswtj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsJdidt j kstj dr'tjdndd6}t tj |ndS(Nu%s/test_forbiddeniu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Forbiddenu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u3/home/prologic/work/circuits/tests/web/test_core.pyutest_forbiddenVs,  |  |!AcCsNytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j kswtj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsJdidt j kstj dr'tjdndd6}t tj |ndS(Nu%s/test_notfoundiu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Not Foundu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u3/home/prologic/work/circuits/tests/web/test_core.pyu test_notfound`s,  |  |!AcCszytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`Xdsvdid t j ksDtj drStjdnd d6}t tj |ndS(Nu%s/test_failureiu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7uassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u3/home/prologic/work/circuits/tests/web/test_core.pyu test_failurejs  |!A(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestu circuits.sixubuuu circuits.webu Controlleruhelpersu urlencodeuurlopenu HTTPErroruRootu test_rootutest_404u test_argsumarku parametrizeutest_default_argsu test_redirectutest_forbiddenu test_notfoundu test_failure(((u3/home/prologic/work/circuits/tests/web/test_core.pyus"    1  circuits-3.1.0/tests/web/__pycache__/test_expose.cpython-33-PYTEST.pyc0000644000014400001440000000614612414363411026501 0ustar prologicusers00000000000000 ?Tc@sjddlZddljjZddlmZmZddl m Z GdddeZ ddZ dS( iN(uexposeu Controlleri(uurlopencBsS|EeZdZddZedddZedddd Zd S( uRootcCsdS(Nu Hello World!((uself((u5/home/prologic/work/circuits/tests/web/test_expose.pyuindexsu Root.indexu+testcCsdS(Nutest((uself((u5/home/prologic/work/circuits/tests/web/test_expose.pyutest su Root.testufoo+barufoo_barcCsdS(Nufoobar((uself((u5/home/prologic/work/circuits/tests/web/test_expose.pyufoobarsu Root.foobarN(u__name__u __module__u __qualname__uindexuexposeutestufoobar(u __locals__((u5/home/prologic/work/circuits/tests/web/test_expose.pyuRoots uRootc Cspt|jjj}|j}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}td |jjj}|j}d }||k}|stjd|fd||fitj|d6dtj ksgtj |rvtj|ndd6}di|d 6}t tj |nd}}td |jjj}|j}d }||k}|stjd|fd||fitj|d6dtj ksCtj |rRtj|ndd6}di|d 6}t tj |nd}}td|jjj}|j}d }||k}|sbtjd|fd||fitj|d6dtj kstj |r.tj|ndd6}di|d 6}t tj |nd}}dS(Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u%s/+teststestu %s/foo+barsfoobaru %s/foo_bar(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u5/home/prologic/work/circuits/tests/web/test_expose.pyutestsH  l   l   l   lutest( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webuexposeu ControlleruhelpersuurlopenuRootutest(((u5/home/prologic/work/circuits/tests/web/test_expose.pyus circuits-3.1.0/tests/web/__pycache__/test_call_wait.cpython-33-PYTEST.pyc0000644000014400001440000000530412414363411027130 0ustar prologicusers00000000000000 ?TJc@sddlZddljjZddlmZddlm Z m Z ddl m Z Gddde Z Gdd d e ZGd d d eZd d ZdS(iN(u Controller(u ComponentuEventi(uurlopencBs|EeZdZdZdS(ufoou foo EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u8/home/prologic/work/circuits/tests/web/test_call_wait.pyufoo sufoocBs&|EeZdZdZddZdS(uAppuappcCsdS(Nu Hello World!((uself((u8/home/prologic/work/circuits/tests/web/test_call_wait.pyufoosuApp.fooN(u__name__u __module__u __qualname__uchannelufoo(u __locals__((u8/home/prologic/work/circuits/tests/web/test_call_wait.pyuApp suAppcBs |EeZdZddZdS(uRootccs"|jtdV}|jVdS(Nuapp(ucallufoouvalue(uselfuvalue((u8/home/prologic/work/circuits/tests/web/test_call_wait.pyuindexsu Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u8/home/prologic/work/circuits/tests/web/test_call_wait.pyuRootsuRootc Cstj|}zt|jjj}|j}d}||k}|stjd |fd ||fitj |d6dt j kstj |rtj |ndd6}d i|d 6}t tj|nd}}Wd|jXdS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uAppuregisteruurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu unregister(uwebappuappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u8/home/prologic/work/circuits/tests/web/test_call_wait.pyutests  lutest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu Controllerucircuitsu ComponentuEventuhelpersuurlopenufoouAppuRootutest(((u8/home/prologic/work/circuits/tests/web/test_call_wait.pyus circuits-3.1.0/tests/web/__pycache__/test_serve_download.cpython-33-PYTEST.pyc0000644000014400001440000000736712414363412030220 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZGddde Zd d ZdS( iN(umkstemp(uhandler(u Controlleri(uurlopencBsb|EeZdZedddddddZeddd d d Zd d ZdS(uRootustartedupriorityg?uchannelu*cCs3t\}|_tj|dtj|dS(Ns Hello World!(umkstempufilenameuosuwriteuclose(uselfu componentufd((u=/home/prologic/work/circuits/tests/web/test_serve_download.pyu _on_startedsuRoot._on_startedustoppedu(cCstj|jdS(N(uosuremoveufilename(uselfu component((u=/home/prologic/work/circuits/tests/web/test_serve_download.pyu _on_stoppedsuRoot._on_stoppedcCs|j|jS(N(userve_downloadufilename(uself((u=/home/prologic/work/circuits/tests/web/test_serve_download.pyuindexsu Root.indexN(u__name__u __module__u __qualname__uhandleru _on_startedu _on_stoppeduindex(u __locals__((u=/home/prologic/work/circuits/tests/web/test_serve_download.pyuRoot s$uRootc Cs t|jjj}|j}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}|jd }|jd }d }||k}|stjd|fd||fitj|d6d tj ks\tj |rktj|nd d6}di|d 6}t tj |nd}}|j}d} || } | sWdditj|d6dtj kstj |rtj|ndd6tj| d6tj| d6} t tj | nd}} } d} | |k}|stjd|fd| |fidtj kstj |rtj|ndd6tj| d6}d i|d 6}t tj |nd} }dS(!Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u Content-TypeuContent-Dispositionuapplication/x-downloadu contentTypeu attachment;uLassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.startswith }(%(py4)s) }upy2ucontentDispositionupy6upy4ufilenameuinu%(py1)s in %(py3)supy1(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uin(u%(py1)s in %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuheadersu startswith( uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6u contentTypeucontentDispositionu @py_assert3u @py_assert5u @py_format7u @py_assert0((u=/home/prologic/work/circuits/tests/web/test_serve_download.pyutests@  l    l   u lutest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruosutempfileumkstempucircuitsuhandleru circuits.webu ControlleruhelpersuurlopenuRootutest(((u=/home/prologic/work/circuits/tests/web/test_serve_download.pyus  circuits-3.1.0/tests/web/__pycache__/test_basicauth.cpython-32-PYTEST.pyc0000644000014400001440000000666612414363276027160 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlmZddlm Z m Z ddl m Z m Z ddl mZmZmZGddeZd ZdS( iN(u Controller(u check_authu basic_authi(u HTTPErroruHTTPBasicAuthHandler(uurlopenu build_openeruinstall_openercBs|EeZdZdS(cCsWd}idd6}t}t|j|j|||r;dSt|j|j|||S(NuTestuadminu Hello World!(ustru check_authurequesturesponseu basic_auth(uselfurealmuusersuencrypt((u8/home/prologic/work/circuits/tests/web/test_basicauth.pyuindex s  N(u__name__u __module__uindex(u __locals__((u8/home/prologic/work/circuits/tests/web/test_basicauth.pyuRoots uRootcCslyt|jjj}Wntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksutj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsHdidt j kstj dr%tjdndd6}t tj |nt} | jd|jjjddt| } t| t|jjj}|j} d} | | k}|sTtjd|fd| | fitj| d6dt j kstj | r tj| ndd6} d i| d6}t tj |nd}} tddS(!Niu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Unauthorizedu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalseuTestuadmins Hello World!u%(py0)s == %(py3)supy3usuassert %(py5)s(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalseuHTTPBasicAuthHandleru add_passwordu build_openeruinstall_openeruread(uwebappufueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1uhandleruopenerusu @py_assert2u @py_format4((u8/home/prologic/work/circuits/tests/web/test_basicauth.pyutestsH  |  |!A     l (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu Controllerucircuits.web.toolsu check_authu basic_authuhelpersu HTTPErroruHTTPBasicAuthHandleruurlopenu build_openeruinstall_openeruRootutest(((u8/home/prologic/work/circuits/tests/web/test_basicauth.pyus  circuits-3.1.0/tests/web/__pycache__/test_digestauth.cpython-34-PYTEST.pyc0000644000014400001440000000531612414363522027341 0ustar prologicusers00000000000000 ?T=@sddlZddljjZddlZejdddkrSejdnddl m Z ddl m Z m Z ddlmZmZdd lmZmZmZGd d d e Zd d ZdS)NzBroken on Python 3.3) Controller) check_auth digest_auth) HTTPErrorHTTPDigestAuthHandler)urlopen build_openerinstall_openerc@seZdZddZdS)RootcCsKd}idd6}t|j|j||r2dSt|j|j||S)NTestadminz Hello World!)rrequestresponser)selfrealmusersr9/home/prologic/work/circuits/tests/web/test_digestauth.pyindexs  z Root.indexN)__name__ __module__ __qualname__rrrrrr s r cCsQyt|jjj}Wntk r}z|j}d}||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}|j}d }||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}WYdd}~XnEXd }|s'ditj|d6} t tj | nt}t} | jd|jjjddt| } t| t|jjj}|j} d} | | k}|s9tjd|fd| | fitj| d6dt j kstj | rtj| ndd6}d i|d6}t tj |nt}} tddS)!Ni==,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)spy5py2epy0assert %(py7)spy7 Unauthorized+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)sFassert %(py1)spy1rrs Hello World!%(py0)s == %(py3)spy3sassert %(py5)s)r)rr")r)r%r"r&)r)r(r+)r serverhttpbasercode @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonemsgr add_passwordr r read)webappfr @py_assert1 @py_assert4 @py_assert3 @py_format6 @py_format8 @py_assert0 @py_format2handleropenerr* @py_assert2 @py_format4rrrtestsL  |  |!     l rI)rr)builtinsr3_pytest.assertion.rewrite assertionrewriter0pytestPYVERskip circuits.webrcircuits.web.toolsrrhelpersrr r r r r rIrrrrs   circuits-3.1.0/tests/web/__pycache__/test_gzip.cpython-34-PYTEST.pyc0000644000014400001440000001002712414363522026144 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZddlm Z ddl m Z ddl m Z ddlmZddlmZmZdd lmZdd lmZmZGd d d eZGd dde ZeddddZddZddZddZdS)N)fixture)path)BytesIO) Controller)gzip)handler Component)DOCROOT) build_openerRequestc@s4eZdZdZedddddZdS)Gzipwebresponsepriorityg?cOst|d|d.finalizer)r register addfinalizer)requestwebappr"r)r!rr!#s r!cCsaddl}t}|j||jd|jddd|}|j}|j|S)Nrmoderbfileobj)rrwriteseekGzipFilereadclose)bodyrZzbufzfiledatarrr decompress/s      r2c Cs t|jjj}|jddt}|j|}t|j}d}||k}|st j d |fd ||fit j |d6dt j kst j|rt j |ndd6}di|d 6} tt j| nt}}dS)NzAccept-Encodingrs Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5)r3)r4r9)r serverhttpbase add_headerr openr2r- @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone) r&r!r%openerfr6 @py_assert2 @py_assert1 @py_format4 @py_format6rrrtest1;s  lrOcCsutd|jjj}|jddt}|j|}t|j}t j }d}|t |}d} t|| } | j} | } || k} | rOt j df| fdf|| fi dtjkpt jtrt jtndd 6t j|d 6t j| d 6t j| d 6d tjkpWt j|rit j|nd d6t j| d6t j|d6t j| d6dtjkpt jt rt jt ndd6dtjkpt jt rt jt ndd6t j|d6}ddi|d6}tt j|nt} }}}} } } } dS)Nz%s/static/largefile.txtzAccept-Encodingrz largefile.txtr(r3z%(py0)s == %(py18)s {%(py18)s = %(py16)s {%(py16)s = %(py14)s {%(py14)s = %(py2)s(%(py10)s {%(py10)s = %(py5)s {%(py5)s = %(py3)s.join }(%(py6)s, %(py8)s) }, %(py12)s) }.read }() }r?py2py8py14Zpy18r6r7py16r:py12r py6rr5py10r8zassert %(py20)spy20)r r;r<r=r>r r?r2r-rjoinr r@rArCrDrErBrFrGrH)r&r!r%rIrJr6 @py_assert4 @py_assert7 @py_assert9 @py_assert11 @py_assert13 @py_assert15 @py_assert17rL @py_format19 @py_format21rrrtest2Es&   xrb)builtinsrC_pytest.assertion.rewrite assertionrewriter@pytestrosrior circuits.webrcircuits.web.toolsrcircuitsrrconftestr helpersr r r rr!r2rOrbrrrrs   circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway.cpython-27-PYTEST.pyc0000644000014400001440000000275012414363102027665 0ustar prologicusers00000000000000 ?Tcc@sDddlZddljjZddlmZdZdZ dS(iNi(turlopencCs d}dg}|||dS(Ns200 OKs Content-types text/plains Hello World!(s Content-types text/plain((tenvirontstart_responsetstatustresponse_headers((s;/home/prologic/work/circuits/tests/web/test_wsgi_gateway.pyt applications  cCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((s;/home/prologic/work/circuits/tests/web/test_wsgi_gateway.pyttest s  l( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthelpersRRR(((s;/home/prologic/work/circuits/tests/web/test_wsgi_gateway.pyts  circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_yield.cpython-33-PYTEST.pyc0000644000014400001440000000314712414363412031055 0ustar prologicusers00000000000000 ?Toc@sJddlZddljjZddlmZddZddZ dS(iNi(uurlopenccs*d}dg}|||dVdVdS(Nu200 OKu Content-typeu text/plainuHello uWorld!(u Content-typeu text/plain((uenvironustart_responseustatusuresponse_headers((uA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_yield.pyu applications   u applicationcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((uA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_yield.pyutests  lutest( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhelpersuurlopenu applicationutest(((uA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_yield.pyus  circuits-3.1.0/tests/web/__pycache__/test_basicauth.cpython-33-PYTEST.pyc0000644000014400001440000000676712414363411027152 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z m Z ddl m Z m Z ddl mZmZmZGdddeZd d ZdS( iN(u Controller(u check_authu basic_authi(u HTTPErroruHTTPBasicAuthHandler(uurlopenu build_openeruinstall_openercBs |EeZdZddZdS(uRootcCsWd}idd6}t}t|j|j|||r;dSt|j|j|||S(NuTestuadminu Hello World!(ustru check_authurequesturesponseu basic_auth(uselfurealmuusersuencrypt((u8/home/prologic/work/circuits/tests/web/test_basicauth.pyuindex s  u Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u8/home/prologic/work/circuits/tests/web/test_basicauth.pyuRootsuRootcCslyt|jjj}Wntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksutj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsHdidt j kstj dr%tjdndd6}t tj |nt} | jd|jjjddt| } t| t|jjj}|j} d} | | k}|sTtjd|fd| | fitj| d6dt j kstj | r tj| ndd6} d i| d6}t tj |nd}} tddS(!Niu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Unauthorizedu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalseuTestuadmins Hello World!u%(py0)s == %(py3)supy3usuassert %(py5)s(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalseuHTTPBasicAuthHandleru add_passwordu build_openeruinstall_openeruread(uwebappufueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1uhandleruopenerusu @py_assert2u @py_format4((u8/home/prologic/work/circuits/tests/web/test_basicauth.pyutestsH  |  |!A     l utest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu Controllerucircuits.web.toolsu check_authu basic_authuhelpersu HTTPErroruHTTPBasicAuthHandleruurlopenu build_openeruinstall_openeruRootutest(((u8/home/prologic/work/circuits/tests/web/test_basicauth.pyus  circuits-3.1.0/tests/web/__pycache__/test_disps.cpython-32-PYTEST.pyc0000644000014400001440000001134212414363276026322 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlmZddlm Z ddl m Z ddl m Z mZddlmZddlmZmZGd d e ZGd d eZGd deZGddeZdZdS(iN(uManager(uhandler(u BaseComponent(u BaseServeru Controller(u Dispatcheri(uurlopenuurljoincs>|EeZdZfdZeddddZS(u3Forward to another Dispatcher based on the channel.cstt|jd|dS(Nuchannel(usuperuPrefixingDispatcheru__init__(uselfuchannel(u __class__(u4/home/prologic/work/circuits/tests/web/test_disps.pyu__init__surequestupriorityg?cCs5|jjd}td|j|}||_dS(Nu/u/%s/(upathustripuurljoinuchannel(uselfueventurequesturesponseupath((u4/home/prologic/work/circuits/tests/web/test_disps.pyu _on_requests(u__name__u __module__u__doc__u__init__uhandleru _on_request(u __locals__((u __class__u4/home/prologic/work/circuits/tests/web/test_disps.pyuPrefixingDispatcher s uPrefixingDispatchercBs|EeZdZdZdS(u/cCsdS(NuNot used((uself((u4/home/prologic/work/circuits/tests/web/test_disps.pyuindexsN(u__name__u __module__uchanneluindex(u __locals__((u4/home/prologic/work/circuits/tests/web/test_disps.pyu DummyRoots u DummyRootcBs|EeZdZdZdS(u/site1cCsdS(NuHello from site 1!((uself((u4/home/prologic/work/circuits/tests/web/test_disps.pyuindex'sN(u__name__u __module__uchanneluindex(u __locals__((u4/home/prologic/work/circuits/tests/web/test_disps.pyuRoot1#s uRoot1cBs|EeZdZdZdS(u/site2cCsdS(NuHello from site 2!((uself((u4/home/prologic/work/circuits/tests/web/test_disps.pyuindex/sN(u__name__u __module__uchanneluindex(u __locals__((u4/home/prologic/work/circuits/tests/web/test_disps.pyuRoot2+s uRoot2c Cst}tddd}|j|tddj|tddj|tj|tddd}|j|tddj|tddj|tj|tj||jt |j j dd}|j }d}||k}|st jd|fd||fit j|d 6d tjksgt j|rvt j|nd d 6}di|d6}tt j|nd}}t |j j dd}|j }d}||k}|st jd|fd||fit j|d 6d tjksBt j|rQt j|nd d 6}di|d6}tt j|nd}}dS(Niuchannelusite1u localhostusite2utimeoutisHello from site 1!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5sHello from site 2!(u localhosti(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uManageru BaseServeruregisteruPrefixingDispatcheru DispatcheruRoot1uRoot2u DummyRootustartuurlopenuhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone( umanageruserver1userver2ufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u4/home/prologic/work/circuits/tests/web/test_disps.pyu test_disps3s>      l   l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuits.core.manageruManagerucircuits.core.handlersuhandlerucircuits.core.componentsu BaseComponentu circuits.webu BaseServeru Controlleru#circuits.web.dispatchers.dispatcheru DispatcheruhelpersuurlopenuurljoinuPrefixingDispatcheru DummyRootuRoot1uRoot2u test_disps(((u4/home/prologic/work/circuits/tests/web/test_disps.pyus circuits-3.1.0/tests/web/__pycache__/test_methods.cpython-33-PYTEST.pyc0000644000014400001440000001104012414363412026627 0ustar prologicusers00000000000000 ?TEc @sddlZddljjZyddlmZWn"ek rVddl mZYnXddl m Z Gddde Z ddZ dd ZdS( iN(uHTTPConnection(u ControllercBs |EeZdZddZdS(uRootcCsdS(Nu Hello World!((uself((u6/home/prologic/work/circuits/tests/web/test_methods.pyuindex su Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u6/home/prologic/work/circuits/tests/web/test_methods.pyuRoot suRootc Cst|jj|jj}|jdd|j}|j}d}||k}|stjd|fd||fitj |d6dt j kstj |rtj |ndd6tj |d 6}di|d 6}t tj|nd}}}|j}d }||k}|stjd|fd||fitj |d6dt j ks~tj |rtj |ndd6tj |d 6}di|d 6}t tj|nd}}}|j}d} || k}|stjd|fd|| fitj | d6dt j ksUtj |rdtj |ndd6} di| d 6}t tj|nd}} dS(NuGETu/iu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7uOKu.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss Hello World!u%(py0)s == %(py3)supy3usuassert %(py5)s(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suassert %(py7)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uHTTPConnectionuserveruhostuporturequestu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneureasonuread( uwebappu connectionuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8usu @py_assert2u @py_format4((u6/home/prologic/work/circuits/tests/web/test_methods.pyutest_GETs6   |  |  lutest_GETc Cst|jj|jj}|jdd|j}|j}d}||k}|stjd|fd||fitj |d6dt j kstj |rtj |ndd6tj |d 6}di|d 6}t tj|nd}}}|j}d }||k}|stjd|fd||fitj |d6dt j ks~tj |rtj |ndd6tj |d 6}di|d 6}t tj|nd}}}|j}d} || k}|stjd|fd|| fitj | d6dt j ksUtj |rdtj |ndd6} di| d 6}t tj|nd}} dS(NuHEADu/iu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7uOKu.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ssu%(py0)s == %(py3)supy3usuassert %(py5)s(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suassert %(py7)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uHTTPConnectionuserveruhostuporturequestu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneureasonuread( uwebappu connectionuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8usu @py_assert2u @py_format4((u6/home/prologic/work/circuits/tests/web/test_methods.pyu test_HEADs6   |  |  lu test_HEAD(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhttplibuHTTPConnectionu ImportErroru http.clientu circuits.webu ControlleruRootutest_GETu test_HEAD(((u6/home/prologic/work/circuits/tests/web/test_methods.pyus   circuits-3.1.0/tests/web/__pycache__/test_utils.cpython-26-PYTEST.pyc0000644000014400001440000000535112407376151026344 0ustar prologicusers00000000000000 ?Tjc @sddkZddkiiZddklZyddkl Z Wn8e j o,ddk Z e i de i i Z nXddklZddklZdZdZdS( iN(tBytesIO(t decompressi(tcompress(t get_rangescCs3d}d}t||}dg}||j}|ptid|fd||fhti|d6dtijptitotitndd 6ti|d 6ti|d 6ti|d 6}d h|d6}tti|nd}}}}}d}d}t||}ddg}||j}|ptid|fd||fhti|d6dtijptitotitndd 6ti|d 6ti|d 6ti|d 6}d h|d6}tti|nd}}}}}dS(Ns bytes=3-6iiis==s9%(py6)s {%(py6)s = %(py0)s(%(py2)s, %(py4)s) } == %(py9)stpy9Rtpy0tpy2tpy4tpy6sassert %(py11)stpy11s bytes=2-4,-1ii(ii(s==(s9%(py6)s {%(py6)s = %(py0)s(%(py2)s, %(py4)s) } == %(py9)s(ii(ii(s==(s9%(py6)s {%(py6)s = %(py0)s(%(py2)s, %(py4)s) } == %(py9)s( Rt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(t @py_assert1t @py_assert3t @py_assert5t @py_assert8t @py_assert7t @py_format10t @py_format12((s4/home/prologic/work/circuits/tests/web/test_utils.pyt test_rangess(  cCs d}t|}dit|d}t|}||j}|ptid |fd ||fhdtijpti|oti |ndd6dtijpti|oti |ndd 6}d h|d 6}t ti |nd}|i dS(Ns Hello World!tis==s%(py0)s == %(py2)st uncompressedRtsRsassert %(py4)sR(s==(s%(py0)s == %(py2)s(RtjoinRRR R R RRR RRRtclose(Rtcontentst compressedRRt @py_format3t @py_format5((s4/home/prologic/work/circuits/tests/web/test_utils.pyt test_gzips   (t __builtin__R t_pytest.assertion.rewritet assertiontrewriteR tioRtgzipRt ImportErrortzlibt decompressobjt MAX_WBITStcircuits.web.utilsRRRR$(((s4/home/prologic/work/circuits/tests/web/test_utils.pyts   circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway.cpython-33-PYTEST.pyc0000644000014400001440000000310412414363412027660 0ustar prologicusers00000000000000 ?Tcc@sJddlZddljjZddlmZddZddZ dS(iNi(uurlopencCs d}dg}|||dS(Nu200 OKu Content-typeu text/plainu Hello World!(u Content-typeu text/plain((uenvironustart_responseustatusuresponse_headers((u;/home/prologic/work/circuits/tests/web/test_wsgi_gateway.pyu applications  u applicationcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u;/home/prologic/work/circuits/tests/web/test_wsgi_gateway.pyutest s  lutest( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhelpersuurlopenu applicationutest(((u;/home/prologic/work/circuits/tests/web/test_wsgi_gateway.pyus  circuits-3.1.0/tests/web/__pycache__/__init__.cpython-33.pyc0000644000014400001440000000022112414363410024633 0ustar prologicusers00000000000000 Qc@sdS(N((((u2/home/prologic/work/circuits/tests/web/__init__.pyuscircuits-3.1.0/tests/web/__pycache__/test_gzip.cpython-27-PYTEST.pyc0000644000014400001440000001144012414363102026140 0ustar prologicusers00000000000000 ?Tc@s ddlZddljjZddlmZddlm Z ddl m Z ddl m Z ddlmZddlmZmZdd lmZdd lmZmZd efd YZd e fdYZedddZdZdZdZdS(iN(tfixture(tpath(tBytesIO(t Controller(tgzip(thandlert Componenti(tDOCROOT(t build_openertRequesttGzipcBs)eZdZeddddZRS(twebtresponsetpriorityg?cOst|d|dR?R@(R RRRARBR/t @py_assert4t @py_assert7t @py_assert9t @py_assert11t @py_assert13t @py_assert15t @py_assert17RDt @py_format19t @py_format21((s3/home/prologic/work/circuits/tests/web/test_gzip.pyttest2Es&   x(t __builtin__R;t_pytest.assertion.rewritet assertiontrewriteR8tpytestRtosRtioRt circuits.webRtcircuits.web.toolsRtcircuitsRRtconftestRthelpersRR R RRR-RGR[(((s3/home/prologic/work/circuits/tests/web/test_gzip.pyts   circuits-3.1.0/tests/web/__pycache__/test_large_post.cpython-34-PYTEST.pyc0000644000014400001440000000425612414363522027341 0ustar prologicusers00000000000000 ?T@sjddlZddljjZddlmZddlm Z m Z GdddeZ ddZ dS) N) Controller) urlencodeurlopenc@seZdZddZdS)RootcOs5tdd|D}djt|t|S)Ncss6|],}t|tkr*|jdn|VqdS)zutf-8N)typestrencode).0xr 9/home/prologic/work/circuits/tests/web/test_large_post.py szRoot.index..z{0} {1})tupleformatrepr)selfargskwargsr r r index s  z Root.indexN)__name__ __module__ __qualname__rr r r r rs rc Csd}iddd6}d|jjjdj|f}t|jd }t||}|jjd }|d }t |}||k}|svt j d|fd||fit j |d6dt jkst j|rt j |ndd6dt jks#t jt r2t j t ndd6t j |d6} di| d6} tt j| nt}}}|d}t |}||k}|st j d|fd||fit j |d6dt jkst j|r t j |ndd6dt jks5t jt rDt j t ndd6t j |d6} di| d6} tt j| nt}}}dS) N123idataz%s/%s/zutf-8s r==0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)spy2rpy6evalpy0py4assert %(py8)spy8rr)rrr)r)r r')r)r r')serverhttpbasejoinrr rreadsplitr# @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone) webapprrurlrf @py_assert1 @py_assert3 @py_assert5 @py_format7 @py_format9r r r tests,"  r@) builtinsr2_pytest.assertion.rewrite assertionrewriter/ circuits.webrhelpersrrrr@r r r r s  circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_write.cpython-32-PYTEST.pyc0000644000014400001440000000312712414363276031106 0ustar prologicusers00000000000000l ?T{c@sDddlZddljjZddlmZdZdZ dS(iNi(uurlopencCs/d}dg}|||}|ddgS(Nu200 OKu Content-typeu text/plainu Hello World!u(u Content-typeu text/plain((uenvironustart_responseustatusuresponse_headersuwrite((uA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_write.pyu applications   cCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((uA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_write.pyutests  l( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhelpersuurlopenu applicationutest(((uA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_write.pyus  circuits-3.1.0/tests/web/__pycache__/test_value.cpython-32-PYTEST.pyc0000644000014400001440000000464712414363276026326 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlmZddlm Z m Z ddl m Z Gdde Z Gdd e ZGd d eZd ZdS( iN(u Controller(uEventu Componenti(uurlopencBs|EeZdZdS(u hello EventN(u__name__u __module__u__doc__(u __locals__((u4/home/prologic/work/circuits/tests/web/test_value.pyuhello s uhellocBs|EeZdZdS(cCsdS(Nu Hello World!((uself((u4/home/prologic/work/circuits/tests/web/test_value.pyuhellosN(u__name__u __module__uhello(u __locals__((u4/home/prologic/work/circuits/tests/web/test_value.pyuApp s uAppcBs|EeZdZdS(cCs|jtS(N(ufireuhello(uself((u4/home/prologic/work/circuits/tests/web/test_value.pyuindexsN(u__name__u __module__uindex(u __locals__((u4/home/prologic/work/circuits/tests/web/test_value.pyuRoots uRootcCstj|t|jjj}|j}d}||k}|stjd |fd ||fitj |d6dt j kstj |rtj |ndd6}d i|d 6}t tj|nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uAppuregisteruurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u4/home/prologic/work/circuits/tests/web/test_value.pyutests  l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu ControllerucircuitsuEventu ComponentuhelpersuurlopenuhellouAppuRootutest(((u4/home/prologic/work/circuits/tests/web/test_value.pyus circuits-3.1.0/tests/web/__pycache__/test_wsgi_application_yield.cpython-32-PYTEST.pyc0000644000014400001440000000350512414363276031724 0ustar prologicusers00000000000000l ?Tuc@s~ddlZddljjZddlmZddlm Z ddl m Z GddeZ e e Z dZdS( iN(u Controller(u Applicationi(uurlopencBs|EeZdZdS(ccsdVdVdS(NuHello uWorld!((uself((uE/home/prologic/work/circuits/tests/web/test_wsgi_application_yield.pyuindex sN(u__name__u __module__uindex(u __locals__((uE/home/prologic/work/circuits/tests/web/test_wsgi_application_yield.pyuRoot s uRootcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((uE/home/prologic/work/circuits/tests/web/test_wsgi_application_yield.pyutests  l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu Controllerucircuits.web.wsgiu ApplicationuhelpersuurlopenuRootu applicationutest(((uE/home/prologic/work/circuits/tests/web/test_wsgi_application_yield.pyus circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_write.cpython-34-PYTEST.pyc0000644000014400001440000000231312414363523031077 0ustar prologicusers00000000000000 ?T{@sJddlZddljjZddlmZddZddZ dS)N)urlopencCs/d}dg}|||}|ddgS)Nz200 OK Content-type text/plainz Hello World!)rr)environstart_responsestatusresponse_headerswriterrA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_write.py applications   rcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS) Ns Hello World!==%(py0)s == %(py3)spy3spy0rassert %(py5)spy5)r)rr)rserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)webappfr @py_assert2 @py_assert1 @py_format4 @py_format6rrr tests  lr)) builtinsr_pytest.assertion.rewrite assertionrewriterhelpersrrr)rrrr s  circuits-3.1.0/tests/web/__pycache__/test_sessions.cpython-26-PYTEST.pyc0000644000014400001440000000467312407376151027060 0ustar prologicusers00000000000000 ?T1c@s}ddkZddkiiZddklZlZddk l Z l Z ddk l Z defdYZ dZdS( iN(t ControllertSessionsi(t build_openertHTTPCookieProcessor(t CookieJartRootcBseZddZRS(cCs;|o|}||ids  circuits-3.1.0/tests/web/__pycache__/test_large_post.cpython-32-PYTEST.pyc0000644000014400001440000000553212414363276027343 0ustar prologicusers00000000000000l ?Tc@sdddlZddljjZddlmZddlm Z m Z GddeZ dZ dS(iN(u Controlleri(u urlencodeuurlopencBs|EeZdZdS(cOs2td|D}djt|t|S(Ncss6|],}t|tkr*|jdn|VqdS(uutf-8N(utypeustruencode(u.0ux((u9/home/prologic/work/circuits/tests/web/test_large_post.pyu su{0} {1}(utupleuformaturepr(uselfuargsukwargs((u9/home/prologic/work/circuits/tests/web/test_large_post.pyuindex s N(u__name__u __module__uindex(u __locals__((u9/home/prologic/work/circuits/tests/web/test_large_post.pyuRoots uRootc Csd}iddd6}d|jjjdj|f}t|jd }t||}|jjd }|d }t |}||k}|svt j d|fd||fit j |d6dt jkst jt rt j t ndd6dt jks#t j|r2t j |ndd6t j |d6} di| d6} tt j| nd}}}|d}t |}||k}|st j d|fd||fit j |d6dt jkst jt r t j t ndd6dt jks5t j|rDt j |ndd6t j |d6} di| d6} tt j| nd}}}dS( Nu1u2u3uiudatau%s/%su/uutf-8s iu==u0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)supy2uevalupy0uargsupy6upy4uuassert %(py8)supy8iukwargs(u1u2u3(u==(u0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)suassert %(py8)s(u==(u0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)suassert %(py8)s(userveruhttpubaseujoinu urlencodeuencodeuurlopenureadusplituevalu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone( uwebappuargsukwargsuurludataufu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_format9((u9/home/prologic/work/circuits/tests/web/test_large_post.pyutests,"  ( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu Controlleruhelpersu urlencodeuurlopenuRootutest(((u9/home/prologic/work/circuits/tests/web/test_large_post.pyus  circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_null_response.cpython-33-PYTEST.pyc0000644000014400001440000000407212414363412032635 0ustar prologicusers00000000000000 ?Tc@spddlZddljjZddlmZddlm Z Gddde Z ddZ d d Z dS( iNi(uurlopen(u ControllercBs |EeZdZddZdS(uRootcOsdS(NuERROR((uselfuargsukwargs((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pyuindex su Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pyuRootsuRootcCsd}||gdgS(Nu200 OKu((uenvironustart_responseustatus((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pyu applications u applicationcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Nsu==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pyutests  lutest( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhelpersuurlopenu circuits.webu ControlleruRootu applicationutest(((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pyus  circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_errors.cpython-32-PYTEST.pyc0000644000014400001440000000575212414363276031276 0ustar prologicusers00000000000000l ?Tc@sJddlZddljjZddlmZmZdZ dZ dS(iNi(uurlopenu HTTPErrorcCs,d}dg}|||tddS(Nu200 OKu Content-typeu text/plainu Hello World!(u Content-typeu text/plain(u Exception(uenvironustart_responseustatusuresponse_headers((uB/home/prologic/work/circuits/tests/web/test_wsgi_gateway_errors.pyu applications  c Csyt|jjjWnGtk r`}z'|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k} | stjd| fd||fidt j ks:tj |rItj|ndd6tj|d6} di| d6}t tj |nd}} d}||k} | sDtjd | fd!||fidt j kstj |rtj|ndd6tj|d6} d"i| d6}t tj |nd}} WYdd}~Xn`Xd#sd$idt j kstj d#rtjd#ndd6} t tj | ndS(%Niu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7uInternal Server Erroru+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ss Exceptionuinu%(py1)s in %(py3)susupy3upy1uassert %(py5)ss Hello World!uassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)s(uin(u%(py1)s in %(py3)suassert %(py5)s(uin(u%(py1)s in %(py3)suassert %(py5)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsgureaduFalse( uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8usu @py_assert0u @py_assert2u @py_format4u @py_format1((uB/home/prologic/work/circuits/tests/web/test_wsgi_gateway_errors.pyutest sJ  |  |  l  lA( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhelpersuurlopenu HTTPErroru applicationutest(((uB/home/prologic/work/circuits/tests/web/test_wsgi_gateway_errors.pyus  circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_multiple_apps.cpython-27-PYTEST.pyc0000644000014400001440000000547412414363102032631 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZejd d krMejdnddl m Z ddl m Z ddl mZd Zd Zejd Zd ZdS(iNiisBroken on Python 3.3(tServer(tGatewayi(turlopencCs d}dg}|||dS(Ns200 OKs Content-types text/plains Hello World!(s Content-types text/plain((tenvirontstart_responsetstatustresponse_headers((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pythello s  cCs d}dg}|||dS(Ns200 OKs Content-types text/plainsFooBar!(s Content-types text/plain((RRRR((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pytfoobars  cCsitd6td6S(Nt/s/foobar(RR(trequest((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pytappssc Cstd}t|j|tj|d}|j|jt|jj }|j }d}||k}|st j d|fd||fit j |d6dtjkst j|rt j |ndd6}di|d 6}tt j|nd}}td j|jj }|j }d }||k}|st j d|fd||fit j |d6dtjkst j|rt j |ndd6}di|d 6}tt j|nd}}|jdS(Nitreadys Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5s {0:s}/foobar/sFooBar!(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(RRtregistertpytestt WaitEventtstarttwaitRthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonetformattstop( R tservertwaitertfRt @py_assert2t @py_assert1t @py_format4t @py_format6((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pyttest#s0     l   l (ii(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRRtPYVERtskipt circuits.webRtcircuits.web.wsgiRthelpersRRRtfixtureR R,(((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pyts    circuits-3.1.0/tests/web/__pycache__/test_expires.cpython-33-PYTEST.pyc0000644000014400001440000001252012414363411026646 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlmZddl m Z ddl m Z ddl mZGdd d e Zd d Zd d ZdS(iN(udatetime(umktime(u parsedate(u Controlleri(uurlopencBs,|EeZdZddZddZdS(uRootcCs|jddS(Ni<u Hello World!(uexpires(uself((u6/home/prologic/work/circuits/tests/web/test_expires.pyuindexs u Root.indexcCs|jddS(Niu Hello World!(uexpires(uself((u6/home/prologic/work/circuits/tests/web/test_expires.pyunocaches u Root.nocacheN(u__name__u __module__u __qualname__uindexunocache(u __locals__((u6/home/prologic/work/circuits/tests/web/test_expires.pyuRoot s uRootc Cst|jjj}|j}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}|jd }tt|ttjj}d } d }d } || } | | } | |k} d }d }d }||}||}||k}| oz|shtjd| |fd| ||fitj|d6dtj kstj |rtj|ndd6tj| d6tj|d6tj|d6tj| d 6tj|d6}di|d6}t tj |nd} }} } } } }}}}}}dS(Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5uExpiresi<g?us  circuits-3.1.0/tests/web/__pycache__/__init__.cpython-34.pyc0000644000014400001440000000020512414363520024640 0ustar prologicusers00000000000000 Q@sdS)Nrrr2/home/prologic/work/circuits/tests/web/__init__.pyscircuits-3.1.0/tests/web/__pycache__/test_cookies.cpython-32-PYTEST.pyc0000644000014400001440000000445312414363276026641 0ustar prologicusers00000000000000l ?Tc@stddlZddljjZddlmZddlm Z m Z ddlm Z GddeZ dZ dS( iN(u Controlleri(u build_openeruHTTPCookieProcessor(u CookieJarcBs|EeZdZdS(cCs:|jjd}|r%|jr%dSd|jds  circuits-3.1.0/tests/web/__pycache__/test_expires.cpython-27-PYTEST.pyc0000644000014400001440000001141212414363102026645 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlmZddl m Z ddl m Z ddl mZde fd YZd Zd ZdS( iN(tdatetime(tmktime(t parsedate(t Controlleri(turlopentRootcBseZdZdZRS(cCs|jddS(Ni<s Hello World!(texpires(tself((s6/home/prologic/work/circuits/tests/web/test_expires.pytindexs cCs|jddS(Nis Hello World!(R(R((s6/home/prologic/work/circuits/tests/web/test_expires.pytnocaches (t__name__t __module__RR (((s6/home/prologic/work/circuits/tests/web/test_expires.pyR s cCst|jjj}|j}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}|jd }tt|ttjj}d } d }d } || } | | } | |k} d }d }d }||}||}||k}| oz|shtjd| |fd| ||fitj|d6dtj kstj |rtj|ndd6tj| d6tj|d6tj|d6tj| d 6tj|d6}di|d6}t tj |nd} }} } } } }}}}}}dS(Ns Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5tExpiresi<g?ts  circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_yield.cpython-27-PYTEST.pyc0000644000014400001440000000301312414363102031044 0ustar prologicusers00000000000000 ?Toc@sDddlZddljjZddlmZdZdZ dS(iNi(turlopenccs*d}dg}|||dVdVdS(Ns200 OKs Content-types text/plainsHello sWorld!(s Content-types text/plain((tenvirontstart_responsetstatustresponse_headers((sA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_yield.pyt applications   cCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((sA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_yield.pyttests  l( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthelpersRRR(((sA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_yield.pyts  circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_generator.cpython-27-PYTEST.pyc0000644000014400001440000000330012414363102031723 0ustar prologicusers00000000000000 ?Tc@sDddlZddljjZddlmZdZdZ dS(iNi(turlopencCs,d}dg}|||d}|S(Ns200 OKs Content-types text/plaincssdVdVdS(NsHello sWorld!((((sE/home/prologic/work/circuits/tests/web/test_wsgi_gateway_generator.pytresponse s(s Content-types text/plain((tenvirontstart_responsetstatustresponse_headersR((sE/home/prologic/work/circuits/tests/web/test_wsgi_gateway_generator.pyt applications    cCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((sE/home/prologic/work/circuits/tests/web/test_wsgi_gateway_generator.pyttests  l( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthelpersRRR(((sE/home/prologic/work/circuits/tests/web/test_wsgi_gateway_generator.pyts  circuits-3.1.0/tests/web/__pycache__/test_call_wait.cpython-32-PYTEST.pyc0000644000014400001440000000506012414363276027137 0ustar prologicusers00000000000000l ?TJc@sddlZddljjZddlmZddlm Z m Z ddl m Z Gdde Z Gdd e ZGd d eZd ZdS( iN(u Controller(u ComponentuEventi(uurlopencBs|EeZdZdS(u foo EventN(u__name__u __module__u__doc__(u __locals__((u8/home/prologic/work/circuits/tests/web/test_call_wait.pyufoo s ufoocBs|EeZdZdZdS(uappcCsdS(Nu Hello World!((uself((u8/home/prologic/work/circuits/tests/web/test_call_wait.pyufoosN(u__name__u __module__uchannelufoo(u __locals__((u8/home/prologic/work/circuits/tests/web/test_call_wait.pyuApp s uAppcBs|EeZdZdS(ccs"|jtdV}|jVdS(Nuapp(ucallufoouvalue(uselfuvalue((u8/home/prologic/work/circuits/tests/web/test_call_wait.pyuindexsN(u__name__u __module__uindex(u __locals__((u8/home/prologic/work/circuits/tests/web/test_call_wait.pyuRoots uRootc Cstj|}zt|jjj}|j}d}||k}|stjd |fd ||fitj |d6dt j kstj |rtj |ndd6}d i|d 6}t tj|nd}}Wd|jXdS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uAppuregisteruurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu unregister(uwebappuappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u8/home/prologic/work/circuits/tests/web/test_call_wait.pyutests  l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu Controllerucircuitsu ComponentuEventuhelpersuurlopenufoouAppuRootutest(((u8/home/prologic/work/circuits/tests/web/test_call_wait.pyus circuits-3.1.0/tests/web/__pycache__/test_yield.cpython-33-PYTEST.pyc0000644000014400001440000000332312414363412026277 0ustar prologicusers00000000000000 ?T%c@sdddlZddljjZddlmZddlm Z GdddeZ ddZ dS( iN(u Controlleri(uurlopencBs |EeZdZddZdS(uRootccsdVdVdS(NuHello uWorld!((uself((u4/home/prologic/work/circuits/tests/web/test_yield.pyuindex su Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u4/home/prologic/work/circuits/tests/web/test_yield.pyuRootsuRootcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u4/home/prologic/work/circuits/tests/web/test_yield.pyutests  lutest( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu ControlleruhelpersuurlopenuRootutest(((u4/home/prologic/work/circuits/tests/web/test_yield.pyus circuits-3.1.0/tests/web/__pycache__/test_dispatcher.cpython-33-PYTEST.pyc0000644000014400001440000001625112414363411027322 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z m Z GdddeZ GdddeZ dd Z d d Zd d ZddZddZdS(iN(u Controller(uClienturequestcs>|EeZdZfddZddZddZS(uRootcs*tt|j|||t7}dS(N(usuperuRootu__init__uLeaf(uselfuargsukwargs(u __class__(u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyu__init__su Root.__init__cCsdS(Nu Hello World!((uself((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyuindex su Root.indexcCsdS(NuEarth((uself((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyunamesu Root.name(u__name__u __module__u __qualname__u__init__uindexuname(u __locals__((u __class__u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyuRoots uRootcBs2|EeZdZdZddZddZdS(uLeafu/world/country/regioncCsdS(Nu Hello cities!((uself((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyuindexsu Leaf.indexcCsdS(Nu Hello City!((uself((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyucitysu Leaf.cityN(u__name__u __module__u __qualname__uchanneluindexucity(u __locals__((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyuLeafs uLeafcCskt}|j|jtd|x|jdkr>q,W|j|j}|j}|j|fS(NuGET( uClientustartufireurequesturesponseuNoneustopureadustatus(uwebappupathuclienturesponseus((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyu make_requests     u make_requestcCst||jjj\}}d}||k}|stjd |fd ||fitj|d6dtjkstj |rtj|ndd6}di|d 6}t tj |nd}}d }||k}|stjd|fd||fitj|d6d tjks?tj |rNtj|nd d6}di|d 6}t tj |nd}}dS(Niu==u%(py0)s == %(py3)supy3ustatusupy0uuassert %(py5)supy5s Hello World!ucontent(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s( u make_requestuserveruhttpubaseu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappustatusucontentu @py_assert2u @py_assert1u @py_format4u @py_format6((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyu test_root-s l  lu test_rootcCst|d|jjj\}}d}||k}|stjd |fd||fitj|d6dtjkstj |rtj|ndd6}di|d 6}t tj |nd}}d }||k}|stjd|fd||fitj|d6d tjksCtj |rRtj|nd d6}di|d 6}t tj |nd}}dS(Nu%s/nameiu==u%(py0)s == %(py3)supy3ustatusupy0uuassert %(py5)supy5sEarthucontent(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s( u make_requestuserveruhttpubaseu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappustatusucontentu @py_assert2u @py_assert1u @py_format4u @py_format6((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyutest_root_name4s" l  lutest_root_namecCst|d|jjj\}}d}||k}|stjd |fd||fitj|d6dtjkstj |rtj|ndd6}di|d 6}t tj |nd}}d }||k}|stjd|fd||fitj|d6d tjksCtj |rRtj|nd d6}di|d 6}t tj |nd}}dS(Nu%s/world/country/regioniu==u%(py0)s == %(py3)supy3ustatusupy0uuassert %(py5)supy5s Hello cities!ucontent(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s( u make_requestuserveruhttpubaseu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappustatusucontentu @py_assert2u @py_assert1u @py_format4u @py_format6((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyu test_leaf;s" l  lu test_leafcCst|d|jjj\}}d}||k}|stjd |fd||fitj|d6dtjkstj |rtj|ndd6}di|d 6}t tj |nd}}d }||k}|stjd|fd||fitj|d6d tjksCtj |rRtj|nd d6}di|d 6}t tj |nd}}dS(Nu%s/world/country/region/cityiu==u%(py0)s == %(py3)supy3ustatusupy0uuassert %(py5)supy5s Hello City!ucontent(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s( u make_requestuserveruhttpubaseu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappustatusucontentu @py_assert2u @py_assert1u @py_format4u @py_format6((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyu test_cityBs" l  lu test_city(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu Controllerucircuits.web.clientuClienturequestuRootuLeafu make_requestu test_rootutest_root_nameu test_leafu test_city(((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyus      circuits-3.1.0/tests/web/__pycache__/test_methods.cpython-34-PYTEST.pyc0000644000014400001440000000644712414363522026651 0ustar prologicusers00000000000000 ?TE @sddlZddljjZyddlmZWn"ek rVddl mZYnXddl m Z Gddde Z ddZ dd ZdS) N)HTTPConnection) Controllerc@seZdZddZdS)RootcCsdS)Nz Hello World!)selfrr6/home/prologic/work/circuits/tests/web/test_methods.pyindex sz Root.indexN)__name__ __module__ __qualname__rrrrrr s rc Cst|jj|jj}|jdd|j}|j}d}||k}|stjd|fd||fitj |d6tj |d6dt j kstj |rtj |ndd 6}di|d 6}t tj|nt}}}|j}d }||k}|stjd|fd||fitj |d6tj |d6dt j kstj |rtj |ndd 6}di|d 6}t tj|nt}}}|j}d} || k}|stjd|fd|| fitj | d6dt j ksUtj |rdtj |ndd 6} di| d6}t tj|nt}} dS)NGET/==.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)spy5py2responsepy0assert %(py7)spy7OK.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss Hello World!%(py0)s == %(py3)spy3sassert %(py5)s)r)rr)r)rr)r)rr)rserverhostportrequest getresponsestatus @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonereasonread) webapp connectionr @py_assert1 @py_assert4 @py_assert3 @py_format6 @py_format8r @py_assert2 @py_format4rrrtest_GETs6   |  |  lr8c Cst|jj|jj}|jdd|j}|j}d}||k}|stjd|fd||fitj |d6tj |d6dt j kstj |rtj |ndd 6}di|d 6}t tj|nt}}}|j}d }||k}|stjd|fd||fitj |d6tj |d6dt j kstj |rtj |ndd 6}di|d 6}t tj|nt}}}|j}d} || k}|stjd|fd|| fitj | d6dt j ksUtj |rdtj |ndd 6} di| d6}t tj|nt}} dS)NHEADr rr.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)srrrrrassert %(py7)srr.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s%(py0)s == %(py3)srrassert %(py5)s)r)r:r;)r)r<r;)r)r>r?)rrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.) r/r0rr1r2r3r4r5rr6r7rrr test_HEADs6   |  |  lr@)builtinsr'_pytest.assertion.rewrite assertionrewriter$httplibr ImportError http.client circuits.webrrr8r@rrrrs   circuits-3.1.0/tests/web/__pycache__/test_xmlrpc.cpython-32-PYTEST.pyc0000644000014400001440000000551112414363276026506 0ustar prologicusers00000000000000l ?T c @sddlZddljjZyddlmZWn"ek rVddl mZYnXddl m Z ddl m Z mZddlmZGdde ZGd d e Zd ZdS( iN(u ServerProxy(u Component(u ControlleruXMLRPCi(uurlopencBs|EeZdZdS(cCs t|S(N(ueval(uselfus((u5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyuevalsN(u__name__u __module__ueval(u __locals__((u5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyuApps uAppcBs|EeZdZdS(cCsdS(Nu Hello World!((uself((u5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyuindexsN(u__name__u __module__uindex(u __locals__((u5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyuRoots uRootc Cs td}t}|j||j|t|jjj}|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nd}}d |jjj} t| d d} | jd } d}| |k}|stj d|fd| |fitj |d6dt j kstj | rtj | ndd6}di|d 6}ttj|nd}}|j|jdS(Nu/rpcs Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u%s/rpcu allow_noneu1 + 2iur(u==(u%(py0)s == %(py3)suassert %(py5)sT(u==(u%(py0)s == %(py3)suassert %(py5)s(uXMLRPCuAppuregisteruurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu ServerProxyuTrueuevalu unregister( uwebappurpcutestufusu @py_assert2u @py_assert1u @py_format4u @py_format6uurluserverur((u5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyutests2      l  l  (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru xmlrpc.clientu ServerProxyu ImportErroru xmlrpclibucircuitsu Componentu circuits.webu ControlleruXMLRPCuhelpersuurlopenuAppuRootutest(((u5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyus  circuits-3.1.0/tests/web/__pycache__/test_digestauth.cpython-26-PYTEST.pyc0000644000014400001440000000632012407376151027342 0ustar prologicusers00000000000000 ?T=c @sddkZddkiiZddkZeid d joeidnddk l Z ddk l Z l Z ddklZlZdd klZlZlZd e fd YZd ZdS(iNiisBroken on Python 3.3(t Controller(t check_autht digest_authi(t HTTPErrortHTTPDigestAuthHandler(turlopent build_openertinstall_openertRootcBseZdZRS(cCsMd}hdd6}t|i|i||odSt|i|i||S(NtTesttadmins Hello World!(RtrequesttresponseR(tselftrealmtusers((s9/home/prologic/work/circuits/tests/web/test_digestauth.pytindexs  (t__name__t __module__R(((s9/home/prologic/work/circuits/tests/web/test_digestauth.pyRsc Cspyt|iii}Wntj o}|i}d}||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}dh|d 6}t ti |nd}}}|i}d }||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}dh|d 6}t ti |nd}}}nfXtp]d hd ti jpti toti tnd d6}t ti |nt} | id|iiiddt| } t| t|iii}|i} d} | | j}|ptid|fd| | fhdti jpti | oti | ndd6ti | d6} dh| d6}t ti |nd}} tddS(Nis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)stetpy0tpy2tpy5sassert %(py7)stpy7t Unauthorizeds+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)stFalseR R s Hello World!s%(py0)s == %(py3)ststpy3sassert %(py5)s(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)s(s==(s%(py0)s == %(py3)s(RtserverthttptbaseRtcodet @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetmsgRRt add_passwordRRtread(twebapptfRt @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8t @py_format1thandlertopenerRt @py_assert2t @py_format4((s9/home/prologic/work/circuits/tests/web/test_digestauth.pyttestsH    D     o (ii(t __builtin__R"t_pytest.assertion.rewritet assertiontrewriteR tpytesttPYVERtskipt circuits.webRtcircuits.web.toolsRRthelpersRRRRRRR8(((s9/home/prologic/work/circuits/tests/web/test_digestauth.pyts   circuits-3.1.0/tests/web/__pycache__/helpers.cpython-33.pyc0000644000014400001440000000250512414363411024546 0ustar prologicusers00000000000000 ?T<c@sy~ddlmZmZddlmZmZmZddlmZm Z ddlm Z m Z m Z ddlm Z mZWnek r ddlmZddlmZmZddlmZmZm Z ddlmZm Z dd lm Z m Z m Z mZYnXydd lmZWn"ek rEdd lmZYnXydd lmZWn"ek r~dd lmZYnXd S( i(u HTTPErroruURLError(uquoteu urlencodeuurljoin(uHTTPBasicAuthHandleruHTTPCookieProcessor(uurlopenu build_openeruinstall_opener(uHTTPDigestAuthHandleruRequest(uurljoin(uquoteu urlencode(u HTTPErroruURLErroruHTTPDigestAuthHandler(uurlopenu build_openeruinstall_openeruRequest(u CookieJar(uurlparseN(u urllib.erroru HTTPErroruURLErroru urllib.parseuquoteu urlencodeuurljoinuurllib.requestuHTTPBasicAuthHandleruHTTPCookieProcessoruurlopenu build_openeruinstall_openeruHTTPDigestAuthHandleruRequestu ImportErroruurlparseuurllibuurllib2uhttp.cookiejaru CookieJaru cookielib(((u1/home/prologic/work/circuits/tests/web/helpers.pyus& '  circuits-3.1.0/tests/web/__pycache__/test_static.cpython-27-PYTEST.pyc0000644000014400001440000002660512414363102026467 0ustar prologicusers00000000000000 ?T c@sddlZddljjZddlmZyddlm Z Wn!e k reddl m Z nXddl m Z ddlmZddlmZmZmZde fd YZd Zd Zd Zd ZdZdZdZdZdZdZdS(iN(tpath(tHTTPConnection(t Controlleri(tDOCROOT(tquoteturlopent HTTPErrortRootcBseZdZRS(cCsdS(Ns Hello World!((tself((s5/home/prologic/work/circuits/tests/web/test_static.pytindexs(t__name__t __module__R (((s5/home/prologic/work/circuits/tests/web/test_static.pyRscCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(twebapptfR t @py_assert2t @py_assert1t @py_format4t @py_format6((s5/home/prologic/work/circuits/tests/web/test_static.pyttests  lcCs<ytd|jjjWntk r}|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksttj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}n`Xts8didt j kstj trtjtndd6}t tj |ndS(Ns%s/foois==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)stpy2teRRRsassert %(py7)stpy7s Not Founds+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)stFalse(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)ssassert %(py7)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py7)ssassert %(py0)s(RRRRRtcodeRRRRRRRRRtmsgR((RR&R!t @py_assert4t @py_assert3R#t @py_format8t @py_format1((s5/home/prologic/work/circuits/tests/web/test_static.pyttest_404s,  |  |AcCsd|jjj}t|}|jj}d}||k}|stjd |fd ||fitj|d6dt j kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS(Ns%s/static/helloworld.txts Hello World!s==s%(py0)s == %(py3)sR R RRsassert %(py5)sR(s==(s%(py0)s == %(py3)ssassert %(py5)s(RRRRRtstripRRRRRRRRR(RturlRR R R!R"R#((s5/home/prologic/work/circuits/tests/web/test_static.pyt test_file(s  lcCsSd|jjj}t|}|jj}tj}d}|t|}d}t ||}|j} | } || k} | r-t j df| fdf|| fi t j |d6dt jkpt jtrt j tndd6d t jkpt jt r't j t nd d 6t j |d 6d t jkp\t j|rnt j |nd d 6dt jkpt jtrt j tndd6t j |d6t j | d6t j | d6t j |d6t j |d6} ddi| d6} tt j| nt} }}}}}} } dS(Ns%s/static/largefile.txts largefile.txttrbs==s%(py0)s == %(py18)s {%(py18)s = %(py16)s {%(py16)s = %(py14)s {%(py14)s = %(py2)s(%(py10)s {%(py10)s = %(py5)s {%(py5)s = %(py3)s.join }(%(py6)s, %(py8)s) }, %(py12)s) }.read }() }tpy10RR topenR%tpy12R RRtpy6Rtpy16tpy18tpy8tpy14Rsassert %(py20)stpy20(RRRRRR0RtjoinRR5RRRRRRRRR(RR1RR R+t @py_assert7t @py_assert9t @py_assert11t @py_assert13t @py_assert15t @py_assert17R!t @py_format19t @py_format21((s5/home/prologic/work/circuits/tests/web/test_static.pyttest_largefile/s"   xcCs<ytd|jjjWntk r}|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksttj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}n`Xts8didt j kstj trtjtndd6}t tj |ndS(Ns%s/static/foo.txtis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sR%R&RRRsassert %(py7)sR's Not Founds+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)sR((s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)ssassert %(py7)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py7)ssassert %(py0)s(RRRRRR)RRRRRRRRRR*R((RR&R!R+R,R#R-R.((s5/home/prologic/work/circuits/tests/web/test_static.pyt test_file4046s,  |  |AcCstd|jjj}|j}d}||k}|stjd |fd ||fidtjkstj |rtj |ndd6tj |d6}d i|d 6}t tj |nd}}dS(Ns %s/static/shelloworld.txttins%(py1)s in %(py3)sR R tpy1Rsassert %(py5)sR(RH(s%(py1)s in %(py3)ssassert %(py5)s(RRRRRRRRRRRRRR(RRR t @py_assert0R R"R#((s5/home/prologic/work/circuits/tests/web/test_static.pyttest_directory@s  lcCsdj|jjjtd}t|}|jj}d}||k}|stj d |fd ||fitj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nd}}dS(Ns {0:s}{1:s}s/static/#foobar.txts Hello World!s==s%(py0)s == %(py3)sR R RRsassert %(py5)sR(s==(s%(py0)s == %(py3)ssassert %(py5)s(tformatRRRRRRR0RRRRRRRRR(RR1RR R R!R"R#((s5/home/prologic/work/circuits/tests/web/test_static.pyttest_file_quoatingFs!  lcCs{t|jj|jj}|jdd|jjjdidd6|j}|j}d}||k}| r"t j df|fdf||fit j |d 6d t j kpt j|rt j |nd d 6t j |d 6}d di|d6}tt j|nt}}}|j}tj}d} |t| } d} t| | } | j} d}| |}||k}| rQt j df|fdf||fi t j | d6t j |d6dt j kpt jtrt j tndd6dt j kp9t jtrKt j tndd 6t j | d6dt j kpt j|rt j |ndd 6dt j kpt jtrt j tndd6t j |d 6t j | d6t j |d6t j | d6t j | d 6}d d!i|d"6}tt j|nt}}} } } } } }}dS(#NtGETs%s/static/largefile.txttheaderss bytes=0-100tRangeis==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)sR%tresponseRRRsassert %(py7)sR's largefile.txtR3ies%(py0)s == %(py20)s {%(py20)s = %(py16)s {%(py16)s = %(py14)s {%(py14)s = %(py2)s(%(py10)s {%(py10)s = %(py5)s {%(py5)s = %(py3)s.join }(%(py6)s, %(py8)s) }, %(py12)s) }.read }(%(py18)s) }R4R<RR R5R6R RR7R8R9R:R;sassert %(py22)stpy22(RRthosttporttrequestRRt getresponsetstatusRRRRRRRRRRRR=RR5(Rt connectionRQR!R+R,R#R-R R>R?R@RARBRCt @py_assert19REt @py_format23((s5/home/prologic/work/circuits/tests/web/test_static.pyt test_rangeMs6*       cCs)t|jj|jj}|jdd|jjjdidd6|j}|j}d}||k}|st j d|fd||fit j |d 6d t j kst j|rt j |nd d 6t j |d 6}di|d6}tt j|nd}}}dS(NRNs%s/static/largefile.txtROsbytes=0-50,51-100RPis==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)sR%RQRRRsassert %(py7)sR'(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)ssassert %(py7)s(RRRSRTRURRRVRWRRRRRRRRR(RRXRQR!R+R,R#R-((s5/home/prologic/work/circuits/tests/web/test_static.pyt test_rangesWs*   |cCs)t|jj|jj}|jdd|jjjdidd6|j}|j}d}||k}|st j d|fd||fit j |d 6d t j kst j|rt j |nd d 6t j |d 6}di|d6}tt j|nd}}}dS(NRNs%s/static/largefile.txtROsbytes=0-100,100-10000,0-1RPis==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)sR%RQRRRsassert %(py7)sR'(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)ssassert %(py7)s(RRRSRTRURRRVRWRRRRRRRRR(RRXRQR!R+R,R#R-((s5/home/prologic/work/circuits/tests/web/test_static.pyttest_unsatisfiable_range1es*   |(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtosRthttplibRt ImportErrort http.clientt circuits.webRtconftestRthelpersRRRRR$R/R2RFRGRKRMR[R\R](((s5/home/prologic/work/circuits/tests/web/test_static.pyts(        circuits-3.1.0/tests/web/__pycache__/test_null_response.cpython-26-PYTEST.pyc0000644000014400001440000000426012407376151030072 0ustar prologicusers00000000000000 ?TKc@sgddkZddkiiZddklZddkl Z l Z defdYZ dZ dS(iN(t Controlleri(turlopent HTTPErrortRootcBseZdZRS(cCsdS(N((tself((s</home/prologic/work/circuits/tests/web/test_null_response.pytindexs(t__name__t __module__R(((s</home/prologic/work/circuits/tests/web/test_null_response.pyRscCsIyt|iiiWntj o}|i}d}||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}dh|d 6}t ti |nd}}}|i}d }||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}dh|d 6}t ti |nd}}}nfXtp]d hd ti jpti toti tnd d6}t ti |ndS(Nis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)stetpy0tpy2tpy5sassert %(py7)stpy7s Not Founds+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)stFalse(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)s(RtserverthttptbaseRtcodet @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetmsgR (twebappRt @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8t @py_format1((s</home/prologic/work/circuits/tests/web/test_null_response.pyttest s,    D( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRthelpersRRRR#(((s</home/prologic/work/circuits/tests/web/test_null_response.pyts circuits-3.1.0/tests/web/__pycache__/test_wsgi_application_yield.cpython-33-PYTEST.pyc0000644000014400001440000000360612414363412031717 0ustar prologicusers00000000000000 ?Tuc@sddlZddljjZddlmZddlm Z ddl m Z GdddeZ e e Z dd ZdS( iN(u Controller(u Applicationi(uurlopencBs |EeZdZddZdS(uRootccsdVdVdS(NuHello uWorld!((uself((uE/home/prologic/work/circuits/tests/web/test_wsgi_application_yield.pyuindex su Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((uE/home/prologic/work/circuits/tests/web/test_wsgi_application_yield.pyuRoot suRootcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((uE/home/prologic/work/circuits/tests/web/test_wsgi_application_yield.pyutests  lutest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu Controllerucircuits.web.wsgiu ApplicationuhelpersuurlopenuRootu applicationutest(((uE/home/prologic/work/circuits/tests/web/test_wsgi_application_yield.pyus circuits-3.1.0/tests/web/__pycache__/test_large_post.cpython-26-PYTEST.pyc0000644000014400001440000000525312407376151027344 0ustar prologicusers00000000000000 ?Tc@sgddkZddkiiZddklZddkl Z l Z defdYZ dZ dS(iN(t Controlleri(t urlencodeturlopentRootcBseZdZRS(cOs2td|D}dit|t|S(Ncss<x5|].}t|tjo|idn|VqWdS(sutf-8N(ttypetstrtencode(t.0tx((s9/home/prologic/work/circuits/tests/web/test_large_post.pys s s{0} {1}(ttupletformattrepr(tselftargstkwargs((s9/home/prologic/work/circuits/tests/web/test_large_post.pytindex s (t__name__t __module__R(((s9/home/prologic/work/circuits/tests/web/test_large_post.pyRsc Csd}hddd6}d|iiidi|f}t|id }t||}|iid }|d }t |}||j}|pt i d|fd||fhdt i jpt it ot it ndd6t i|d6t i|d6dt i jpt i|ot i|ndd6} dh| d6} tt i| nd}}}|d}t |}||j}|pt i d|fd||fhdt i jpt it ot it ndd6t i|d6t i|d6dt i jpt i|ot i|ndd6} dh| d6} tt i| nd}}}dS(Nt1t2t3titdatas%s/%st/sutf-8s is==s0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)stevaltpy0tpy2tpy4R tpy6sassert %(py8)stpy8iR(RRR(s==(s0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)s(s==(s0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)s(tserverthttptbasetjoinRRRtreadtsplitRt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone( twebappR RturlRtft @py_assert1t @py_assert3t @py_assert5t @py_format7t @py_format9((s9/home/prologic/work/circuits/tests/web/test_large_post.pyttests,"  ( t __builtin__R&t_pytest.assertion.rewritet assertiontrewriteR$t circuits.webRthelpersRRRR5(((s9/home/prologic/work/circuits/tests/web/test_large_post.pyts  circuits-3.1.0/tests/web/__pycache__/test_gzip.cpython-32-PYTEST.pyc0000644000014400001440000001261512414363276026155 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlmZddlm Z ddl m Z ddl m Z ddlmZddlmZmZdd lmZdd lmZmZGd d eZGd de ZedddZdZdZdZdS(iN(ufixture(upath(uBytesIO(u Controller(ugzip(uhandleru Componenti(uDOCROOT(u build_openeruRequestcBs/|EeZdZeddddZdS(uweburesponseupriorityg?cOst|d|ds   circuits-3.1.0/tests/web/__pycache__/test_http.cpython-26-PYTEST.pyc0000644000014400001440000000727612407376151026173 0ustar prologicusers00000000000000 ?Tc @sddkZddkiiZddkZddklZddk l Z ddk l Z ddk lZddklZlZdefdYZd e fd YZd ZdS( iN(t Component(t Controller(t parse_url(t TCPClient(tconnecttwritetClientcBs#eZdZdZdZRS(cOs/tt|i||g|_t|_dS(N(tsuperRt__init__t_buffertFalsetdone(tselftargstkwargs((s3/home/prologic/work/circuits/tests/web/test_http.pyR s cCs7|ii||iddjo t|_ndS(Ns i(R tappendtfindtTrueR (R tdata((s3/home/prologic/work/circuits/tests/web/test_http.pytreadscCsdi|iS(Nt(tjoinR (R ((s3/home/prologic/work/circuits/tests/web/test_http.pytbuffers(t__name__t __module__RRR(((s3/home/prologic/work/circuits/tests/web/test_http.pyR s  tRootcBseZdZRS(cCsdS(Ns Hello World!((R ((s3/home/prologic/work/circuits/tests/web/test_http.pytindexs(RRR(((s3/home/prologic/work/circuits/tests/web/test_http.pyRscCsct}t}||7}|it|iii\}}}}|it||t i }d}|||} | pdhdt i jpt it ot it ndd6dt i jpt i|ot i|ndd6t i|d6t i|d6t i| d 6} tt i| nd}}} |itd |itd t i }d }|||} | pdhdt i jpt it ot it ndd6d t i jpt i|ot i|nd d6t i|d6t i|d6t i| d 6} tt i| nd}}} |i|iididd} d} | | j}|pt id|fd| | fhdt i jpt i| ot i| ndd6t i| d6} dh| d6}tt i|nd}} dS(Nt connectedsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }tpytesttpy0t transporttpy3tpy2tpy5tpy7sGET / HTTP/1.1 sContent-Type: text/plain R tclientsutf-8s isHTTP/1.1 200 OKs==s%(py0)s == %(py3)stssassert %(py5)s(s==(s%(py0)s == %(py3)s(RRtstartRtserverthttptbasetfireRRtwait_fort @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNoneRtstopRtdecodetsplitt_call_reprcompare(twebappRR#thosttporttresourcetsecuret @py_assert1t @py_assert4t @py_assert6t @py_format8R$t @py_assert2t @py_format4t @py_format6((s3/home/prologic/work/circuits/tests/web/test_http.pyttest!s>    !   " o(t __builtin__R+t_pytest.assertion.rewritet assertiontrewriteR-RtcircuitsRt circuits.webRtcircuits.web.clientRtcircuits.net.socketsRtcircuits.net.eventsRRRRRC(((s3/home/prologic/work/circuits/tests/web/test_http.pyts  circuits-3.1.0/tests/web/__pycache__/test_wsgi_application.cpython-26-PYTEST.pyc0000644000014400001440000002060712407376151030541 0ustar prologicusers00000000000000 ?T`c@sddkZddkiiZddklZddkl Z ddk l Z l Z l Z defdYZe eZdZd Zd Zd Zd Zd ZdS(iN(t Controller(t Applicationi(t urlencodeturlopent HTTPErrortRootcBs5eZdZdZdZdZdZRS(cCsdS(Ns Hello World!((tself((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pytindex scOs^g}|D]*}|t|to|n |iq ~}dtt|t|fS(Ns%s %s(t isinstancetstrtencodetreprttuple(Rtargstkwargst_[1]targ((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyt test_argss>cCs |idS(Nt/(tredirect(R((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyt test_redirectscCs |iS(N(t forbidden(R((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyttest_forbiddenscCs |iS(N(tnotfound(R((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyt test_notfounds(t__name__t __module__RRRRR(((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyR s     cCst|iii}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyttests  ocCsMytd|iiiWntj o}|i}d}||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}|i}d }||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}nfXtp]d hdti jpti toti tndd6}t ti |ndS(Ns%s/foois==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)steRtpy2Rsassert %(py7)stpy7s Not Founds+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)stFalse(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)s(RRR R!RtcodeR#R$R%R&R'R(R)R*R+tmsgR6(R,R3R/t @py_assert4t @py_assert3R1t @py_format8t @py_format1((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyttest_404$s,    Dc Csd}hdd6dd6dd6}d|iiidi|f}t|i}t||}|iid }|d }t |}||j}|pt i d|fd||fhd t i jpt it ot it nd d6t i|d6t i|d6dt i jpt i|ot i|ndd6} dh| d6} tt i| nd}}}|d}t |}||j}|pt i d|fd||fhd t i jpt it ot it nd d6t i|d6t i|d6dt i jpt i|ot i|ndd6} dh| d6} tt i| nd}}}dS(Nt1t2t3tonettwotthrees%s/test_args/%sRs is==s0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)stevalRR4tpy4R tpy6sassert %(py8)stpy8iR(R>R?R@(s==(s0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)s(s==(s0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)s(RR R!tjoinRR RR"tsplitRDR#R$R%R&R'R(R)R*R+( R,R RturltdataR-R/R:t @py_assert5t @py_format7t @py_format9((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyR.s,"  cCstd|iii}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d 6}t ti |nd}}dS( Ns%s/test_redirects Hello World!s==s%(py0)s == %(py3)sRRRsassert %(py5)sR(s==(s%(py0)s == %(py3)s(RRR R!R"R#R$R%R&R'R(R)R*R+(R,R-RR.R/R0R1((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyR:s  ocCsMytd|iiiWntj o}|i}d}||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}|i}d }||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}nfXtp]d hdti jpti toti tndd6}t ti |ndS(Ns%s/test_forbiddenis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sR3RR4Rsassert %(py7)sR5t Forbiddens+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)sR6(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)s(RRR R!RR7R#R$R%R&R'R(R)R*R+R8R6(R,R3R/R9R:R1R;R<((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyR@s,    DcCsMytd|iiiWntj o}|i}d}||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}|i}d }||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}nfXtp]d hdti jpti toti tndd6}t ti |ndS(Ns%s/test_notfoundis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sR3RR4Rsassert %(py7)sR5s Not Founds+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)sR6(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)s(RRR R!RR7R#R$R%R&R'R(R)R*R+R8R6(R,R3R/R9R:R1R;R<((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyRJs,    D(t __builtin__R%t_pytest.assertion.rewritet assertiontrewriteR#t circuits.webRtcircuits.web.wsgiRthelpersRRRRt applicationR2R=RRRR(((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyts    circuits-3.1.0/tests/web/__pycache__/test_large_post.cpython-33-PYTEST.pyc0000644000014400001440000000570012414363412027331 0ustar prologicusers00000000000000 ?Tc@sjddlZddljjZddlmZddlm Z m Z GdddeZ ddZ dS( iN(u Controlleri(u urlencodeuurlopencBs |EeZdZddZdS(uRootcOs5tdd|D}djt|t|S(Ncss6|],}t|tkr*|jdn|VqdS(uutf-8N(utypeustruencode(u.0ux((u9/home/prologic/work/circuits/tests/web/test_large_post.pyu suRoot.index..u{0} {1}(utupleuformaturepr(uselfuargsukwargs((u9/home/prologic/work/circuits/tests/web/test_large_post.pyuindex s  u Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u9/home/prologic/work/circuits/tests/web/test_large_post.pyuRootsuRootc Csd}iddd6}d|jjjdj|f}t|jd }t||}|jjd }|d }t |}||k}|svt j d|fd||fit j |d6dt jkst jt rt j t ndd6dt jks#t j|r2t j |ndd6t j |d6} di| d6} tt j| nd}}}|d}t |}||k}|st j d|fd||fit j |d6dt jkst jt r t j t ndd6dt jks5t j|rDt j |ndd6t j |d6} di| d6} tt j| nd}}}dS( Nu1u2u3uiudatau%s/%su/uutf-8s iu==u0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)supy2uevalupy0uargsupy6upy4uuassert %(py8)supy8iukwargs(u1u2u3(u==(u0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)suassert %(py8)s(u==(u0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)suassert %(py8)s(userveruhttpubaseujoinu urlencodeuencodeuurlopenureadusplituevalu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone( uwebappuargsukwargsuurludataufu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_format9((u9/home/prologic/work/circuits/tests/web/test_large_post.pyutests,"  utest( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu Controlleruhelpersu urlencodeuurlopenuRootutest(((u9/home/prologic/work/circuits/tests/web/test_large_post.pyus  circuits-3.1.0/tests/web/__pycache__/test_servers.cpython-26-PYTEST.pyc0000644000014400001440000001667012407376151026703 0ustar prologicusers00000000000000 ?T c @s*ddkZddkiiZddkZddklZddk l Z ddk l Z ddk lZlZddk lZlZddklZlZeieied Zd efd YZd e fd YZdefdYZdZdZdZdZdZ dS(iN(tpath(tgaierror(t Controller(thandlert Component(t BaseServertServeri(turlopentURLErrorscert.pemtBaseRootcBseZdZdZRS(twebcCsdS(Ns Hello World!((tselftrequesttresponse((s6/home/prologic/work/circuits/tests/web/test_servers.pyR s(t__name__t __module__tchannelR (((s6/home/prologic/work/circuits/tests/web/test_servers.pyR stRootcBseZdZRS(cCsdS(Ns Hello World!((R ((s6/home/prologic/work/circuits/tests/web/test_servers.pytindexs(RRR(((s6/home/prologic/work/circuits/tests/web/test_servers.pyRst MakeQuietcBs)eZeddddddZRS(treadyRt*tpriorityg?cGs|idS(N(tstop(R teventtargs((s6/home/prologic/work/circuits/tests/web/test_servers.pyt _on_ready!s(RRRR(((s6/home/prologic/work/circuits/tests/web/test_servers.pyRsc Cstdi|}ti||idti||idyt|ii}Wn?tj o3}t |dt jotd}qnX|i }d}||j}|pt i d|fd||fhdtijpt i|ot i|ndd 6t i|d 6}d h|d 6} tt i| nd}}|i|id dS(NiRt registeredshttp://127.0.0.1:9000s Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5t unregistered(s==(s%(py0)s == %(py3)s(RtregisterRtwaitR RthttptbaseRttypeRtreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonet unregister( tmanagertwatchertservertfteRt @py_assert2t @py_assert1t @py_format4t @py_format6((s6/home/prologic/work/circuits/tests/web/test_servers.pyttest_baseserver&s*    o  c Cs}tdi|}ti||idti|yt|ii}Wn?tj o3}t |dt jotd}qnX|i }d}||j}|pt i d |fd||fhdtijpt i|ot i|ndd6t i|d 6}d h|d 6} tt i| nd}}|i|id dS(NiRshttp://127.0.0.1:9000s Hello World!s==s%(py0)s == %(py3)sRRRsassert %(py5)sRR (s==(s%(py0)s == %(py3)s(RR!RR"RRR#R$RR%RR&R'R(R)R*R+R,R-R.R/R0( R1R2R3R4R5RR6R7R8R9((s6/home/prologic/work/circuits/tests/web/test_servers.pyt test_server=s(   o  c Cstidtddtdti|}ti||idti|yt |i i }Wn?t j o3}t |dtjot d}qnX|i}d}||j}|ptid|fd||fhd tijpti|oti|nd d 6ti|d 6}d h|d6} tti| nd}}|i|iddS(NtsslitsecuretcertfileRshttp://127.0.0.1:9000s Hello World!s==s%(py0)s == %(py3)sRRRsassert %(py5)sRR (s==(s%(py0)s == %(py3)s(tpytestt importorskipRtTruetCERTFILER!RR"RRR#R$RR%RR&R'R(R)R*R+R,R-R.R/R0( R1R2R3R4R5RR6R7R8R9((s6/home/prologic/work/circuits/tests/web/test_servers.pyttest_secure_serverSs* !   o  c Cstidjotidn|id}t|}t|i|}ti||idt i|t i }|i }||}d} || j} | pt id| fd|| fht i| d6dtijpt it ot it ndd 6d tijpt i|ot i|nd d 6t i|d 6t i|d 6t i|d6} dh| d6} tt i| nd}}}} } |i|iddS(Ntwin32sUnsupported Platforms test.sockRs==si%(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.basename }(%(py5)s {%(py5)s = %(py3)s.host }) } == %(py10)stpy10RRR3Rtpy2Rtpy7sassert %(py12)stpy12R (s==(si%(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.basename }(%(py5)s {%(py5)s = %(py3)s.host }) } == %(py10)s(R?tPLATFORMtskiptensuretstrRR!RR"RRtbasenamethostR'R(R,R)R*R+R-R.R/R0( R1R2ttmpdirtsockpathtsocketR3R7t @py_assert4t @py_assert6t @py_assert9t @py_assert8t @py_format11t @py_format13((s6/home/prologic/work/circuits/tests/web/test_servers.pyttest_unixserverks(     c CsLtidtddd}tddddtdt}||i|}ti||idti|t |i i }|i }d}||j}|pt id|fd||fhd tijpt i|ot i|nd d 6t i|d 6} dh| d6} tt i| nd}}t |i i }|i }d}||j}|pt id|fd||fhd tijpt i|ot i|nd d 6t i|d 6} dh| d6} tt i| nd}}|i|iddS(NR<iRtinsecureR=R>Rs Hello World!s==s%(py0)s == %(py3)sRRRsassert %(py5)sRR (s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s(R?R@RRARBR!RR"RRR#R$R&R'R(R)R*R+R,R-R.R/R0( R1R2tinsecure_servert secure_serverR3R4RR6R7R8R9((s6/home/prologic/work/circuits/tests/web/test_servers.pyttest_multi_servers~s:    o   o  (!t __builtin__R)t_pytest.assertion.rewritet assertiontrewriteR'R?tosRRQRt circuits.webRtcircuitsRRRRthelpersRRtjointdirnamet__file__RBR RRR:R;RCRXR\(((s6/home/prologic/work/circuits/tests/web/test_servers.pyts"      circuits-3.1.0/tests/web/__pycache__/test_wsgi_application_generator.cpython-34-PYTEST.pyc0000644000014400001440000000276312414363522032605 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZddlm Z ddl m Z GdddeZ e e Z dd ZdS) N) Controller) Application)urlopenc@seZdZddZdS)RootcCsdd}|S)NcssdVdVdS)NzHello zWorld!rrrI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pyresponse szRoot.index..responser)selfr rrrindex s z Root.indexN)__name__ __module__ __qualname__r rrrrr s rcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS) Ns Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5)r)rr)rserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)webappfr @py_assert2 @py_assert1 @py_format4 @py_format6rrrtests  lr*)builtinsr_pytest.assertion.rewrite assertionrewriter circuits.webrcircuits.web.wsgirhelpersrr applicationr*rrrrs circuits-3.1.0/tests/web/__pycache__/test_disps.cpython-27-PYTEST.pyc0000644000014400001440000001017712414363102026317 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z ddl m Z ddl m Z mZddlmZddlmZmZd e fd YZd efd YZd efdYZdefdYZdZdS(iN(tManager(thandler(t BaseComponent(t BaseServert Controller(t Dispatcheri(turlopenturljointPrefixingDispatchercBs2eZdZdZeddddZRS(s3Forward to another Dispatcher based on the channel.cCstt|jd|dS(Ntchannel(tsuperRt__init__(tselfR ((s4/home/prologic/work/circuits/tests/web/test_disps.pyR strequesttpriorityg?cCs5|jjd}td|j|}||_dS(Nt/s/%s/(tpathtstripRR (R teventR tresponseR((s4/home/prologic/work/circuits/tests/web/test_disps.pyt _on_requests(t__name__t __module__t__doc__R RR(((s4/home/prologic/work/circuits/tests/web/test_disps.pyR s t DummyRootcBseZdZdZRS(RcCsdS(NsNot used((R ((s4/home/prologic/work/circuits/tests/web/test_disps.pytindexs(RRR R(((s4/home/prologic/work/circuits/tests/web/test_disps.pyRstRoot1cBseZdZdZRS(s/site1cCsdS(NsHello from site 1!((R ((s4/home/prologic/work/circuits/tests/web/test_disps.pyR's(RRR R(((s4/home/prologic/work/circuits/tests/web/test_disps.pyR#stRoot2cBseZdZdZRS(s/site2cCsdS(NsHello from site 2!((R ((s4/home/prologic/work/circuits/tests/web/test_disps.pyR/s(RRR R(((s4/home/prologic/work/circuits/tests/web/test_disps.pyR+sc Cst}tddd}|j|tddj|tddj|tj|tddd}|j|tddj|tddj|tj|tj||jt |j j dd}|j }d}||k}|st jd|fd||fit j|d 6d tjksgt j|rvt j|nd d 6}di|d6}tt j|nd}}t |j j dd}|j }d}||k}|st jd|fd||fit j|d 6d tjksBt j|rQt j|nd d 6}di|d6}tt j|nd}}dS(NiR tsite1t localhosttsite2ttimeoutisHello from site 1!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5sHello from site 2!(s localhosti(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(RRtregisterRRRRRtstartRthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone( tmanagertserver1tserver2tfR!t @py_assert2t @py_assert1t @py_format4t @py_format6((s4/home/prologic/work/circuits/tests/web/test_disps.pyt test_disps3s>      l   l(t __builtin__R-t_pytest.assertion.rewritet assertiontrewriteR*tcircuits.core.managerRtcircuits.core.handlersRtcircuits.core.componentsRt circuits.webRRt#circuits.web.dispatchers.dispatcherRthelpersRRRRRRR;(((s4/home/prologic/work/circuits/tests/web/test_disps.pyts circuits-3.1.0/tests/web/__pycache__/test_basicauth.cpython-34-PYTEST.pyc0000644000014400001440000000515312414363522027142 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZddlm Z m Z ddl m Z m Z ddl mZmZmZGdddeZd d ZdS) N) Controller) check_auth basic_auth) HTTPErrorHTTPBasicAuthHandler)urlopen build_openerinstall_openerc@seZdZddZdS)RootcCsWd}idd6}t}t|j|j|||r;dSt|j|j|||S)NTestadminz Hello World!)strrrequestresponser)selfrealmusersencryptr8/home/prologic/work/circuits/tests/web/test_basicauth.pyindex s  z Root.indexN)__name__ __module__ __qualname__rrrrrr s r cCsQyt|jjj}Wntk r}z|j}d}||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}|j}d }||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}WYdd}~XnEXd }|s'ditj|d6} t tj | nt}t} | jd|jjjddt| } t| t|jjj}|j} d} | | k}|s9tjd|fd| | fitj| d6dt j kstj | rtj| ndd6}d i|d6}t tj |nt}} tddS)!Ni==,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)spy5py2epy0assert %(py7)spy7 Unauthorized+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)sFassert %(py1)spy1r r s Hello World!%(py0)s == %(py3)spy3sassert %(py5)s)r)rr")r)r%r"r&)r)r(r+)rserverhttpbasercode @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonemsgr add_passwordr r read)webappfr @py_assert1 @py_assert4 @py_assert3 @py_format6 @py_format8 @py_assert0 @py_format2handleropenerr* @py_assert2 @py_format4rrrtestsL  |  |!     l rI)builtinsr3_pytest.assertion.rewrite assertionrewriter0 circuits.webrcircuits.web.toolsrrhelpersrrrr r r rIrrrrs  circuits-3.1.0/tests/web/__pycache__/test_expires.cpython-32-PYTEST.pyc0000644000014400001440000001234712414363276026665 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlmZddlmZddl m Z ddl m Z ddl mZGdd e Zd Zd ZdS( iN(udatetime(umktime(u parsedate(u Controlleri(uurlopencBs |EeZdZdZdS(cCs|jddS(Ni<u Hello World!(uexpires(uself((u6/home/prologic/work/circuits/tests/web/test_expires.pyuindexs cCs|jddS(Niu Hello World!(uexpires(uself((u6/home/prologic/work/circuits/tests/web/test_expires.pyunocaches N(u__name__u __module__uindexunocache(u __locals__((u6/home/prologic/work/circuits/tests/web/test_expires.pyuRoot s  uRootc Cst|jjj}|j}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}|jd }tt|ttjj}d } d }d } || } | | } | |k} d }d }d }||}||}||k}| oz|shtjd| |fd| ||fitj|d6dtj kstj |rtj|ndd6tj| d6tj|d6tj|d6tj| d 6tj|d6}di|d6}t tj |nd} }} } } } }}}}}}dS(Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5uExpiresi<g?us  circuits-3.1.0/tests/web/__pycache__/test_vpath_args.cpython-26-PYTEST.pyc0000644000014400001440000000463312407376151027344 0ustar prologicusers00000000000000 ?Tc@s}ddkZddkiiZddklZlZddk l Z defdYZ defdYZ d Z dS( iN(texposet Controlleri(turlopentRootcBseZeddZRS(stest.txtcCsdS(Ns Hello world!((tself((s9/home/prologic/work/circuits/tests/web/test_vpath_args.pytindex s(t__name__t __module__RR(((s9/home/prologic/work/circuits/tests/web/test_vpath_args.pyRstLeafcBs&eZdZedddZRS(s/teststest.txtcCs|djodSd|SdS(Ns Hello world!s Hello world! (tNone(Rtvpath((s9/home/prologic/work/circuits/tests/web/test_vpath_args.pyRs N(RRtchannelRR R(((s9/home/prologic/work/circuits/tests/web/test_vpath_args.pyRs cCsti|t|iiid}|i}d}||j}|ptid |fd ||fhdt i jpti |oti |ndd6ti |d6}dh|d 6}t ti|nd}}t|iiid }|i}d}||j}|ptid |fd||fhdt i jpti |oti |ndd6ti |d6}dh|d 6}t ti|nd}}dS(Ns /test.txts Hello world!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5s/test/test.txt(s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s(RtregisterRtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationR (twebapptfR t @py_assert2t @py_assert1t @py_format4t @py_format6((s9/home/prologic/work/circuits/tests/web/test_vpath_args.pyttests&  o   o(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRRthelpersRRRR#(((s9/home/prologic/work/circuits/tests/web/test_vpath_args.pyts  circuits-3.1.0/tests/web/__pycache__/test_conn.cpython-32-PYTEST.pyc0000644000014400001440000000544012414363276026137 0ustar prologicusers00000000000000l ?Tc @sddlZddljjZyddlmZWn"ek rVddl mZYnXddl m Z Gdde Z dZ dS(iN(uHTTPConnection(u ControllercBs|EeZdZdS(cCsdS(Nu Hello World!((uself((u3/home/prologic/work/circuits/tests/web/test_conn.pyuindex sN(u__name__u __module__uindex(u __locals__((u3/home/prologic/work/circuits/tests/web/test_conn.pyuRoot s uRootc Cst|jj|jj}d|_|jxtdD]}|jdd|j }|j }d}||k}|s#t j d|fd||fit j |d6dtjkst j|rt j |ndd 6t j |d 6}di|d 6}tt j|nd}}}|j}d}||k}|st j d|fd||fit j |d6dtjkst j|rt j |ndd 6t j |d 6}di|d 6}tt j|nd}}}|j} d} | | k}|st j d|fd| | fit j | d6dtjks{t j| rt j | ndd 6} di| d 6}tt j|nd}} q;W|jdS(NiuGETu/iu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7uOKu.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss Hello World!u%(py0)s == %(py3)supy3usuassert %(py5)sF(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suassert %(py7)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uHTTPConnectionuserveruhostuportuFalseu auto_openuconnecturangeurequestu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneureasonureaduclose( uwebappu connectionuiuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8usu @py_assert2u @py_format4((u3/home/prologic/work/circuits/tests/web/test_conn.pyutests>     |  |  l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhttplibuHTTPConnectionu ImportErroru http.clientu circuits.webu ControlleruRootutest(((u3/home/prologic/work/circuits/tests/web/test_conn.pyus  circuits-3.1.0/tests/web/__pycache__/test_serve_file.cpython-33-PYTEST.pyc0000644000014400001440000000513212414363412027314 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZGddde Zd d ZdS( iN(umkstemp(uhandler(u Controlleri(uurlopencBsb|EeZdZedddddddZeddd d d Zd d ZdS(uRootustartedupriorityg?uchannelu*cCs3t\}|_tj|dtj|dS(Ns Hello World!(umkstempufilenameuosuwriteuclose(uselfu componentufd((u9/home/prologic/work/circuits/tests/web/test_serve_file.pyu _on_startedsuRoot._on_startedustoppedu(cCstj|jdS(N(uosuremoveufilename(uselfu component((u9/home/prologic/work/circuits/tests/web/test_serve_file.pyu _on_stoppedsuRoot._on_stoppedcCs|j|jS(N(u serve_fileufilename(uself((u9/home/prologic/work/circuits/tests/web/test_serve_file.pyuindexsu Root.indexN(u__name__u __module__u __qualname__uhandleru _on_startedu _on_stoppeduindex(u __locals__((u9/home/prologic/work/circuits/tests/web/test_serve_file.pyuRoot s$uRootcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u9/home/prologic/work/circuits/tests/web/test_serve_file.pyutests  lutest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruosutempfileumkstempucircuitsuhandleru circuits.webu ControlleruhelpersuurlopenuRootutest(((u9/home/prologic/work/circuits/tests/web/test_serve_file.pyus  circuits-3.1.0/tests/web/__pycache__/test_generator.cpython-34-PYTEST.pyc0000644000014400001440000000261212414363522027162 0ustar prologicusers00000000000000 ?T_@sdddlZddljjZddlmZddlm Z GdddeZ ddZ dS) N) Controller)urlopenc@seZdZddZdS)RootcCsdd}|S)NcssdVdVdS)NzHello zWorld!rrr8/home/prologic/work/circuits/tests/web/test_generator.pyresponse szRoot.index..responser)selfrrrrindex s z Root.indexN)__name__ __module__ __qualname__r rrrrrs rcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS) Ns Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5)r)rr)rserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)webappfr @py_assert2 @py_assert1 @py_format4 @py_format6rrrtests  lr)) builtinsr_pytest.assertion.rewrite assertionrewriter circuits.webrhelpersrrr)rrrrs  circuits-3.1.0/tests/web/__pycache__/test_security.cpython-33-PYTEST.pyc0000644000014400001440000001131512414363412027040 0ustar prologicusers00000000000000 ?Tc @sddlZddljjZddlmZyddlm Z Wn"e k rfddl m Z YnXddl m Z mZGdddeZdd Zd d Zd d ZdS(iN(u Controller(uHTTPConnectioni(uurlopenu HTTPErrorcBs |EeZdZddZdS(uRootcCsdS(Nu Hello World!((uself((u7/home/prologic/work/circuits/tests/web/test_security.pyuindexsu Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u7/home/prologic/work/circuits/tests/web/test_security.pyuRoot suRootcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u7/home/prologic/work/circuits/tests/web/test_security.pyu test_roots  lu test_rootc Csy!d|jjj}t|Wntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`Xds|did t j ksJtj drYtjdnd d6}t tj |ndS(Nu%s/../../../../../../etc/passwdiu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7uassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)sFuassert %(py0)s(userveruhttpubaseuurlopenu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuFalse( uwebappuurlueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u7/home/prologic/work/circuits/tests/web/test_security.pyutest_badpath_notfounds  |!Autest_badpath_notfoundc Cst|jj|jj}|jd}|jd||j}|j}d}||k}|s tj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d 6}di|d 6}ttj|nd}}}|j}d }||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d 6}di|d 6}ttj|nd}}}|jdS(Nu/../../../../../../etc/passwduGETi-u==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7uMoved Permanentlyu.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suassert %(py7)s(uHTTPConnectionuserveruhostuportuconnecturequestu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneureasonuclose( uwebappu connectionupathuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u7/home/prologic/work/circuits/tests/web/test_security.pyutest_badpath_redirect#s,    |  |utest_badpath_redirect(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu ControlleruhttplibuHTTPConnectionu ImportErroru http.clientuhelpersuurlopenu HTTPErroruRootu test_rootutest_badpath_notfoundutest_badpath_redirect(((u7/home/prologic/work/circuits/tests/web/test_security.pyus    circuits-3.1.0/tests/web/__pycache__/__init__.cpython-32.pyc0000644000014400001440000000021512414363275024646 0ustar prologicusers00000000000000l Qc@sdS(N((((u2/home/prologic/work/circuits/tests/web/__init__.pyuscircuits-3.1.0/tests/web/__pycache__/test_client.cpython-27-PYTEST.pyc0000644000014400001440000000505212414363102026447 0ustar prologicusers00000000000000 ?Tc@sgddlZddljjZddlmZddlm Z m Z defdYZ dZ dS(iN(t Controller(tClienttrequesttRootcBseZdZRS(cCsdS(Ns Hello World!((tself((s5/home/prologic/work/circuits/tests/web/test_client.pytindex s(t__name__t __module__R(((s5/home/prologic/work/circuits/tests/web/test_client.pyRsc Cst}|j|jtd|jjjx|jdkrGq5W|j |j}|j }d}||k}|s!t j d|fd||fit j |d6dtjkst j|rt j |ndd6t j |d6}di|d 6}tt j|nd}}}|j}d }||k}|st j d|fd||fit j |d6dtjkst j|rt j |ndd6t j |d6}di|d 6}tt j|nd}}}|j}d} || k}|st j d|fd|| fit j | d6dtjksyt j|rt j |ndd6} di| d6}tt j|nd}} dS(NtGETis==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)stpy2tresponsetpy0tpy5tsassert %(py7)stpy7tOKs.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss Hello World!s%(py0)s == %(py3)stpy3tssassert %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)ssassert %(py7)s(s==(s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ssassert %(py7)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(RtstarttfireRtserverthttptbaseR tNonetstoptstatust @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtreasontread( twebapptclientR t @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8Rt @py_assert2t @py_format4((s5/home/prologic/work/circuits/tests/web/test_client.pyttests>      |  |  l( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRtcircuits.web.clientRRRR-(((s5/home/prologic/work/circuits/tests/web/test_client.pyts circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_multiple_apps.cpython-33-PYTEST.pyc0000644000014400001440000000603012414363412032617 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZejdddkrSejdnddl m Z ddl m Z ddl mZd d Zd d Zejd dZddZdS(iNiiuBroken on Python 3.3(uServer(uGatewayi(uurlopencCs d}dg}|||dS(Nu200 OKu Content-typeu text/plainu Hello World!(u Content-typeu text/plain((uenvironustart_responseustatusuresponse_headers((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pyuhello s  uhellocCs d}dg}|||dS(Nu200 OKu Content-typeu text/plainuFooBar!(u Content-typeu text/plain((uenvironustart_responseustatusuresponse_headers((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pyufoobars  ufoobarcCsitd6td6S(Nu/u/foobar(uhelloufoobar(urequest((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pyuappssuappsc Cstd}t|j|tj|d}|j|jt|jj }|j }d}||k}|st j d|fd||fit j |d6dtjkst j|rt j |ndd6}di|d 6}tt j|nd}}td j|jj }|j }d }||k}|st j d|fd||fit j |d6dtjkst j|rt j |ndd6}di|d 6}tt j|nd}}|jdS(Niureadys Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u {0:s}/foobar/sFooBar!(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uServeruGatewayuregisterupytestu WaitEventustartuwaituurlopenuhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuformatustop( uappsuserveruwaiterufusu @py_assert2u @py_assert1u @py_format4u @py_format6((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pyutest#s0     l   l utest(ii(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuPYVERuskipu circuits.webuServerucircuits.web.wsgiuGatewayuhelpersuurlopenuhelloufoobarufixtureuappsutest(((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pyus    circuits-3.1.0/tests/web/__pycache__/test_dispatcher2.cpython-26-PYTEST.pyc0000644000014400001440000001734612407376151027423 0ustar prologicusers00000000000000 ?T*c@sddkZddkiiZddklZlZddk l Z defdYZ defdYZ d efd YZ d Zd Zd ZdZdZdZdS(iN(texposet Controlleri(turlopentRootcBsAeZdZdZdZeddZdZRS(cOs7tt|i|||t7}|t7}dS(N(tsuperRt__init__tHellotWorld(tselftargstkwargs((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR s cCsdS(Ntindex((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR scCsdS(Nthello1((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR sthello2cCsdS(NR ((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR scCsd|S(Nsquery %s((treqttest((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pytquerys(t__name__t __module__RR R RR R(((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR s    RcBs)eZdZdZdZdZRS(s/hellocCsdS(Ns hello index((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR scCsdS(Ns hello test((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR#scCsd|S(Nshello query %s((RR((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR&s(RRtchannelR RR(((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyRs  RcBs eZdZdZdZRS(s/worldcCsdS(Ns world index((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR -scCsdS(Ns world test((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR0s(RRRR R(((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR*s cCsd|iii}t|}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d 6}t ti |nd}}dS( Ns %s/hello1R s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(tserverthttptbaseRtreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(twebappturltfRt @py_assert2t @py_assert1t @py_format4t @py_format6((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyt test_simple4s   ocCsd|iii}t|}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d 6}t ti |nd}}dS( Ns %s/hello2R s==s%(py0)s == %(py3)sRRRsassert %(py5)sR(s==(s%(py0)s == %(py3)s(RRRRRRRRRR R!R"R#R$(R%R&R'RR(R)R*R+((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyt test_expose;s   ocCst|iii}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}dS( NR s==s%(py0)s == %(py3)sRRRsassert %(py5)sR(s==(s%(py0)s == %(py3)s(RRRRRRRRRR R!R"R#R$(R%R'RR(R)R*R+((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyt test_indexBs  ocCsd|iii}t|}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d 6}t ti |nd}}d |iii}t|}|i}d }||j}|ptid|fd||fhdtijpti |oti |ndd6ti |d6}dh|d 6}t ti |nd}}dS(Ns %s/hello/s hello indexs==s%(py0)s == %(py3)sRRRsassert %(py5)sRs %s/world/s world index(s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s(RRRRRRRRRR R!R"R#R$(R%R&R'RR(R)R*R+((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyttest_controller_indexHs(   o    ocCsd|iii}t|}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d 6}t ti |nd}}d |iii}t|}|i}d }||j}|ptid|fd||fhdtijpti |oti |ndd6ti |d6}dh|d 6}t ti |nd}}dS(Ns %s/hello/tests hello tests==s%(py0)s == %(py3)sRRRsassert %(py5)sRs %s/world/tests world test(s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s(RRRRRRRRRR R!R"R#R$(R%R&R'RR(R)R*R+((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyttest_controller_exposeTs(   o    ocCsd|iii}t|}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d 6}t ti |nd}}d |iii}t|}|i}d }||j}|ptid|fd||fhdtijpti |oti |ndd6ti |d6}dh|d 6}t ti |nd}}dS(Ns%s/query?test=1squery 1s==s%(py0)s == %(py3)sRRRsassert %(py5)sRs%s/hello/query?test=2s hello query 2(s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s(RRRRRRRRRR R!R"R#R$(R%R&R'RR(R)R*R+((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyt test_query`s(   o    o(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRRthelpersRRRRR,R-R.R/R0R1(((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyts      circuits-3.1.0/tests/web/__pycache__/test_headers.cpython-32-PYTEST.pyc0000644000014400001440000001453212414363276026617 0ustar prologicusers00000000000000l ?Tc@syddlZddljjZddlmZddlm Z GddeZ dZ dZ d Z d ZdS( iN(u Controlleri(uurlopencBs)|EeZdZdZdZdS(cCsdS(Nu Hello World!((uself((u6/home/prologic/work/circuits/tests/web/test_headers.pyuindex scCsd|jjds  circuits-3.1.0/tests/web/__pycache__/test_methods.cpython-27-PYTEST.pyc0000644000014400001440000001001312414363102026625 0ustar prologicusers00000000000000 ?TEc@sddlZddljjZyddlmZWn!ek rUddl mZnXddl m Z de fdYZ dZ dZdS(iN(tHTTPConnection(t ControllertRootcBseZdZRS(cCsdS(Ns Hello World!((tself((s6/home/prologic/work/circuits/tests/web/test_methods.pytindex s(t__name__t __module__R(((s6/home/prologic/work/circuits/tests/web/test_methods.pyR sc Cst|jj|jj}|jdd|j}|j}d}||k}|stjd|fd||fitj |d6dt j kstj |rtj |ndd6tj |d 6}di|d 6}t tj|nd}}}|j}d }||k}|stjd|fd||fitj |d6dt j ks~tj |rtj |ndd6tj |d 6}di|d 6}t tj|nd}}}|j}d} || k}|stjd|fd|| fitj | d6dt j ksUtj |rdtj |ndd6} di| d 6}t tj|nd}} dS(NtGETt/is==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)stpy2tresponsetpy0tpy5tsassert %(py7)stpy7tOKs.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss Hello World!s%(py0)s == %(py3)stpy3tssassert %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)ssassert %(py7)s(s==(s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ssassert %(py7)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(Rtserverthosttporttrequestt getresponsetstatust @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonetreasontread( twebappt connectionR t @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8Rt @py_assert2t @py_format4((s6/home/prologic/work/circuits/tests/web/test_methods.pyttest_GETs6   |  |  lc Cst|jj|jj}|jdd|j}|j}d}||k}|stjd|fd||fitj |d6dt j kstj |rtj |ndd6tj |d 6}di|d 6}t tj|nd}}}|j}d }||k}|stjd|fd||fitj |d6dt j ks~tj |rtj |ndd6tj |d 6}di|d 6}t tj|nd}}}|j}d } || k}|stjd|fd|| fitj | d6dt j ksUtj |rdtj |ndd6} di| d 6}t tj|nd}} dS(NtHEADRis==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)sR R R R R sassert %(py7)sRRs.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss%(py0)s == %(py3)sRRsassert %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)ssassert %(py7)s(s==(s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ssassert %(py7)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(RRRRRRRRRRRRRRRR R!R"( R#R$R R%R&R'R(R)RR*R+((s6/home/prologic/work/circuits/tests/web/test_methods.pyt test_HEADs6   |  |  l(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthttplibRt ImportErrort http.clientt circuits.webRRR,R.(((s6/home/prologic/work/circuits/tests/web/test_methods.pyts   circuits-3.1.0/tests/web/__pycache__/test_cookies.cpython-34-PYTEST.pyc0000644000014400001440000000337312414363522026635 0ustar prologicusers00000000000000 ?T@szddlZddljjZddlmZddlm Z m Z ddlm Z GdddeZ dd Z dS) N) Controller) build_openerHTTPCookieProcessor) CookieJarc@seZdZddZdS)RootcCs:|jjd}|r%|jr%dSd|jds  circuits-3.1.0/tests/web/__pycache__/test_wsgi_application_generator.cpython-26-PYTEST.pyc0000644000014400001440000000360412407376151032605 0ustar prologicusers00000000000000 ?Tc@sddkZddkiiZddklZddkl Z ddk l Z defdYZ e e Z dZdS( iN(t Controller(t Applicationi(turlopentRootcBseZdZRS(cCsd}|S(NcssdVdVdS(NsHello sWorld!((((sI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pytresponse s((tselfR((sI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pytindex s (t__name__t __module__R(((sI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pyR scCst|iii}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(twebapptfR t @py_assert2t @py_assert1t @py_format4t @py_format6((sI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pyttests  o(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRtcircuits.web.wsgiRthelpersRRt applicationR (((sI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pyts circuits-3.1.0/tests/web/__pycache__/test_request_failure.cpython-34-PYTEST.pyc0000644000014400001440000000327612414363522030402 0ustar prologicusers00000000000000 ?T@szddlZddljjZddlmZmZddl m Z ddl m Z Gddde Z dd ZdS) N)urlopen HTTPError)handler) BaseComponentc@s4eZdZdZedddddZdS)Rootwebrequestpriorityg?cCs tdS)N) Exception)selfr responser>/home/prologic/work/circuits/tests/web/test_request_failure.pyr sz Root.requestN)__name__ __module__ __qualname__channelrr rrrrrs rc Csky'tj|t|jjjWntk r"}z|j}d}||k}|stj d|fd||fitj |d6tj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nt}}}WYdd}~XnEXd }|saditj |d 6}ttj|nt}dS)Ni==,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)spy5py2epy0assert %(py7)spy7Fassert %(py1)spy1)r)rrr)rregisterrserverhttpbasercode @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone) webappr @py_assert1 @py_assert4 @py_assert3 @py_format6 @py_format8 @py_assert0 @py_format2rrrtests"  |!r5)builtinsr'_pytest.assertion.rewrite assertionrewriter$helpersrrZcircuits.core.handlersrZcircuits.core.componentsrrr5rrrrs  circuits-3.1.0/tests/web/__pycache__/test_multipartformdata.cpython-34-PYTEST.pyc0000644000014400001440000000743212414363522030740 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZddlmZmZejdd ZGd d d e Zd d ZddZdS)N)path)BytesIO) Controller) MultiPartForm)urlopenRequestcCs%ttjtjtdddS)Nstaticz unicode.txtrb)openrjoindirname__file__)requestr@/home/prologic/work/circuits/tests/web/test_multipartformdata.py sample_files   rc@s.eZdZdddZdddZdS)Rootccs&d|jVd|VdV|jVdS)Nz Filename: %s zDescription: %s z Content: )filenamevalue)selffile descriptionrrrindexs  z Root.indexcCs|jS)N)r)rrrrrrupload!sz Root.uploadN)__name__ __module__ __qualname__rrrrrrrs rcCs%t}d|dtj|rMtj|nd d6} di| d6} ttj| nt} dS)Nrrzhelloworld.txtztext/plain; charset=utf-8z {0:s}/uploadz Content-TypezContent-Lengthrr%(py0)s == %(py2)sexpected_outputpy2r=py0rassert %(py4)sr")r)rErI)rnamer'formatr(r)r*r+r,r-rrr.seekr0r1 @py_builtinslocals_should_repr_global_namer2r3r4r5) r6rr7r9r:r;rr<r=rF @py_assert1 @py_format3rBrrr test_unicode@s*          rR)builtinsrM_pytest.assertion.rewrite assertionrewriter0pytestosrior circuits.webrZ multipartformrhelpersrrfixturerrrDrRrrrrs    circuits-3.1.0/tests/web/__pycache__/test_core.cpython-33-PYTEST.pyc0000644000014400001440000003231412414363411026122 0ustar prologicusers00000000000000 ?T$ c@sMddlZddljjZddlZddlmZm Z ddl m Z ddl m Z mZmZGddde Zdd Zd d Zd d Zejjddgifedfddgifedfdgidd6fedfgddZddZddZddZddZdS(iN(ubuu(u Controlleri(u urlencodeuurlopenu HTTPErrorcBsn|EeZdZddZddZddddZddZd d Zd d Z d dZ dS(uRootcCsdS(Nu Hello World!((uself((u3/home/prologic/work/circuits/tests/web/test_core.pyuindexsu Root.indexcOsdjt|t|S(Nu{0} {1}(uformaturepr(uselfuargsukwargs((u3/home/prologic/work/circuits/tests/web/test_core.pyu test_argssuRoot.test_argscCsdj||S(Nu a={0} b={1}(uformat(uselfuaub((u3/home/prologic/work/circuits/tests/web/test_core.pyutest_default_argssuRoot.test_default_argscCs |jdS(Nu/(uredirect(uself((u3/home/prologic/work/circuits/tests/web/test_core.pyu test_redirectsuRoot.test_redirectcCs |jS(N(u forbidden(uself((u3/home/prologic/work/circuits/tests/web/test_core.pyutest_forbiddensuRoot.test_forbiddencCs |jS(N(unotfound(uself((u3/home/prologic/work/circuits/tests/web/test_core.pyu test_notfoundsuRoot.test_notfoundcCs tdS(N(u Exception(uself((u3/home/prologic/work/circuits/tests/web/test_core.pyu test_failure!suRoot.test_failureN( u__name__u __module__u __qualname__uindexu test_argsuNoneutest_default_argsu test_redirectutest_forbiddenu test_notfoundu test_failure(u __locals__((u3/home/prologic/work/circuits/tests/web/test_core.pyuRoot s     uRootcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u3/home/prologic/work/circuits/tests/web/test_core.pyu test_root%s  lu test_rootcCsNytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j kswtj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsJdidt j kstj dr'tjdndd6}t tj |ndS(Nu%s/fooiu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Not Foundu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u3/home/prologic/work/circuits/tests/web/test_core.pyutest_404+s,  |  |!Autest_404c Csd}idd6dd6dd6}d|jjjdj|f}t|jd }t||}|jjd }|d }t |}||k}|st j d|fd||fit j |d6dt jkst jt rt j t ndd6dt jks-t j|r<t j |ndd6t j |d6} di| d6} tt j| nd}}}|d}t |}||k}|st j d|fd||fit j |d6dt jkst jt rt j t ndd6dt jks?t j|rNt j |ndd6t j |d6} di| d6} tt j| nd}}}dS( Nu1u2u3uoneutwouthreeu%s/test_args/%su/uutf-8s iu==u0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)supy2uevalupy0uargsupy6upy4uuassert %(py8)supy8iukwargs(u1u2u3(u==(u0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)suassert %(py8)s(u==(u0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)suassert %(py8)s(userveruhttpubaseujoinu urlencodeuencodeuurlopenureadusplituevalu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone( uwebappuargsukwargsuurludataufu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_format9((u3/home/prologic/work/circuits/tests/web/test_core.pyu test_args5s,"  u test_argsu data,expectedu1u a=1 b=Noneu2ua=1 b=2ubc Csr|\}}tdj|jjjtdj|}t|jd}t||}|j }|}||k} | s`t j d| fd||fit j |d6dt jkst j|rt j |ndd6d t jks t j|rt j |nd d 6t j |d 6} di| d6} tt j| nd}}} dS(Nu{0:s}/test_default_args/{1:s}u/uutf-8u==uC%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.read }() } == %(py6)supy2ufupy0uexpectedupy6upy4uuassert %(py8)supy8(u==(uC%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.read }() } == %(py6)suassert %(py8)s(uuuformatuserveruhttpubaseujoinu urlencodeuencodeuurlopenureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone( uwebappudatauexpecteduargsukwargsuurlufu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_format9((u3/home/prologic/work/circuits/tests/web/test_core.pyutest_default_args@s    utest_default_argscCstd|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS(Nu%s/test_redirects Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u3/home/prologic/work/circuits/tests/web/test_core.pyu test_redirectPs  lu test_redirectcCsNytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j kswtj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsJdidt j kstj dr'tjdndd6}t tj |ndS(Nu%s/test_forbiddeniu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Forbiddenu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u3/home/prologic/work/circuits/tests/web/test_core.pyutest_forbiddenVs,  |  |!Autest_forbiddencCsNytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j kswtj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsJdidt j kstj dr'tjdndd6}t tj |ndS(Nu%s/test_notfoundiu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Not Foundu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u3/home/prologic/work/circuits/tests/web/test_core.pyu test_notfound`s,  |  |!Au test_notfoundcCszytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`Xdsvdid t j ksDtj drStjdnd d6}t tj |ndS(Nu%s/test_failureiu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7uassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u3/home/prologic/work/circuits/tests/web/test_core.pyu test_failurejs  |!Au test_failure(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestu circuits.sixubuuu circuits.webu Controlleruhelpersu urlencodeuurlopenu HTTPErroruRootu test_rootutest_404u test_argsumarku parametrizeutest_default_argsu test_redirectutest_forbiddenu test_notfoundu test_failure(((u3/home/prologic/work/circuits/tests/web/test_core.pyus"    4  circuits-3.1.0/tests/web/__pycache__/test_gzip.cpython-33-PYTEST.pyc0000644000014400001440000001313512414363411026143 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z ddl m Z ddl m Z ddlmZddlmZmZdd lmZdd lmZmZGd d d eZGd dde ZeddddZddZddZddZdS(iN(ufixture(upath(uBytesIO(u Controller(ugzip(uhandleru Componenti(uDOCROOT(u build_openeruRequestcBs8|EeZdZdZedddddZdS(uGzipuweburesponseupriorityg?cOst|d|d.finalizer(uGzipuregisteru addfinalizer(urequestuwebappu finalizer((ugziptoolu3/home/prologic/work/circuits/tests/web/test_gzip.pyugziptool#s ugziptoolcCsaddl}t}|j||jd|jddd|}|j}|j|S(Niumodeurbufileobj(ugzipuBytesIOuwriteuseekuGzipFileureaduclose(ubodyugzipuzbufuzfileudata((u3/home/prologic/work/circuits/tests/web/test_gzip.pyu decompress/s      u decompressc Cs t|jjj}|jddt}|j|}t|j}d}||k}|st j d |fd ||fit j |d6dt j kst j|rt j |ndd6}di|d 6} tt j| nd}}dS(NuAccept-Encodingugzips Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uRequestuserveruhttpubaseu add_headeru build_openeruopenu decompressureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone( uwebappugziptoolurequestuopenerufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u3/home/prologic/work/circuits/tests/web/test_gzip.pyutest1;s  lutest1cCsutd|jjj}|jddt}|j|}t|j}t j }d}|t |}d} t|| } | j} | } || k} | rOt j df| fdf|| fi dtjkpt jt rt jt ndd 6d tjkp't jtr9t jtnd d 6t j| d 6d tjkpnt j|rt j|nd d6dtjkpt jt rt jt ndd6t j|d6t j|d6t j| d6t j| d6t j|d6t j| d6}ddi|d6}tt j|nt} }}}} } } } dS(Nu%s/static/largefile.txtuAccept-Encodingugzipu largefile.txturbu==u%(py0)s == %(py18)s {%(py18)s = %(py16)s {%(py16)s = %(py14)s {%(py14)s = %(py2)s(%(py10)s {%(py10)s = %(py5)s {%(py5)s = %(py3)s.join }(%(py6)s, %(py8)s) }, %(py12)s) }.read }() }upathupy3uopenupy2upy12usupy0uDOCROOTupy6upy5upy10upy16upy18upy8upy14uuassert %(py20)supy20(uRequestuserveruhttpubaseu add_headeru build_openeruopenu decompressureadupathujoinuDOCROOTu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(uwebappugziptoolurequestuopenerufusu @py_assert4u @py_assert7u @py_assert9u @py_assert11u @py_assert13u @py_assert15u @py_assert17u @py_assert1u @py_format19u @py_format21((u3/home/prologic/work/circuits/tests/web/test_gzip.pyutest2Es&   xutest2(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestufixtureuosupathuiouBytesIOu circuits.webu Controllerucircuits.web.toolsugzipucircuitsuhandleru ComponentuconftestuDOCROOTuhelpersu build_openeruRequestuGzipuRootugziptoolu decompressutest1utest2(((u3/home/prologic/work/circuits/tests/web/test_gzip.pyus   circuits-3.1.0/tests/web/__pycache__/test_bad_requests.cpython-32-PYTEST.pyc0000644000014400001440000000512312414363276027661 0ustar prologicusers00000000000000l ?Tc @sddlZddljjZyddlmZWn"ek rVddl mZYnXddl m Z ddl m Z Gdde ZdZdS(iN(uHTTPConnection(ub(u ControllercBs|EeZdZdS(cCsdS(Nu Hello World!((uself((u;/home/prologic/work/circuits/tests/web/test_bad_requests.pyuindexsN(u__name__u __module__uindex(u __locals__((u;/home/prologic/work/circuits/tests/web/test_bad_requests.pyuRoot s uRootcCs't|jj|jj}|j|jddd|jdd|jtd|j |j }|j }d}||k}|s7t j d|fd||fit j|d 6d tjkst j|rt j|nd d 6t j|d 6}di|d6}tt j|nd}}}|j}d}||k}|s t j d|fd||fit j|d 6d tjkst j|rt j|nd d 6t j|d 6}di|d6}tt j|nd}}}|jdS(NuGETu/uHTTP/1.1u ConnectionucloseuX-Fooiu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7u Bad Requestu.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suassert %(py7)s(uHTTPConnectionuserveruhostuportuconnectu putrequestu putheaderu_outputubu endheadersu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneureasonuclose(uwebappu connectionuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u;/home/prologic/work/circuits/tests/web/test_bad_requests.pyutest_bad_headers0     |  |(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhttplibuHTTPConnectionu ImportErroru http.clientu circuits.sixubu circuits.webu ControlleruRootutest_bad_header(((u;/home/prologic/work/circuits/tests/web/test_bad_requests.pyus  circuits-3.1.0/tests/web/__pycache__/test_headers.cpython-27-PYTEST.pyc0000644000014400001440000001272412414363102026610 0ustar prologicusers00000000000000 ?Tc@s|ddlZddljjZddlmZddlm Z defdYZ dZ dZ d Z d ZdS( iN(t Controlleri(turlopentRootcBs#eZdZdZdZRS(cCsdS(Ns Hello World!((tself((s6/home/prologic/work/circuits/tests/web/test_headers.pytindex scCsd|jjds  circuits-3.1.0/tests/web/__pycache__/jsonrpclib.cpython-32.pyc0000644000014400001440000003303312414363276025261 0ustar prologicusers00000000000000l ?Tc@sUddlZddlZddlZejddkZy$ddlmZddlmZWn2ek rddl m Zddl m ZYnXy0ddl m Z ddl mZmZmZWn>ek rddlm Z ddlmZmZmZYnXd Zd ad ZGd d eZGddeZdZdddddZGddeZGddeZGddeZGddZGddeZ GddeZ!e"dkrQe!dd d Z#e#j$d!Z%e&e%e#j'd"Z(e&e(e#j$d!d#Z)e&e)e#j$d$Z*e&e*ndS(%iNi(uHTTPConnection(uHTTPSConnection(uHTTP(uHTTPS(uunquote(u splithostu splittypeu splituseru0.0.1icCstdatS(Ni(uID(((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu_gen_id:s cBs|EeZdZdZdS(uBase class for client errors.cCs t|S(N(urepr(uself((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu__str__HsN(u__name__u __module__u__doc__u__str__(u __locals__((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyuErrorFs uErrorcBs&|EeZdZdZdZdS(u!Indicates an HTTP protocol error.cCs>tj|||_||_||_||_||_dS(N(uErroru__init__uurluerrcodeuerrmsguheadersuresponse(uselfuurluerrcodeuerrmsguheadersuresponse((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu__init__Ys      cCsd|j|j|jfS(Nu(uurluerrcodeuerrmsg(uself((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu__repr__asN(u__name__u __module__u__doc__u__init__u__repr__(u __locals__((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu ProtocolErrorVs  u ProtocolErrorcCs"t|}t|}||fS(N(u UnmarshalleruParser(uencodinguunupar((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu getparserhs  cCs>|r:i}||d<||d(u_ServerProxy__hostu_ServerProxy__handler(uself((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu__repr__scCst|j|S(N(u_Methodu_ServerProxy__request(uselfuname((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu __getattr__sN(u__name__u __module__uNoneu__init__u_ServerProxy__requestu__repr__u__str__u __getattr__(u __locals__((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu ServerProxys   u ServerProxyu__main__uhttp://localhost:8080/foo/uverboseufoo baruotherubazi(+usysujsonubase64u version_infouPY3u http.clientuHTTPConnectionuHTTPSConnectionu ImportErroruhttplibuHTTPuHTTPSu urllib.parseuunquoteu splithostu splittypeu splituseruurllibu __version__uIDu_gen_idu ExceptionuErroru ProtocolErroru getparseruNoneudumpsuobjectu UnmarshalleruParseru_Methodu Transportu SafeTransportu ServerProxyu__name__usuechoucuprintubadudueuf(((u4/home/prologic/work/circuits/tests/web/jsonrpclib.pyu!sN      !    9    circuits-3.1.0/tests/web/__pycache__/test_cookies.cpython-27-PYTEST.pyc0000644000014400001440000000420112414363102026620 0ustar prologicusers00000000000000 ?Tc@swddlZddljjZddlmZddlm Z m Z ddlm Z defdYZ dZ dS( iN(t Controlleri(t build_openertHTTPCookieProcessor(t CookieJartRootcBseZdZRS(cCs:|jjd}|r%|jr%dSt|jds  circuits-3.1.0/tests/web/__pycache__/test_serve_download.cpython-26-PYTEST.pyc0000644000014400001440000000656212407376151030224 0ustar prologicusers00000000000000 ?Tc @sddkZddkiiZddkZddklZddk l Z ddk l Z ddk lZde fdYZd ZdS( iN(tmkstemp(thandler(t Controlleri(turlopentRootcBsMeZeddddddZeddddZd ZRS( tstartedtpriorityg?tchannelt*cCs3t\}|_ti|dti|dS(Ns Hello World!(Rtfilenametostwritetclose(tselft componenttfd((s=/home/prologic/work/circuits/tests/web/test_serve_download.pyt _on_startedststoppedt(cCsti|idS(N(R tremoveR (R R((s=/home/prologic/work/circuits/tests/web/test_serve_download.pyt _on_stoppedscCs|i|iS(N(tserve_downloadR (R ((s=/home/prologic/work/circuits/tests/web/test_serve_download.pytindexs(t__name__t __module__RRRR(((s=/home/prologic/work/circuits/tests/web/test_serve_download.pyR s!c Cs0t|iii}|i}d}||j}|ptid|fd||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}|id }|id }d }||j}|ptid|fd||fhd tijpti |oti |nd d6ti |d6}dh|d6}t ti |nd}}|i}d } || } | pdhdtijpti |oti |ndd6ti |d6ti | d6ti | d6} t ti | nd}} } d} | |j}|ptid|fd| |fhti | d6dtijpti |oti |ndd6}dh|d6}t ti |nd} }dS(Ns Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5s Content-TypesContent-Dispositionsapplication/x-downloadt contentTypes attachment;sLassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.startswith }(%(py4)s) }tcontentDispositiontpy2tpy4tpy6R tins%(py1)s in %(py3)stpy1(s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s(R"(s%(py1)s in %(py3)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetheaderst startswith( twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6RRt @py_assert3t @py_assert5t @py_format7t @py_assert0((s=/home/prologic/work/circuits/tests/web/test_serve_download.pyttests@  o    o   t o(t __builtin__R*t_pytest.assertion.rewritet assertiontrewriteR(R ttempfileRtcircuitsRt circuits.webRthelpersRRR=(((s=/home/prologic/work/circuits/tests/web/test_serve_download.pyts  circuits-3.1.0/tests/web/__pycache__/test_dispatcher.cpython-27-PYTEST.pyc0000644000014400001440000001360712414363102027324 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z m Z defdYZ defdYZ dZ d Zd Zd Zd ZdS( iN(t Controller(tClienttrequesttRootcBs#eZdZdZdZRS(cOs*tt|j|||t7}dS(N(tsuperRt__init__tLeaf(tselftargstkwargs((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyRscCsdS(Ns Hello World!((R((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pytindex scCsdS(NtEarth((R((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pytnames(t__name__t __module__RR R (((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyRs  RcBs eZdZdZdZRS(s/world/country/regioncCsdS(Ns Hello cities!((R((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyR scCsdS(Ns Hello City!((R((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pytcitys(R RtchannelR R(((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyRs cCskt}|j|jtd|x|jdkr>q,W|j|j}|j}|j|fS(NtGET( RtstarttfireRtresponsetNonetstoptreadtstatus(twebapptpathtclientRts((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyt make_requests     cCst||jjj\}}d}||k}|stjd |fd ||fitj|d6dtjkstj |rtj|ndd6}di|d 6}t tj |nd}}d }||k}|stjd|fd||fitj|d6d tjks?tj |rNtj|nd d6}di|d 6}t tj |nd}}dS(Nis==s%(py0)s == %(py3)stpy3Rtpy0tsassert %(py5)stpy5s Hello World!tcontent(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s( Rtserverthttptbaset @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationR(RRR"t @py_assert2t @py_assert1t @py_format4t @py_format6((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyt test_root-s l  lcCst|d|jjj\}}d}||k}|stjd |fd||fitj|d6dtjkstj |rtj|ndd6}di|d 6}t tj |nd}}d }||k}|stjd|fd||fitj|d6d tjksCtj |rRtj|nd d6}di|d 6}t tj |nd}}dS(Ns%s/nameis==s%(py0)s == %(py3)sRRRR sassert %(py5)sR!R R"(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s( RR#R$R%R&R'R(R)R*R+R,R-R(RRR"R.R/R0R1((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyttest_root_name4s" l  lcCst|d|jjj\}}d}||k}|stjd |fd||fitj|d6dtjkstj |rtj|ndd6}di|d 6}t tj |nd}}d }||k}|stjd|fd||fitj|d6d tjksCtj |rRtj|nd d6}di|d 6}t tj |nd}}dS(Ns%s/world/country/regionis==s%(py0)s == %(py3)sRRRR sassert %(py5)sR!s Hello cities!R"(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s( RR#R$R%R&R'R(R)R*R+R,R-R(RRR"R.R/R0R1((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyt test_leaf;s" l  lcCst|d|jjj\}}d}||k}|stjd |fd||fitj|d6dtjkstj |rtj|ndd6}di|d 6}t tj |nd}}d }||k}|stjd|fd||fitj|d6d tjksCtj |rRtj|nd d6}di|d 6}t tj |nd}}dS(Ns%s/world/country/region/cityis==s%(py0)s == %(py3)sRRRR sassert %(py5)sR!s Hello City!R"(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s( RR#R$R%R&R'R(R)R*R+R,R-R(RRR"R.R/R0R1((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyt test_cityBs" l  l(t __builtin__R)t_pytest.assertion.rewritet assertiontrewriteR&t circuits.webRtcircuits.web.clientRRRRRR2R3R4R5(((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyts      circuits-3.1.0/tests/web/__pycache__/test_dispatcher2.cpython-34-PYTEST.pyc0000644000014400001440000001464112414363522027411 0ustar prologicusers00000000000000 ?T*@sddlZddljjZddlmZmZddl m Z GdddeZ GdddeZ Gd d d eZ d d Zd dZddZddZddZddZdS)N)expose Controller)urlopencs^eZdZfddZddZddZeddd Zd d ZS) Rootcs7tt|j|||t7}|t7}dS)N)superr__init__HelloWorld)selfargskwargs) __class__:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyr s z Root.__init__cCsdS)Nindexr)r rrrrsz Root.indexcCsdS)Nhello1r)r rrrrsz Root.hello1hello2cCsdS)Nrr)r rrrrsz Root.hello2cCsd|S)Nzquery %sr)reqtestrrrquerysz Root.query) __name__ __module__ __qualname__rrrrrrrr)rrr s   rc@s:eZdZdZddZddZddZdS) r z/hellocCsdS)Nz hello indexr)r rrrr sz Hello.indexcCsdS)Nz hello testr)r rrrr#sz Hello.testcCsd|S)Nzhello query %sr)rrrrrr&sz Hello.queryN)rrrchannelrrrrrrrr s   r c@s.eZdZdZddZddZdS)r z/worldcCsdS)Nz world indexr)r rrrr-sz World.indexcCsdS)Nz world testr)r rrrr0sz World.testN)rrrrrrrrrrr *s  r cCsd|jjj}t|}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS)Nz %s/hello1shello1==%(py0)s == %(py3)spy3spy0assert %(py5)spy5)r)rr!)serverhttpbaserread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)webappurlfr @py_assert2 @py_assert1 @py_format4 @py_format6rrr test_simple4s   lr7cCsd|jjj}t|}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS)Nz %s/hello2shello2r%(py0)s == %(py3)srrrr assert %(py5)sr")r)r8r9)r#r$r%rr&r'r(r)r*r+r,r-r.r/)r0r1r2rr3r4r5r6rrr test_expose;s   lr:cCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS) Nsindexr%(py0)s == %(py3)srrrr assert %(py5)sr")r)r;r<)rr#r$r%r&r'r(r)r*r+r,r-r.r/)r0r2rr3r4r5r6rrr test_indexBs  lr=cCsd|jjj}t|}|j}d}||k}|stjd |fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nt }}d |jjj}t|}|j}d }||k}|stjd|fd||fitj|d6dtj kswtj |rtj|ndd6}di|d 6}t tj |nt }}dS)Nz %s/hello/s hello indexr%(py0)s == %(py3)srrrr assert %(py5)sr"z %s/world/s world index)r)r>r?)r)r>r?)r#r$r%rr&r'r(r)r*r+r,r-r.r/)r0r1r2rr3r4r5r6rrrtest_controller_indexHs(   l    lr@cCsd|jjj}t|}|j}d}||k}|stjd |fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nt }}d |jjj}t|}|j}d }||k}|stjd|fd||fitj|d6dtj kswtj |rtj|ndd6}di|d 6}t tj |nt }}dS)Nz %s/hello/tests hello testr%(py0)s == %(py3)srrrr assert %(py5)sr"z %s/world/tests world test)r)rArB)r)rArB)r#r$r%rr&r'r(r)r*r+r,r-r.r/)r0r1r2rr3r4r5r6rrrtest_controller_exposeTs(   l    lrCcCsd|jjj}t|}|j}d}||k}|stjd |fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nt }}d |jjj}t|}|j}d }||k}|stjd|fd||fitj|d6dtj kswtj |rtj|ndd6}di|d 6}t tj |nt }}dS)Nz%s/query?test=1squery 1r%(py0)s == %(py3)srrrr assert %(py5)sr"z%s/hello/query?test=2s hello query 2)r)rDrE)r)rDrE)r#r$r%rr&r'r(r)r*r+r,r-r.r/)r0r1r2rr3r4r5r6rrr test_query`s(   l    lrF)builtinsr*_pytest.assertion.rewrite assertionrewriter' circuits.webrrhelpersrrr r r7r:r=r@rCrFrrrrs      circuits-3.1.0/tests/web/__pycache__/test_http.cpython-27-PYTEST.pyc0000644000014400001440000000730712414363102026155 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZddlmZmZdefdYZd e fd YZd ZdS( iN(t Component(t Controller(t parse_url(t TCPClient(tconnecttwritetClientcBs#eZdZdZdZRS(cOs/tt|j||g|_t|_dS(N(tsuperRt__init__t_buffertFalsetdone(tselftargstkwargs((s3/home/prologic/work/circuits/tests/web/test_http.pyR s cCs5|jj||jddkr1t|_ndS(Ns i(R tappendtfindtTrueR (R tdata((s3/home/prologic/work/circuits/tests/web/test_http.pytreadscCsdj|jS(Nt(tjoinR (R ((s3/home/prologic/work/circuits/tests/web/test_http.pytbuffers(t__name__t __module__RRR(((s3/home/prologic/work/circuits/tests/web/test_http.pyR s  tRootcBseZdZRS(cCsdS(Ns Hello World!((R ((s3/home/prologic/work/circuits/tests/web/test_http.pytindexs(RRR(((s3/home/prologic/work/circuits/tests/web/test_http.pyRscCsVt}t}||7}|jt|jjj\}}}}|jt||t j }d}|||} | sEddidt j kst j|rt j|ndd6t j|d6dt j kst jt rt jt ndd6t j| d 6t j|d 6} tt j| nd}}} |jtd |jtd t j }d }|||} | saddidt j kst j|rt j|ndd6t j|d6dt j kst jt rt jt ndd6t j| d 6t j|d 6} tt j| nd}}} |j|jjdjdd} d} | | k}|sHt jd|fd| | fit j| d6dt j kst j| rt j| ndd6} di| d 6}tt j|nd}} dS(Nt connectedRsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }t transporttpy3tpy2tpytesttpy0tpy7tpy5sGET / HTTP/1.1 sContent-Type: text/plain R tclientsutf-8s isHTTP/1.1 200 OKs==s%(py0)s == %(py3)stssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(RRtstartRtserverthttptbasetfireRRtwait_fort @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNoneRtstopRtdecodetsplitt_call_reprcompare(twebappRR#thosttporttresourcetsecuret @py_assert1t @py_assert4t @py_assert6t @py_format8R$t @py_assert2t @py_format4t @py_format6((s3/home/prologic/work/circuits/tests/web/test_http.pyttest!s>    !   " l(t __builtin__R+t_pytest.assertion.rewritet assertiontrewriteR-RtcircuitsRt circuits.webRtcircuits.web.clientRtcircuits.net.socketsRtcircuits.net.eventsRRRRRC(((s3/home/prologic/work/circuits/tests/web/test_http.pyts  circuits-3.1.0/tests/web/__pycache__/test_wsgi_application_generator.cpython-33-PYTEST.pyc0000644000014400001440000000416312414363412032576 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z ddl m Z GdddeZ e e Z dd ZdS( iN(u Controller(u Applicationi(uurlopencBs |EeZdZddZdS(uRootcCsdd}|S(NcssdVdVdS(NuHello uWorld!((((uI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pyuresponse suRoot.index..response((uselfuresponse((uI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pyuindex s u Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((uI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pyuRoot suRootcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((uI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pyutests  lutest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu Controllerucircuits.web.wsgiu ApplicationuhelpersuurlopenuRootu applicationutest(((uI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pyus circuits-3.1.0/tests/web/__pycache__/test_json.cpython-34-PYTEST.pyc0000644000014400001440000000643012414363522026147 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZddlm Z m Z ddl m Z m Z mZddl mZGddde Zd d Zd d ZdS) N)loads)JSONControllerSessions)urlopen build_openerHTTPCookieProcessor) CookieJarc@s+eZdZddZdddZdS)RootcCsidd6dd6S)NTsuccessz Hello World!message)selfr r 3/home/prologic/work/circuits/tests/web/test_json.pyindex sz Root.indexNcCsA|r||jds  circuits-3.1.0/tests/web/__pycache__/test_wsgi_application.cpython-27-PYTEST.pyc0000644000014400001440000002107412414363102030527 0ustar prologicusers00000000000000 ?T`c@sddlZddljjZddlmZddlm Z ddl m Z m Z m Z defdYZe eZdZd Zd Zd Zd Zd ZdS(iN(t Controller(t Applicationi(t urlencodeturlopent HTTPErrortRootcBs5eZdZdZdZdZdZRS(cCsdS(Ns Hello World!((tself((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pytindex scOsTg|D]'}t|tr"|n |j^q}dtt|t|fS(Ns%s %s(t isinstancetstrtencodetreprttuple(Rtargstkwargstarg((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyt test_argss4cCs |jdS(Nt/(tredirect(R((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyt test_redirectscCs |jS(N(t forbidden(R((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyttest_forbiddenscCs |jS(N(tnotfound(R((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyt test_notfounds(t__name__t __module__RRRRR(((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyR s     cCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyttests  lcCs<ytd|jjjWntk r}|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksttj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}n`Xts8didt j kstj trtjtndd6}t tj |ndS(Ns%s/foois==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)stpy2teRRRsassert %(py7)stpy7s Not Founds+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)stFalse(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)ssassert %(py7)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py7)ssassert %(py0)s(RRR R!RtcodeR#R$R%R&R'R(R)R*R+tmsgR6(R,R4R/t @py_assert4t @py_assert3R1t @py_format8t @py_format1((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyttest_404$s,  |  |Ac Csd}idd6dd6dd6}d|jjjdj|f}t|j}t||}|jjd }|d }t |}||k}|s}t j d|fd||fit j |d 6dt jkst jt rt j t ndd6dt jks*t j|r9t j |ndd6t j |d6} di| d6} tt j| nd}}}|d}t |}||k}|st j d|fd||fit j |d 6dt jkst jt rt j t ndd6dt jks<t j|rKt j |ndd6t j |d6} di| d6} tt j| nd}}}dS(Nt1t2t3tonettwotthrees%s/test_args/%sRs is==s0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)sR3tevalRR tpy6tpy4Rsassert %(py8)stpy8iR(R>R?R@(s==(s0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)ssassert %(py8)s(s==(s0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)ssassert %(py8)s(RR R!tjoinRR RR"tsplitRDR#R$R%R&R'R(R)R*R+( R,R RturltdataR-R/R:t @py_assert5t @py_format7t @py_format9((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyR.s,"  cCstd|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS(Ns%s/test_redirects Hello World!s==s%(py0)s == %(py3)sRRRRsassert %(py5)sR(s==(s%(py0)s == %(py3)ssassert %(py5)s(RRR R!R"R#R$R%R&R'R(R)R*R+(R,R-RR.R/R0R1((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyR:s  lcCs<ytd|jjjWntk r}|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksttj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}n`Xts8didt j kstj trtjtndd6}t tj |ndS(Ns%s/test_forbiddenis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sR3R4RRRsassert %(py7)sR5t Forbiddens+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)sR6(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)ssassert %(py7)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py7)ssassert %(py0)s(RRR R!RR7R#R$R%R&R'R(R)R*R+R8R6(R,R4R/R9R:R1R;R<((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyR@s,  |  |AcCs<ytd|jjjWntk r}|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksttj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}n`Xts8didt j kstj trtjtndd6}t tj |ndS(Ns%s/test_notfoundis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sR3R4RRRsassert %(py7)sR5s Not Founds+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)sR6(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)ssassert %(py7)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py7)ssassert %(py0)s(RRR R!RR7R#R$R%R&R'R(R)R*R+R8R6(R,R4R/R9R:R1R;R<((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyRJs,  |  |A(t __builtin__R&t_pytest.assertion.rewritet assertiontrewriteR#t circuits.webRtcircuits.web.wsgiRthelpersRRRRt applicationR2R=RRRR(((s?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyts    circuits-3.1.0/tests/web/__pycache__/test_disps.cpython-34-PYTEST.pyc0000644000014400001440000000673112414363522026324 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZddlm Z ddl m Z ddl m Z mZddlmZddlmZmZGd d d e ZGd d d eZGd ddeZGdddeZddZdS)N)Manager)handler) BaseComponent) BaseServer Controller) Dispatcher)urlopenurljoincsFeZdZdZfddZedddddZS) PrefixingDispatcherz3Forward to another Dispatcher based on the channel.cstt|jd|dS)Nchannel)superr __init__)selfr ) __class__4/home/prologic/work/circuits/tests/web/test_disps.pyrszPrefixingDispatcher.__init__requestpriorityg?cCs5|jjd}td|j|}||_dS)N/z/%s/)pathstripr r )reventrresponserrrr _on_requestszPrefixingDispatcher._on_request)__name__ __module__ __qualname____doc__rrrrr)rrr s r c@s"eZdZdZddZdS) DummyRootrcCsdS)NzNot usedr)rrrrindexszDummyRoot.indexN)rrrr r rrrrrs rc@s"eZdZdZddZdS)Root1z/site1cCsdS)NzHello from site 1!r)rrrrr 'sz Root1.indexN)rrrr r rrrrr!#s r!c@s"eZdZdZddZdS)Root2z/site2cCsdS)NzHello from site 2!r)rrrrr /sz Root2.indexN)rrrr r rrrrr"+s r"c Cst}tddd}|j|tddj|tddj|tj|tddd}|j|tddj|tddj|tj|tj||jt |j j dd}|j }d}||k}|st jd|fd||fit j|d 6d tjksgt j|rvt j|nd d 6}di|d6}tt j|nt}}t |j j dd}|j }d}||k}|st jd|fd||fit j|d 6d tjksBt j|rQt j|nd d 6}di|d6}tt j|nt}}dS)Nrr Zsite1 localhostZsite2timeoutsHello from site 1!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5sHello from site 2!)z localhostr)r&)r'r,)r&)r'r,)rrregisterr rr!r"rstartr httpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone) managerZserver1Zserver2fr) @py_assert2 @py_assert1 @py_format4 @py_format6rrr test_disps3s>      l   lrB)builtinsr6_pytest.assertion.rewrite assertionrewriter3circuits.core.managerrZcircuits.core.handlersrZcircuits.core.componentsr circuits.webrrZ#circuits.web.dispatchers.dispatcherrhelpersr r r rr!r"rBrrrrs circuits-3.1.0/tests/web/__pycache__/test_multipartformdata.cpython-33-PYTEST.pyc0000644000014400001440000001232312414363412030730 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZddlmZmZejdd ZGd d d e Zd d ZddZdS(iN(upath(uBytesIO(u Controlleri(u MultiPartForm(uurlopenuRequestcCs%ttjtjtdddS(Nustaticu unicode.txturb(uopenupathujoinudirnameu__file__(urequest((u@/home/prologic/work/circuits/tests/web/test_multipartformdata.pyu sample_files   u sample_filecBs2|EeZdZdddZdddZdS(uRootuccs&d|jVd|VdV|jVdS(Nu Filename: %s uDescription: %s u Content: (ufilenameuvalue(uselfufileu description((u@/home/prologic/work/circuits/tests/web/test_multipartformdata.pyuindexs  u Root.indexcCs|jS(N(uvalue(uselfufileu description((u@/home/prologic/work/circuits/tests/web/test_multipartformdata.pyuupload!su Root.uploadN(u__name__u __module__u __qualname__uindexuupload(u __locals__((u@/home/prologic/work/circuits/tests/web/test_multipartformdata.pyuRootsuRootcCs%t}d|dtj|rMtj|nd d6} di| d6} ttj| nd} dS(Nu descriptionufileuhelloworld.txtutext/plain; charset=utf-8u {0:s}/uploadu Content-TypeuContent-Lengthiu==u%(py0)s == %(py2)suexpected_outputupy2usupy0uuassert %(py4)supy4(u==(u%(py0)s == %(py2)suassert %(py4)s(u MultiPartFormunameuadd_fileuformatuserveruhttpubaseubytesuget_content_typeulenuRequestuurlopenureaduseeku @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone( uwebappu sample_fileuformuurludatauheadersurequestufusuexpected_outputu @py_assert1u @py_format3u @py_format5((u@/home/prologic/work/circuits/tests/web/test_multipartformdata.pyu test_unicode@s*          u test_unicode(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuosupathuiouBytesIOu circuits.webu Controlleru multipartformu MultiPartFormuhelpersuurlopenuRequestufixtureu sample_fileuRootutestu test_unicode(((u@/home/prologic/work/circuits/tests/web/test_multipartformdata.pyus    circuits-3.1.0/tests/web/__pycache__/test_core.cpython-26-PYTEST.pyc0000644000014400001440000002501312407376151026131 0ustar prologicusers00000000000000 ?T$ c@s5ddkZddkiiZddkZddklZl Z ddk l Z ddk l Z lZlZde fdYZdZd Zd Zeiid d ghfed fd dghfedfd ghdd6fedfgdZdZdZdZdZdS(iN(tbtu(t Controlleri(t urlencodeturlopent HTTPErrortRootcBsMeZdZdZdddZdZdZdZdZ RS(cCsdS(Ns Hello World!((tself((s3/home/prologic/work/circuits/tests/web/test_core.pytindexscOsdit|t|S(Ns{0} {1}(tformattrepr(Rtargstkwargs((s3/home/prologic/work/circuits/tests/web/test_core.pyt test_argsscCsdi||S(Ns a={0} b={1}(R (RtaR((s3/home/prologic/work/circuits/tests/web/test_core.pyttest_default_argsscCs |idS(Nt/(tredirect(R((s3/home/prologic/work/circuits/tests/web/test_core.pyt test_redirectscCs |iS(N(t forbidden(R((s3/home/prologic/work/circuits/tests/web/test_core.pyttest_forbiddenscCs |iS(N(tnotfound(R((s3/home/prologic/work/circuits/tests/web/test_core.pyt test_notfoundscCs tdS(N(t Exception(R((s3/home/prologic/work/circuits/tests/web/test_core.pyt test_failure!sN( t__name__t __module__RR tNoneRRRRR(((s3/home/prologic/work/circuits/tests/web/test_core.pyR s     cCst|iii}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationR(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((s3/home/prologic/work/circuits/tests/web/test_core.pyt test_root%s  ocCsMytd|iiiWntj o}|i}d}||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}|i}d }||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}nfXtp]d hdti jpti toti tndd6}t ti |ndS(Ns%s/foois==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)steRtpy2Rsassert %(py7)stpy7s Not Founds+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)stFalse(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)s(RR R!R"RtcodeR$R%R&R'R(R)R*R+RtmsgR6(R,R3R/t @py_assert4t @py_assert3R1t @py_format8t @py_format1((s3/home/prologic/work/circuits/tests/web/test_core.pyttest_404+s,    Dc Csd}hdd6dd6dd6}d|iiidi|f}t|id }t||}|iid }|d }t |}||j}|pt i d|fd||fhdt i jpt it ot it ndd6t i|d6t i|d6dt i jpt i|ot i|ndd6} dh| d6} tt i| nd}}}|d}t |}||j}|pt i d|fd||fhdt i jpt it ot it ndd6t i|d6t i|d6dt i jpt i|ot i|ndd6} dh| d6} tt i| nd}}}dS(Nt1t2t3tonettwotthrees%s/test_args/%sRsutf-8s is==s0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)stevalRR4tpy4R tpy6sassert %(py8)stpy8iR (R>R?R@(s==(s0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)s(s==(s0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)s(R R!R"tjoinRtencodeRR#tsplitRDR$R%R&R'R(R)R*R+R( R,R R turltdataR-R/R:t @py_assert5t @py_format7t @py_format9((s3/home/prologic/work/circuits/tests/web/test_core.pyR 5s,"  s data,expectedR>s a=1 b=NoneR?sa=1 b=2Rc Csz|\}}tdi|iiitdi|}t|id}t||}|i }|}||j} | pt i d| fd||fhdt i jpt i|ot i|ndd6t i|d6t i|d 6d t i jpt i|ot i|nd d 6} d h| d 6} tt i| nd}}} dS(Ns{0:s}/test_default_args/{1:s}Rsutf-8s==sC%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.read }() } == %(py6)sR-RR4REtexpectedRFsassert %(py8)sRG(s==(sC%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.read }() } == %(py6)s(RR R R!R"RHRRIRR#R$R%R&R'R(R)R*R+R( R,RLRPR R RKR-R/R:RMRNRO((s3/home/prologic/work/circuits/tests/web/test_core.pyR@s    cCstd|iii}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d 6}t ti |nd}}dS( Ns%s/test_redirects Hello World!s==s%(py0)s == %(py3)sRRRsassert %(py5)sR(s==(s%(py0)s == %(py3)s(RR R!R"R#R$R%R&R'R(R)R*R+R(R,R-RR.R/R0R1((s3/home/prologic/work/circuits/tests/web/test_core.pyRPs  ocCsMytd|iiiWntj o}|i}d}||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}|i}d }||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}nfXtp]d hdti jpti toti tndd6}t ti |ndS(Ns%s/test_forbiddenis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sR3RR4Rsassert %(py7)sR5t Forbiddens+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)sR6(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)s(RR R!R"RR7R$R%R&R'R(R)R*R+RR8R6(R,R3R/R9R:R1R;R<((s3/home/prologic/work/circuits/tests/web/test_core.pyRVs,    DcCsMytd|iiiWntj o}|i}d}||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}|i}d }||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}nfXtp]d hdti jpti toti tndd6}t ti |ndS(Ns%s/test_notfoundis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sR3RR4Rsassert %(py7)sR5s Not Founds+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)sR6(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)s(RR R!R"RR7R$R%R&R'R(R)R*R+RR8R6(R,R3R/R9R:R1R;R<((s3/home/prologic/work/circuits/tests/web/test_core.pyR`s,    DcCstytd|iiiWntj o}|i}d}||j}|ptid |fd||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}nfXtp]d hd ti jpti toti tnd d6}t ti |ndS(Ns%s/test_failureis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sR3RR4Rsassert %(py7)sR5sassert %(py0)sR6(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)s(RR R!R"RR7R$R%R&R'R(R)R*R+RR6(R,R3R/R9R:R1R;R<((s3/home/prologic/work/circuits/tests/web/test_core.pyRjs  D(t __builtin__R&t_pytest.assertion.rewritet assertiontrewriteR$tpytestt circuits.sixRRt circuits.webRthelpersRRRRR2R=R tmarkt parametrizeRRRRR(((s3/home/prologic/work/circuits/tests/web/test_core.pyts"    1  circuits-3.1.0/tests/web/__pycache__/test_yield.cpython-26-PYTEST.pyc0000644000014400001440000000303712407376151026311 0ustar prologicusers00000000000000 ?T%c@saddkZddkiiZddklZddkl Z defdYZ dZ dS(iN(t Controlleri(turlopentRootcBseZdZRS(ccsdVdVdS(NsHello sWorld!((tself((s4/home/prologic/work/circuits/tests/web/test_yield.pytindex s(t__name__t __module__R(((s4/home/prologic/work/circuits/tests/web/test_yield.pyRscCst|iii}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((s4/home/prologic/work/circuits/tests/web/test_yield.pyttests  o( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRthelpersRRR(((s4/home/prologic/work/circuits/tests/web/test_yield.pyts circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_errors.cpython-33-PYTEST.pyc0000644000014400001440000000601112414363412031254 0ustar prologicusers00000000000000 ?Tc@sPddlZddljjZddlmZmZddZ ddZ dS(iNi(uurlopenu HTTPErrorcCs,d}dg}|||tddS(Nu200 OKu Content-typeu text/plainu Hello World!(u Content-typeu text/plain(u Exception(uenvironustart_responseustatusuresponse_headers((uB/home/prologic/work/circuits/tests/web/test_wsgi_gateway_errors.pyu applications  u applicationc Csyt|jjjWnGtk r`}z'|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k} | stjd| fd||fidt j ks:tj |rItj|ndd6tj|d6} di| d6}t tj |nd}} d}||k} | sDtjd | fd!||fidt j kstj |rtj|ndd6tj|d6} d"i| d6}t tj |nd}} WYdd}~Xn`Xd#sd$idt j kstj d#rtjd#ndd6} t tj | ndS(%Niu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7uInternal Server Erroru+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ss Exceptionuinu%(py1)s in %(py3)susupy3upy1uassert %(py5)ss Hello World!uassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)s(uin(u%(py1)s in %(py3)suassert %(py5)s(uin(u%(py1)s in %(py3)suassert %(py5)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsgureaduFalse( uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8usu @py_assert0u @py_assert2u @py_format4u @py_format1((uB/home/prologic/work/circuits/tests/web/test_wsgi_gateway_errors.pyutest sJ  |  |  l  lAutest( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhelpersuurlopenu HTTPErroru applicationutest(((uB/home/prologic/work/circuits/tests/web/test_wsgi_gateway_errors.pyus  circuits-3.1.0/tests/web/__pycache__/test_xmlrpc.cpython-34-PYTEST.pyc0000644000014400001440000000417712414363523026512 0ustar prologicusers00000000000000 ?T  @sddlZddljjZyddlmZWn"ek rVddl mZYnXddl m Z ddl m Z mZddlmZGddde ZGd d d e Zd d ZdS) N) ServerProxy) Component) ControllerXMLRPC)urlopenc@seZdZddZdS)AppcCs t|S)N)eval)selfsr 5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyr szApp.evalN)__name__ __module__ __qualname__r r r r r rs rc@seZdZddZdS)RootcCsdS)Nz Hello World!r )r r r r indexsz Root.indexN)rrrrr r r r rs rc Cs td}t}|j||j|t|jjj}|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nt}}d |jjj} t| d d } | jd} d}| |k}|stj d|fd| |fitj |d6dt j kstj | rtj | ndd6}di|d 6}ttj|nt}}|j|jdS)Nz/rpcs Hello World!==%(py0)s == %(py3)spy3r py0assert %(py5)spy5z%s/rpc allow_noneTz1 + 2r)r)rr)r)rr)rrregisterrserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonerr unregister) webapprpctestfr @py_assert2 @py_assert1 @py_format4 @py_format6urlrrr r r r.s2      l  l  r.)builtinsr%_pytest.assertion.rewrite assertionrewriter" xmlrpc.clientr ImportError xmlrpclibcircuitsr circuits.webrrhelpersrrrr.r r r r s  circuits-3.1.0/tests/web/__pycache__/conftest.cpython-34.pyc0000644000014400001440000000565712414363520024746 0ustar prologicusers00000000000000 ?T9@sdZddlZddlZddlmZddlmZmZddlm Z m Z m Z ddl m Z mZejjejjedZGdd d e ZGd d d e Zejd d ddZejd d ddZdS)zpy.test configN)close)ServerStatic)handler ComponentDebugger)Clientrequeststaticc@s"eZdZdZddZdS)WebAppwebcCsAd|_tdj||_tdtddj|dS)NFrz/staticZ dirlistingT)closedrregisterserverrDOCROOT)selfr2/home/prologic/work/circuits/tests/web/conftest.pyinits z WebApp.initN)__name__ __module__ __qualname__channelrrrrrr s r c@sReZdZddZdiddZedddd d d d ZdS) WebClientcOs d|_dS)NF)r )rargskwargsrrrr!szWebClient.initNcCsPtj|dd|j}|jt|||||jsIt|jS)Nresponser)pytest WaitEventrfirer waitAssertionErrorr)rmethodpathbodyZheaderswaiterrrr__call__$szWebClient.__call__r r*priorityg?cCs d|_dS)NT)r )rrrr _on_closed+szWebClient._on_closed)rrrrr&rr)rrrrrs  rscopemodulecstt|jdrZddlm}t|jd}|i|d6jnt|jdd}|dk r|jn|jjj rt jnt j d}j |jstfdd}|j|S) N applicationr)Gateway/Rootreadycs$jtjjdS)N)rrrstopr)webapprr finalizerDszwebapp..finalizer)r hasattrr+Zcircuits.web.wsgir-getattrrconfigoptionverboserrrstartr r! addfinalizer)r r-r,r/r%r3r)r2rr20s     r2csfttjddj}j||jsCtfdd}|j|S)Nr0rcsjdS)N) unregisterr) webclientrrr3Tszwebclient..finalizer)rrrrrr r!r:)r r2r%r3r)r<rr<Ms   r<)__doc__osrcircuits.net.socketsrZ circuits.webrrcircuitsrrrZcircuits.web.clientrr r#joindirname__file__rr rfixturer2r<rrrrs  ! circuits-3.1.0/tests/web/__pycache__/test_security.cpython-26-PYTEST.pyc0000644000014400001440000000765112407376151027060 0ustar prologicusers00000000000000 ?Tc @sddkZddkiiZddklZyddkl Z Wn#e j oddk l Z nXddk l Z lZdefdYZdZd Zd ZdS( iN(t Controller(tHTTPConnectioni(turlopent HTTPErrortRootcBseZdZRS(cCsdS(Ns Hello World!((tself((s7/home/prologic/work/circuits/tests/web/test_security.pytindexs(t__name__t __module__R(((s7/home/prologic/work/circuits/tests/web/test_security.pyR scCst|iii}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(twebapptfR t @py_assert2t @py_assert1t @py_format4t @py_format6((s7/home/prologic/work/circuits/tests/web/test_security.pyt test_roots  oc Cszy!d|iii}t|Wntj o}|i}d}||j}|ptid |fd||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}nfXtp]d hd ti jpti toti tnd d6}t ti |ndS(Ns%s/../../../../../../etc/passwdis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)steR tpy2R sassert %(py7)stpy7sassert %(py0)stFalse(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)s(R RRRRtcodeRRRRRRRRRR$( RturlR!Rt @py_assert4t @py_assert3Rt @py_format8t @py_format1((s7/home/prologic/work/circuits/tests/web/test_security.pyttest_badpath_notfounds  Dc Cst|ii|ii}|id}|id||i}|i}d}||j}|pti d|fd||fhdt i jpti |oti |ndd6ti |d6ti |d 6}d h|d 6}tti|nd}}}|i}d }||j}|pti d|fd||fhdt i jpti |oti |ndd6ti |d6ti |d 6}d h|d 6}tti|nd}}}|idS(Ns/../../../../../../etc/passwdtGETi-s==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)stresponseR R"R sassert %(py7)sR#sMoved Permanentlys.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s(RR thosttporttconnecttrequestt getresponsetstatusRRRRRRRRRtreasontclose( Rt connectiontpathR-RR'R(RR)((s7/home/prologic/work/circuits/tests/web/test_security.pyttest_badpath_redirect#s,      (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRthttplibRt ImportErrort http.clientthelpersRRRR R+R8(((s7/home/prologic/work/circuits/tests/web/test_security.pyts   circuits-3.1.0/tests/web/__pycache__/test_methods.cpython-26-PYTEST.pyc0000644000014400001440000000766412407376151026660 0ustar prologicusers00000000000000 ?TEc @sddkZddkiiZyddklZWn#ej oddk lZnXddk l Z de fdYZ dZ dZdS(iN(tHTTPConnection(t ControllertRootcBseZdZRS(cCsdS(Ns Hello World!((tself((s6/home/prologic/work/circuits/tests/web/test_methods.pytindex s(t__name__t __module__R(((s6/home/prologic/work/circuits/tests/web/test_methods.pyR sc Cst|ii|ii}|idd|i}|i}d}||j}|ptid|fd||fhdt i jpti |oti |ndd6ti |d6ti |d 6}d h|d 6}t ti|nd}}}|i}d }||j}|ptid|fd||fhdt i jpti |oti |ndd6ti |d6ti |d 6}d h|d 6}t ti|nd}}}|i}d} || j}|ptid|fd|| fhdt i jpti |oti |ndd6ti | d6} dh| d 6}t ti|nd}} dS(NtGETt/is==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)stresponsetpy0tpy2tpy5sassert %(py7)stpy7tOKs.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss Hello World!s%(py0)s == %(py3)ststpy3sassert %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s(s==(s%(py0)s == %(py3)s(Rtserverthosttporttrequestt getresponsetstatust @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetreasontread( twebappt connectionR t @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8Rt @py_assert2t @py_format4((s6/home/prologic/work/circuits/tests/web/test_methods.pyttest_GETs6       oc Cst|ii|ii}|idd|i}|i}d}||j}|ptid|fd||fhdt i jpti |oti |ndd6ti |d6ti |d 6}d h|d 6}t ti|nd}}}|i}d }||j}|ptid|fd||fhdt i jpti |oti |ndd6ti |d6ti |d 6}d h|d 6}t ti|nd}}}|i}d} || j}|ptid|fd|| fhdt i jpti |oti |ndd6ti | d6} dh| d 6}t ti|nd}} dS(NtHEADRis==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)sR R R R sassert %(py7)sR Rs.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)sts%(py0)s == %(py3)sRRsassert %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s(s==(s%(py0)s == %(py3)s(RRRRRRRRRRRRRRRRR R!( R"R#R R$R%R&R'R(RR)R*((s6/home/prologic/work/circuits/tests/web/test_methods.pyt test_HEADs6       o(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthttplibRt ImportErrort http.clientt circuits.webRRR+R.(((s6/home/prologic/work/circuits/tests/web/test_methods.pyts  circuits-3.1.0/tests/web/__pycache__/test_wsgi_application_generator.cpython-32-PYTEST.pyc0000644000014400001440000000401612414363276032602 0ustar prologicusers00000000000000l ?Tc@s~ddlZddljjZddlmZddlm Z ddl m Z GddeZ e e Z dZdS( iN(u Controller(u Applicationi(uurlopencBs|EeZdZdS(cCsd}|S(NcssdVdVdS(NuHello uWorld!((((uI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pyuresponse s((uselfuresponse((uI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pyuindex s N(u__name__u __module__uindex(u __locals__((uI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pyuRoot s uRootcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((uI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pyutests  l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu Controllerucircuits.web.wsgiu ApplicationuhelpersuurlopenuRootu applicationutest(((uI/home/prologic/work/circuits/tests/web/test_wsgi_application_generator.pyus circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_errors.cpython-26-PYTEST.pyc0000644000014400001440000000545412407376151031276 0ustar prologicusers00000000000000 ?Tc@sJddkZddkiiZddklZlZdZ dZ dS(iNi(turlopent HTTPErrorcCs,d}dg}|||tddS(Ns200 OKs Content-types text/plains Hello World!(s Content-types text/plain(t Exception(tenvirontstart_responsetstatustresponse_headers((sB/home/prologic/work/circuits/tests/web/test_wsgi_gateway_errors.pyt applications  c Csyt|iiiWnKtj o?}|i}d}||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}dh|d 6}t ti |nd}}}|i}d }||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}dh|d 6}t ti |nd}}}|i}d }||j} | ptid| fd||fhti |d6dti jpti |oti |ndd6} dh| d6}t ti |nd}} d}||j} | ptid| fd||fhti |d6dti jpti |oti |ndd6} dh| d6}t ti |nd}} nfXtp]dhdti jpti toti tndd6} t ti | ndS(Nis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)stetpy0tpy2tpy5sassert %(py7)stpy7sInternal Server Errors+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)sRtins%(py1)s in %(py3)stpy1tstpy3sassert %(py5)ss Hello World!sassert %(py0)stFalse(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)s(R (s%(py1)s in %(py3)s(R (s%(py1)s in %(py3)s(RtserverthttptbaseRtcodet @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetmsgtreadR( twebappRt @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8Rt @py_assert0t @py_assert2t @py_format4t @py_format1((sB/home/prologic/work/circuits/tests/web/test_wsgi_gateway_errors.pyttest sJ      o  oD( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthelpersRRRR+(((sB/home/prologic/work/circuits/tests/web/test_wsgi_gateway_errors.pyts  circuits-3.1.0/tests/web/__pycache__/test_http.cpython-33-PYTEST.pyc0000644000014400001440000001032512414363412026150 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZddlmZmZGdddeZGd d d e Zd d ZdS( iN(u Component(u Controller(u parse_url(u TCPClient(uconnectuwritecs>|EeZdZfddZddZddZS(uClientcs/tt|j||g|_d|_dS(NF(usuperuClientu__init__u_bufferuFalseudone(uselfuargsukwargs(u __class__(u3/home/prologic/work/circuits/tests/web/test_http.pyu__init__ s uClient.__init__cCs5|jj||jddkr1d|_ndS(Ns iiT(u_bufferuappendufinduTrueudone(uselfudata((u3/home/prologic/work/circuits/tests/web/test_http.pyureadsu Client.readcCsdj|jS(Ns(ujoinu_buffer(uself((u3/home/prologic/work/circuits/tests/web/test_http.pyubuffersu Client.buffer(u__name__u __module__u __qualname__u__init__ureadubuffer(u __locals__((u __class__u3/home/prologic/work/circuits/tests/web/test_http.pyuClient s uClientcBs |EeZdZddZdS(uRootcCsdS(Nu Hello World!((uself((u3/home/prologic/work/circuits/tests/web/test_http.pyuindexsu Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u3/home/prologic/work/circuits/tests/web/test_http.pyuRootsuRootc CsVt}t}||7}|jt|jjj\}}}}|jt||t j }d}|||} | sEddidt j kst j|rt j|ndd6t j|d6dt j kst jt rt jt ndd6t j| d 6t j|d 6} tt j| nd}}} |jtd |jtd t j }d }|||} | saddidt j kst j|rt j|ndd6t j|d6dt j kst jt rt jt ndd6t j| d 6t j|d 6} tt j| nd}}} |j|jjdjdd} d} | | k}|sHt jd|fd| | fit j| d6dt j kst j| rt j| ndd6} di| d 6}tt j|nd}} dS(Nu connecteduuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }u transportupy3upy2upytestupy0upy7upy5sGET / HTTP/1.1 sContent-Type: text/plain udoneuclientuutf-8u iuHTTP/1.1 200 OKu==u%(py0)s == %(py3)susuassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(u TCPClientuClientustartu parse_urluserveruhttpubaseufireuconnectupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuwriteustopubufferudecodeusplitu_call_reprcompare(uwebappu transportuclientuhostuporturesourceusecureu @py_assert1u @py_assert4u @py_assert6u @py_format8usu @py_assert2u @py_format4u @py_format6((u3/home/prologic/work/circuits/tests/web/test_http.pyutest!s>    !   " lutest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsu Componentu circuits.webu Controllerucircuits.web.clientu parse_urlucircuits.net.socketsu TCPClientucircuits.net.eventsuconnectuwriteuClientuRootutest(((u3/home/prologic/work/circuits/tests/web/test_http.pyus  circuits-3.1.0/tests/web/__pycache__/test_websockets.cpython-32-PYTEST.pyc0000644000014400001440000001712512414363276027356 0ustar prologicusers00000000000000l ?TN c@sddlmZddlZddljjZddlm Z ddl m Z ddl m Z ddlmZmZddlmZmZdd lmZGd d e ZGd d e ZGdde ZdZdS(i(uprint_functionN(u Component(uServer(u Controller(ucloseuwrite(uWebSocketClientuWebSocketsDispatcheri(uurlopencBs8|EeZdZdZdZdZdZdS(uwsservercCs g|_dS(N(uclients(uself((u9/home/prologic/work/circuits/tests/web/test_websockets.pyuinitscCsF|jj|td|||jt|dj||dS(NuWebSocket Client Connected:uWelcome {0:s}:{1:d}(uclientsuappenduprintufireuwriteuformat(uselfusockuhostuport((u9/home/prologic/work/circuits/tests/web/test_websockets.pyuconnectscCs|jj|dS(N(uclientsuremove(uselfusock((u9/home/prologic/work/circuits/tests/web/test_websockets.pyu disconnectscCs|jt|d|dS(Nu Received: (ufireuwrite(uselfusockudata((u9/home/prologic/work/circuits/tests/web/test_websockets.pyuread sN(u__name__u __module__uchanneluinituconnectu disconnecturead(u __locals__((u9/home/prologic/work/circuits/tests/web/test_websockets.pyuEchos    uEchocBs|EeZdZdS(cCsdS(Nu Hello World!((uself((u9/home/prologic/work/circuits/tests/web/test_websockets.pyuindex&sN(u__name__u __module__uindex(u __locals__((u9/home/prologic/work/circuits/tests/web/test_websockets.pyuRoot$s uRootcBs&|EeZdZdZdZdS(uwscOs d|_dS(N(uNoneuresponse(uselfuargsukwargs((u9/home/prologic/work/circuits/tests/web/test_websockets.pyuinit.scCs ||_dS(N(uresponse(uselfudata((u9/home/prologic/work/circuits/tests/web/test_websockets.pyuread1sN(u__name__u __module__uchanneluinituread(u __locals__((u9/home/prologic/work/circuits/tests/web/test_websockets.pyuClient*s  uClientcCsptdj|}|jdtj|}tj||jdddt|jjj}|j }d}||k}|s%t j d+|fd,||fit j |d 6d t jkst j|rt j |nd d 6} d-i| d6} tt j| nd}}|jtdj||jddddj|j|j} t| j|tj|} |jddd|jddd|j}t|} d}| |k}|st j d.|fd/| |fit j |d 6dt jksAt j|rPt j |ndd6dt jksxt jtrt j tndd 6t j |d6t j | d6}d0i|d6}tt j|nd}} }}|jddd| j}|j}d}||}|sd dit j |d 6d!t jkset j| rtt j | nd!d 6t j |d"6t j |d6t j |d#6}tt j|nd}}}}|j| jtd$d|jddd| j}d%} || k}|st j d1|fd2|| fit j |d 6d!t jkst j| rt j | nd!d 6t j | d6} d3i| d(6}tt j|nd}}} t|jjj}|j }d}||k}|st j d4|fd5||fit j |d 6d t jkskt j|rzt j |nd d 6} d6i| d6} tt j| nd}}|j}t|} d}| |k}|st j d7|fd8| |fit j |d 6dt jks7t j|rFt j |ndd6dt jksnt jtr}t j tndd 6t j |d6t j | d6}d9i|d6}tt j|nd}} }}| jt d|jd)dd|j}t|} d}| |k}|s"t j d:|fd;| |fit j |d 6dt jkst j|rt j |ndd6dt jkst jtrt j tndd 6t j |d6t j | d6}d<i|d6}tt j|nd}} }}| j!|jd*|j|j!|jd*dS(=Niureadyu registereduchanneluwsservers Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u /websocketuwebuws://{0:s}:{1:d}/websocketuwsclientu connectediuM%(py5)s {%(py5)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.clients }) } == %(py8)suechoupy1ulenupy8uassert %(py10)supy10ureaduwsuWelcomeujassert %(py8)s {%(py8)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.startswith }(%(py6)s) }upy2uclientupy6upy4uHello!uReceived: Hello!u0%(py2)s {%(py2)s = %(py0)s.response } == %(py5)suassert %(py7)supy7u disconnectu unregistered(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(uM%(py5)s {%(py5)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.clients }) } == %(py8)suassert %(py10)s(u==(u0%(py2)s {%(py2)s = %(py0)s.response } == %(py5)suassert %(py7)s(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(uM%(py5)s {%(py5)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.clients }) } == %(py8)suassert %(py10)s(u==(uM%(py5)s {%(py5)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.clients }) } == %(py8)suassert %(py10)s("uServeruregisteruwaituEchouRootuurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuclearuWebSocketsDispatcheruformatuhostuportuWebSocketClientuClientuclientsulenuresponseu startswithufireuwriteucloseu unregister(umanageruwatcheruwebappuserveruechoufusu @py_assert2u @py_assert1u @py_format4u @py_format6uuriuclientu @py_assert4u @py_assert7u @py_assert6u @py_format9u @py_format11u @py_assert3u @py_assert5u @py_format8((u9/home/prologic/work/circuits/tests/web/test_websockets.pyutest5s   l         |  l         (u __future__uprint_functionubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsu Componentucircuits.web.serversuServerucircuits.web.controllersu Controllerucircuits.net.socketsucloseuwriteucircuits.web.websocketsuWebSocketClientuWebSocketsDispatcheruhelpersuurlopenuEchouRootuClientutest(((u9/home/prologic/work/circuits/tests/web/test_websockets.pyus  circuits-3.1.0/tests/web/__pycache__/conftest.cpython-33.pyc0000644000014400001440000001063112414363410024727 0ustar prologicusers00000000000000 ?T9c@sdZddlZddlZddlmZddlmZmZddlm Z m Z m Z ddl m Z mZejjejjedZGdd d e ZGd d d e Zejd d ddZejd d ddZdS(upy.test configiN(uclose(uServeruStatic(uhandleru ComponentuDebugger(uClienturequestustaticcBs&|EeZdZdZddZdS(uWebAppuwebcCsAd|_tdj||_tdtddj|dS(Niu/staticu dirlistingFT(uFalseucloseduServeruregisteruserveruStaticuDOCROOTuTrue(uself((u2/home/prologic/work/circuits/tests/web/conftest.pyuinits u WebApp.initN(u__name__u __module__u __qualname__uchanneluinit(u __locals__((u2/home/prologic/work/circuits/tests/web/conftest.pyuWebAppsuWebAppcBsV|EeZdZddZd iddZeddddd d d Zd S( u WebClientcOs d|_dS(NF(uFalseuclosed(uselfuargsukwargs((u2/home/prologic/work/circuits/tests/web/conftest.pyuinit!suWebClient.initcCsPtj|dd|j}|jt|||||jsIt|jS(Nuresponseuchannel(upytestu WaitEventuchannelufireurequestuwaituAssertionErroruresponse(uselfumethodupathubodyuheadersuwaiter((u2/home/prologic/work/circuits/tests/web/conftest.pyu__call__$suWebClient.__call__ucloseduchannelu*upriorityg?cCs d|_dS(NT(uTrueuclosed(uself((u2/home/prologic/work/circuits/tests/web/conftest.pyu _on_closed+suWebClient._on_closedN(u__name__u __module__u __qualname__uinituNoneu__call__uhandleru _on_closed(u __locals__((u2/home/prologic/work/circuits/tests/web/conftest.pyu WebClients u WebClientuscopeumodulecstt|jdrZddlm}t|jd}|i|d6jnt|jdd}|dk r|jn|jj j rt jnt j d}j|jstfdd}|j|S( Nu applicationi(uGatewayu/uRootureadycs$jtjjdS(N(ufireucloseuserverustop((uwebapp(u2/home/prologic/work/circuits/tests/web/conftest.pyu finalizerDsuwebapp..finalizer(uWebAppuhasattrumoduleucircuits.web.wsgiuGatewayugetattruregisteruNoneuconfiguoptionuverboseuDebuggerupytestu WaitEventustartuwaituAssertionErroru addfinalizer(urequestuGatewayu applicationuRootuwaiteru finalizer((uwebappu2/home/prologic/work/circuits/tests/web/conftest.pyuwebapp0s     uwebappcsfttjddj}j||jsCtfdd}|j|S(NureadyuchannelcsjdS(N(u unregister((u webclient(u2/home/prologic/work/circuits/tests/web/conftest.pyu finalizerTsuwebclient..finalizer(u WebClientupytestu WaitEventuchanneluregisteruwaituAssertionErroru addfinalizer(urequestuwebappuwaiteru finalizer((u webclientu2/home/prologic/work/circuits/tests/web/conftest.pyu webclientMs   u webclient(u__doc__uosupytestucircuits.net.socketsucloseu circuits.webuServeruStaticucircuitsuhandleru ComponentuDebuggerucircuits.web.clientuClienturequestupathujoinudirnameu__file__uDOCROOTuWebAppu WebClientufixtureuwebappu webclient(((u2/home/prologic/work/circuits/tests/web/conftest.pyus  ! circuits-3.1.0/tests/web/__pycache__/test_json.cpython-32-PYTEST.pyc0000644000014400001440000001064112414363276026152 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlmZddlm Z m Z ddl m Z m Z mZddl mZGdde Zd Zd ZdS( iN(uloads(uJSONControlleruSessionsi(uurlopenu build_openeruHTTPCookieProcessor(u CookieJarcBs#|EeZdZddZdS(cCsidd6dd6S(Nusuccessu Hello World!umessageT(uTrue(uself((u3/home/prologic/work/circuits/tests/web/test_json.pyuindex scCsA|r||jds  circuits-3.1.0/tests/web/__pycache__/test_core.cpython-27-PYTEST.pyc0000644000014400001440000002540212414363102026122 0ustar prologicusers00000000000000 ?T$ c@s5ddlZddljjZddlZddlmZm Z ddl m Z ddl m Z mZmZde fdYZdZd Zd Zejjd d gifed fd dgifedfd gidd6fedfgdZdZdZdZdZdS(iN(tbtu(t Controlleri(t urlencodeturlopent HTTPErrortRootcBsMeZdZdZdddZdZdZdZdZ RS(cCsdS(Ns Hello World!((tself((s3/home/prologic/work/circuits/tests/web/test_core.pytindexscOsdjt|t|S(Ns{0} {1}(tformattrepr(Rtargstkwargs((s3/home/prologic/work/circuits/tests/web/test_core.pyt test_argsscCsdj||S(Ns a={0} b={1}(R (RtaR((s3/home/prologic/work/circuits/tests/web/test_core.pyttest_default_argsscCs |jdS(Nt/(tredirect(R((s3/home/prologic/work/circuits/tests/web/test_core.pyt test_redirectscCs |jS(N(t forbidden(R((s3/home/prologic/work/circuits/tests/web/test_core.pyttest_forbiddenscCs |jS(N(tnotfound(R((s3/home/prologic/work/circuits/tests/web/test_core.pyt test_notfoundscCs tdS(N(t Exception(R((s3/home/prologic/work/circuits/tests/web/test_core.pyt test_failure!sN( t__name__t __module__RR tNoneRRRRR(((s3/home/prologic/work/circuits/tests/web/test_core.pyR s     cCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationR(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((s3/home/prologic/work/circuits/tests/web/test_core.pyt test_root%s  lcCs<ytd|jjjWntk r}|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksttj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}n`Xts8didt j kstj trtjtndd6}t tj |ndS(Ns%s/foois==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)stpy2teRR Rsassert %(py7)stpy7s Not Founds+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)stFalse(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)ssassert %(py7)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py7)ssassert %(py0)s(RR!R"R#RtcodeR%R&R'R(R)R*R+R,RtmsgR7(R-R5R0t @py_assert4t @py_assert3R2t @py_format8t @py_format1((s3/home/prologic/work/circuits/tests/web/test_core.pyttest_404+s,  |  |Ac Csd}idd6dd6dd6}d|jjjdj|f}t|jd }t||}|jjd }|d }t |}||k}|st j d|fd||fit j |d6dt jkst jt rt j t ndd6dt jks-t j|r<t j |ndd6t j |d6} di| d6} tt j| nd}}}|d}t |}||k}|st j d|fd||fit j |d6dt jkst jt rt j t ndd6dt jks?t j|rNt j |ndd6t j |d6} di| d6} tt j| nd}}}dS( Nt1t2t3tonettwotthrees%s/test_args/%sRsutf-8s is==s0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)sR4tevalRR tpy6tpy4Rsassert %(py8)stpy8iR (R?R@RA(s==(s0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)ssassert %(py8)s(s==(s0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)ssassert %(py8)s(R!R"R#tjoinRtencodeRR$tsplitRER%R&R'R(R)R*R+R,R( R-R R turltdataR.R0R;t @py_assert5t @py_format7t @py_format9((s3/home/prologic/work/circuits/tests/web/test_core.pyR 5s,"  s data,expectedR?s a=1 b=NoneR@sa=1 b=2Rc Csr|\}}tdj|jjjtdj|}t|jd}t||}|j }|}||k} | s`t j d| fd||fit j |d6dt jkst j|rt j |ndd6d t jks t j|rt j |nd d 6t j |d 6} di| d6} tt j| nd}}} dS(Ns{0:s}/test_default_args/{1:s}Rsutf-8s==sC%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.read }() } == %(py6)sR4R.RtexpectedRFRGRsassert %(py8)sRH(s==(sC%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.read }() } == %(py6)ssassert %(py8)s(RR R!R"R#RIRRJRR$R%R&R'R(R)R*R+R,R( R-RMRQR R RLR.R0R;RNRORP((s3/home/prologic/work/circuits/tests/web/test_core.pyR@s    cCstd|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS(Ns%s/test_redirects Hello World!s==s%(py0)s == %(py3)sRRRRsassert %(py5)sR (s==(s%(py0)s == %(py3)ssassert %(py5)s(RR!R"R#R$R%R&R'R(R)R*R+R,R(R-R.RR/R0R1R2((s3/home/prologic/work/circuits/tests/web/test_core.pyRPs  lcCs<ytd|jjjWntk r}|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksttj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}n`Xts8didt j kstj trtjtndd6}t tj |ndS(Ns%s/test_forbiddenis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sR4R5RR Rsassert %(py7)sR6t Forbiddens+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)sR7(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)ssassert %(py7)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py7)ssassert %(py0)s(RR!R"R#RR8R%R&R'R(R)R*R+R,RR9R7(R-R5R0R:R;R2R<R=((s3/home/prologic/work/circuits/tests/web/test_core.pyRVs,  |  |AcCs<ytd|jjjWntk r}|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksttj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}n`Xts8didt j kstj trtjtndd6}t tj |ndS(Ns%s/test_notfoundis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sR4R5RR Rsassert %(py7)sR6s Not Founds+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)sR7(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)ssassert %(py7)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py7)ssassert %(py0)s(RR!R"R#RR8R%R&R'R(R)R*R+R,RR9R7(R-R5R0R:R;R2R<R=((s3/home/prologic/work/circuits/tests/web/test_core.pyR`s,  |  |AcCshytd|jjjWntk r}|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}n`Xtsddid t j ks2tj trAtjtnd d6}t tj |ndS(Ns%s/test_failureis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sR4R5RR Rsassert %(py7)sR6sassert %(py0)sR7(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)ssassert %(py7)ssassert %(py0)s(RR!R"R#RR8R%R&R'R(R)R*R+R,RR7(R-R5R0R:R;R2R<R=((s3/home/prologic/work/circuits/tests/web/test_core.pyRjs  |A(t __builtin__R(t_pytest.assertion.rewritet assertiontrewriteR%tpytestt circuits.sixRRt circuits.webRthelpersRRRRR3R>R tmarkt parametrizeRRRRR(((s3/home/prologic/work/circuits/tests/web/test_core.pyts"    1  circuits-3.1.0/tests/web/__pycache__/test_xmlrpc.cpython-33-PYTEST.pyc0000644000014400001440000000567412414363412026511 0ustar prologicusers00000000000000 ?T c @sddlZddljjZyddlmZWn"ek rVddl mZYnXddl m Z ddl m Z mZddlmZGddde ZGd d d e Zd d ZdS( iN(u ServerProxy(u Component(u ControlleruXMLRPCi(uurlopencBs |EeZdZddZdS(uAppcCs t|S(N(ueval(uselfus((u5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyuevalsuApp.evalN(u__name__u __module__u __qualname__ueval(u __locals__((u5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyuAppsuAppcBs |EeZdZddZdS(uRootcCsdS(Nu Hello World!((uself((u5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyuindexsu Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyuRootsuRootc Cs td}t}|j||j|t|jjj}|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nd}}d |jjj} t| d d} | jd } d}| |k}|stj d|fd| |fitj |d6dt j kstj | rtj | ndd6}di|d 6}ttj|nd}}|j|jdS(Nu/rpcs Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u%s/rpcu allow_noneu1 + 2iur(u==(u%(py0)s == %(py3)suassert %(py5)sT(u==(u%(py0)s == %(py3)suassert %(py5)s(uXMLRPCuAppuregisteruurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu ServerProxyuTrueuevalu unregister( uwebappurpcutestufusu @py_assert2u @py_assert1u @py_format4u @py_format6uurluserverur((u5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyutests2      l  l  utest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru xmlrpc.clientu ServerProxyu ImportErroru xmlrpclibucircuitsu Componentu circuits.webu ControlleruXMLRPCuhelpersuurlopenuAppuRootutest(((u5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyus  circuits-3.1.0/tests/web/__pycache__/test_disps.cpython-26-PYTEST.pyc0000644000014400001440000001013612407376151026323 0ustar prologicusers00000000000000 ?Tc @sddkZddkiiZddklZddkl Z ddk l Z ddk l Z lZddklZddklZlZd e fd YZd efd YZd efdYZdefdYZdZdS(iN(tManager(thandler(t BaseComponent(t BaseServert Controller(t Dispatcheri(turlopenturljointPrefixingDispatchercBs2eZdZdZeddddZRS(s3Forward to another Dispatcher based on the channel.cCstt|id|dS(Ntchannel(tsuperRt__init__(tselfR ((s4/home/prologic/work/circuits/tests/web/test_disps.pyR strequesttpriorityg?cCs5|iid}td|i|}||_dS(Nt/s/%s/(tpathtstripRR (R teventR tresponseR((s4/home/prologic/work/circuits/tests/web/test_disps.pyt _on_requests(t__name__t __module__t__doc__R RR(((s4/home/prologic/work/circuits/tests/web/test_disps.pyR s t DummyRootcBseZdZdZRS(RcCsdS(NsNot used((R ((s4/home/prologic/work/circuits/tests/web/test_disps.pytindexs(RRR R(((s4/home/prologic/work/circuits/tests/web/test_disps.pyRstRoot1cBseZdZdZRS(s/site1cCsdS(NsHello from site 1!((R ((s4/home/prologic/work/circuits/tests/web/test_disps.pyR's(RRR R(((s4/home/prologic/work/circuits/tests/web/test_disps.pyR#stRoot2cBseZdZdZRS(s/site2cCsdS(NsHello from site 2!((R ((s4/home/prologic/work/circuits/tests/web/test_disps.pyR/s(RRR R(((s4/home/prologic/work/circuits/tests/web/test_disps.pyR+sc Cst}tddd}|i|tddi|tddi|ti|tddd}|i|tddi|tddi|ti|ti||it |i i dd}|i }d}||j}|pt id|fd||fhd tijpt i|ot i|nd d 6t i|d 6}dh|d6}tt i|nd}}t |i i dd}|i }d}||j}|pt id|fd||fhd tijpt i|ot i|nd d 6t i|d 6}dh|d6}tt i|nd}}dS(NiR tsite1t localhosttsite2ttimeoutisHello from site 1!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5sHello from site 2!(s localhosti(s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s(RRtregisterRRRRRtstartRthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone( tmanagertserver1tserver2tfR t @py_assert2t @py_assert1t @py_format4t @py_format6((s4/home/prologic/work/circuits/tests/web/test_disps.pyt test_disps3s>      o   o(t __builtin__R+t_pytest.assertion.rewritet assertiontrewriteR)tcircuits.core.managerRtcircuits.core.handlersRtcircuits.core.componentsRt circuits.webRRt#circuits.web.dispatchers.dispatcherRthelpersRRRRRRR:(((s4/home/prologic/work/circuits/tests/web/test_disps.pyts circuits-3.1.0/tests/web/__pycache__/multipartform.cpython-34.pyc0000644000014400001440000000415412414363522026017 0ustar prologicusers00000000000000 ?Tj@sFddlZddlmZddlmZGdddeZdS)N) guess_type)_make_boundaryc@sCeZdZddZddZdddZdd ZdS) MultiPartFormcCsg|_t|_dS)N)filesrboundary)selfr7/home/prologic/work/circuits/tests/web/multipartform.py__init__ s zMultiPartForm.__init__cCs d|jS)Nz multipart/form-data; boundary=%s)r)rrrr get_content_type szMultiPartForm.get_content_typeNcCsQ|j}|dkr1t|dp+d}n|jj||||fdS)Nrzapplication/octet-stream)readrrappend)r fieldnamefilenamefdmimetypebodyrrr add_files  zMultiPartForm.add_filecsg}td|jd|jfddt|jD|jfdd|jDttj|}|jtd|jdt}x+|D]#}||7}|tdd7}qW|S)Nz--%sasciic3sU|]K\}}td|dtt|tr=|n t|dgVqdS)z)Content-Disposition: form-data; name="%s"rN) bytearraybytes isinstance).0kv) part_boundaryrr sz&MultiPartForm.bytes..c3sq|]g\}}}}td||fdtd|dtt|trY|n t|dgVqdS)z8Content-Disposition: form-data; name="%s"; filename="%s"rzContent-Type: %sN)rrr)rrr content_typer)rrr r&s z--%s--z ) rrextendlistitemsr itertoolschainr )rpartsZ flattenedresitemr)rr rs    zMultiPartForm.bytes)__name__ __module__ __qualname__r r rrrrrr rs   r)r! mimetypesremail.generatorrdictrrrrr s circuits-3.1.0/tests/web/__pycache__/test_http.cpython-32-PYTEST.pyc0000644000014400001440000001006012414363276026153 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZddlmZmZGddeZGd d e Zd ZdS( iN(u Component(u Controller(u parse_url(u TCPClient(uconnectuwritecs/|EeZfdZdZdZS(cs/tt|j||g|_d|_dS(NF(usuperuClientu__init__u_bufferuFalseudone(uselfuargsukwargs(u __class__(u3/home/prologic/work/circuits/tests/web/test_http.pyu__init__ s cCs5|jj||jddkr1d|_ndS(Ns iiT(u_bufferuappendufinduTrueudone(uselfudata((u3/home/prologic/work/circuits/tests/web/test_http.pyureadscCsdj|jS(Ns(ujoinu_buffer(uself((u3/home/prologic/work/circuits/tests/web/test_http.pyubuffers(u__name__u __module__u__init__ureadubuffer(u __locals__((u __class__u3/home/prologic/work/circuits/tests/web/test_http.pyuClient s  uClientcBs|EeZdZdS(cCsdS(Nu Hello World!((uself((u3/home/prologic/work/circuits/tests/web/test_http.pyuindexsN(u__name__u __module__uindex(u __locals__((u3/home/prologic/work/circuits/tests/web/test_http.pyuRoots uRootc CsVt}t}||7}|jt|jjj\}}}}|jt||t j }d}|||} | sEddidt j kst j|rt j|ndd6t j|d6dt j kst jt rt jt ndd6t j| d 6t j|d 6} tt j| nd}}} |jtd |jtd t j }d }|||} | saddidt j kst j|rt j|ndd6t j|d6dt j kst jt rt jt ndd6t j| d 6t j|d 6} tt j| nd}}} |j|jjdjdd} d} | | k}|sHt jd|fd| | fit j| d6dt j kst j| rt j| ndd6} di| d 6}tt j|nd}} dS(Nu connecteduuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }u transportupy3upy2upytestupy0upy7upy5sGET / HTTP/1.1 sContent-Type: text/plain udoneuclientuutf-8u iuHTTP/1.1 200 OKu==u%(py0)s == %(py3)susuassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(u TCPClientuClientustartu parse_urluserveruhttpubaseufireuconnectupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuwriteustopubufferudecodeusplitu_call_reprcompare(uwebappu transportuclientuhostuporturesourceusecureu @py_assert1u @py_assert4u @py_assert6u @py_format8usu @py_assert2u @py_format4u @py_format6((u3/home/prologic/work/circuits/tests/web/test_http.pyutest!s>    !   " l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsu Componentu circuits.webu Controllerucircuits.web.clientu parse_urlucircuits.net.socketsu TCPClientucircuits.net.eventsuconnectuwriteuClientuRootutest(((u3/home/prologic/work/circuits/tests/web/test_http.pyus  circuits-3.1.0/tests/web/__pycache__/test_cookies.cpython-26-PYTEST.pyc0000644000014400001440000000414312407376151026636 0ustar prologicusers00000000000000 ?Tc@swddkZddkiiZddklZddkl Z l Z ddkl Z defdYZ dZ dS( iN(t Controlleri(t build_openertHTTPCookieProcessor(t CookieJartRootcBseZdZRS(cCs=|iid}|o|iodSt|ids  circuits-3.1.0/tests/web/__pycache__/test_conn.cpython-26-PYTEST.pyc0000644000014400001440000000517512407376151026145 0ustar prologicusers00000000000000 ?Tc @sddkZddkiiZyddklZWn#ej oddk lZnXddk l Z de fdYZ dZ dS(iN(tHTTPConnection(t ControllertRootcBseZdZRS(cCsdS(Ns Hello World!((tself((s3/home/prologic/work/circuits/tests/web/test_conn.pytindex s(t__name__t __module__R(((s3/home/prologic/work/circuits/tests/web/test_conn.pyR sc Cst|ii|ii}t|_|ixtdD]}|idd|i }|i }d}||j}|pt i d|fd||fhdt ijpt i|ot i|ndd6t i|d 6t i|d 6}d h|d 6}tt i|nd}}}|i}d }||j}|pt i d|fd||fhdt ijpt i|ot i|ndd6t i|d 6t i|d 6}d h|d 6}tt i|nd}}}|i} d} | | j}|pt i d|fd| | fhdt ijpt i| ot i| ndd6t i| d6} dh| d 6}tt i|nd}} q;W|idS(NitGETt/is==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)stresponsetpy0tpy2tpy5sassert %(py7)stpy7tOKs.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss Hello World!s%(py0)s == %(py3)ststpy3sassert %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s(s==(s%(py0)s == %(py3)s(RtserverthosttporttFalset auto_opentconnecttrangetrequestt getresponsetstatust @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetreasontreadtclose( twebappt connectiontiR t @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8Rt @py_assert2t @py_format4((s3/home/prologic/work/circuits/tests/web/test_conn.pyttests@          o(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthttplibRt ImportErrort http.clientt circuits.webRRR1(((s3/home/prologic/work/circuits/tests/web/test_conn.pyts circuits-3.1.0/tests/web/__pycache__/test_expose.cpython-32-PYTEST.pyc0000644000014400001440000000600112414363276026477 0ustar prologicusers00000000000000l ?Tc@sdddlZddljjZddlmZmZddl m Z GddeZ dZ dS(iN(uexposeu Controlleri(uurlopencBsD|EeZdZeddZedddZdS(cCsdS(Nu Hello World!((uself((u5/home/prologic/work/circuits/tests/web/test_expose.pyuindexsu+testcCsdS(Nutest((uself((u5/home/prologic/work/circuits/tests/web/test_expose.pyutest sufoo+barufoo_barcCsdS(Nufoobar((uself((u5/home/prologic/work/circuits/tests/web/test_expose.pyufoobarsN(u__name__u __module__uindexuexposeutestufoobar(u __locals__((u5/home/prologic/work/circuits/tests/web/test_expose.pyuRoots  uRootc Cspt|jjj}|j}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}td |jjj}|j}d }||k}|stjd|fd||fitj|d6dtj ksgtj |rvtj|ndd6}di|d 6}t tj |nd}}td |jjj}|j}d }||k}|stjd|fd||fitj|d6dtj ksCtj |rRtj|ndd6}di|d 6}t tj |nd}}td|jjj}|j}d }||k}|sbtjd|fd||fitj|d6dtj kstj |r.tj|ndd6}di|d 6}t tj |nd}}dS(Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u%s/+teststestu %s/foo+barsfoobaru %s/foo_bar(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u5/home/prologic/work/circuits/tests/web/test_expose.pyutestsH  l   l   l   l( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webuexposeu ControlleruhelpersuurlopenuRootutest(((u5/home/prologic/work/circuits/tests/web/test_expose.pyus circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_null_response.cpython-32-PYTEST.pyc0000644000014400001440000000374612414363276032653 0ustar prologicusers00000000000000l ?Tc@sgddlZddljjZddlmZddlm Z Gdde Z dZ dZ dS( iNi(uurlopen(u ControllercBs|EeZdZdS(cOsdS(NuERROR((uselfuargsukwargs((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pyuindex sN(u__name__u __module__uindex(u __locals__((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pyuRoots uRootcCsd}||gdgS(Nu200 OKu((uenvironustart_responseustatus((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pyu applications cCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Nsu==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pyutests  l( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhelpersuurlopenu circuits.webu ControlleruRootu applicationutest(((uI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pyus  circuits-3.1.0/tests/web/__pycache__/test_client.cpython-26-PYTEST.pyc0000644000014400001440000000477712407376151026475 0ustar prologicusers00000000000000 ?Tc@sgddkZddkiiZddklZddkl Z l Z defdYZ dZ dS(iN(t Controller(tClienttrequesttRootcBseZdZRS(cCsdS(Ns Hello World!((tself((s5/home/prologic/work/circuits/tests/web/test_client.pytindex s(t__name__t __module__R(((s5/home/prologic/work/circuits/tests/web/test_client.pyRsc Cst}|i|itd|iiix|idjoq5W|i |i}|i }d}||j}|pt i d|fd||fhdt ijpt i|ot i|ndd6t i|d6t i|d6}d h|d 6}tt i|nd}}}|i}d }||j}|pt i d|fd||fhdt ijpt i|ot i|ndd6t i|d6t i|d6}d h|d 6}tt i|nd}}}|i}d } || j}|pt i d|fd|| fhdt ijpt i|ot i|ndd6t i| d6} dh| d6}tt i|nd}} dS(NtGETis==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)stresponsetpy0tpy2tpy5sassert %(py7)stpy7tOKs.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss Hello World!s%(py0)s == %(py3)ststpy3sassert %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s(s==(s%(py0)s == %(py3)s(RtstarttfireRtserverthttptbaseR tNonetstoptstatust @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtreasontread( twebapptclientR t @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8Rt @py_assert2t @py_format4((s5/home/prologic/work/circuits/tests/web/test_client.pyttests@          o( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRtcircuits.web.clientRRRR,(((s5/home/prologic/work/circuits/tests/web/test_client.pyts circuits-3.1.0/tests/web/__pycache__/test_request_failure.cpython-27-PYTEST.pyc0000644000014400001440000000412612414363102030371 0ustar prologicusers00000000000000 ?Tc@swddlZddljjZddlmZmZddl m Z ddl m Z de fdYZ dZdS( iNi(turlopent HTTPError(thandler(t BaseComponenttRootcBs)eZdZeddddZRS(twebtrequesttpriorityg?cCs tdS(N(t Exception(tselfRtresponse((s>/home/prologic/work/circuits/tests/web/test_request_failure.pyR s(t__name__t __module__tchannelRR(((s>/home/prologic/work/circuits/tests/web/test_request_failure.pyRscCsty'tj|t|jjjWntk r}|j}d}||k}|stj d |fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}di|d 6}ttj|nd}}}n`Xtspdid t j ks>tj trMtj tnd d6}ttj|ndS(Nis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)stpy2tetpy0tpy5tsassert %(py7)stpy7sassert %(py0)stFalse(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)ssassert %(py7)ssassert %(py0)s(RtregisterRtserverthttptbaseRtcodet @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNoneR(twebappRt @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8t @py_format1((s>/home/prologic/work/circuits/tests/web/test_request_failure.pyttests  |A(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthelpersRRtcircuits.core.handlersRtcircuits.core.componentsRRR*(((s>/home/prologic/work/circuits/tests/web/test_request_failure.pyts  circuits-3.1.0/tests/web/__pycache__/test_digestauth.cpython-27-PYTEST.pyc0000644000014400001440000000640712414363102027337 0ustar prologicusers00000000000000 ?T=c@sddlZddljjZddlZejd d krMejdnddl m Z ddl m Z m Z ddlmZmZdd lmZmZmZd e fd YZd ZdS(iNiisBroken on Python 3.3(t Controller(t check_autht digest_authi(t HTTPErrortHTTPDigestAuthHandler(turlopent build_openertinstall_openertRootcBseZdZRS(cCsKd}idd6}t|j|j||r2dSt|j|j||S(NtTesttadmins Hello World!(RtrequesttresponseR(tselftrealmtusers((s9/home/prologic/work/circuits/tests/web/test_digestauth.pytindexs  (t__name__t __module__R(((s9/home/prologic/work/circuits/tests/web/test_digestauth.pyRscCsZyt|jjj}Wntk r}|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksrtj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}n`Xts6didt j kstj trtjtndd6}t tj |nt} | jd|jjjddt| } t| t|jjj}|j} d} | | k}|sBtjd|fd| | fitj| d6dt j kstj | rtj| ndd6} di| d6}t tj |nd}} tddS( Nis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)stpy2tetpy0tpy5tsassert %(py7)stpy7t Unauthorizeds+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)stFalseR R s Hello World!s%(py0)s == %(py3)stpy3tssassert %(py5)s(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)ssassert %(py7)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py7)ssassert %(py0)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(RtserverthttptbaseRtcodet @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonetmsgRRt add_passwordRRtread(twebapptfRt @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8t @py_format1thandlertopenerRt @py_assert2t @py_format4((s9/home/prologic/work/circuits/tests/web/test_digestauth.pyttestsH  |  |A     l (ii(t __builtin__R$t_pytest.assertion.rewritet assertiontrewriteR!tpytesttPYVERtskipt circuits.webRtcircuits.web.toolsRRthelpersRRRRRRR9(((s9/home/prologic/work/circuits/tests/web/test_digestauth.pyts   circuits-3.1.0/tests/web/__pycache__/test_bad_requests.cpython-34-PYTEST.pyc0000644000014400001440000000375112414363522027662 0ustar prologicusers00000000000000 ?T @sddlZddljjZyddlmZWn"ek rVddl mZYnXddl m Z ddl m Z Gddde ZddZdS) N)HTTPConnection)b) Controllerc@seZdZddZdS)RootcCsdS)Nz Hello World!)selfrr;/home/prologic/work/circuits/tests/web/test_bad_requests.pyindexsz Root.indexN)__name__ __module__ __qualname__r rrrrr s rcCs't|jj|jj}|j|jddd|jdd|jtd|j |j }|j }d}||k}|s7t j d|fd||fit j|d 6t j|d 6d tjkst j|rt j|nd d 6}di|d6}tt j|nt}}}|j}d}||k}|s t j d|fd||fit j|d 6t j|d 6d tjkst j|rt j|nd d 6}di|d6}tt j|nt}}}|jdS)NGET/zHTTP/1.1 ConnectionclosezX-Fooi==.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)spy5py2responsepy0assert %(py7)spy7z Bad Request.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s)r)rr)r)rr)rserverhostportconnect putrequest putheader_outputr endheaders getresponsestatus @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonereasonr)webapp connectionr @py_assert1 @py_assert4 @py_assert3 @py_format6 @py_format8rrrtest_bad_headers0     |  |r6)builtinsr(_pytest.assertion.rewrite assertionrewriter%httplibr ImportError http.clientZ circuits.sixr circuits.webrrr6rrrrs  circuits-3.1.0/tests/web/__pycache__/test_vpath_args.cpython-27-PYTEST.pyc0000644000014400001440000000467212414363102027336 0ustar prologicusers00000000000000 ?Tc@s}ddlZddljjZddlmZmZddl m Z defdYZ defdYZ d Z dS( iN(texposet Controlleri(turlopentRootcBseZeddZRS(stest.txtcCsdS(Ns Hello world!((tself((s9/home/prologic/work/circuits/tests/web/test_vpath_args.pytindex s(t__name__t __module__RR(((s9/home/prologic/work/circuits/tests/web/test_vpath_args.pyRstLeafcBs&eZdZedddZRS(s/teststest.txtcCs|dkrdSd|SdS(Ns Hello world!s Hello world! (tNone(Rtvpath((s9/home/prologic/work/circuits/tests/web/test_vpath_args.pyRs N(RRtchannelRR R(((s9/home/prologic/work/circuits/tests/web/test_vpath_args.pyRs cCstj|t|jjjd}|j}d}||k}|stjd |fd ||fitj |d6dt j kstj |rtj |ndd6}di|d 6}t tj|nd}}t|jjjd }|j}d}||k}|stjd|fd||fitj |d6dt j ks{tj |rtj |ndd6}di|d 6}t tj|nd}}dS(Ns /test.txts Hello world!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5s/test/test.txt(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(RtregisterRtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationR (twebapptfR t @py_assert2t @py_assert1t @py_format4t @py_format6((s9/home/prologic/work/circuits/tests/web/test_vpath_args.pyttests&  l   l(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRRthelpersRRRR$(((s9/home/prologic/work/circuits/tests/web/test_vpath_args.pyts  circuits-3.1.0/tests/web/__pycache__/test_json.cpython-26-PYTEST.pyc0000644000014400001440000000745112407376151026160 0ustar prologicusers00000000000000 ?Tc @sddkZddkiiZddklZddkl Z l Z ddk l Z l Z lZddk lZde fdYZd Zd ZdS( iN(tloads(tJSONControllertSessionsi(turlopent build_openertHTTPCookieProcessor(t CookieJartRootcBseZdZddZRS(cCshtd6dd6S(Ntsuccesss Hello World!tmessage(tTrue(tself((s3/home/prologic/work/circuits/tests/web/test_json.pytindex scCsC|o||ids  circuits-3.1.0/tests/web/__pycache__/test_unicode.cpython-34-PYTEST.pyc0000644000014400001440000002075112414363522026626 0ustar prologicusers00000000000000 ?T @sddlZddljjZyddlmZWn"ek rVddl mZYnXddl m Z ddl m Z ddlmZmZddlmZGdd d e Zd d Zd d ZddZddZddZdS)N)HTTPConnection)b) Controller)Clientrequest)urlopenc@sLeZdZddZddZddZddZd d Zd S) RootcCsdS)Nz Hello World!)selfr r 6/home/prologic/work/circuits/tests/web/test_unicode.pyindexsz Root.indexcCs|jjjS)N)rbodyread)r r r r request_bodyszRoot.request_bodycCsdS)När )r r r r response_bodyszRoot.response_bodycCs|jjdS)NA)rheaders)r r r r request_headersszRoot.request_headerscCsd|jjd     |  |  rNc Cst|jj|jj}|j|jdd|j}|j}d}||k}|stj d|fd||fitj |d6tj |d6dt j kstj |rtj |ndd 6}di|d 6}ttj|nt}}}|j}d }||k}|stj d|fd||fitj |d6tj |d6dt j kstj |rtj |ndd 6}di|d 6}ttj|nt}}}|j}d}t|} || k}|stj d|fd|| fidt j ks[tj trjtj tndd6tj | d6dt j kstj |rtj |ndd 6tj |d6} di| d6} ttj| nt}}} |jdS) Nr9z/response_bodyr:r.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)sr<rrr r"assert %(py7)sr>r?.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)sr0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }rrrr!assert %(py8)sr$)r)rOrP)r)rQrP)r)rRrS)rr%rCrDrErrFrGr(r)r-r*r+r,r.r/r0rHrrrI) r1rJrr5rKr3rLrMrr4r6r7r r r test_response_body8s<    |  |  rTcCs0t|jj|jj}|jtd}idd6}|jdd|||j}|j}d}||k}|s&t j d|fd||fit j |d 6t j |d 6d t j kst j|rt j |nd d 6}di|d6} tt j| nt}}}|j}d}||k}|st j d|fd||fit j |d 6t j |d 6d t j kst j|rt j |nd d 6}di|d6} tt j| nt}}}|j} d}t|} | | k}|st j d|fd| | fidt j kszt jtrt j tndd 6t j | d6dt j kst j| rt j | ndd 6t j |d6} d i| d6} tt j| nt}}} |jdS)!Nr"rrr9z/request_headersr:r.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)sr<rrr assert %(py7)sr>r?.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }rrrr!assert %(py8)sr$)r)rUrV)r)rWrV)r)rXrY)rr%rCrDrErrrFrGr(r)r-r*r+r,r.r/r0rHrrI)r1rJrrrr5rKr3rLrMrr4r6r7r r r test_request_headersFs@      |  |  rZc Cs$t}|j|jtdd|jj|jjfx|jdkrTqBW|j}|j}d}||k}|s4t j d|fd||fit j |d6t j |d6dt j kst j|rt j |ndd 6t j |d 6}di|d 6}tt j|nt}}}}|j}|j}d}||k}|s%t j d |fd!||fit j |d6t j |d6dt j kst j|rt j |ndd 6t j |d 6}d"i|d 6}tt j|nt}}}}|jj}|jjjd} d} | | k}|st j d#|fd$| | fit j | d6dt j kst j| rt j | ndd 6} d%i| d6} tt j| nt}} d}t|}||k}|st j d&|fd'||fidt j ksxt jtrt j tndd6t j |d6dt j kst j|rt j |ndd 6t j |d 6} d(i| d6}tt j|nt}}}dS))Nr9zhttp://%s:%s/response_headersr:rL%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.status } == %(py7)srr>clientr r!r"assert %(py9)spy9r?L%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.reason } == %(py7)srr%(py0)s == %(py3)spy3aassert %(py5)sr<0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }rrrassert %(py8)sr$)r)r[r])r)r_r])r)r`rc)r)rdre)rstartfirerr%rCrDrrGr(r)r-r*r+r,r.r/r0rHrrgetr)r1r\r5r3 @py_assert6r4rM @py_format10rrb @py_assert2 @py_format4rLr6r7r r r test_response_headersVsX       l  rm)builtinsr*_pytest.assertion.rewrite assertionrewriter(httplibr ImportError http.clientZ circuits.sixr circuits.webrcircuits.web.clientrrhelpersrr r8rNrTrZrmr r r r s      circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_null_response.cpython-34-PYTEST.pyc0000644000014400001440000000266412414363523032646 0ustar prologicusers00000000000000 ?T@spddlZddljjZddlmZddlm Z Gddde Z ddZ d d Z dS) N)urlopen) Controllerc@seZdZddZdS)RootcOsdS)NERROR)selfargskwargsrrI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pyindex sz Root.indexN)__name__ __module__ __qualname__r rrrr rs rcCsd}||gdgS)Nz200 OKr)environstart_responsestatusrrr applications rcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS) N==%(py0)s == %(py3)spy3spy0rassert %(py5)spy5)r)rr)rserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)webappfr @py_assert2 @py_assert1 @py_format4 @py_format6rrr tests  lr0) builtinsr$_pytest.assertion.rewrite assertionrewriter!helpersr circuits.webrrrr0rrrr s  circuits-3.1.0/tests/web/__pycache__/test_static.cpython-34-PYTEST.pyc0000644000014400001440000002341612414363522026470 0ustar prologicusers00000000000000 ?T @s5ddlZddljjZddlmZyddlm Z Wn"e k rfddl m Z YnXddl m Z ddlmZddlmZmZmZGdd d e Zd d Zd d ZddZddZddZddZddZddZddZddZdS)N)path)HTTPConnection) Controller)DOCROOT)quoteurlopen HTTPErrorc@seZdZddZdS)RootcCsdS)Nz Hello World!)selfr r 5/home/prologic/work/circuits/tests/web/test_static.pyindexsz Root.indexN)__name__ __module__ __qualname__rr r r r r s r cCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS) Ns Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5)r)rr)rserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)webappfr @py_assert2 @py_assert1 @py_format4 @py_format6r r r tests  lr-c Cs3ytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}|j}d }||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}WYdd}~XnEXd}|s)ditj|d6}t tj |nt}dS)Nz%s/fooir,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)srpy2errassert %(py7)spy7z Not Found+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)sFassert %(py1)spy1)r)r.r1)r)r3r1r4)rrrrr coderrr r!r"r#r$r%r&msg) r'r0r* @py_assert4 @py_assert3r, @py_format8 @py_assert0 @py_format2r r r test_404s0  |  |!r=cCsd|jjj}t|}|jj}d}||k}|stjd |fd ||fitj|d6dt j kstj |rtj|ndd6}d i|d 6}t tj |nt}}dS)Nz%s/static/helloworld.txts Hello World!r%(py0)s == %(py3)srrrrassert %(py5)sr)r)r>r?)rrrrrstriprrr r!r"r#r$r%r&)r'urlr(rr)r*r+r,r r r test_file(s  lrBcCsSd|jjj}t|}|jj}tj}d}|t|}d}t ||}|j} | } || k} | r-t j df| fdf|| fi dt j kpt jt rt jt ndd6t j|d6t j|d 6t j| d 6d t j kp5t j|rGt j|nd d 6t j| d 6t j|d6t j|d6dt j kpt jtrt jtndd6dt j kpt jtrt jtndd6t j|d6} ddi| d6} tt j| nt} }}}}}} } dS)Nz%s/static/largefile.txtz largefile.txtrbrz%(py0)s == %(py18)s {%(py18)s = %(py16)s {%(py16)s = %(py14)s {%(py14)s = %(py2)s(%(py10)s {%(py10)s = %(py5)s {%(py5)s = %(py3)s.join }(%(py6)s, %(py8)s) }, %(py12)s) }.read }() }openr/py8py14py18rrpy16rpy12rpy6rrpy10rzassert %(py20)spy20)rrrrrr@rjoinrrDrrr!r"r#r r$r%r&)r'rAr(rr8 @py_assert7 @py_assert9 @py_assert11 @py_assert13 @py_assert15 @py_assert17r* @py_format19 @py_format21r r r test_largefile/s"   xrVc Cs3ytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}|j}d }||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}WYdd}~XnEXd}|s)ditj|d6}t tj |nt}dS)Nz%s/static/foo.txtir,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)srr/r0rrassert %(py7)sr2z Not Found+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)sFassert %(py1)sr5)r)rWrX)r)rYrXrZ)rrrrr r6rrr r!r"r#r$r%r&r7) r'r0r*r8r9r,r:r;r<r r r test_file4046s0  |  |!r[cCstd|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS)Nz %s/static/shelloworld.txtin%(py1)s in %(py3)sr5rrrassert %(py5)sr)r\)r]r^)rrrrrrrr r!r"r#r$r%r&)r'r(rr;r)r+r,r r r test_directory@s  lr_cCsdj|jjjtd}t|}|jj}d}||k}|stj d |fd ||fitj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nt}}dS)Nz {0:s}{1:s}z/static/#foobar.txts Hello World!r%(py0)s == %(py3)srrrrassert %(py5)sr)r)r`ra)formatrrrrrrr@rrr r!r"r#r$r%r&)r'rAr(rr)r*r+r,r r r test_file_quoatingFs!  lrcc Cs{t|jj|jj}|jdd|jjjdidd6|j}|j}d}||k}| r"t j df|fdf||fit j |d 6t j |d 6d t j kpt j|rt j |nd d 6}d di|d6}tt j|nt}}}|j}tj}d} |t| } d} t| | } | j} d}| |}||k}| rQt j df|fdf||fi t j |d6dt j kpt jtrt j tndd 6t j | d6t j |d6dt j kpIt jtr[t j tndd6t j | d6dt j kpt j|rt j |ndd 6t j |d 6t j | d6dt j kpt jtrt j tndd6t j | d6t j | d 6}d d!i|d"6}tt j|nt}}} } } } } }}dS)#NGETz%s/static/largefile.txtheadersz bytes=0-100Rangerz.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)srr/responserrzassert %(py7)sr2z largefile.txtrCez%(py0)s == %(py20)s {%(py20)s = %(py16)s {%(py16)s = %(py14)s {%(py14)s = %(py2)s(%(py10)s {%(py10)s = %(py5)s {%(py5)s = %(py3)s.join }(%(py6)s, %(py8)s) }, %(py12)s) }.read }(%(py18)s) }rLrDrFrGrrrHrrKrrJrErIzassert %(py22)sZpy22)rrhostportrequestrr getresponsestatusrrr r!r"r#r$r%r&rrrMrrD)r' connectionrhr*r8r9r,r:rrNrOrPrQrRrSZ @py_assert19rUZ @py_format23r r r test_rangeMs6*       rpcCs)t|jj|jj}|jdd|jjjdidd6|j}|j}d}||k}|st j d|fd||fit j |d 6t j |d 6d t j kst j|rt j |nd d 6}di|d6}tt j|nt}}}dS)Nrdz%s/static/largefile.txtrezbytes=0-50,51-100rfrgr.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)srr/rhrrassert %(py7)sr2)r)rqrr)rrrjrkrlrrrmrnrrr r!r"r#r$r%r&)r'rorhr*r8r9r,r:r r r test_rangesWs*   |rscCs)t|jj|jj}|jdd|jjjdidd6|j}|j}d}||k}|st j d|fd||fit j |d 6t j |d 6d t j kst j|rt j |nd d 6}di|d6}tt j|nt}}}dS)Nrdz%s/static/largefile.txtrezbytes=0-100,100-10000,0-1rfir.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)srr/rhrrassert %(py7)sr2)r)rtru)rrrjrkrlrrrmrnrrr r!r"r#r$r%r&)r'rorhr*r8r9r,r:r r r test_unsatisfiable_range1es*   |rv)builtinsr!_pytest.assertion.rewrite assertionrewriterosrhttplibr ImportError http.client circuits.webrconftestrhelpersrrr r r-r=rBrVr[r_rcrprsrvr r r r s(        circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_errors.cpython-34-PYTEST.pyc0000644000014400001440000000445712414363523031274 0ustar prologicusers00000000000000 ?T@sPddlZddljjZddlmZmZddZ ddZ dS)N)urlopen HTTPErrorcCs,d}dg}|||tddS)Nz200 OK Content-type text/plainz Hello World!)rr) Exception)environstart_responsestatusresponse_headersr B/home/prologic/work/circuits/tests/web/test_wsgi_gateway_errors.py applications  rc Csyt|jjjWnGtk r`}z'|j}d}||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}|j}d }||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}|j}d }||k} | stjd| fd||fitj|d6dt j ksJtj |rYtj|ndd6} di| d6}t tj |nt}} d}||k} | sDtjd | fd!||fitj|d6dt j kstj |rtj|ndd6} d"i| d6}t tj |nt}} WYdd}~XnEXd}|sd#itj|d6} t tj | nt}dS)$Ni==,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)spy5py2epy0assert %(py7)spy7zInternal Server Error+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ss Exceptionin%(py1)s in %(py3)spy1spy3assert %(py5)ss Hello World!Fassert %(py1)s)r)rr)r)rr)r)rr)r)rrr)rserverhttpbasercode @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonemsgread) webappr @py_assert1 @py_assert4 @py_assert3 @py_format6 @py_format8r @py_assert0 @py_assert2 @py_format4 @py_format2r r r test sN  |  |  l  lr9) builtinsr'_pytest.assertion.rewrite assertionrewriter$helpersrrrr9r r r r s  circuits-3.1.0/tests/web/__pycache__/test_dispatcher2.cpython-33-PYTEST.pyc0000644000014400001440000002352712414363411027410 0ustar prologicusers00000000000000 ?T*c@sddlZddljjZddlmZmZddl m Z GdddeZ GdddeZ Gd d d eZ d d Zd dZddZddZddZddZdS(iN(uexposeu Controlleri(uurlopencsb|EeZdZfddZddZddZeddd Zd d ZS( uRootcs7tt|j|||t7}|t7}dS(N(usuperuRootu__init__uHellouWorld(uselfuargsukwargs(u __class__(u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyu__init__ s u Root.__init__cCsdS(Nuindex((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuindexsu Root.indexcCsdS(Nuhello1((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuhello1su Root.hello1uhello2cCsdS(Nuhello2((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuhello2su Root.hello2cCsd|S(Nuquery %s((urequtest((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuquerysu Root.query( u__name__u __module__u __qualname__u__init__uindexuhello1uexposeuhello2uquery(u __locals__((u __class__u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuRoot s   uRootcBs>|EeZdZdZddZddZddZdS( uHellou/hellocCsdS(Nu hello index((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuindex su Hello.indexcCsdS(Nu hello test((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyutest#su Hello.testcCsd|S(Nuhello query %s((urequtest((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuquery&su Hello.queryN(u__name__u __module__u __qualname__uchanneluindexutestuquery(u __locals__((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuHellos  uHellocBs2|EeZdZdZddZddZdS(uWorldu/worldcCsdS(Nu world index((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuindex-su World.indexcCsdS(Nu world test((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyutest0su World.testN(u__name__u __module__u __qualname__uchanneluindexutest(u __locals__((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyuWorld*s uWorldcCsd|jjj}t|}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS(Nu %s/hello1shello1u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(userveruhttpubaseuurlopenureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappuurlufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyu test_simple4s   lu test_simplecCsd|jjj}t|}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS(Nu %s/hello2shello2u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(userveruhttpubaseuurlopenureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappuurlufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyu test_expose;s   lu test_exposecCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Nsindexu==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyu test_indexBs  lu test_indexcCsd|jjj}t|}|j}d}||k}|stjd |fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}d |jjj}t|}|j}d }||k}|stjd|fd||fitj|d6dtj kswtj |rtj|ndd6}di|d 6}t tj |nd}}dS(Nu %s/hello/s hello indexu==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u %s/world/s world index(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(userveruhttpubaseuurlopenureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappuurlufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyutest_controller_indexHs(   l    lutest_controller_indexcCsd|jjj}t|}|j}d}||k}|stjd |fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}d |jjj}t|}|j}d }||k}|stjd|fd||fitj|d6dtj kswtj |rtj|ndd6}di|d 6}t tj |nd}}dS(Nu %s/hello/tests hello testu==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u %s/world/tests world test(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(userveruhttpubaseuurlopenureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappuurlufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyutest_controller_exposeTs(   l    lutest_controller_exposecCsd|jjj}t|}|j}d}||k}|stjd |fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}d |jjj}t|}|j}d }||k}|stjd|fd||fitj|d6dtj kswtj |rtj|ndd6}di|d 6}t tj |nd}}dS(Nu%s/query?test=1squery 1u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u%s/hello/query?test=2s hello query 2(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(userveruhttpubaseuurlopenureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappuurlufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyu test_query`s(   l    lu test_query(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webuexposeu ControlleruhelpersuurlopenuRootuHellouWorldu test_simpleu test_exposeu test_indexutest_controller_indexutest_controller_exposeu test_query(((u:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyus      circuits-3.1.0/tests/web/__pycache__/conftest.cpython-32.pyc0000644000014400001440000001020512414363275024734 0ustar prologicusers00000000000000l ?Tc@sdZddlZddlZddlmZddlmZmZddlm Z m Z m Z ddl m Z mZejjejjedZGdd e ZGd d e Zejd d dZejd d dZdS(upy.test configiN(uclose(uServeruStatic(uhandleru ComponentuDebugger(uClienturequestustaticcBs|EeZdZdZdS(uwebcCsAd|_tdj||_tdtddj|dS(Niu/staticu dirlistingFT(uFalseucloseduServeruregisteruserveruStaticuDOCROOTuTrue(uself((u2/home/prologic/work/circuits/tests/web/conftest.pyuinits N(u__name__u __module__uchanneluinit(u __locals__((u2/home/prologic/work/circuits/tests/web/conftest.pyuWebApps uWebAppcBsG|EeZdZdidZeddddddZdS( cOs d|_dS(NF(uFalseuclosed(uselfuargsukwargs((u2/home/prologic/work/circuits/tests/web/conftest.pyuinit!scCsPtj|dd|j}|jt|||||jsIt|jS(Nuresponseuchannel(upytestu WaitEventuchannelufireurequestuwaituAssertionErroruresponse(uselfumethodupathubodyuheadersuwaiter((u2/home/prologic/work/circuits/tests/web/conftest.pyu__call__$sucloseduchannelu*upriorityg?cCs d|_dS(NT(uTrueuclosed(uself((u2/home/prologic/work/circuits/tests/web/conftest.pyu _on_closed+sN(u__name__u __module__uinituNoneu__call__uhandleru _on_closed(u __locals__((u2/home/prologic/work/circuits/tests/web/conftest.pyu WebClients  u WebClientuscopeumodulecstt|jdrZddlm}t|jd}|i|d6jnt|jdd}|dk r|jn|jj j rt jnt j d}j|jstfd}|j|S(Nu applicationi(uGatewayu/uRootureadycs$jtjjdS(N(ufireucloseuserverustop((uwebapp(u2/home/prologic/work/circuits/tests/web/conftest.pyu finalizerDs(uWebAppuhasattrumoduleucircuits.web.wsgiuGatewayugetattruregisteruNoneuconfiguoptionuverboseuDebuggerupytestu WaitEventustartuwaituAssertionErroru addfinalizer(urequestuGatewayu applicationuRootuwaiteru finalizer((uwebappu2/home/prologic/work/circuits/tests/web/conftest.pyuwebapp0s     cscttjddj}j||jsCtfd}|j|S(NureadyuchannelcsjdS(N(u unregister((u webclient(u2/home/prologic/work/circuits/tests/web/conftest.pyu finalizerTs(u WebClientupytestu WaitEventuchanneluregisteruwaituAssertionErroru addfinalizer(urequestuwebappuwaiteru finalizer((u webclientu2/home/prologic/work/circuits/tests/web/conftest.pyu webclientMs   (u__doc__uosupytestucircuits.net.socketsucloseu circuits.webuServeruStaticucircuitsuhandleru ComponentuDebuggerucircuits.web.clientuClienturequestupathujoinudirnameu__file__uDOCROOTuWebAppu WebClientufixtureuwebappu webclient(((u2/home/prologic/work/circuits/tests/web/conftest.pyus  ! circuits-3.1.0/tests/web/__pycache__/test_security.cpython-32-PYTEST.pyc0000644000014400001440000001111512414363276027045 0ustar prologicusers00000000000000l ?Tc @sddlZddljjZddlmZyddlm Z Wn"e k rfddl m Z YnXddl m Z mZGddeZdZd Zd ZdS( iN(u Controller(uHTTPConnectioni(uurlopenu HTTPErrorcBs|EeZdZdS(cCsdS(Nu Hello World!((uself((u7/home/prologic/work/circuits/tests/web/test_security.pyuindexsN(u__name__u __module__uindex(u __locals__((u7/home/prologic/work/circuits/tests/web/test_security.pyuRoot s uRootcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u7/home/prologic/work/circuits/tests/web/test_security.pyu test_roots  lc Csy!d|jjj}t|Wntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`Xds|did t j ksJtj drYtjdnd d6}t tj |ndS(Nu%s/../../../../../../etc/passwdiu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7uassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)sFuassert %(py0)s(userveruhttpubaseuurlopenu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuFalse( uwebappuurlueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u7/home/prologic/work/circuits/tests/web/test_security.pyutest_badpath_notfounds  |!Ac Cst|jj|jj}|jd}|jd||j}|j}d}||k}|s tj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d 6}di|d 6}ttj|nd}}}|j}d }||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d 6}di|d 6}ttj|nd}}}|jdS(Nu/../../../../../../etc/passwduGETi-u==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7uMoved Permanentlyu.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suassert %(py7)s(uHTTPConnectionuserveruhostuportuconnecturequestu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneureasonuclose( uwebappu connectionupathuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u7/home/prologic/work/circuits/tests/web/test_security.pyutest_badpath_redirect#s,    |  |(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu ControlleruhttplibuHTTPConnectionu ImportErroru http.clientuhelpersuurlopenu HTTPErroruRootu test_rootutest_badpath_notfoundutest_badpath_redirect(((u7/home/prologic/work/circuits/tests/web/test_security.pyus    circuits-3.1.0/tests/web/__pycache__/test_gzip.cpython-26-PYTEST.pyc0000644000014400001440000001142212407376151026151 0ustar prologicusers00000000000000 ?Tc @s ddkZddkiiZddklZddkl Z ddk l Z ddk l Z ddklZddklZlZdd klZdd klZlZd efd YZd e fdYZedddZdZdZdZdS(iN(tfixture(tpath(tBytesIO(t Controller(tgzip(thandlert Componenti(tDOCROOT(t build_openertRequesttGzipcBs)eZdZeddddZRS(twebtresponsetpriorityg?cOst|d|dR?(R RRR@RAR.t @py_assert4t @py_assert7t @py_assert9t @py_assert11t @py_assert13t @py_assert15t @py_assert17RCt @py_format19t @py_format21((s3/home/prologic/work/circuits/tests/web/test_gzip.pyttest2Es&   (t __builtin__R9t_pytest.assertion.rewritet assertiontrewriteR7tpytestRtosRtioRt circuits.webRtcircuits.web.toolsRtcircuitsRRtconftestRthelpersRR R RRR-RFRZ(((s3/home/prologic/work/circuits/tests/web/test_gzip.pyts   circuits-3.1.0/tests/web/__pycache__/test_serve_download.cpython-34-PYTEST.pyc0000644000014400001440000000546612414363522030221 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZGddde Zd d ZdS) N)mkstemp)handler) Controller)urlopenc@s^eZdZedddddddZeddd d d Zd d ZdS)Rootstartedpriorityg?channel*cCs3t\}|_tj|dtj|dS)Ns Hello World!)rfilenameoswriteclose)self componentfdr=/home/prologic/work/circuits/tests/web/test_serve_download.py _on_startedszRoot._on_startedstopped(cCstj|jdS)N)r remover )rrrrr _on_stoppedszRoot._on_stoppedcCs|j|jS)N)serve_downloadr )rrrrindexsz Root.indexN)__name__ __module__ __qualname__rrrrrrrrr s $rc Cs t|jjj}|j}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nt }}|jd }|jd }d }||k}|stjd|fd||fitj|d6d tj ks\tj |rktj|nd d6}di|d 6}t tj |nt }}|j}d} || } | sWdditj|d6tj| d6dtj kstj |r$tj|ndd6tj| d6} t tj | nt }} } d} | |k}|stjd|fd| |fitj| d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt } }dS)!Ns Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5z Content-TypezContent-Dispositionzapplication/x-download contentTypez attachment;zLassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.startswith }(%(py4)s) }py2py6contentDispositionpy4r in%(py1)s in %(py3)spy1)r)r r%)r)r r%)r,)r-r%)rserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNoneheaders startswith) webappfr" @py_assert2 @py_assert1 @py_format4 @py_format6r'r* @py_assert3 @py_assert5 @py_format7 @py_assert0rrrtests@  l    l   u lrH)builtinsr6_pytest.assertion.rewrite assertionrewriter3r tempfilercircuitsr circuits.webrhelpersrrrHrrrrs  circuits-3.1.0/tests/web/__pycache__/test_conn.cpython-27-PYTEST.pyc0000644000014400001440000000525012414363102026126 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZyddlmZWn!ek rUddl mZnXddl m Z de fdYZ dZ dS(iN(tHTTPConnection(t ControllertRootcBseZdZRS(cCsdS(Ns Hello World!((tself((s3/home/prologic/work/circuits/tests/web/test_conn.pytindex s(t__name__t __module__R(((s3/home/prologic/work/circuits/tests/web/test_conn.pyR sc Cst|jj|jj}t|_|jxtdD]}|jdd|j }|j }d}||k}|s#t j d|fd||fit j |d6dtjkst j|rt j |ndd 6t j |d 6}di|d 6}tt j|nd}}}|j}d}||k}|st j d|fd||fit j |d6dtjkst j|rt j |ndd 6t j |d 6}di|d 6}tt j|nd}}}|j} d} | | k}|st j d|fd| | fit j | d6dtjks{t j| rt j | ndd 6} di| d 6}tt j|nd}} q;W|jdS(NitGETt/is==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)stpy2tresponsetpy0tpy5tsassert %(py7)stpy7tOKs.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss Hello World!s%(py0)s == %(py3)stpy3tssassert %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)ssassert %(py7)s(s==(s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ssassert %(py7)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(RtserverthosttporttFalset auto_opentconnecttrangetrequestt getresponsetstatust @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonetreasontreadtclose( twebappt connectiontiR t @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8Rt @py_assert2t @py_format4((s3/home/prologic/work/circuits/tests/web/test_conn.pyttests>     |  |  l(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthttplibRt ImportErrort http.clientt circuits.webRRR2(((s3/home/prologic/work/circuits/tests/web/test_conn.pyts  circuits-3.1.0/tests/web/__pycache__/test_utils.cpython-33-PYTEST.pyc0000644000014400001440000000612612414363412026335 0ustar prologicusers00000000000000 ?Tjc @sddlZddljjZddlmZyddlm Z Wn7e k r{ddl Z e j de j j Z YnXddlmZddlmZddZd d ZdS( iN(uBytesIO(u decompressi(ucompress(u get_rangescCs)d}d}t||}dg}||k}|stjd|fd||fitj|d6tj|d6d tjkstjtrtjtnd d 6tj|d 6tj|d 6}di|d6}ttj|nd}}}}}d}d}t||}ddg}||k}|stjd|fd||fitj|d6tj|d6d tjkstjtrtjtnd d 6tj|d 6tj|d 6}di|d6}ttj|nd}}}}}dS(Nu bytes=3-6iiiu==u9%(py6)s {%(py6)s = %(py0)s(%(py2)s, %(py4)s) } == %(py9)supy2upy9u get_rangesupy0upy6upy4uuassert %(py11)supy11u bytes=2-4,-1ii(ii(u==(u9%(py6)s {%(py6)s = %(py0)s(%(py2)s, %(py4)s) } == %(py9)suassert %(py11)s(ii(ii(u==(u9%(py6)s {%(py6)s = %(py0)s(%(py2)s, %(py4)s) } == %(py9)suassert %(py11)s( u get_rangesu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(u @py_assert1u @py_assert3u @py_assert5u @py_assert8u @py_assert7u @py_format10u @py_format12((u4/home/prologic/work/circuits/tests/web/test_utils.pyu test_rangess(  u test_rangescCsd}t|}djt|d}t|}||k}|stjd |fd||fidtjkstj|rtj |ndd6dtjkstj|rtj |ndd 6}di|d 6}t tj |nd}|j dS(Ns Hello World!siu==u%(py0)s == %(py2)susupy2u uncompressedupy0uuassert %(py4)supy4(u==(u%(py0)s == %(py2)suassert %(py4)s(uBytesIOujoinucompressu decompressu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuclose(usucontentsu compressedu uncompressedu @py_assert1u @py_format3u @py_format5((u4/home/prologic/work/circuits/tests/web/test_utils.pyu test_gzips   u test_gzip(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruiouBytesIOugzipu decompressu ImportErroruzlibu decompressobju MAX_WBITSucircuits.web.utilsucompressu get_rangesu test_rangesu test_gzip(((u4/home/prologic/work/circuits/tests/web/test_utils.pyus    circuits-3.1.0/tests/web/__pycache__/test_wsgi_application_yield.cpython-27-PYTEST.pyc0000644000014400001440000000333212414363102031712 0ustar prologicusers00000000000000 ?Tuc@sddlZddljjZddlmZddlm Z ddl m Z defdYZ e e Z dZdS( iN(t Controller(t Applicationi(turlopentRootcBseZdZRS(ccsdVdVdS(NsHello sWorld!((tself((sE/home/prologic/work/circuits/tests/web/test_wsgi_application_yield.pytindex s(t__name__t __module__R(((sE/home/prologic/work/circuits/tests/web/test_wsgi_application_yield.pyR scCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(twebapptfR t @py_assert2t @py_assert1t @py_format4t @py_format6((sE/home/prologic/work/circuits/tests/web/test_wsgi_application_yield.pyttests  l(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRtcircuits.web.wsgiRthelpersRRt applicationR (((sE/home/prologic/work/circuits/tests/web/test_wsgi_application_yield.pyts circuits-3.1.0/tests/web/__pycache__/test_logger.cpython-27-PYTEST.pyc0000644000014400001440000001423712414363102026455 0ustar prologicusers00000000000000 ?T c@sddlZddljjZddlZyddlmZWn!ek raddl mZnXddl m Z m Z m Z ddlmZmZddlmZdefdYZd efd YZd Zd Zd ZdS(iN(tStringIO(tgaierrort gethostbynamet gethostname(t ControllertLoggeri(turlopent DummyLoggercBseZdZdZRS(cCs tt|jd|_dS(N(tsuperRt__init__tNonetmessage(tself((s5/home/prologic/work/circuits/tests/web/test_logger.pyR scCs ||_dS(N(R (R R ((s5/home/prologic/work/circuits/tests/web/test_logger.pytinfos(t__name__t __module__R R (((s5/home/prologic/work/circuits/tests/web/test_logger.pyRs tRootcBseZdZRS(cCsdS(Ns Hello World!((R ((s5/home/prologic/work/circuits/tests/web/test_logger.pytindexs(RRR(((s5/home/prologic/work/circuits/tests/web/test_logger.pyRscCst}td|}|j|t|jjj}|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nd}}|jd |jj}ytt} Wntk rHd } nXi} | | d R?R@RAR6RBRC((s5/home/prologic/work/circuits/tests/web/test_logger.pyt test_loggerFsH    l             lcCst|jd}td|}|j|t|d}t|jjj}|j }d}||k}|st j d|fd||fit j |d6dt jkst j|rt j |ndd 6}d i|d 6} tt j| nd}}|jd |j j}ytt} Wntk rcd} nXi} | | dR?R@RAR6RBRC((s5/home/prologic/work/circuits/tests/web/test_logger.pyt test_filenamehsN   l             l (t __builtin__R,t_pytest.assertion.rewritet assertiontrewriteR)R3Rt ImportErrortiotsocketRRRt circuits.webRRthelpersRtobjectRRRDRFRK(((s5/home/prologic/work/circuits/tests/web/test_logger.pyts     $ "circuits-3.1.0/tests/web/__pycache__/test_conn.cpython-33-PYTEST.pyc0000644000014400001440000000554112414363411026131 0ustar prologicusers00000000000000 ?Tc @sddlZddljjZyddlmZWn"ek rVddl mZYnXddl m Z Gddde Z ddZ dS(iN(uHTTPConnection(u ControllercBs |EeZdZddZdS(uRootcCsdS(Nu Hello World!((uself((u3/home/prologic/work/circuits/tests/web/test_conn.pyuindex su Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u3/home/prologic/work/circuits/tests/web/test_conn.pyuRoot suRootc Cst|jj|jj}d|_|jxtdD]}|jdd|j }|j }d}||k}|s#t j d|fd||fit j |d6dtjkst j|rt j |ndd 6t j |d 6}di|d 6}tt j|nd}}}|j}d}||k}|st j d|fd||fit j |d6dtjkst j|rt j |ndd 6t j |d 6}di|d 6}tt j|nd}}}|j} d} | | k}|st j d|fd| | fit j | d6dtjks{t j| rt j | ndd 6} di| d 6}tt j|nd}} q;W|jdS(NiuGETu/iu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7uOKu.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss Hello World!u%(py0)s == %(py3)supy3usuassert %(py5)sF(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suassert %(py7)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uHTTPConnectionuserveruhostuportuFalseu auto_openuconnecturangeurequestu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneureasonureaduclose( uwebappu connectionuiuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8usu @py_assert2u @py_format4((u3/home/prologic/work/circuits/tests/web/test_conn.pyutests>     |  |  lutest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhttplibuHTTPConnectionu ImportErroru http.clientu circuits.webu ControlleruRootutest(((u3/home/prologic/work/circuits/tests/web/test_conn.pyus  circuits-3.1.0/tests/web/__pycache__/test_servers.cpython-32-PYTEST.pyc0000644000014400001440000002222412414363276026672 0ustar prologicusers00000000000000l ?T c@s!ddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZmZddl mZmZddlmZmZejejed ZGd d eZGd d e ZGddeZdZdZdZdZdZ dS(iN(upath(ugaierror(u Controller(uhandleru Component(u BaseServeruServeri(uurlopenuURLErrorucert.pemcBs|EeZdZdZdS(uwebcCsdS(Nu Hello World!((uselfurequesturesponse((u6/home/prologic/work/circuits/tests/web/test_servers.pyurequestsN(u__name__u __module__uchannelurequest(u __locals__((u6/home/prologic/work/circuits/tests/web/test_servers.pyuBaseRoots uBaseRootcBs|EeZdZdS(cCsdS(Nu Hello World!((uself((u6/home/prologic/work/circuits/tests/web/test_servers.pyuindexsN(u__name__u __module__uindex(u __locals__((u6/home/prologic/work/circuits/tests/web/test_servers.pyuRoots uRootcBs/|EeZeddddddZdS(ureadyuchannelu*upriorityg?cGs|jdS(N(ustop(uselfueventuargs((u6/home/prologic/work/circuits/tests/web/test_servers.pyu _on_ready!sN(u__name__u __module__uhandleru _on_ready(u __locals__((u6/home/prologic/work/circuits/tests/web/test_servers.pyu MakeQuiets u MakeQuietc Cstdj|}tj||jdtj||jdyt|jj}WnMtk r}z-t |dt krtd}nWYdd}~XnX|j }d}||k}|snt j d|fd||fit j|d6d tjks+t j|r:t j|nd d 6}di|d 6} tt j| nd}}|j|jddS(Niureadyu registereduhttp://127.0.0.1:9000s Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u unregistered(u==(u%(py0)s == %(py3)suassert %(py5)s(u BaseServeruregisteru MakeQuietuwaituBaseRootuurlopenuhttpubaseuURLErrorutypeugaierrorureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu unregister( umanageruwatcheruserverufueusu @py_assert2u @py_assert1u @py_format4u @py_format6((u6/home/prologic/work/circuits/tests/web/test_servers.pyutest_baseserver&s*    l  c Cstdj|}tj||jdtj|yt|jj}WnMtk r}z-t |dt krtd}nWYdd}~XnX|j }d}||k}|sat j d|fd||fit j|d6dtjkst j|r-t j|ndd 6}di|d 6} tt j| nd}}|j|jd dS(Niureadyuhttp://127.0.0.1:9000s Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u unregistered(u==(u%(py0)s == %(py3)suassert %(py5)s(uServeruregisteru MakeQuietuwaituRootuurlopenuhttpubaseuURLErrorutypeugaierrorureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu unregister( umanageruwatcheruserverufueusu @py_assert2u @py_assert1u @py_format4u @py_format6((u6/home/prologic/work/circuits/tests/web/test_servers.pyu test_server=s(   l  c Cstjdtddddtj|}tj||jdtj|yt |j j }WnMt k r}z-t |dtkrt d}nWYdd}~XnX|j}d}||k}|sztjd|fd||fitj|d 6d tjks7tj|rFtj|nd d 6}di|d6} ttj| nd}}|j|jddS(Nussliusecureucertfileureadyuhttp://127.0.0.1:9000s Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u unregisteredT(u==(u%(py0)s == %(py3)suassert %(py5)s(upytestu importorskipuServeruTrueuCERTFILEuregisteru MakeQuietuwaituRootuurlopenuhttpubaseuURLErrorutypeugaierrorureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu unregister( umanageruwatcheruserverufueusu @py_assert2u @py_assert1u @py_format4u @py_format6((u6/home/prologic/work/circuits/tests/web/test_servers.pyutest_secure_serverSs* !   l  c Cstjdkrtjdn|jd}t|}t|j|}tj||jdt j|t j }|j }||}d} || k} | st jd| fd|| fit j| d6dtjkst j|rt j|ndd 6t j|d 6d tjksKt jt rZt jt nd d 6t j|d 6t j|d6} di| d6} tt j| nd}}}} } |j|jddS(Nuwin32uUnsupported Platformu test.sockureadyu==ui%(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.basename }(%(py5)s {%(py5)s = %(py3)s.host }) } == %(py10)supy10userverupy3upy2upathupy0upy7upy5uuassert %(py12)supy12u unregistered(u==(ui%(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.basename }(%(py5)s {%(py5)s = %(py3)s.host }) } == %(py10)suassert %(py12)s(upytestuPLATFORMuskipuensureustruServeruregisteru MakeQuietuwaituRootupathubasenameuhostu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu unregister( umanageruwatcherutmpdirusockpathusocketuserveru @py_assert1u @py_assert4u @py_assert6u @py_assert9u @py_assert8u @py_format11u @py_format13((u6/home/prologic/work/circuits/tests/web/test_servers.pyutest_unixserverks(     c CsBtjdtddd}tddddddt}||j|}tj||jdtj|t |j j }|j }d}||k}|sHt jd|fd||fit j|d 6d tjkst j|rt j|nd d 6} di| d6} tt j| nd}}t |j j }|j }d}||k}|st jd|fd||fit j|d 6d tjkst j|rt j|nd d 6} di| d6} tt j| nd}}|j|jddS(Nussliuchanneluinsecureusecureucertfileureadys Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u unregisteredT(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(upytestu importorskipuServeruTrueuCERTFILEuregisteru MakeQuietuwaituRootuurlopenuhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu unregister( umanageruwatcheruinsecure_serveru secure_serveruserverufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u6/home/prologic/work/circuits/tests/web/test_servers.pyutest_multi_servers~s:    l   l  (!ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuosupathusocketugaierroru circuits.webu Controllerucircuitsuhandleru Componentu BaseServeruServeruhelpersuurlopenuURLErrorujoinudirnameu__file__uCERTFILEuBaseRootuRootu MakeQuietutest_baseserveru test_serverutest_secure_serverutest_unixserverutest_multi_servers(((u6/home/prologic/work/circuits/tests/web/test_servers.pyus"      circuits-3.1.0/tests/web/__pycache__/test_generator.cpython-33-PYTEST.pyc0000644000014400001440000000365712414363411027170 0ustar prologicusers00000000000000 ?T_c@sdddlZddljjZddlmZddlm Z GdddeZ ddZ dS( iN(u Controlleri(uurlopencBs |EeZdZddZdS(uRootcCsdd}|S(NcssdVdVdS(NuHello uWorld!((((u8/home/prologic/work/circuits/tests/web/test_generator.pyuresponse suRoot.index..response((uselfuresponse((u8/home/prologic/work/circuits/tests/web/test_generator.pyuindex s u Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u8/home/prologic/work/circuits/tests/web/test_generator.pyuRootsuRootcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u8/home/prologic/work/circuits/tests/web/test_generator.pyutests  lutest( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu ControlleruhelpersuurlopenuRootutest(((u8/home/prologic/work/circuits/tests/web/test_generator.pyus  circuits-3.1.0/tests/web/__pycache__/test_dispatcher3.cpython-32-PYTEST.pyc0000644000014400001440000000775512414363276027426 0ustar prologicusers00000000000000l ?TCc@sddlZddljjZddlZyddlmZWn"e k rbddl mZYnXddl m Z Gdde Z ejjdddd d gd ZdS( iN(uHTTPConnection(u ControllercBs2|EeZdZdZdZdZdS(cCsdS(NuGET((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyuGETscCsdS(NuPUT((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyuPUTscCsdS(NuPOST((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyuPOSTscCsdS(NuDELETE((uself((u:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyuDELETEsN(u__name__u __module__uGETuPUTuPOSTuDELETE(u __locals__((u:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyuRoots    uRootumethoduGETuPUTuPOSTuDELETEcCst|jj|jj}|j|j|d|j}|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}di|d 6}ttj|nd}}}|j}d }||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}d i|d 6}ttj|nd}}}|j} d} | j}||} | j} d} | | }| |k}|sYtj d!|fd"| |fitj | d6tj | d6tj | d6dt j kstj | rtj | ndd6dt j kstj |rtj |ndd6tj |d6tj | d6tj |d6}d#i|d6}ttj|nd}} }} } } }|jdS($Nu/iu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7uOKu.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)su{0:s}uutf-8u%(py0)s == %(py14)s {%(py14)s = %(py10)s {%(py10)s = %(py8)s {%(py8)s = %(py5)s {%(py5)s = %(py3)s.format }(%(py6)s) }.encode }(%(py12)s) }upy3upy10upy12usumethodupy6upy8upy14uassert %(py16)supy16(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suassert %(py7)s(u==(u%(py0)s == %(py14)s {%(py14)s = %(py10)s {%(py10)s = %(py8)s {%(py8)s = %(py5)s {%(py5)s = %(py3)s.format }(%(py6)s) }.encode }(%(py12)s) }uassert %(py16)s(uHTTPConnectionuserveruhostuportuconnecturequestu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneureasonureaduformatuencodeuclose(uwebappumethodu connectionuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8usu @py_assert2u @py_assert7u @py_assert9u @py_assert11u @py_assert13u @py_format15u @py_format17((u:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyutestsD    |  |   (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuhttplibuHTTPConnectionu ImportErroru http.clientu circuits.webu ControlleruRootumarku parametrizeutest(((u:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyus   circuits-3.1.0/tests/web/__pycache__/test_sessions.cpython-33-PYTEST.pyc0000644000014400001440000000534212414363412027042 0ustar prologicusers00000000000000 ?T1c@sddlZddljjZddlmZmZddl m Z m Z ddl m Z GdddeZ dd ZdS( iN(u ControlleruSessionsi(u build_openeruHTTPCookieProcessor(u CookieJarcBs#|EeZdZdddZdS(uRootcCs9|r|}||jds  circuits-3.1.0/tests/web/__pycache__/test_dispatcher3.cpython-26-PYTEST.pyc0000644000014400001440000000675012407376151027421 0ustar prologicusers00000000000000 ?TCc@sddkZddkiiZddkZyddklZWn#e j oddk lZnXddk l Z de fdYZ eiidddd d gd ZdS( iN(tHTTPConnection(t ControllertRootcBs,eZdZdZdZdZRS(cCsdS(NtGET((tself((s:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyRscCsdS(NtPUT((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyRscCsdS(NtPOST((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyRscCsdS(NtDELETE((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyRs(t__name__t __module__RRRR(((s:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyRs   tmethodRRRRcCst|ii|ii}|i|i|d|i}|i}d}||j}| oti df|fdf||fhdt i jp ti |oti |ndd6ti |d6ti |d6}d h|d 6}tti|nt}}}|i}d }||j}| oti df|fd f||fhdt i jp ti |oti |ndd6ti |d6ti |d6}d h|d 6}tti|nt}}}|i} d } | i}||} | i} d} | | }| |j}| o)ti df|fdf| |fhti |d6ti | d6ti | d6dt i jp ti | oti | ndd6ti | d6ti |d6dt i jp ti |oti |ndd6ti | d6}dh|d6}tti|nt}} }} } } }|idS(Nt/is==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)stresponsetpy0tpy2tpy5sassert %(py7)stpy7tOKs.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss{0:s}sutf-8s%(py0)s == %(py14)s {%(py14)s = %(py10)s {%(py10)s = %(py8)s {%(py8)s = %(py5)s {%(py5)s = %(py3)s.format }(%(py6)s) }.encode }(%(py12)s) }tpy14tpy10tpy12tstpy3R tpy6tpy8sassert %(py16)stpy16(Rtserverthosttporttconnecttrequestt getresponsetstatust @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetreasontreadtformattencodetclose(twebappR t connectionR t @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8Rt @py_assert2t @py_assert7t @py_assert9t @py_assert11t @py_assert13t @py_format15t @py_format17((s:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyttestsD         (t __builtin__R#t_pytest.assertion.rewritet assertiontrewriteR!tpytestthttplibRt ImportErrort http.clientt circuits.webRRtmarkt parametrizeR=(((s:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyts  circuits-3.1.0/tests/web/__pycache__/test_multipartformdata.cpython-26-PYTEST.pyc0000644000014400001440000001101312407376151030733 0ustar prologicusers00000000000000 ?Tc @sddkZddkiiZddkZddklZddk l Z ddk l Z ddk lZddklZlZeidZd e fd YZd Zd ZdS( iN(tpath(tBytesIO(t Controlleri(t MultiPartForm(turlopentRequestcCs%ttititdddS(Ntstatics unicode.txttrb(topenRtjointdirnamet__file__(trequest((s@/home/prologic/work/circuits/tests/web/test_multipartformdata.pyt sample_files   tRootcBs eZddZddZRS(tccs&d|iVd|VdV|iVdS(Ns Filename: %s sDescription: %s s Content: (tfilenametvalue(tselftfilet description((s@/home/prologic/work/circuits/tests/web/test_multipartformdata.pytindexs  cCs|iS(N(R(RRR((s@/home/prologic/work/circuits/tests/web/test_multipartformdata.pytupload!s(t__name__t __module__RR(((s@/home/prologic/work/circuits/tests/web/test_multipartformdata.pyRs cCs-t}d|ds    circuits-3.1.0/tests/web/__pycache__/test_utils.cpython-27-PYTEST.pyc0000644000014400001440000000542512414363102026335 0ustar prologicusers00000000000000 ?Tjc@sddlZddljjZddlmZyddlm Z Wn6e k rzddl Z e j de j j Z nXddlmZddlmZdZdZdS( iN(tBytesIO(t decompressi(tcompress(t get_rangescCs)d}d}t||}dg}||k}|stjd|fd||fitj|d6tj|d6d tjkstjtrtjtnd d 6tj|d 6tj|d 6}di|d6}ttj|nd}}}}}d}d}t||}ddg}||k}|stjd|fd||fitj|d6tj|d6d tjkstjtrtjtnd d 6tj|d 6tj|d 6}di|d6}ttj|nd}}}}}dS(Ns bytes=3-6iiis==s9%(py6)s {%(py6)s = %(py0)s(%(py2)s, %(py4)s) } == %(py9)stpy2tpy9Rtpy0tpy6tpy4tsassert %(py11)stpy11s bytes=2-4,-1ii(ii(s==(s9%(py6)s {%(py6)s = %(py0)s(%(py2)s, %(py4)s) } == %(py9)ssassert %(py11)s(ii(ii(s==(s9%(py6)s {%(py6)s = %(py0)s(%(py2)s, %(py4)s) } == %(py9)ssassert %(py11)s( Rt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(t @py_assert1t @py_assert3t @py_assert5t @py_assert8t @py_assert7t @py_format10t @py_format12((s4/home/prologic/work/circuits/tests/web/test_utils.pyt test_rangess(  cCsd}t|}djt|d}t|}||k}|stjd |fd ||fidtjkstj|rtj |ndd6dtjkstj|rtj |ndd 6}di|d 6}t tj |nd}|j dS(Ns Hello World!R is==s%(py0)s == %(py2)stsRt uncompressedRsassert %(py4)sR(s==(s%(py0)s == %(py2)ssassert %(py4)s(RtjoinRRR R RRRR RRRtclose(Rtcontentst compressedRRt @py_format3t @py_format5((s4/home/prologic/work/circuits/tests/web/test_utils.pyt test_gzips   (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteR tioRtgzipRt ImportErrortzlibt decompressobjt MAX_WBITStcircuits.web.utilsRRRR$(((s4/home/prologic/work/circuits/tests/web/test_utils.pyts    circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_generator.cpython-26-PYTEST.pyc0000644000014400001440000000325512407376151031745 0ustar prologicusers00000000000000 ?Tc@sDddkZddkiiZddklZdZdZ dS(iNi(turlopencCs,d}dg}|||d}|S(Ns200 OKs Content-types text/plaincssdVdVdS(NsHello sWorld!((((sE/home/prologic/work/circuits/tests/web/test_wsgi_gateway_generator.pytresponse s(s Content-types text/plain((tenvirontstart_responsetstatustresponse_headersR((sE/home/prologic/work/circuits/tests/web/test_wsgi_gateway_generator.pyt applications    cCst|iii}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((sE/home/prologic/work/circuits/tests/web/test_wsgi_gateway_generator.pyttests  o( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthelpersRRR(((sE/home/prologic/work/circuits/tests/web/test_wsgi_gateway_generator.pyts  circuits-3.1.0/tests/web/__pycache__/test_wsgi_application.cpython-34-PYTEST.pyc0000644000014400001440000001606212414363522030534 0ustar prologicusers00000000000000 ?T`@sddlZddljjZddlmZddlm Z ddl m Z m Z m Z GdddeZe eZdd Zd d Zd d ZddZddZddZdS)N) Controller) Application) urlencodeurlopen HTTPErrorc@sLeZdZddZddZddZddZd d Zd S) RootcCsdS)Nz Hello World!)selfr r ?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyindex sz Root.indexcOs3dd|D}dtt|t|fS)NcSs1g|]'}t|tr!|n |jqSr ) isinstancestrencode).0argr r r s z"Root.test_args..z%s %s)reprtuple)r argskwargsr r r test_argsszRoot.test_argscCs |jdS)N/)redirect)r r r r test_redirectszRoot.test_redirectcCs |jS)N) forbidden)r r r r test_forbiddenszRoot.test_forbiddencCs |jS)N)notfound)r r r r test_notfoundszRoot.test_notfoundN)__name__ __module__ __qualname__r rrrrr r r r r s     rcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS) Ns Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5)r")r#r()rserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)webappfr% @py_assert2 @py_assert1 @py_format4 @py_format6r r r tests  lr=c Cs3ytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}|j}d }||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}WYdd}~XnEXd}|s)ditj|d6}t tj |nt}dS)Nz%s/fooir",%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sr)py2er&r'assert %(py7)spy7z Not Found+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)sFassert %(py1)spy1)r")r>rA)r")rCrArD)rr*r+r,rcoder.r/r0r1r2r3r4r5r6msg) r7r@r: @py_assert4 @py_assert3r< @py_format8 @py_assert0 @py_format2r r r test_404$s0  |  |!rMc Csd}idd6dd6dd6}d|jjjdj|f}t|j}t||}|jjd }|d }t |}||k}|s}t j d|fd||fit j |d 6dt jkst j|rt j |ndd6dt jks*t jt r9t j t ndd6t j |d6} di| d6} tt j| nt}}}|d}t |}||k}|st j d|fd||fit j |d 6dt jkst j|rt j |ndd6dt jks<t jt rKt j t ndd6t j |d6} di| d6} tt j| nt}}}dS)N123onetwothreez%s/test_args/%srs rr"0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)sr?rpy6evalr&py4r'assert %(py8)spy8rr)rNrOrP)r")rTrX)r")rTrX)r*r+r,joinrrrr-splitrVr.r/r0r1r2r3r4r5r6) r7rrurldatar8r:rI @py_assert5 @py_format7 @py_format9r r r r.s,"  rcCstd|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS)Nz%s/test_redirects Hello World!r"%(py0)s == %(py3)sr$r%r&r'assert %(py5)sr))r")rarb)rr*r+r,r-r.r/r0r1r2r3r4r5r6)r7r8r%r9r:r;r<r r r r:s  lrc Cs3ytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}|j}d }||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}WYdd}~XnEXd}|s)ditj|d6}t tj |nt}dS)Nz%s/test_forbiddenir",%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sr)r?r@r&r'assert %(py7)srB Forbidden+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)sFassert %(py1)srE)r")rcrd)r")rfrdrg)rr*r+r,rrFr.r/r0r1r2r3r4r5r6rG) r7r@r:rHrIr<rJrKrLr r r r@s0  |  |!rc Cs3ytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}|j}d }||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}WYdd}~XnEXd}|s)ditj|d6}t tj |nt}dS)Nz%s/test_notfoundir",%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sr)r?r@r&r'assert %(py7)srBz Not Found+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)sFassert %(py1)srE)r")rhri)r")rjrirk)rr*r+r,rrFr.r/r0r1r2r3r4r5r6rG) r7r@r:rHrIr<rJrKrLr r r rJs0  |  |!r)builtinsr1_pytest.assertion.rewrite assertionrewriter. circuits.webrcircuits.web.wsgirhelpersrrrr applicationr=rMrrrrr r r r s    circuits-3.1.0/tests/web/__pycache__/test_websockets.cpython-26-PYTEST.pyc0000644000014400001440000001570712407376151027363 0ustar prologicusers00000000000000 ?TN c @sddklZddkZddkiiZddkl Z ddk l Z ddk l Z ddklZlZddklZlZdd klZd e fd YZd e fd YZde fdYZdZdS(i(tprint_functionN(t Component(tServer(t Controller(tclosetwrite(tWebSocketClienttWebSocketsDispatcheri(turlopentEchocBs2eZdZdZdZdZdZRS(twsservercCs g|_dS(N(tclients(tself((s9/home/prologic/work/circuits/tests/web/test_websockets.pytinitscCsF|ii|td|||it|di||dS(NsWebSocket Client Connected:sWelcome {0:s}:{1:d}(R tappendtprinttfireRtformat(R tsockthosttport((s9/home/prologic/work/circuits/tests/web/test_websockets.pytconnectscCs|ii|dS(N(R tremove(R R((s9/home/prologic/work/circuits/tests/web/test_websockets.pyt disconnectscCs|it|d|dS(Ns Received: (RR(R Rtdata((s9/home/prologic/work/circuits/tests/web/test_websockets.pytread s(t__name__t __module__tchannelR RRR(((s9/home/prologic/work/circuits/tests/web/test_websockets.pyR s    tRootcBseZdZRS(cCsdS(Ns Hello World!((R ((s9/home/prologic/work/circuits/tests/web/test_websockets.pytindex&s(RRR(((s9/home/prologic/work/circuits/tests/web/test_websockets.pyR$stClientcBs eZdZdZdZRS(twscOs d|_dS(N(tNonetresponse(R targstkwargs((s9/home/prologic/work/circuits/tests/web/test_websockets.pyR .scCs ||_dS(N(R"(R R((s9/home/prologic/work/circuits/tests/web/test_websockets.pyR1s(RRRR R(((s9/home/prologic/work/circuits/tests/web/test_websockets.pyR*s cCstdi|}|idti|}ti||idddt|iii}|i }d}||j}|pt i d*|fd+||fhd t i jpt i|ot i|nd d 6t i|d 6} d h| d 6} tt i| nd}}|itdi||iddddi|i|i} t| i|ti|} |iddd|iddd|i}t|} d}| |j}|pt i d,|fd-| |fhdt i jpt i|ot i|ndd6dt i jpt itot itndd 6t i|d 6t i| d 6t i|d6}dh|d6}tt i|nd}} }}|iddd| i}|i}d}||}|pdhdt i jpt i| ot i| ndd 6t i|d6t i|d 6t i|d!6t i|d"6}tt i|nd}}}}|i| itd#d|iddd| i}d$} || j}|pt i d.|fd/|| fhdt i jpt i| ot i| ndd 6t i|d 6t i| d 6} d&h| d'6}tt i|nd}}} t|iii}|i }d}||j}|pt i d0|fd1||fhd t i jpt i|ot i|nd d 6t i|d 6} d h| d 6} tt i| nd}}|i}t|} d}| |j}|pt i d2|fd3| |fhdt i jpt i|ot i|ndd6dt i jpt itot itndd 6t i|d 6t i| d 6t i|d6}dh|d6}tt i|nd}} }}| it d|id(dd|i}t|} d}| |j}|pt i d4|fd5| |fhdt i jpt i|ot i|ndd6dt i jpt itot itndd 6t i|d 6t i| d 6t i|d6}dh|d6}tt i|nd}} }}| i!|id)|i|i!|id)dS(6Nitreadyt registeredRR s Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5s /websockettwebsws://{0:s}:{1:d}/websockettwsclientt connectedisM%(py5)s {%(py5)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.clients }) } == %(py8)stechotpy1tlentpy8sassert %(py10)stpy10RR tWelcomesjassert %(py8)s {%(py8)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.startswith }(%(py6)s) }tclienttpy2tpy4tpy6sHello!sReceived: Hello!s0%(py2)s {%(py2)s = %(py0)s.response } == %(py5)ssassert %(py7)stpy7Rt unregistered(s==(s%(py0)s == %(py3)s(s==(sM%(py5)s {%(py5)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.clients }) } == %(py8)s(s==(s0%(py2)s {%(py2)s = %(py0)s.response } == %(py5)s(s==(s%(py0)s == %(py3)s(s==(sM%(py5)s {%(py5)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.clients }) } == %(py8)s(s==(sM%(py5)s {%(py5)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.clients }) } == %(py8)s("RtregistertwaitR RRtserverthttptbaseRt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationR!tclearRRRRRRR R0R"t startswithRRRt unregister(tmanagertwatchertwebappR<R.tfR't @py_assert2t @py_assert1t @py_format4t @py_format6turiR4t @py_assert4t @py_assert7t @py_assert6t @py_format9t @py_format11t @py_assert3t @py_assert5t @py_format8((s9/home/prologic/work/circuits/tests/web/test_websockets.pyttest5s   o           o         (t __future__Rt __builtin__RAt_pytest.assertion.rewritet assertiontrewriteR?tcircuitsRtcircuits.web.serversRtcircuits.web.controllersRtcircuits.net.socketsRRtcircuits.web.websocketsRRthelpersRR RRR[(((s9/home/prologic/work/circuits/tests/web/test_websockets.pyts  circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway.cpython-32-PYTEST.pyc0000644000014400001440000000304512414363276027673 0ustar prologicusers00000000000000l ?Tcc@sDddlZddljjZddlmZdZdZ dS(iNi(uurlopencCs d}dg}|||dS(Nu200 OKu Content-typeu text/plainu Hello World!(u Content-typeu text/plain((uenvironustart_responseustatusuresponse_headers((u;/home/prologic/work/circuits/tests/web/test_wsgi_gateway.pyu applications  cCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u;/home/prologic/work/circuits/tests/web/test_wsgi_gateway.pyutest s  l( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhelpersuurlopenu applicationutest(((u;/home/prologic/work/circuits/tests/web/test_wsgi_gateway.pyus  circuits-3.1.0/tests/web/__pycache__/test_static.cpython-33-PYTEST.pyc0000644000014400001440000003417212414363412026466 0ustar prologicusers00000000000000 ?T c @s5ddlZddljjZddlmZyddlm Z Wn"e k rfddl m Z YnXddl m Z ddlmZddlmZmZmZGdd d e Zd d Zd d ZddZddZddZddZddZddZddZddZdS(iN(upath(uHTTPConnection(u Controlleri(uDOCROOT(uquoteuurlopenu HTTPErrorcBs |EeZdZddZdS(uRootcCsdS(Nu Hello World!((uself((u5/home/prologic/work/circuits/tests/web/test_static.pyuindexsu Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u5/home/prologic/work/circuits/tests/web/test_static.pyuRootsuRootcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u5/home/prologic/work/circuits/tests/web/test_static.pyutests  lutestcCsNytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j kswtj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsJdidt j kstj dr'tjdndd6}t tj |ndS(Nu%s/fooiu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Not Foundu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u5/home/prologic/work/circuits/tests/web/test_static.pyutest_404s,  |  |!Autest_404cCsd|jjj}t|}|jj}d}||k}|stjd |fd ||fitj|d6dt j kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS(Nu%s/static/helloworld.txts Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(userveruhttpubaseuurlopenureadustripu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappuurlufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u5/home/prologic/work/circuits/tests/web/test_static.pyu test_file(s  lu test_filecCsSd|jjj}t|}|jj}tj}d}|t|}d}t ||}|j} | } || k} | r-t j df| fdf|| fi dt j kpt jtrt jtndd6dt j kpt jt rt jt ndd 6t j|d 6d t j kpLt j|r^t j|nd d 6d t j kpt jtrt jtnd d6t j|d6t j|d6t j| d6t j| d6t j|d6t j|d6} ddi| d6} tt j| nt} }}}}}} } dS(Nu%s/static/largefile.txtu largefile.txturbu==u%(py0)s == %(py18)s {%(py18)s = %(py16)s {%(py16)s = %(py14)s {%(py14)s = %(py2)s(%(py10)s {%(py10)s = %(py5)s {%(py5)s = %(py3)s.join }(%(py6)s, %(py8)s) }, %(py12)s) }.read }() }upathupy3uopenupy2upy12usupy0uDOCROOTupy6upy5upy10upy16upy18upy8upy14uuassert %(py20)supy20(userveruhttpubaseuurlopenureadustripupathujoinuDOCROOTuopenu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(uwebappuurlufusu @py_assert4u @py_assert7u @py_assert9u @py_assert11u @py_assert13u @py_assert15u @py_assert17u @py_assert1u @py_format19u @py_format21((u5/home/prologic/work/circuits/tests/web/test_static.pyutest_largefile/s"   xutest_largefilecCsNytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j kswtj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsJdidt j kstj dr'tjdndd6}t tj |ndS(Nu%s/static/foo.txtiu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Not Foundu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u5/home/prologic/work/circuits/tests/web/test_static.pyu test_file4046s,  |  |!Au test_file404cCstd|jjj}|j}d}||k}|stjd |fd ||fidtjkstj |rtj |ndd6tj |d6}d i|d 6}t tj |nd}}dS(Nu %s/static/shelloworld.txtuinu%(py1)s in %(py3)susupy3upy1uuassert %(py5)supy5(uin(u%(py1)s in %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(uwebappufusu @py_assert0u @py_assert2u @py_format4u @py_format6((u5/home/prologic/work/circuits/tests/web/test_static.pyutest_directory@s  lutest_directorycCsdj|jjjtd}t|}|jj}d}||k}|stj d |fd ||fitj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nd}}dS(Nu {0:s}{1:s}u/static/#foobar.txts Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uformatuserveruhttpubaseuquoteuurlopenureadustripu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappuurlufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u5/home/prologic/work/circuits/tests/web/test_static.pyutest_file_quoatingFs!  lutest_file_quoatingc Cs{t|jj|jj}|jdd|jjjdidd6|j}|j}d}||k}| r"t j df|fdf||fit j |d 6d t j kpt j|rt j |nd d 6t j |d 6}d di|d6}tt j|nt}}}|j}tj}d} |t| } d} t| | } | j} d}| |}||k}| rQt j df|fdf||fi dt j kpt j|rt j |ndd 6t j | d6t j |d6dt j kp9t jtrKt j tndd6dt j kppt jtrt j tndd 6t j | d6dt j kpt jtrt j tndd6t j |d 6t j | d6t j |d6t j | d6t j | d 6}d d!i|d"6}tt j|nt}}} } } } } }}dS(#NuGETu%s/static/largefile.txtuheadersu bytes=0-100uRangeiu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7u largefile.txturbieu%(py0)s == %(py20)s {%(py20)s = %(py16)s {%(py16)s = %(py14)s {%(py14)s = %(py2)s(%(py10)s {%(py10)s = %(py5)s {%(py5)s = %(py3)s.join }(%(py6)s, %(py8)s) }, %(py12)s) }.read }(%(py18)s) }usupy10upy20upathupy3uopenupy12uDOCROOTupy6upy16upy18upy8upy14uassert %(py22)supy22(uHTTPConnectionuserveruhostuporturequestuhttpubaseu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneureadupathujoinuDOCROOTuopen(uwebappu connectionuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8usu @py_assert7u @py_assert9u @py_assert11u @py_assert13u @py_assert15u @py_assert17u @py_assert19u @py_format21u @py_format23((u5/home/prologic/work/circuits/tests/web/test_static.pyu test_rangeMs6*       u test_rangecCs)t|jj|jj}|jdd|jjjdidd6|j}|j}d}||k}|st j d|fd||fit j |d 6d t j kst j|rt j |nd d 6t j |d 6}di|d6}tt j|nd}}}dS(NuGETu%s/static/largefile.txtuheadersubytes=0-50,51-100uRangeiu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(uHTTPConnectionuserveruhostuporturequestuhttpubaseu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappu connectionuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u5/home/prologic/work/circuits/tests/web/test_static.pyu test_rangesWs*   |u test_rangescCs)t|jj|jj}|jdd|jjjdidd6|j}|j}d}||k}|st j d|fd||fit j |d 6d t j kst j|rt j |nd d 6t j |d 6}di|d6}tt j|nd}}}dS(NuGETu%s/static/largefile.txtuheadersubytes=0-100,100-10000,0-1uRangeiu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(uHTTPConnectionuserveruhostuporturequestuhttpubaseu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappu connectionuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u5/home/prologic/work/circuits/tests/web/test_static.pyutest_unsatisfiable_range1es*   |utest_unsatisfiable_range1(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruosupathuhttplibuHTTPConnectionu ImportErroru http.clientu circuits.webu ControlleruconftestuDOCROOTuhelpersuquoteuurlopenu HTTPErroruRootutestutest_404u test_fileutest_largefileu test_file404utest_directoryutest_file_quoatingu test_rangeu test_rangesutest_unsatisfiable_range1(((u5/home/prologic/work/circuits/tests/web/test_static.pyus(        circuits-3.1.0/tests/web/__pycache__/test_serve_download.cpython-27-PYTEST.pyc0000644000014400001440000000664012414363102030210 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZde fdYZd ZdS( iN(tmkstemp(thandler(t Controlleri(turlopentRootcBsMeZeddddddZeddddZd ZRS( tstartedtpriorityg?tchannelt*cCs3t\}|_tj|dtj|dS(Ns Hello World!(Rtfilenametostwritetclose(tselft componenttfd((s=/home/prologic/work/circuits/tests/web/test_serve_download.pyt _on_startedststoppedt(cCstj|jdS(N(R tremoveR (R R((s=/home/prologic/work/circuits/tests/web/test_serve_download.pyt _on_stoppedscCs|j|jS(N(tserve_downloadR (R ((s=/home/prologic/work/circuits/tests/web/test_serve_download.pytindexs(t__name__t __module__RRRR(((s=/home/prologic/work/circuits/tests/web/test_serve_download.pyR s!c Cs t|jjj}|j}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}|jd }|jd }d }||k}|stjd|fd||fitj|d6d tj ks\tj |rktj|nd d6}di|d 6}t tj |nd}}|j}d} || } | sWdditj|d6dtj kstj |rtj|ndd6tj| d6tj| d6} t tj | nd}} } d} | |k}|stjd|fd| |fidtj kstj |rtj|ndd6tj| d6}d i|d 6}t tj |nd} }dS(!Ns Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5s Content-TypesContent-Dispositionsapplication/x-downloadt contentTypes attachment;sLassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.startswith }(%(py4)s) }tpy2tcontentDispositiontpy6tpy4R tins%(py1)s in %(py3)stpy1(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(R#(s%(py1)s in %(py3)ssassert %(py5)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonetheaderst startswith( twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6RR t @py_assert3t @py_assert5t @py_format7t @py_assert0((s=/home/prologic/work/circuits/tests/web/test_serve_download.pyttests@  l    l   u l(t __builtin__R,t_pytest.assertion.rewritet assertiontrewriteR)R ttempfileRtcircuitsRt circuits.webRthelpersRRR>(((s=/home/prologic/work/circuits/tests/web/test_serve_download.pyts  circuits-3.1.0/tests/web/__pycache__/test_serve_file.cpython-26-PYTEST.pyc0000644000014400001440000000442712407376151027332 0ustar prologicusers00000000000000 ?Tc @sddkZddkiiZddkZddklZddk l Z ddk l Z ddk lZde fdYZd ZdS( iN(tmkstemp(thandler(t Controlleri(turlopentRootcBsMeZeddddddZeddddZd ZRS( tstartedtpriorityg?tchannelt*cCs3t\}|_ti|dti|dS(Ns Hello World!(Rtfilenametostwritetclose(tselft componenttfd((s9/home/prologic/work/circuits/tests/web/test_serve_file.pyt _on_startedststoppedt(cCsti|idS(N(R tremoveR (R R((s9/home/prologic/work/circuits/tests/web/test_serve_file.pyt _on_stoppedscCs|i|iS(N(t serve_fileR (R ((s9/home/prologic/work/circuits/tests/web/test_serve_file.pytindexs(t__name__t __module__RRRR(((s9/home/prologic/work/circuits/tests/web/test_serve_file.pyR s!cCst|iii}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((s9/home/prologic/work/circuits/tests/web/test_serve_file.pyttests  o(t __builtin__R#t_pytest.assertion.rewritet assertiontrewriteR!R ttempfileRtcircuitsRt circuits.webRthelpersRRR0(((s9/home/prologic/work/circuits/tests/web/test_serve_file.pyts  circuits-3.1.0/tests/web/__pycache__/test_client.cpython-34-PYTEST.pyc0000644000014400001440000000410012414363522026444 0ustar prologicusers00000000000000 ?T@sjddlZddljjZddlmZddlm Z m Z GdddeZ ddZ dS)N) Controller)Clientrequestc@seZdZddZdS)RootcCsdS)Nz Hello World!)selfrr5/home/prologic/work/circuits/tests/web/test_client.pyindex sz Root.indexN)__name__ __module__ __qualname__r rrrrrs rc Cst}|j|jtd|jjjx|jdkrGq5W|j|j}|j }d}||k}|s!t j d|fd||fit j |d6t j |d6dt jkst j|rt j |ndd6}di|d 6}tt j|nt}}}|j}d }||k}|st j d|fd||fit j |d6t j |d6dt jkst j|rt j |ndd6}di|d 6}tt j|nt}}}|j}d} || k}|st j d|fd|| fit j | d6dt jksyt j|rt j |ndd6} di| d6}tt j|nt}} dS)NGET==.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)spy5py2responsepy0assert %(py7)spy7OK.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss Hello World!%(py0)s == %(py3)spy3sassert %(py5)s)r)rr)r)rr)r)rr)rstartfirerserverhttpbaserstopstatus @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonereasonread) webappclientr @py_assert1 @py_assert4 @py_assert3 @py_format6 @py_format8r @py_assert2 @py_format4rrrtests>      |  |  lr9) builtinsr(_pytest.assertion.rewrite assertionrewriter% circuits.webrcircuits.web.clientrrrr9rrrrs circuits-3.1.0/tests/web/__pycache__/test_exceptions.cpython-34-PYTEST.pyc0000644000014400001440000001341712414363522027362 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZddlm Z m Z m Z ddl m Z mZGdddeZdd Zd d Zd d ZddZdS)N) Controller) ForbiddenNotFoundRedirect)urlopen HTTPErrorc@sLeZdZddZddZddZddZd d Zd S) RootcCsdS)Nz Hello World!)selfr r 9/home/prologic/work/circuits/tests/web/test_exceptions.pyindex sz Root.indexcCstddS)N/)r)r r r r test_redirectszRoot.test_redirectcCs tdS)N)r)r r r r test_forbiddenszRoot.test_forbiddencCs tdS)N)r)r r r r test_notfoundszRoot.test_notfoundcCsd|jjdr?r3r@rArBr r r r,s0  |  |!rcCs`ytd|jjj}Wntk r}z|j}d}||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}|j}d }||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}|j}|j}d}||} d} | | k} | stjd | fd!| | fitj|d6dt j kshtj |rwtj|ndd6tj|d6tj| d6tj|d6tj| d6} d"i| d6} t tj | nt}}}} } } WYdd}~XnEXd}|sVd#itj|d6}t tj |nt}dS)$Nz%s/test_contenttypeir,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)sr r5r6rrassert %(py7)sr8zInternal Server Error+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)sz Content-Typez text/htmlg%(py8)s {%(py8)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.headers }.get }(%(py6)s) } == %(py11)spy4py11py6py8assert %(py13)spy13Fassert %(py1)sr;)r)rGrH)r)rIrH)r)rJrOrQ)rr!r"r#rr<r%r&r'r(r)r*r+r,r-r=rget)r.r/r6r1r>r?r3r@ @py_assert5 @py_assert7 @py_assert10 @py_assert9 @py_format12 @py_format14rArBr r r r6sF  |  |   -r)builtinsr(_pytest.assertion.rewrite assertionrewriter% circuits.webrZcircuits.web.exceptionsrrrhelpersrrr rrrrr r r r s   circuits-3.1.0/tests/web/__pycache__/test_generator.cpython-32-PYTEST.pyc0000644000014400001440000000351212414363276027166 0ustar prologicusers00000000000000l ?T_c@s^ddlZddljjZddlmZddlm Z GddeZ dZ dS(iN(u Controlleri(uurlopencBs|EeZdZdS(cCsd}|S(NcssdVdVdS(NuHello uWorld!((((u8/home/prologic/work/circuits/tests/web/test_generator.pyuresponse s((uselfuresponse((u8/home/prologic/work/circuits/tests/web/test_generator.pyuindex s N(u__name__u __module__uindex(u __locals__((u8/home/prologic/work/circuits/tests/web/test_generator.pyuRoots uRootcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u8/home/prologic/work/circuits/tests/web/test_generator.pyutests  l( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu ControlleruhelpersuurlopenuRootutest(((u8/home/prologic/work/circuits/tests/web/test_generator.pyus  circuits-3.1.0/tests/web/__pycache__/test_dispatcher3.cpython-34-PYTEST.pyc0000644000014400001440000000574512414363522027417 0ustar prologicusers00000000000000 ?TC@sddlZddljjZddlZyddlmZWn"e k rbddl mZYnXddl m Z Gddde Z ejjdddd d gd d ZdS) N)HTTPConnection) Controllerc@s@eZdZddZddZddZddZd S) RootcCsdS)NGET)selfrr:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyrszRoot.GETcCsdS)NPUTr)rrrrr szRoot.PUTcCsdS)NPOSTr)rrrrr sz Root.POSTcCsdS)NDELETEr)rrrrr sz Root.DELETEN)__name__ __module__ __qualname__rr r r rrrrrs    rmethodrr r r cCst|jj|jj}|j|j|d|j}|j}d}||k}|stj d|fd||fitj |d6tj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nt}}}|j}d }||k}|stj d|fd||fitj |d6tj |d6dt j kstj |rtj |ndd6}d i|d 6}ttj|nt}}}|j} d} | j}||} | j} d} | | }| |k}|sYtj d!|fd"| |fidt j kstj | rtj | ndd6tj |d6tj | d6tj |d6tj | d6dt j kstj |rtj |ndd6tj | d6tj | d6}d#i|d6}ttj|nt}} }} } } }|jdS)$N/==.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)spy5py2responsepy0assert %(py7)spy7OK.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)sz{0:s}zutf-8%(py0)s == %(py14)s {%(py14)s = %(py10)s {%(py10)s = %(py8)s {%(py8)s = %(py5)s {%(py5)s = %(py3)s.format }(%(py6)s) }.encode }(%(py12)s) }spy14py3py12rpy6py8py10assert %(py16)sZpy16)r)rr)r)rr)r)rr%)rserverhostportconnectrequest getresponsestatus @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonereasonreadformatencodeclose)webappr connectionr @py_assert1 @py_assert4 @py_assert3 @py_format6 @py_format8r @py_assert2 @py_assert7 @py_assert9 @py_assert11Z @py_assert13 @py_format15Z @py_format17rrrtestsD    |  |   rG)builtinsr0_pytest.assertion.rewrite assertionrewriter-pytesthttplibr ImportError http.client circuits.webrrmark parametrizerGrrrrs   circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_write.cpython-26-PYTEST.pyc0000644000014400001440000000300712407376151031104 0ustar prologicusers00000000000000 ?T{c@sDddkZddkiiZddklZdZdZ dS(iNi(turlopencCs/d}dg}|||}|ddgS(Ns200 OKs Content-types text/plains Hello World!t(s Content-types text/plain((tenvirontstart_responsetstatustresponse_headerstwrite((sA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_write.pyt applications   cCst|iii}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((sA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_write.pyttests  o( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthelpersRRR(((sA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_write.pyts  circuits-3.1.0/tests/web/__pycache__/test_json.cpython-33-PYTEST.pyc0000644000014400001440000001102112414363412026134 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z m Z ddl m Z m Z mZddl mZGddde Zd d Zd d ZdS( iN(uloads(uJSONControlleruSessionsi(uurlopenu build_openeruHTTPCookieProcessor(u CookieJarcBs/|EeZdZddZdddZdS(uRootcCsidd6dd6S(Nusuccessu Hello World!umessageT(uTrue(uself((u3/home/prologic/work/circuits/tests/web/test_json.pyuindex su Root.indexcCsA|r||jds  circuits-3.1.0/tests/web/__pycache__/test_sessions.cpython-34-PYTEST.pyc0000644000014400001440000000406012414363522027041 0ustar prologicusers00000000000000 ?T1@sddlZddljjZddlmZmZddl m Z m Z ddl m Z GdddeZ dd ZdS) N) ControllerSessions) build_openerHTTPCookieProcessor) CookieJarc@seZdZdddZdS)RootNcCs9|r|}||jds  circuits-3.1.0/tests/web/__pycache__/test_vpath_args.cpython-33-PYTEST.pyc0000644000014400001440000000536012414363412027332 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZmZddl m Z GdddeZ GdddeZ d d Z dS( iN(uexposeu Controlleri(uurlopencBs,|EeZdZedddZdS(uRootutest.txtcCsdS(Nu Hello world!((uself((u9/home/prologic/work/circuits/tests/web/test_vpath_args.pyuindex su Root.indexN(u__name__u __module__u __qualname__uexposeuindex(u __locals__((u9/home/prologic/work/circuits/tests/web/test_vpath_args.pyuRootsuRootcBs5|EeZdZdZeddddZdS(uLeafu/testutest.txtcCs|dkrdSd|SdS(Nu Hello world!u Hello world! (uNone(uselfuvpath((u9/home/prologic/work/circuits/tests/web/test_vpath_args.pyuindexs u Leaf.indexN(u__name__u __module__u __qualname__uchanneluexposeuNoneuindex(u __locals__((u9/home/prologic/work/circuits/tests/web/test_vpath_args.pyuLeafs uLeafcCstj|t|jjjd}|j}d}||k}|stjd |fd ||fitj |d6dt j kstj |rtj |ndd6}di|d 6}t tj|nd}}t|jjjd }|j}d}||k}|stjd|fd||fitj |d6dt j ks{tj |rtj |ndd6}di|d 6}t tj|nd}}dS(Nu /test.txts Hello world!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u/test/test.txt(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uLeafuregisteruurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u9/home/prologic/work/circuits/tests/web/test_vpath_args.pyutests&  l   lutest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webuexposeu ControlleruhelpersuurlopenuRootuLeafutest(((u9/home/prologic/work/circuits/tests/web/test_vpath_args.pyus  circuits-3.1.0/tests/web/__pycache__/test_yield.cpython-34-PYTEST.pyc0000644000014400001440000000240312414363523026301 0ustar prologicusers00000000000000 ?T%@sdddlZddljjZddlmZddlm Z GdddeZ ddZ dS) N) Controller)urlopenc@seZdZddZdS)RootccsdVdVdS)NzHello zWorld!)selfrr4/home/prologic/work/circuits/tests/web/test_yield.pyindex sz Root.indexN)__name__ __module__ __qualname__r rrrrrs rcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS) Ns Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5)r )rr)rserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)webappfr @py_assert2 @py_assert1 @py_format4 @py_format6rrrtests  lr() builtinsr_pytest.assertion.rewrite assertionrewriter circuits.webrhelpersrrr(rrrrs circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_write.cpython-27-PYTEST.pyc0000644000014400001440000000303212414363102031071 0ustar prologicusers00000000000000 ?T{c@sDddlZddljjZddlmZdZdZ dS(iNi(turlopencCs/d}dg}|||}|ddgS(Ns200 OKs Content-types text/plains Hello World!t(s Content-types text/plain((tenvirontstart_responsetstatustresponse_headerstwrite((sA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_write.pyt applications   cCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)stpy3tstpy0Rsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(twebapptfR t @py_assert2t @py_assert1t @py_format4t @py_format6((sA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_write.pyttests  l( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthelpersRRR(((sA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_write.pyts  circuits-3.1.0/tests/web/__pycache__/test_value.cpython-26-PYTEST.pyc0000644000014400001440000000425212407376151026317 0ustar prologicusers00000000000000 ?Tc@sddkZddkiiZddklZddkl Z l Z ddk l Z de fdYZ de fd YZd efd YZd ZdS( iN(t Controller(tEventt Componenti(turlopenthellocBseZdZRS(s hello Event(t__name__t __module__t__doc__(((s4/home/prologic/work/circuits/tests/web/test_value.pyR stAppcBseZdZRS(cCsdS(Ns Hello World!((tself((s4/home/prologic/work/circuits/tests/web/test_value.pyRs(RRR(((s4/home/prologic/work/circuits/tests/web/test_value.pyR stRootcBseZdZRS(cCs|itS(N(tfireR(R ((s4/home/prologic/work/circuits/tests/web/test_value.pytindexs(RRR (((s4/home/prologic/work/circuits/tests/web/test_value.pyR scCsti|t|iii}|i}d}||j}|ptid |fd ||fhdt i jpti |oti |ndd6ti |d6}dh|d6}t ti|nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(RtregisterRtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(twebapptfR t @py_assert2t @py_assert1t @py_format4t @py_format6((s4/home/prologic/work/circuits/tests/web/test_value.pyttests  o(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRtcircuitsRRthelpersRRRR R%(((s4/home/prologic/work/circuits/tests/web/test_value.pyts circuits-3.1.0/tests/web/__pycache__/test_websockets.cpython-34-PYTEST.pyc0000644000014400001440000001334312414363522027350 0ustar prologicusers00000000000000 ?TN @sddlmZddlZddljjZddlm Z ddl m Z ddl m Z ddlmZmZddlmZmZdd lmZGd d d e ZGd d d e ZGddde ZddZdS))print_functionN) Component)Server) Controller)closewrite)WebSocketClientWebSocketsDispatcher)urlopenc@sFeZdZdZddZddZddZdd Zd S) EchowsservercCs g|_dS)N)clients)selfr9/home/prologic/work/circuits/tests/web/test_websockets.pyinitsz Echo.initcCsF|jj|td|||jt|dj||dS)NzWebSocket Client Connected:zWelcome {0:s}:{1:d})rappendprintfirerformat)rsockhostportrrrconnectsz Echo.connectcCs|jj|dS)N)rremove)rrrrr disconnectszEcho.disconnectcCs|jt|d|dS)Nz Received: )rr)rrdatarrrread sz Echo.readN)__name__ __module__ __qualname__channelrrrrrrrrr s    r c@seZdZddZdS)RootcCsdS)Nz Hello World!r)rrrrindex&sz Root.indexN)rr r!r$rrrrr#$s r#c@s.eZdZdZddZddZdS)ClientwscOs d|_dS)N)response)rargskwargsrrrr.sz Client.initcCs ||_dS)N)r')rrrrrr1sz Client.readN)rr r!r"rrrrrrr%*s  r%cCsptdj|}|jdtj|}tj||jdddt|jjj}|j }d}||k}|s%t j d+|fd,||fit j |d 6d t jkst j|rt j |nd d 6} d-i| d6} tt j| nt}}|jtdj||jddddj|j|j} t| j|tj|} |jddd|jddd|j}t|} d}| |k}|st j d.|fd/| |fidt jks1t j|r@t j |ndd6t j | d6t j |d6t j |d 6dt jkst jtrt j tndd 6}d0i|d6}tt j|nt}} }}|jddd| j}|j}d}||}|sd dit j |d 6t j |d!6t j |d6d"t jkst j| rt j | nd"d 6t j |d#6}tt j|nt}}}}|j| jtd$d|jddd| j}d%} || k}|st j d1|fd2|| fit j | d6t j |d 6d"t jkst j| rt j | nd"d 6} d3i| d(6}tt j|nt}}} t|jjj}|j }d}||k}|st j d4|fd5||fit j |d 6d t jkskt j|rzt j |nd d 6} d6i| d6} tt j| nt}}|j}t|} d}| |k}|st j d7|fd8| |fidt jks't j|r6t j |ndd6t j | d6t j |d6t j |d 6dt jkst jtrt j tndd 6}d9i|d6}tt j|nt}} }}| jt d|jd)dd|j}t|} d}| |k}|s"t j d:|fd;| |fidt jksxt j|rt j |ndd6t j | d6t j |d6t j |d 6dt jkst jtrt j tndd 6}d<i|d6}tt j|nt}} }}| j!|jd*|j|j!|jd*dS)=Nrready registeredr"r s Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5z /websocketwebzws://{0:s}:{1:d}/websocketwsclient connectedr M%(py5)s {%(py5)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.clients }) } == %(py8)sechopy1py8lenassert %(py10)spy10rr&ZWelcomezjassert %(py8)s {%(py8)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.startswith }(%(py6)s) }py2py6clientpy4zHello!zReceived: Hello!0%(py2)s {%(py2)s = %(py0)s.response } == %(py5)sassert %(py7)spy7r unregistered)r,)r-r2)r,)r7r<)r,)rBrC)r,)r-r2)r,)r7r<)r,)r7r<)"rregisterwaitr r#r serverhttpbaser @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNoneclearr rrrrr%rr;r' startswithrrr unregister)managerwatcherwebapprHr8fr/ @py_assert2 @py_assert1 @py_format4 @py_format6urir@ @py_assert4 @py_assert7 @py_assert6 @py_format9 @py_format11 @py_assert3 @py_assert5 @py_format8rrrtest5s   l         |  l         rh) __future__rbuiltinsrN_pytest.assertion.rewrite assertionrewriterKcircuitsrZcircuits.web.serversrcircuits.web.controllersrcircuits.net.socketsrrZcircuits.web.websocketsrr helpersr r r#r%rhrrrrs  circuits-3.1.0/tests/web/__pycache__/test_xmlrpc.cpython-27-PYTEST.pyc0000644000014400001440000000515212414363102026477 0ustar prologicusers00000000000000 ?T c@sddlZddljjZyddlmZWn!ek rUddl mZnXddl m Z ddl m Z mZddlmZde fdYZd e fd YZd ZdS( iN(t ServerProxy(t Component(t ControllertXMLRPCi(turlopentAppcBseZdZRS(cCs t|S(N(teval(tselfts((s5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyRs(t__name__t __module__R(((s5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyRstRootcBseZdZRS(cCsdS(Ns Hello World!((R((s5/home/prologic/work/circuits/tests/web/test_xmlrpc.pytindexs(R R R (((s5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyR sc Cs td}t}|j||j|t|jjj}|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nd}}d |jjj} t| d t} | jd } d}| |k}|stj d|fd| |fitj |d6dt j kstj | rtj | ndd6}di|d 6}ttj|nd}}|j|jdS(Ns/rpcs Hello World!s==s%(py0)s == %(py3)stpy3Rtpy0tsassert %(py5)stpy5s%s/rpct allow_nones1 + 2itr(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(RRtregisterRtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNoneRtTrueRt unregister( twebapptrpcttesttfRt @py_assert2t @py_assert1t @py_format4t @py_format6turlRR((s5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyR%s2      l  l  (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt xmlrpc.clientRt ImportErrort xmlrpclibtcircuitsRt circuits.webRRthelpersRRR R%(((s5/home/prologic/work/circuits/tests/web/test_xmlrpc.pyts  circuits-3.1.0/tests/web/__pycache__/test_servers.cpython-34-PYTEST.pyc0000644000014400001440000001461212414363522026670 0ustar prologicusers00000000000000 ?T @s9ddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZmZddl mZmZddlmZmZejejed ZGd d d eZGd d d e ZGdddeZddZddZddZddZddZ dS)N)path)gaierror) Controller)handler Component) BaseServerServer)urlopenURLErrorzcert.pemc@s"eZdZdZddZdS)BaseRootwebcCsdS)Nz Hello World!)selfrequestresponserr6/home/prologic/work/circuits/tests/web/test_servers.pyrszBaseRoot.requestN)__name__ __module__ __qualname__channelrrrrrr s r c@seZdZddZdS)RootcCsdS)Nz Hello World!r)rrrrindexsz Root.indexN)rrrrrrrrrs rc@s4eZdZedddddddZdS) MakeQuietreadyr*priorityg?cGs|jdS)N)stop)reventargsrrr _on_ready!szMakeQuiet._on_readyN)rrrrr rrrrrs rc Cstdj|}tj||jdtj||jdyt|jj}WnMtk r}z-t |dt krtd}nWYdd}~XnX|j }d}||k}|snt j d|fd||fit j|d6d tjks+t j|r:t j|nd d 6}di|d 6} tt j| nt}}|j|jddS)Nrr registeredzhttp://127.0.0.1:9000s Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5 unregistered)r")r#r()rregisterrwaitr r httpbaser typerread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone unregister) managerwatcherserverfer% @py_assert2 @py_assert1 @py_format4 @py_format6rrrtest_baseserver&s*    l  rDc Cstdj|}tj||jdtj|yt|jj}WnMtk r}z-t |dt krtd}nWYdd}~XnX|j }d}||k}|sat j d|fd||fit j|d6dtjkst j|r-t j|ndd 6}di|d 6} tt j| nt}}|j|jd dS)Nrrzhttp://127.0.0.1:9000s Hello World!r"%(py0)s == %(py3)sr$r%r&r'assert %(py5)sr)r*)r")rErF)rr+rr,rr r-r.r r/rr0r1r2r3r4r5r6r7r8r9r:) r;r<r=r>r?r%r@rArBrCrrr test_server=s(   l  rGc Cstjdtddddtj|}tj||jdtj|yt|j j }WnMt k r}z-t |dt krtd}nWYdd}~XnX|j}d}||k}|sztjd|fd||fitj|d 6d tjks7tj|rFtj|nd d 6}di|d6} ttj| nt}}|j|jddS)NsslrsecureTcertfilerzhttp://127.0.0.1:9000s Hello World!r"%(py0)s == %(py3)sr$r%r&r'assert %(py5)sr)r*)r")rKrL)pytest importorskiprCERTFILEr+rr,rr r-r.r r/rr0r1r2r3r4r5r6r7r8r9r:) r;r<r=r>r?r%r@rArBrCrrrtest_secure_serverSs* !   l  rPc Cstjdkrtjdn|jd}t|}t|j|}tj||jdt j|t j }|j }||}d} || k} | st jd| fd|| fit j|d6t j|d6d tjkst jt r#t jt nd d 6t j|d 6d tjks[t j|rjt j|nd d 6t j| d6} di| d6} tt j| nt}}}} } |j|jddS)Nwin32zUnsupported Platformz test.sockrr"i%(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.basename }(%(py5)s {%(py5)s = %(py3)s.host }) } == %(py10)spy2py7rr&r)r=r$py10r'assert %(py12)spy12r*)r")rRrV)rMPLATFORMskipensurestrrr+rr,rrbasenamehostr1r2r3r4r5r6r7r8r9r:) r;r<tmpdirsockpathsocketr=rA @py_assert4 @py_assert6 @py_assert9 @py_assert8 @py_format11 @py_format13rrrtest_unixserverks(     rgc CsBtjdtddd}tddddddt}||j|}tj||jdtj|t|j j }|j }d }||k}|sHt j d|fd||fit j|d 6d tjkst j|rt j|nd d6} di| d6} tt j| nt}}t|j j }|j }d }||k}|st j d|fd||fit j|d 6d tjkst j|rt j|nd d6} di| d6} tt j| nt}}|j|jddS)NrHrrZinsecurerITrJrs Hello World!r"%(py0)s == %(py3)sr$r%r&r'assert %(py5)sr)r*)r")rhri)r")rhri)rMrNrrOr+rr,rr r-r.r0r1r2r3r4r5r6r7r8r9r:) r;r<Zinsecure_serverZ secure_serverr=r>r%r@rArBrCrrrtest_multi_servers~s:    l   l  rj)!builtinsr4_pytest.assertion.rewrite assertionrewriter1rMosrr`r circuits.webrcircuitsrrrrhelpersr r joindirname__file__rOr rrrDrGrPrgrjrrrrs"      circuits-3.1.0/tests/web/__pycache__/test_null_response.cpython-27-PYTEST.pyc0000644000014400001440000000433512414363102030064 0ustar prologicusers00000000000000 ?TKc@sgddlZddljjZddlmZddlm Z m Z defdYZ dZ dS(iN(t Controlleri(turlopent HTTPErrortRootcBseZdZRS(cCsdS(N((tself((s</home/prologic/work/circuits/tests/web/test_null_response.pytindexs(t__name__t __module__R(((s</home/prologic/work/circuits/tests/web/test_null_response.pyRscCs8yt|jjjWntk r}|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksptj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}n`Xts4didt j kstj trtjtndd6}t tj |ndS(Nis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)stpy2tetpy0tpy5tsassert %(py7)stpy7s Not Founds+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)stFalse(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)ssassert %(py7)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py7)ssassert %(py0)s(RtserverthttptbaseRtcodet @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonetmsgR(twebappR t @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8t @py_format1((s</home/prologic/work/circuits/tests/web/test_null_response.pyttest s,  |  |A( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRthelpersRRRR$(((s</home/prologic/work/circuits/tests/web/test_null_response.pyts circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_generator.cpython-33-PYTEST.pyc0000644000014400001440000000351512414363412031734 0ustar prologicusers00000000000000 ?Tc@sJddlZddljjZddlmZddZddZ dS(iNi(uurlopencCs/d}dg}|||dd}|S(Nu200 OKu Content-typeu text/plaincssdVdVdS(NuHello uWorld!((((uE/home/prologic/work/circuits/tests/web/test_wsgi_gateway_generator.pyuresponse suapplication..response(u Content-typeu text/plain((uenvironustart_responseustatusuresponse_headersuresponse((uE/home/prologic/work/circuits/tests/web/test_wsgi_gateway_generator.pyu applications    u applicationcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((uE/home/prologic/work/circuits/tests/web/test_wsgi_gateway_generator.pyutests  lutest( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhelpersuurlopenu applicationutest(((uE/home/prologic/work/circuits/tests/web/test_wsgi_gateway_generator.pyus  circuits-3.1.0/tests/web/__pycache__/test_multipartformdata.cpython-27-PYTEST.pyc0000644000014400001440000001114412414363102030727 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZddlmZmZejdZd e fd YZd Zd ZdS( iN(tpath(tBytesIO(t Controlleri(t MultiPartForm(turlopentRequestcCs%ttjtjtdddS(Ntstatics unicode.txttrb(topenRtjointdirnamet__file__(trequest((s@/home/prologic/work/circuits/tests/web/test_multipartformdata.pyt sample_files   tRootcBs eZddZddZRS(tccs&d|jVd|VdV|jVdS(Ns Filename: %s sDescription: %s s Content: (tfilenametvalue(tselftfilet description((s@/home/prologic/work/circuits/tests/web/test_multipartformdata.pytindexs  cCs|jS(N(R(RRR((s@/home/prologic/work/circuits/tests/web/test_multipartformdata.pytupload!s(t__name__t __module__RR(((s@/home/prologic/work/circuits/tests/web/test_multipartformdata.pyRs cCs%t}d|dtj|rMtj|nd d6} di| d6} ttj| nd} dS(NRRshelloworld.txtstext/plain; charset=utf-8s {0:s}/uploads Content-TypesContent-Lengthis==s%(py0)s == %(py2)stexpected_outputtpy2R2tpy0Rsassert %(py4)sR(s==(s%(py0)s == %(py2)ssassert %(py4)s(RtnameRtformatRRRR R!R"RRR#tseekR%R&t @py_builtinstlocalst_should_repr_global_nameR'R(R)R*( R+R R,R.R/R0R R1R2R:t @py_assert1t @py_format3R7((s@/home/prologic/work/circuits/tests/web/test_multipartformdata.pyt test_unicode@s*          (t __builtin__R@t_pytest.assertion.rewritet assertiontrewriteR%tpytesttosRtioRt circuits.webRt multipartformRthelpersRRtfixtureR RR9RE(((s@/home/prologic/work/circuits/tests/web/test_multipartformdata.pyts    circuits-3.1.0/tests/web/__pycache__/test_servers.cpython-27-PYTEST.pyc0000644000014400001440000001702512414363102026665 0ustar prologicusers00000000000000 ?T c@s*ddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZmZddl mZmZddlmZmZejejed Zd efd YZd e fd YZdefdYZdZdZdZdZdZ dS(iN(tpath(tgaierror(t Controller(thandlert Component(t BaseServertServeri(turlopentURLErrorscert.pemtBaseRootcBseZdZdZRS(twebcCsdS(Ns Hello World!((tselftrequesttresponse((s6/home/prologic/work/circuits/tests/web/test_servers.pyR s(t__name__t __module__tchannelR (((s6/home/prologic/work/circuits/tests/web/test_servers.pyR stRootcBseZdZRS(cCsdS(Ns Hello World!((R ((s6/home/prologic/work/circuits/tests/web/test_servers.pytindexs(RRR(((s6/home/prologic/work/circuits/tests/web/test_servers.pyRst MakeQuietcBs)eZeddddddZRS(treadyRt*tpriorityg?cGs|jdS(N(tstop(R teventtargs((s6/home/prologic/work/circuits/tests/web/test_servers.pyt _on_ready!s(RRRR(((s6/home/prologic/work/circuits/tests/web/test_servers.pyRsc Cstdj|}tj||jdtj||jdyt|jj}Wn;tk r}t |dt krtd}qnX|j }d}||k}|s\t j d|fd||fit j|d6d tjkst j|r(t j|nd d 6}di|d 6} tt j| nd}}|j|jddS(NiRt registeredshttp://127.0.0.1:9000s Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5t unregistered(s==(s%(py0)s == %(py3)ssassert %(py5)s(RtregisterRtwaitR RthttptbaseRttypeRtreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonet unregister( tmanagertwatchertservertfteRt @py_assert2t @py_assert1t @py_format4t @py_format6((s6/home/prologic/work/circuits/tests/web/test_servers.pyttest_baseserver&s*    l  c Csttdj|}tj||jdtj|yt|jj}Wn;tk r}t |dt krtd}qnX|j }d}||k}|sOt j d|fd||fit j|d6dtjks t j|rt j|ndd 6}di|d 6} tt j| nd}}|j|jd dS(NiRshttp://127.0.0.1:9000s Hello World!s==s%(py0)s == %(py3)sRRRRsassert %(py5)sR R!(s==(s%(py0)s == %(py3)ssassert %(py5)s(RR"RR#RRR$R%RR&RR'R(R)R*R+R,R-R.R/R0R1( R2R3R4R5R6RR7R8R9R:((s6/home/prologic/work/circuits/tests/web/test_servers.pyt test_server=s(   l  c Cstjdtddtdtj|}tj||jdtj|yt |j j }Wn;t k r}t |dtkrt d}qnX|j}d}||k}|shtjd|fd||fitj|d 6d tjks%tj|r4tj|nd d 6}di|d6} ttj| nd}}|j|jddS(NtsslitsecuretcertfileRshttp://127.0.0.1:9000s Hello World!s==s%(py0)s == %(py3)sRRRRsassert %(py5)sR R!(s==(s%(py0)s == %(py3)ssassert %(py5)s(tpytestt importorskipRtTruetCERTFILER"RR#RRR$R%RR&RR'R(R)R*R+R,R-R.R/R0R1( R2R3R4R5R6RR7R8R9R:((s6/home/prologic/work/circuits/tests/web/test_servers.pyttest_secure_serverSs* !   l  c Cstjdkrtjdn|jd}t|}t|j|}tj||jdt j|t j }|j }||}d} || k} | st jd| fd|| fit j| d6dtjkst j|rt j|ndd 6t j|d 6d tjksKt jt rZt jt nd d 6t j|d 6t j|d6} di| d6} tt j| nd}}}} } |j|jddS(Ntwin32sUnsupported Platforms test.sockRs==si%(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.basename }(%(py5)s {%(py5)s = %(py3)s.host }) } == %(py10)stpy10R4Rtpy2RRtpy7R Rsassert %(py12)stpy12R!(s==(si%(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.basename }(%(py5)s {%(py5)s = %(py3)s.host }) } == %(py10)ssassert %(py12)s(R@tPLATFORMtskiptensuretstrRR"RR#RRtbasenamethostR(R)R*R+R,R-R.R/R0R1( R2R3ttmpdirtsockpathtsocketR4R8t @py_assert4t @py_assert6t @py_assert9t @py_assert8t @py_format11t @py_format13((s6/home/prologic/work/circuits/tests/web/test_servers.pyttest_unixserverks(     c CsBtjdtddd}tddddtdt}||j|}tj||jdtj|t |j j }|j }d}||k}|sHt jd|fd||fit j|d 6d tjkst j|rt j|nd d 6} di| d6} tt j| nd}}t |j j }|j }d}||k}|st jd|fd||fit j|d 6d tjkst j|rt j|nd d 6} di| d6} tt j| nd}}|j|jddS(NR=iRtinsecureR>R?Rs Hello World!s==s%(py0)s == %(py3)sRRRRsassert %(py5)sR R!(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(R@RARRBRCR"RR#RRR$R%R'R(R)R*R+R,R-R.R/R0R1( R2R3tinsecure_servert secure_serverR4R5RR7R8R9R:((s6/home/prologic/work/circuits/tests/web/test_servers.pyttest_multi_servers~s:    l   l  (!t __builtin__R+t_pytest.assertion.rewritet assertiontrewriteR(R@tosRRRRt circuits.webRtcircuitsRRRRthelpersRRtjointdirnamet__file__RCR RRR;R<RDRYR](((s6/home/prologic/work/circuits/tests/web/test_servers.pyts"      circuits-3.1.0/tests/web/__pycache__/test_request_failure.cpython-26-PYTEST.pyc0000644000014400001440000000406712407376151030406 0ustar prologicusers00000000000000 ?Tc@swddkZddkiiZddklZlZddk l Z ddk l Z de fdYZ dZdS( iNi(turlopent HTTPError(thandler(t BaseComponenttRootcBs)eZdZeddddZRS(twebtrequesttpriorityg?cCs tdS(N(t Exception(tselfRtresponse((s>/home/prologic/work/circuits/tests/web/test_request_failure.pyR s(t__name__t __module__tchannelRR(((s>/home/prologic/work/circuits/tests/web/test_request_failure.pyRscCsy'ti|t|iiiWntj o}|i}d}||j}|pti d |fd ||fhdt i jpti |oti |ndd6ti |d6ti |d6}dh|d 6}tti|nd}}}nfXtp]d hd t i jpti toti tnd d6}tti|ndS(Nis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)stetpy0tpy2tpy5sassert %(py7)stpy7sassert %(py0)stFalse(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)s(RtregisterRtserverthttptbaseRtcodet @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNoneR(twebappRt @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8t @py_format1((s>/home/prologic/work/circuits/tests/web/test_request_failure.pyttests  D(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthelpersRRtcircuits.core.handlersRtcircuits.core.componentsRRR)(((s>/home/prologic/work/circuits/tests/web/test_request_failure.pyts  circuits-3.1.0/tests/web/__pycache__/test_null_response.cpython-33-PYTEST.pyc0000644000014400001440000000465012414363412030065 0ustar prologicusers00000000000000 ?TKc@sjddlZddljjZddlmZddlm Z m Z GdddeZ ddZ dS( iN(u Controlleri(uurlopenu HTTPErrorcBs |EeZdZddZdS(uRootcCsdS(N((uself((u</home/prologic/work/circuits/tests/web/test_null_response.pyuindexsu Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u</home/prologic/work/circuits/tests/web/test_null_response.pyuRootsuRootcCsJyt|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsFdidt j kstj dr#tjdndd6}t tj |ndS(Niu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Not Foundu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u</home/prologic/work/circuits/tests/web/test_null_response.pyutest s,  |  |!Autest( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu Controlleruhelpersuurlopenu HTTPErroruRootutest(((u</home/prologic/work/circuits/tests/web/test_null_response.pyus circuits-3.1.0/tests/web/__pycache__/test_logger.cpython-34-PYTEST.pyc0000644000014400001440000001246612414363522026463 0ustar prologicusers00000000000000 ?T @sddlZddljjZddlZyddlmZWn"ek rbddl mZYnXddl m Z m Z m Z ddlmZmZddlmZGdddeZGd d d eZd d Zd dZddZdS)N)StringIO)gaierror gethostbyname gethostname) ControllerLogger)urlopencs.eZdZfddZddZS) DummyLoggercs tt|jd|_dS)N)superr __init__message)self) __class__5/home/prologic/work/circuits/tests/web/test_logger.pyr szDummyLogger.__init__cCs ||_dS)N)r )rr rrrinfoszDummyLogger.info)__name__ __module__ __qualname__r rrr)rrr s r c@seZdZddZdS)RootcCsdS)Nz Hello World!r)rrrrindexsz Root.indexN)rrrrrrrrrs rcCst}td|}|j|t|jjj}|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nt}}|jd |jj}ytt} Wntk rId } YnXi} | | d tj |rMtj |ndd6}d"i|d 6}ttj|nt} }qW|j|jdS)#Nfiles Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5rz 127.0.0.1h-luzGET / HTTP/1.1r20012bfzPython-urllib/%sain%(py1)s in %(py3)spy1)r)rr)r,)r-r)rrregisterr serverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNoneseekstriprrrsysversionlistkeysclose unregister)webapplogfileloggerr)r @py_assert2 @py_assert1 @py_format4 @py_format6addressdrBk @py_assert0rrr test_file"sL    l             l rPcCst}td|}|j|t|jjj}|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nt}}|j}ytt} Wntk r3d } YnXi} | | d rrrr?r@rArBrCrD)rEtmpdirrFrGr)rrHrIrJrKrLrMrBrNrOrrr test_filenamehsN   l             l r\)builtinsr7_pytest.assertion.rewrite assertionrewriter4r?r ImportErroriosocketrrr circuits.webrrhelpersr objectr rrPrTr\rrrrs     $ "circuits-3.1.0/tests/web/__pycache__/test_serve_file.cpython-32-PYTEST.pyc0000644000014400001440000000475112414363276027331 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZGdde Zd ZdS( iN(umkstemp(uhandler(u Controlleri(uurlopencBsS|EeZeddddddZeddddZd Zd S( ustartedupriorityg?uchannelu*cCs3t\}|_tj|dtj|dS(Ns Hello World!(umkstempufilenameuosuwriteuclose(uselfu componentufd((u9/home/prologic/work/circuits/tests/web/test_serve_file.pyu _on_startedsustoppedu(cCstj|jdS(N(uosuremoveufilename(uselfu component((u9/home/prologic/work/circuits/tests/web/test_serve_file.pyu _on_stoppedscCs|j|jS(N(u serve_fileufilename(uself((u9/home/prologic/work/circuits/tests/web/test_serve_file.pyuindexsN(u__name__u __module__uhandleru _on_startedu _on_stoppeduindex(u __locals__((u9/home/prologic/work/circuits/tests/web/test_serve_file.pyuRoot s !uRootcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u9/home/prologic/work/circuits/tests/web/test_serve_file.pyutests  l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruosutempfileumkstempucircuitsuhandleru circuits.webu ControlleruhelpersuurlopenuRootutest(((u9/home/prologic/work/circuits/tests/web/test_serve_file.pyus  circuits-3.1.0/tests/web/__pycache__/test_json.cpython-27-PYTEST.pyc0000644000014400001440000000767112414363102026153 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z m Z ddl m Z m Z mZddl mZde fdYZd Zd ZdS( iN(tloads(tJSONControllertSessionsi(turlopent build_openertHTTPCookieProcessor(t CookieJartRootcBseZdZddZRS(cCsitd6dd6S(Ntsuccesss Hello World!tmessage(tTrue(tself((s3/home/prologic/work/circuits/tests/web/test_json.pytindex scCsA|r||jds  circuits-3.1.0/tests/web/__pycache__/test_basicauth.cpython-26-PYTEST.pyc0000644000014400001440000000614512407376151027151 0ustar prologicusers00000000000000 ?Tc @sddkZddkiiZddklZddkl Z l Z ddk l Z l Z ddk lZlZlZdefdYZd ZdS( iN(t Controller(t check_autht basic_authi(t HTTPErrortHTTPBasicAuthHandler(turlopent build_openertinstall_openertRootcBseZdZRS(cCsYd}hdd6}t}t|i|i|||odSt|i|i|||S(NtTesttadmins Hello World!(tstrRtrequesttresponseR(tselftrealmtuserstencrypt((s8/home/prologic/work/circuits/tests/web/test_basicauth.pytindex s  (t__name__t __module__R(((s8/home/prologic/work/circuits/tests/web/test_basicauth.pyRsc Cspyt|iii}Wntj o}|i}d}||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}dh|d 6}t ti |nd}}}|i}d }||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}dh|d 6}t ti |nd}}}nfXtp]d hd ti jpti toti tnd d6}t ti |nt} | id|iiiddt| } t| t|iii}|i} d} | | j}|ptid|fd| | fhdti jpti | oti | ndd6ti | d6} dh| d6}t ti |nd}} tddS(Nis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)stetpy0tpy2tpy5sassert %(py7)stpy7t Unauthorizeds+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py0)stFalseR R s Hello World!s%(py0)s == %(py3)ststpy3sassert %(py5)s(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)s(s==(s%(py0)s == %(py3)s(RtserverthttptbaseRtcodet @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetmsgRRt add_passwordRRtread(twebapptfRt @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8t @py_format1thandlertopenerRt @py_assert2t @py_format4((s8/home/prologic/work/circuits/tests/web/test_basicauth.pyttestsH    D     o (t __builtin__R$t_pytest.assertion.rewritet assertiontrewriteR"t circuits.webRtcircuits.web.toolsRRthelpersRRRRRRR:(((s8/home/prologic/work/circuits/tests/web/test_basicauth.pyts  circuits-3.1.0/tests/web/__pycache__/test_expires.cpython-34-PYTEST.pyc0000644000014400001440000000771012414363522026657 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZddlmZddl m Z ddl m Z ddl mZGdd d e Zd d Zd d ZdS)N)datetime)mktime) parsedate) Controller)urlopenc@s(eZdZddZddZdS)RootcCs|jddS)N<z Hello World!)expires)selfr 6/home/prologic/work/circuits/tests/web/test_expires.pyindexs z Root.indexcCs|jddS)Nrz Hello World!)r )r r r r nocaches z Root.nocacheN)__name__ __module__ __qualname__rrr r r r r s  rc Cst|jjj}|j}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nt }}|jd }tt|ttjj}d } d }d } || } | | } | |k} d }d }d }||}||}||k}| oz|shtjd| |fd| ||fitj| d6tj|d6tj|d6tj| d 6tj|d6tj|d6dtj ks%tj |r4tj|ndd6}di|d6}t tj |nt } }} } } } }}}}}}dS)Ns Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5Expiresr g?<*(%(py1)s - (%(py3)s * %(py5)s)) < %(py10)s-%(py10)s < (%(py12)s + (%(py14)s * %(py16)s))py1py16py12py14diffpy10assert %(py20)sZpy20)r)rr)rr)rrr%)rserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNoneheadersrrrutcnow timetuple)webappfr @py_assert2 @py_assert1 @py_format4 @py_format6r r# @py_assert0 @py_assert4 @py_assert6 @py_assert7 @py_assert8 @py_assert11 @py_assert13Z @py_assert15Z @py_assert17Z @py_assert18 @py_assert9Z @py_format19Z @py_format21r r r tests8  l  (  rDc Csstd|jjj}|j}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nt }}|jd }|jd }|jd } tj} | jd| jd} tt|t| j} d}| |k}|stjd|fd| |fitj|d6dtj kstj | rtj| ndd6}di|d 6}t tj |nt }}d}||k}|stjd|fd||fitj|d6dtj ksktj |rztj|ndd6}d i|d 6}t tj |nt }}d}| |k}|setjd!|fd"| |fitj|d6dtj ks"tj | r1tj| ndd6}d#i|d 6}t tj |nt }}dS)$Nz %s/nocaches Hello World!r%(py0)s == %(py3)srrrrassert %(py5)srrPragmaz Cache-Controlyearrg?r%(py0)s < %(py3)sr#zno-cachepragmazno-cache, must-revalidate cacheControl)r)rErF)r)rIrF)r)rErF)r)rErF)rr&r'r(r)r*r+r,r-r.r/r0r1r2r3rr4replacerHrr utctimetuple) r6r7rr8r9r:r;r rJrKnowlastyearr#r r r test_nocache sH  l     " l  l  lrP)builtinsr-_pytest.assertion.rewrite assertionrewriter*rtimer email.utilsr circuits.webrhelpersrrrDrPr r r r s  circuits-3.1.0/tests/web/__pycache__/test_dispatcher.cpython-26-PYTEST.pyc0000644000014400001440000001340712407376151027333 0ustar prologicusers00000000000000 ?Tc@sddkZddkiiZddklZddkl Z l Z defdYZ defdYZ dZ d Zd Zd Zd ZdS( iN(t Controller(tClienttrequesttRootcBs#eZdZdZdZRS(cOs*tt|i|||t7}dS(N(tsuperRt__init__tLeaf(tselftargstkwargs((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyRscCsdS(Ns Hello World!((R((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pytindex scCsdS(NtEarth((R((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pytnames(t__name__t __module__RR R (((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyRs  RcBs eZdZdZdZRS(s/world/country/regioncCsdS(Ns Hello cities!((R((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyR scCsdS(Ns Hello City!((R((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pytcitys(R RtchannelR R(((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyRs cCsmt}|i|itd|x|idjoq,W|i|i}|i}|i|fS(NtGET( RtstarttfireRtresponsetNonetstoptreadtstatus(twebapptpathtclientRts((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyt make_requests     cCst||iii\}}d}||j}|ptid |fd ||fhdtijpti|oti |ndd6ti |d6}dh|d6}t ti |nd}}d }||j}|ptid |fd||fhd tijpti|oti |nd d6ti |d6}dh|d6}t ti |nd}}dS(Nis==s%(py0)s == %(py3)sRtpy0tpy3sassert %(py5)stpy5s Hello World!tcontent(s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s( Rtserverthttptbaset @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationR(RRR!t @py_assert2t @py_assert1t @py_format4t @py_format6((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyt test_root-s o  ocCst|d|iii\}}d}||j}|ptid |fd ||fhdtijpti|oti |ndd6ti |d6}dh|d 6}t ti |nd}}d }||j}|ptid|fd||fhd tijpti|oti |nd d6ti |d6}dh|d 6}t ti |nd}}dS(Ns%s/nameis==s%(py0)s == %(py3)sRRRsassert %(py5)sR R R!(s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s( RR"R#R$R%R&R'R(R)R*R+R,R(RRR!R-R.R/R0((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyttest_root_name4s" o  ocCst|d|iii\}}d}||j}|ptid |fd ||fhdtijpti|oti |ndd6ti |d6}dh|d 6}t ti |nd}}d }||j}|ptid|fd||fhd tijpti|oti |nd d6ti |d6}dh|d 6}t ti |nd}}dS(Ns%s/world/country/regionis==s%(py0)s == %(py3)sRRRsassert %(py5)sR s Hello cities!R!(s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s( RR"R#R$R%R&R'R(R)R*R+R,R(RRR!R-R.R/R0((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyt test_leaf;s" o  ocCst|d|iii\}}d}||j}|ptid |fd ||fhdtijpti|oti |ndd6ti |d6}dh|d 6}t ti |nd}}d }||j}|ptid|fd||fhd tijpti|oti |nd d6ti |d6}dh|d 6}t ti |nd}}dS(Ns%s/world/country/region/cityis==s%(py0)s == %(py3)sRRRsassert %(py5)sR s Hello City!R!(s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s( RR"R#R$R%R&R'R(R)R*R+R,R(RRR!R-R.R/R0((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyt test_cityBs" o  o(t __builtin__R't_pytest.assertion.rewritet assertiontrewriteR%t circuits.webRtcircuits.web.clientRRRRRR1R2R3R4(((s9/home/prologic/work/circuits/tests/web/test_dispatcher.pyts      circuits-3.1.0/tests/web/__pycache__/test_cookies.cpython-33-PYTEST.pyc0000644000014400001440000000455412414363411026633 0ustar prologicusers00000000000000 ?Tc@szddlZddljjZddlmZddlm Z m Z ddlm Z GdddeZ dd Z dS( iN(u Controlleri(u build_openeruHTTPCookieProcessor(u CookieJarcBs |EeZdZddZdS(uRootcCs:|jjd}|r%|jr%dSd|jds  circuits-3.1.0/tests/web/__pycache__/test_dispatcher.cpython-32-PYTEST.pyc0000644000014400001440000001565312414363276027337 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlmZddlm Z m Z GddeZ GddeZ dZ d Zd Zd Zd ZdS( iN(u Controller(uClienturequestcs/|EeZfdZdZdZS(cs*tt|j|||t7}dS(N(usuperuRootu__init__uLeaf(uselfuargsukwargs(u __class__(u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyu__init__scCsdS(Nu Hello World!((uself((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyuindex scCsdS(NuEarth((uself((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyunames(u__name__u __module__u__init__uindexuname(u __locals__((u __class__u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyuRoots  uRootcBs&|EeZdZdZdZdS(u/world/country/regioncCsdS(Nu Hello cities!((uself((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyuindexscCsdS(Nu Hello City!((uself((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyucitysN(u__name__u __module__uchanneluindexucity(u __locals__((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyuLeafs  uLeafcCskt}|j|jtd|x|jdkr>q,W|j|j}|j}|j|fS(NuGET( uClientustartufireurequesturesponseuNoneustopureadustatus(uwebappupathuclienturesponseus((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyu make_requests     cCst||jjj\}}d}||k}|stjd |fd ||fitj|d6dtjkstj |rtj|ndd6}di|d 6}t tj |nd}}d }||k}|stjd|fd||fitj|d6d tjks?tj |rNtj|nd d6}di|d 6}t tj |nd}}dS(Niu==u%(py0)s == %(py3)supy3ustatusupy0uuassert %(py5)supy5s Hello World!ucontent(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s( u make_requestuserveruhttpubaseu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappustatusucontentu @py_assert2u @py_assert1u @py_format4u @py_format6((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyu test_root-s l  lcCst|d|jjj\}}d}||k}|stjd |fd||fitj|d6dtjkstj |rtj|ndd6}di|d 6}t tj |nd}}d }||k}|stjd|fd||fitj|d6d tjksCtj |rRtj|nd d6}di|d 6}t tj |nd}}dS(Nu%s/nameiu==u%(py0)s == %(py3)supy3ustatusupy0uuassert %(py5)supy5sEarthucontent(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s( u make_requestuserveruhttpubaseu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappustatusucontentu @py_assert2u @py_assert1u @py_format4u @py_format6((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyutest_root_name4s" l  lcCst|d|jjj\}}d}||k}|stjd |fd||fitj|d6dtjkstj |rtj|ndd6}di|d 6}t tj |nd}}d }||k}|stjd|fd||fitj|d6d tjksCtj |rRtj|nd d6}di|d 6}t tj |nd}}dS(Nu%s/world/country/regioniu==u%(py0)s == %(py3)supy3ustatusupy0uuassert %(py5)supy5s Hello cities!ucontent(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s( u make_requestuserveruhttpubaseu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappustatusucontentu @py_assert2u @py_assert1u @py_format4u @py_format6((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyu test_leaf;s" l  lcCst|d|jjj\}}d}||k}|stjd |fd||fitj|d6dtjkstj |rtj|ndd6}di|d 6}t tj |nd}}d }||k}|stjd|fd||fitj|d6d tjksCtj |rRtj|nd d6}di|d 6}t tj |nd}}dS(Nu%s/world/country/region/cityiu==u%(py0)s == %(py3)supy3ustatusupy0uuassert %(py5)supy5s Hello City!ucontent(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s( u make_requestuserveruhttpubaseu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappustatusucontentu @py_assert2u @py_assert1u @py_format4u @py_format6((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyu test_cityBs" l  l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu Controllerucircuits.web.clientuClienturequestuRootuLeafu make_requestu test_rootutest_root_nameu test_leafu test_city(((u9/home/prologic/work/circuits/tests/web/test_dispatcher.pyus      circuits-3.1.0/tests/web/__pycache__/test_serve_file.cpython-34-PYTEST.pyc0000644000014400001440000000353312414363522027322 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZGddde Zd d ZdS) N)mkstemp)handler) Controller)urlopenc@s^eZdZedddddddZeddd d d Zd d ZdS)Rootstartedpriorityg?channel*cCs3t\}|_tj|dtj|dS)Ns Hello World!)rfilenameoswriteclose)self componentfdr9/home/prologic/work/circuits/tests/web/test_serve_file.py _on_startedszRoot._on_startedstopped(cCstj|jdS)N)r remover )rrrrr _on_stoppedszRoot._on_stoppedcCs|j|jS)N) serve_filer )rrrrindexsz Root.indexN)__name__ __module__ __qualname__rrrrrrrrr s $rcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS) Ns Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5)r)r r%)rserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)webappfr" @py_assert2 @py_assert1 @py_format4 @py_format6rrrtests  lr:)builtinsr._pytest.assertion.rewrite assertionrewriter+r tempfilercircuitsr circuits.webrhelpersrrr:rrrrs  circuits-3.1.0/tests/web/__pycache__/test_request_failure.cpython-33-PYTEST.pyc0000644000014400001440000000451012414363412030367 0ustar prologicusers00000000000000 ?Tc@szddlZddljjZddlmZmZddl m Z ddl m Z Gddde Z dd ZdS( iNi(uurlopenu HTTPError(uhandler(u BaseComponentcBs8|EeZdZdZedddddZdS(uRootuweburequestupriorityg?cCs tdS(N(u Exception(uselfurequesturesponse((u>/home/prologic/work/circuits/tests/web/test_request_failure.pyurequest su Root.requestN(u__name__u __module__u __qualname__uchanneluhandlerurequest(u __locals__((u>/home/prologic/work/circuits/tests/web/test_request_failure.pyuRootsuRootcCsy'tj|t|jjjWntk r"}z|j}d}||k}|stj d |fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}di|d 6}ttj|nd}}}WYdd}~Xn`Xdsdid t j ksPtj dr_tj dnd d6}ttj|ndS(Niu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7uassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)sFuassert %(py0)s(uRooturegisteruurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u>/home/prologic/work/circuits/tests/web/test_request_failure.pyutests  |!Autest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhelpersuurlopenu HTTPErrorucircuits.core.handlersuhandlerucircuits.core.componentsu BaseComponentuRootutest(((u>/home/prologic/work/circuits/tests/web/test_request_failure.pyus  circuits-3.1.0/tests/web/__pycache__/test_vpath_args.cpython-32-PYTEST.pyc0000644000014400001440000000517212414363276027342 0ustar prologicusers00000000000000l ?Tc@swddlZddljjZddlmZmZddl m Z GddeZ GddeZ d Z dS( iN(uexposeu Controlleri(uurlopencBs#|EeZeddZdS(utest.txtcCsdS(Nu Hello world!((uself((u9/home/prologic/work/circuits/tests/web/test_vpath_args.pyuindex sN(u__name__u __module__uexposeuindex(u __locals__((u9/home/prologic/work/circuits/tests/web/test_vpath_args.pyuRoots uRootcBs,|EeZdZedddZdS(u/testutest.txtcCs|dkrdSd|SdS(Nu Hello world!u Hello world! (uNone(uselfuvpath((u9/home/prologic/work/circuits/tests/web/test_vpath_args.pyuindexs N(u__name__u __module__uchanneluexposeuNoneuindex(u __locals__((u9/home/prologic/work/circuits/tests/web/test_vpath_args.pyuLeafs  uLeafcCstj|t|jjjd}|j}d}||k}|stjd |fd ||fitj |d6dt j kstj |rtj |ndd6}di|d 6}t tj|nd}}t|jjjd }|j}d}||k}|stjd|fd||fitj |d6dt j ks{tj |rtj |ndd6}di|d 6}t tj|nd}}dS(Nu /test.txts Hello world!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u/test/test.txt(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uLeafuregisteruurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u9/home/prologic/work/circuits/tests/web/test_vpath_args.pyutests&  l   l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webuexposeu ControlleruhelpersuurlopenuRootuLeafutest(((u9/home/prologic/work/circuits/tests/web/test_vpath_args.pyus  circuits-3.1.0/tests/web/__pycache__/test_methods.cpython-32-PYTEST.pyc0000644000014400001440000001071212414363276026643 0ustar prologicusers00000000000000l ?TEc @sddlZddljjZyddlmZWn"ek rVddl mZYnXddl m Z Gdde Z dZ dZdS(iN(uHTTPConnection(u ControllercBs|EeZdZdS(cCsdS(Nu Hello World!((uself((u6/home/prologic/work/circuits/tests/web/test_methods.pyuindex sN(u__name__u __module__uindex(u __locals__((u6/home/prologic/work/circuits/tests/web/test_methods.pyuRoot s uRootc Cst|jj|jj}|jdd|j}|j}d}||k}|stjd|fd||fitj |d6dt j kstj |rtj |ndd6tj |d 6}di|d 6}t tj|nd}}}|j}d }||k}|stjd|fd||fitj |d6dt j ks~tj |rtj |ndd6tj |d 6}di|d 6}t tj|nd}}}|j}d} || k}|stjd|fd|| fitj | d6dt j ksUtj |rdtj |ndd6} di| d 6}t tj|nd}} dS(NuGETu/iu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7uOKu.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss Hello World!u%(py0)s == %(py3)supy3usuassert %(py5)s(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suassert %(py7)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uHTTPConnectionuserveruhostuporturequestu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneureasonuread( uwebappu connectionuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8usu @py_assert2u @py_format4((u6/home/prologic/work/circuits/tests/web/test_methods.pyutest_GETs6   |  |  lc Cst|jj|jj}|jdd|j}|j}d}||k}|stjd|fd||fitj |d6dt j kstj |rtj |ndd6tj |d 6}di|d 6}t tj|nd}}}|j}d }||k}|stjd|fd||fitj |d6dt j ks~tj |rtj |ndd6tj |d 6}di|d 6}t tj|nd}}}|j}d} || k}|stjd|fd|| fitj | d6dt j ksUtj |rdtj |ndd6} di| d 6}t tj|nd}} dS(NuHEADu/iu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7uOKu.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ssu%(py0)s == %(py3)supy3usuassert %(py5)s(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suassert %(py7)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uHTTPConnectionuserveruhostuporturequestu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneureasonuread( uwebappu connectionuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8usu @py_assert2u @py_format4((u6/home/prologic/work/circuits/tests/web/test_methods.pyu test_HEADs6   |  |  l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhttplibuHTTPConnectionu ImportErroru http.clientu circuits.webu ControlleruRootutest_GETu test_HEAD(((u6/home/prologic/work/circuits/tests/web/test_methods.pyus   circuits-3.1.0/tests/web/__pycache__/test_generator.cpython-27-PYTEST.pyc0000644000014400001440000000333612414363102027162 0ustar prologicusers00000000000000 ?T_c@saddlZddljjZddlmZddlm Z defdYZ dZ dS(iN(t Controlleri(turlopentRootcBseZdZRS(cCsd}|S(NcssdVdVdS(NsHello sWorld!((((s8/home/prologic/work/circuits/tests/web/test_generator.pytresponse s((tselfR((s8/home/prologic/work/circuits/tests/web/test_generator.pytindex s (t__name__t __module__R(((s8/home/prologic/work/circuits/tests/web/test_generator.pyRscCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(twebapptfR t @py_assert2t @py_assert1t @py_format4t @py_format6((s8/home/prologic/work/circuits/tests/web/test_generator.pyttests  l( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRthelpersRRR (((s8/home/prologic/work/circuits/tests/web/test_generator.pyts  circuits-3.1.0/tests/web/__pycache__/jsonrpclib.cpython-34.pyc0000644000014400001440000002267112414363522025263 0ustar prologicusers00000000000000 ?T1@svddlZddlZddlZejddkZy$ddlmZddlmZWn2ek rddl m Zddl m ZYnXy0ddl m Z ddl mZmZmZWn>ek rddlm Z ddlmZmZmZYnXd Zd ad d ZGd ddeZGdddeZddZddddddZGdddeZGdddeZGdddeZGdddZGdddeZGdd d eZ e!d!krre d"d#d Z"e"j#d$Z$e%e$e"j&d%Z'e%e'e"j#d$d&Z(e%e(e"j#d'Z)e%e)ndS)(N)HTTPConnection)HTTPSConnection)HTTP)HTTPS)unquote) splithost splittype splituserz0.0.1cCstdatS)Nr )IDr r 4/home/prologic/work/circuits/tests/web/jsonrpclib.py_gen_id:s rc@s"eZdZdZddZdS)ErrorzBase class for client errors.cCs t|S)N)repr)selfr r r__str__Hsz Error.__str__N)__name__ __module__ __qualname____doc__rr r r rrFs rc@s.eZdZdZddZddZdS) ProtocolErrorz!Indicates an HTTP protocol error.cCs>tj|||_||_||_||_||_dS)N)r__init__urlerrcodeerrmsgheadersresponse)rrrrrrr r rrYs      zProtocolError.__init__cCsd|j|j|jfS)Nz)rrr)rr r r__repr__aszProtocolError.__repr__N)rrrrrrr r r rrVs  rcCs"t|}t|}||fS)N) UnmarshallerParser)encodingZunZparr r r getparserhs  r#cCs>|r:i}||d<||d)rzr{)rr r rrszServerProxy.__repr__cCst|j|S)N)r3_ServerProxy__request)rr7r r rr8szServerProxy.__getattr__)rrrrrrrr8r r r rrvs   rv__main__zhttp://localhost:8080/foo/rKzfoo barotherZbaz)*sysr'rW version_infor@ http.clientrr ImportErrorhttplibrr urllib.parserrr r urllibrsr r Exceptionrrr#r(objectr r!r3r;rtrvrsechocrpZbaddefr r r r!sN      !    9    circuits-3.1.0/tests/web/__pycache__/test_unicode.cpython-26-PYTEST.pyc0000644000014400001440000002415012407376151026630 0ustar prologicusers00000000000000 ?T c @sddkZddkiiZyddklZWn#ej oddk lZnXddk l Z ddk l Z ddklZlZddklZde fd YZd Zd Zd Zd ZdZdS(iN(tHTTPConnection(tb(t Controller(tClienttrequesti(turlopentRootcBs5eZdZdZdZdZdZRS(cCsdS(Ns Hello World!((tself((s6/home/prologic/work/circuits/tests/web/test_unicode.pytindexscCs|iiiS(N(Rtbodytread(R((s6/home/prologic/work/circuits/tests/web/test_unicode.pyt request_bodyscCsdS(Nsä((R((s6/home/prologic/work/circuits/tests/web/test_unicode.pyt response_bodyscCs|iidS(NtA(Rtheaders(R((s6/home/prologic/work/circuits/tests/web/test_unicode.pytrequest_headersscCsd|iid         c Cs#t|ii|ii}|i|idd|i}|i}d}||j}|pti d|fd||fhdt i jpti |oti |ndd6ti |d6ti |d 6}d h|d 6}tti|nd}}}|i}d }||j}|pti d|fd||fhdt i jpti |oti |ndd6ti |d6ti |d 6}d h|d 6}tti|nd}}}|i}d}t|} || j}|pti d|fd|| fhdt i jpti |oti |ndd6dt i jpti toti tndd6ti |d6ti | d6} dh| d6} tti| nd}}} |idS(NR.s/response_bodyis==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)sRRRR/sassert %(py7)sR0R1s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ssäs0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }RRRRsassert %(py8)sR(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s(s==(s0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }(RRR2R3R4RR5R6RRRR R!R"R#R$R%R7R RR8( R&R9RR*R:R(R;R<RR)R+R,((s6/home/prologic/work/circuits/tests/web/test_unicode.pyttest_response_body8s<        cCsBt|ii|ii}|itd}hdd6}|idd|||i}|i}d}||j}|pt i d|fd||fhd t i jpt i |ot i|nd d 6t i|d 6t i|d 6}d h|d6} tt i| nd}}}|i}d}||j}|pt i d|fd||fhd t i jpt i |ot i|nd d 6t i|d 6t i|d 6}d h|d6} tt i| nd}}}|i} d}t|} | | j}|pt i d|fd| | fhdt i jpt i | ot i| ndd 6dt i jpt i tot itndd 6t i|d6t i| d6} dh| d6} tt i| nd}}} |idS(NtsäR R.s/request_headersis==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)sRRRR/sassert %(py7)sR0R1s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }RRRRsassert %(py8)sR(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s(s==(s0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }(RRR2R3R4RRR5R6RRRR R!R"R#R$R%R7R R8(R&R9R RRR*R:R(R;R<RR)R+R,((s6/home/prologic/work/circuits/tests/web/test_unicode.pyttest_request_headersFs@          cCs=t}|i|itdd|ii|iifx|idjoqBW|i}|i }d}||j}|pt i d|fd||fhdt i jpt i|ot i|ndd6t i|d6t i|d 6t i|d 6}d h|d 6}tt i|nd}}}}|i}|i}d }||j}|pt i d|fd||fhdt i jpt i|ot i|ndd6t i|d6t i|d 6t i|d 6}d h|d 6}tt i|nd}}}}|ii}|iiid} d} | | j}|pt i d |fd!| | fhdt i jpt i| ot i| ndd6t i| d6} dh| d6} tt i| nd}} d}t|}||j}|pt i d"|fd#||fhdt i jpt i|ot i|ndd6dt i jpt itot itndd6t i|d 6t i|d6} dh| d6}tt i|nd}}}dS($NR.shttp://%s:%s/response_headersis==sL%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.status } == %(py7)stclientRRRR0sassert %(py9)stpy9R1sL%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.reason } == %(py7)sR säs%(py0)s == %(py3)statpy3sassert %(py5)sR/s0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }RRRsassert %(py8)sR(s==(sL%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.status } == %(py7)s(s==(sL%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.reason } == %(py7)s(s==(s%(py0)s == %(py3)s(s==(s0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }(RtstarttfireRRR2R3RR%R6RRRR R!R"R#R$R7R RtgetR(R&RAR*R(t @py_assert6R)R<t @py_format10RRCt @py_assert2t @py_format4R;R+R,((s6/home/prologic/work/circuits/tests/web/test_unicode.pyttest_response_headersVsZ       o  (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthttplibRt ImportErrort http.clientt circuits.sixRt circuits.webRtcircuits.web.clientRRthelpersRRR-R=R>R@RL(((s6/home/prologic/work/circuits/tests/web/test_unicode.pyts     circuits-3.1.0/tests/web/__pycache__/test_null_response.cpython-32-PYTEST.pyc0000644000014400001440000000454712414363276030101 0ustar prologicusers00000000000000l ?TKc@sdddlZddljjZddlmZddlm Z m Z GddeZ dZ dS(iN(u Controlleri(uurlopenu HTTPErrorcBs|EeZdZdS(cCsdS(N((uself((u</home/prologic/work/circuits/tests/web/test_null_response.pyuindexsN(u__name__u __module__uindex(u __locals__((u</home/prologic/work/circuits/tests/web/test_null_response.pyuRoots uRootcCsJyt|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsFdidt j kstj dr#tjdndd6}t tj |ndS(Niu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Not Foundu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u</home/prologic/work/circuits/tests/web/test_null_response.pyutest s,  |  |!A( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu Controlleruhelpersuurlopenu HTTPErroruRootutest(((u</home/prologic/work/circuits/tests/web/test_null_response.pyus circuits-3.1.0/tests/web/__pycache__/test_bad_requests.cpython-27-PYTEST.pyc0000644000014400001440000000471312414363102027655 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZyddlmZWn!ek rUddl mZnXddl m Z ddl m Z de fdYZdZdS(iN(tHTTPConnection(tb(t ControllertRootcBseZdZRS(cCsdS(Ns Hello World!((tself((s;/home/prologic/work/circuits/tests/web/test_bad_requests.pytindexs(t__name__t __module__R(((s;/home/prologic/work/circuits/tests/web/test_bad_requests.pyR scCs't|jj|jj}|j|jddd|jdd|jtd|j |j }|j }d}||k}|s7t j d|fd||fit j|d 6d tjkst j|rt j|nd d 6t j|d 6}di|d6}tt j|nd}}}|j}d}||k}|s t j d|fd||fit j|d 6d tjkst j|rt j|nd d 6t j|d 6}di|d6}tt j|nd}}}|jdS(NtGETt/sHTTP/1.1t ConnectiontclosesX-Foois==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)stpy2tresponsetpy0tpy5tsassert %(py7)stpy7s Bad Requests.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)ssassert %(py7)s(s==(s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ssassert %(py7)s(Rtserverthosttporttconnectt putrequestt putheadert_outputRt endheaderst getresponsetstatust @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonetreasonR (twebappt connectionR t @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8((s;/home/prologic/work/circuits/tests/web/test_bad_requests.pyttest_bad_headers0     |  |(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthttplibRt ImportErrort http.clientt circuits.sixRt circuits.webRRR-(((s;/home/prologic/work/circuits/tests/web/test_bad_requests.pyts  circuits-3.1.0/tests/web/__pycache__/test_bad_requests.cpython-33-PYTEST.pyc0000644000014400001440000000523712414363411027657 0ustar prologicusers00000000000000 ?Tc @sddlZddljjZyddlmZWn"ek rVddl mZYnXddl m Z ddl m Z Gddde ZddZdS( iN(uHTTPConnection(ub(u ControllercBs |EeZdZddZdS(uRootcCsdS(Nu Hello World!((uself((u;/home/prologic/work/circuits/tests/web/test_bad_requests.pyuindexsu Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u;/home/prologic/work/circuits/tests/web/test_bad_requests.pyuRoot suRootcCs't|jj|jj}|j|jddd|jdd|jtd|j |j }|j }d}||k}|s7t j d|fd||fit j|d 6d tjkst j|rt j|nd d 6t j|d 6}di|d6}tt j|nd}}}|j}d}||k}|s t j d|fd||fit j|d 6d tjkst j|rt j|nd d 6t j|d 6}di|d6}tt j|nd}}}|jdS(NuGETu/uHTTP/1.1u ConnectionucloseuX-Fooiu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7u Bad Requestu.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suassert %(py7)s(uHTTPConnectionuserveruhostuportuconnectu putrequestu putheaderu_outputubu endheadersu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneureasonuclose(uwebappu connectionuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u;/home/prologic/work/circuits/tests/web/test_bad_requests.pyutest_bad_headers0     |  |utest_bad_header(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhttplibuHTTPConnectionu ImportErroru http.clientu circuits.sixubu circuits.webu ControlleruRootutest_bad_header(((u;/home/prologic/work/circuits/tests/web/test_bad_requests.pyus  circuits-3.1.0/tests/web/__pycache__/multipartform.cpython-32.pyc0000644000014400001440000000551312414363276026023 0ustar prologicusers00000000000000l ?Tc@sCddlZddlmZddlmZGddeZdS(iN(u guess_type(u_make_boundarycBs5|EeZdZdZddZdZdS(cCsg|_t|_dS(N(ufilesu_make_boundaryuboundary(uself((u7/home/prologic/work/circuits/tests/web/multipartform.pyu__init__ s cCs d|jS(Nu multipart/form-data; boundary=%s(uboundary(uself((u7/home/prologic/work/circuits/tests/web/multipartform.pyuget_content_type scCsQ|j}|dkr1t|dp+d}n|jj||||fdS(Niuapplication/octet-stream(ureaduNoneu guess_typeufilesuappend(uselfu fieldnameufilenameufdumimetypeubody((u7/home/prologic/work/circuits/tests/web/multipartform.pyuadd_files  csg}td|jd|jfdt|jD|jfd|jDttj|}|jtd|jdt}x+|D]#}||7}|tdd7}qW|S(Nu--%suasciic3sU|]K\}}td|dtt|tr=|n t|dgVqdS(u)Content-Disposition: form-data; name="%s"uasciiN(u bytearrayubytesu isinstance(u.0ukuv(u part_boundary(u7/home/prologic/work/circuits/tests/web/multipartform.pyu sc3sq|]g\}}}}td||fdtd|dtt|trY|n t|dgVqdS(u8Content-Disposition: form-data; name="%s"; filename="%s"uasciiuContent-Type: %sN(u bytearrayu isinstanceubytes(u.0u fieldnameufilenameu content_typeubody(u part_boundary(u7/home/prologic/work/circuits/tests/web/multipartform.pyu &s u--%s--u ( u bytearrayuboundaryuextendulistuitemsufilesu itertoolsuchainuappend(uselfupartsu flatteneduresuitem((u part_boundaryu7/home/prologic/work/circuits/tests/web/multipartform.pyubytess    N(u__name__u __module__u__init__uget_content_typeuNoneuadd_fileubytes(u __locals__((u7/home/prologic/work/circuits/tests/web/multipartform.pyu MultiPartForms    u MultiPartForm(u itertoolsu mimetypesu guess_typeuemail.generatoru_make_boundaryudictu MultiPartForm(((u7/home/prologic/work/circuits/tests/web/multipartform.pyus circuits-3.1.0/tests/web/__pycache__/test_unicode.cpython-27-PYTEST.pyc0000644000014400001440000002445312414363102026625 0ustar prologicusers00000000000000 ?T c@sddlZddljjZyddlmZWn!ek rUddl mZnXddl m Z ddl m Z ddlmZmZddlmZde fd YZd Zd Zd Zd ZdZdS(iN(tHTTPConnection(tb(t Controller(tClienttrequesti(turlopentRootcBs5eZdZdZdZdZdZRS(cCsdS(Ns Hello World!((tself((s6/home/prologic/work/circuits/tests/web/test_unicode.pytindexscCs|jjjS(N(Rtbodytread(R((s6/home/prologic/work/circuits/tests/web/test_unicode.pyt request_bodyscCsdS(Nsä((R((s6/home/prologic/work/circuits/tests/web/test_unicode.pyt response_bodyscCs|jjdS(NtA(Rtheaders(R((s6/home/prologic/work/circuits/tests/web/test_unicode.pytrequest_headersscCsd|jjd     |  |  c Cst|jj|jj}|j|jdd|j}|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d 6}di|d 6}ttj|nd}}}|j}d }||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d 6}di|d 6}ttj|nd}}}|j}d}t|} || k}|stj d|fd|| fidt j ks[tj trjtj tndd6dt j kstj |rtj |ndd6tj | d6tj |d6} di| d6} ttj| nd}}} |jdS( NR/s/response_bodyis==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)sRRRR0Rsassert %(py7)sR1R2s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ssäs0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }RRRRsassert %(py8)sR(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)ssassert %(py7)s(s==(s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ssassert %(py7)s(s==(s0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }sassert %(py8)s(RRR3R4R5RR6R7RRR#R R!R"R$R%R&R8R RR9( R'R:RR+R;R)R<R=RR*R,R-((s6/home/prologic/work/circuits/tests/web/test_unicode.pyttest_response_body8s<    |  |  cCs0t|jj|jj}|jtd}idd6}|jdd|||j}|j}d}||k}|s&t j d|fd||fit j |d 6d t j kst j|rt j |nd d 6t j |d 6}di|d6} tt j| nd}}}|j}d}||k}|st j d|fd||fit j |d 6d t j kst j|rt j |nd d 6t j |d 6}di|d6} tt j| nd}}}|j} d}t|} | | k}|st j d|fd| | fidt j kszt jtrt j tndd 6dt j kst j| rt j | ndd 6t j | d6t j |d6} d i| d6} tt j| nd}}} |jdS(!NRsäR R/s/request_headersis==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)sRRRR0sassert %(py7)sR1R2s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }RRRRsassert %(py8)sR(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)ssassert %(py7)s(s==(s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ssassert %(py7)s(s==(s0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }sassert %(py8)s(RRR3R4R5RRR6R7RRR#R R!R"R$R%R&R8R R9(R'R:R RRR+R;R)R<R=RR*R,R-((s6/home/prologic/work/circuits/tests/web/test_unicode.pyttest_request_headersFs@      |  |  cCs$t}|j|jtdd|jj|jjfx|jdkrTqBW|j}|j }d}||k}|s4t j d|fd||fit j |d6dt jkst j|rt j |ndd6t j |d 6t j |d 6}di|d 6}tt j|nd}}}}|j}|j}d}||k}|s%t j d |fd!||fit j |d6dt jkst j|rt j |ndd6t j |d 6t j |d 6}d"i|d 6}tt j|nd}}}}|jj}|jjjd} d} | | k}|st j d#|fd$| | fit j | d6dt jkst j| rt j | ndd6} d%i| d6} tt j| nd}} d}t|}||k}|st j d&|fd'||fidt jksxt jtrt j tndd6dt jkst j|rt j |ndd6t j |d6t j |d 6} d(i| d6}tt j|nd}}}dS()NR/shttp://%s:%s/response_headersis==sL%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.status } == %(py7)sRtclientRR1RRsassert %(py9)stpy9R2sL%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.reason } == %(py7)sR säs%(py0)s == %(py3)stpy3tasassert %(py5)sR0s0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }RRRsassert %(py8)sR(s==(sL%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.status } == %(py7)ssassert %(py9)s(s==(sL%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.reason } == %(py7)ssassert %(py9)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }sassert %(py8)s(RtstarttfireRRR3R4RR&R7RRR#R R!R"R$R%R8R RtgetR(R'RAR+R)t @py_assert6R*R=t @py_format10RRDt @py_assert2t @py_format4R<R,R-((s6/home/prologic/work/circuits/tests/web/test_unicode.pyttest_response_headersVsX       l  (t __builtin__R t_pytest.assertion.rewritet assertiontrewriteRthttplibRt ImportErrort http.clientt circuits.sixRt circuits.webRtcircuits.web.clientRRthelpersRRR.R>R?R@RL(((s6/home/prologic/work/circuits/tests/web/test_unicode.pyts      circuits-3.1.0/tests/web/__pycache__/test_expires.cpython-26-PYTEST.pyc0000644000014400001440000001125412407376151026662 0ustar prologicusers00000000000000 ?Tc @sddkZddkiiZddklZddklZddk l Z ddk l Z ddk lZde fd YZd Zd ZdS( iN(tdatetime(tmktime(t parsedate(t Controlleri(turlopentRootcBseZdZdZRS(cCs|iddS(Ni<s Hello World!(texpires(tself((s6/home/prologic/work/circuits/tests/web/test_expires.pytindexs cCs|iddS(Nis Hello World!(R(R((s6/home/prologic/work/circuits/tests/web/test_expires.pytnocaches (t__name__t __module__RR (((s6/home/prologic/work/circuits/tests/web/test_expires.pyR s cCst|iii}|i}d}||j}|ptid|fd||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}|id }tt|ttii}d } d }d } || } | | } | |j} d }d }d }||}||}||j}| o|ptid| |fd| ||fhti |d6ti |d6dtijpti |oti |ndd6ti |d6ti | d6ti |d6ti | d6}dh|d6}t ti |nd} }} } } } }}}}}}dS(Ns Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5tExpiresi<g?tRRt utctimetuple( R)R*R R+R,R-R.RR?R@tnowtlastyearR((s6/home/prologic/work/circuits/tests/web/test_expires.pyt test_nocache sH  o     " o  o  o(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRRttimeRt email.utilsRt circuits.webRthelpersRRR<RE(((s6/home/prologic/work/circuits/tests/web/test_expires.pyts  circuits-3.1.0/tests/web/__pycache__/test_dispatcher3.cpython-27-PYTEST.pyc0000644000014400001440000000744712414363102027414 0ustar prologicusers00000000000000 ?TCc@sddlZddljjZddlZyddlmZWn!e k raddl mZnXddl m Z de fdYZ ejjdddd d gd ZdS( iN(tHTTPConnection(t ControllertRootcBs,eZdZdZdZdZRS(cCsdS(NtGET((tself((s:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyRscCsdS(NtPUT((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyRscCsdS(NtPOST((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyRscCsdS(NtDELETE((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyRs(t__name__t __module__RRRR(((s:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyRs   tmethodRRRRcCst|jj|jj}|j|j|d|j}|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}di|d 6}ttj|nd}}}|j}d }||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}d i|d 6}ttj|nd}}}|j} d} | j}||} | j} d} | | }| |k}|sYtj d!|fd"| |fitj | d6tj | d6tj | d6dt j kstj | rtj | ndd6dt j kstj |rtj |ndd6tj |d6tj | d6tj |d6}d#i|d6}ttj|nd}} }} } } }|jdS($Nt/is==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)stpy2tresponsetpy0tpy5tsassert %(py7)stpy7tOKs.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss{0:s}sutf-8s%(py0)s == %(py14)s {%(py14)s = %(py10)s {%(py10)s = %(py8)s {%(py8)s = %(py5)s {%(py5)s = %(py3)s.format }(%(py6)s) }.encode }(%(py12)s) }tpy3tpy10tpy12tsR tpy6tpy8tpy14sassert %(py16)stpy16(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)ssassert %(py7)s(s==(s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ssassert %(py7)s(s==(s%(py0)s == %(py14)s {%(py14)s = %(py10)s {%(py10)s = %(py8)s {%(py8)s = %(py5)s {%(py5)s = %(py3)s.format }(%(py6)s) }.encode }(%(py12)s) }sassert %(py16)s(Rtserverthosttporttconnecttrequestt getresponsetstatust @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonetreasontreadtformattencodetclose(twebappR t connectionR t @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8Rt @py_assert2t @py_assert7t @py_assert9t @py_assert11t @py_assert13t @py_format15t @py_format17((s:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyttestsD    |  |   (t __builtin__R%t_pytest.assertion.rewritet assertiontrewriteR"tpytestthttplibRt ImportErrort http.clientt circuits.webRRtmarkt parametrizeR>(((s:/home/prologic/work/circuits/tests/web/test_dispatcher3.pyts   circuits-3.1.0/tests/web/__pycache__/test_exceptions.cpython-27-PYTEST.pyc0000644000014400001440000001616212414363102027356 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z m Z m Z ddl m Z mZdefdYZdZd Zd Zd ZdS( iN(t Controller(t ForbiddentNotFoundtRedirecti(turlopent HTTPErrortRootcBs5eZdZdZdZdZdZRS(cCsdS(Ns Hello World!((tself((s9/home/prologic/work/circuits/tests/web/test_exceptions.pytindex scCstddS(Nt/(R(R((s9/home/prologic/work/circuits/tests/web/test_exceptions.pyt test_redirectscCs tdS(N(R(R((s9/home/prologic/work/circuits/tests/web/test_exceptions.pyttest_forbiddenscCs tdS(N(R(R((s9/home/prologic/work/circuits/tests/web/test_exceptions.pyt test_notfoundscCsd|jjds   circuits-3.1.0/tests/web/__pycache__/test_http.cpython-34-PYTEST.pyc0000644000014400001440000000621112414363522026152 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZddlmZmZGdddeZGd d d e Zd d ZdS) N) Component) Controller) parse_url) TCPClient)connectwritecs:eZdZfddZddZddZS)Clientcs/tt|j||g|_d|_dS)NF)superr__init___bufferdone)selfargskwargs) __class__3/home/prologic/work/circuits/tests/web/test_http.pyr s zClient.__init__cCs5|jj||jddkr1d|_ndS)Ns T)r appendfindr )r datarrrreadsz Client.readcCsdj|jS)N)joinr )r rrrbuffersz Client.buffer)__name__ __module__ __qualname__r rrrr)rrr s  rc@seZdZddZdS)RootcCsdS)Nz Hello World!r)r rrrindexsz Root.indexN)rrrr rrrrrs rc CsVt}t}||7}|jt|jjj\}}}}|jt||t j }d}|||} | sEddit j |d6t j |d6t j | d6dt jkst j|rt j |ndd6d t jkst jt r"t j t nd d 6} tt j| nt}}} |jtd |jtd t j }d }|||} | saddit j |d6t j |d6t j | d6dt jkst j|rt j |ndd6d t jks/t jt r>t j t nd d 6} tt j| nt}}} |j|jjdjdd} d} | | k}|sHt jd|fd| | fit j | d6dt jkst j| rt j | ndd 6} di| d6}tt j|nt}} dS)N connectedzSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }py5py2py7 transportpy3pytestpy0sGET / HTTP/1.1 sContent-Type: text/plain r clientzutf-8z rzHTTP/1.1 200 OK==%(py0)s == %(py3)ssassert %(py5)s)r+)r,r.)rrstartrserverhttpbasefirerr(wait_for @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonerstoprdecodesplit_call_reprcompare)webappr&r*hostportresourcesecure @py_assert1 @py_assert4 @py_assert6 @py_format8r- @py_assert2 @py_format4 @py_format6rrrtest!s>    !   " lrM)builtinsr7_pytest.assertion.rewrite assertionrewriter5r(circuitsr circuits.webrcircuits.web.clientrcircuits.net.socketsrZcircuits.net.eventsrrrrrMrrrrs  circuits-3.1.0/tests/web/__pycache__/test_utils.cpython-34-PYTEST.pyc0000644000014400001440000000444712414363522026344 0ustar prologicusers00000000000000 ?Tj @sddlZddljjZddlmZyddlm Z Wn7e k r{ddl Z e j de j j Z YnXddlmZddlmZddZd d ZdS) N)BytesIO) decompress)compress) get_rangescCs)d}d}t||}dg}||k}|stjd|fd||fitj|d6tj|d6tj|d 6d tjkstjtrtjtnd d 6tj|d 6}di|d6}ttj|nt }}}}}d}d}t||}ddg}||k}|stjd|fd||fitj|d6tj|d6tj|d 6d tjkstjtrtjtnd d 6tj|d 6}di|d6}ttj|nt }}}}}dS)Nz bytes=3-6==9%(py6)s {%(py6)s = %(py0)s(%(py2)s, %(py4)s) } == %(py9)spy9py2py6rpy0py4assert %(py11)spy11z bytes=2-4,-1)rr )r )r r)rr)r r)r )r r) r @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone) @py_assert1 @py_assert3 @py_assert5 @py_assert8 @py_assert7 @py_format10 @py_format12r&4/home/prologic/work/circuits/tests/web/test_utils.py test_rangess(  r(cCsd}t|}djt|d}t|}||k}|stjd |fd||fidtjkstj|rtj |ndd6dtjkstj|rtj |ndd 6}di|d 6}t tj |nt }|j dS)Ns Hello World!r %(py0)s == %(py2)ssr uncompressedrrassert %(py4)sr)r )r+r.)rjoinrrrrrrrrrrrclose)r,contents compressedr-r @py_format3 @py_format5r&r&r' test_gzips   r5)builtinsr_pytest.assertion.rewrite assertionrewriteriorgzipr ImportErrorzlib decompressobj MAX_WBITSZcircuits.web.utilsrrr(r5r&r&r&r's    circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_errors.cpython-27-PYTEST.pyc0000644000014400001440000000556512414363102031270 0ustar prologicusers00000000000000 ?Tc@sJddlZddljjZddlmZmZdZ dZ dS(iNi(turlopent HTTPErrorcCs,d}dg}|||tddS(Ns200 OKs Content-types text/plains Hello World!(s Content-types text/plain(t Exception(tenvirontstart_responsetstatustresponse_headers((sB/home/prologic/work/circuits/tests/web/test_wsgi_gateway_errors.pyt applications  c Csyt|jjjWn5tk rN}|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksptj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k} | stjd| fd||fidt j ks7tj |rFtj|ndd6tj|d6} di| d6}t tj |nd}} d}||k} | sAtjd | fd!||fidt j kstj |rtj|ndd6tj|d6} d"i| d6}t tj |nd}} n`Xtsd#idt j ks|tj trtjtndd6} t tj | ndS($Nis==s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)stpy2tetpy0tpy5tsassert %(py7)stpy7sInternal Server Errors+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)sRtins%(py1)s in %(py3)ststpy3tpy1sassert %(py5)ss Hello World!sassert %(py0)stFalse(s==(s,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)ssassert %(py7)s(s==(s+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)ssassert %(py7)s(R(s%(py1)s in %(py3)ssassert %(py5)s(R(s%(py1)s in %(py3)ssassert %(py5)ssassert %(py0)s(RtserverthttptbaseRtcodet @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonetmsgtreadR( twebappR t @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8Rt @py_assert0t @py_assert2t @py_format4t @py_format1((sB/home/prologic/work/circuits/tests/web/test_wsgi_gateway_errors.pyttest sJ  |  |  l  lA( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthelpersRRRR,(((sB/home/prologic/work/circuits/tests/web/test_wsgi_gateway_errors.pyts  circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_multiple_apps.cpython-34-PYTEST.pyc0000644000014400001440000000430512414363523032626 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlZejdddkrSejdnddl m Z ddl m Z ddl mZd d Zd d Zejd dZddZdS)NzBroken on Python 3.3)Server)Gateway)urlopencCs d}dg}|||dS)Nz200 OK Content-type text/plainz Hello World!)rr )environstart_responsestatusresponse_headersr r I/home/prologic/work/circuits/tests/web/test_wsgi_gateway_multiple_apps.pyhello s  rcCs d}dg}|||dS)Nz200 OK Content-type text/plainzFooBar!)rrr )r r r rr r rfoobars  rcCsitd6td6S)N/z/foobar)rr)requestr r rappssrc Cstd}t|j|tj|d}|j|jt|jj }|j }d}||k}|st j d|fd||fit j |d6dtjkst j|rt j |ndd6}di|d 6}tt j|nt}}td j|jj }|j }d }||k}|st j d|fd||fit j |d6dtjkst j|rt j |ndd6}di|d 6}tt j|nt}}|jdS)Nrreadys Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5z {0:s}/foobar/sFooBar!)r)rr)r)rr)rrregisterpytest WaitEventstartwaitrhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNoneformatstop) rserverwaiterfr @py_assert2 @py_assert1 @py_format4 @py_format6r r rtest#s0     l   l r:)rr)builtinsr+_pytest.assertion.rewrite assertionrewriter(r!PYVERskip circuits.webrcircuits.web.wsgirhelpersrrrfixturerr:r r r rs    circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_yield.cpython-32-PYTEST.pyc0000644000014400001440000000311012414363276031052 0ustar prologicusers00000000000000l ?Toc@sDddlZddljjZddlmZdZdZ dS(iNi(uurlopenccs*d}dg}|||dVdVdS(Nu200 OKu Content-typeu text/plainuHello uWorld!(u Content-typeu text/plain((uenvironustart_responseustatusuresponse_headers((uA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_yield.pyu applications   cCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((uA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_yield.pyutests  l( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhelpersuurlopenu applicationutest(((uA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_yield.pyus  circuits-3.1.0/tests/web/__pycache__/test_client.cpython-33-PYTEST.pyc0000644000014400001440000000534712414363411026456 0ustar prologicusers00000000000000 ?Tc@sjddlZddljjZddlmZddlm Z m Z GdddeZ ddZ dS(iN(u Controller(uClienturequestcBs |EeZdZddZdS(uRootcCsdS(Nu Hello World!((uself((u5/home/prologic/work/circuits/tests/web/test_client.pyuindex su Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u5/home/prologic/work/circuits/tests/web/test_client.pyuRootsuRootc Cst}|j|jtd|jjjx|jdkrGq5W|j |j}|j }d}||k}|s!t j d|fd||fit j |d6dtjkst j|rt j |ndd6t j |d6}di|d 6}tt j|nd}}}|j}d }||k}|st j d|fd||fit j |d6dtjkst j|rt j |ndd6t j |d6}di|d 6}tt j|nd}}}|j}d} || k}|st j d|fd|| fit j | d6dtjksyt j|rt j |ndd6} di| d6}tt j|nd}} dS(NuGETiu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7uOKu.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss Hello World!u%(py0)s == %(py3)supy3usuassert %(py5)s(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suassert %(py7)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uClientustartufireurequestuserveruhttpubaseuresponseuNoneustopustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationureasonuread( uwebappuclienturesponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8usu @py_assert2u @py_format4((u5/home/prologic/work/circuits/tests/web/test_client.pyutests>      |  |  lutest( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu Controllerucircuits.web.clientuClienturequestuRootutest(((u5/home/prologic/work/circuits/tests/web/test_client.pyus circuits-3.1.0/tests/web/__pycache__/test_yield.cpython-32-PYTEST.pyc0000644000014400001440000000322212414363276026304 0ustar prologicusers00000000000000l ?T%c@s^ddlZddljjZddlmZddlm Z GddeZ dZ dS(iN(u Controlleri(uurlopencBs|EeZdZdS(ccsdVdVdS(NuHello uWorld!((uself((u4/home/prologic/work/circuits/tests/web/test_yield.pyuindex sN(u__name__u __module__uindex(u __locals__((u4/home/prologic/work/circuits/tests/web/test_yield.pyuRoots uRootcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u4/home/prologic/work/circuits/tests/web/test_yield.pyutests  l( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu ControlleruhelpersuurlopenuRootutest(((u4/home/prologic/work/circuits/tests/web/test_yield.pyus circuits-3.1.0/tests/web/__pycache__/helpers.cpython-32.pyc0000644000014400001440000000250112414363276024552 0ustar prologicusers00000000000000l ?Tc@sy~ddlmZmZddlmZmZmZddlmZm Z ddlm Z m Z m Z ddlm Z mZWnek r ddlmZddlmZmZddlmZmZm Z ddlmZm Z dd lm Z m Z m Z mZYnXydd lmZWn"ek rEdd lmZYnXydd lmZWn"ek r~dd lmZYnXd S( i(u HTTPErroruURLError(uquoteu urlencodeuurljoin(uHTTPBasicAuthHandleruHTTPCookieProcessor(uurlopenu build_openeruinstall_opener(uHTTPDigestAuthHandleruRequest(uurljoin(uquoteu urlencode(u HTTPErroruURLErroruHTTPDigestAuthHandler(uurlopenu build_openeruinstall_openeruRequest(u CookieJar(uurlparseN(u urllib.erroru HTTPErroruURLErroru urllib.parseuquoteu urlencodeuurljoinuurllib.requestuHTTPBasicAuthHandleruHTTPCookieProcessoruurlopenu build_openeruinstall_openeruHTTPDigestAuthHandleruRequestu ImportErroruurlparseuurllibuurllib2uhttp.cookiejaru CookieJaru cookielib(((u1/home/prologic/work/circuits/tests/web/helpers.pyus& '  circuits-3.1.0/tests/web/__pycache__/test_unicode.cpython-32-PYTEST.pyc0000644000014400001440000002751412414363276026636 0ustar prologicusers00000000000000l ?T c @sddlZddljjZyddlmZWn"ek rVddl mZYnXddl m Z ddl m Z ddlmZmZddlmZGdd e Zd Zd Zd Zd ZdZdS(iN(uHTTPConnection(ub(u Controller(uClienturequesti(uurlopencBs;|EeZdZdZdZdZdZdS(cCsdS(Nu Hello World!((uself((u6/home/prologic/work/circuits/tests/web/test_unicode.pyuindexscCs|jjjS(N(urequestubodyuread(uself((u6/home/prologic/work/circuits/tests/web/test_unicode.pyu request_bodyscCsdS(Nuä((uself((u6/home/prologic/work/circuits/tests/web/test_unicode.pyu response_bodyscCs|jjdS(NuA(urequestuheaders(uself((u6/home/prologic/work/circuits/tests/web/test_unicode.pyurequest_headersscCsd|jjd     |  |  c Cst|jj|jj}|j|jdd|j}|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d 6}di|d 6}ttj|nd}}}|j}d }||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d 6}di|d 6}ttj|nd}}}|j}d}t|} || k}|stj d|fd|| fidt j ks[tj trjtj tndd6dt j kstj |rtj |ndd6tj | d6tj |d6} di| d6} ttj| nd}}} |jdS( NuGETu/response_bodyiu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uuassert %(py7)supy7uOKu.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suäu0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }ubusupy6upy4uassert %(py8)supy8(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suassert %(py7)s(u==(u0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }uassert %(py8)s(uHTTPConnectionuserveruhostuportuconnecturequestu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneureasonureadubuclose( uwebappu connectionuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8usu @py_assert5u @py_format7u @py_format9((u6/home/prologic/work/circuits/tests/web/test_unicode.pyutest_response_body8s<    |  |  cCs0t|jj|jj}|jtd}idd6}|jdd|||j}|j}d}||k}|s&t j d|fd||fit j |d 6d t j kst j|rt j |nd d 6t j |d 6}di|d6} tt j| nd}}}|j}d}||k}|st j d|fd||fit j |d 6d t j kst j|rt j |nd d 6t j |d 6}di|d6} tt j| nd}}}|j} d}t|} | | k}|st j d|fd| | fidt j kszt jtrt j tndd 6dt j kst j| rt j | ndd 6t j | d6t j |d6} d i| d6} tt j| nd}}} |jdS(!NuuäuAuGETu/request_headersiu==u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)supy2uresponseupy0upy5uassert %(py7)supy7uOKu.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)su0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }ubusupy6upy4uassert %(py8)supy8(u==(u.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)suassert %(py7)s(u==(u0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }uassert %(py8)s(uHTTPConnectionuserveruhostuportuconnectuburequestu getresponseustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneureasonureaduclose(uwebappu connectionubodyuheadersuresponseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8usu @py_assert5u @py_format7u @py_format9((u6/home/prologic/work/circuits/tests/web/test_unicode.pyutest_request_headersFs@      |  |  c Cs$t}|j|jtdd|jj|jjfx|jdkrTqBW|j}|j }d}||k}|s4t j d|fd||fit j |d6dt jkst j|rt j |ndd6t j |d 6t j |d 6}di|d 6}tt j|nd}}}}|j}|j}d}||k}|s%t j d |fd!||fit j |d6dt jkst j|rt j |ndd6t j |d 6t j |d 6}d"i|d 6}tt j|nd}}}}|jj}|jjjd} d} | | k}|st j d#|fd$| | fit j | d6dt jkst j| rt j | ndd6} d%i| d6} tt j| nd}} d}t|}||k}|st j d&|fd'||fidt jksxt jtrt j tndd6dt jkst j|rt j |ndd6t j |d6t j |d 6} d(i| d6}tt j|nd}}}dS()NuGETuhttp://%s:%s/response_headersiu==uL%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.status } == %(py7)supy2uclientupy0upy7upy4uuassert %(py9)supy9uOKuL%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.reason } == %(py7)suAuäu%(py0)s == %(py3)supy3uauassert %(py5)supy5u0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }ubusupy6uassert %(py8)supy8(u==(uL%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.status } == %(py7)suassert %(py9)s(u==(uL%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.response }.reason } == %(py7)suassert %(py9)s(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u0%(py0)s == %(py6)s {%(py6)s = %(py2)s(%(py4)s) }uassert %(py8)s(uClientustartufireurequestuserveruhostuporturesponseuNoneustatusu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationureasonureaduheadersugetub(uwebappuclientu @py_assert1u @py_assert3u @py_assert6u @py_assert5u @py_format8u @py_format10usuau @py_assert2u @py_format4u @py_format6u @py_format7u @py_format9((u6/home/prologic/work/circuits/tests/web/test_unicode.pyutest_response_headersVsX       l  (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruhttplibuHTTPConnectionu ImportErroru http.clientu circuits.sixubu circuits.webu Controllerucircuits.web.clientuClienturequestuhelpersuurlopenuRootu test_indexutest_request_bodyutest_response_bodyutest_request_headersutest_response_headers(((u6/home/prologic/work/circuits/tests/web/test_unicode.pyus      circuits-3.1.0/tests/web/__pycache__/test_digestauth.cpython-32-PYTEST.pyc0000644000014400001440000000705112414363276027343 0ustar prologicusers00000000000000l ?T=c@sddlZddljjZddlZejddd krSejdnddl m Z ddl m Z m Z ddlmZmZdd lmZmZmZGd d e Zd ZdS(iNiiuBroken on Python 3.3(u Controller(u check_authu digest_authi(u HTTPErroruHTTPDigestAuthHandler(uurlopenu build_openeruinstall_openercBs|EeZdZdS(cCsKd}idd6}t|j|j||r2dSt|j|j||S(NuTestuadminu Hello World!(u check_authurequesturesponseu digest_auth(uselfurealmuusers((u9/home/prologic/work/circuits/tests/web/test_digestauth.pyuindexs  N(u__name__u __module__uindex(u __locals__((u9/home/prologic/work/circuits/tests/web/test_digestauth.pyuRoots uRootcCslyt|jjj}Wntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j ksutj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsHdidt j kstj dr%tjdndd6}t tj |nt} | jd|jjjddt| } t| t|jjj}|j} d} | | k}|sTtjd|fd| | fitj| d6dt j kstj | r tj| ndd6} d i| d6}t tj |nd}} tddS(!Niu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Unauthorizedu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalseuTestuadmins Hello World!u%(py0)s == %(py3)supy3usuassert %(py5)s(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalseuHTTPDigestAuthHandleru add_passwordu build_openeruinstall_openeruread(uwebappufueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1uhandleruopenerusu @py_assert2u @py_format4((u9/home/prologic/work/circuits/tests/web/test_digestauth.pyutestsH  |  |!A     l (ii(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuPYVERuskipu circuits.webu Controllerucircuits.web.toolsu check_authu digest_authuhelpersu HTTPErroruHTTPDigestAuthHandleruurlopenu build_openeruinstall_openeruRootutest(((u9/home/prologic/work/circuits/tests/web/test_digestauth.pyus   circuits-3.1.0/tests/web/__pycache__/test_security.cpython-34-PYTEST.pyc0000644000014400001440000000641712414363522027052 0ustar prologicusers00000000000000 ?T @sddlZddljjZddlmZyddlm Z Wn"e k rfddl m Z YnXddl m Z mZGdddeZdd Zd d Zd d ZdS)N) Controller)HTTPConnection)urlopen HTTPErrorc@seZdZddZdS)RootcCsdS)Nz Hello World!)selfrr7/home/prologic/work/circuits/tests/web/test_security.pyindexsz Root.indexN)__name__ __module__ __qualname__r rrrr r s rcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS) Ns Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5)r)rr)rserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)webappfr @py_assert2 @py_assert1 @py_format4 @py_format6rrr test_roots  lr*c Csey!d|jjj}t|Wntk r}z|j}d}||k}|stjd|fd||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}WYdd}~XnEXd }|s[ditj|d6} t tj | nt}dS)Nz%s/../../../../../../etc/passwdir,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)srpy2errassert %(py7)spy7Fassert %(py1)spy1)r)r+r.r0)rrrrrcoderrrrrr r!r"r#) r$urlr-r' @py_assert4 @py_assert3r) @py_format8 @py_assert0 @py_format2rrr test_badpath_notfounds"  |!r9c Cst|jj|jj}|jd}|jd||j}|j}d}||k}|s tj d|fd||fitj |d6tj |d6dt j kstj |rtj |ndd 6}di|d 6}ttj|nt}}}|j}d }||k}|stj d|fd||fitj |d6tj |d6dt j kstj |rtj |ndd 6}di|d 6}ttj|nt}}}|jdS)Nz/../../../../../../etc/passwdGETi-r.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)srr,responserrassert %(py7)sr/zMoved Permanently.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s)r)r;r=)r)r>r=)rrhostportconnectrequest getresponsestatusrrrrrr r!r"r#reasonclose) r$ connectionpathr<r'r4r5r)r6rrr test_badpath_redirect#s,    |  |rI)builtinsr_pytest.assertion.rewrite assertionrewriter circuits.webrhttplibr ImportError http.clienthelpersrrrr*r9rIrrrr s    circuits-3.1.0/tests/web/__pycache__/test_wsgi_application_yield.cpython-26-PYTEST.pyc0000644000014400001440000000330712407376151031725 0ustar prologicusers00000000000000 ?Tuc@sddkZddkiiZddklZddkl Z ddk l Z defdYZ e e Z dZdS( iN(t Controller(t Applicationi(turlopentRootcBseZdZRS(ccsdVdVdS(NsHello sWorld!((tself((sE/home/prologic/work/circuits/tests/web/test_wsgi_application_yield.pytindex s(t__name__t __module__R(((sE/home/prologic/work/circuits/tests/web/test_wsgi_application_yield.pyR scCst|iii}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((sE/home/prologic/work/circuits/tests/web/test_wsgi_application_yield.pyttests  o(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRtcircuits.web.wsgiRthelpersRRt applicationR(((sE/home/prologic/work/circuits/tests/web/test_wsgi_application_yield.pyts circuits-3.1.0/tests/web/__pycache__/test_servers.cpython-33-PYTEST.pyc0000644000014400001440000002270012414363412026662 0ustar prologicusers00000000000000 ?T c@s9ddlZddljjZddlZddlmZddl m Z ddl m Z ddl mZmZddl mZmZddlmZmZejejed ZGd d d eZGd d d e ZGdddeZddZddZddZddZddZ dS(iN(upath(ugaierror(u Controller(uhandleru Component(u BaseServeruServeri(uurlopenuURLErrorucert.pemcBs&|EeZdZdZddZdS(uBaseRootuwebcCsdS(Nu Hello World!((uselfurequesturesponse((u6/home/prologic/work/circuits/tests/web/test_servers.pyurequestsuBaseRoot.requestN(u__name__u __module__u __qualname__uchannelurequest(u __locals__((u6/home/prologic/work/circuits/tests/web/test_servers.pyuBaseRootsuBaseRootcBs |EeZdZddZdS(uRootcCsdS(Nu Hello World!((uself((u6/home/prologic/work/circuits/tests/web/test_servers.pyuindexsu Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u6/home/prologic/work/circuits/tests/web/test_servers.pyuRootsuRootcBs8|EeZdZedddddddZdS( u MakeQuietureadyuchannelu*upriorityg?cGs|jdS(N(ustop(uselfueventuargs((u6/home/prologic/work/circuits/tests/web/test_servers.pyu _on_ready!suMakeQuiet._on_readyN(u__name__u __module__u __qualname__uhandleru _on_ready(u __locals__((u6/home/prologic/work/circuits/tests/web/test_servers.pyu MakeQuietsu MakeQuietc Cstdj|}tj||jdtj||jdyt|jj}WnMtk r}z-t |dt krtd}nWYdd}~XnX|j }d}||k}|snt j d|fd||fit j|d6d tjks+t j|r:t j|nd d 6}di|d 6} tt j| nd}}|j|jddS(Niureadyu registereduhttp://127.0.0.1:9000s Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u unregistered(u==(u%(py0)s == %(py3)suassert %(py5)s(u BaseServeruregisteru MakeQuietuwaituBaseRootuurlopenuhttpubaseuURLErrorutypeugaierrorureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu unregister( umanageruwatcheruserverufueusu @py_assert2u @py_assert1u @py_format4u @py_format6((u6/home/prologic/work/circuits/tests/web/test_servers.pyutest_baseserver&s*    l  utest_baseserverc Cstdj|}tj||jdtj|yt|jj}WnMtk r}z-t |dt krtd}nWYdd}~XnX|j }d}||k}|sat j d|fd||fit j|d6dtjkst j|r-t j|ndd 6}di|d 6} tt j| nd}}|j|jd dS(Niureadyuhttp://127.0.0.1:9000s Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u unregistered(u==(u%(py0)s == %(py3)suassert %(py5)s(uServeruregisteru MakeQuietuwaituRootuurlopenuhttpubaseuURLErrorutypeugaierrorureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu unregister( umanageruwatcheruserverufueusu @py_assert2u @py_assert1u @py_format4u @py_format6((u6/home/prologic/work/circuits/tests/web/test_servers.pyu test_server=s(   l  u test_serverc Cstjdtddddtj|}tj||jdtj|yt |j j }WnMt k r}z-t |dtkrt d}nWYdd}~XnX|j}d}||k}|sztjd|fd||fitj|d 6d tjks7tj|rFtj|nd d 6}di|d6} ttj| nd}}|j|jddS(Nussliusecureucertfileureadyuhttp://127.0.0.1:9000s Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u unregisteredT(u==(u%(py0)s == %(py3)suassert %(py5)s(upytestu importorskipuServeruTrueuCERTFILEuregisteru MakeQuietuwaituRootuurlopenuhttpubaseuURLErrorutypeugaierrorureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu unregister( umanageruwatcheruserverufueusu @py_assert2u @py_assert1u @py_format4u @py_format6((u6/home/prologic/work/circuits/tests/web/test_servers.pyutest_secure_serverSs* !   l  utest_secure_serverc Cstjdkrtjdn|jd}t|}t|j|}tj||jdt j|t j }|j }||}d} || k} | st jd| fd|| fidtjkst j|rt j|ndd6t j|d 6d tjks;t jt rJt jt nd d 6t j|d 6t j|d 6t j| d6} di| d6} tt j| nd}}}} } |j|jddS(Nuwin32uUnsupported Platformu test.sockureadyu==ui%(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.basename }(%(py5)s {%(py5)s = %(py3)s.host }) } == %(py10)suserverupy3upy2upathupy0upy7upy5upy10uuassert %(py12)supy12u unregistered(u==(ui%(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.basename }(%(py5)s {%(py5)s = %(py3)s.host }) } == %(py10)suassert %(py12)s(upytestuPLATFORMuskipuensureustruServeruregisteru MakeQuietuwaituRootupathubasenameuhostu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneu unregister( umanageruwatcherutmpdirusockpathusocketuserveru @py_assert1u @py_assert4u @py_assert6u @py_assert9u @py_assert8u @py_format11u @py_format13((u6/home/prologic/work/circuits/tests/web/test_servers.pyutest_unixserverks(     utest_unixserverc CsBtjdtddd}tddddddt}||j|}tj||jdtj|t |j j }|j }d}||k}|sHt jd|fd||fit j|d 6d tjkst j|rt j|nd d 6} di| d6} tt j| nd}}t |j j }|j }d}||k}|st jd|fd||fit j|d 6d tjkst j|rt j|nd d 6} di| d6} tt j| nd}}|j|jddS(Nussliuchanneluinsecureusecureucertfileureadys Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u unregisteredT(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(upytestu importorskipuServeruTrueuCERTFILEuregisteru MakeQuietuwaituRootuurlopenuhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu unregister( umanageruwatcheruinsecure_serveru secure_serveruserverufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u6/home/prologic/work/circuits/tests/web/test_servers.pyutest_multi_servers~s:    l   l  utest_multi_servers(!ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuosupathusocketugaierroru circuits.webu Controllerucircuitsuhandleru Componentu BaseServeruServeruhelpersuurlopenuURLErrorujoinudirnameu__file__uCERTFILEuBaseRootuRootu MakeQuietutest_baseserveru test_serverutest_secure_serverutest_unixserverutest_multi_servers(((u6/home/prologic/work/circuits/tests/web/test_servers.pyus"      circuits-3.1.0/tests/web/__pycache__/test_wsgi_application.cpython-33-PYTEST.pyc0000644000014400001440000002474412414363412030537 0ustar prologicusers00000000000000 ?T`c@sddlZddljjZddlmZddlm Z ddl m Z m Z m Z GdddeZe eZdd Zd d Zd d ZddZddZddZdS(iN(u Controller(u Applicationi(u urlencodeuurlopenu HTTPErrorcBsP|EeZdZddZddZddZddZd d Zd S( uRootcCsdS(Nu Hello World!((uself((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyuindex su Root.indexcOs3dd|D}dtt|t|fS(NcSs1g|]'}t|tr!|n |jqS((u isinstanceustruencode(u.0uarg((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyu s u"Root.test_args..u%s %s(ureprutuple(uselfuargsukwargs((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyu test_argssuRoot.test_argscCs |jdS(Nu/(uredirect(uself((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyu test_redirectsuRoot.test_redirectcCs |jS(N(u forbidden(uself((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyutest_forbiddensuRoot.test_forbiddencCs |jS(N(unotfound(uself((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyu test_notfoundsuRoot.test_notfoundN(u__name__u __module__u __qualname__uindexu test_argsu test_redirectutest_forbiddenu test_notfound(u __locals__((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyuRoot s     uRootcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( Ns Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyutests  lutestcCsNytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j kswtj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsJdidt j kstj dr'tjdndd6}t tj |ndS(Nu%s/fooiu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Not Foundu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyutest_404$s,  |  |!Autest_404c Csd}idd6dd6dd6}d|jjjdj|f}t|j}t||}|jjd }|d }t |}||k}|s}t j d|fd||fit j |d 6dt jkst jt rt j t ndd6dt jks*t j|r9t j |ndd6t j |d6} di| d6} tt j| nd}}}|d}t |}||k}|st j d|fd||fit j |d 6dt jkst jt rt j t ndd6dt jks<t j|rKt j |ndd6t j |d6} di| d6} tt j| nd}}}dS(Nu1u2u3uoneutwouthreeu%s/test_args/%su/s iu==u0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)supy2uevalupy0uargsupy6upy4uuassert %(py8)supy8iukwargs(u1u2u3(u==(u0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)suassert %(py8)s(u==(u0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)suassert %(py8)s(userveruhttpubaseujoinu urlencodeuencodeuurlopenureadusplituevalu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone( uwebappuargsukwargsuurludataufu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_format9((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyu test_args.s,"  u test_argscCstd|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS(Nu%s/test_redirects Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uurlopenuserveruhttpubaseureadu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uwebappufusu @py_assert2u @py_assert1u @py_format4u @py_format6((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyu test_redirect:s  lu test_redirectcCsNytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j kswtj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsJdidt j kstj dr'tjdndd6}t tj |ndS(Nu%s/test_forbiddeniu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Forbiddenu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyutest_forbidden@s,  |  |!Autest_forbiddencCsNytd|jjjWntk r}z|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj|d6dt j kswtj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}WYdd}~Xn`XdsJdidt j kstj dr'tjdndd6}t tj |ndS(Nu%s/test_notfoundiu==u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)supy2ueupy0upy5uuassert %(py7)supy7u Not Foundu+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py0)suFalse(u==(u,%(py2)s {%(py2)s = %(py0)s.code } == %(py5)suassert %(py7)s(u==(u+%(py2)s {%(py2)s = %(py0)s.msg } == %(py5)suassert %(py7)sFuassert %(py0)s(uurlopenuserveruhttpubaseu HTTPErrorucodeu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneumsguFalse(uwebappueu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyu test_notfoundJs,  |  |!Au test_notfound(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aru circuits.webu Controllerucircuits.web.wsgiu Applicationuhelpersu urlencodeuurlopenu HTTPErroruRootu applicationutestutest_404u test_argsu test_redirectutest_forbiddenu test_notfound(((u?/home/prologic/work/circuits/tests/web/test_wsgi_application.pyus    circuits-3.1.0/tests/web/__pycache__/test_value.cpython-34-PYTEST.pyc0000644000014400001440000000340212414363522026306 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZddlm Z m Z ddl m Z Gddde Z Gdd d e ZGd d d eZd d ZdS)N) Controller)Event Component)urlopenc@seZdZdZdS)helloz hello EventN)__name__ __module__ __qualname____doc__r r 4/home/prologic/work/circuits/tests/web/test_value.pyr s rc@seZdZddZdS)AppcCsdS)Nz Hello World!r )selfr r r rsz App.helloN)rr r rr r r r r s rc@seZdZddZdS)RootcCs|jtS)N)firer)rr r r indexsz Root.indexN)rr r rr r r r rs rcCstj|t|jjj}|j}d}||k}|stjd |fd ||fitj |d6dt j kstj |rtj |ndd6}d i|d 6}t tj|nt}}dS) Ns Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5)r)rr)rregisterrserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)webappfr @py_assert2 @py_assert1 @py_format4 @py_format6r r r tests  lr/)builtinsr#_pytest.assertion.rewrite assertionrewriter circuits.webrcircuitsrrhelpersrrrrr/r r r r s circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_null_response.cpython-26-PYTEST.pyc0000644000014400001440000000354412407376151032650 0ustar prologicusers00000000000000 ?Tc@sjddkZddkiiZddklZddkl Z de fdYZ dZ dZ dS( iNi(turlopen(t ControllertRootcBseZdZRS(cOsdS(NtERROR((tselftargstkwargs((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pytindex s(t__name__t __module__R(((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pyRscCsd}||gdgS(Ns200 OKt((tenvirontstart_responsetstatus((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pyt applications cCst|iii}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}dS( NR s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pyttests  o( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthelpersRt circuits.webRRRR&(((sI/home/prologic/work/circuits/tests/web/test_wsgi_gateway_null_response.pyts  circuits-3.1.0/tests/web/__pycache__/test_logger.cpython-26-PYTEST.pyc0000644000014400001440000001413112407376151026457 0ustar prologicusers00000000000000 ?T c @sddkZddkiiZddkZyddklZWn#ej oddk lZnXddk l Z l Z l Z ddklZlZddklZdefdYZd efd YZd Zd Zd ZdS(iN(tStringIO(tgaierrort gethostbynamet gethostname(t ControllertLoggeri(turlopent DummyLoggercBseZdZdZRS(cCs tt|id|_dS(N(tsuperRt__init__tNonetmessage(tself((s5/home/prologic/work/circuits/tests/web/test_logger.pyR scCs ||_dS(N(R (R R ((s5/home/prologic/work/circuits/tests/web/test_logger.pytinfos(t__name__t __module__R R (((s5/home/prologic/work/circuits/tests/web/test_logger.pyRs tRootcBseZdZRS(cCsdS(Ns Hello World!((R ((s5/home/prologic/work/circuits/tests/web/test_logger.pytindexs(RRR(((s5/home/prologic/work/circuits/tests/web/test_logger.pyRsc Cst}td|}|i|t|iii}|i}d}||j}|pti d|fd||fhdt i jpti |oti |ndd6ti |d6}dh|d 6}tti|nd}}|id |ii}ytt} Wntj o d } nXh} | | d R?R@RAR6RBRC((s5/home/prologic/work/circuits/tests/web/test_logger.pyt test_loggerFsJ    o           oc Cst|id}td|}|i|t|d}t|iii}|i }d}||j}|pt i d|fd||fhdt i jpt i|ot i|ndd6t i|d 6}d h|d 6} tt i| nd}}|id |i i}ytt} Wntj o d } nXh} | | dR?R@RAR6RBRC((s5/home/prologic/work/circuits/tests/web/test_logger.pyt test_filenamehsP   o           o (t __builtin__R+t_pytest.assertion.rewritet assertiontrewriteR)R3Rt ImportErrortiotsocketRRRt circuits.webRRthelpersRtobjectRRRDRFRK(((s5/home/prologic/work/circuits/tests/web/test_logger.pyts    $ "circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway.cpython-26-PYTEST.pyc0000644000014400001440000000272512407376151027700 0ustar prologicusers00000000000000 ?Tcc@sDddkZddkiiZddklZdZdZ dS(iNi(turlopencCs d}dg}|||dS(Ns200 OKs Content-types text/plains Hello World!(s Content-types text/plain((tenvirontstart_responsetstatustresponse_headers((s;/home/prologic/work/circuits/tests/web/test_wsgi_gateway.pyt applications  cCst|iii}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((s;/home/prologic/work/circuits/tests/web/test_wsgi_gateway.pyttest s  o( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthelpersRRR(((s;/home/prologic/work/circuits/tests/web/test_wsgi_gateway.pyts  circuits-3.1.0/tests/web/__pycache__/test_generator.cpython-26-PYTEST.pyc0000644000014400001440000000331312407376151027166 0ustar prologicusers00000000000000 ?T_c@saddkZddkiiZddklZddkl Z defdYZ dZ dS(iN(t Controlleri(turlopentRootcBseZdZRS(cCsd}|S(NcssdVdVdS(NsHello sWorld!((((s8/home/prologic/work/circuits/tests/web/test_generator.pytresponse s((tselfR((s8/home/prologic/work/circuits/tests/web/test_generator.pytindex s (t__name__t __module__R(((s8/home/prologic/work/circuits/tests/web/test_generator.pyRscCst|iii}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((s8/home/prologic/work/circuits/tests/web/test_generator.pyttests  o( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRthelpersRRR(((s8/home/prologic/work/circuits/tests/web/test_generator.pyts  circuits-3.1.0/tests/web/__pycache__/test_expose.cpython-26-PYTEST.pyc0000644000014400001440000000544612407376151026514 0ustar prologicusers00000000000000 ?Tc@sgddkZddkiiZddklZlZddk l Z defdYZ dZ dS(iN(texposet Controlleri(turlopentRootcBs>eZdZeddZedddZRS(cCsdS(Ns Hello World!((tself((s5/home/prologic/work/circuits/tests/web/test_expose.pytindexss+testcCsdS(Nttest((R((s5/home/prologic/work/circuits/tests/web/test_expose.pyR ssfoo+bartfoo_barcCsdS(Ntfoobar((R((s5/home/prologic/work/circuits/tests/web/test_expose.pyRs(t__name__t __module__RRRR(((s5/home/prologic/work/circuits/tests/web/test_expose.pyRs cCst|iii}|i}d}||j}|ptid|fd||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}td |iii}|i}d }||j}|ptid|fd||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}td |iii}|i}d }||j}|ptid|fd||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}td |iii}|i}d }||j}|ptid|fd||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}dS(Ns Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5s%s/+testRs %s/foo+barRs %s/foo_bar(s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(twebapptfR t @py_assert2t @py_assert1t @py_format4t @py_format6((s5/home/prologic/work/circuits/tests/web/test_expose.pyRsH  o   o   o   o( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRRthelpersRRR(((s5/home/prologic/work/circuits/tests/web/test_expose.pyts circuits-3.1.0/tests/web/__pycache__/test_call_wait.cpython-26-PYTEST.pyc0000644000014400001440000000446212407376151027145 0ustar prologicusers00000000000000 ?TJc@sddkZddkiiZddklZddkl Z l Z ddk l Z de fdYZ de fd YZd efd YZd ZdS( iN(t Controller(t ComponenttEventi(turlopentfoocBseZdZRS(s foo Event(t__name__t __module__t__doc__(((s8/home/prologic/work/circuits/tests/web/test_call_wait.pyR stAppcBseZdZdZRS(tappcCsdS(Ns Hello World!((tself((s8/home/prologic/work/circuits/tests/web/test_call_wait.pyRs(RRtchannelR(((s8/home/prologic/work/circuits/tests/web/test_call_wait.pyR stRootcBseZdZRS(ccs"|itdV}|iVdS(NR (tcallRtvalue(R R((s8/home/prologic/work/circuits/tests/web/test_call_wait.pytindexs(RRR(((s8/home/prologic/work/circuits/tests/web/test_call_wait.pyR sc Csti|}zt|iii}|i}d}||j}|ptid |fd ||fhdt i jpti |oti |ndd6ti |d6}dh|d6}t ti|nd}}Wd|iXdS( Ns Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(RtregisterRtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonet unregister(twebappR tfRt @py_assert2t @py_assert1t @py_format4t @py_format6((s8/home/prologic/work/circuits/tests/web/test_call_wait.pyttests  o(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRt circuits.webRtcircuitsRRthelpersRRRR R)(((s8/home/prologic/work/circuits/tests/web/test_call_wait.pyts circuits-3.1.0/tests/web/__pycache__/test_bad_requests.cpython-26-PYTEST.pyc0000644000014400001440000000465412407376151027672 0ustar prologicusers00000000000000 ?Tc @sddkZddkiiZyddklZWn#ej oddk lZnXddk l Z ddk l Z de fdYZdZdS(iN(tHTTPConnection(tb(t ControllertRootcBseZdZRS(cCsdS(Ns Hello World!((tself((s;/home/prologic/work/circuits/tests/web/test_bad_requests.pytindexs(t__name__t __module__R(((s;/home/prologic/work/circuits/tests/web/test_bad_requests.pyR scCs1t|ii|ii}|i|iddd|idd|itd|i |i }|i }d}||j}|pt i d|fd||fhd tijpt i|ot i|nd d 6t i|d 6t i|d 6}dh|d6}tt i|nd}}}|i}d}||j}|pt i d|fd||fhd tijpt i|ot i|nd d 6t i|d 6t i|d 6}dh|d6}tt i|nd}}}|idS(NtGETt/sHTTP/1.1t ConnectiontclosesX-Foois==s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)stresponsetpy0tpy2tpy5sassert %(py7)stpy7s Bad Requests.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)s(Rtserverthosttporttconnectt putrequestt putheadert_outputRt endheaderst getresponsetstatust @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetreasonR (twebappt connectionR t @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8((s;/home/prologic/work/circuits/tests/web/test_bad_requests.pyttest_bad_headers0       (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthttplibRt ImportErrort http.clientt circuits.sixRt circuits.webRRR,(((s;/home/prologic/work/circuits/tests/web/test_bad_requests.pyts circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_yield.cpython-26-PYTEST.pyc0000644000014400001440000000277012407376151031066 0ustar prologicusers00000000000000 ?Toc@sDddkZddkiiZddklZdZdZ dS(iNi(turlopenccs*d}dg}|||dVdVdS(Ns200 OKs Content-types text/plainsHello sWorld!(s Content-types text/plain((tenvirontstart_responsetstatustresponse_headers((sA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_yield.pyt applications   cCst|iii}|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}dS( Ns Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(Rtserverthttptbasetreadt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(twebapptfRt @py_assert2t @py_assert1t @py_format4t @py_format6((sA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_yield.pyttests  o( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRthelpersRRR(((sA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_yield.pyts  circuits-3.1.0/tests/web/__pycache__/test_large_post.cpython-27-PYTEST.pyc0000644000014400001440000000530012414363102027324 0ustar prologicusers00000000000000 ?Tc@sgddlZddljjZddlmZddlm Z m Z defdYZ dZ dS(iN(t Controlleri(t urlencodeturlopentRootcBseZdZRS(cOs2td|D}djt|t|S(Ncss6|],}t|tkr*|jdn|VqdS(sutf-8N(ttypetstrtencode(t.0tx((s9/home/prologic/work/circuits/tests/web/test_large_post.pys ss{0} {1}(ttupletformattrepr(tselftargstkwargs((s9/home/prologic/work/circuits/tests/web/test_large_post.pytindex s (t__name__t __module__R(((s9/home/prologic/work/circuits/tests/web/test_large_post.pyRsc Csd}iddd6}d|jjjdj|f}t|jd }t||}|jjd }|d }t |}||k}|svt j d|fd||fit j |d6dt jkst jt rt j t ndd6dt jks#t j|r2t j |ndd6t j |d6} di| d6} tt j| nd}}}|d}t |}||k}|st j d|fd||fit j |d6dt jkst jt r t j t ndd6dt jks5t j|rDt j |ndd6t j |d6} di| d6} tt j| nd}}}dS( Nt1t2t3titdatas%s/%st/sutf-8s is==s0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)stpy2tevaltpy0R tpy6tpy4tsassert %(py8)stpy8iR(RRR(s==(s0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)ssassert %(py8)s(s==(s0%(py4)s {%(py4)s = %(py0)s(%(py2)s) } == %(py6)ssassert %(py8)s(tserverthttptbasetjoinRRRtreadtsplitRt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone( twebappR RturlRtft @py_assert1t @py_assert3t @py_assert5t @py_format7t @py_format9((s9/home/prologic/work/circuits/tests/web/test_large_post.pyttests,"  ( t __builtin__R(t_pytest.assertion.rewritet assertiontrewriteR%t circuits.webRthelpersRRRR6(((s9/home/prologic/work/circuits/tests/web/test_large_post.pyts  circuits-3.1.0/tests/web/__pycache__/test_wsgi_gateway_yield.cpython-34-PYTEST.pyc0000644000014400001440000000227412414363523031061 0ustar prologicusers00000000000000 ?To@sJddlZddljjZddlmZddZddZ dS)N)urlopenccs*d}dg}|||dVdVdS)Nz200 OK Content-type text/plainzHello zWorld!)rr)environstart_responsestatusresponse_headersrrA/home/prologic/work/circuits/tests/web/test_wsgi_gateway_yield.py applications   r cCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS) Ns Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5)r )rr)rserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)webappfr @py_assert2 @py_assert1 @py_format4 @py_format6rrr tests  lr() builtinsr_pytest.assertion.rewrite assertionrewriterhelpersrr r(rrrr s  circuits-3.1.0/tests/web/__pycache__/test_logger.cpython-33-PYTEST.pyc0000644000014400001440000001672112414363412026456 0ustar prologicusers00000000000000 ?T c @sddlZddljjZddlZyddlmZWn"ek rbddl mZYnXddl m Z m Z m Z ddlmZmZddlmZGdddeZGd d d eZd d Zd dZddZdS(iN(uStringIO(ugaierroru gethostbynameu gethostname(u ControlleruLoggeri(uurlopencs2|EeZdZfddZddZS(u DummyLoggercs tt|jd|_dS(N(usuperu DummyLoggeru__init__uNoneumessage(uself(u __class__(u5/home/prologic/work/circuits/tests/web/test_logger.pyu__init__suDummyLogger.__init__cCs ||_dS(N(umessage(uselfumessage((u5/home/prologic/work/circuits/tests/web/test_logger.pyuinfosuDummyLogger.info(u__name__u __module__u __qualname__u__init__uinfo(u __locals__((u __class__u5/home/prologic/work/circuits/tests/web/test_logger.pyu DummyLoggersu DummyLoggercBs |EeZdZddZdS(uRootcCsdS(Nu Hello World!((uself((u5/home/prologic/work/circuits/tests/web/test_logger.pyuindexsu Root.indexN(u__name__u __module__u __qualname__uindex(u __locals__((u5/home/prologic/work/circuits/tests/web/test_logger.pyuRootsuRootcCst}td|}|j|t|jjj}|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nd}}|jd |jj}ytt} Wntk rId } YnXi} | | d s     $ "circuits-3.1.0/tests/web/__pycache__/test_conn.cpython-34-PYTEST.pyc0000644000014400001440000000425212414363522026133 0ustar prologicusers00000000000000 ?T @sddlZddljjZyddlmZWn"ek rVddl mZYnXddl m Z Gddde Z ddZ dS)N)HTTPConnection) Controllerc@seZdZddZdS)RootcCsdS)Nz Hello World!)selfrr3/home/prologic/work/circuits/tests/web/test_conn.pyindex sz Root.indexN)__name__ __module__ __qualname__rrrrrr s rc Cst|jj|jj}d|_|jxtdD]}|jdd|j}|j }d}||k}|s#t j d|fd||fit j |d6t j |d 6d t jkst j|rt j |nd d 6}di|d6}tt j|nt}}}|j}d}||k}|st j d|fd||fit j |d6t j |d 6d t jkst j|rt j |nd d 6}di|d6}tt j|nt}}}|j} d} | | k}|st j d|fd| | fit j | d6dt jks{t j| rt j | ndd 6} di| d6}tt j|nt}} q;W|jdS)NFGET/==.%(py2)s {%(py2)s = %(py0)s.status } == %(py5)spy5py2responsepy0assert %(py7)spy7OK.%(py2)s {%(py2)s = %(py0)s.reason } == %(py5)ss Hello World!%(py0)s == %(py3)spy3sassert %(py5)s)r)rr)r)rr)r)rr)rserverhostport auto_openconnectrangerequest getresponsestatus @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonereasonreadclose) webapp connectionir @py_assert1 @py_assert4 @py_assert3 @py_format6 @py_format8r @py_assert2 @py_format4rrrtests>     |  |  lr>)builtinsr+_pytest.assertion.rewrite assertionrewriter(httplibr ImportError http.client circuits.webrrr>rrrrs  circuits-3.1.0/tests/web/__pycache__/test_dispatcher2.cpython-27-PYTEST.pyc0000644000014400001440000001760212414363102027405 0ustar prologicusers00000000000000 ?T*c@sddlZddljjZddlmZmZddl m Z defdYZ defdYZ d efd YZ d Zd Zd ZdZdZdZdS(iN(texposet Controlleri(turlopentRootcBsAeZdZdZdZeddZdZRS(cOs7tt|j|||t7}|t7}dS(N(tsuperRt__init__tHellotWorld(tselftargstkwargs((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR s cCsdS(Ntindex((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR scCsdS(Nthello1((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR sthello2cCsdS(NR ((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR scCsd|S(Nsquery %s((treqttest((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pytquerys(t__name__t __module__RR R RR R(((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR s    RcBs)eZdZdZdZdZRS(s/hellocCsdS(Ns hello index((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR scCsdS(Ns hello test((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR#scCsd|S(Nshello query %s((RR((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR&s(RRtchannelR RR(((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyRs  RcBs eZdZdZdZRS(s/worldcCsdS(Ns world index((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR -scCsdS(Ns world test((R((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR0s(RRRR R(((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyR*s cCsd|jjj}t|}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS(Ns %s/hello1R s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(tserverthttptbaseRtreadt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(twebappturltfRt @py_assert2t @py_assert1t @py_format4t @py_format6((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyt test_simple4s   lcCsd|jjj}t|}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS(Ns %s/hello2R s==s%(py0)s == %(py3)sRRRRsassert %(py5)sR(s==(s%(py0)s == %(py3)ssassert %(py5)s(RRRRRRRRR R!R"R#R$R%(R&R'R(RR)R*R+R,((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyt test_expose;s   lcCst|jjj}|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( NR s==s%(py0)s == %(py3)sRRRRsassert %(py5)sR(s==(s%(py0)s == %(py3)ssassert %(py5)s(RRRRRRRRR R!R"R#R$R%(R&R(RR)R*R+R,((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyt test_indexBs  lcCsd|jjj}t|}|j}d}||k}|stjd |fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}d |jjj}t|}|j}d }||k}|stjd|fd||fitj|d6dtj kswtj |rtj|ndd6}di|d 6}t tj |nd}}dS(Ns %s/hello/s hello indexs==s%(py0)s == %(py3)sRRRRsassert %(py5)sRs %s/world/s world index(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(RRRRRRRRR R!R"R#R$R%(R&R'R(RR)R*R+R,((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyttest_controller_indexHs(   l    lcCsd|jjj}t|}|j}d}||k}|stjd |fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}d |jjj}t|}|j}d }||k}|stjd|fd||fitj|d6dtj kswtj |rtj|ndd6}di|d 6}t tj |nd}}dS(Ns %s/hello/tests hello tests==s%(py0)s == %(py3)sRRRRsassert %(py5)sRs %s/world/tests world test(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(RRRRRRRRR R!R"R#R$R%(R&R'R(RR)R*R+R,((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyttest_controller_exposeTs(   l    lcCsd|jjj}t|}|j}d}||k}|stjd |fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}d |jjj}t|}|j}d }||k}|stjd|fd||fitj|d6dtj kswtj |rtj|ndd6}di|d 6}t tj |nd}}dS(Ns%s/query?test=1squery 1s==s%(py0)s == %(py3)sRRRRsassert %(py5)sRs%s/hello/query?test=2s hello query 2(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(RRRRRRRRR R!R"R#R$R%(R&R'R(RR)R*R+R,((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyt test_query`s(   l    l(t __builtin__R t_pytest.assertion.rewritet assertiontrewriteRt circuits.webRRthelpersRRRRR-R.R/R0R1R2(((s:/home/prologic/work/circuits/tests/web/test_dispatcher2.pyts      circuits-3.1.0/tests/web/__pycache__/test_utils.cpython-32-PYTEST.pyc0000644000014400001440000000606212414363276026343 0ustar prologicusers00000000000000l ?Tjc @sddlZddljjZddlmZyddlm Z Wn7e k r{ddl Z e j de j j Z YnXddlmZddlmZdZdZdS( iN(uBytesIO(u decompressi(ucompress(u get_rangescCs)d}d}t||}dg}||k}|stjd|fd||fitj|d6tj|d6d tjkstjtrtjtnd d 6tj|d 6tj|d 6}di|d6}ttj|nd}}}}}d}d}t||}ddg}||k}|stjd|fd||fitj|d6tj|d6d tjkstjtrtjtnd d 6tj|d 6tj|d 6}di|d6}ttj|nd}}}}}dS(Nu bytes=3-6iiiu==u9%(py6)s {%(py6)s = %(py0)s(%(py2)s, %(py4)s) } == %(py9)supy2upy9u get_rangesupy0upy6upy4uuassert %(py11)supy11u bytes=2-4,-1ii(ii(u==(u9%(py6)s {%(py6)s = %(py0)s(%(py2)s, %(py4)s) } == %(py9)suassert %(py11)s(ii(ii(u==(u9%(py6)s {%(py6)s = %(py0)s(%(py2)s, %(py4)s) } == %(py9)suassert %(py11)s( u get_rangesu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(u @py_assert1u @py_assert3u @py_assert5u @py_assert8u @py_assert7u @py_format10u @py_format12((u4/home/prologic/work/circuits/tests/web/test_utils.pyu test_rangess(  cCsd}t|}djt|d}t|}||k}|stjd |fd||fidtjkstj|rtj |ndd6dtjkstj|rtj |ndd 6}di|d 6}t tj |nd}|j dS(Ns Hello World!siu==u%(py0)s == %(py2)susupy2u uncompressedupy0uuassert %(py4)supy4(u==(u%(py0)s == %(py2)suassert %(py4)s(uBytesIOujoinucompressu decompressu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuclose(usucontentsu compressedu uncompressedu @py_assert1u @py_format3u @py_format5((u4/home/prologic/work/circuits/tests/web/test_utils.pyu test_gzips   (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruiouBytesIOugzipu decompressu ImportErroruzlibu decompressobju MAX_WBITSucircuits.web.utilsucompressu get_rangesu test_rangesu test_gzip(((u4/home/prologic/work/circuits/tests/web/test_utils.pyus    circuits-3.1.0/tests/web/__pycache__/test_vpath_args.cpython-34-PYTEST.pyc0000644000014400001440000000372412414363522027337 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZmZddl m Z GdddeZ GdddeZ d d Z dS) N)expose Controller)urlopenc@s(eZdZedddZdS)Rootztest.txtcCsdS)Nz Hello world!)selfrr9/home/prologic/work/circuits/tests/web/test_vpath_args.pyindex sz Root.indexN)__name__ __module__ __qualname__rr rrrr rs rc@s1eZdZdZeddddZdS)Leafz/testztest.txtNcCs|dkrdSd|SdS)Nz Hello world!z Hello world! r)rvpathrrr r s z Leaf.index)r r r channelrr rrrr rs  rcCstj|t|jjjd}|j}d}||k}|stjd |fd ||fitj |d6dt j kstj |rtj |ndd6}di|d 6}t tj|nt}}t|jjjd }|j}d}||k}|stjd|fd||fitj |d6dt j ks{tj |rtj |ndd6}di|d 6}t tj|nt}}dS)Nz /test.txts Hello world!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5z/test/test.txt)r)rr)r)rr)rregisterrserverhttpbaseread @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)webappfr @py_assert2 @py_assert1 @py_format4 @py_format6rrr tests&  l   lr-)builtinsr!_pytest.assertion.rewrite assertionrewriter circuits.webrrhelpersrrrr-rrrr s  circuits-3.1.0/tests/web/test_cookies.py0000644000014400001440000000125212402037676021324 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Controller from .helpers import build_opener, HTTPCookieProcessor from .helpers import CookieJar class Root(Controller): def index(self): visited = self.cookie.get("visited") if visited and visited.value: return "Hello again!" else: self.cookie["visited"] = True return "Hello World!" def test(webapp): cj = CookieJar() opener = build_opener(HTTPCookieProcessor(cj)) f = opener.open(webapp.server.http.base) s = f.read() assert s == b"Hello World!" f = opener.open(webapp.server.http.base) s = f.read() assert s == b"Hello again!" circuits-3.1.0/tests/web/test_expose.py0000644000014400001440000000127712402037676021202 0ustar prologicusers00000000000000from circuits.web import expose, Controller from .helpers import urlopen class Root(Controller): def index(self): return "Hello World!" @expose("+test") def test(self): return "test" @expose("foo+bar", "foo_bar") def foobar(self): return "foobar" def test(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" f = urlopen("%s/+test" % webapp.server.http.base) s = f.read() assert s == b"test" f = urlopen("%s/foo+bar" % webapp.server.http.base) s = f.read() assert s == b"foobar" f = urlopen("%s/foo_bar" % webapp.server.http.base) s = f.read() assert s == b"foobar" circuits-3.1.0/tests/web/test_null_response.py0000644000014400001440000000051312402037676022557 0ustar prologicusers00000000000000from circuits.web import Controller from .helpers import urlopen, HTTPError class Root(Controller): def index(self): pass def test(webapp): try: urlopen(webapp.server.http.base) except HTTPError as e: assert e.code == 404 assert e.msg == "Not Found" else: assert False circuits-3.1.0/tests/web/test_wsgi_gateway_null_response.py0000644000014400001440000000060412402037676025332 0ustar prologicusers00000000000000#!/usr/bin/env python from .helpers import urlopen from circuits.web import Controller class Root(Controller): def index(self, *args, **kwargs): return "ERROR" def application(environ, start_response): status = "200 OK" start_response(status, []) return [""] def test(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b"" circuits-3.1.0/tests/web/test_wsgi_gateway_generator.py0000644000014400001440000000064312402037676024433 0ustar prologicusers00000000000000#!/usr/bin/env python from .helpers import urlopen def application(environ, start_response): status = "200 OK" response_headers = [("Content-type", "text/plain")] start_response(status, response_headers) def response(): yield "Hello " yield "World!" return response() def test(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" circuits-3.1.0/tests/web/multipartform.pyc0000644000014400001440000000502012420400436021662 0ustar prologicusers00000000000000 ?Tc@sFddlZddlmZddlmZdefdYZdS(iN(t guess_type(t_make_boundaryt MultiPartFormcBs/eZdZdZddZdZRS(cCsg|_t|_dS(N(tfilesRtboundary(tself((s7/home/prologic/work/circuits/tests/web/multipartform.pyt__init__ s cCs d|jS(Ns multipart/form-data; boundary=%s(R(R((s7/home/prologic/work/circuits/tests/web/multipartform.pytget_content_type scCsQ|j}|dkr1t|dp+d}n|jj||||fdS(Nisapplication/octet-stream(treadtNoneRRtappend(Rt fieldnametfilenametfdtmimetypetbody((s7/home/prologic/work/circuits/tests/web/multipartform.pytadd_files  csg}td|jd|jfdt|jD|jfd|jDttj|}|jtd|jdt}x+|D]#}||7}|tdd7}qW|S(Ns--%stasciic3sU|]K\}}td|dtt|tr=|n t|dgVqdS(s)Content-Disposition: form-data; name="%s"RN(t bytearraytbytest isinstance(t.0tktv(t part_boundary(s7/home/prologic/work/circuits/tests/web/multipartform.pys sc3sq|]g\}}}}td||fdtd|dtt|trY|n t|dgVqdS(s8Content-Disposition: form-data; name="%s"; filename="%s"RsContent-Type: %sN(RRR(RR R t content_typeR(R(s7/home/prologic/work/circuits/tests/web/multipartform.pys &s s--%s--s ( RRtextendtlisttitemsRt itertoolstchainR (Rtpartst flattenedtrestitem((Rs7/home/prologic/work/circuits/tests/web/multipartform.pyRs    N(t__name__t __module__RRR RR(((s7/home/prologic/work/circuits/tests/web/multipartform.pyRs   (Rt mimetypesRtemail.generatorRtdictR(((s7/home/prologic/work/circuits/tests/web/multipartform.pyts circuits-3.1.0/tests/web/test_bad_requests.py0000644000014400001440000000135712402037676022357 0ustar prologicusers00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- try: from httplib import HTTPConnection except ImportError: from http.client import HTTPConnection # NOQA from circuits.six import b from circuits.web import Controller class Root(Controller): def index(self): return "Hello World!" def test_bad_header(webapp): connection = HTTPConnection(webapp.server.host, webapp.server.port) connection.connect() connection.putrequest("GET", "/", "HTTP/1.1") connection.putheader("Connection", "close") connection._output(b("X-Foo")) # Bad Header connection.endheaders() response = connection.getresponse() assert response.status == 400 assert response.reason == "Bad Request" connection.close() circuits-3.1.0/tests/web/static/0000755000014400001440000000000012425013644017540 5ustar prologicusers00000000000000circuits-3.1.0/tests/web/static/unicode.txt0000644000014400001440000003334412402037676021744 0ustar prologicusers00000000000000 UTF-8 encoded sample plain-text file ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ Markus Kuhn [ˈmaʳkʊs kuːn] — 2002-07-25 The ASCII compatible UTF-8 encoding used in this plain-text file is defined in Unicode, ISO 10646-1, and RFC 2279. Using Unicode/UTF-8, you can write in emails and source code things such as Mathematics and sciences: ∮ E⋅da = Q, n → ∞, ∑ f(i) = ∏ g(i), ⎧⎡⎛┌─────┐⎞⎤⎫ ⎪⎢⎜│a²+b³ ⎟⎥⎪ ∀x∈ℝ: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β), ⎪⎢⎜│───── ⎟⎥⎪ ⎪⎢⎜⎷ c₈ ⎟⎥⎪ ℕ ⊆ ℕ₀ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ, ⎨⎢⎜ ⎟⎥⎬ ⎪⎢⎜ ∞ ⎟⎥⎪ ⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (⟦A⟧ ⇔ ⟪B⟫), ⎪⎢⎜ ⎲ ⎟⎥⎪ ⎪⎢⎜ ⎳aⁱ-bⁱ⎟⎥⎪ 2H₂ + O₂ ⇌ 2H₂O, R = 4.7 kΩ, ⌀ 200 mm ⎩⎣⎝i=1 ⎠⎦⎭ Linguistics and dictionaries: ði ıntəˈnæʃənəl fəˈnɛtık əsoʊsiˈeıʃn Y [ˈʏpsilɔn], Yen [jɛn], Yoga [ˈjoːgɑ] APL: ((V⍳V)=⍳⍴V)/V←,V ⌷←⍳→⍴∆∇⊃‾⍎⍕⌈ Nicer typography in plain text files: ╔══════════════════════════════════════════╗ ║ ║ ║ • ‘single’ and “double” quotes ║ ║ ║ ║ • Curly apostrophes: “We’ve been here” ║ ║ ║ ║ • Latin-1 apostrophe and accents: '´` ║ ║ ║ ║ • ‚deutsche‘ „Anführungszeichen“ ║ ║ ║ ║ • †, ‡, ‰, •, 3–4, —, −5/+5, ™, … ║ ║ ║ ║ • ASCII safety test: 1lI|, 0OD, 8B ║ ║ ╭─────────╮ ║ ║ • the euro symbol: │ 14.95 € │ ║ ║ ╰─────────╯ ║ ╚══════════════════════════════════════════╝ Combining characters: STARGΛ̊TE SG-1, a = v̇ = r̈, a⃑ ⊥ b⃑ Greek (in Polytonic): The Greek anthem: Σὲ γνωρίζω ἀπὸ τὴν κόψη τοῦ σπαθιοῦ τὴν τρομερή, σὲ γνωρίζω ἀπὸ τὴν ὄψη ποὺ μὲ βία μετράει τὴ γῆ. ᾿Απ᾿ τὰ κόκκαλα βγαλμένη τῶν ῾Ελλήνων τὰ ἱερά καὶ σὰν πρῶτα ἀνδρειωμένη χαῖρε, ὦ χαῖρε, ᾿Ελευθεριά! From a speech of Demosthenes in the 4th century BC: Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι, ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿ εἰς τοῦτο προήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ πρότερον κακῶς σκέψασθαι δέον. οὐδέν οὖν ἄλλο μοι δοκοῦσιν οἱ τὰ τοιαῦτα λέγοντες ἢ τὴν ὑπόθεσιν, περὶ ἧς βουλεύεσθαι, οὐχὶ τὴν οὖσαν παριστάντες ὑμῖν ἁμαρτάνειν. ἐγὼ δέ, ὅτι μέν ποτ᾿ ἐξῆν τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον τιμωρήσασθαι, καὶ μάλ᾿ ἀκριβῶς οἶδα· ἐπ᾿ ἐμοῦ γάρ, οὐ πάλαι γέγονεν ταῦτ᾿ ἀμφότερα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν προλαβεῖν ἡμῖν εἶναι τὴν πρώτην, ὅπως τοὺς συμμάχους σώσομεν. ἐὰν γὰρ τοῦτο βεβαίως ὑπάρξῃ, τότε καὶ περὶ τοῦ τίνα τιμωρήσεταί τις καὶ ὃν τρόπον ἐξέσται σκοπεῖν· πρὶν δὲ τὴν ἀρχὴν ὀρθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι περὶ τῆς τελευτῆς ὁντινοῦν ποιεῖσθαι λόγον. Δημοσθένους, Γ´ ᾿Ολυνθιακὸς Georgian: From a Unicode conference invitation: გთხოვთ ახლავე გაიაროთ რეგისტრაცია Unicode-ის მეათე საერთაშორისო კონფერენციაზე დასასწრებად, რომელიც გაიმართება 10-12 მარტს, ქ. მაინცში, გერმანიაში. კონფერენცია შეჰკრებს ერთად მსოფლიოს ექსპერტებს ისეთ დარგებში როგორიცაა ინტერნეტი და Unicode-ი, ინტერნაციონალიზაცია და ლოკალიზაცია, Unicode-ის გამოყენება ოპერაციულ სისტემებსა, და გამოყენებით პროგრამებში, შრიფტებში, ტექსტების დამუშავებასა და მრავალენოვან კომპიუტერულ სისტემებში. Russian: From a Unicode conference invitation: Зарегистрируйтесь сейчас на Десятую Международную Конференцию по Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии. Конференция соберет широкий круг экспертов по вопросам глобального Интернета и Unicode, локализации и интернационализации, воплощению и применению Unicode в различных операционных системах и программных приложениях, шрифтах, верстке и многоязычных компьютерных системах. Thai (UCS Level 2): Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese classic 'San Gua'): [----------------------------|------------------------] ๏ แผ่นดินฮั่นเสื่อมโทรมแสนสังเวช พระปกเกศกองบู๊กู้ขึ้นใหม่ สิบสองกษัตริย์ก่อนหน้าแลถัดไป สององค์ไซร้โง่เขลาเบาปัญญา ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนักหนา โฮจิ๋นเรียกทัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัญ เหมือนขับไสไล่เสือจากเคหา รับหมาป่าเข้ามาเลยอาสัญ ฝ่ายอ้องอุ้นยุแยกให้แตกกัน ใช้สาวนั้นเป็นชนวนชื่นชวนใจ พลันลิฉุยกุยกีกลับก่อเหตุ ช่างอาเพศจริงหนาฟ้าร้องไห้ ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูกู้บรรลังก์ ฯ (The above is a two-column text. If combining characters are handled correctly, the lines of the second column should be aligned with the | character above.) Ethiopian: Proverbs in the Amharic language: ሰማይ አይታረስ ንጉሥ አይከሰስ። ብላ ካለኝ እንደአባቴ በቆመጠኝ። ጌጥ ያለቤቱ ቁምጥና ነው። ደሀ በሕልሙ ቅቤ ባይጠጣ ንጣት በገደለው። የአፍ ወለምታ በቅቤ አይታሽም። አይጥ በበላ ዳዋ ተመታ። ሲተረጉሙ ይደረግሙ። ቀስ በቀስ፥ ዕንቁላል በእግሩ ይሄዳል። ድር ቢያብር አንበሳ ያስር። ሰው እንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርም። እግዜር የከፈተውን ጉሮሮ ሳይዘጋው አይድርም። የጎረቤት ሌባ፥ ቢያዩት ይስቅ ባያዩት ያጠልቅ። ሥራ ከመፍታት ልጄን ላፋታት። ዓባይ ማደሪያ የለው፥ ግንድ ይዞ ይዞራል። የእስላም አገሩ መካ የአሞራ አገሩ ዋርካ። ተንጋሎ ቢተፉ ተመልሶ ባፉ። ወዳጅህ ማር ቢሆን ጨርስህ አትላሰው። እግርህን በፍራሽህ ልክ ዘርጋ። Runes: ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ (Old English, which transcribed into Latin reads 'He cwaeth that he bude thaem lande northweardum with tha Westsae.' and means 'He said that he lived in the northern land near the Western Sea.') Braille: ⡌⠁⠧⠑ ⠼⠁⠒ ⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠙⠑⠁⠙⠒ ⠞⠕ ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ ⠊⠎ ⠝⠕ ⠙⠳⠃⠞ ⠱⠁⠞⠑⠧⠻ ⠁⠃⠳⠞ ⠹⠁⠞⠲ ⡹⠑ ⠗⠑⠛⠊⠌⠻ ⠕⠋ ⠙⠊⠎ ⠃⠥⠗⠊⠁⠇ ⠺⠁⠎ ⠎⠊⠛⠝⠫ ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹⠍⠁⠝⠂ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ ⠥⠝⠙⠻⠞⠁⠅⠻⠂ ⠁⠝⠙ ⠹⠑ ⠡⠊⠑⠋ ⠍⠳⠗⠝⠻⠲ ⡎⠊⠗⠕⠕⠛⠑ ⠎⠊⠛⠝⠫ ⠊⠞⠲ ⡁⠝⠙ ⡎⠊⠗⠕⠕⠛⠑⠰⠎ ⠝⠁⠍⠑ ⠺⠁⠎ ⠛⠕⠕⠙ ⠥⠏⠕⠝ ⠰⡡⠁⠝⠛⠑⠂ ⠋⠕⠗ ⠁⠝⠹⠹⠔⠛ ⠙⠑ ⠡⠕⠎⠑ ⠞⠕ ⠏⠥⠞ ⠙⠊⠎ ⠙⠁⠝⠙ ⠞⠕⠲ ⡕⠇⠙ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡍⠔⠙⠖ ⡊ ⠙⠕⠝⠰⠞ ⠍⠑⠁⠝ ⠞⠕ ⠎⠁⠹ ⠹⠁⠞ ⡊ ⠅⠝⠪⠂ ⠕⠋ ⠍⠹ ⠪⠝ ⠅⠝⠪⠇⠫⠛⠑⠂ ⠱⠁⠞ ⠹⠻⠑ ⠊⠎ ⠏⠜⠞⠊⠊⠥⠇⠜⠇⠹ ⠙⠑⠁⠙ ⠁⠃⠳⠞ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡊ ⠍⠊⠣⠞ ⠙⠁⠧⠑ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ ⠍⠹⠎⠑⠇⠋⠂ ⠞⠕ ⠗⠑⠛⠜⠙ ⠁ ⠊⠕⠋⠋⠔⠤⠝⠁⠊⠇ ⠁⠎ ⠹⠑ ⠙⠑⠁⠙⠑⠌ ⠏⠊⠑⠊⠑ ⠕⠋ ⠊⠗⠕⠝⠍⠕⠝⠛⠻⠹ ⠔ ⠹⠑ ⠞⠗⠁⠙⠑⠲ ⡃⠥⠞ ⠹⠑ ⠺⠊⠎⠙⠕⠍ ⠕⠋ ⠳⠗ ⠁⠝⠊⠑⠌⠕⠗⠎ ⠊⠎ ⠔ ⠹⠑ ⠎⠊⠍⠊⠇⠑⠆ ⠁⠝⠙ ⠍⠹ ⠥⠝⠙⠁⠇⠇⠪⠫ ⠙⠁⠝⠙⠎ ⠩⠁⠇⠇ ⠝⠕⠞ ⠙⠊⠌⠥⠗⠃ ⠊⠞⠂ ⠕⠗ ⠹⠑ ⡊⠳⠝⠞⠗⠹⠰⠎ ⠙⠕⠝⠑ ⠋⠕⠗⠲ ⡹⠳ ⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ ⠏⠻⠍⠊⠞ ⠍⠑ ⠞⠕ ⠗⠑⠏⠑⠁⠞⠂ ⠑⠍⠏⠙⠁⠞⠊⠊⠁⠇⠇⠹⠂ ⠹⠁⠞ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ (The first couple of paragraphs of "A Christmas Carol" by Dickens) Compact font selection example text: ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ –—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвгд ∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi�⑀₂ἠḂӥẄɐː⍎אԱა Greetings in various languages: Hello world, Καλημέρα κόσμε, コンニチハ Box drawing alignment tests: █ ▉ ╔══╦══╗ ┌──┬──┐ ╭──┬──╮ ╭──┬──╮ ┏━━┳━━┓ ┎┒┏┑ ╷ ╻ ┏┯┓ ┌┰┐ ▊ ╱╲╱╲╳╳╳ ║┌─╨─┐║ │╔═╧═╗│ │╒═╪═╕│ │╓─╁─╖│ ┃┌─╂─┐┃ ┗╃╄┙ ╶┼╴╺╋╸┠┼┨ ┝╋┥ ▋ ╲╱╲╱╳╳╳ ║│╲ ╱│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╿ │┃ ┍╅╆┓ ╵ ╹ ┗┷┛ └┸┘ ▌ ╱╲╱╲╳╳╳ ╠╡ ╳ ╞╣ ├╢ ╟┤ ├┼─┼─┼┤ ├╫─╂─╫┤ ┣┿╾┼╼┿┫ ┕┛┖┚ ┌┄┄┐ ╎ ┏┅┅┓ ┋ ▍ ╲╱╲╱╳╳╳ ║│╱ ╲│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╽ │┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▎ ║└─╥─┘║ │╚═╤═╝│ │╘═╪═╛│ │╙─╀─╜│ ┃└─╂─┘┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▏ ╚══╩══╝ └──┴──┘ ╰──┴──╯ ╰──┴──╯ ┗━━┻━━┛ ▗▄▖▛▀▜ └╌╌┘ ╎ ┗╍╍┛ ┋ ▁▂▃▄▅▆▇█ ▝▀▘▙▄▟ circuits-3.1.0/tests/web/static/test.css0000644000014400001440000000001112402037676021227 0ustar prologicusers00000000000000body { } circuits-3.1.0/tests/web/static/helloworld.txt0000644000014400001440000000001512174742426022460 0ustar prologicusers00000000000000Hello World! circuits-3.1.0/tests/web/static/#foobar.txt0000644000014400001440000000001512402037676021616 0ustar prologicusers00000000000000Hello World! circuits-3.1.0/tests/web/static/largefile.txt0000644000014400001440000003130712402037676022245 0ustar prologicusers00000000000000Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World!circuits-3.1.0/tests/web/test_wsgi_gateway_write.py0000644000014400001440000000057312402037676023601 0ustar prologicusers00000000000000#!/usr/bin/env python from .helpers import urlopen def application(environ, start_response): status = "200 OK" response_headers = [("Content-type", "text/plain")] write = start_response(status, response_headers) write("Hello World!") return [""] def test(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" circuits-3.1.0/tests/web/test_call_wait.py0000644000014400001440000000111212402037676021622 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Controller from circuits import Component, Event from .helpers import urlopen class foo(Event): """foo Event""" class App(Component): channel = "app" def foo(self): return "Hello World!" class Root(Controller): def index(self): value = (yield self.call(foo(), "app")) yield value.value def test(webapp): app = App().register(webapp) try: f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" finally: app.unregister() circuits-3.1.0/tests/web/test_static.py0000644000014400001440000000625012402037676021162 0ustar prologicusers00000000000000#!/usr/bin/env python from os import path try: from httplib import HTTPConnection except ImportError: from http.client import HTTPConnection # NOQA from circuits.web import Controller from .conftest import DOCROOT from .helpers import quote, urlopen, HTTPError class Root(Controller): def index(self): return "Hello World!" def test(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" def test_404(webapp): try: urlopen("%s/foo" % webapp.server.http.base) except HTTPError as e: assert e.code == 404 assert e.msg == "Not Found" else: assert False def test_file(webapp): url = "%s/static/helloworld.txt" % webapp.server.http.base f = urlopen(url) s = f.read().strip() assert s == b"Hello World!" def test_largefile(webapp): url = "%s/static/largefile.txt" % webapp.server.http.base f = urlopen(url) s = f.read().strip() assert s == open(path.join(DOCROOT, "largefile.txt"), "rb").read() def test_file404(webapp): try: urlopen("%s/static/foo.txt" % webapp.server.http.base) except HTTPError as e: assert e.code == 404 assert e.msg == "Not Found" else: assert False def test_directory(webapp): f = urlopen("%s/static/" % webapp.server.http.base) s = f.read() assert b"helloworld.txt" in s def test_file_quoating(webapp): url = "{0:s}{1:s}".format(webapp.server.http.base, quote("/static/#foobar.txt")) f = urlopen(url) s = f.read().strip() assert s == b"Hello World!" def test_range(webapp): connection = HTTPConnection(webapp.server.host, webapp.server.port) connection.request("GET", "%s/static/largefile.txt" % webapp.server.http.base, headers={"Range": "bytes=0-100"}) response = connection.getresponse() assert response.status == 206 s = response.read() assert s == open(path.join(DOCROOT, "largefile.txt"), "rb").read(101) def test_ranges(webapp): connection = HTTPConnection(webapp.server.host, webapp.server.port) connection.request("GET", "%s/static/largefile.txt" % webapp.server.http.base, headers={"Range": "bytes=0-50,51-100"}) response = connection.getresponse() assert response.status == 206 # XXX Complete this test. # ``response.read()`` is a multipart/bytes-range # See: Issue #59 #s = response.read() #assert s == open(path.join(DOCROOT, "largefile.txt"), "rb").read(101) def test_unsatisfiable_range1(webapp): connection = HTTPConnection(webapp.server.host, webapp.server.port) connection.request("GET", "%s/static/largefile.txt" % webapp.server.http.base, headers={"Range": "bytes=0-100,100-10000,0-1"}) response = connection.getresponse() assert response.status == 416 # TODO: Implement this test and condition # e.g: For a 10 byte file; Range: bytes=0-1,2-3,4-5,6-7,8-9 #def test_unsatisfiable_range2(webapp): # connection = HTTPConnection(webapp.server.host, webapp.server.port) # # connection.request("GET", "%s/static/largefile.txt" % webapp.server.http.base, headers={"Range": "bytes=0-100,100-10000,0-1"}) # response = connection.getresponse() # assert response.status == 416 circuits-3.1.0/tests/web/test_serve_file.py0000644000014400001440000000122212402037676022010 0ustar prologicusers00000000000000#!/usr/bin/env python import os from tempfile import mkstemp from circuits import handler from circuits.web import Controller from .helpers import urlopen class Root(Controller): @handler("started", priority=1.0, channel="*") def _on_started(self, component): fd, self.filename = mkstemp() os.write(fd, b"Hello World!") os.close(fd) @handler("stopped", channel="(") def _on_stopped(self, component): os.remove(self.filename) def index(self): return self.serve_file(self.filename) def test(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" circuits-3.1.0/tests/web/test_json.py0000644000014400001440000000271412402037676020645 0ustar prologicusers00000000000000#!/usr/bin/env python from json import loads from circuits.web import JSONController, Sessions from .helpers import urlopen, build_opener, HTTPCookieProcessor from .helpers import CookieJar class Root(JSONController): def index(self): return {"success": True, "message": "Hello World!"} def test_sessions(self, name=None): if name: self.session["name"] = name else: name = self.session.get("name", "World!") return {"success": True, "message": "Hello %s" % name} def test(webapp): f = urlopen(webapp.server.http.base) data = f.read() data = data.decode("utf-8") d = loads(data) assert d["success"] assert d["message"] == "Hello World!" def test_sessions(webapp): Sessions().register(webapp) cj = CookieJar() opener = build_opener(HTTPCookieProcessor(cj)) f = opener.open("%s/test_sessions" % webapp.server.http.base) data = f.read() data = data.decode("utf-8") d = loads(data) assert d["success"] assert d["message"] == "Hello World!" f = opener.open("%s/test_sessions/test" % webapp.server.http.base) data = f.read() data = data.decode("utf-8") d = loads(data) assert d["success"] assert d["message"] == "Hello test" f = opener.open("%s/test_sessions" % webapp.server.http.base) data = f.read() data = data.decode("utf-8") d = loads(data) assert d["success"] assert d["message"] == "Hello test" circuits-3.1.0/tests/web/test_utils.py0000644000014400001440000000115212402037676021027 0ustar prologicusers00000000000000#!/usr/bin/env python from io import BytesIO try: from gzip import decompress except ImportError: import zlib decompress = zlib.decompressobj(16+zlib.MAX_WBITS).decompress # NOQA from circuits.web.utils import compress from circuits.web.utils import get_ranges def test_ranges(): assert get_ranges("bytes=3-6", 8) == [(3, 7)] assert get_ranges("bytes=2-4,-1", 8) == [(2, 5), (7, 8)] def test_gzip(): s = b"Hello World!" contents = BytesIO(s) compressed = b"".join(compress(contents, 1)) uncompressed = decompress(compressed) assert uncompressed == s contents.close() circuits-3.1.0/tests/web/test_digestauth.py0000644000014400001440000000207512402037676022035 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest if pytest.PYVER[:2] == (3, 3): pytest.skip("Broken on Python 3.3") from circuits.web import Controller from circuits.web.tools import check_auth, digest_auth from .helpers import HTTPError, HTTPDigestAuthHandler from .helpers import urlopen, build_opener, install_opener class Root(Controller): def index(self): realm = "Test" users = {"admin": "admin"} if check_auth(self.request, self.response, realm, users): return "Hello World!" return digest_auth(self.request, self.response, realm, users) def test(webapp): try: f = urlopen(webapp.server.http.base) except HTTPError as e: assert e.code == 401 assert e.msg == "Unauthorized" else: assert False handler = HTTPDigestAuthHandler() handler.add_password("Test", webapp.server.http.base, "admin", "admin") opener = build_opener(handler) install_opener(opener) f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" install_opener(None) circuits-3.1.0/tests/web/test_expires.py0000644000014400001440000000222112402037676021344 0ustar prologicusers00000000000000#!/usr/bin/env python from datetime import datetime from time import mktime from email.utils import parsedate from circuits.web import Controller from .helpers import urlopen class Root(Controller): def index(self): self.expires(60) return "Hello World!" def nocache(self): self.expires(0) return "Hello World!" def test(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" expires = f.headers["Expires"] diff = (mktime(parsedate(expires)) - mktime(datetime.utcnow().timetuple())) assert 60 - (60 * 0.1) < diff < 60 + (60 * 0.1) # diff is about 60 +- 10% def test_nocache(webapp): f = urlopen("%s/nocache" % webapp.server.http.base) s = f.read() assert s == b"Hello World!" expires = f.headers["Expires"] pragma = f.headers["Pragma"] cacheControl = f.headers["Cache-Control"] now = datetime.utcnow() lastyear = now.replace(year=now.year-1) diff = (mktime(parsedate(expires)) - mktime(lastyear.utctimetuple())) assert diff < 1.0 assert pragma == "no-cache" assert cacheControl == "no-cache, must-revalidate" circuits-3.1.0/tests/web/test_wsgi_gateway_errors.py0000644000014400001440000000103212402037676023752 0ustar prologicusers00000000000000from .helpers import urlopen, HTTPError def application(environ, start_response): status = "200 OK" response_headers = [("Content-type", "text/plain")] start_response(status, response_headers) raise Exception("Hello World!") def test(webapp): try: urlopen(webapp.server.http.base) except HTTPError as e: assert e.code == 500 assert e.msg == "Internal Server Error" s = e.read() assert b"Exception" in s assert b"Hello World!" in s else: assert False circuits-3.1.0/tests/web/test_dispatcher3.py0000644000014400001440000000150312402037676022100 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest try: from httplib import HTTPConnection except ImportError: from http.client import HTTPConnection # NOQA from circuits.web import Controller class Root(Controller): def GET(self): return "GET" def PUT(self): return "PUT" def POST(self): return "POST" def DELETE(self): return "DELETE" @pytest.mark.parametrize(("method"), ["GET", "PUT", "POST", "DELETE"]) def test(webapp, method): connection = HTTPConnection(webapp.server.host, webapp.server.port) connection.connect() connection.request(method, "/") response = connection.getresponse() assert response.status == 200 assert response.reason == "OK" s = response.read() assert s == "{0:s}".format(method).encode("utf-8") connection.close() circuits-3.1.0/tests/web/test_wsgi_application_generator.py0000644000014400001440000000065712402037676025302 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Controller from circuits.web.wsgi import Application from .helpers import urlopen class Root(Controller): def index(self): def response(): yield "Hello " yield "World!" return response() application = Application() + Root() def test(webapp): f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" circuits-3.1.0/tests/web/conftest.py0000644000014400001440000000407112402037676020460 0ustar prologicusers00000000000000# Module: conftest # Date: 10 February 2010 # Author: James Mills, prologic at shortcircuit dot net dot au """py.test config""" import os import pytest from circuits.net.sockets import close from circuits.web import Server, Static from circuits import handler, Component, Debugger from circuits.web.client import Client, request DOCROOT = os.path.join(os.path.dirname(__file__), "static") class WebApp(Component): channel = "web" def init(self): self.closed = False self.server = Server(0).register(self) Static("/static", DOCROOT, dirlisting=True).register(self) class WebClient(Client): def init(self, *args, **kwargs): self.closed = False def __call__(self, method, path, body=None, headers={}): waiter = pytest.WaitEvent(self, "response", channel=self.channel) self.fire(request(method, path, body, headers)) assert waiter.wait() return self.response @handler("closed", channel="*", priority=1.0) def _on_closed(self): self.closed = True @pytest.fixture(scope="module") def webapp(request): webapp = WebApp() if hasattr(request.module, "application"): from circuits.web.wsgi import Gateway application = getattr(request.module, "application") Gateway({"/": application}).register(webapp) Root = getattr(request.module, "Root", None) if Root is not None: Root().register(webapp) if request.config.option.verbose: Debugger().register(webapp) waiter = pytest.WaitEvent(webapp, "ready") webapp.start() assert waiter.wait() def finalizer(): webapp.fire(close(), webapp.server) webapp.stop() request.addfinalizer(finalizer) return webapp @pytest.fixture(scope="module") def webclient(request, webapp): webclient = WebClient() waiter = pytest.WaitEvent(webclient, "ready", channel=webclient.channel) webclient.register(webapp) assert waiter.wait() def finalizer(): webclient.unregister() request.addfinalizer(finalizer) return webclient circuits-3.1.0/tests/web/__init__.pyc0000644000014400001440000000021112420400435020510 0ustar prologicusers00000000000000 Qc@sdS(N((((s2/home/prologic/work/circuits/tests/web/__init__.pytscircuits-3.1.0/tests/web/test_xmlrpc.py0000644000014400001440000000141412402037676021175 0ustar prologicusers00000000000000#!/usr/bin/env python try: from xmlrpc.client import ServerProxy except ImportError: from xmlrpclib import ServerProxy # NOQA from circuits import Component from circuits.web import Controller, XMLRPC from .helpers import urlopen class App(Component): def eval(self, s): return eval(s) class Root(Controller): def index(self): return "Hello World!" def test(webapp): rpc = XMLRPC("/rpc") test = App() rpc.register(webapp) test.register(webapp) f = urlopen(webapp.server.http.base) s = f.read() assert s == b"Hello World!" url = "%s/rpc" % webapp.server.http.base server = ServerProxy(url, allow_none=True) r = server.eval("1 + 2") assert r == 3 rpc.unregister() test.unregister() circuits-3.1.0/tests/main.py0000755000014400001440000000120112402037676016775 0ustar prologicusers00000000000000#!/usr/bin/env python import sys from types import ModuleType from os.path import abspath, dirname from subprocess import Popen, STDOUT def importable(module): try: m = __import__(module, globals(), locals()) return type(m) is ModuleType except ImportError: return False def main(): cmd = ["py.test", "-r", "fsxX", "--ignore=tmp"] if importable("pytest_cov"): cmd.append("--cov=circuits") cmd.append("--cov-report=html") cmd.append(dirname(abspath(__file__))) raise SystemExit(Popen(cmd, stdout=sys.stdout, stderr=STDOUT).wait()) if __name__ == "__main__": main() circuits-3.1.0/tests/tools/0000755000014400001440000000000012425013643016633 5ustar prologicusers00000000000000circuits-3.1.0/tests/tools/__init__.py0000644000014400001440000000000012174742426020743 0ustar prologicusers00000000000000circuits-3.1.0/tests/tools/__pycache__/0000755000014400001440000000000012425013643021043 5ustar prologicusers00000000000000circuits-3.1.0/tests/tools/__pycache__/__init__.cpython-33.pyc0000644000014400001440000000022312414363411025221 0ustar prologicusers00000000000000 Qc@sdS(N((((u4/home/prologic/work/circuits/tests/tools/__init__.pyuscircuits-3.1.0/tests/tools/__pycache__/__init__.cpython-34.pyc0000644000014400001440000000020712414363522025227 0ustar prologicusers00000000000000 Q@sdS)Nrrr4/home/prologic/work/circuits/tests/tools/__init__.pyscircuits-3.1.0/tests/tools/__pycache__/__init__.cpython-32.pyc0000644000014400001440000000021712414363276025234 0ustar prologicusers00000000000000l Qc@sdS(N((((u4/home/prologic/work/circuits/tests/tools/__init__.pyuscircuits-3.1.0/tests/tools/__pycache__/test_tools.cpython-34-PYTEST.pyc0000644000014400001440000003544312414363522026727 0ustar prologicusers00000000000000 ?T @s}dZddlZddljjZddlZyddlm Z Wn"e k rhddlm Z YnXddl m Z mZddlmZmZmZmZGddde ZGd d d e ZGd d d e ZGd dde ZGddde ZGddde ZddZddZddZddZddZddZdd Z dS)!z?Tools Test Suite Test all functionality of the tools package. N)current_thread) currentThread) Component reprhandler)killinspectfindroot tryimportc@seZdZddZdS)AcCstddS)NzA!)print)selfr 6/home/prologic/work/circuits/tests/tools/test_tools.pyfooszA.fooN)__name__ __module__ __qualname__rr r r rr s r c@seZdZddZdS)BcCstddS)NzB!)r )r r r rrszB.fooN)rrrrr r r rrs rc@seZdZddZdS)CcCstddS)NzC!)r )r r r rr#szC.fooN)rrrrr r r rr!s rc@seZdZddZdS)DcCstddS)NzD!)r )r r r rr)szD.fooN)rrrrr r r rr's rc@seZdZddZdS)EcCstddS)NzE!)r )r r r rr/szE.fooN)rrrrr r r rr-s rc@seZdZddZdS)FcCstddS)NzF!)r )r r r rr5szF.fooN)rrrrr r r rr3s rc4Cst}t}t}t}t}t}||7}||7}||7}||7}||7}|j}||k}|sOtjd|fd||fitj |d6dt j kstj |rtj |ndd6dt j ks tj |rtj |ndd6}di|d 6} t tj| nt}}|j}||k}|s@tjd|fd||fitj |d6d t j kstj |rtj |nd d6dt j kstj |r tj |ndd6}di|d 6} t tj| nt}}|j}||k}|s1tjd |fd!||fitj |d6d t j kstj |rtj |nd d6d t j kstj |rtj |nd d6}d"i|d 6} t tj| nt}}|j}| }|sdd itj |d6d t j kstj |rtj |nd d6} t tj| nt}}|j}||k}|stjd#|fd$||fidt j ks%tj |r4tj |ndd6d t j ks\tj |rktj |nd d6tj |d6}d%i|d 6} t tj| nt}}|j}||k}|stjd&|fd'||fidt j kstj |r%tj |ndd6dt j ksMtj |r\tj |ndd6tj |d6}d(i|d 6} t tj| nt}}|j}||k}|stjd)|fd*||fitj |d6dt j kstj |r&tj |ndd6dt j ksNtj |r]tj |ndd6}d+i|d 6} t tj| nt}}|j}||k}|stjd,|fd-||fitj |d6dt j kstj |rtj |ndd6dt j ks?tj |rNtj |ndd6}d.i|d 6} t tj| nt}}|j}||k}|sstjd/|fd0||fitj |d6dt j kstj |rtj |ndd6dt j ks0tj |r?tj |ndd6}d1i|d 6} t tj| nt}}|j}||k}|sd tjd2|fd3||fidt j kstj |rtj |ndd6dt j ks tj |r tj |ndd6tj |d6}d4i|d 6} t tj| nt}}|j}||k}|sU tjd5|fd6||fidt j ks tj |r tj |ndd6dt j ks tj |r tj |ndd6tj |d6}d7i|d 6} t tj| nt}}|j}| }|s dd itj |d6dt j ks tj |r tj |ndd6} t tj| nt}}t|} d} | | k} | s tjd8| fd9| | fidt j ksR tj |ra tj |ndd6tj | d 6tj | d6dt j ks tj tr tj tndd6} d:i| d6}t tj|nt} } } x|r |jq W|j}||k}|s tjd;|fd<||fitj |d6dt j ks~ tj |r tj |ndd6dt j ks tj |r tj |ndd6}d=i|d 6} t tj| nt}}|j}||k}|s tjd>|fd?||fitj |d6d t j kso tj |r~ tj |nd d6dt j ks tj |r tj |ndd6}d@i|d 6} t tj| nt}}|j}||k}|stjdA|fdB||fitj |d6d t j ks`tj |rotj |nd d6d t j kstj |rtj |nd d6}dCi|d 6} t tj| nt}}|j}| }|sgdd itj |d6d t j ks5tj |rDtj |nd d6} t tj| nt}}|j}||k}|sXtjdD|fdE||fidt j kstj |rtj |ndd6d t j kstj |rtj |nd d6tj |d6}dFi|d 6} t tj| nt}}|j}||k}| }|sPtjdG|fdH||fidt j kstj |rtj |ndd6dt j kstj |r tj |ndd6tj |d6}dIi|d 6}t tj|nt}}}|j}||k}| }|sLtjdJ|fdK||fidt j kstj |rtj |ndd6dt j kstj |rtj |ndd6tj |d6}dLi|d 6}t tj|nt}}}|j}||k}| }|sHtjdM|fdN||fidt j kstj |rtj |ndd6dt j kstj |rtj |ndd6tj |d6}dOi|d 6}t tj|nt}}}|j}||k}|s=tjdP|fdQ||fitj |d6dt j kstj |rtj |ndd6dt j kstj |r tj |ndd6}dRi|d 6} t tj| nt}}|j}||k}|s.tjdS|fdT||fitj |d6dt j kstj |rtj |ndd6dt j kstj |rtj |ndd6}dUi|d 6} t tj| nt}}|j}||k}|stjdV|fdW||fitj |d6dt j kstj |rtj |ndd6dt j kstj |rtj |ndd6}dXi|d 6} t tj| nt}}|j}| }|sdd itj |d6dt j ksztj |rtj |ndd6} t tj| nt}}|j}| }|s9dd itj |d6dt j kstj |rtj |ndd6} t tj| nt}}|j}| }|sdd itj |d6dt j kstj |rtj |ndd6} t tj| nt}}dS)YN==.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)spy2apy0py4assert %(py6)spy6bcz2assert not %(py2)s {%(py2)s = %(py0)s.components }in2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }defis0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } is %(py6)spy1py3rassert %(py8)spy8assert not %(py6)s)r)rr)r)rr)r)rr)r#)r$r)r#)r$r)r)rr)r)rr)r)rr)r#)r$r)r#)r$r)r()r)r,)r)rr)r)rr)r)rr)r#)r$r)r#)r$r.)r#)r$r.)r#)r$r.)r)rr)r)rr)r)rr)r rrrrrparent @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone componentsrflush)rr!r"r%r&r' @py_assert1 @py_assert3 @py_format5 @py_format7 @py_format4 @py_assert2 @py_assert5 @py_assert4 @py_format9 @py_assert7 @py_format8r r r test_kill9s                  U                U           U             U  U  UrFc Cstjdddkr)tjdnt}t|}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd 6}di|d 6}t tj |nt }}d }||k}|stjd|fd||fitj|d6dtj ks_tj |rntj|ndd 6}di|d 6}t tj |nt }}d}||k}|sYtjd|fd||fitj|d6dtj kstj |r%tj|ndd 6}di|d 6}t tj |nt }}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd 6}di|d 6}t tj |nt }}d}||k}|stjd|fd ||fitj|d6dtj kstj |rtj|ndd 6}d!i|d 6}t tj |nt }}d}||k}|s~tjd"|fd#||fitj|d6dtj ks;tj |rJtj|ndd 6}d$i|d 6}t tj |nt }}dS)%NzBroken on Python 3.3z Components: 0r#%(py1)s in %(py3)sr*sr+rassert %(py5)spy5zEvent Handlers: 2zfoo; 1zzprepare_unregister_complete; 1zZ.prepare_unregister_complete] (A._on_prepare_unregister_complete)>)rHrH)r#)rIrK)r#)rIrK)r#)rIrK)r#)rIrK)r#)rIrK)r#)rIrK)pytestPYVERskipr rr0r1r2r3r4r5r6r7r8)rrJ @py_assert0r@r? @py_format6r r r test_inspectos\   l  l  l  l  l  lrRc Cst}t}t}||7}||7}t|}||k}|s tjd |fd ||fidtjkstj|rtj |ndd6dtjkstj|rtj |ndd6}d i|d 6}t tj |nt }t|}||k}|stjd |fd||fidtjksotj|r~tj |ndd6dtjkstj|rtj |ndd6}di|d 6}t tj |nt }t|}||k}|stjd|fd||fidtjksOtj|r^tj |ndd6dtjkstj|rtj |ndd6}di|d 6}t tj |nt }dS)Nr%(py0)s == %(py2)srrrootrrassert %(py4)sr)r)rSrU)r)rSrU)r)rSrU) r rrrr0r1r3r4r5r2r6r7r8)rr!r"rTr; @py_format3r=r r r test_findroot~s4           rWcCst}t|j}d}||k}|stjd |fd ||fitj|d6dtjkstj|rtj|ndd6}di|d 6}t tj |nt }}d d }t j tt|dS)Nzr%(py0)s == %(py3)sr+rJrrassert %(py5)srLcSsdS)Nr r r r rsz"test_reprhandler..)r)rXrY)r rrr0r1r2r3r4r5r6r7r8rMraisesAttributeError)rrJr@r;r?rQr'r r rtest_reprhandlers  l  r]cCsddl}td}||k}|stjd |fd ||fidtjksltj|r{tj|ndd6dtjkstj|rtj|ndd6}d i|d 6}ttj |nt }dS)Nrosr(%(py0)s is %(py2)srmrrassert %(py4)sr)r()r_ra) r^r r0r1r3r4r5r2r6r7r8)r^r`r;rVr=r r rtest_tryimports   rbcCsddlm}tdd}||k}|stjd |fd||fidtjksstj|rtj|ndd6dtjkstj|rtj|ndd 6}di|d 6}t tj |nt }dS)Nr)pathr^rcr(%(py0)s is %(py2)srr`rrassert %(py4)sr)r()rdre) r^rcr r0r1r3r4r5r2r6r7r8)rcr`r;rVr=r r rtest_tryimport_objs rfcCstd}d}||k}|stjd |fd ||fitj|d6dtjksvtj|rtj|ndd6}d i|d 6}ttj|nt }}dS) NZasdfr(%(py0)s is %(py3)sr+r`rrassert %(py5)srL)r()rgrh) r r0r1r2r3r4r5r6r7r8)r`r@r;r?rQr r rtest_tryimport_fails  lri)!__doc__builtinsr3_pytest.assertion.rewrite assertionrewriter0rM threadingr ImportErrorrcircuitsrrZcircuits.toolsrrrr r rrrrrrFrRrWr]rbrfrir r r rs,   " 6    circuits-3.1.0/tests/tools/__pycache__/test_tools.cpython-33-PYTEST.pyc0000644000014400001440000005017012414363411026715 0ustar prologicusers00000000000000 ?T c @s}dZddlZddljjZddlZyddlm Z Wn"e k rhddlm Z YnXddl m Z mZddlmZmZmZmZGddde ZGd d d e ZGd d d e ZGd dde ZGddde ZGddde ZddZddZddZddZddZddZdd Z dS(!u?Tools Test Suite Test all functionality of the tools package. iN(ucurrent_thread(u currentThread(u Componentu reprhandler(ukilluinspectufindrootu tryimportcBs |EeZdZddZdS(uAcCstddS(NuA!(uprint(uself((u6/home/prologic/work/circuits/tests/tools/test_tools.pyufoosuA.fooN(u__name__u __module__u __qualname__ufoo(u __locals__((u6/home/prologic/work/circuits/tests/tools/test_tools.pyuAsuAcBs |EeZdZddZdS(uBcCstddS(NuB!(uprint(uself((u6/home/prologic/work/circuits/tests/tools/test_tools.pyufoosuB.fooN(u__name__u __module__u __qualname__ufoo(u __locals__((u6/home/prologic/work/circuits/tests/tools/test_tools.pyuBsuBcBs |EeZdZddZdS(uCcCstddS(NuC!(uprint(uself((u6/home/prologic/work/circuits/tests/tools/test_tools.pyufoo#suC.fooN(u__name__u __module__u __qualname__ufoo(u __locals__((u6/home/prologic/work/circuits/tests/tools/test_tools.pyuC!suCcBs |EeZdZddZdS(uDcCstddS(NuD!(uprint(uself((u6/home/prologic/work/circuits/tests/tools/test_tools.pyufoo)suD.fooN(u__name__u __module__u __qualname__ufoo(u __locals__((u6/home/prologic/work/circuits/tests/tools/test_tools.pyuD'suDcBs |EeZdZddZdS(uEcCstddS(NuE!(uprint(uself((u6/home/prologic/work/circuits/tests/tools/test_tools.pyufoo/suE.fooN(u__name__u __module__u __qualname__ufoo(u __locals__((u6/home/prologic/work/circuits/tests/tools/test_tools.pyuE-suEcBs |EeZdZddZdS(uFcCstddS(NuF!(uprint(uself((u6/home/prologic/work/circuits/tests/tools/test_tools.pyufoo5suF.fooN(u__name__u __module__u __qualname__ufoo(u __locals__((u6/home/prologic/work/circuits/tests/tools/test_tools.pyuF3suFc5Cst}t}t}t}t}t}||7}||7}||7}||7}||7}|j}||k}|sOtjd|fd||fitj |d6dt j kstj |rtj |ndd6dt j ks tj |rtj |ndd6}di|d 6} t tj| nd}}|j}||k}|s@tjd|fd ||fitj |d6d t j kstj |rtj |nd d6dt j kstj |r tj |ndd6}d!i|d 6} t tj| nd}}|j}||k}|s1tjd"|fd#||fitj |d6d t j kstj |rtj |nd d6d t j kstj |rtj |nd d6}d$i|d 6} t tj| nd}}|j}| }|sdd itj |d6d t j kstj |rtj |nd d6} t tj| nd}}|j}||k}|stjd%|fd&||fidt j ks%tj |r4tj |ndd6d t j ks\tj |rktj |nd d6tj |d6}d'i|d 6} t tj| nd}}|j}||k}|stjd(|fd)||fidt j kstj |r%tj |ndd6dt j ksMtj |r\tj |ndd6tj |d6}d*i|d 6} t tj| nd}}|j}||k}|stjd+|fd,||fitj |d6dt j kstj |r&tj |ndd6dt j ksNtj |r]tj |ndd6}d-i|d 6} t tj| nd}}|j}||k}|stjd.|fd/||fitj |d6dt j kstj |rtj |ndd6dt j ks?tj |rNtj |ndd6}d0i|d 6} t tj| nd}}|j}||k}|sstjd1|fd2||fitj |d6dt j kstj |rtj |ndd6dt j ks0tj |r?tj |ndd6}d3i|d 6} t tj| nd}}|j}||k}|sd tjd4|fd5||fidt j kstj |rtj |ndd6dt j ks tj |r tj |ndd6tj |d6}d6i|d 6} t tj| nd}}|j}||k}|sU tjd7|fd8||fidt j ks tj |r tj |ndd6dt j ks tj |r tj |ndd6tj |d6}d9i|d 6} t tj| nd}}|j}| }|s dd itj |d6dt j ks tj |r tj |ndd6} t tj| nd}}t|} | dk} | s tjd:| fd;| dfitj | d6dt j ks\ tj |rk tj |ndd6dt j ks tj tr tj tndd6dt j ks tj dr tj dndd6} d<i| d6}t tj|nd} } x|r- |jq W|j}||k}|s tjd=|fd>||fitj |d6dt j ks tj |r tj |ndd6dt j ks tj |r tj |ndd6}d?i|d 6} t tj| nd}}|j}||k}|stjd@|fdA||fitj |d6d t j ks tj |r tj |nd d6dt j ks tj |r tj |ndd6}dBi|d 6} t tj| nd}}|j}||k}|stjdC|fdD||fitj |d6d t j ks}tj |rtj |nd d6d t j kstj |rtj |nd d6}dEi|d 6} t tj| nd}}|j}| }|sdd itj |d6d t j ksRtj |ratj |nd d6} t tj| nd}}|j}||k}|sutjdF|fdG||fidt j kstj |rtj |ndd6d t j ks"tj |r1tj |nd d6tj |d6}dHi|d 6} t tj| nd}}|j}||k}| }|smtjdI|fdJ||fidt j kstj |rtj |ndd6dt j kstj |r)tj |ndd6tj |d6}dKi|d 6}t tj|nd}}}|j}||k}| }|sitjdL|fdM||fidt j kstj |rtj |ndd6dt j kstj |r%tj |ndd6tj |d6}dNi|d 6}t tj|nd}}}|j}||k}| }|setjdO|fdP||fidt j kstj |rtj |ndd6dt j kstj |r!tj |ndd6tj |d6}dQi|d 6}t tj|nd}}}|j}||k}|sZtjdR|fdS||fitj |d6dt j kstj |rtj |ndd6dt j kstj |r&tj |ndd6}dTi|d 6} t tj| nd}}|j}||k}|sKtjdU|fdV||fitj |d6dt j kstj |rtj |ndd6dt j kstj |rtj |ndd6}dWi|d 6} t tj| nd}}|j}||k}|s<tjdX|fdY||fitj |d6dt j kstj |rtj |ndd6dt j kstj |rtj |ndd6}dZi|d 6} t tj| nd}}|j}| }|sdd itj |d6dt j kstj |rtj |ndd6} t tj| nd}}|j}| }|sVdd itj |d6dt j ks$tj |r3tj |ndd6} t tj| nd}}|j}| }|sdd itj |d6dt j kstj |rtj |ndd6} t tj| nd}}dS([Nu==u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)supy2uaupy0upy4uuassert %(py6)supy6ubucu2assert not %(py2)s {%(py2)s = %(py0)s.components }uinu2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }udueufuisu0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } is %(py5)supy3upy1ukilluNoneupy5uassert %(py7)supy7uassert not %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(uin(u2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }uassert %(py6)s(uin(u2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }uassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(uin(u2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }uassert %(py6)s(uin(u2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }uassert %(py6)s(uis(u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } is %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(uin(u2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }uassert %(py6)s(uin(u2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }uassert not %(py6)s(uin(u2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }uassert not %(py6)s(uin(u2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }uassert not %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(uAuBuCuDuEuFuparentu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu componentsukilluflush(uaubucudueufu @py_assert1u @py_assert3u @py_format5u @py_format7u @py_format4u @py_assert2u @py_assert4u @py_format6u @py_format8u @py_assert7((u6/home/prologic/work/circuits/tests/tools/test_tools.pyu test_kill9s                  U                U           U             U  U  Uu test_killc Cstjdddkr)tjdnt}t|}d}||k}|stjd|fd||fidtjkstj |rtj |ndd6tj |d 6}di|d 6}t tj |nd}}d }||k}|stjd|fd||fidtjksOtj |r^tj |ndd6tj |d 6}di|d 6}t tj |nd}}d}||k}|sYtjd|fd||fidtjkstj |rtj |ndd6tj |d 6}di|d 6}t tj |nd}}d}||k}|stjd|fd||fidtjkstj |rtj |ndd6tj |d 6}di|d 6}t tj |nd}}d}||k}|stjd|fd ||fidtjksttj |rtj |ndd6tj |d 6}d!i|d 6}t tj |nd}}d}||k}|s~tjd"|fd#||fidtjks+tj |r:tj |ndd6tj |d 6}d$i|d 6}t tj |nd}}dS(%NiiuBroken on Python 3.3u Components: 0uinu%(py1)s in %(py3)susupy3upy1uuassert %(py5)supy5uEvent Handlers: 2ufoo; 1uuprepare_unregister_complete; 1uZ.prepare_unregister_complete] (A._on_prepare_unregister_complete)>(ii(uin(u%(py1)s in %(py3)suassert %(py5)s(uin(u%(py1)s in %(py3)suassert %(py5)s(uin(u%(py1)s in %(py3)suassert %(py5)s(uin(u%(py1)s in %(py3)suassert %(py5)s(uin(u%(py1)s in %(py3)suassert %(py5)s(uin(u%(py1)s in %(py3)suassert %(py5)s(upytestuPYVERuskipuAuinspectu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(uausu @py_assert0u @py_assert2u @py_format4u @py_format6((u6/home/prologic/work/circuits/tests/tools/test_tools.pyu test_inspectos\   l  l  l  l  l  lu test_inspectc Cst}t}t}||7}||7}t|}||k}|s tjd |fd ||fidtjkstj|rtj |ndd6dtjkstj|rtj |ndd6}d i|d 6}t tj |nd}t|}||k}|stjd |fd||fidtjksotj|r~tj |ndd6dtjkstj|rtj |ndd6}di|d 6}t tj |nd}t|}||k}|stjd|fd||fidtjksOtj|r^tj |ndd6dtjkstj|rtj |ndd6}di|d 6}t tj |nd}dS(Nu==u%(py0)s == %(py2)suaupy2urootupy0uuassert %(py4)supy4(u==(u%(py0)s == %(py2)suassert %(py4)s(u==(u%(py0)s == %(py2)suassert %(py4)s(u==(u%(py0)s == %(py2)suassert %(py4)s( uAuBuCufindrootu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(uaubucurootu @py_assert1u @py_format3u @py_format5((u6/home/prologic/work/circuits/tests/tools/test_tools.pyu test_findroot~s4           u test_findrootcCst}t|j}d}||k}|stjd |fd ||fitj|d6dtjkstj|rtj|ndd6}di|d 6}t tj |nd}}d d }t j tt|dS(Nuu==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5cSsdS(N(uNone(((u6/home/prologic/work/circuits/tests/tools/test_tools.pyusu"test_reprhandler..(u==(u%(py0)s == %(py3)suassert %(py5)s(uAu reprhandlerufoou @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneupytesturaisesuAttributeError(uausu @py_assert2u @py_assert1u @py_format4u @py_format6uf((u6/home/prologic/work/circuits/tests/tools/test_tools.pyutest_reprhandlers  l  utest_reprhandlercCsddl}td}||k}|stjd |fd ||fidtjksltj|r{tj|ndd6dtjkstj|rtj|ndd6}d i|d 6}ttj |nd}dS(Niuosuisu%(py0)s is %(py2)supy2umupy0uuassert %(py4)supy4(uis(u%(py0)s is %(py2)suassert %(py4)s( uosu tryimportu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(uosumu @py_assert1u @py_format3u @py_format5((u6/home/prologic/work/circuits/tests/tools/test_tools.pyutest_tryimports   utest_tryimportcCsddlm}tdd}||k}|stjd |fd||fidtjksstj|rtj|ndd6dtjkstj|rtj|ndd 6}di|d 6}t tj |nd}dS(Ni(upathuosupathuisu%(py0)s is %(py2)supy2umupy0uuassert %(py4)supy4(uis(u%(py0)s is %(py2)suassert %(py4)s( uosupathu tryimportu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(upathumu @py_assert1u @py_format3u @py_format5((u6/home/prologic/work/circuits/tests/tools/test_tools.pyutest_tryimport_objs utest_tryimport_objcCstd}|dk}|stjd |fd |dfidtjks`tjdrotjdndd6dtjkstj|rtj|ndd6}d i|d 6}ttj |nd}dS(Nuasdfuisu%(py0)s is %(py2)suNoneupy2umupy0uuassert %(py4)supy4(uis(u%(py0)s is %(py2)suassert %(py4)s( u tryimportuNoneu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanation(umu @py_assert1u @py_format3u @py_format5((u6/home/prologic/work/circuits/tests/tools/test_tools.pyutest_tryimport_fails  utest_tryimport_fail(!u__doc__ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestu threadingucurrent_threadu ImportErroru currentThreaducircuitsu Componentu reprhandlerucircuits.toolsukilluinspectufindrootu tryimportuAuBuCuDuEuFu test_killu test_inspectu test_findrootutest_reprhandlerutest_tryimportutest_tryimport_objutest_tryimport_fail(((u6/home/prologic/work/circuits/tests/tools/test_tools.pyus,   " 6    circuits-3.1.0/tests/tools/__pycache__/test_tools.cpython-32-PYTEST.pyc0000644000014400001440000004724312414363276026734 0ustar prologicusers00000000000000l ?T c @sVdZddlZddljjZddlZyddlm Z Wn"e k rhddlm Z YnXddl m Z mZddlmZmZmZmZGdde ZGd d e ZGd d e ZGd de ZGdde ZGdde ZdZdZdZdZdZdZdZ dS(u?Tools Test Suite Test all functionality of the tools package. iN(ucurrent_thread(u currentThread(u Componentu reprhandler(ukilluinspectufindrootu tryimportcBs|EeZdZdS(cCstddS(NuA!(uprint(uself((u6/home/prologic/work/circuits/tests/tools/test_tools.pyufoosN(u__name__u __module__ufoo(u __locals__((u6/home/prologic/work/circuits/tests/tools/test_tools.pyuAs uAcBs|EeZdZdS(cCstddS(NuB!(uprint(uself((u6/home/prologic/work/circuits/tests/tools/test_tools.pyufoosN(u__name__u __module__ufoo(u __locals__((u6/home/prologic/work/circuits/tests/tools/test_tools.pyuBs uBcBs|EeZdZdS(cCstddS(NuC!(uprint(uself((u6/home/prologic/work/circuits/tests/tools/test_tools.pyufoo#sN(u__name__u __module__ufoo(u __locals__((u6/home/prologic/work/circuits/tests/tools/test_tools.pyuC!s uCcBs|EeZdZdS(cCstddS(NuD!(uprint(uself((u6/home/prologic/work/circuits/tests/tools/test_tools.pyufoo)sN(u__name__u __module__ufoo(u __locals__((u6/home/prologic/work/circuits/tests/tools/test_tools.pyuD's uDcBs|EeZdZdS(cCstddS(NuE!(uprint(uself((u6/home/prologic/work/circuits/tests/tools/test_tools.pyufoo/sN(u__name__u __module__ufoo(u __locals__((u6/home/prologic/work/circuits/tests/tools/test_tools.pyuE-s uEcBs|EeZdZdS(cCstddS(NuF!(uprint(uself((u6/home/prologic/work/circuits/tests/tools/test_tools.pyufoo5sN(u__name__u __module__ufoo(u __locals__((u6/home/prologic/work/circuits/tests/tools/test_tools.pyuF3s uFc5Cst}t}t}t}t}t}||7}||7}||7}||7}||7}|j}||k}|sOtjd|fd||fitj |d6dt j kstj |rtj |ndd6dt j ks tj |rtj |ndd6}di|d 6} t tj| nd}}|j}||k}|s@tjd|fd ||fitj |d6d t j kstj |rtj |nd d6dt j kstj |r tj |ndd6}d!i|d 6} t tj| nd}}|j}||k}|s1tjd"|fd#||fitj |d6d t j kstj |rtj |nd d6d t j kstj |rtj |nd d6}d$i|d 6} t tj| nd}}|j}| }|sdd itj |d6d t j kstj |rtj |nd d6} t tj| nd}}|j}||k}|stjd%|fd&||fidt j ks%tj |r4tj |ndd6d t j ks\tj |rktj |nd d6tj |d6}d'i|d 6} t tj| nd}}|j}||k}|stjd(|fd)||fidt j kstj |r%tj |ndd6dt j ksMtj |r\tj |ndd6tj |d6}d*i|d 6} t tj| nd}}|j}||k}|stjd+|fd,||fitj |d6dt j kstj |r&tj |ndd6dt j ksNtj |r]tj |ndd6}d-i|d 6} t tj| nd}}|j}||k}|stjd.|fd/||fitj |d6dt j kstj |rtj |ndd6dt j ks?tj |rNtj |ndd6}d0i|d 6} t tj| nd}}|j}||k}|sstjd1|fd2||fitj |d6dt j kstj |rtj |ndd6dt j ks0tj |r?tj |ndd6}d3i|d 6} t tj| nd}}|j}||k}|sd tjd4|fd5||fidt j kstj |rtj |ndd6dt j ks tj |r tj |ndd6tj |d6}d6i|d 6} t tj| nd}}|j}||k}|sU tjd7|fd8||fidt j ks tj |r tj |ndd6dt j ks tj |r tj |ndd6tj |d6}d9i|d 6} t tj| nd}}|j}| }|s dd itj |d6dt j ks tj |r tj |ndd6} t tj| nd}}t|} | dk} | s tjd:| fd;| dfitj | d6dt j ks\ tj |rk tj |ndd6dt j ks tj tr tj tndd6dt j ks tj dr tj dndd6} d<i| d6}t tj|nd} } x|r- |jq W|j}||k}|s tjd=|fd>||fitj |d6dt j ks tj |r tj |ndd6dt j ks tj |r tj |ndd6}d?i|d 6} t tj| nd}}|j}||k}|stjd@|fdA||fitj |d6d t j ks tj |r tj |nd d6dt j ks tj |r tj |ndd6}dBi|d 6} t tj| nd}}|j}||k}|stjdC|fdD||fitj |d6d t j ks}tj |rtj |nd d6d t j kstj |rtj |nd d6}dEi|d 6} t tj| nd}}|j}| }|sdd itj |d6d t j ksRtj |ratj |nd d6} t tj| nd}}|j}||k}|sutjdF|fdG||fidt j kstj |rtj |ndd6d t j ks"tj |r1tj |nd d6tj |d6}dHi|d 6} t tj| nd}}|j}||k}| }|smtjdI|fdJ||fidt j kstj |rtj |ndd6dt j kstj |r)tj |ndd6tj |d6}dKi|d 6}t tj|nd}}}|j}||k}| }|sitjdL|fdM||fidt j kstj |rtj |ndd6dt j kstj |r%tj |ndd6tj |d6}dNi|d 6}t tj|nd}}}|j}||k}| }|setjdO|fdP||fidt j kstj |rtj |ndd6dt j kstj |r!tj |ndd6tj |d6}dQi|d 6}t tj|nd}}}|j}||k}|sZtjdR|fdS||fitj |d6dt j kstj |rtj |ndd6dt j kstj |r&tj |ndd6}dTi|d 6} t tj| nd}}|j}||k}|sKtjdU|fdV||fitj |d6dt j kstj |rtj |ndd6dt j kstj |rtj |ndd6}dWi|d 6} t tj| nd}}|j}||k}|s<tjdX|fdY||fitj |d6dt j kstj |rtj |ndd6dt j kstj |rtj |ndd6}dZi|d 6} t tj| nd}}|j}| }|sdd itj |d6dt j kstj |rtj |ndd6} t tj| nd}}|j}| }|sVdd itj |d6dt j ks$tj |r3tj |ndd6} t tj| nd}}|j}| }|sdd itj |d6dt j kstj |rtj |ndd6} t tj| nd}}dS([Nu==u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)supy2uaupy0upy4uuassert %(py6)supy6ubucu2assert not %(py2)s {%(py2)s = %(py0)s.components }uinu2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }udueufuisu0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } is %(py5)supy3upy1ukilluNoneupy5uassert %(py7)supy7uassert not %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(uin(u2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }uassert %(py6)s(uin(u2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }uassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(uin(u2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }uassert %(py6)s(uin(u2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }uassert %(py6)s(uis(u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } is %(py5)suassert %(py7)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(uin(u2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }uassert %(py6)s(uin(u2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }uassert not %(py6)s(uin(u2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }uassert not %(py6)s(uin(u2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }uassert not %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(uAuBuCuDuEuFuparentu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu componentsukilluflush(uaubucudueufu @py_assert1u @py_assert3u @py_format5u @py_format7u @py_format4u @py_assert2u @py_assert4u @py_format6u @py_format8u @py_assert7((u6/home/prologic/work/circuits/tests/tools/test_tools.pyu test_kill9s                  U                U           U             U  U  Uc Cstjdddkr)tjdnt}t|}d}||k}|stjd|fd||fidtjkstj |rtj |ndd6tj |d 6}di|d 6}t tj |nd}}d }||k}|stjd|fd||fidtjksOtj |r^tj |ndd6tj |d 6}di|d 6}t tj |nd}}d}||k}|sYtjd|fd||fidtjkstj |rtj |ndd6tj |d 6}di|d 6}t tj |nd}}d}||k}|stjd|fd||fidtjkstj |rtj |ndd6tj |d 6}di|d 6}t tj |nd}}d}||k}|stjd|fd ||fidtjksttj |rtj |ndd6tj |d 6}d!i|d 6}t tj |nd}}d}||k}|s~tjd"|fd#||fidtjks+tj |r:tj |ndd6tj |d 6}d$i|d 6}t tj |nd}}dS(%NiiuBroken on Python 3.3u Components: 0uinu%(py1)s in %(py3)susupy3upy1uuassert %(py5)supy5uEvent Handlers: 2ufoo; 1uuprepare_unregister_complete; 1uZ.prepare_unregister_complete] (A._on_prepare_unregister_complete)>(ii(uin(u%(py1)s in %(py3)suassert %(py5)s(uin(u%(py1)s in %(py3)suassert %(py5)s(uin(u%(py1)s in %(py3)suassert %(py5)s(uin(u%(py1)s in %(py3)suassert %(py5)s(uin(u%(py1)s in %(py3)suassert %(py5)s(uin(u%(py1)s in %(py3)suassert %(py5)s(upytestuPYVERuskipuAuinspectu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(uausu @py_assert0u @py_assert2u @py_format4u @py_format6((u6/home/prologic/work/circuits/tests/tools/test_tools.pyu test_inspectos\   l  l  l  l  l  lc Cst}t}t}||7}||7}t|}||k}|s tjd |fd ||fidtjkstj|rtj |ndd6dtjkstj|rtj |ndd6}d i|d 6}t tj |nd}t|}||k}|stjd |fd||fidtjksotj|r~tj |ndd6dtjkstj|rtj |ndd6}di|d 6}t tj |nd}t|}||k}|stjd|fd||fidtjksOtj|r^tj |ndd6dtjkstj|rtj |ndd6}di|d 6}t tj |nd}dS(Nu==u%(py0)s == %(py2)suaupy2urootupy0uuassert %(py4)supy4(u==(u%(py0)s == %(py2)suassert %(py4)s(u==(u%(py0)s == %(py2)suassert %(py4)s(u==(u%(py0)s == %(py2)suassert %(py4)s( uAuBuCufindrootu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(uaubucurootu @py_assert1u @py_format3u @py_format5((u6/home/prologic/work/circuits/tests/tools/test_tools.pyu test_findroot~s4           cCst}t|j}d}||k}|stjd |fd ||fitj|d6dtjkstj|rtj|ndd6}d i|d 6}t tj |nd}}d }t j tt|dS(Nuu==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5cSsdS(N(uNone(((u6/home/prologic/work/circuits/tests/tools/test_tools.pyus(u==(u%(py0)s == %(py3)suassert %(py5)s(uAu reprhandlerufoou @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneupytesturaisesuAttributeError(uausu @py_assert2u @py_assert1u @py_format4u @py_format6uf((u6/home/prologic/work/circuits/tests/tools/test_tools.pyutest_reprhandlers  l  cCsddl}td}||k}|stjd |fd ||fidtjksltj|r{tj|ndd6dtjkstj|rtj|ndd6}d i|d 6}ttj |nd}dS(Niuosuisu%(py0)s is %(py2)supy2umupy0uuassert %(py4)supy4(uis(u%(py0)s is %(py2)suassert %(py4)s( uosu tryimportu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(uosumu @py_assert1u @py_format3u @py_format5((u6/home/prologic/work/circuits/tests/tools/test_tools.pyutest_tryimports   cCsddlm}tdd}||k}|stjd |fd||fidtjksstj|rtj|ndd6dtjkstj|rtj|ndd 6}di|d 6}t tj |nd}dS(Ni(upathuosupathuisu%(py0)s is %(py2)supy2umupy0uuassert %(py4)supy4(uis(u%(py0)s is %(py2)suassert %(py4)s( uosupathu tryimportu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(upathumu @py_assert1u @py_format3u @py_format5((u6/home/prologic/work/circuits/tests/tools/test_tools.pyutest_tryimport_objs cCstd}|dk}|stjd |fd |dfidtjks`tjdrotjdndd6dtjkstj|rtj|ndd6}d i|d 6}ttj |nd}dS(Nuasdfuisu%(py0)s is %(py2)suNoneupy2umupy0uuassert %(py4)supy4(uis(u%(py0)s is %(py2)suassert %(py4)s( u tryimportuNoneu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanation(umu @py_assert1u @py_format3u @py_format5((u6/home/prologic/work/circuits/tests/tools/test_tools.pyutest_tryimport_fails  (!u__doc__ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestu threadingucurrent_threadu ImportErroru currentThreaducircuitsu Componentu reprhandlerucircuits.toolsukilluinspectufindrootu tryimportuAuBuCuDuEuFu test_killu test_inspectu test_findrootutest_reprhandlerutest_tryimportutest_tryimport_objutest_tryimport_fail(((u6/home/prologic/work/circuits/tests/tools/test_tools.pyus,   " 6    circuits-3.1.0/tests/tools/__pycache__/test_tools.cpython-27-PYTEST.pyc0000644000014400001440000004366412414363102026727 0ustar prologicusers00000000000000 ?T c@sgdZddlZddljjZddlZyddlm Z Wn!e k rgddlm Z nXddl m Z mZddlmZmZmZmZde fdYZd e fd YZd e fd YZd e fdYZde fdYZde fdYZdZdZdZdZdZdZdZ dS(s?Tools Test Suite Test all functionality of the tools package. iN(tcurrent_thread(t currentThread(t Componentt reprhandler(tkilltinspecttfindroott tryimporttAcBseZdZRS(cCs dGHdS(NsA!((tself((s6/home/prologic/work/circuits/tests/tools/test_tools.pytfoos(t__name__t __module__R (((s6/home/prologic/work/circuits/tests/tools/test_tools.pyRstBcBseZdZRS(cCs dGHdS(NsB!((R ((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR s(R R R (((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR stCcBseZdZRS(cCs dGHdS(NsC!((R ((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR #s(R R R (((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR!stDcBseZdZRS(cCs dGHdS(NsD!((R ((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR )s(R R R (((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR'stEcBseZdZRS(cCs dGHdS(NsE!((R ((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR /s(R R R (((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR-stFcBseZdZRS(cCs dGHdS(NsF!((R ((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR 5s(R R R (((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR3scCst}t}t}t}t}t}||7}||7}||7}||7}||7}|j}||k}|sOtjd|fd||fitj |d6dt j kstj |rtj |ndd6dt j ks tj |rtj |ndd6}di|d 6} t tj| nd}}|j}||k}|s@tjd|fd ||fitj |d6d t j kstj |rtj |nd d6dt j kstj |r tj |ndd6}d!i|d 6} t tj| nd}}|j}||k}|s1tjd"|fd#||fitj |d6d t j kstj |rtj |nd d6d t j kstj |rtj |nd d6}d$i|d 6} t tj| nd}}|j}| }|sdd itj |d6d t j kstj |rtj |nd d6} t tj| nd}}|j}||k}|stjd%|fd&||fidt j ks%tj |r4tj |ndd6d t j ks\tj |rktj |nd d6tj |d6}d'i|d 6} t tj| nd}}|j}||k}|stjd(|fd)||fidt j kstj |r%tj |ndd6dt j ksMtj |r\tj |ndd6tj |d6}d*i|d 6} t tj| nd}}|j}||k}|stjd+|fd,||fitj |d6dt j kstj |r&tj |ndd6dt j ksNtj |r]tj |ndd6}d-i|d 6} t tj| nd}}|j}||k}|stjd.|fd/||fitj |d6dt j kstj |rtj |ndd6dt j ks?tj |rNtj |ndd6}d0i|d 6} t tj| nd}}|j}||k}|sstjd1|fd2||fitj |d6dt j kstj |rtj |ndd6dt j ks0tj |r?tj |ndd6}d3i|d 6} t tj| nd}}|j}||k}|sd tjd4|fd5||fidt j kstj |rtj |ndd6dt j ks tj |r tj |ndd6tj |d6}d6i|d 6} t tj| nd}}|j}||k}|sU tjd7|fd8||fidt j ks tj |r tj |ndd6dt j ks tj |r tj |ndd6tj |d6}d9i|d 6} t tj| nd}}|j}| }|s dd itj |d6dt j ks tj |r tj |ndd6} t tj| nd}}t|} | dk} | s tjd:| fd;| dfitj | d6dt j ks\ tj |rk tj |ndd6dt j ks tj tr tj tndd6dt j ks tj dr tj dndd6} d<i| d6}t tj|nd} } x|r- |jq W|j}||k}|s tjd=|fd>||fitj |d6dt j ks tj |r tj |ndd6dt j ks tj |r tj |ndd6}d?i|d 6} t tj| nd}}|j}||k}|stjd@|fdA||fitj |d6d t j ks tj |r tj |nd d6dt j ks tj |r tj |ndd6}dBi|d 6} t tj| nd}}|j}||k}|stjdC|fdD||fitj |d6d t j ks}tj |rtj |nd d6d t j kstj |rtj |nd d6}dEi|d 6} t tj| nd}}|j}| }|sdd itj |d6d t j ksRtj |ratj |nd d6} t tj| nd}}|j}||k}|sutjdF|fdG||fidt j kstj |rtj |ndd6d t j ks"tj |r1tj |nd d6tj |d6}dHi|d 6} t tj| nd}}|j}||k}| }|smtjdI|fdJ||fidt j kstj |rtj |ndd6dt j kstj |r)tj |ndd6tj |d6}dKi|d 6}t tj|nd}}}|j}||k}| }|sitjdL|fdM||fidt j kstj |rtj |ndd6dt j kstj |r%tj |ndd6tj |d6}dNi|d 6}t tj|nd}}}|j}||k}| }|setjdO|fdP||fidt j kstj |rtj |ndd6dt j kstj |r!tj |ndd6tj |d6}dQi|d 6}t tj|nd}}}|j}||k}|sZtjdR|fdS||fitj |d6dt j kstj |rtj |ndd6dt j kstj |r&tj |ndd6}dTi|d 6} t tj| nd}}|j}||k}|sKtjdU|fdV||fitj |d6dt j kstj |rtj |ndd6dt j kstj |rtj |ndd6}dWi|d 6} t tj| nd}}|j}||k}|s<tjdX|fdY||fitj |d6dt j kstj |rtj |ndd6dt j kstj |rtj |ndd6}dZi|d 6} t tj| nd}}|j}| }|sdd itj |d6dt j kstj |rtj |ndd6} t tj| nd}}|j}| }|sVdd itj |d6dt j ks$tj |r3tj |ndd6} t tj| nd}}|j}| }|sdd itj |d6dt j kstj |rtj |ndd6} t tj| nd}}dS([Ns==s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)stpy2tatpy0tpy4tsassert %(py6)stpy6tbtcs2assert not %(py2)s {%(py2)s = %(py0)s.components }tins2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }tdtetftiss0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } is %(py5)stpy3tpy1RtNonetpy5sassert %(py7)stpy7sassert not %(py6)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)ssassert %(py6)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)ssassert %(py6)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)ssassert %(py6)s(R(s2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }sassert %(py6)s(R(s2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }sassert %(py6)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)ssassert %(py6)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)ssassert %(py6)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)ssassert %(py6)s(R(s2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }sassert %(py6)s(R(s2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }sassert %(py6)s(R(s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } is %(py5)ssassert %(py7)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)ssassert %(py6)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)ssassert %(py6)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)ssassert %(py6)s(R(s2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }sassert %(py6)s(R(s2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }sassert not %(py6)s(R(s2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }sassert not %(py6)s(R(s2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }sassert not %(py6)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)ssassert %(py6)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)ssassert %(py6)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)ssassert %(py6)s(RR RRRRtparentt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationR!t componentsRtflush(RRRRRRt @py_assert1t @py_assert3t @py_format5t @py_format7t @py_format4t @py_assert2t @py_assert4t @py_format6t @py_format8t @py_assert7((s6/home/prologic/work/circuits/tests/tools/test_tools.pyt test_kill9s                  U                U           U             U  U  UcCstjd dkr#tjdnt}t|}d}||k}|stjd|fd||fidtjkstj |rtj |ndd6tj |d 6}di|d 6}t tj |nd}}d }||k}|stjd|fd||fidtjksItj |rXtj |ndd6tj |d 6}di|d 6}t tj |nd}}d}||k}|sStjd|fd||fidtjkstj |rtj |ndd6tj |d 6}di|d 6}t tj |nd}}d}||k}|s tjd|fd||fidtjkstj |rtj |ndd6tj |d 6}di|d 6}t tj |nd}}d}||k}|stjd|fd ||fidtjksntj |r}tj |ndd6tj |d 6}d!i|d 6}t tj |nd}}d}||k}|sxtjd"|fd#||fidtjks%tj |r4tj |ndd6tj |d 6}d$i|d 6}t tj |nd}}dS(%NiisBroken on Python 3.3s Components: 0Rs%(py1)s in %(py3)stsRR Rsassert %(py5)sR"sEvent Handlers: 2sfoo; 1ssprepare_unregister_complete; 1sZ.prepare_unregister_complete] (A._on_prepare_unregister_complete)>(ii(R(s%(py1)s in %(py3)ssassert %(py5)s(R(s%(py1)s in %(py3)ssassert %(py5)s(R(s%(py1)s in %(py3)ssassert %(py5)s(R(s%(py1)s in %(py3)ssassert %(py5)s(R(s%(py1)s in %(py3)ssassert %(py5)s(R(s%(py1)s in %(py3)ssassert %(py5)s(tpytesttPYVERtskipRRR%R&R(R)R*R'R+R,R!(RR:t @py_assert0R4R3R6((s6/home/prologic/work/circuits/tests/tools/test_tools.pyt test_inspectos\   l  l  l  l  l  lcCst}t}t}||7}||7}t|}||k}|s tjd |fd ||fidtjkstj|rtj |ndd6dtjkstj|rtj |ndd6}d i|d 6}t tj |nd}t|}||k}|stjd |fd||fidtjksotj|r~tj |ndd6dtjkstj|rtj |ndd6}di|d 6}t tj |nd}t|}||k}|stjd|fd||fidtjksOtj|r^tj |ndd6dtjkstj|rtj |ndd6}di|d 6}t tj |nd}dS(Ns==s%(py0)s == %(py2)sRRtrootRRsassert %(py4)sR(s==(s%(py0)s == %(py2)ssassert %(py4)s(s==(s%(py0)s == %(py2)ssassert %(py4)s(s==(s%(py0)s == %(py2)ssassert %(py4)s( RR RRR%R&R(R)R*R'R+R,R!(RRRR@R/t @py_format3R1((s6/home/prologic/work/circuits/tests/tools/test_tools.pyt test_findroot~s4           cCst}t|j}d}||k}|stjd |fd ||fitj|d6dtjkstj|rtj|ndd6}d i|d 6}t tj |nd}}d }t j tt|dS(Nss==s%(py0)s == %(py3)sRR:RRsassert %(py5)sR"cSsdS(N(R!(((s6/home/prologic/work/circuits/tests/tools/test_tools.pyts(s==(s%(py0)s == %(py3)ssassert %(py5)s(RRR R%R&R'R(R)R*R+R,R!R;traisestAttributeError(RR:R4R/R3R6R((s6/home/prologic/work/circuits/tests/tools/test_tools.pyttest_reprhandlers  l  cCsddl}td}||k}|stjd |fd ||fidtjksltj|r{tj|ndd6dtjkstj|rtj|ndd6}d i|d 6}ttj |nd}dS(NitosRs%(py0)s is %(py2)sRtmRRsassert %(py4)sR(R(s%(py0)s is %(py2)ssassert %(py4)s( RGRR%R&R(R)R*R'R+R,R!(RGRHR/RAR1((s6/home/prologic/work/circuits/tests/tools/test_tools.pyttest_tryimports   cCsddlm}tdd}||k}|stjd |fd||fidtjksstj|rtj|ndd6dtjkstj|rtj|ndd 6}di|d 6}t tj |nd}dS(Ni(tpathRGRJRs%(py0)s is %(py2)sRRHRRsassert %(py4)sR(R(s%(py0)s is %(py2)ssassert %(py4)s( RGRJRR%R&R(R)R*R'R+R,R!(RJRHR/RAR1((s6/home/prologic/work/circuits/tests/tools/test_tools.pyttest_tryimport_objs cCstd}|dk}|stjd |fd |dfidtjks`tjdrotjdndd6dtjkstj|rtj|ndd6}d i|d 6}ttj |nd}dS(NtasdfRs%(py0)s is %(py2)sR!RRHRRsassert %(py4)sR(R(s%(py0)s is %(py2)ssassert %(py4)s( RR!R%R&R(R)R*R'R+R,(RHR/RAR1((s6/home/prologic/work/circuits/tests/tools/test_tools.pyttest_tryimport_fails  (!t__doc__t __builtin__R(t_pytest.assertion.rewritet assertiontrewriteR%R;t threadingRt ImportErrorRtcircuitsRRtcircuits.toolsRRRRRR RRRRR9R?RBRFRIRKRM(((s6/home/prologic/work/circuits/tests/tools/test_tools.pyts,   " 6    circuits-3.1.0/tests/tools/__pycache__/test_tools.cpython-26-PYTEST.pyc0000644000014400001440000004301312407376151026724 0ustar prologicusers00000000000000 ?T c @sidZddkZddkiiZddkZyddkl Z Wn#e j oddkl Z nXddk l Z lZddklZlZlZlZde fdYZd e fd YZd e fd YZd e fdYZde fdYZde fdYZdZdZdZdZdZdZdZ dS(s?Tools Test Suite Test all functionality of the tools package. iN(tcurrent_thread(t currentThread(t Componentt reprhandler(tkilltinspecttfindroott tryimporttAcBseZdZRS(cCs dGHdS(NsA!((tself((s6/home/prologic/work/circuits/tests/tools/test_tools.pytfoos(t__name__t __module__R (((s6/home/prologic/work/circuits/tests/tools/test_tools.pyRstBcBseZdZRS(cCs dGHdS(NsB!((R ((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR s(R R R (((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR stCcBseZdZRS(cCs dGHdS(NsC!((R ((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR #s(R R R (((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR!stDcBseZdZRS(cCs dGHdS(NsD!((R ((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR )s(R R R (((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR'stEcBseZdZRS(cCs dGHdS(NsE!((R ((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR /s(R R R (((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR-stFcBseZdZRS(cCs dGHdS(NsF!((R ((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR 5s(R R R (((s6/home/prologic/work/circuits/tests/tools/test_tools.pyR3scCst}t}t}t}t}t}||7}||7}||7}||7}||7}|i}||j}|ptid|fd||fhdt i jpti |oti |ndd6ti |d6dt i jpti |oti |ndd6}dh|d6} t ti| nd}}|i}||j}|ptid|fd||fhd t i jpti |oti |nd d6ti |d6dt i jpti |oti |ndd6}dh|d6} t ti| nd}}|i}||j}|ptid|fd ||fhd t i jpti |oti |nd d6ti |d6d t i jpti |oti |nd d6}dh|d6} t ti| nd}}|i}| }|pmd hd t i jpti |oti |nd d6ti |d6} t ti| nd}}|i}||j}|ptid!|fd"||fhd t i jpti |oti |nd d6dt i jpti |oti |ndd6ti |d6}dh|d6} t ti| nd}}|i}||j}|ptid#|fd$||fhdt i jpti |oti |ndd6dt i jpti |oti |ndd6ti |d6}dh|d6} t ti| nd}}|i}||j}|ptid%|fd&||fhdt i jpti |oti |ndd6ti |d6dt i jpti |oti |ndd6}dh|d6} t ti| nd}}|i}||j}|ptid'|fd(||fhdt i jpti |oti |ndd6ti |d6dt i jpti |oti |ndd6}dh|d6} t ti| nd}}|i}||j}|ptid)|fd*||fhdt i jpti |oti |ndd6ti |d6dt i jpti |oti |ndd6}dh|d6} t ti| nd}}|i}||j}|ptid+|fd,||fhdt i jpti |oti |ndd6dt i jpti |oti |ndd6ti |d6}dh|d6} t ti| nd}}|i}||j}|ptid-|fd.||fhdt i jpti |oti |ndd6dt i jpti |oti |ndd6ti |d6}dh|d6} t ti| nd}}|i}| }|pmd hdt i jpti |oti |ndd6ti |d6} t ti| nd}}t|} | dj} | p tid/| fd0| dfhdt i jpti |oti |ndd6dt i jpti toti tndd6ti | d6dt i jpti doti dndd6} dh| d6}t ti|nd} } x|o|iqw W|i}||j}|ptid1|fd2||fhdt i jpti |oti |ndd6ti |d6dt i jpti |oti |ndd6}dh|d6} t ti| nd}}|i}||j}|ptid3|fd4||fhd t i jpti |oti |nd d6ti |d6dt i jpti |oti |ndd6}dh|d6} t ti| nd}}|i}||j}|ptid5|fd6||fhd t i jpti |oti |nd d6ti |d6d t i jpti |oti |nd d6}dh|d6} t ti| nd}}|i}| }|pmd hd t i jpti |oti |nd d6ti |d6} t ti| nd}}|i}||j}|ptid7|fd8||fhd t i jpti |oti |nd d6dt i jpti |oti |ndd6ti |d6}dh|d6} t ti| nd}}|i}||j}| }|ptid9|fd:||fhdt i jpti |oti |ndd6dt i jpti |oti |ndd6ti |d6}dh|d6}t ti|nd}}}|i}||j}| }|ptid;|fd<||fhdt i jpti |oti |ndd6dt i jpti |oti |ndd6ti |d6}dh|d6}t ti|nd}}}|i}||j}| }|ptid=|fd>||fhdt i jpti |oti |ndd6dt i jpti |oti |ndd6ti |d6}dh|d6}t ti|nd}}}|i}||j}|ptid?|fd@||fhdt i jpti |oti |ndd6ti |d6dt i jpti |oti |ndd6}dh|d6} t ti| nd}}|i}||j}|ptidA|fdB||fhdt i jpti |oti |ndd6ti |d6dt i jpti |oti |ndd6}dh|d6} t ti| nd}}|i}||j}|ptidC|fdD||fhdt i jpti |oti |ndd6ti |d6dt i jpti |oti |ndd6}dh|d6} t ti| nd}}|i}| }|pmd hdt i jpti |oti |ndd6ti |d6} t ti| nd}}|i}| }|pmd hdt i jpti |oti |ndd6ti |d6} t ti| nd}}|i}| }|pmd hdt i jpti |oti |ndd6ti |d6} t ti| nd}}dS(ENs==s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)statpy0tpy2tpy4sassert %(py6)stpy6tbtcs2assert not %(py2)s {%(py2)s = %(py0)s.components }tins2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }tdtetftiss0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } is %(py5)stpy1Rtpy3tNonetpy5sassert %(py7)stpy7sassert not %(py6)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)s(R(s2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }(R(s2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)s(R(s2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }(R(s2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }(R(s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } is %(py5)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)s(R(s2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }(R(s2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }(R(s2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }(R(s2%(py0)s in %(py4)s {%(py4)s = %(py2)s.components }(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)s(RR RRRRtparentt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationR t componentsRtflush(RRRRRRt @py_assert1t @py_assert3t @py_format5t @py_format7t @py_format4t @py_assert2t @py_assert4t @py_format6t @py_format8t @py_assert7((s6/home/prologic/work/circuits/tests/tools/test_tools.pyt test_kill9s                  T                T          T             T  T  TcCstid djotidnt}t|}d}||j}|ptid|fd||fhti|d6dti jpti |oti|ndd 6}d h|d 6}t ti |nd}}d }||j}|ptid|fd||fhti|d6dti jpti |oti|ndd 6}d h|d 6}t ti |nd}}d }||j}|ptid|fd||fhti|d6dti jpti |oti|ndd 6}d h|d 6}t ti |nd}}d}||j}|ptid|fd||fhti|d6dti jpti |oti|ndd 6}d h|d 6}t ti |nd}}d}||j}|ptid|fd||fhti|d6dti jpti |oti|ndd 6}d h|d 6}t ti |nd}}d}||j}|ptid|fd||fhti|d6dti jpti |oti|ndd 6}d h|d 6}t ti |nd}}dS(NiisBroken on Python 3.3s Components: 0Rs%(py1)s in %(py3)sRtsRsassert %(py5)sR!sEvent Handlers: 2sfoo; 1ssprepare_unregister_complete; 1sZ.prepare_unregister_complete] (A._on_prepare_unregister_complete)>(ii(R(s%(py1)s in %(py3)s(R(s%(py1)s in %(py3)s(R(s%(py1)s in %(py3)s(R(s%(py1)s in %(py3)s(R(s%(py1)s in %(py3)s(R(s%(py1)s in %(py3)s(tpytesttPYVERtskipRRR$R%R)R&R'R(R*R+R (RR9t @py_assert0R3R2R5((s6/home/prologic/work/circuits/tests/tools/test_tools.pyt test_inspectos\   o  o  o  o  o  ocCst}t}t}||7}||7}t|}||j}|ptid |fd ||fhdtijpti|oti |ndd6dtijpti|oti |ndd6}dh|d6}t ti |nd}t|}||j}|ptid |fd ||fhdtijpti|oti |ndd6dtijpti|oti |ndd6}dh|d6}t ti |nd}t|}||j}|ptid |fd||fhdtijpti|oti |ndd6dtijpti|oti |ndd6}dh|d6}t ti |nd}dS(Ns==s%(py0)s == %(py2)strootRRRsassert %(py4)sR(s==(s%(py0)s == %(py2)s(s==(s%(py0)s == %(py2)s(s==(s%(py0)s == %(py2)s( RR RRR$R%R&R'R(R)R*R+R (RRRR?R.t @py_format3R0((s6/home/prologic/work/circuits/tests/tools/test_tools.pyt test_findroot~s4           cCst}t|i}d}||j}|ptid |fd ||fhdtijpti|oti|ndd6ti|d6}dh|d6}t ti |nd}}d }t i tt|dS( Nss==s%(py0)s == %(py3)sR9RRsassert %(py5)sR!cSsdS(N(R (((s6/home/prologic/work/circuits/tests/tools/test_tools.pyts(s==(s%(py0)s == %(py3)s(RRR R$R%R&R'R(R)R*R+R R:traisestAttributeError(RR9R3R.R2R5R((s6/home/prologic/work/circuits/tests/tools/test_tools.pyttest_reprhandlers  o  cCsddk}td}||j}|ptid |fd ||fhdtijpti|oti|ndd6dtijpti|oti|ndd6}dh|d 6}tti |nd}dS( NitosRs%(py0)s is %(py2)stmRRsassert %(py4)sR(R(s%(py0)s is %(py2)s( RFRR$R%R&R'R(R)R*R+R (RFRGR.R@R0((s6/home/prologic/work/circuits/tests/tools/test_tools.pyttest_tryimports   cCsddkl}tdd}||j}|ptid |fd ||fhdtijpti|oti|ndd6dtijpti|oti|ndd 6}d h|d 6}t ti |nd}dS(Ni(tpathRFRIRs%(py0)s is %(py2)sRGRRsassert %(py4)sR(R(s%(py0)s is %(py2)s( RFRIRR$R%R&R'R(R)R*R+R (RIRGR.R@R0((s6/home/prologic/work/circuits/tests/tools/test_tools.pyttest_tryimport_objs cCstd}|dj}|ptid |fd |dfhdtijpti|oti|ndd6dtijptidotidndd6}dh|d 6}tti |nd}dS( NtasdfRs%(py0)s is %(py2)sRGRR Rsassert %(py4)sR(R(s%(py0)s is %(py2)s( RR R$R%R&R'R(R)R*R+(RGR.R@R0((s6/home/prologic/work/circuits/tests/tools/test_tools.pyttest_tryimport_fails  (!t__doc__t __builtin__R&t_pytest.assertion.rewritet assertiontrewriteR$R:t threadingRt ImportErrorRtcircuitsRRtcircuits.toolsRRRRRR RRRRR8R>RARERHRJRL(((s6/home/prologic/work/circuits/tests/tools/test_tools.pyts,  " 6    circuits-3.1.0/tests/tools/test_tools.py0000644000014400001440000000541412402037676021417 0ustar prologicusers00000000000000# Module: test_tools # Date: 13th March 2009 # Author: James Mills, prologic at shortcircuit dot net dot au """Tools Test Suite Test all functionality of the tools package. """ import pytest try: from threading import current_thread except ImportError: from threading import currentThread as current_thread # NOQA from circuits import Component, reprhandler from circuits.tools import kill, inspect, findroot, tryimport class A(Component): def foo(self): print("A!") class B(Component): def foo(self): print("B!") class C(Component): def foo(self): print("C!") class D(Component): def foo(self): print("D!") class E(Component): def foo(self): print("E!") class F(Component): def foo(self): print("F!") def test_kill(): a = A() b = B() c = C() d = D() e = E() f = F() a += b b += c e += f d += e a += d assert a.parent == a assert b.parent == a assert c.parent == b assert not c.components assert b in a.components assert d in a.components assert d.parent == a assert e.parent == d assert f.parent == e assert f in e.components assert e in d.components assert not f.components assert kill(d) is None while a: a.flush() assert a.parent == a assert b.parent == a assert c.parent == b assert not c.components assert b in a.components assert not d in a.components assert not e in d.components assert not f in e.components assert d.parent == d assert e.parent == e assert f.parent == f assert not d.components assert not e.components assert not f.components def test_inspect(): if pytest.PYVER[:2] == (3, 3): pytest.skip("Broken on Python 3.3") a = A() s = inspect(a) assert "Components: 0" in s assert "Event Handlers: 2" in s assert "foo; 1" in s assert "" in s assert "prepare_unregister_complete; 1" in s assert ".prepare_unregister_complete] (A._on_prepare_unregister_complete)>" in s def test_findroot(): a = A() b = B() c = C() a += b b += c root = findroot(a) assert root == a root = findroot(b) assert root == a root = findroot(c) assert root == a def test_reprhandler(): a = A() s = reprhandler(a.foo) assert s == "" f = lambda: None pytest.raises(AttributeError, reprhandler, f) def test_tryimport(): import os m = tryimport("os") assert m is os def test_tryimport_obj(): from os import path m = tryimport("os", "path") assert m is path def test_tryimport_fail(): m = tryimport("asdf") assert m is None circuits-3.1.0/tests/tools/__init__.pyc0000644000014400001440000000021312420400436021076 0ustar prologicusers00000000000000 Qc@sdS(N((((s4/home/prologic/work/circuits/tests/tools/__init__.pytscircuits-3.1.0/tests/core/0000755000014400001440000000000012425013643016423 5ustar prologicusers00000000000000circuits-3.1.0/tests/core/test_event.py0000644000014400001440000000264312402037676021171 0ustar prologicusers00000000000000# Module: test_event # Date: 12th April 2010 # Author: James Mills, prologic at shortcircuit dot net dot au """Event Tests""" import py from circuits import Event, Component class test(Event): """test Event""" class App(Component): def test(self): return "Hello World!" def test_repr(): app = App() while app: app.flush() e = test() s = repr(e) assert s == "" app.fire(e) s = repr(e) assert s == "" def test_create(): app = App() while app: app.flush() e = Event.create("test") s = repr(e) assert s == "" app.fire(e) s = repr(e) assert s == "" def test_getitem(): app = App() while app: app.flush() e = test(1, 2, 3, foo="bar") assert e[0] == 1 assert e["foo"] == "bar" def f(e, k): return e[k] py.test.raises(TypeError, f, e, None) def test_setitem(): app = App() while app: app.flush() e = test(1, 2, 3, foo="bar") assert e[0] == 1 assert e["foo"] == "bar" e[0] = 0 e["foo"] = "Hello" def f(e, k, v): e[k] = v py.test.raises(TypeError, f, e, None, None) assert e[0] == 0 assert e["foo"] == "Hello" def test_subclass_looses_properties(): class hello(Event): success = True e = hello().child('success') assert e.success is False circuits-3.1.0/tests/core/test_feedback.py0000644000014400001440000000355112402037676021573 0ustar prologicusers00000000000000# Module: test_feedback # Date: 11th February 2010 # Author: James Mills, prologic at shortcircuit dot net dot au """Feedback Channels Tests""" import py from circuits import handler, Event, Component class test(Event): """test Event""" success = True failure = True class App(Component): def __init__(self): super(App, self).__init__() self.e = None self.error = None self.value = None self.success = False self.failure = False @handler("*") def event(self, event, *args, **kwargs): if kwargs.get("filter", False): event.stop() def test(self, error=False): if error: raise Exception("Hello World!") return "Hello World!" def test_success(self, e, value): self.e = e self.value = value self.success = True def test_failure(self, e, error): self.e = e self.error = error self.failure = True def reraise(e): raise e def test_success(): app = App() while app: app.flush() e = test() value = app.fire(e) while app: app.flush() # The Event s = value.value assert s == "Hello World!" while app: app.flush() assert app.e == e assert app.success assert app.e.value == value assert app.value == value.value def test_failure(): app = App() while app: app.flush() e = test(error=True) x = app.fire(e) while app: app.flush() # The Event py.test.raises(Exception, lambda x: reraise(x[1]), x.value) while app: app.flush() assert app.e == e etype, evalue, etraceback = app.error py.test.raises(Exception, lambda x: reraise(x), evalue) assert etype == Exception assert app.failure assert not app.success assert app.e.value == x circuits-3.1.0/tests/core/test_value.py0000644000014400001440000000467012402037676021166 0ustar prologicusers00000000000000#!/usr/bin/python -i import pytest from circuits import handler, Event, Component class hello(Event): "Hhllo Event" class test(Event): "test Event" class foo(Event): "foo Event" class values(Event): "values Event" complete = True class App(Component): def hello(self): return "Hello World!" def test(self): return self.fire(hello()) def foo(self): raise Exception("ERROR") @handler("hello_value_changed") def _on_hello_value_changed(self, value): self.value = value @handler("test_value_changed") def _on_test_value_changed(self, value): self.value = value @handler("values", priority=2.0) def _value1(self): return "foo" @handler("values", priority=1.0) def _value2(self): return "bar" @handler("values", priority=0.0) def _value3(self): return self.fire(hello()) @pytest.fixture def app(request, manager, watcher): app = App().register(manager) watcher.wait("registered") def finalizer(): app.unregister() watcher.wait("unregistered") request.addfinalizer(finalizer) return app def test_value(app, watcher): x = app.fire(hello()) watcher.wait("hello") assert "Hello World!" in x assert x.value == "Hello World!" def test_nested_value(app, watcher): x = app.fire(test()) watcher.wait("test") assert x.value == "Hello World!" assert str(x) == "Hello World!" def test_value_notify(app, watcher): x = app.fire(hello()) x.notify = True watcher.wait("hello_value_changed") assert "Hello World!" in x assert x.value == "Hello World!" assert app.value is x def test_nested_value_notify(app, watcher): x = app.fire(test()) x.notify = True watcher.wait("hello_value_changed") assert x.value == "Hello World!" assert str(x) == "Hello World!" assert app.value is x def test_error_value(app, watcher): x = app.fire(foo()) watcher.wait("foo") etype, evalue, etraceback = x assert etype is Exception assert str(evalue) == "ERROR" assert isinstance(etraceback, list) def test_multiple_values(app, watcher): v = app.fire(values()) watcher.wait("values_complete") assert isinstance(v.value, list) x = list(v) assert "foo" in v assert x == ["foo", "bar", "Hello World!"] assert x[0] == "foo" assert x[1] == "bar" assert x[2] == "Hello World!" circuits-3.1.0/tests/core/test_globals.py0000644000014400001440000000217712402037676021475 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import handler, Event, Component class foo(Event): """foo Event""" class test(Event): """test Event""" class A(Component): channel = "a" def test(self): return "Hello World!" @handler(priority=1.0) def _on_event(self, event, *args, **kwargs): return "Foo" class B(Component): @handler(priority=10.0, channel="*") def _on_channel(self, event, *args, **kwargs): return "Bar" def test_main(): app = A() + B() while app: app.flush() x = app.fire(test(), "a") while app: app.flush() assert x.value[0] == "Bar" assert x.value[1] == "Foo" assert x.value[2] == "Hello World!" def test_event(): app = A() + B() while app: app.flush() e = test() x = app.fire(e) while app: app.flush() assert x.value[0] == "Bar" assert x.value[1] == "Foo" assert x.value[2] == "Hello World!" def test_channel(): app = A() + B() while app: app.flush() e = foo() x = app.fire(e, "b") while app: app.flush() assert x.value == "Bar" circuits-3.1.0/tests/core/app.pyc0000644000014400001440000000130412420400454017711 0ustar prologicusers00000000000000 ?Tc@s*ddlmZdefdYZdS(i(t ComponenttAppcBseZdZdZRS(cCsdS(Ns Hello World!((tself((s./home/prologic/work/circuits/tests/core/app.pyttestscGsdS(N((Rtargs((s./home/prologic/work/circuits/tests/core/app.pytprepare_unregister s(t__name__t __module__RR(((s./home/prologic/work/circuits/tests/core/app.pyRs N(tcircuitsRR(((s./home/prologic/work/circuits/tests/core/app.pytscircuits-3.1.0/tests/core/signalapp.py0000644000014400001440000000156712402037676020773 0ustar prologicusers00000000000000#!/usr/bin/env python import os import sys try: from coverage import coverage HAS_COVERAGE = True except ImportError: HAS_COVERAGE = False from circuits import Component from circuits.app import Daemon class App(Component): def init(self, pidfile, signalfile): self.pidfile = pidfile self.signalfile = signalfile Daemon(self.pidfile).register(self) def signal(self, signal, stack): f = open(self.signalfile, "w") f.write(str(signal)) f.close() self.stop() def main(): if HAS_COVERAGE: _coverage = coverage(data_suffix=True) _coverage.start() pidfile = os.path.abspath(sys.argv[1]) signalfile = os.path.abspath(sys.argv[2]) App(pidfile, signalfile).run() if HAS_COVERAGE: _coverage.stop() _coverage.save() if __name__ == "__main__": main() circuits-3.1.0/tests/core/__init__.py0000644000014400001440000000000012174742426020533 0ustar prologicusers00000000000000circuits-3.1.0/tests/core/test_generator_value.py0000644000014400001440000000132612402037676023227 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import Event, Component class test(Event): """test Event""" class hello(Event): """hello Event""" class App(Component): def test(self): def f(): while True: yield "Hello" return f() def hello(self): yield "Hello " yield "World!" def test_return_generator(): app = App() while app: app.flush() v = app.fire(test()) app.tick() app.tick() x = v.value assert x == "Hello" def test_yield(): app = App() while app: app.flush() v = app.fire(hello()) app.tick() app.tick() app.tick() x = v.value assert x == ["Hello ", "World!"] circuits-3.1.0/tests/core/test_call_wait_timeout.py0000644000014400001440000000345012402037676023552 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest from circuits.core import handler, Component, Event, TimeoutError class wait(Event): """wait Event""" success = True class call(Event): """call Event""" success = True class hello(Event): """hello Event""" success = True class App(Component): @handler('wait') def _on_wait(self, timeout=-1): result = self.fire(hello()) try: yield self.wait('hello', timeout=timeout) except TimeoutError as e: yield e else: yield result @handler('hello') def _on_hello(self): return 'hello' @handler('call') def _on_call(self, timeout=-1): result = None try: result = yield self.call(hello(), timeout=timeout) except TimeoutError as e: yield e else: yield result @pytest.fixture(scope="module") def app(request, manager, watcher): app = App().register(manager) assert watcher.wait("registered") def finalizer(): app.unregister() request.addfinalizer(finalizer) return app def test_wait_success(manager, watcher, app): x = manager.fire(wait(10)) assert watcher.wait('wait_success') value = x.value assert value == 'hello' def test_wait_failure(manager, watcher, app): x = manager.fire(wait(0)) assert watcher.wait('wait_success') value = x.value assert isinstance(value, TimeoutError) def test_call_success(manager, watcher, app): x = manager.fire(call(10)) assert watcher.wait('call_success') value = x.value assert value == 'hello' def test_call_failure(manager, watcher, app): x = manager.fire(call(0)) assert watcher.wait('call_success') value = x.value assert isinstance(value, TimeoutError) circuits-3.1.0/tests/core/test_manager_repr.py0000644000014400001440000000165112402037676022510 0ustar prologicusers00000000000000# Module: test_manager_repr # Date: 23rd February 2010 # Author: James Mills, prologic at shortcircuit dot net dot au """Manager Repr Tests Test Manager's representation string. """ import os from time import sleep from threading import current_thread import pytest from circuits import Component, Manager class App(Component): def test(self, event, *args, **kwargs): pass def test_main(): id = "%s:%s" % (os.getpid(), current_thread().getName()) m = Manager() assert repr(m) == "" % id app = App() app.register(m) s = repr(m) assert s == "" % id m.start() pytest.wait_for(m, "_running", True) sleep(0.1) s = repr(m) assert s == "" % id m.stop() pytest.wait_for(m, "_Manager__thread", None) s = repr(m) assert s == "" % id circuits-3.1.0/tests/core/test_event_priority.py0000644000014400001440000000123312402037676023124 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import Component, Event class foo(Event): """foo Event""" class done(Event): """done Event""" class App(Component): def init(self): self.results = [] def foo(self, value): self.results.append(value) def done(self): self.stop() def test1(): app = App() # Normal Order [app.fire(foo(1)), app.fire(foo(2))] app.fire(done()) app.run() assert app.results == [1, 2] def test2(): app = App() # Priority Order [app.fire(foo(1), priority=2), app.fire(foo(2), priority=0)] app.fire(done()) app.run() assert app.results == [2, 1] circuits-3.1.0/tests/core/test_dynamic_handlers.py0000644000014400001440000000153012402037676023346 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest from circuits import handler, Event, Manager class foo(Event): """foo Event""" @handler("foo") def on_foo(self): return "Hello World!" def test_addHandler(): m = Manager() m.start() m.addHandler(on_foo) waiter = pytest.WaitEvent(m, "foo") x = m.fire(foo()) waiter.wait() s = x.value assert s == "Hello World!" m.stop() def test_removeHandler(): m = Manager() m.start() method = m.addHandler(on_foo) waiter = pytest.WaitEvent(m, "foo") x = m.fire(foo()) waiter.wait() s = x.value assert s == "Hello World!" m.removeHandler(method) waiter = pytest.WaitEvent(m, "foo") x = m.fire(foo()) waiter.wait() assert x.value is None assert on_foo not in dir(m) assert "foo" not in m._handlers m.stop() circuits-3.1.0/tests/core/test_filters.py0000644000014400001440000000075212402037676021517 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import handler, Event, BaseComponent class test(Event): """test Event""" class App(BaseComponent): @handler("test") def _on_test(self, event): try: return "Hello World!" finally: event.stop() def _on_test2(self): pass # Never reached def test_main(): app = App() while app: app.flush() x = app.fire(test()) app.flush() assert x.value == "Hello World!" circuits-3.1.0/tests/core/test_loader.py0000644000014400001440000000064212402037676021313 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest from os.path import dirname from circuits import Event, Loader, Manager class test(Event): """test Event""" def test_main(): m = Manager() loader = Loader(paths=[dirname(__file__)]).register(m) m.start() loader.load("app") x = m.fire(test()) assert pytest.wait_for(x, "result") s = x.value assert s == "Hello World!" m.stop() circuits-3.1.0/tests/core/test_core.py0000644000014400001440000000101612402037676020771 0ustar prologicusers00000000000000#!/usr/bin/python -i from circuits import Event, Component, Manager class test(Event): """test Event""" class App(Component): def test(self): return "Hello World!" def unregistered(self, *args): return def prepare_unregister(self, *args): return m = Manager() app = App() app.register(m) while app: app.flush() def test_fire(): x = m.fire(test()) m.flush() assert x.value == "Hello World!" def test_contains(): assert App in m assert not m in app circuits-3.1.0/tests/core/test_complete.py0000644000014400001440000000436712402037676021665 0ustar prologicusers00000000000000#!/usr/bin/python from circuits import Event, Component class simple_event(Event): complete = True class test(Event): """test Event""" success = True class Nested3(Component): channel = "nested3" def test(self): """ Updating state. Must be called twice to reach final state.""" if self.root._state != "Pre final state": self.root._state = "Pre final state" else: self.root._state = "Final state" class Nested2(Component): channel = "nested2" def test(self): """ Updating state. """ self.root._state = "New state" # State change involves even more components as well. self.fire(test(), Nested3.channel) self.fire(test(), Nested3.channel) class Nested1(Component): channel = "nested1" def test(self): """ State change involves other components as well. """ self.fire(test(), Nested2.channel) class App(Component): channel = "app" _simple_event_completed = False _state = "Old state" _state_when_success = None _state_when_complete = None def simple_event_complete(self, e, value): self._simple_event_completed = True def test(self): """ Fire the test event that should produce a state change. """ evt = test() evt.complete = True evt.complete_channels = [self.channel] self.fire(evt, Nested1.channel) def test_success(self, e, value): """ Test event has been processed, save the achieved state.""" self._state_when_success = self._state def test_complete(self, e, value): """ Test event has been completely processed, save the achieved state. """ self._state_when_complete = self._state app = App() Nested1().register(app) Nested2().register(app) Nested3().register(app) while app: app.flush() def test_complete_simple(): """ Test if complete works for an event without further effects """ app.fire(simple_event()) while app: app.flush() assert app._simple_event_completed def test_complete_nested(): app.fire(test()) while app: app.flush() assert app._state_when_success == "Old state" assert app._state_when_complete == "Final state" circuits-3.1.0/tests/core/test_worker_thread.py0000644000014400001440000000174212402037676022707 0ustar prologicusers00000000000000# Module: test_workers # Date: 7th October 2008 # Author: James Mills, prologic at shortcircuit dot net dot au """Workers Tests""" import pytest from circuits import task, Worker @pytest.fixture(scope="module") def worker(request): worker = Worker() def finalizer(): worker.stop() request.addfinalizer(finalizer) if request.config.option.verbose: from circuits import Debugger Debugger().register(worker) waiter = pytest.WaitEvent(worker, "started") worker.start() assert waiter.wait() return worker def f(): x = 0 i = 0 while i < 1000000: x += 1 i += 1 return x def add(a, b): return a + b def test(worker): x = worker.fire(task(f)) assert pytest.wait_for(x, "result") assert x.result assert x.value == 1000000 def test_args(worker): x = worker.fire(task(add, 1, 2)) assert pytest.wait_for(x, "result") assert x.result assert x.value == 3 circuits-3.1.0/tests/core/test_new_filter.py0000644000014400001440000000153012402037676022200 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest from circuits import Component, Event class hello(Event): """hello Event""" success = True class App(Component): def hello(self, event, *args, **kwargs): if kwargs.get("stop", False): event.stop() return "Hello World!" @pytest.fixture def app(request, manager, watcher): app = (App() + App()).register(manager) watcher.wait("registered") def finalizer(): app.unregister() watcher.wait("unregistered") request.addfinalizer(finalizer) return app def test_normal(app, watcher): x = app.fire(hello()) watcher.wait("hello_success") assert x.value == ["Hello World!", "Hello World!"] def test_filter(app, watcher): x = app.fire(hello(stop=True)) watcher.wait("hello_success") assert x.value == "Hello World!" circuits-3.1.0/tests/core/test_bridge.py0000644000014400001440000000132212412772674021302 0ustar prologicusers00000000000000#!/usr/bin/python -i import pytest if pytest.PLATFORM == "win32": pytest.skip("Unsupported Platform") pytest.importorskip("multiprocessing") from os import getpid from circuits import Component, Event class hello(Event): """hello Event""" class App(Component): def hello(self): return "Hello from {0:d}".format(getpid()) def test(manager, watcher): app = App() process, bridge = app.start(process=True, link=manager) assert watcher.wait("ready", timeout=30) x = manager.fire(hello()) assert pytest.wait_for(x, "result") assert x.value == "Hello from {0:d}".format(app.pid) app.stop() app.join() bridge.unregister() watcher.wait("unregistered") circuits-3.1.0/tests/core/test_timers.py0000644000014400001440000000350112402037676021345 0ustar prologicusers00000000000000# Module: test_timers # Date: 10th February 2010 # Author: James Mills, prologic at shortcircuit dot net dot au import time """Timers Tests""" import pytest from datetime import datetime, timedelta from circuits import Event, Component, Timer def pytest_funcarg__app(request): return request.cached_setup( setup=lambda: setupapp(request), teardown=lambda app: teardownapp(app), scope="module" ) def setupapp(request): app = App() app.start() return app def teardownapp(app): app.stop() class test(Event): """test Event""" class App(Component): def __init__(self): super(App, self).__init__() self.flag = False self.count = 0 self.timestamps = [] def reset(self): self.timestamps = [] self.flag = False self.count = 0 def test(self): self.timestamps.append(time.time()) self.count += 1 self.flag = True def test_timer(app): timer = Timer(0.1, test(), "timer") timer.register(app) assert pytest.wait_for(app, "flag") app.reset() def test_persistentTimer(app): app.timestamps.append(time.time()) timer = Timer(0.2, test(), "timer", persist=True) timer.register(app) wait_res = pytest.wait_for(app, "count", 2) assert app.count >= 2 assert wait_res delta = app.timestamps[1] - app.timestamps[0] # Should be 0.1, but varies depending on timer precision and load assert delta >= 0.08 and delta < 0.5 delta = app.timestamps[2] - app.timestamps[1] assert delta >= 0.08 and delta < 0.5 app.reset() timer.unregister() def test_datetime(app): now = datetime.now() d = now + timedelta(seconds=0.1) timer = Timer(d, test(), "timer") timer.register(app) assert pytest.wait_for(app, "flag") app.reset() circuits-3.1.0/tests/core/test_component_setup.py0000644000014400001440000000300112402037676023257 0ustar prologicusers00000000000000# Module: test_component_setup # Date: 23rd February 2010 # Author: James Mills, prologic at shortcircuit dot net dot au from circuits.core.handlers import handler """Component Setup Tests Tests that event handlers of a Component are automatically registered as event handlers. """ from circuits import Component, Manager class App(Component): def test(self, event, *args, **kwargs): pass class A(Component): pass class B(Component): informed = False @handler("prepare_unregister", channel="*") def _on_prepare_unregister(self, event, c): if event.in_subtree(self): self.informed = True class Base(Component): channel = "base" class C(Base): channel = "c" def test_basic(): m = Manager() app = App() app.register(m) assert app.test in app._handlers.get("test", set()) app.unregister() while m: m.flush() assert not m._handlers def test_complex(): m = Manager() a = A() b = B() a.register(m) b.register(a) assert a in m assert a.root == m assert a.parent == m assert b in a assert b.root == m assert b.parent == a a.unregister() while m: m.flush() assert b.informed assert a not in m assert a.root == a assert a.parent == a assert b in a assert b.root == a assert b.parent == a def test_subclassing_with_custom_channel(): base = Base() assert base.channel == "base" c = C() assert c.channel == "c" circuits-3.1.0/tests/core/signalapp.pyc0000644000014400001440000000316112420400435021111 0ustar prologicusers00000000000000 ?Tc@sddlZddlZyddlmZeZWnek rKeZnXddlmZddl m Z defdYZ dZ e dkre ndS( iN(tcoverage(t Component(tDaemontAppcBseZdZdZRS(cCs,||_||_t|jj|dS(N(tpidfilet signalfileRtregister(tselfRR((s4/home/prologic/work/circuits/tests/core/signalapp.pytinits  cCs=t|jd}|jt||j|jdS(Ntw(topenRtwritetstrtclosetstop(Rtsignaltstacktf((s4/home/prologic/work/circuits/tests/core/signalapp.pyRs (t__name__t __module__RR(((s4/home/prologic/work/circuits/tests/core/signalapp.pyRs cCstr"tdt}|jntjjtjd}tjjtjd}t ||j tr|j |j ndS(Nt data_suffixii( t HAS_COVERAGERtTruetstarttostpathtabspathtsystargvRtrunRtsave(t _coverageRR((s4/home/prologic/work/circuits/tests/core/signalapp.pytmain"s  t__main__(RRRRRt ImportErrortFalsetcircuitsRt circuits.appRRR R(((s4/home/prologic/work/circuits/tests/core/signalapp.pyts      circuits-3.1.0/tests/core/__pycache__/0000755000014400001440000000000012425013643020633 5ustar prologicusers00000000000000circuits-3.1.0/tests/core/__pycache__/test_call_wait_timeout.cpython-27-PYTEST.pyc0000644000014400001440000001612012414363101031046 0ustar prologicusers00000000000000 ?T(c@sddlZddljjZddlZddlmZm Z m Z m Z de fdYZ de fdYZ de fdYZd e fd YZejd d d ZdZdZdZdZdS(iN(thandlert ComponenttEventt TimeoutErrortwaitcBseZdZeZRS(s wait Event(t__name__t __module__t__doc__tTruetsuccess(((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyRstcallcBseZdZeZRS(s call Event(RRRRR (((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyR sthellocBseZdZeZRS(s hello Event(RRRRR (((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyR stAppcBsMeZedddZeddZedddZRS(RiccsN|jt}y|jdd|VWntk rD}|VnX|VdS(NR ttimeout(tfireR RR(tselfR tresultte((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyt_on_waits  R cCsdS(NR ((R((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyt _on_hello"sR ccsGd}y|jtd|V}Wntk r=}|VnX|VdS(NR (tNoneR R R(RR RR((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyt_on_call&s  (RRRRRR(((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyR s    tscopetmodulecstj||j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj |nd}}}fd }|j |S( Nt registeredtsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }tpy2twatchertpy0tpy6tpy4csjdS(N(t unregister((tapp(sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyt finalizer6s( R tregisterRt @pytest_art _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationRt addfinalizer(trequesttmanagerRt @py_assert1t @py_assert3t @py_assert5t @py_format7R!((R sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyR 1s  u c Cs|jtd}|j}d}||}|sdditj|d6dtjksqtj|rtj|ndd6tj|d6tj|d 6}ttj|nd}}}|j }d } || k}|stj d|fd|| fitj| d 6dtjksDtj|rStj|ndd6} di| d6} ttj| nd}} dS(Ni t wait_successRsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRRRR s==s%(py0)s == %(py3)stpy3tvaluesassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s( RRR#R$R%R&R'R(R)RR3t_call_reprcompare( R,RR txR-R.R/R0R3t @py_assert2t @py_format4t @py_format6((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyttest_wait_success>s   u  lc Cs|jtd}|j}d}||}|sdditj|d6dtjksqtj|rtj|ndd6tj|d6tj|d 6}ttj|nd}}}|j }t |t }|sdd id tjkstjt r)tjt nd d6d tjksQtj|r`tj|nd d 6dtjkstjt rtjt ndd6tj|d 6} ttj| nd}dS(NiR1RsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRRRs5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }RR3tpy1t isinstance( RRR#R$R%R&R'R(R)RR3R<R( R,RR R6R-R.R/R0R3t @py_format5((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyttest_wait_failureGs  u c Cs|jtd}|j}d}||}|sdditj|d6dtjksqtj|rtj|ndd6tj|d6tj|d 6}ttj |nd}}}|j }d } || k}|stj d|fd|| fitj| d 6dtjksDtj|rStj|ndd6} di| d6} ttj | nd}} dS(Ni t call_successRsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRRRR s==s%(py0)s == %(py3)sR2R3sassert %(py5)sR4(s==(s%(py0)s == %(py3)ssassert %(py5)s( RR RR#R$R%R&R'R(R)RR3R5( R,RR R6R-R.R/R0R3R7R8R9((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyttest_call_successPs   u  lc Cs|jtd}|j}d}||}|sdditj|d6dtjksqtj|rtj|ndd6tj|d6tj|d 6}ttj |nd}}}|j }t |t }|sdd id tjkstjt r)tjt nd d6d tjksQtj|r`tj|nd d 6dtjkstjt rtjt ndd6tj|d 6} ttj | nd}dS(NiR?RsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRRRs5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }RR3R;R<(RR RR#R$R%R&R'R(R)RR3R<R( R,RR R6R-R.R/R0R3R=((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyttest_call_failureYs  u (t __builtin__R%t_pytest.assertion.rewritet assertiontrewriteR#tpytestt circuits.coreRRRRRR R R tfixtureR R:R>R@RA(((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyts  " circuits-3.1.0/tests/core/__pycache__/test_value.cpython-27-PYTEST.pyc0000644000014400001440000003150712414363102026464 0ustar prologicusers00000000000000 ?T c@sddlZddljjZddlZddlmZm Z m Z de fdYZ de fdYZ de fdYZ d e fd YZd e fd YZejd ZdZdZdZdZdZdZdS(iN(thandlertEventt ComponentthellocBseZdZRS(s Hhllo Event(t__name__t __module__t__doc__(((s5/home/prologic/work/circuits/tests/core/test_value.pyR sttestcBseZdZRS(s test Event(RRR(((s5/home/prologic/work/circuits/tests/core/test_value.pyRstfoocBseZdZRS(s foo Event(RRR(((s5/home/prologic/work/circuits/tests/core/test_value.pyRstvaluescBseZdZeZRS(s values Event(RRRtTruetcomplete(((s5/home/prologic/work/circuits/tests/core/test_value.pyR stAppcBseZdZdZdZeddZeddZeddd d Zeddd d Z eddd dZ RS(cCsdS(Ns Hello World!((tself((s5/home/prologic/work/circuits/tests/core/test_value.pyRscCs|jtS(N(tfireR(R ((s5/home/prologic/work/circuits/tests/core/test_value.pyR!scCstddS(NtERROR(t Exception(R ((s5/home/prologic/work/circuits/tests/core/test_value.pyR$sthello_value_changedcCs ||_dS(N(tvalue(R R((s5/home/prologic/work/circuits/tests/core/test_value.pyt_on_hello_value_changed'sttest_value_changedcCs ||_dS(N(R(R R((s5/home/prologic/work/circuits/tests/core/test_value.pyt_on_test_value_changed+sR tpriorityg@cCsdS(NR((R ((s5/home/prologic/work/circuits/tests/core/test_value.pyt_value1/sg?cCsdS(Ntbar((R ((s5/home/prologic/work/circuits/tests/core/test_value.pyt_value23sgcCs|jtS(N(RR(R ((s5/home/prologic/work/circuits/tests/core/test_value.pyt_value37s( RRRRRRRRRRR(((s5/home/prologic/work/circuits/tests/core/test_value.pyR s   csBtj|jdfd}|j|S(Nt registeredcsjjddS(Nt unregistered(t unregistertwait((tapptwatcher(s5/home/prologic/work/circuits/tests/core/test_value.pyt finalizerAs (R tregisterRt addfinalizer(trequesttmanagerR R!((RR s5/home/prologic/work/circuits/tests/core/test_value.pyR<s   c Cs|jt}|jdd}||k}|stjd|fd||fidtjksytj|rtj|ndd6tj|d6}di|d 6}t tj |nd}}|j }d}||k} | stjd| fd||fitj|d 6dtjksItj|rXtj|ndd6tj|d 6}di|d6} t tj | nd}} }dS(NRs Hello World!tins%(py1)s in %(py3)stxtpy3tpy1tsassert %(py5)stpy5s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)stpy2tpy0sassert %(py7)stpy7(R&(s%(py1)s in %(py3)ssassert %(py5)s(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s( RRRt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNoneR( RR R't @py_assert0t @py_assert2t @py_format4t @py_format6t @py_assert1t @py_assert4t @py_assert3t @py_format8((s5/home/prologic/work/circuits/tests/core/test_value.pyt test_valueJs"  l   |c Cs|jt}|jd|j}d}||k}|stjd|fd||fitj|d6dtjkstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}t |}d} || k}|stjd|fd|| fitj|d 6dtjksitj |rxtj|ndd6dtjkstj t rtjt ndd6tj| d6} di| d6} t tj | nd}}} dS(NRs Hello World!s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sR,R'R-R+R*sassert %(py7)sR.s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)sR(R)tstrtpy6sassert %(py8)stpy8(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(s==(s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)ssassert %(py8)s(RRRRR/R0R4R1R2R3R5R6R7RA( RR R'R<R=R>R;R?R9t @py_assert5t @py_format7t @py_format9((s5/home/prologic/work/circuits/tests/core/test_value.pyttest_nested_valueRs$   |  c Cs|jt}t|_|jdd}||k}|stjd|fd||fidtjkstj |rtj |ndd6tj |d6}di|d 6}t tj |nd}}|j}d}||k} | stjd| fd||fitj |d 6dtjksRtj |ratj |ndd6tj |d 6}di|d6} t tj | nd}} }|j}||k} | stjd| fd||fitj |d 6dtjks tj |r/tj |ndd6dtjksWtj |rftj |ndd6} di| d6} t tj | nd}} dS( NRs Hello World!R&s%(py1)s in %(py3)sR'R(R)R*sassert %(py5)sR+s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sR,R-sassert %(py7)sR.tiss-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)sRtpy4sassert %(py6)sRB(R&(s%(py1)s in %(py3)ssassert %(py5)s(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(RH(s-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)ssassert %(py6)s(RRR tnotifyRR/R0R1R2R3R4R5R6R7R( RR R'R8R9R:R;R<R=R>R?t @py_format5RE((s5/home/prologic/work/circuits/tests/core/test_value.pyttest_value_notifyZs2   l   | c Cs|jt}t|_|jd|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}t|}d} || k}|stjd|fd|| fitj|d 6dt j ksrtj |rtj|ndd6dt j kstj trtjtndd6tj| d6} di| d6} t tj | nd}}} |j}||k}|stjd|fd||fitj|d6dt j kswtj |rtj|ndd6dt j kstj |rtj|ndd6} d i| d6} t tj | nd}}dS(!NRs Hello World!s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sR,R'R-R+R*sassert %(py7)sR.s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)sR(R)RARBsassert %(py8)sRCRHs-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)sRRIsassert %(py6)s(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(s==(s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)ssassert %(py8)s(RH(s-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)ssassert %(py6)s(RRR RJRRR/R0R4R1R2R3R5R6R7RA( RR R'R<R=R>R;R?R9RDRERFRK((s5/home/prologic/work/circuits/tests/core/test_value.pyttest_nested_value_notifyes4    |   cCs |jt}|jd|\}}}|tk}|stjd|fd|tfidtjkstjtrtj tndd6dtjkstj|rtj |ndd6}di|d 6}t tj |nd}t |} d } | | k} | stjd| fd| | fitj | d6dtjksxtj|rtj |ndd6dtjkstjt rtj t ndd6tj | d6} di| d6} t tj | nd} } } t|t}|sddidtjksPtjtr_tj tndd6dtjkstj|rtj |ndd6dtjkstjtrtj tndd6tj |d 6}t tj |nd}dS(NRRHs%(py0)s is %(py2)sRR,tetypeR-R*sassert %(py4)sRIRs==s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)sR(tevalueR)RARBsassert %(py8)sRCs5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }tlistt etracebackt isinstance(RH(s%(py0)s is %(py2)ssassert %(py4)s(s==(s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)ssassert %(py8)s(RRRRR/R0R1R2R3R4R5R6R7RARRRP(RR R'RNRORQR<t @py_format3RKR9RDR=RERFR>((s5/home/prologic/work/circuits/tests/core/test_value.pyttest_error_valueps,    c Cs|jt}|jd|j}t|t}|s(dditj|d6dtj ksxtj |rtj|ndd6dtj kstj trtjtndd6tj|d 6d tj kstj trtjtnd d 6}t tj |nd}}t|}d }||k}|stjd|fd||fidtj kstj |rtj|ndd6tj|d6}di|d6} t tj | nd}}d ddg}||k} | stjd| fd||fitj|d6dtj kshtj |rwtj|ndd6}d i|d6} t tj | nd} }|d}d } || k}|sEtjd!|fd"|| fitj|d6tj| d 6} d#i| d 6}t tj |nd}}} |d}d} || k}|stjd$|fd%|| fitj|d6tj| d 6} d&i| d 6}t tj |nd}}} |d}d} || k}|stjd'|fd(|| fitj|d6tj| d 6} d)i| d 6}t tj |nd}}} dS(*Ntvalues_completeR*sPassert %(py6)s {%(py6)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.value }, %(py4)s) }R(tvR)RRR-RBRPRIRR&s%(py1)s in %(py3)ssassert %(py5)sR+Rs Hello World!s==s%(py0)s == %(py3)sR'is%(py1)s == %(py4)ssassert %(py6)sii(R&(s%(py1)s in %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py1)s == %(py4)ssassert %(py6)s(s==(s%(py1)s == %(py4)ssassert %(py6)s(s==(s%(py1)s == %(py4)ssassert %(py6)s(RR RRRRRPR/R4R1R2R3R5R6R7R0( RR RVR9RDRER'R8R:R;R<R>RK((s5/home/prologic/work/circuits/tests/core/test_value.pyttest_multiple_valueszs^     l  l   E  E  E(t __builtin__R1t_pytest.assertion.rewritet assertiontrewriteR/tpytesttcircuitsRRRRRRR R tfixtureRR@RGRLRMRTRW(((s5/home/prologic/work/circuits/tests/core/test_value.pyts      circuits-3.1.0/tests/core/__pycache__/test_call_wait.cpython-27-PYTEST.pyc0000644000014400001440000003103512414363101027302 0ustar prologicusers00000000000000 ?TP c@sddlZddljjZddlZddlmZm Z m Z de fdYZ de fdYZ de fdYZ d e fd YZd e fd YZd e fdYZde fdYZde fdYZde fdYZde fdYZde fdYZejdddZdZdZdZdZd Zd!ZdS("iN(thandlert ComponenttEventtwaitcBseZdZeZRS(s wait Event(t__name__t __module__t__doc__tTruetsuccess(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyRstcallcBseZdZeZRS(s call Event(RRRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR st long_callcBseZdZeZRS(slong_call Event(RRRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR st long_waitcBseZdZeZRS(slong_wait Event(RRRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR st wait_returncBseZdZeZRS(swait_return Event(RRRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR sthellocBseZdZeZRS(s hello Event(RRRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR !stfoocBseZdZeZRS(s foo Event(RRRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR&stget_xcBseZdZeZRS(s get_x Event(RRRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR+stget_ycBseZdZeZRS(s get_y Event(RRRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR0stevalcBseZdZeZRS(s eval Event(RRRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR5stAppcBszeZeddZeddZdZdZdZdZdZ d Z d Z d Z RS( Rccs,|jt}|jdV|jVdS(NR (tfireR Rtvalue(tselftx((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyt_on_wait<sR ccs|jtV}|jVdS(N(R R R(RR((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyt_on_callBscCsdS(Ns Hello World!((R((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR Gsccs,|jt}|jdV|jVdS(NR(RRRR(RR((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR Jsccs#|jt|jdVVdS(NR(RRR(R((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR Osccs|jtV}|jVdS(N(R RR(RR((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR Ssccs#xtddD] }|VqWdS(Nii (trange(Rti((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyRWscCsdS(Ni((R((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR[scCsdS(Ni((R((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR^sccs9|jtV}|jtV}|j|jVdS(N(R RRR(RRty((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyRas( RRRRRR R R R RRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR:s       tscopetmodulecstj||j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj |nd}}}fd }|j |S( Nt registeredtsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }tpy2twatchertpy0tpy6tpy4csjdS(N(t unregister((tapp(s9/home/prologic/work/circuits/tests/core/test_call_wait.pyt finalizerls( RtregisterRt @pytest_art _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonet addfinalizer(trequesttmanagerR!t @py_assert1t @py_assert3t @py_assert5t @py_format7R'((R&s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR&gs  u c Cs|jt}|j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj|nd}}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksAtj|rPtj|nd d6} di| d6} ttj| nd}} dS(Nt wait_successRsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }R R!R"R#R$s Hello World!s==s%(py0)s == %(py3)stpy3Rsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s( RRR)R*R+R,R-R.R/R0Rt_call_reprcompare( R3R!R&RR4R5R6R7Rt @py_assert2t @py_format4t @py_format6((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyttest_wait_simplets   u  lc Cs|jt}|j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj |nd}}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksAtj|rPtj|nd d6} di| d6} ttj | nd}} dS(Nt call_successRsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }R R!R"R#R$s Hello World!s==s%(py0)s == %(py3)sR9Rsassert %(py5)sR:(s==(s%(py0)s == %(py3)ssassert %(py5)s( RR RR)R*R+R,R-R.R/R0RR;( R3R!R&RR4R5R6R7RR<R=R>((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyt call_simple|s   u  lcCsi|jt}|j}d}||}| rdditj|d6dtjkpltj|r~tj|ndd6tj|d6tj|d6}ttj |nt }}}|j }d } d } t | | } t | } || k}| rOtjd f|fd f|| fitj| d 6dtjkpgtjt rytjt ndd6dtjkptjt rtjt ndd6dtjkptj|rtj|ndd6tj| d6tj| d6tj| d6} ddi| d6}ttj |nt }} } } } dS(Ntlong_call_successRsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }R R!R"R#R$ii s==sY%(py0)s == %(py11)s {%(py11)s = %(py2)s(%(py9)s {%(py9)s = %(py3)s(%(py5)s, %(py7)s) }) }tpy11RR9tlistRtpy7R:tpy9sassert %(py13)stpy13(RR RR)R*R+R,R-R.R/R0RRRDR;(R3R!R&RR4R5R6R7Rt @py_assert4t @py_assert6t @py_assert8t @py_assert10t @py_format12t @py_format14((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyttest_long_calls(  u  cCsi|jt}|j}d}||}| rdditj|d6dtjkpltj|r~tj|ndd6tj|d6tj|d6}ttj |nt }}}|j }d } d } t | | } t | } || k}| rOtjd f|fd f|| fitj| d 6dtjkpgtjt rytjt ndd6dtjkptjt rtjt ndd6dtjkptj|rtj|ndd6tj| d6tj| d6tj| d6} ddi| d6}ttj |nt }} } } } dS(Ntlong_wait_successRsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }R R!R"R#R$ii s==sY%(py0)s == %(py11)s {%(py11)s = %(py2)s(%(py9)s {%(py9)s = %(py3)s(%(py5)s, %(py7)s) }) }RCRR9RDRRER:RFsassert %(py13)sRG(RR RR)R*R+R,R-R.R/R0RRRDR;(R3R!R&RR4R5R6R7RRHRIRJRKRLRM((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyttest_long_waits(  u  cCsi|jt}|j}d}||}| rdditj|d6dtjkpltj|r~tj|ndd6tj|d6tj|d6}ttj |nt }}}|j }d } d } t | | } t | } || k}| rOtjd f|fd f|| fitj| d 6dtjkpgtjt rytjt ndd6dtjkptjt rtjt ndd6dtjkptj|rtj|ndd6tj| d6tj| d6tj| d6} ddi| d6}ttj |nt }} } } } dS(Ntwait_return_successRsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }R R!R"R#R$ii s==sY%(py0)s == %(py11)s {%(py11)s = %(py2)s(%(py9)s {%(py9)s = %(py3)s(%(py5)s, %(py7)s) }) }RCRR9RDRRER:RFsassert %(py13)sRG(RR RR)R*R+R,R-R.R/R0RRRDR;(R3R!R&RR4R5R6R7RRHRIRJRKRLRM((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyttest_wait_returns(  u  c Cs|jt}|j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj |nd}}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksAtj|rPtj|nd d6} di| d6} ttj | nd}} dS(Nt eval_successRsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }R R!R"R#R$is==s%(py0)s == %(py3)sR9Rsassert %(py5)sR:(s==(s%(py0)s == %(py3)ssassert %(py5)s( RRRR)R*R+R,R-R.R/R0RR;( R3R!R&RR4R5R6R7RR<R=R>((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyt test_evals   u  l(t __builtin__R+t_pytest.assertion.rewritet assertiontrewriteR)tpytesttcircuitsRRRRR R R R R RRRRRtfixtureR&R?RARNRPRRRT(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyts*  -     circuits-3.1.0/tests/core/__pycache__/test_interface_query.cpython-27-PYTEST.pyc0000644000014400001440000000734312414363102030536 0ustar prologicusers00000000000000 ?Tc@sdZddlZddljjZddlmZdefdYZ de fdYZ dZ d Z d Z d ZdS( sTest Interface Query Test the capabilities of querying a Component class or instance for it's interface. That is it's event handlers it responds to. iN(t ComponenttBasecBseZdZRS(cCsdS(N((tself((s?/home/prologic/work/circuits/tests/core/test_interface_query.pytfoos(t__name__t __module__R(((s?/home/prologic/work/circuits/tests/core/test_interface_query.pyR st SuperBasecBseZdZRS(cCsdS(N((R((s?/home/prologic/work/circuits/tests/core/test_interface_query.pytbars(RRR(((s?/home/prologic/work/circuits/tests/core/test_interface_query.pyRscCstj}d}||}|sdditj|d6dtjks\tjtrktjtndd6tj|d6tj|d6}ttj|nd}}}dS( NRtsIassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s) }tpy2Rtpy0tpy6tpy4( Rthandlest @pytest_art _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(t @py_assert1t @py_assert3t @py_assert5t @py_format7((s?/home/prologic/work/circuits/tests/core/test_interface_query.pyttest_handles_base_classs  ucCstj}d}d}|||}|sdditj|d6dtjksetjtrttjtndd6tj|d6tj|d 6tj|d 6}ttj|nd}}}}dS( NRRRsRassert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s, %(py6)s) }R RR R tpy8R ( RR RRRRRRRR(RRRt @py_assert7t @py_format9((s?/home/prologic/work/circuits/tests/core/test_interface_query.pyttest_handles_super_base_classs cCst}|j}d}||}|sdditj|d6dtjksetj|rttj|ndd6tj|d6tj|d6}ttj|nd}}}dS( NRRsIassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s) }R tbaseR R R ( RR RRRRRRRR(RRRRR((s?/home/prologic/work/circuits/tests/core/test_interface_query.pyttest_handles_base_instance!s   ucCst}|j}d}d}|||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d 6tj|d 6}ttj|nd}}}}dS( NRRRsRassert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s, %(py6)s) }R t superbaseR R RR ( RR RRRRRRRR(R!RRRRR((s?/home/prologic/work/circuits/tests/core/test_interface_query.pyt test_handles_super_base_instance&s  (t__doc__t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtcircuitsRRRRRR R"(((s?/home/prologic/work/circuits/tests/core/test_interface_query.pyts    circuits-3.1.0/tests/core/__pycache__/test_component_repr.cpython-27-PYTEST.pyc0000644000014400001440000001241112414363101030372 0ustar prologicusers00000000000000 ?T{c@sdZddlZddljjZddlZyddlm Z Wn!e k rgddlm Z nXddl m Z mZdefdYZde fd YZd Zd ZdS( s>Component Repr Tests Test Component's representation string. iN(tcurrent_thread(t currentThread(tEventt ComponenttAppcBseZdZRS(cOsdS(N((tselfteventtargstkwargs((s>/home/prologic/work/circuits/tests/core/test_component_repr.pyttests(t__name__t __module__R (((s>/home/prologic/work/circuits/tests/core/test_component_repr.pyRsR cBseZRS((R R (((s>/home/prologic/work/circuits/tests/core/test_component_repr.pyR scCs?dtjtjf}t}t|}d}||}||k}|sitjd|fd||fitj|d6dt j kstj |rtj|ndd6dt j kstj trtjtndd 6d t j kstj |r%tj|nd d 6tj|d 6}di|d6}t tj |nd}}}}|jtt|}d}||}||k}|stjd|fd||fitj|d6dt j ks tj |rtj|ndd6dt j ksBtj trQtjtndd 6d t j ksytj |rtj|nd d 6tj|d 6}di|d6}t tj |nd}}}}|jt|}d}||}||k}|s)tjd|fd||fitj|d6dt j kshtj |rwtj|ndd6dt j kstj trtjtndd 6d t j kstj |rtj|nd d 6tj|d 6}di|d6}t tj |nd}}}}dS(Ns%s:%sss==s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)tpy3tapptpy1treprtpy0tidtpy7tpy6tsassert %(py10)stpy10s(s==(s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)sassert %(py10)s(s==(s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)sassert %(py10)s(s==(s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)sassert %(py10)s(tostgetpidRtgetNameRRt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonetfireR tflush(RR t @py_assert2t @py_assert5t @py_assert8t @py_assert4t @py_format9t @py_format11((s>/home/prologic/work/circuits/tests/core/test_component_repr.pyt test_mains>        cCsEdtjtjf}tdd}t|}d}||}||k}|sotjd|fd||fitj|d6dt j kstj |rtj|ndd 6d t j kstj trtjtnd d 6d t j kstj |r+tj|nd d 6tj|d6}di|d6}t tj |nd}}}}|jtt|}d}||}||k}|stjd|fd||fitj|d6dt j kstj |r tj|ndd 6d t j ksHtj trWtjtnd d 6d t j kstj |rtj|nd d 6tj|d6}di|d6}t tj |nd}}}}|jt|}d}||}||k}|s/tjd|fd||fitj|d6dt j ksntj |r}tj|ndd 6d t j kstj trtjtnd d 6d t j kstj |rtj|nd d 6tj|d6}di|d6}t tj |nd}}}}dS(Ns%s:%stchanneliss==s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)R R RRRRRRRsassert %(py10)sRs(ii(s==(s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)sassert %(py10)s(s==(s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)sassert %(py10)s(s==(s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)sassert %(py10)s(RRRRRRRRRRRRRR R!R"R R#(RR R$R%R&R'R(R)((s>/home/prologic/work/circuits/tests/core/test_component_repr.pyttest_non_str_channel+s>       (t__doc__t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRRt threadingRt ImportErrorRtcircuitsRRRR R*R,(((s>/home/prologic/work/circuits/tests/core/test_component_repr.pyts    circuits-3.1.0/tests/core/__pycache__/test_priority.cpython-32-PYTEST.pyc0000644000014400001440000000472012414363275027235 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlmZmZm Z m Z GddeZ Gdde Z e Z e Zeje xe re jqWdZdS(iN(uhandleruEventu ComponentuManagercBs|EeZdZdS(u test EventN(u__name__u __module__u__doc__(u __locals__((u8/home/prologic/work/circuits/tests/core/test_priority.pyutests utestcBsY|EeZeddZeddddZeddddZdS(utestcCsdS(Ni((uself((u8/home/prologic/work/circuits/tests/core/test_priority.pyutest_0 supriorityicCsdS(Ni((uself((u8/home/prologic/work/circuits/tests/core/test_priority.pyutest_3sicCsdS(Ni((uself((u8/home/prologic/work/circuits/tests/core/test_priority.pyutest_2sN(u__name__u __module__uhandlerutest_0utest_3utest_2(u __locals__((u8/home/prologic/work/circuits/tests/core/test_priority.pyuApp s uAppcCstjt}xtr(tjqWt|}dddg}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}dS(Niiiu==u%(py0)s == %(py3)supy3uxupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(umufireutestuflushulistu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uvuxu @py_assert2u @py_assert1u @py_format4u @py_format6((u8/home/prologic/work/circuits/tests/core/test_priority.pyu test_main s   l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsuhandleruEventu ComponentuManagerutestuAppumuappuregisteruflushu test_main(((u8/home/prologic/work/circuits/tests/core/test_priority.pyus "    circuits-3.1.0/tests/core/__pycache__/test_new_filter.cpython-34-PYTEST.pyc0000644000014400001440000000514112414363521027504 0ustar prologicusers00000000000000 ?TX@sddlZddljjZddlZddlmZm Z Gddde Z GdddeZ ej ddZ d d Zd d ZdS) N) ComponentEventc@seZdZdZdZdS)helloz hello EventTN)__name__ __module__ __qualname____doc__successr r :/home/prologic/work/circuits/tests/core/test_new_filter.pyrs rc@seZdZddZdS)AppcOs#|jddr|jndS)NstopFz Hello World!)getr )selfeventargskwargsr r r rs z App.helloN)rrrrr r r r r s r csLttj|jdfdd}|j|S)N registeredcsjjddS)N unregistered) unregisterwaitr )appwatcherr r finalizers zapp..finalizer)r registerr addfinalizer)requestmanagerrrr )rrr rs   rcCs|jt}|jd|j}ddg}||k}|stjd |fd ||fitj|d6tj|d6dtjkstj |rtj|ndd6}di|d 6}t tj |nt }}}dS)N hello_successz Hello World!==-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)spy5py2xpy0assert %(py7)spy7)r)r r&) firerrvalue @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)rrr# @py_assert1 @py_assert4 @py_assert3 @py_format6 @py_format8r r r test_normal$s  |r8cCs|jtdd}|jd|j}d}||k}|stjd|fd||fitj|d6tj|d6d tjkstj |rtj|nd d 6}di|d 6}t tj |nt }}}dS)Nr Trz Hello World!r-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sr!r"r#r$r%assert %(py7)sr')r)r9r:) r(rrr)r*r+r,r-r.r/r0r1r2)rrr#r3r4r5r6r7r r r test_filter*s   |r;)builtinsr-_pytest.assertion.rewrite assertionrewriter*pytestcircuitsrrrr fixturerr8r;r r r r s   circuits-3.1.0/tests/core/__pycache__/test_component_setup.cpython-32-PYTEST.pyc0000644000014400001440000002373412414363275030604 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlmZddlm Z m Z Gdde Z Gdde Z Gdd e Z Gd d e ZGd d eZdZdZdZdS(iN(uhandler(u ComponentuManagercBs|EeZdZdS(cOsdS(N((uselfueventuargsukwargs((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyutestsN(u__name__u __module__utest(u __locals__((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyuApps uAppcBs|EeZdS(N(u__name__u __module__(u __locals__((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyuAs uAcBs/|EeZdZeddddZdS(uprepare_unregisteruchannelu*cCs|j|rd|_ndS(NT(u in_subtreeuTrueuinformed(uselfueventuc((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyu_on_prepare_unregistersNF(u__name__u __module__uFalseuinformeduhandleru_on_prepare_unregister(u __locals__((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyuBs uBcBs|EeZdZdS(ubaseN(u__name__u __module__uchannel(u __locals__((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyuBase#s uBasecBs|EeZdZdS(ucN(u__name__u __module__uchannel(u __locals__((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyuC(s uCc Cst}t}|j||j}|j}|j}d}t}|||}||k}| rtjdf|fdf||fi tj |d6dt j kptj trtj tndd6tj |d6tj |d6d t j kptj |r)tj |nd d 6tj |d 6tj |d 6d t j kpntj |rtj |nd d 6tj |d6} ddi| d6} t tj| nt}}}}}}}|jx|r|jqW|j}| }| rdditj |d6dt j kpVtj |rhtj |ndd 6} t tj| nt}}dS(Nutestuinu%(py2)s {%(py2)s = %(py0)s.test } in %(py15)s {%(py15)s = %(py8)s {%(py8)s = %(py6)s {%(py6)s = %(py4)s._handlers }.get }(%(py10)s, %(py13)s {%(py13)s = %(py11)s() }) }upy10usetupy11upy2upy13uappupy0upy15upy6upy4upy8uuassert %(py17)supy17u1assert not %(py2)s {%(py2)s = %(py0)s._handlers }um(uManageruAppuregisterutestu _handlersugetusetu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu unregisteruflush( umuappu @py_assert1u @py_assert5u @py_assert7u @py_assert9u @py_assert12u @py_assert14u @py_assert3u @py_format16u @py_format18u @py_format4((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyu test_basic-s2      1   UcCs t}t}t}|j||j|||k}|stjd|fd||fidtjkstj|rtj |ndd6dtjkstj|rtj |ndd6}di|d 6}t tj |nd}|j }||k}|stjd|fd||fitj |d6dtjksvtj|rtj |ndd6dtjkstj|rtj |ndd 6}di|d 6}t tj |nd}}|j}||k}|stjd|fd||fitj |d6dtjksgtj|rvtj |ndd6dtjkstj|rtj |ndd 6}di|d 6}t tj |nd}}||k}|stjd|fd||fidtjks?tj|rNtj |ndd6dtjksvtj|rtj |ndd6}di|d 6}t tj |nd}|j }||k}|stjd|fd ||fitj |d6dtjks,tj|r;tj |ndd6dtjksctj|rrtj |ndd 6}d!i|d 6}t tj |nd}}|j}||k}|stjd"|fd#||fitj |d6dtjkstj|r,tj |ndd6dtjksTtj|rctj |ndd 6}d$i|d 6}t tj |nd}}|jx|r|jqW|j}|s>dditj |d6dtjks tj|rtj |ndd6}t tj |nd}||k}|stjd%|fd&||fidtjkstj|rtj |ndd6dtjkstj|rtj |ndd6}d'i|d 6}t tj |nd}|j }||k}|stjd(|fd)||fitj |d6dtjkstj|rtj |ndd6dtjkstj|rtj |ndd 6}d*i|d 6}t tj |nd}}|j}||k}|stjd+|fd,||fitj |d6dtjksvtj|rtj |ndd6dtjkstj|rtj |ndd 6}d-i|d 6}t tj |nd}}||k}|s tjd.|fd/||fidtjksN tj|r] tj |ndd6dtjks tj|r tj |ndd6}d0i|d 6}t tj |nd}|j }||k}|s tjd1|fd2||fitj |d6dtjks; tj|rJ tj |ndd6dtjksr tj|r tj |ndd 6}d3i|d 6}t tj |nd}}|j}||k}|s tjd4|fd5||fitj |d6dtjks, tj|r; tj |ndd6dtjksc tj|rr tj |ndd 6}d6i|d 6}t tj |nd}}dS(7Nuinu%(py0)s in %(py2)sumupy2uaupy0uuassert %(py4)supy4u==u,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)suassert %(py6)supy6u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)subu,assert %(py2)s {%(py2)s = %(py0)s.informed }unot inu%(py0)s not in %(py2)s(uin(u%(py0)s in %(py2)suassert %(py4)s(u==(u,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(uin(u%(py0)s in %(py2)suassert %(py4)s(u==(u,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(unot in(u%(py0)s not in %(py2)suassert %(py4)s(u==(u,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(uin(u%(py0)s in %(py2)suassert %(py4)s(u==(u,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(uManageruAuBuregisteru @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneurootuparentu unregisteruflushuinformed(umuaubu @py_assert1u @py_format3u @py_format5u @py_assert3u @py_format7((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyu test_complex<s                  U         cCst}|j}d}||k}|stjd |fd ||fitj|d6dtjks|tj|rtj|ndd6tj|d6}d i|d 6}ttj |nd}}}t }|j}d }||k}|stjd|fd||fitj|d6d tjksYtj|rhtj|nd d6tj|d6}di|d 6}ttj |nd}}}dS(Nubaseu==u/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)supy2upy0upy5uuassert %(py7)supy7uc(u==(u/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)suassert %(py7)s(u==(u/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)suassert %(py7)s( uBaseuchannelu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuC(ubaseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8uc((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyu$test_subclassing_with_custom_channelYs$   |   |(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuits.core.handlersuhandlerucircuitsu ComponentuManageruAppuAuBuBaseuCu test_basicu test_complexu$test_subclassing_with_custom_channel(((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyus    circuits-3.1.0/tests/core/__pycache__/signalapp.cpython-32.pyc0000644000014400001440000000345712414363275025253 0ustar prologicusers00000000000000l ?Tc @sddlZddlZyddlmZd ZWnek rLd ZYnXddlmZddl m Z GddeZ dZ e dkre ndS( iN(ucoverage(u Component(uDaemoncBs |EeZdZdZdS(cCs,||_||_t|jj|dS(N(upidfileu signalfileuDaemonuregister(uselfupidfileu signalfile((u4/home/prologic/work/circuits/tests/core/signalapp.pyuinits  cCs=t|jd}|jt||j|jdS(Nuw(uopenu signalfileuwriteustrucloseustop(uselfusignalustackuf((u4/home/prologic/work/circuits/tests/core/signalapp.pyusignals N(u__name__u __module__uinitusignal(u __locals__((u4/home/prologic/work/circuits/tests/core/signalapp.pyuApps  uAppcCstr"tdd}|jntjjtjd}tjjtjd}t ||j tr|j |j ndS(Nu data_suffixiiT( u HAS_COVERAGEucoverageuTrueustartuosupathuabspathusysuargvuAppurunustopusave(u _coverageupidfileu signalfile((u4/home/prologic/work/circuits/tests/core/signalapp.pyumain"s  u__main__TF(uosusysucoverageuTrueu HAS_COVERAGEu ImportErroruFalseucircuitsu Componentu circuits.appuDaemonuAppumainu__name__(((u4/home/prologic/work/circuits/tests/core/signalapp.pyus      circuits-3.1.0/tests/core/__pycache__/test_errors.cpython-26-PYTEST.pyc0000644000014400001440000001110312407376150026662 0ustar prologicusers00000000000000 ?Tc@sddkZddkiiZddkZddklZl Z defdYZ de fdYZ dZ ei dZd ZdS( iN(tEventt ComponentttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s6/home/prologic/work/circuits/tests/core/test_errors.pyRstAppcBs)eZdZdZdddZRS(cCsDtt|id|_d|_d|_d|_d|_dS(N( tsuperRt__init__tNonetetypetevaluet etracebackthandlertfevent(tself((s6/home/prologic/work/circuits/tests/core/test_errors.pyRs     cCstS(N(tx(R((s6/home/prologic/work/circuits/tests/core/test_errors.pyRscCs1||_||_||_||_||_dS(N(R R R R R(RR R R R R((s6/home/prologic/work/circuits/tests/core/test_errors.pyt exceptions     N(RRRRR R(((s6/home/prologic/work/circuits/tests/core/test_errors.pyR s cCs |dS(N((te((s6/home/prologic/work/circuits/tests/core/test_errors.pytreraise"scs?ti||idfd}|i|S(Nt registeredcsidS(N(t unregister((tapp(s6/home/prologic/work/circuits/tests/core/test_errors.pyt finalizer+s(Rtregistertwaitt addfinalizer(trequesttmanagertwatcherR((Rs6/home/prologic/work/circuits/tests/core/test_errors.pyR&s   c Csbt}|i||id|i}|tj}|ptid|fd|tfhdtijpti |oti |ndd6ti |d6dtijpti toti tndd6}d h|d 6}t ti |nd}}titd |i|i}t|t}|pd hdtijpti |oti |ndd 6dtijpti toti tndd6ti |d6dtijpti toti tndd6ti |d 6}t ti |nd}}|i}|i}||j}|ptid|fd||fhdtijpti |oti |ndd6ti |d6dtijpti |oti |ndd6ti |d 6}dh|d6} t ti | nd}}}|i}||j}|ptid|fd||fhdtijpti |oti |ndd6ti |d6dtijpti |oti |ndd6}d h|d 6}t ti |nd}}dS(NRs==s-%(py2)s {%(py2)s = %(py0)s.etype } == %(py4)sRtpy0tpy2t NameErrortpy4sassert %(py6)stpy6cSs t|S((R(R((s6/home/prologic/work/circuits/tests/core/test_errors.pyt9ssUassert %(py6)s {%(py6)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.etraceback }, %(py4)s) }tpy1t isinstancetpy3tlistsI%(py2)s {%(py2)s = %(py0)s.handler } == %(py6)s {%(py6)s = %(py4)s.test }sassert %(py8)stpy8s.%(py2)s {%(py2)s = %(py0)s.fevent } == %(py4)sR(s==(s-%(py2)s {%(py2)s = %(py0)s.etype } == %(py4)s(s==(sI%(py2)s {%(py2)s = %(py0)s.handler } == %(py6)s {%(py6)s = %(py4)s.test }(s==(s.%(py2)s {%(py2)s = %(py0)s.fevent } == %(py4)s(RtfireRR R t @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationR tpytesttraisesR R R%R'R R( RRRt @py_assert1t @py_assert3t @py_format5t @py_format7t @py_assert2t @py_assert5t @py_format9((s6/home/prologic/work/circuits/tests/core/test_errors.pyt test_main3s@         (t __builtin__R,t_pytest.assertion.rewritet assertiontrewriteR*R2tcircuitsRRRRRtfixtureRR;(((s6/home/prologic/work/circuits/tests/core/test_errors.pyts    circuits-3.1.0/tests/core/__pycache__/test_debugger.cpython-33-PYTEST.pyc0000644000014400001440000004572612414363411027144 0ustar prologicusers00000000000000 ?TEc @sAdZddlZddljjZddlZddlZyddl m Z Wn"e k rtddl m Z YnXddl m Z ddlmZmZGdddeZGdd d eZGd d d eZd d ZddZddZddZddZddZddZddZdS(uDebugger TestsiN(uStringIO(uDebugger(uEventu ComponentcBs|EeZdZdZdS(utestu test EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u8/home/prologic/work/circuits/tests/core/test_debugger.pyutestsutestcBs#|EeZdZdddZdS(uAppcCs|rtndS(N(u Exception(uselfuraiseException((u8/home/prologic/work/circuits/tests/core/test_debugger.pyutestsuApp.testNF(u__name__u __module__u __qualname__uFalseutest(u __locals__((u8/home/prologic/work/circuits/tests/core/test_debugger.pyuAppsuAppcBs8|EeZdZdZdZddZddZdS(uLoggercCs ||_dS(N(u error_msg(uselfumsg((u8/home/prologic/work/circuits/tests/core/test_debugger.pyuerror$su Logger.errorcCs ||_dS(N(u debug_msg(uselfumsg((u8/home/prologic/work/circuits/tests/core/test_debugger.pyudebug'su Logger.debugN(u__name__u __module__u __qualname__uNoneu error_msgu debug_msguerrorudebug(u __locals__((u8/home/prologic/work/circuits/tests/core/test_debugger.pyuLoggers uLoggerc Cst}t}td|}|j|x|rD|jq1W|jd|j|j}|sdditj |d6dt j kstj |rtj |ndd6}t tj|nd}t}|j||j|jd|jj}t|}||k}|s>tjd|fd||fid t j ks}tj |rtj |nd d 6d t j kstj trtj tnd d6d t j kstj |rtj |nd d6tj |d6}di|d6} t tj| nd}}|jd|jd|_|j}| } | sdditj |d6dt j kstj |rtj |ndd6} t tj| nd}} t}|j||jd|jj}d} || k}|stjd|fd|| fitj | d 6d t j kstj |rtj |nd d6} di| d6}t tj|nd}} |jd|jdS(Nufileiuu+assert %(py2)s {%(py2)s = %(py0)s._events }upy2udebuggerupy0u==u0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }ueupy3ustrusupy5uassert %(py7)supy7u/assert not %(py2)s {%(py2)s = %(py0)s._events }u%(py0)s == %(py3)suassert %(py5)s(u==(u0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }uassert %(py7)sF(u==(u%(py0)s == %(py3)suassert %(py5)s(uAppuStringIOuDebuggeruregisteruflushuseekutruncateu_eventsu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuEventufireureadustripustru_call_reprcompareuFalse( uappustderrudebuggeru @py_assert1u @py_format3ueusu @py_assert4u @py_format6u @py_format8u @py_assert3u @py_format4u @py_assert2((u8/home/prologic/work/circuits/tests/core/test_debugger.pyu test_main+s^       U          U     l  u test_mainc Cst|jd}t|d}t}td|}|j|x|r_|jqLW|jd|j|j }|sddit j |d6dt j kst j|rt j |ndd 6}tt j|nd}t}|j||j|jd|jj}t|} || k}|sYt jd|fd|| fid t j kst j|rt j |nd d 6dt j kst jtrt j tndd6dt j kst j|rt j |ndd 6t j | d6} di| d6} tt j| nd}} |jd|jd|_ |j }| } | sddit j |d6dt j kst j|rt j |ndd 6} tt j| nd}} t}|j||jd|jj}d}||k}|st jd|fd||fit j |d 6dt j kst j|rt j |ndd 6} di| d6} tt j| nd}}|jd|jdS(Nu debug.loguw+ufileiuu+assert %(py2)s {%(py2)s = %(py0)s._events }upy2udebuggerupy0u==u0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }ueupy3ustrusupy5uassert %(py7)supy7u/assert not %(py2)s {%(py2)s = %(py0)s._events }u%(py0)s == %(py3)suassert %(py5)s(u==(u0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }uassert %(py7)sF(u==(u%(py0)s == %(py3)suassert %(py5)s(ustruensureuopenuAppuDebuggeruregisteruflushuseekutruncateu_eventsu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuEventufireureadustripu_call_reprcompareuFalse(utmpdirulogfileustderruappudebuggeru @py_assert1u @py_format3ueusu @py_assert4u @py_format6u @py_format8u @py_assert3u @py_format4u @py_assert2((u8/home/prologic/work/circuits/tests/core/test_debugger.pyu test_fileMs`      U          U     l  u test_filec Cs6dtjkrtjdnt|jd}t|d}t}td|}|j |x|r~|j qkW|j d|j |j }|sdditj|d 6d tjkstj|rtj|nd d 6}ttj|nd}t}|j||j |j d|jj}t|} || k}|sxtjd|fd|| fidtjkstj|rtj|ndd6dtjkstjtrtjtndd 6dtjks%tj|r4tj|ndd 6tj| d6} di| d6} ttj| nd}} |j d|j d|_ |j }| } | s%dditj|d 6d tjkstj|rtj|nd d 6} ttj| nd}} t}|j||j d|jj}d}||k}|stjd|fd||fitj|d6dtjkstj|rtj|ndd 6} di| d6} ttj| nd}}|j d|j dS(Nu__pypy__uBroken on pypyu debug.logur+ufileiuu+assert %(py2)s {%(py2)s = %(py0)s._events }upy2udebuggerupy0u==u0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }ueupy3ustrusupy5uassert %(py7)supy7u/assert not %(py2)s {%(py2)s = %(py0)s._events }u%(py0)s == %(py3)suassert %(py5)s(u==(u0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }uassert %(py7)sF(u==(u%(py0)s == %(py3)suassert %(py5)s(usysumodulesupytestuskipustruensureuopenuAppuDebuggeruregisteruflushuseekutruncateu_eventsu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuEventufireureadustripu_call_reprcompareuFalse(utmpdirulogfileustderruappudebuggeru @py_assert1u @py_format3ueusu @py_assert4u @py_format6u @py_format8u @py_assert3u @py_format4u @py_assert2((u8/home/prologic/work/circuits/tests/core/test_debugger.pyu test_filenamersd      U          U     l  u test_filenamecCst}t}td|}|j|x|rD|jq1W|jd|j|j}|sdditj |d6dt j kstj |rtj |ndd6}t tj|nd}|j}|sZdditj |d6dt j ks(tj |r7tj |ndd6}t tj|nd}td d}|j||j|jd|jj}t|}||k}|stjd|fd||fid t j kstj |rtj |nd d 6dt j ks<tj trKtj tndd6dt j ksstj |rtj |ndd6tj |d6}di|d6} t tj| nd}}|jd|j|j|jd|jj}|j}d} || } | sdditj |d6dt j ksltj |r{tj |ndd6tj | d6tj | d6} t tj| nd}} } |jd|jd|_d|_|j}| } | sxdditj |d6dt j ksFtj |rUtj |ndd6} t tj| nd}} |j}| } | sdditj |d6dt j kstj |rtj |ndd6} t tj| nd}} td d}|j||j|jd|jj}d}||k}|stjd |fd!||fitj |d 6dt j kstj |rtj |ndd6} d"i| d6}t tj|nd}}|jd|j|j|jd|jj}d}||k}|stjd#|fd$||fitj |d 6dt j kstj |rtj |ndd6} d%i| d6}t tj|nd}}dS(&Nufileiuu+assert %(py2)s {%(py2)s = %(py0)s._events }upy2udebuggerupy0u+assert %(py2)s {%(py2)s = %(py0)s._errors }uraiseExceptionu==u0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }ueupy3ustrusupy5uassert %(py7)supy7u (uukassert %(py8)s {%(py8)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error_msg }.startswith }(%(py6)s) }upy2upy0upy6upy8upy4T(uAppuLoggeruDebuggeruregisteruflushutestuTrueufireu error_msgu startswithu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone( uappuloggerudebuggerueu @py_assert1u @py_assert3u @py_assert5u @py_assert7u @py_format9((u8/home/prologic/work/circuits/tests/core/test_debugger.pyutest_Logger_error"s$        utest_Logger_error(u__doc__ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arusysupytestuStringIOu ImportErroruioucircuitsuDebuggeru circuits.coreuEventu ComponentutestuAppuobjectuLoggeru test_mainu test_fileu test_filenameutest_exceptionsutest_IgnoreEventsutest_IgnoreChannelsutest_Logger_debugutest_Logger_error(((u8/home/prologic/work/circuits/tests/core/test_debugger.pyus*     " % ( 4 # " circuits-3.1.0/tests/core/__pycache__/test_globals.cpython-34-PYTEST.pyc0000644000014400001440000001020412414363521026765 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZmZm Z GdddeZ GdddeZ Gddde Z Gd d d e Z d d Zd dZddZdS)N)handlerEvent Componentc@seZdZdZdS)fooz foo EventN)__name__ __module__ __qualname____doc__r r 7/home/prologic/work/circuits/tests/core/test_globals.pyrs rc@seZdZdZdS)testz test EventN)rrrr r r r r r s r c@s=eZdZdZddZeddddZdS) AacCsdS)Nz Hello World!r )selfr r r r szA.testpriorityg?cOsdS)NFoor )reventargskwargsr r r _on_eventsz A._on_eventN)rrrchannelr rrr r r r r s  r c@s1eZdZeddddddZdS)Brg$@r*cOsdS)NBarr )rrrrr r r _on_channelsz B._on_channelN)rrrrrr r r r rs rcCs:tt}x|r&|jqW|jtd}x|rR|jq?W|jd}d}||k}|stjd|fd||fitj|d6tj|d6}di|d 6}t tj |nt }}}|jd }d }||k}|stjd|fd||fitj|d6tj|d6}di|d 6}t tj |nt }}}|jd }d}||k}|s(tjd|fd||fitj|d6tj|d6}di|d 6}t tj |nt }}}dS)Nrrr==%(py1)s == %(py4)spy1py4assert %(py6)spy6rz Hello World!)r)rr )r)rr )r)rr ) r rflushfirer value @pytest_ar_call_reprcompare _safereprAssertionError_format_explanationNone)appx @py_assert0 @py_assert3 @py_assert2 @py_format5 @py_format7r r r test_main!s<    E  E  Er4cCs=tt}x|r&|jqWt}|j|}x|rU|jqBW|jd}d}||k}|stjd|fd||fitj|d6tj|d6}di|d 6}t tj |nt }}}|jd }d }||k}|stjd|fd||fitj|d6tj|d6}di|d 6}t tj |nt }}}|jd }d }||k}|s+tjd|fd||fitj|d6tj|d6}di|d 6}t tj |nt }}}dS)Nrrr%(py1)s == %(py4)srrrassert %(py6)sr!r"rr#z Hello World!)r)r5r6)r)r5r6)r)r5r6) r rr$r r%r&r'r(r)r*r+r,)r-er.r/r0r1r2r3r r r test_event/s>     E  E  Er8cCs1tt}x|r&|jqWt}|j|d}x|rX|jqEW|j}d}||k}|stjd |fd ||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}dS)Nbrr-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)spy5py2r.py0rassert %(py7)spy7)r)r:r>)r rr$rr%r&r'r(r) @py_builtinslocals_should_repr_global_namer*r+r,)r-r7r. @py_assert1 @py_assert4r0 @py_format6 @py_format8r r r test_channel>s     |rG)builtinsr@_pytest.assertion.rewrite assertionrewriter'circuitsrrrrr r rr4r8rGr r r r s    circuits-3.1.0/tests/core/__pycache__/test_call_wait_order.cpython-27-PYTEST.pyc0000644000014400001440000000752512414363101030504 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZddlmZmZddl m Z m Z ddl m Z m Z ddl mZmZmZdefdYZddZd efd YZejd d d ZdZdS(iN(tsleepttime(trandomtseed(ttasktWorker(thandlert ComponenttEventthellocBseZdZeZRS(s hello Event(t__name__t __module__t__doc__tTruetsuccess(((s?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyR scCstt|S(N(RR(tx((s?/home/prologic/work/circuits/tests/core/test_call_wait_order.pytprocesss tAppcBseZeddZRS(R ccsNttd}|jttd|jttd|j|VVdS(Niii(RRtfiretcall(tselfte1((s?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyt _on_hellos(R R RR(((s?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyRstscopetmodulecstttj||j}d}||}|sdditj|d6dtjks{tj |rtj|ndd6tj|d6tj|d6}t tj |nd}}}t j||j}d}||}|sdditj|d6dtjksItj |rXtj|ndd6tj|d6tj|d6}t tj |nd}}}fd }|j|S( Nt registeredtsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }tpy2twatchertpy0tpy6tpy4csjjdS(N(t unregister((tapptworker(s?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyt finalizer-s (RRRtregistertwaitt @pytest_art _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNoneRt addfinalizer(trequesttmanagerRt @py_assert1t @py_assert3t @py_assert5t @py_format7R#((R!R"s?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyR!#s(   u  u c Cs|jt}|j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj |nd}}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksAtj|rPtj|nd d6} di| d6} ttj | nd}} dS(Nt hello_successRsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRRRis==s%(py0)s == %(py3)stpy3tvaluesassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s( RR R%R&R'R(R)R*R+R,R-R7t_call_reprcompare( R0RR!RR1R2R3R4R7t @py_assert2t @py_format4t @py_format6((s?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyttest_call_order6s   u  l(t __builtin__R(t_pytest.assertion.rewritet assertiontrewriteR&tpytestRRRRt circuits.coreRRRRRR R-RRtfixtureR!R=(((s?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyts    circuits-3.1.0/tests/core/__pycache__/test_manager_repr.cpython-33-PYTEST.pyc0000644000014400001440000000741512414363411030013 0ustar prologicusers00000000000000 ?Tc@sdZddlZddljjZddlZddlm Z ddl m Z ddl Z ddl mZmZGdddeZdd ZdS( u:Manager Repr Tests Test Manager's representation string. iN(usleep(ucurrent_thread(u ComponentuManagercBs |EeZdZddZdS(uAppcOsdS(N((uselfueventuargsukwargs((u</home/prologic/work/circuits/tests/core/test_manager_repr.pyutestsuApp.testN(u__name__u __module__u __qualname__utest(u __locals__((u</home/prologic/work/circuits/tests/core/test_manager_repr.pyuAppsuAppc Csdtjtjf}t}t|}d}||}||k}|sitjd|fd||fitj|d6dt j kstj |rtj|ndd6dt j kstj trtjtndd 6d t j kstj |r%tj|nd d 6tj|d 6}di|d6}t tj |nd}}}}t}|j|t|} d}||}| |k} | stjd| fd| |fitj|d6dt j kstj | r tj| ndd 6d t j ksHtj |rWtj|nd d6} di| d 6} t tj | nd} }}|jtj|ddtdt|} d}||}| |k} | stjd | fd!| |fitj|d6dt j ks@tj | rOtj| ndd 6d t j kswtj |rtj|nd d6} d"i| d 6} t tj | nd} }}|jtj|ddt|} d}||}| |k} | stjd#| fd$| |fitj|d6dt j ksetj | rttj| ndd 6d t j kstj |rtj|nd d6} d%i| d 6} t tj | nd} }}dS(&Nu%s:%suu==u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)upy3umupy1ureprupy0uidupy7upy6uuassert %(py10)supy10uu%(py0)s == (%(py3)s %% %(py4)s)usupy4uassert %(py7)su_runningg?uu_Manager__thread(u==(u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)uassert %(py10)s(u==(u%(py0)s == (%(py3)s %% %(py4)s)uassert %(py7)sT(u==(u%(py0)s == (%(py3)s %% %(py4)s)uassert %(py7)s(u==(u%(py0)s == (%(py3)s %% %(py4)s)uassert %(py7)s(uosugetpiducurrent_threadugetNameuManagerurepru @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuAppuregisterustartupytestuwait_foruTrueusleepustop( uidumu @py_assert2u @py_assert5u @py_assert8u @py_assert4u @py_format9u @py_format11uappusu @py_assert1u @py_format6u @py_format8((u</home/prologic/work/circuits/tests/core/test_manager_repr.pyu test_mainsZ              u test_main(u__doc__ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruosutimeusleepu threadingucurrent_threadupytestucircuitsu ComponentuManageruAppu test_main(((u</home/prologic/work/circuits/tests/core/test_manager_repr.pyus   circuits-3.1.0/tests/core/__pycache__/test_complete.cpython-34-PYTEST.pyc0000644000014400001440000001113712414363521027160 0ustar prologicusers00000000000000 ?T@s$ddlZddljjZddlmZmZGdddeZ GdddeZ GdddeZ Gd d d eZ Gd d d eZ Gd ddeZeZe jee jee jexerejqWddZddZdS)N)Event Componentc@seZdZdZdS) simple_eventTN)__name__ __module__ __qualname__completer r 8/home/prologic/work/circuits/tests/core/test_complete.pyrs rc@seZdZdZdZdS)testz test EventTN)rrr__doc__successr r r r r s r c@s"eZdZdZddZdS)Nested3Znested3cCs1|jjdkr!d|j_n d|j_dS)z; Updating state. Must be called twice to reach final state.zPre final statez Final stateN)root_state)selfr r r r sz Nested3.testN)rrrchannelr r r r r rs rc@s"eZdZdZddZdS)Nested2Znested2cCs<d|j_|jttj|jttjdS)z Updating state. z New stateN)rrfirer rr)rr r r r s z Nested2.testN)rrrrr r r r r rs rc@s"eZdZdZddZdS)Nested1Znested1cCs|jttjdS)z1 State change involves other components as well. N)rr rr)rr r r r )sz Nested1.testN)rrrrr r r r r r&s rc@s^eZdZdZdZdZdZdZddZddZ d d Z d d Z dS) AppappFz Old stateNcCs d|_dS)NT)_simple_event_completed)revaluer r r simple_event_complete5szApp.simple_event_completecCs8t}d|_|jg|_|j|tjdS)z9 Fire the test event that should produce a state change. TN)r rrcomplete_channelsrr)revtr r r r 8s  zApp.testcCs|j|_dS)z8 Test event has been processed, save the achieved state.N)r_state_when_success)rrrr r r test_success?szApp.test_successcCs|j|_dS)zT Test event has been completely processed, save the achieved state. N)r_state_when_complete)rrrr r r test_completeCszApp.test_complete) rrrrrrrr rr rr!r r r r r.s    rcCstjtxtr&tjqWtj}|sdditj|d6dtjksqtj trtjtndd6}t tj |nt }dS)zE Test if complete works for an event without further effects z;assert %(py2)s {%(py2)s = %(py0)s._simple_event_completed }py2rpy0N) rrrflushr @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone) @py_assert1Z @py_format3r r r test_complete_simpleRs  Ur/cCstjtxtr&tjqWtj}d}||k}|stjd |fd||fitj|d6tj|d6dtj kstj trtjtndd6}di|d 6}t tj |nt }}}tj}d }||k}|stjd|fd||fitj|d6tj|d6dtj ks~tj trtjtndd6}di|d 6}t tj |nt }}}dS)Nz Old state==;%(py2)s {%(py2)s = %(py0)s._state_when_success } == %(py5)spy5r#rr$r"assert %(py7)spy7z Final state<%(py2)s {%(py2)s = %(py0)s._state_when_complete } == %(py5)s)r0)r1r3)r0)r5r3)rrr r%rr&_call_reprcomparer'r(r)r*r+r,r-r )r. @py_assert4 @py_assert3 @py_format6 @py_format8r r r test_complete_nested]s&   |  |r;)builtinsr(_pytest.assertion.rewrite assertionrewriter&circuitsrrrr rrrrrregisterr%r/r;r r r r s      circuits-3.1.0/tests/core/__pycache__/test_component_setup.cpython-34-PYTEST.pyc0000644000014400001440000001711512414363521030574 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZddlm Z m Z Gddde Z Gddde Z Gdd d e Z Gd d d e ZGd d d eZddZddZddZdS)N)handler) ComponentManagerc@seZdZddZdS)AppcOsdS)N)selfeventargskwargsrr?/home/prologic/work/circuits/tests/core/test_component_setup.pytestszApp.testN)__name__ __module__ __qualname__r rrrr rs rc@seZdZdS)AN)r rrrrrr rs rc@s4eZdZdZedddddZdS)BFprepare_unregisterchannel*cCs|j|rd|_ndS)NT) in_subtreeinformed)rrcrrr _on_prepare_unregisterszB._on_prepare_unregisterN)r rrrrrrrrr rs rc@seZdZdZdS)BasebaseN)r rrrrrrr r#s rc@seZdZdZdS)CrN)r rrrrrrr r(s rc Cst}t}|j||j}|j}|j}d}t}|||}||k}| rtjdf|fdf||fi tj |d6tj |d6tj |d6dt j kptj |rtj |ndd6dt j kptj |r)tj |ndd 6d t j kpNtj tr`tj tnd d 6tj |d 6tj |d 6tj |d6} ddi| d6} t tj| nt}}}}}}}|jx|r|jqW|j}| }| rdditj |d6dt j kpVtj |rhtj |ndd6} t tj| nt}}dS)Nr inz%(py2)s {%(py2)s = %(py0)s.test } in %(py15)s {%(py15)s = %(py8)s {%(py8)s = %(py6)s {%(py6)s = %(py4)s._handlers }.get }(%(py10)s, %(py13)s {%(py13)s = %(py11)s() }) }Zpy15py2py13apppy0py4setpy11py6py8py10zassert %(py17)sZpy17z1assert not %(py2)s {%(py2)s = %(py0)s._handlers }m)rrregisterr _handlersgetr" @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone unregisterflush) r(r @py_assert1 @py_assert5 @py_assert7 @py_assert9Z @py_assert12Z @py_assert14 @py_assert3Z @py_format16Z @py_format18 @py_format4rrr test_basic-s2      1   Ur=cCs t}t}t}|j||j|||k}|stjd|fd||fidtjkstj|rtj |ndd6dtjkstj|rtj |ndd6}di|d 6}t tj |nt }|j }||k}|stjd|fd||fitj |d6dtjksvtj|rtj |ndd6dtjkstj|rtj |ndd 6}di|d 6}t tj |nt }}|j}||k}|stjd|fd||fitj |d6dtjksgtj|rvtj |ndd6dtjkstj|rtj |ndd 6}di|d 6}t tj |nt }}||k}|stjd|fd||fidtjks?tj|rNtj |ndd6dtjksvtj|rtj |ndd6}di|d 6}t tj |nt }|j }||k}|stjd|fd ||fitj |d6dtjks,tj|r;tj |ndd6dtjksctj|rrtj |ndd 6}d!i|d 6}t tj |nt }}|j}||k}|stjd"|fd#||fitj |d6dtjkstj|r,tj |ndd6dtjksTtj|rctj |ndd 6}d$i|d 6}t tj |nt }}|jx|r|jqW|j}|s>dditj |d6dtjks tj|rtj |ndd6}t tj |nt }||k}|stjd%|fd&||fidtjkstj|rtj |ndd6dtjkstj|rtj |ndd6}d'i|d 6}t tj |nt }|j }||k}|stjd(|fd)||fitj |d6dtjkstj|rtj |ndd6dtjkstj|rtj |ndd 6}d*i|d 6}t tj |nt }}|j}||k}|stjd+|fd,||fitj |d6dtjksvtj|rtj |ndd6dtjkstj|rtj |ndd 6}d-i|d 6}t tj |nt }}||k}|s tjd.|fd/||fidtjksN tj|r] tj |ndd6dtjks tj|r tj |ndd6}d0i|d 6}t tj |nt }|j }||k}|s tjd1|fd2||fitj |d6dtjks; tj|rJ tj |ndd6dtjksr tj|r tj |ndd 6}d3i|d 6}t tj |nt }}|j}||k}|s tjd4|fd5||fitj |d6dtjks, tj|r; tj |ndd6dtjksc tj|rr tj |ndd 6}d6i|d 6}t tj |nt }}dS)7Nr%(py0)s in %(py2)sr(rar r'assert %(py4)sr!==,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)sassert %(py6)sr$.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)sbz,assert %(py2)s {%(py2)s = %(py0)s.informed }not in%(py0)s not in %(py2)s)r)r>r@)rA)rBrC)rA)rDrC)r)r>r@)rA)rBrC)rA)rDrC)rF)rGr@)rA)rBrC)rA)rDrC)r)r>r@)rA)rBrC)rA)rDrC)rrrr)r,r-r/r0r1r.r2r3r4rootparentr5r6r)r(r?rEr7 @py_format3 @py_format5r; @py_format7rrr test_complex<s                  U         rMcCst}|j}d}||k}|stjd |fd ||fitj|d6tj|d6dtjkstj|rtj|ndd6}d i|d 6}ttj |nt }}}t }|j}d }||k}|stjd|fd||fitj|d6tj|d6d tjksitj|rxtj|nd d6}di|d 6}ttj |nt }}}dS)NrrA/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)spy5rr r'assert %(py7)spy7r)rA)rNrP)rA)rNrP) rrr,r-r.r/r0r1r2r3r4r)rr7 @py_assert4r; @py_format6 @py_format8rrrr $test_subclassing_with_custom_channelYs$   |   |rU)builtinsr/_pytest.assertion.rewrite assertionrewriter,Zcircuits.core.handlersrcircuitsrrrrrrrr=rMrUrrrr s    circuits-3.1.0/tests/core/__pycache__/test_call_wait.cpython-34-PYTEST.pyc0000644000014400001440000002532512414363521027313 0ustar prologicusers00000000000000 ?TP @sddlZddljjZddlZddlmZm Z m Z Gddde Z Gddde Z Gddde Z Gd d d e ZGd d d e ZGd dde ZGddde ZGddde ZGddde ZGddde ZGddde ZejddddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(ZdS))N)handler ComponentEventc@seZdZdZdZdS)waitz wait EventTN)__name__ __module__ __qualname____doc__successr r 9/home/prologic/work/circuits/tests/core/test_call_wait.pyrs rc@seZdZdZdZdS)callz call EventTN)rrrr r r r r r r s r c@seZdZdZdZdS) long_callzlong_call EventTN)rrrr r r r r r rs rc@seZdZdZdZdS) long_waitzlong_wait EventTN)rrrr r r r r r rs rc@seZdZdZdZdS) wait_returnzwait_return EventTN)rrrr r r r r r rs rc@seZdZdZdZdS)helloz hello EventTN)rrrr r r r r r r!s rc@seZdZdZdZdS)fooz foo EventTN)rrrr r r r r r r&s rc@seZdZdZdZdS)get_xz get_x EventTN)rrrr r r r r r r+s rc@seZdZdZdZdS)get_yz get_y EventTN)rrrr r r r r r r0s rc@seZdZdZdZdS)evalz eval EventTN)rrrr r r r r r r5s rc@seZdZedddZedddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS)Apprccs,|jt}|jdV|jVdS)Nr)firerrvalue)selfxr r r _on_wait<sz App._on_waitr ccs|jtV}|jVdS)N)r rr)rrr r r _on_callBsz App._on_callcCsdS)Nz Hello World!r )rr r r rGsz App.helloccs,|jt}|jdV|jVdS)Nr)rrrr)rrr r r rJsz App.long_waitccs#|jt|jdVVdS)Nr)rrr)rr r r rOszApp.wait_returnccs|jtV}|jVdS)N)r rr)rrr r r rSsz App.long_callccs#xtddD] }|VqWdS)N )range)rir r r rWszApp.foocCsdS)Nrr )rr r r r[sz App.get_xcCsdS)Nr )rr r r r^sz App.get_yccs9|jtV}|jtV}|j|jVdS)N)r rrr)rryr r r raszApp.evalN)rrrrrrrrrrrrrrr r r r r:s        rscopemodulecstj||j}d}||}|sdditj|d6tj|d6dtjks~tj|rtj|ndd6tj|d6}ttj |nt }}}fd d }|j |S) N registeredzFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }py2py6watcherpy0py4csjdS)N) unregisterr )appr r finalizerlszapp..finalizer) rregisterr @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone addfinalizer)requestmanagerr) @py_assert1 @py_assert3 @py_assert5 @py_format7r.r )r-r r-gs  u r-c Cs|jt}|j}d}||}|sdditj|d6tj|d6dtjks~tj|rtj|ndd6tj|d6}ttj|nt }}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksAtj|rPtj|nd d6} di| d6} ttj| nt }} dS)NZ wait_successr&zFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }r'r(r)r*r+z Hello World!==%(py0)s == %(py3)spy3rassert %(py5)spy5)r?)r@rB) rrr0r1r2r3r4r5r6r7r_call_reprcompare) r:r)r-rr;r<r=r>r @py_assert2 @py_format4 @py_format6r r r test_wait_simplets   u  lrHc Cs|jt}|j}d}||}|sdditj|d6tj|d6dtjks~tj|rtj|ndd6tj|d6}ttj |nt }}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksAtj|rPtj|nd d6} di| d6} ttj | nt }} dS)NZ call_successr&zFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }r'r(r)r*r+z Hello World!r?%(py0)s == %(py3)srArassert %(py5)srC)r?)rIrJ) rr rr0r1r2r3r4r5r6r7rrD) r:r)r-rr;r<r=r>rrErFrGr r r call_simple|s   u  lrKcCsi|jt}|j}d}||}| rdditj|d6tj|d6dtjkp|tj|rtj|ndd6tj|d6}ttj |nt }}}|j }d } d } t | | } t | } || k}| rOtjd f|fd f|| fitj| d 6dtjkpgtjt rytjt ndd6tj| d6dtjkptj|rtj|ndd6tj| d6tj| d6dtjkptjt rtjt ndd6} ddi| d6}ttj |nt }} } } } dS)NZlong_call_successr&zFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }r'r(r)r*r+rrr?zY%(py0)s == %(py11)s {%(py11)s = %(py2)s(%(py9)s {%(py9)s = %(py3)s(%(py5)s, %(py7)s) }) }py9listpy7rrCpy11rrAzassert %(py13)spy13)rrrr0r1r2r3r4r5r6r7rrrMrD)r:r)r-rr;r<r=r>r @py_assert4 @py_assert6 @py_assert8 @py_assert10 @py_format12 @py_format14r r r test_long_calls(  u  rWcCsi|jt}|j}d}||}| rdditj|d6tj|d6dtjkp|tj|rtj|ndd6tj|d6}ttj |nt }}}|j }d } d } t | | } t | } || k}| rOtjd f|fd f|| fitj| d 6dtjkpgtjt rytjt ndd6tj| d6dtjkptj|rtj|ndd6tj| d6tj| d6dtjkptjt rtjt ndd6} ddi| d6}ttj |nt }} } } } dS)NZlong_wait_successr&zFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }r'r(r)r*r+rrr?zY%(py0)s == %(py11)s {%(py11)s = %(py2)s(%(py9)s {%(py9)s = %(py3)s(%(py5)s, %(py7)s) }) }rLrMrNrrCrOrrAzassert %(py13)srP)rrrr0r1r2r3r4r5r6r7rrrMrD)r:r)r-rr;r<r=r>rrQrRrSrTrUrVr r r test_long_waits(  u  rXcCsi|jt}|j}d}||}| rdditj|d6tj|d6dtjkp|tj|rtj|ndd6tj|d6}ttj |nt }}}|j }d } d } t | | } t | } || k}| rOtjd f|fd f|| fitj| d 6dtjkpgtjt rytjt ndd6tj| d6dtjkptj|rtj|ndd6tj| d6tj| d6dtjkptjt rtjt ndd6} ddi| d6}ttj |nt }} } } } dS)NZwait_return_successr&zFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }r'r(r)r*r+rrr?zY%(py0)s == %(py11)s {%(py11)s = %(py2)s(%(py9)s {%(py9)s = %(py3)s(%(py5)s, %(py7)s) }) }rLrMrNrrCrOrrAzassert %(py13)srP)rrrr0r1r2r3r4r5r6r7rrrMrD)r:r)r-rr;r<r=r>rrQrRrSrTrUrVr r r test_wait_returns(  u  rYc Cs|jt}|j}d}||}|sdditj|d6tj|d6dtjks~tj|rtj|ndd6tj|d6}ttj |nt }}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksAtj|rPtj|nd d6} di| d6} ttj | nt }} dS)NZ eval_successr&zFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }r'r(r)r*r+r?%(py0)s == %(py3)srArassert %(py5)srC)r?)r[r\) rrrr0r1r2r3r4r5r6r7rrD) r:r)r-rr;r<r=r>rrErFrGr r r test_evals   u  lr])builtinsr2_pytest.assertion.rewrite assertionrewriter0pytestcircuitsrrrrr rrrrrrrrrfixturer-rHrKrWrXrYr]r r r r s*  -     circuits-3.1.0/tests/core/__pycache__/test_globals.cpython-33-PYTEST.pyc0000644000014400001440000001371212414363411026771 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZmZm Z GdddeZ GdddeZ Gddde Z Gd d d e Z d d Zd dZddZdS(iN(uhandleruEventu ComponentcBs|EeZdZdZdS(ufoou foo EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u7/home/prologic/work/circuits/tests/core/test_globals.pyufoosufoocBs|EeZdZdZdS(utestu test EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u7/home/prologic/work/circuits/tests/core/test_globals.pyutest sutestcBsA|EeZdZdZddZeddddZdS( uAuacCsdS(Nu Hello World!((uself((u7/home/prologic/work/circuits/tests/core/test_globals.pyutestsuA.testupriorityg?cOsdS(NuFoo((uselfueventuargsukwargs((u7/home/prologic/work/circuits/tests/core/test_globals.pyu _on_eventsu A._on_eventN(u__name__u __module__u __qualname__uchannelutestuhandleru _on_event(u __locals__((u7/home/prologic/work/circuits/tests/core/test_globals.pyuAs uAcBs5|EeZdZeddddddZdS(uBupriorityg$@uchannelu*cOsdS(NuBar((uselfueventuargsukwargs((u7/home/prologic/work/circuits/tests/core/test_globals.pyu _on_channelsu B._on_channelN(u__name__u __module__u __qualname__uhandleru _on_channel(u __locals__((u7/home/prologic/work/circuits/tests/core/test_globals.pyuBsuBcCs:tt}x|r&|jqW|jtd}x|rR|jq?W|jd}d}||k}|stjd|fd||fitj|d6tj|d6}di|d 6}t tj |nd}}}|jd }d }||k}|stjd|fd||fitj|d6tj|d6}di|d 6}t tj |nd}}}|jd }d}||k}|s(tjd|fd||fitj|d6tj|d6}di|d 6}t tj |nd}}}dS(NuaiuBaru==u%(py1)s == %(py4)supy1upy4uuassert %(py6)supy6iuFooiu Hello World!(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s( uAuBuflushufireutestuvalueu @pytest_aru_call_reprcompareu _saferepruAssertionErroru_format_explanationuNone(uappuxu @py_assert0u @py_assert3u @py_assert2u @py_format5u @py_format7((u7/home/prologic/work/circuits/tests/core/test_globals.pyu test_main!s<    E  E  Eu test_maincCs=tt}x|r&|jqWt}|j|}x|rU|jqBW|jd}d}||k}|stjd|fd||fitj|d6tj|d6}di|d 6}t tj |nd}}}|jd }d }||k}|stjd|fd||fitj|d6tj|d6}di|d 6}t tj |nd}}}|jd }d }||k}|s+tjd|fd||fitj|d6tj|d6}di|d 6}t tj |nd}}}dS(NiuBaru==u%(py1)s == %(py4)supy1upy4uuassert %(py6)supy6iuFooiu Hello World!(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s( uAuBuflushutestufireuvalueu @pytest_aru_call_reprcompareu _saferepruAssertionErroru_format_explanationuNone(uappueuxu @py_assert0u @py_assert3u @py_assert2u @py_format5u @py_format7((u7/home/prologic/work/circuits/tests/core/test_globals.pyu test_event/s>     E  E  Eu test_eventcCs1tt}x|r&|jqWt}|j|d}x|rX|jqEW|j}d}||k}|stjd |fd ||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}dS(NubuBaru==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2uxupy0upy5uuassert %(py7)supy7(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(uAuBuflushufooufireuvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uappueuxu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u7/home/prologic/work/circuits/tests/core/test_globals.pyu test_channel>s     |u test_channel(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsuhandleruEventu ComponentufooutestuAuBu test_mainu test_eventu test_channel(((u7/home/prologic/work/circuits/tests/core/test_globals.pyus    circuits-3.1.0/tests/core/__pycache__/test_core.cpython-34-PYTEST.pyc0000644000014400001440000000511012414363521026272 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZmZm Z GdddeZ GdddeZ e Z e Z e je xe re jqWddZd d ZdS) N)Event ComponentManagerc@seZdZdZdS)testz test EventN)__name__ __module__ __qualname____doc__r r 4/home/prologic/work/circuits/tests/core/test_core.pyrs rc@s4eZdZddZddZddZdS)AppcCsdS)Nz Hello World!r )selfr r r r szApp.testcGsdS)Nr )r argsr r r unregisteredszApp.unregisteredcGsdS)Nr )r rr r r prepare_unregisterszApp.prepare_unregisterN)rrrrrrr r r r r s   r cCstjt}tj|j}d}||k}|stjd |fd ||fitj|d6tj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}}dS)Nz Hello World!==-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)spy5py2xpy0assert %(py7)spy7)r)rr)mfirerflushvalue @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)r @py_assert1 @py_assert4 @py_assert3 @py_format6 @py_format8r r r test_fires   |r,cCsttk}|stjd |fd ttfidtjksTtjtrctjtndd6dtjkstjtrtjtndd6}di|d 6}ttj |nt }tt k}| }|stjd|fdtt fid tjks/tjt r>tjt nd d6dtjksftjtrutjtndd6}di|d 6}ttj |nt }}dS)Nin%(py0)s in %(py2)srrr rrassert %(py4)spy4appassert not %(py4)s)r-)r.r/)r-)r.r2) r rrrr!r"r#r r$r%r&r1)r' @py_format3 @py_format5 @py_assert5r*r r r test_contains$s  r6)builtinsr!_pytest.assertion.rewrite assertionrewritercircuitsrrrrr rr1registerrr,r6r r r r s      circuits-3.1.0/tests/core/__pycache__/test_value.cpython-33-PYTEST.pyc0000644000014400001440000003674712414363411026477 0ustar prologicusers00000000000000 ?T c@sddlZddljjZddlZddlmZm Z m Z Gddde Z Gddde Z Gddde Z Gd d d e ZGd d d e Zejd dZddZddZddZddZddZddZdS(iN(uhandleruEventu ComponentcBs|EeZdZdZdS(uhellou Hhllo EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u5/home/prologic/work/circuits/tests/core/test_value.pyuhello suhellocBs|EeZdZdZdS(utestu test EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u5/home/prologic/work/circuits/tests/core/test_value.pyutestsutestcBs|EeZdZdZdS(ufoou foo EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u5/home/prologic/work/circuits/tests/core/test_value.pyufoosufoocBs |EeZdZdZdZdS(uvaluesu values EventNT(u__name__u __module__u __qualname__u__doc__uTrueucomplete(u __locals__((u5/home/prologic/work/circuits/tests/core/test_value.pyuvaluessuvaluescBs|EeZdZddZddZddZeddd Zed d d Zed ddddZ ed ddddZ ed ddddZ dS(uAppcCsdS(Nu Hello World!((uself((u5/home/prologic/work/circuits/tests/core/test_value.pyuhellosu App.hellocCs|jtS(N(ufireuhello(uself((u5/home/prologic/work/circuits/tests/core/test_value.pyutest!suApp.testcCstddS(NuERROR(u Exception(uself((u5/home/prologic/work/circuits/tests/core/test_value.pyufoo$suApp.foouhello_value_changedcCs ||_dS(N(uvalue(uselfuvalue((u5/home/prologic/work/circuits/tests/core/test_value.pyu_on_hello_value_changed'suApp._on_hello_value_changedutest_value_changedcCs ||_dS(N(uvalue(uselfuvalue((u5/home/prologic/work/circuits/tests/core/test_value.pyu_on_test_value_changed+suApp._on_test_value_changeduvaluesupriorityg@cCsdS(Nufoo((uself((u5/home/prologic/work/circuits/tests/core/test_value.pyu_value1/su App._value1g?cCsdS(Nubar((uself((u5/home/prologic/work/circuits/tests/core/test_value.pyu_value23su App._value2gcCs|jtS(N(ufireuhello(uself((u5/home/prologic/work/circuits/tests/core/test_value.pyu_value37su App._value3N( u__name__u __module__u __qualname__uhelloutestufoouhandleru_on_hello_value_changedu_on_test_value_changedu_value1u_value2u_value3(u __locals__((u5/home/prologic/work/circuits/tests/core/test_value.pyuApps   uAppcsEtj|jdfdd}|j|S(Nu registeredcsjjddS(Nu unregistered(u unregisteruwait((uappuwatcher(u5/home/prologic/work/circuits/tests/core/test_value.pyu finalizerAs uapp..finalizer(uAppuregisteruwaitu addfinalizer(urequestumanageruwatcheru finalizer((uappuwatcheru5/home/prologic/work/circuits/tests/core/test_value.pyuapp<s   uappc Cs|jt}|jdd}||k}|stjd|fd||fidtjksytj|rtj|ndd6tj|d6}di|d 6}t tj |nd}}|j }d}||k} | stjd| fd||fitj|d 6dtjksItj|rXtj|ndd6tj|d 6}di|d6} t tj | nd}} }dS(Nuhellou Hello World!uinu%(py1)s in %(py3)suxupy3upy1uuassert %(py5)supy5u==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2upy0uassert %(py7)supy7(uin(u%(py1)s in %(py3)suassert %(py5)s(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s( ufireuhellouwaitu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuvalue( uappuwatcheruxu @py_assert0u @py_assert2u @py_format4u @py_format6u @py_assert1u @py_assert4u @py_assert3u @py_format8((u5/home/prologic/work/circuits/tests/core/test_value.pyu test_valueJs"  l   |u test_valuec Cs|jt}|jd|j}d}||k}|stjd|fd||fitj|d6dtjkstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}t |}d} || k}|stjd|fd|| fitj|d 6dtjksitj |rxtj|ndd6dtjkstj t rtjt ndd6tj| d6} di| d6} t tj | nd}}} dS(Nutestu Hello World!u==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2uxupy0upy5uuassert %(py7)supy7u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)supy3upy1ustrupy6uassert %(py8)supy8(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(u==(u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)suassert %(py8)s(ufireutestuwaituvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneustr( uappuwatcheruxu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_assert2u @py_assert5u @py_format7u @py_format9((u5/home/prologic/work/circuits/tests/core/test_value.pyutest_nested_valueRs$   |  utest_nested_valuec Cs|jt}d|_|jdd}||k}|stjd|fd||fidtjkstj |rtj |ndd6tj |d6}di|d 6}t tj |nd}}|j}d}||k} | stjd| fd||fitj |d 6dtjksRtj |ratj |ndd6tj |d 6}di|d6} t tj | nd}} }|j}||k} | stjd| fd||fitj |d 6dtjks tj |r/tj |ndd6dtjksWtj |rftj |ndd6} d i| d6} t tj | nd}} dS(!Nuhello_value_changedu Hello World!uinu%(py1)s in %(py3)suxupy3upy1uuassert %(py5)supy5u==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2upy0uassert %(py7)supy7uisu-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)suappupy4uassert %(py6)supy6T(uin(u%(py1)s in %(py3)suassert %(py5)s(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(uis(u-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)suassert %(py6)s(ufireuhellouTrueunotifyuwaitu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuvalue( uappuwatcheruxu @py_assert0u @py_assert2u @py_format4u @py_format6u @py_assert1u @py_assert4u @py_assert3u @py_format8u @py_format5u @py_format7((u5/home/prologic/work/circuits/tests/core/test_value.pyutest_value_notifyZs2   l   | utest_value_notifyc Cs|jt}d|_|jd|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}t|}d} || k}|stjd|fd|| fitj|d 6dt j ksrtj |rtj|ndd6dt j kstj trtjtndd6tj| d6} di| d6} t tj | nd}}} |j}||k}|stjd|fd ||fitj|d6dt j kswtj |rtj|ndd6dt j kstj |rtj|ndd6} d!i| d6} t tj | nd}}dS("Nuhello_value_changedu Hello World!u==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2uxupy0upy5uuassert %(py7)supy7u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)supy3upy1ustrupy6uassert %(py8)supy8uisu-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)suappupy4uassert %(py6)sT(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(u==(u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)suassert %(py8)s(uis(u-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)suassert %(py6)s(ufireutestuTrueunotifyuwaituvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneustr( uappuwatcheruxu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_assert2u @py_assert5u @py_format7u @py_format9u @py_format5((u5/home/prologic/work/circuits/tests/core/test_value.pyutest_nested_value_notifyes4    |   utest_nested_value_notifyc Cs |jt}|jd|\}}}|tk}|stjd|fd|tfidtjkstjtrtj tndd6dtjkstj|rtj |ndd6}di|d 6}t tj |nd}t |} d } | | k} | stjd| fd| | fitj | d6dtjksxtj|rtj |ndd6dtjkstjt rtj t ndd6tj | d6} di| d6} t tj | nd} } } t|t}|sddidtjksPtjtr_tj tndd6dtjkstj|rtj |ndd6dtjkstjtrtj tndd6tj |d 6}t tj |nd}dS(Nufoouisu%(py0)s is %(py2)su Exceptionupy2uetypeupy0uuassert %(py4)supy4uERRORu==u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)supy3uevalueupy1ustrupy6uassert %(py8)supy8u5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }ulistu etracebacku isinstance(uis(u%(py0)s is %(py2)suassert %(py4)s(u==(u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)suassert %(py8)s(ufireufoouwaitu Exceptionu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneustru isinstanceulist(uappuwatcheruxuetypeuevalueu etracebacku @py_assert1u @py_format3u @py_format5u @py_assert2u @py_assert5u @py_assert4u @py_format7u @py_format9u @py_assert3((u5/home/prologic/work/circuits/tests/core/test_value.pyutest_error_valueps,    utest_error_valuec Cs|jt}|jd|j}t|t}|s(dditj|d6dtj ksxtj |rtj|ndd6dtj kstj trtjtndd6tj|d 6d tj kstj trtjtnd d 6}t tj |nd}}t|}d }||k}|stjd|fd||fidtj kstj |rtj|ndd6tj|d6}di|d6} t tj | nd}}d ddg}||k} | stjd| fd||fitj|d6dtj kshtj |rwtj|ndd6}d i|d6} t tj | nd} }|d}d } || k}|sEtjd!|fd"|| fitj|d6tj| d 6} d#i| d 6}t tj |nd}}} |d}d} || k}|stjd$|fd%|| fitj|d6tj| d 6} d&i| d 6}t tj |nd}}} |d}d} || k}|stjd'|fd(|| fitj|d6tj| d 6} d)i| d 6}t tj |nd}}} dS(*Nuvalues_completeuuPassert %(py6)s {%(py6)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.value }, %(py4)s) }upy3uvupy1u isinstanceupy0upy6ulistupy4ufoouinu%(py1)s in %(py3)suassert %(py5)supy5ubaru Hello World!u==u%(py0)s == %(py3)suxiu%(py1)s == %(py4)suassert %(py6)sii(uin(u%(py1)s in %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s(ufireuvaluesuwaituvalueu isinstanceulistu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu_call_reprcompare( uappuwatcheruvu @py_assert2u @py_assert5u @py_format7uxu @py_assert0u @py_format4u @py_format6u @py_assert1u @py_assert3u @py_format5((u5/home/prologic/work/circuits/tests/core/test_value.pyutest_multiple_valueszs^     l  l   E  E  Eutest_multiple_values(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsuhandleruEventu ComponentuhelloutestufoouvaluesuAppufixtureuappu test_valueutest_nested_valueutest_value_notifyutest_nested_value_notifyutest_error_valueutest_multiple_values(((u5/home/prologic/work/circuits/tests/core/test_value.pyus      circuits-3.1.0/tests/core/__pycache__/test_inheritence.cpython-34-PYTEST.pyc0000644000014400001440000000661112414363521027646 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlZddlmZm Z m Z Gddde Z Gddde Z Gddde Z Gd d d e Zd d Zd dZdS)N)handlerEvent Componentc@seZdZdZdS)testz test EventN)__name__ __module__ __qualname____doc__r r ;/home/prologic/work/circuits/tests/core/test_inheritence.pyrs rc@seZdZddZdS)BasecCsdS)Nz Hello World!r )selfr r r rsz Base.testN)rrrrr r r r r s r c@s.eZdZedddddZdS)App1rprioritycCsdS)NFoobarr )r r r r rsz App1.testN)rrrrrr r r r rs rc@s.eZdZedddddZdS)App2roverrideTcCsdS)Nrr )r r r r rsz App2.testN)rrrrrr r r r rs rc Cst}|j|jt}tj}d}|||}|s dditj|d6tj|d6tj|d6dtj kstj |rtj|ndd6d tj kstj trtjtnd d 6}t tj |nt }}}|j}d d g}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd 6}di|d6} t tj | nt }}|jdS)NresultzSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }py5py2py7xpy3pytestpy0z Hello World!r==%(py0)s == %(py3)svassert %(py5)s)r)rr!)rstartfirerrwait_for @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonevalue_call_reprcomparestop) appr @py_assert1 @py_assert4 @py_assert6 @py_format8r @py_assert2 @py_format4 @py_format6r r r test_inheritence s&     l r8c Cst}|j|jt}tj}d}|||}|s dditj|d6tj|d6tj|d6dtj kstj |rtj|ndd6d tj kstj trtjtnd d 6}t tj |nt }}}|j}d }||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd 6}di|d6} t tj | nt }}|jdS)NrrzSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }rrrrrrrrr%(py0)s == %(py3)sr assert %(py5)s)r)r9r:)rr"r#rrr$r%r&r'r(r)r*r+r,r-r.r/) r0rr1r2r3r4r r5r6r7r r r test_override,s&     l r;)builtinsr'_pytest.assertion.rewrite assertionrewriter%rcircuitsrrrrr rrr8r;r r r r s   circuits-3.1.0/tests/core/__pycache__/test_dynamic_handlers.cpython-26-PYTEST.pyc0000644000014400001440000001000312407376150030650 0ustar prologicusers00000000000000 ?TXc@sddkZddkiiZddkZddklZl Z l Z de fdYZ eddZ dZ dZdS(iN(thandlertEventtManagertfoocBseZdZRS(s foo Event(t__name__t __module__t__doc__(((s@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyRscCsdS(Ns Hello World!((tself((s@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyton_foo scCs!t}|i|itti|d}|it}|i|i }d}||j}|pt i d |fd ||fhdt i jpt i|ot i|ndd6t i|d6}dh|d 6}tt i|nd}}|idS( NRs Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(Rtstartt addHandlerRtpytestt WaitEventtfireRtwaittvaluet @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetstop(tmtwaitertxR t @py_assert2t @py_assert1t @py_format4t @py_format6((s@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyttest_addHandlers      o cCsft}|i|it}ti|d}|it}|i|i }d}||j}|pt i d|fd||fhdt i jpt i|ot i|ndd6t i|d6}dh|d 6}tt i|nd}}|i|ti|d}|it}|i|i }|dj} | pt i d| fd|dfhd t i jpt i|ot i|nd d6t i|d 6dt i jpt idot idndd6} dh| d6} tt i| nd}} t|} t| j}|p t i d|fd t| fhdt i jpt itot itndd6dt i jpt i|ot i|ndd6dt i jpt itot itndd 6t i| d 6}dh|d6} tt i| nd}} d}|i} || j}|pt i d!|fd"|| fht i|d6dt i jpt i|ot i|ndd6t i| d 6}dh|d6} tt i| nd}}} |idS(#NRs Hello World!s==s%(py0)s == %(py3)sR R R sassert %(py5)sR tiss-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)sR tpy2Rtpy4sassert %(py6)stpy6snot ins4%(py0)s not in %(py5)s {%(py5)s = %(py2)s(%(py3)s) }RRtdirsassert %(py7)stpy7s5%(py1)s not in %(py5)s {%(py5)s = %(py3)s._handlers }tpy1(s==(s%(py0)s == %(py3)s(R&(s-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)s(snot in(s4%(py0)s not in %(py5)s {%(py5)s = %(py2)s(%(py3)s) }(snot in(s5%(py1)s not in %(py5)s {%(py5)s = %(py3)s._handlers }(RR RRRRRRRRRRRRRRRRRt removeHandlerR*t _handlersR(RtmethodRR R R!R"R#R$t @py_assert3t @py_format5t @py_format7t @py_assert4t @py_format8t @py_assert0((s@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyttest_removeHandler!sR     o        (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRRtcircuitsRRRRRR%R6(((s@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyts   circuits-3.1.0/tests/core/__pycache__/test_component_targeting.cpython-32-PYTEST.pyc0000644000014400001440000000671612414363275031431 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlZddlmZm Z Gdde Z GddeZ ej ddd Z d ZdS( iN(u ComponentuEventcBs|EeZdZdZdS(u hello EventNT(u__name__u __module__u__doc__uTrueusuccess(u __locals__((uC/home/prologic/work/circuits/tests/core/test_component_targeting.pyuhello s uhellocBs|EeZdZdZdS(uappcCsdS(Nu Hello World!((uself((uC/home/prologic/work/circuits/tests/core/test_component_targeting.pyuhellosN(u__name__u __module__uchanneluhello(u __locals__((uC/home/prologic/work/circuits/tests/core/test_component_targeting.pyuApps uAppuscopeumodulecstj||j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj |nd}}}fd }|j |S( Nu registereduuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4csjdS(N(u unregister((uapp(uC/home/prologic/work/circuits/tests/core/test_component_targeting.pyu finalizers( uAppuregisteruwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu addfinalizer(urequestumanageruwatcheru @py_assert1u @py_assert3u @py_assert5u @py_format7u finalizer((uappuC/home/prologic/work/circuits/tests/core/test_component_targeting.pyuapps  u c Cs|jt|}|j}d}||}|sdditj|d6dtjksqtj|rtj|ndd6tj|d6tj|d6}ttj |nd}}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksDtj|rStj|nd d6} di| d6} ttj | nd}} dS(Nu hello_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4u Hello World!u==u%(py0)s == %(py3)supy3uvalueuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s( ufireuhellouwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert2u @py_format4u @py_format6((uC/home/prologic/work/circuits/tests/core/test_component_targeting.pyutest$s   u  l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsu ComponentuEventuhellouAppufixtureuapputest(((uC/home/prologic/work/circuits/tests/core/test_component_targeting.pyus   circuits-3.1.0/tests/core/__pycache__/test_errors.cpython-32-PYTEST.pyc0000644000014400001440000001203312414363275026664 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlZddlmZm Z GddeZ Gdde Z dZ ej dZd ZdS( iN(uEventu ComponentcBs|EeZdZdS(u test EventN(u__name__u __module__u__doc__(u __locals__((u6/home/prologic/work/circuits/tests/core/test_errors.pyutests utestcs5|EeZfdZdZdddZS(csDtt|jd|_d|_d|_d|_d|_dS(N( usuperuAppu__init__uNoneuetypeuevalueu etracebackuhandlerufevent(uself(u __class__(u6/home/prologic/work/circuits/tests/core/test_errors.pyu__init__s     cCstS(N(ux(uself((u6/home/prologic/work/circuits/tests/core/test_errors.pyutestscCs1||_||_||_||_||_dS(N(uetypeuevalueu etracebackuhandlerufevent(uselfuetypeuevalueu etracebackuhandlerufevent((u6/home/prologic/work/circuits/tests/core/test_errors.pyu exceptions     N(u__name__u __module__u__init__utestuNoneu exception(u __locals__((u __class__u6/home/prologic/work/circuits/tests/core/test_errors.pyuApp s  uAppcCs |dS(N((ue((u6/home/prologic/work/circuits/tests/core/test_errors.pyureraise"scs?tj||jdfd}|j|S(Nu registeredcsjdS(N(u unregister((uapp(u6/home/prologic/work/circuits/tests/core/test_errors.pyu finalizer+s(uAppuregisteruwaitu addfinalizer(urequestumanageruwatcheru finalizer((uappu6/home/prologic/work/circuits/tests/core/test_errors.pyuapp&s   c CsCt}|j||jd|j}|tk}|s tjd|fd|tfitj|d6dtj kstj |rtj|ndd6dtj kstj trtjtndd6}di|d 6}t tj |nd}}tjtd |j|j}t|t}|s6d d itj|d6dtj kstj |rtj|ndd6dtj kstj trtjtndd6tj|d 6dtj kstj trtjtndd6}t tj |nd}}|j}|j}||k}|s@tjd|fd||fitj|d6dtj kstj |rtj|ndd6tj|d 6dtj kstj |r tj|ndd6}di|d6} t tj | nd}}}|j}||k}|s5tjd|fd||fitj|d6dtj kstj |rtj|ndd6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}dS( Nu exceptionu==u-%(py2)s {%(py2)s = %(py0)s.etype } == %(py4)supy2uappupy0u NameErrorupy4uuassert %(py6)supy6cSs t|S(N(ureraise(ue((u6/home/prologic/work/circuits/tests/core/test_errors.pyu9suUassert %(py6)s {%(py6)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.etraceback }, %(py4)s) }upy3upy1u isinstanceulistuI%(py2)s {%(py2)s = %(py0)s.handler } == %(py6)s {%(py6)s = %(py4)s.test }uassert %(py8)supy8u.%(py2)s {%(py2)s = %(py0)s.fevent } == %(py4)sue(u==(u-%(py2)s {%(py2)s = %(py0)s.etype } == %(py4)suassert %(py6)s(u==(uI%(py2)s {%(py2)s = %(py0)s.handler } == %(py6)s {%(py6)s = %(py4)s.test }uassert %(py8)s(u==(u.%(py2)s {%(py2)s = %(py0)s.fevent } == %(py4)suassert %(py6)s(utestufireuwaituetypeu NameErroru @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneupytesturaisesuevalueu etracebacku isinstanceulistuhandlerufevent( uappuwatcherueu @py_assert1u @py_assert3u @py_format5u @py_format7u @py_assert2u @py_assert5u @py_format9((u6/home/prologic/work/circuits/tests/core/test_errors.pyu test_main3s@         (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsuEventu ComponentutestuAppureraiseufixtureuappu test_main(((u6/home/prologic/work/circuits/tests/core/test_errors.pyus    circuits-3.1.0/tests/core/__pycache__/test_globals.cpython-26-PYTEST.pyc0000644000014400001440000001175312407376150027004 0ustar prologicusers00000000000000 ?Tc@sddkZddkiiZddklZlZl Z defdYZ defdYZ de fdYZ d e fd YZ d Zd Zd ZdS(iN(thandlertEventt ComponenttfoocBseZdZRS(s foo Event(t__name__t __module__t__doc__(((s7/home/prologic/work/circuits/tests/core/test_globals.pyRsttestcBseZdZRS(s test Event(RRR(((s7/home/prologic/work/circuits/tests/core/test_globals.pyR stAcBs/eZdZdZedddZRS(tacCsdS(Ns Hello World!((tself((s7/home/prologic/work/circuits/tests/core/test_globals.pyRstpriorityg?cOsdS(NtFoo((R teventtargstkwargs((s7/home/prologic/work/circuits/tests/core/test_globals.pyt _on_events(RRtchannelRRR(((s7/home/prologic/work/circuits/tests/core/test_globals.pyRs tBcBs&eZedddddZRS(R g$@Rt*cOsdS(NtBar((R R RR((s7/home/prologic/work/circuits/tests/core/test_globals.pyt _on_channels(RRRR(((s7/home/prologic/work/circuits/tests/core/test_globals.pyRscCsDtt}x|o|iqW|itd}x|o|iqAW|id}d}||j}|potid|fd||fhti|d6ti|d6}dh|d 6}t ti |nd}}}|id }d }||j}|potid|fd||fhti|d6ti|d6}dh|d 6}t ti |nd}}}|id }d }||j}|potid|fd||fhti|d6ti|d6}dh|d 6}t ti |nd}}}dS(NR iRs==s%(py1)s == %(py4)stpy1tpy4sassert %(py6)stpy6iR is Hello World!(s==(s%(py1)s == %(py4)s(s==(s%(py1)s == %(py4)s(s==(s%(py1)s == %(py4)s( RRtflushtfireRtvaluet @pytest_art_call_reprcomparet _safereprtAssertionErrort_format_explanationtNone(tapptxt @py_assert0t @py_assert3t @py_assert2t @py_format5t @py_format7((s7/home/prologic/work/circuits/tests/core/test_globals.pyt test_main!s@  E  E  EcCsGtt}x|o|iqWt}|i|}x|o|iqDW|id}d}||j}|potid |fd||fhti|d6ti|d6}dh|d6}t ti |nd}}}|id }d }||j}|potid|fd||fhti|d6ti|d6}dh|d6}t ti |nd}}}|id }d }||j}|potid|fd||fhti|d6ti|d6}dh|d6}t ti |nd}}}dS(NiRs==s%(py1)s == %(py4)sRRsassert %(py6)sRiR is Hello World!(s==(s%(py1)s == %(py4)s(s==(s%(py1)s == %(py4)s(s==(s%(py1)s == %(py4)s( RRRRRRRRRRR R!(R"teR#R$R%R&R'R(((s7/home/prologic/work/circuits/tests/core/test_globals.pyt test_event/sB   E  E  EcCs:tt}x|o|iqWt}|i|d}x|o|iqGW|i}d}||j}|ptid |fd ||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}dS( NtbRs==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sR#tpy0tpy2tpy5sassert %(py7)stpy7(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)s(RRRRRRRRt @py_builtinstlocalst_should_repr_global_nameRRR R!(R"R*R#t @py_assert1t @py_assert4R%t @py_format6t @py_format8((s7/home/prologic/work/circuits/tests/core/test_globals.pyt test_channel>s"   (t __builtin__R1t_pytest.assertion.rewritet assertiontrewriteRtcircuitsRRRRRRRR)R+R8(((s7/home/prologic/work/circuits/tests/core/test_globals.pyts    circuits-3.1.0/tests/core/__pycache__/test_imports.cpython-32-PYTEST.pyc0000644000014400001440000000265412414363275027055 0ustar prologicusers00000000000000l ?Tc@s;ddlZddljjZddlmZdZdS(iN(u BaseComponentc Csy ddlm}t|t}|sddidtjksStjtrbtjtndd6dtjkstj|rtj|ndd6d tjkstjtrtjtnd d 6tj|d 6}t tj |nd}Wnqt k r}dsydid tjksGtjdrVtjdnd d 6}t tj |nYnXdS(Ni(u BasePolleruu5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }u BaseComponentupy2u BasePollerupy1u issubclassupy0upy4uassert %(py0)suFalseFuassert %(py0)s(ucircuits.core.pollersu BasePolleru issubclassu BaseComponentu @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneu ImportErroruFalse(u BasePolleru @py_assert3u @py_format5u @py_format1((u7/home/prologic/work/circuits/tests/core/test_imports.pyutests  A( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuits.core.componentsu BaseComponentutest(((u7/home/prologic/work/circuits/tests/core/test_imports.pyus circuits-3.1.0/tests/core/__pycache__/test_worker_process.cpython-33-PYTEST.pyc0000644000014400001440000001361112414363411030413 0ustar prologicusers00000000000000 ?Tc@sdZddlZddljjZddlZddlm Z ddl m Z m Z ej ddddZd d Zd d Zd dZddZddZddZddZdS(u Workers TestsiN(ugetpid(utaskuWorkeruscopeumodulecs5tj|fdd}|j|S(NcsjdS(N(u unregister((uworker(u>/home/prologic/work/circuits/tests/core/test_worker_process.pyu finalizersuworker..finalizer(uWorkeruregisteru addfinalizer(urequestumanageru finalizer((uworkeru>/home/prologic/work/circuits/tests/core/test_worker_process.pyuworkers uworkercCstdS(Ni(ux(((u>/home/prologic/work/circuits/tests/core/test_worker_process.pyuerrsuerrcCs7d}d}x$|dkr2|d7}|d7}qW|S(Nii@Bi((uxui((u>/home/prologic/work/circuits/tests/core/test_worker_process.pyufoos  ufoocCsdjtS(NuHello from {0:d}(uformatugetpid(((u>/home/prologic/work/circuits/tests/core/test_worker_process.pyupid'supidcCs||S(N((uaub((u>/home/prologic/work/circuits/tests/core/test_worker_process.pyuadd+suaddc Cstt}d|_|j|}|j}d}||}|sdditj|d6dtj kstj |rtj|ndd6tj|d6tj|d6}t tj |nd}}}|jd }t|t} | sdd id tj ks-tj tr<tjtnd d 6tj|d6d tj ksttj trtjtnd d6tj| d6} t tj | nd}} dS(Nu task_failureuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4iu5assert %(py5)s {%(py5)s = %(py0)s(%(py2)s, %(py3)s) }u Exceptionupy3u isinstanceupy5T(utaskuerruTrueufailureufireuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu isinstanceu Exception( umanageruwatcheruworkerueuxu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_assert4u @py_format6((u>/home/prologic/work/circuits/tests/core/test_worker_process.pyu test_failure/s     u u test_failurec Cstt}d|_|j|}|j}d}||}|sdditj|d6dtj kstj |rtj|ndd6tj|d6tj|d6}t tj |nd}}}|j}d } || k}|stjd|fd|| fitj|d6d tj ksStj |rbtj|nd d6tj| d 6} di| d6} t tj | nd}}} dS(Nu task_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4i@Bu==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suxupy5uassert %(py7)supy7T(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(utaskufoouTrueusuccessufireuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( umanageruwatcheruworkerueuxu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_assert4u @py_format6u @py_format8((u>/home/prologic/work/circuits/tests/core/test_worker_process.pyu test_success:s$    u  |u test_successc Csttdd}d|_|j|}|j}d}||}|sdditj|d6dtj kstj |rtj|ndd6tj|d 6tj|d 6}t tj |nd}}}|j}d } || k}|stjd|fd|| fitj|d6dtj ksYtj |rhtj|ndd6tj| d6} di| d6} t tj | nd}}} dS(Niiu task_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4iu==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suxupy5uassert %(py7)supy7T(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(utaskuadduTrueusuccessufireuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( umanageruwatcheruworkerueuxu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_assert4u @py_format6u @py_format8((u>/home/prologic/work/circuits/tests/core/test_worker_process.pyu test_argsEs$   u  |u test_args(u__doc__ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuosugetpiducircuitsutaskuWorkerufixtureuworkeruerrufooupiduaddu test_failureu test_successu test_args(((u>/home/prologic/work/circuits/tests/core/test_worker_process.pyus      circuits-3.1.0/tests/core/__pycache__/test_channel_selection.cpython-32-PYTEST.pyc0000644000014400001440000001102512414363275031025 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlmZmZm Z GddeZ GddeZ GddeZ Gd d eZ Gd d eZd ZdS(iN(uEventu ComponentuManagercBs|EeZdZdZdS(u foo EventuaN(ua(u__name__u __module__u__doc__uchannels(u __locals__((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyufoos ufoocBs|EeZdZdS(u bar EventN(u__name__u __module__u__doc__(u __locals__((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyubar s ubarcBs|EeZdZdZdS(uacCsdS(NuFoo((uself((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyufoosN(u__name__u __module__uchannelufoo(u __locals__((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyuAs uAcBs|EeZdZdZdS(ubcCsdS(Nu Hello World!((uself((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyufoosN(u__name__u __module__uchannelufoo(u __locals__((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyuBs uBcBs&|EeZdZdZdZdS(uccCs|jtS(N(ufireubar(uself((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyufoo$scCsdS(NuBar((uself((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyubar'sN(u__name__u __module__uchannelufooubar(u __locals__((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyuC s  uCc Cstttt}x|r4|jq!W|jt}|j|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}di|d 6}ttj|nd}}}|jtd }|j|j}d }||k}|s tj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}di|d 6}ttj|nd}}}|jtd d }|j|j}dd g}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}di|d 6}ttj|nd}}}|jtd}|j|j|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}di|d 6}ttj|nd}}}dS(NuFoou==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2uxupy0upy5uuassert %(py7)supy7ubu Hello World!uaucuBar(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(uManageruAuBuCuflushufireufoouvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(umuxu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyutest+sX    |   |  |    |(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsuEventu ComponentuManagerufooubaruAuBuCutest(((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyus  circuits-3.1.0/tests/core/__pycache__/test_bridge.cpython-33-PYTEST.pyc0000644000014400001440000000741412414363410026603 0ustar prologicusers00000000000000 +Tc@sddlZddljjZddlZejdkrIejdnej dddl m Z ddl m Z mZGdddeZGd d d e Zd d ZdS( iNuwin32uUnsupported Platformumultiprocessing(ugetpid(u ComponentuEventcBs|EeZdZdZdS(uhellou hello EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u6/home/prologic/work/circuits/tests/core/test_bridge.pyuhellosuhellocBs |EeZdZddZdS(uAppcCsdjtS(NuHello from {0:d}(uformatugetpid(uself((u6/home/prologic/work/circuits/tests/core/test_bridge.pyuhellosu App.helloN(u__name__u __module__u __qualname__uhello(u __locals__((u6/home/prologic/work/circuits/tests/core/test_bridge.pyuAppsuAppc Cst}|jddd|\}}|j}d}d}||d|}|sdditj|d6d tjkstj|rtj|nd d 6tj|d 6tj|d 6tj|d 6} t tj | nd}}}}|j t } tj}d} || | } | sddidtjksdtj| rstj| ndd6tj|d6dtjkstjtrtjtndd 6tj| d6tj| d6} t tj | nd}} } | j}d} | j} |j}| |}||k}|sVtjd|fd ||fitj|d6tj|d6dtjkstj| rtj| ndd 6tj| d6tj| d6tj|d6dtjkstj|r"tj|ndd 6}d!i|d6}t tj |nd}}} } }}|j|j|j|jddS("NuprocessulinkureadyiutimeoutuuWassert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, timeout=%(py6)s) }upy2uwatcherupy0upy6upy8upy4uresultuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uxupy3upytestupy7upy5uHello from {0:d}u==u%(py2)s {%(py2)s = %(py0)s.value } == %(py12)s {%(py12)s = %(py7)s {%(py7)s = %(py5)s.format }(%(py10)s {%(py10)s = %(py8)s.pid }) }upy12upy10uappuassert %(py14)supy14u unregisteredT(u==(u%(py2)s {%(py2)s = %(py0)s.value } == %(py12)s {%(py12)s = %(py7)s {%(py7)s = %(py5)s.format }(%(py10)s {%(py10)s = %(py8)s.pid }) }uassert %(py14)s(uAppustartuTrueuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneufireuhelloupytestuwait_foruvalueuformatupidu_call_reprcompareustopujoinu unregister(umanageruwatcheruappuprocessubridgeu @py_assert1u @py_assert3u @py_assert5u @py_assert7u @py_format9uxu @py_assert4u @py_assert6u @py_format8u @py_assert9u @py_assert11u @py_format13u @py_format15((u6/home/prologic/work/circuits/tests/core/test_bridge.pyutestsB        utest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuPLATFORMuskipu importorskipuosugetpiducircuitsu ComponentuEventuhellouApputest(((u6/home/prologic/work/circuits/tests/core/test_bridge.pyus   circuits-3.1.0/tests/core/__pycache__/test_bridge.cpython-32-PYTEST.pyc0000644000014400001440000000725112414363275026612 0ustar prologicusers00000000000000l +Tc@sddlZddljjZddlZejdkrIejdnej dddl m Z ddl m Z mZGddeZGd d e Zd ZdS( iNuwin32uUnsupported Platformumultiprocessing(ugetpid(u ComponentuEventcBs|EeZdZdS(u hello EventN(u__name__u __module__u__doc__(u __locals__((u6/home/prologic/work/circuits/tests/core/test_bridge.pyuhellos uhellocBs|EeZdZdS(cCsdjtS(NuHello from {0:d}(uformatugetpid(uself((u6/home/prologic/work/circuits/tests/core/test_bridge.pyuhellosN(u__name__u __module__uhello(u __locals__((u6/home/prologic/work/circuits/tests/core/test_bridge.pyuApps uAppc Cst}|jddd|\}}|j}d}d}||d|}|sdditj|d6d tjkstj|rtj|nd d 6tj|d 6tj|d 6tj|d 6} t tj | nd}}}}|j t } tj}d} || | } | sddidtjksdtj| rstj| ndd6tj|d6dtjkstjtrtjtndd 6tj| d6tj| d6} t tj | nd}} } | j}d} | j} |j}| |}||k}|sVtjd|fd ||fitj|d6tj|d6tj|d6dtjkstj| rtj| ndd 6tj| d6tj| d6dtjkstj|r"tj|ndd 6}d!i|d6}t tj |nd}}} } }}|j|j|j|jddS("NuprocessulinkureadyiutimeoutuuWassert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, timeout=%(py6)s) }upy2uwatcherupy0upy6upy8upy4uresultuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uxupy3upytestupy7upy5uHello from {0:d}u==u%(py2)s {%(py2)s = %(py0)s.value } == %(py12)s {%(py12)s = %(py7)s {%(py7)s = %(py5)s.format }(%(py10)s {%(py10)s = %(py8)s.pid }) }upy10upy12uappuassert %(py14)supy14u unregisteredT(u==(u%(py2)s {%(py2)s = %(py0)s.value } == %(py12)s {%(py12)s = %(py7)s {%(py7)s = %(py5)s.format }(%(py10)s {%(py10)s = %(py8)s.pid }) }uassert %(py14)s(uAppustartuTrueuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneufireuhelloupytestuwait_foruvalueuformatupidu_call_reprcompareustopujoinu unregister(umanageruwatcheruappuprocessubridgeu @py_assert1u @py_assert3u @py_assert5u @py_assert7u @py_format9uxu @py_assert4u @py_assert6u @py_format8u @py_assert9u @py_assert11u @py_format13u @py_format15((u6/home/prologic/work/circuits/tests/core/test_bridge.pyutestsB        (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuPLATFORMuskipu importorskipuosugetpiducircuitsu ComponentuEventuhellouApputest(((u6/home/prologic/work/circuits/tests/core/test_bridge.pyus   circuits-3.1.0/tests/core/__pycache__/test_worker_thread.cpython-26-PYTEST.pyc0000644000014400001440000001101112407376151030205 0ustar prologicusers00000000000000 ?Tc@sdZddkZddkiiZddkZddkl Z l Z ei dddZ dZ dZd Zd ZdS( s Workers TestsiN(ttasktWorkertscopetmodulecstfd}|i||iiio$ddkl}|inti d}i |i }|}|p}dhdt i jpti|oti|ndd6ti|d6ti|d 6}tti|nd}}S( NcsidS(N(tstop((tworker(s=/home/prologic/work/circuits/tests/core/test_worker_thread.pyt finalizersi(tDebuggertstarteds?assert %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.wait }() }twaitertpy0tpy2tpy4(Rt addfinalizertconfigtoptiontverbosetcircuitsRtregistertpytestt WaitEventtstarttwaitt @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(trequestRRR t @py_assert1t @py_assert3t @py_format5((Rs=/home/prologic/work/circuits/tests/core/test_worker_thread.pyR s    d cCs9d}d}x&|djo|d7}|d7}qW|S(Nii@Bi((txti((s=/home/prologic/work/circuits/tests/core/test_worker_thread.pytf s  cCs||S(N((tatb((s=/home/prologic/work/circuits/tests/core/test_worker_thread.pytadd)sc Cso|itt}ti}d}|||}|pdhdtijptitoti tndd6dtijpti|oti |ndd6ti |d6ti |d6ti |d 6}t ti |nd}}}|i }|pmd hdtijpti|oti |ndd6ti |d6}t ti |nd}|i}d }||j}|ptid|fd||fhdtijpti|oti |ndd6ti |d6ti |d6}dh|d 6}t ti |nd}}}dS(NtresultsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }RR R#tpy3R tpy5tpy7s*assert %(py2)s {%(py2)s = %(py0)s.result }i@Bs==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)s(tfireRR%Rtwait_forRRRRRRRRR)tvaluet_call_reprcompare( RR#R t @py_assert4t @py_assert6t @py_format8t @py_format3R!t @py_format6((s=/home/prologic/work/circuits/tests/core/test_worker_thread.pyttest-s*  T  c Csu|ittdd}ti}d}|||}|pdhdtijptitoti tndd6dtijpti|oti |ndd6ti |d 6ti |d 6ti |d 6}t ti |nd}}}|i }|pmd hdtijpti|oti |ndd6ti |d 6}t ti |nd}|i}d }||j}|ptid|fd||fhdtijpti|oti |ndd6ti |d 6ti |d 6}dh|d 6}t ti |nd}}}dS(NiiR)sSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }RR R#R*R R+R,s*assert %(py2)s {%(py2)s = %(py0)s.result }is==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)s(R-RR(RR.RRRRRRRRR)R/R0( RR#R R1R2R3R4R!R5((s=/home/prologic/work/circuits/tests/core/test_worker_thread.pyt test_args6s*  T  (t__doc__t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRRRRRtfixtureRR%R(R6R7(((s=/home/prologic/work/circuits/tests/core/test_worker_thread.pyts    circuits-3.1.0/tests/core/__pycache__/test_generator_value.cpython-26-PYTEST.pyc0000644000014400001440000000610412407376150030535 0ustar prologicusers00000000000000 ?Tc@sddkZddkiiZddklZlZdefdYZ defdYZ defdYZ d Z d Z dS( iN(tEventt ComponentttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s?/home/prologic/work/circuits/tests/core/test_generator_value.pyRsthellocBseZdZRS(s hello Event(RRR(((s?/home/prologic/work/circuits/tests/core/test_generator_value.pyR stAppcBseZdZdZRS(cCsd}|S(Ncssxto dVqWdS(NtHello(tTrue(((s?/home/prologic/work/circuits/tests/core/test_generator_value.pytfs((tselfR ((s?/home/prologic/work/circuits/tests/core/test_generator_value.pyRs ccsdVdVdS(NsHello sWorld!((R ((s?/home/prologic/work/circuits/tests/core/test_generator_value.pyRs(RRRR(((s?/home/prologic/work/circuits/tests/core/test_generator_value.pyRs cCst}x|o|iq W|it}|i|i|i}d}||j}|ptid |fd ||fhdti jpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}dS( NRs==s%(py0)s == %(py3)stxtpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(RtflushtfireRtticktvaluet @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(tapptvR t @py_assert2t @py_assert1t @py_format4t @py_format6((s?/home/prologic/work/circuits/tests/core/test_generator_value.pyttest_return_generators     ocCs!t}x|o|iq W|it}|i|i|i|i}ddg}||j}|ptid |fd ||fhdti jpti |oti |ndd6ti |d6}dh|d 6}t ti |nd}}dS( NsHello sWorld!s==s%(py0)s == %(py3)sR R Rsassert %(py5)sR(s==(s%(py0)s == %(py3)s(RRRRRRRRRRRRRRR(RRR RR R!R"((s?/home/prologic/work/circuits/tests/core/test_generator_value.pyt test_yield(s       o(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtcircuitsRRRRRR#R$(((s?/home/prologic/work/circuits/tests/core/test_generator_value.pyts  circuits-3.1.0/tests/core/__pycache__/test_debugger.cpython-32-PYTEST.pyc0000644000014400001440000004520012414363275027136 0ustar prologicusers00000000000000l ?TEc @s dZddlZddljjZddlZddlZyddl m Z Wn"e k rtddl m Z YnXddl m Z ddlmZmZGddeZGdd eZGd d eZd Zd ZdZdZdZdZdZdZdS(uDebugger TestsiN(uStringIO(uDebugger(uEventu ComponentcBs|EeZdZdS(u test EventN(u__name__u __module__u__doc__(u __locals__((u8/home/prologic/work/circuits/tests/core/test_debugger.pyutests utestcBs|EeZddZdS(cCs|rtndS(N(u Exception(uselfuraiseException((u8/home/prologic/work/circuits/tests/core/test_debugger.pyutestsNF(u__name__u __module__uFalseutest(u __locals__((u8/home/prologic/work/circuits/tests/core/test_debugger.pyuApps uAppcBs,|EeZdZdZdZdZdS(cCs ||_dS(N(u error_msg(uselfumsg((u8/home/prologic/work/circuits/tests/core/test_debugger.pyuerror$scCs ||_dS(N(u debug_msg(uselfumsg((u8/home/prologic/work/circuits/tests/core/test_debugger.pyudebug'sN(u__name__u __module__uNoneu error_msgu debug_msguerrorudebug(u __locals__((u8/home/prologic/work/circuits/tests/core/test_debugger.pyuLoggers  uLoggerc Cst}t}td|}|j|x|rD|jq1W|jd|j|j}|sdditj |d6dt j kstj |rtj |ndd6}t tj|nd}t}|j||j|jd|jj}t|}||k}|s>tjd|fd||fid t j ks}tj |rtj |nd d 6d t j kstj trtj tnd d6d t j kstj |rtj |nd d6tj |d6}di|d6} t tj| nd}}|jd|jd|_|j}| } | sdditj |d6dt j kstj |rtj |ndd6} t tj| nd}} t}|j||jd|jj}d} || k}|stjd|fd|| fitj | d 6d t j kstj |rtj |nd d6} di| d6}t tj|nd}} |jd|jdS(Nufileiuu+assert %(py2)s {%(py2)s = %(py0)s._events }upy2udebuggerupy0u==u0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }ueupy3ustrusupy5uassert %(py7)supy7u/assert not %(py2)s {%(py2)s = %(py0)s._events }u%(py0)s == %(py3)suassert %(py5)s(u==(u0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }uassert %(py7)sF(u==(u%(py0)s == %(py3)suassert %(py5)s(uAppuStringIOuDebuggeruregisteruflushuseekutruncateu_eventsu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuEventufireureadustripustru_call_reprcompareuFalse( uappustderrudebuggeru @py_assert1u @py_format3ueusu @py_assert4u @py_format6u @py_format8u @py_assert3u @py_format4u @py_assert2((u8/home/prologic/work/circuits/tests/core/test_debugger.pyu test_main+s^       U          U     l  c Cst|jd}t|d}t}td|}|j|x|r_|jqLW|jd|j|j }|sddit j |d6dt j kst j|rt j |ndd 6}tt j|nd}t}|j||j|jd|jj}t|} || k}|sYt jd|fd|| fid t j kst j|rt j |nd d 6dt j kst jtrt j tndd6dt j kst j|rt j |ndd 6t j | d6} di| d6} tt j| nd}} |jd|jd|_ |j }| } | sddit j |d6dt j kst j|rt j |ndd 6} tt j| nd}} t}|j||jd|jj}d}||k}|st jd|fd||fit j |d 6dt j kst j|rt j |ndd 6} di| d6} tt j| nd}}|jd|jdS(Nu debug.loguw+ufileiuu+assert %(py2)s {%(py2)s = %(py0)s._events }upy2udebuggerupy0u==u0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }ueupy3ustrusupy5uassert %(py7)supy7u/assert not %(py2)s {%(py2)s = %(py0)s._events }u%(py0)s == %(py3)suassert %(py5)s(u==(u0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }uassert %(py7)sF(u==(u%(py0)s == %(py3)suassert %(py5)s(ustruensureuopenuAppuDebuggeruregisteruflushuseekutruncateu_eventsu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuEventufireureadustripu_call_reprcompareuFalse(utmpdirulogfileustderruappudebuggeru @py_assert1u @py_format3ueusu @py_assert4u @py_format6u @py_format8u @py_assert3u @py_format4u @py_assert2((u8/home/prologic/work/circuits/tests/core/test_debugger.pyu test_fileMs`      U          U     l  c Cs6dtjkrtjdnt|jd}t|d}t}td|}|j |x|r~|j qkW|j d|j |j }|sdditj|d 6d tjkstj|rtj|nd d 6}ttj|nd}t}|j||j |j d|jj}t|} || k}|sxtjd|fd|| fidtjkstj|rtj|ndd6dtjkstjtrtjtndd 6dtjks%tj|r4tj|ndd 6tj| d6} di| d6} ttj| nd}} |j d|j d|_ |j }| } | s%dditj|d 6d tjkstj|rtj|nd d 6} ttj| nd}} t}|j||j d|jj}d}||k}|stjd|fd||fitj|d6dtjkstj|rtj|ndd 6} di| d6} ttj| nd}}|j d|j dS(Nu__pypy__uBroken on pypyu debug.logur+ufileiuu+assert %(py2)s {%(py2)s = %(py0)s._events }upy2udebuggerupy0u==u0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }ueupy3ustrusupy5uassert %(py7)supy7u/assert not %(py2)s {%(py2)s = %(py0)s._events }u%(py0)s == %(py3)suassert %(py5)s(u==(u0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }uassert %(py7)sF(u==(u%(py0)s == %(py3)suassert %(py5)s(usysumodulesupytestuskipustruensureuopenuAppuDebuggeruregisteruflushuseekutruncateu_eventsu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuEventufireureadustripu_call_reprcompareuFalse(utmpdirulogfileustderruappudebuggeru @py_assert1u @py_format3ueusu @py_assert4u @py_format6u @py_format8u @py_assert3u @py_format4u @py_assert2((u8/home/prologic/work/circuits/tests/core/test_debugger.pyu test_filenamersd      U          U     l  cCst}t}td|}|j|x|rD|jq1W|jd|j|j}|sdditj |d6dt j kstj |rtj |ndd6}t tj|nd}|j}|sZdditj |d6dt j ks(tj |r7tj |ndd6}t tj|nd}td d}|j||j|jd|jj}t|}||k}|stjd|fd||fid t j kstj |rtj |nd d 6dt j ks<tj trKtj tndd6dt j ksstj |rtj |ndd6tj |d6}di|d6} t tj| nd}}|jd|j|j|jd|jj}|j}d} || } | sdditj |d6dt j ksltj |r{tj |ndd6tj | d6tj | d6} t tj| nd}} } |jd|jd|_d|_|j}| } | sxdditj |d6dt j ksFtj |rUtj |ndd6} t tj| nd}} |j}| } | sdditj |d6dt j kstj |rtj |ndd6} t tj| nd}} td d}|j||j|jd|jj}d}||k}|stjd |fd!||fitj |d 6dt j kstj |rtj |ndd6} d"i| d6}t tj|nd}}|jd|j|j|jd|jj}d}||k}|stjd#|fd$||fitj |d 6dt j kstj |rtj |ndd6} d%i| d6}t tj|nd}}dS(&Nufileiuu+assert %(py2)s {%(py2)s = %(py0)s._events }upy2udebuggerupy0u+assert %(py2)s {%(py2)s = %(py0)s._errors }uraiseExceptionu==u0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }ueupy3ustrusupy5uassert %(py7)supy7u (uukassert %(py8)s {%(py8)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error_msg }.startswith }(%(py6)s) }upy2upy0upy6upy8upy4T(uAppuLoggeruDebuggeruregisteruflushutestuTrueufireu error_msgu startswithu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone( uappuloggerudebuggerueu @py_assert1u @py_assert3u @py_assert5u @py_assert7u @py_format9((u8/home/prologic/work/circuits/tests/core/test_debugger.pyutest_Logger_error"s$        (u__doc__ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arusysupytestuStringIOu ImportErroruioucircuitsuDebuggeru circuits.coreuEventu ComponentutestuAppuobjectuLoggeru test_mainu test_fileu test_filenameutest_exceptionsutest_IgnoreEventsutest_IgnoreChannelsutest_Logger_debugutest_Logger_error(((u8/home/prologic/work/circuits/tests/core/test_debugger.pyus*     " % ( 4 # " circuits-3.1.0/tests/core/__pycache__/test_signals.cpython-34-PYTEST.pyc0000644000014400001440000000655712414363521027022 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlZddlZddlZddl m Z ddl m Z ddl mZddlmZmZddlmZddlmZd d Zd d d ZddZdS)N)sleep)ESRCH)SIGTERM)killremove)Popen) signalappcCsPyt|dWn8tk rK}z|jtkr9dSWYdd}~XnXdS)NrFT)rOSErrorerrnor)piderrorr7/home/prologic/work/circuits/tests/core/test_signals.py is_runnings rcCs-|}x t|r(|r(tdq WdS)Nr)rr)r timeoutcountrrrwaitsrc Cs$tjdkstjdn|jd|jdt|jd}t|jd}tjt j ||g}dj|}t |dddid jtj d 6}|j }d }||k}|sntjd"|fd#||fitj|d6dtjks+tj|r:tj|ndd6} d$i| d6} ttj| nt}}tdtj }|j} | |} | sjddidtjkstj|rtj|ndd6tj|d6tj| d6dtjks(tjtr7tjtndd6tj| d6} ttj| nt}} } tj }|j} | |} | s`ddidtjkstj|rtj|ndd6tj|d6tj| d6dtjkstjtr-tjtndd6tj| d6} ttj| nt}} } t|d}t|jj}|jt|t t |t|d}|jj}|jtt }||k}|stjd%|fd&||fitj|d6dtjksQtjtr`tjtndd6dtjkstjt rtjt ndd6d tjkstj|rtj|nd d6} d'i| d6} ttj| nt}}t!|t!|dS)(Nposixz(Cannot run test on a non-POSIX platform.z.pidz.signal shellTenv: PYTHONPATHr==%(py0)s == %(py3)spy3statuspy0assert %(py5)spy5rzbassert %(py7)s {%(py7)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.path }.exists }(%(py5)s) }pidfilepy2py7ospy4zbassert %(py7)s {%(py7)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.path }.isfile }(%(py5)s) }r0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }strrsignalassert %(py7)s)r)rr!)r)r)r,)"r&namepytestskipensurer*joinsys executabler __file__rpathr @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonerexistsisfileopenintreadstripcloserrr)tmpdirr#Z signalfileargscmdpr @py_assert2 @py_assert1 @py_format4 @py_format6 @py_assert3 @py_assert6 @py_format8fr r+ @py_assert4rrrtest"sb  +  l           rS)builtinsr9_pytest.assertion.rewrite assertionrewriter6r.r&r2timerr rr+rrr subprocessrr r rrrSrrrrs     circuits-3.1.0/tests/core/__pycache__/test_call_wait_order.cpython-26-PYTEST.pyc0000644000014400001440000000750012407376150030506 0ustar prologicusers00000000000000 ?Tc @sddkZddkiiZddkZddklZlZddk l Z l Z ddk l Z l Z ddk lZlZlZdefdYZddZd efd YZeid d d ZdZdS(iN(tsleepttime(trandomtseed(ttasktWorker(thandlert ComponenttEventthellocBseZdZeZRS(s hello Event(t__name__t __module__t__doc__tTruetsuccess(((s?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyR scCstt|S(N(RR(tx((s?/home/prologic/work/circuits/tests/core/test_call_wait_order.pytprocesss tAppcBseZeddZRS(R ccsNttd}|ittd|ittd|i|VVdS(Niii(RRtfiretcall(tselfte1((s?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyt _on_hellos(R R RR(((s?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyRstscopetmodulecsttti||i}d}||}|pdhdtijpti|oti |ndd6ti |d6ti |d6ti |d6}t ti |nd}}}t i||i}d}||}|pdhdtijpti|oti |ndd6ti |d6ti |d6ti |d6}t ti |nd}}}fd}|i|S( Nt registeredsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }twatchertpy0tpy2tpy4tpy6csiidS(N(t unregister((tworkertapp(s?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyt finalizer-s (RRRtregistertwaitt @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNoneRt addfinalizer(trequesttmanagerRt @py_assert1t @py_assert3t @py_assert5t @py_format7R"((R!R s?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyR!#s(   t  t c Cs|it}|i}d}||}|pdhdtijpti|oti|ndd6ti|d6ti|d6ti|d6}tti |nd}}}|i }d} || j}|pti d|fd|| fhd tijpti|oti|nd d6ti| d 6} d h| d6} tti | nd}} dS(Nt hello_successsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRRRis==s%(py0)s == %(py3)stvaluetpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s( RR R$R%R&R'R(R)R*R+R,R5t_call_reprcompare( R/RR!RR0R1R2R3R5t @py_assert2t @py_format4t @py_format6((s?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyttest_call_order6s   t  o(t __builtin__R%t_pytest.assertion.rewritet assertiontrewriteR'tpytestRRRRt circuits.coreRRRRRR R,RRtfixtureR!R<(((s?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyts    circuits-3.1.0/tests/core/__pycache__/test_component_repr.cpython-26-PYTEST.pyc0000644000014400001440000001231312407376150030404 0ustar prologicusers00000000000000 ?T{c @sdZddkZddkiiZddkZyddkl Z Wn#e j oddkl Z nXddk l Z lZdefdYZde fd YZd Zd ZdS( s>Component Repr Tests Test Component's representation string. iN(tcurrent_thread(t currentThread(tEventt ComponenttAppcBseZdZRS(cOsdS(N((tselfteventtargstkwargs((s>/home/prologic/work/circuits/tests/core/test_component_repr.pyttests(t__name__t __module__R (((s>/home/prologic/work/circuits/tests/core/test_component_repr.pyRsR cBseZRS((R R (((s>/home/prologic/work/circuits/tests/core/test_component_repr.pyR scCs`dtitif}t}t|}d}||}||j}|ptid|fd||fhdti jpti |oti |ndd6dti jpti toti tndd6ti |d 6d ti jpti |oti |nd d 6ti |d 6}d h|d6}t ti |nd}}}}|itt|}d}||}||j}|ptid|fd||fhdti jpti |oti |ndd6dti jpti toti tndd6ti |d 6d ti jpti |oti |nd d 6ti |d 6}d h|d6}t ti |nd}}}}|it|}d}||}||j}|ptid|fd||fhdti jpti |oti |ndd6dti jpti toti tndd6ti |d 6d ti jpti |oti |nd d 6ti |d 6}d h|d6}t ti |nd}}}}dS(Ns%s:%sss==s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)tapptpy1treprtpy0tpy3tidtpy7tpy6sassert %(py10)stpy10s(s==(s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)(s==(s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)(s==(s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)(tostgetpidRtgetNameRRt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetfireR tflush(RR t @py_assert2t @py_assert5t @py_assert8t @py_assert4t @py_format9t @py_format11((s>/home/prologic/work/circuits/tests/core/test_component_repr.pyt test_mains>        cCsfdtitif}tdd}t|}d}||}||j}|ptid|fd||fhdti jpti |oti |ndd6d ti jpti toti tnd d 6ti |d 6d ti jpti |oti |nd d 6ti |d6}dh|d6}t ti |nd}}}}|itt|}d}||}||j}|ptid|fd||fhdti jpti |oti |ndd6d ti jpti toti tnd d 6ti |d 6d ti jpti |oti |nd d 6ti |d6}dh|d6}t ti |nd}}}}|it|}d}||}||j}|ptid|fd||fhdti jpti |oti |ndd6d ti jpti toti tnd d 6ti |d 6d ti jpti |oti |nd d 6ti |d6}dh|d6}t ti |nd}}}}dS(Ns%s:%stchanneliss==s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)R R RRRRRRsassert %(py10)sRs(ii(s==(s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)(s==(s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)(s==(s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)(RRRRRRRRRRRRRRR R!R R"(RR R#R$R%R&R'R(((s>/home/prologic/work/circuits/tests/core/test_component_repr.pyttest_non_str_channel+s>       (t__doc__t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRRt threadingRt ImportErrorRtcircuitsRRRR R)R+(((s>/home/prologic/work/circuits/tests/core/test_component_repr.pyts   circuits-3.1.0/tests/core/__pycache__/test_filters.cpython-27-PYTEST.pyc0000644000014400001440000000413412414363101027013 0ustar prologicusers00000000000000 ?Tc@ssddlZddljjZddlmZmZm Z defdYZ de fdYZ dZ dS(iN(thandlertEventt BaseComponentttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s7/home/prologic/work/circuits/tests/core/test_filters.pyRstAppcBs&eZeddZdZRS(RcCszdSWd|jXdS(Ns Hello World!(tstop(tselftevent((s7/home/prologic/work/circuits/tests/core/test_filters.pyt_on_test scCsdS(N((R ((s7/home/prologic/work/circuits/tests/core/test_filters.pyt _on_test2s(RRRR R (((s7/home/prologic/work/circuits/tests/core/test_filters.pyR scCst}x|r|jq W|jt}|j|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6tj|d6}d i|d 6}t tj |nd}}}dS(Ns Hello World!s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)stpy2txtpy0tpy5tsassert %(py7)stpy7(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(RtflushtfireRtvaluet @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(tappRt @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8((s7/home/prologic/work/circuits/tests/core/test_filters.pyt test_mains     |( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtcircuitsRRRRRR%(((s7/home/prologic/work/circuits/tests/core/test_filters.pyts  circuits-3.1.0/tests/core/__pycache__/test_core.cpython-32-PYTEST.pyc0000644000014400001440000000704312414363275026305 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlmZmZm Z GddeZ GddeZ e Z e Z e je xe re jqWdZdZdS( iN(uEventu ComponentuManagercBs|EeZdZdS(u test EventN(u__name__u __module__u__doc__(u __locals__((u4/home/prologic/work/circuits/tests/core/test_core.pyutests utestcBs)|EeZdZdZdZdS(cCsdS(Nu Hello World!((uself((u4/home/prologic/work/circuits/tests/core/test_core.pyutest scGsdS(N((uselfuargs((u4/home/prologic/work/circuits/tests/core/test_core.pyu unregisteredscGsdS(N((uselfuargs((u4/home/prologic/work/circuits/tests/core/test_core.pyuprepare_unregistersN(u__name__u __module__utestu unregistereduprepare_unregister(u __locals__((u4/home/prologic/work/circuits/tests/core/test_core.pyuApp s   uAppcCstjt}tj|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6tj|d6}d i|d 6}t tj |nd}}}dS(Nu Hello World!u==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2uxupy0upy5uuassert %(py7)supy7(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(umufireutestuflushuvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uxu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u4/home/prologic/work/circuits/tests/core/test_core.pyu test_fires   |cCsttk}|stjd |fd ttfidtjksTtjtrctjtndd6dtjkstjtrtjtndd6}di|d 6}ttj |nd}tt k}| }|stjd|fdtt fid tjks/tjt r>tjt nd d6dtjksftjtrutjtndd6}di|d 6}ttj |nd}}dS(Nuinu%(py0)s in %(py2)sumupy2uAppupy0uuassert %(py4)supy4uappuassert not %(py4)s(uin(u%(py0)s in %(py2)suassert %(py4)s(uin(u%(py0)s in %(py2)suassert not %(py4)s( uAppumu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuapp(u @py_assert1u @py_format3u @py_format5u @py_assert5u @py_format6((u4/home/prologic/work/circuits/tests/core/test_core.pyu test_contains$s  (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsuEventu ComponentuManagerutestuAppumuappuregisteruflushu test_fireu test_contains(((u4/home/prologic/work/circuits/tests/core/test_core.pyus      circuits-3.1.0/tests/core/__pycache__/test_component_targeting.cpython-33-PYTEST.pyc0000644000014400001440000000713212414363411031413 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZddlmZm Z Gddde Z GdddeZ ej ddd d Z d d ZdS( iN(u ComponentuEventcBs |EeZdZdZdZdS(uhellou hello EventNT(u__name__u __module__u __qualname__u__doc__uTrueusuccess(u __locals__((uC/home/prologic/work/circuits/tests/core/test_component_targeting.pyuhello suhellocBs&|EeZdZdZddZdS(uAppuappcCsdS(Nu Hello World!((uself((uC/home/prologic/work/circuits/tests/core/test_component_targeting.pyuhellosu App.helloN(u__name__u __module__u __qualname__uchanneluhello(u __locals__((uC/home/prologic/work/circuits/tests/core/test_component_targeting.pyuAppsuAppuscopeumodulecstj||j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj |nd}}}fd d }|j |S( Nu registereduuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4csjdS(N(u unregister((uapp(uC/home/prologic/work/circuits/tests/core/test_component_targeting.pyu finalizersuapp..finalizer( uAppuregisteruwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu addfinalizer(urequestumanageruwatcheru @py_assert1u @py_assert3u @py_assert5u @py_format7u finalizer((uappuC/home/prologic/work/circuits/tests/core/test_component_targeting.pyuapps  u uappc Cs|jt|}|j}d}||}|sdditj|d6dtjksqtj|rtj|ndd6tj|d6tj|d6}ttj |nd}}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksDtj|rStj|nd d6} di| d6} ttj | nd}} dS(Nu hello_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4u Hello World!u==u%(py0)s == %(py3)supy3uvalueuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s( ufireuhellouwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert2u @py_format4u @py_format6((uC/home/prologic/work/circuits/tests/core/test_component_targeting.pyutest$s   u  lutest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsu ComponentuEventuhellouAppufixtureuapputest(((uC/home/prologic/work/circuits/tests/core/test_component_targeting.pyus   circuits-3.1.0/tests/core/__pycache__/test_globals.cpython-27-PYTEST.pyc0000644000014400001440000001212612414363101026766 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZmZm Z defdYZ defdYZ de fdYZ d e fd YZ d Zd Zd ZdS(iN(thandlertEventt ComponenttfoocBseZdZRS(s foo Event(t__name__t __module__t__doc__(((s7/home/prologic/work/circuits/tests/core/test_globals.pyRsttestcBseZdZRS(s test Event(RRR(((s7/home/prologic/work/circuits/tests/core/test_globals.pyR stAcBs/eZdZdZedddZRS(tacCsdS(Ns Hello World!((tself((s7/home/prologic/work/circuits/tests/core/test_globals.pyRstpriorityg?cOsdS(NtFoo((R teventtargstkwargs((s7/home/prologic/work/circuits/tests/core/test_globals.pyt _on_events(RRtchannelRRR(((s7/home/prologic/work/circuits/tests/core/test_globals.pyRs tBcBs&eZedddddZRS(R g$@Rt*cOsdS(NtBar((R R RR((s7/home/prologic/work/circuits/tests/core/test_globals.pyt _on_channels(RRRR(((s7/home/prologic/work/circuits/tests/core/test_globals.pyRscCs:tt}x|r&|jqW|jtd}x|rR|jq?W|jd}d}||k}|stjd|fd||fitj|d6tj|d6}di|d 6}t tj |nd}}}|jd }d }||k}|stjd|fd||fitj|d6tj|d6}di|d 6}t tj |nd}}}|jd }d}||k}|s(tjd|fd||fitj|d6tj|d6}di|d 6}t tj |nd}}}dS(NR iRs==s%(py1)s == %(py4)stpy1tpy4tsassert %(py6)stpy6iR is Hello World!(s==(s%(py1)s == %(py4)ssassert %(py6)s(s==(s%(py1)s == %(py4)ssassert %(py6)s(s==(s%(py1)s == %(py4)ssassert %(py6)s( RRtflushtfireRtvaluet @pytest_art_call_reprcomparet _safereprtAssertionErrort_format_explanationtNone(tapptxt @py_assert0t @py_assert3t @py_assert2t @py_format5t @py_format7((s7/home/prologic/work/circuits/tests/core/test_globals.pyt test_main!s<    E  E  EcCs=tt}x|r&|jqWt}|j|}x|rU|jqBW|jd}d}||k}|stjd|fd||fitj|d6tj|d6}di|d 6}t tj |nd}}}|jd }d }||k}|stjd|fd||fitj|d6tj|d6}di|d 6}t tj |nd}}}|jd }d }||k}|s+tjd|fd||fitj|d6tj|d6}di|d 6}t tj |nd}}}dS(NiRs==s%(py1)s == %(py4)sRRRsassert %(py6)sRiR is Hello World!(s==(s%(py1)s == %(py4)ssassert %(py6)s(s==(s%(py1)s == %(py4)ssassert %(py6)s(s==(s%(py1)s == %(py4)ssassert %(py6)s( RRRRRRRRRR R!R"(R#teR$R%R&R'R(R)((s7/home/prologic/work/circuits/tests/core/test_globals.pyt test_event/s>     E  E  EcCs1tt}x|r&|jqWt}|j|d}x|rX|jqEW|j}d}||k}|stjd |fd ||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}dS(NtbRs==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)stpy2R$tpy0tpy5Rsassert %(py7)stpy7(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(RRRRRRRRRt @py_builtinstlocalst_should_repr_global_nameR R!R"(R#R+R$t @py_assert1t @py_assert4R&t @py_format6t @py_format8((s7/home/prologic/work/circuits/tests/core/test_globals.pyt test_channel>s     |(t __builtin__R2t_pytest.assertion.rewritet assertiontrewriteRtcircuitsRRRRRRRR*R,R9(((s7/home/prologic/work/circuits/tests/core/test_globals.pyts    circuits-3.1.0/tests/core/__pycache__/test_call_wait.cpython-33-PYTEST.pyc0000644000014400001440000004011012414363410027274 0ustar prologicusers00000000000000 ?TP c@sddlZddljjZddlZddlmZm Z m Z Gddde Z Gddde Z Gddde Z Gd d d e ZGd d d e ZGd dde ZGddde ZGddde ZGddde ZGddde ZGddde ZejddddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(ZdS()iN(uhandleru ComponentuEventcBs |EeZdZdZdZdS(uwaitu wait EventNT(u__name__u __module__u __qualname__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyuwaitsuwaitcBs |EeZdZdZdZdS(ucallu call EventNT(u__name__u __module__u __qualname__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyucall sucallcBs |EeZdZdZdZdS(u long_callulong_call EventNT(u__name__u __module__u __qualname__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu long_callsu long_callcBs |EeZdZdZdZdS(u long_waitulong_wait EventNT(u__name__u __module__u __qualname__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu long_waitsu long_waitcBs |EeZdZdZdZdS(u wait_returnuwait_return EventNT(u__name__u __module__u __qualname__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu wait_returnsu wait_returncBs |EeZdZdZdZdS(uhellou hello EventNT(u__name__u __module__u __qualname__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyuhello!suhellocBs |EeZdZdZdZdS(ufoou foo EventNT(u__name__u __module__u __qualname__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyufoo&sufoocBs |EeZdZdZdZdS(uget_xu get_x EventNT(u__name__u __module__u __qualname__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyuget_x+suget_xcBs |EeZdZdZdZdS(uget_yu get_y EventNT(u__name__u __module__u __qualname__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyuget_y0suget_ycBs |EeZdZdZdZdS(uevalu eval EventNT(u__name__u __module__u __qualname__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyueval5suevalcBs|EeZdZedddZedddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS(uAppuwaitccs,|jt}|jdV|jVdS(Nuhello(ufireuhellouwaituvalue(uselfux((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu_on_wait<su App._on_waitucallccs|jtV}|jVdS(N(ucalluhellouvalue(uselfux((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu_on_callBsu App._on_callcCsdS(Nu Hello World!((uself((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyuhelloGsu App.helloccs,|jt}|jdV|jVdS(Nufoo(ufireufoouwaituvalue(uselfux((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu long_waitJsu App.long_waitccs#|jt|jdVVdS(Nufoo(ufireufoouwait(uself((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu wait_returnOsuApp.wait_returnccs|jtV}|jVdS(N(ucallufoouvalue(uselfux((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu long_callSsu App.long_callccs#xtddD] }|VqWdS(Nii (urange(uselfui((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyufooWsuApp.foocCsdS(Ni((uself((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyuget_x[su App.get_xcCsdS(Ni((uself((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyuget_y^su App.get_yccs9|jtV}|jtV}|j|jVdS(N(ucalluget_xuget_yuvalue(uselfuxuy((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyuevalasuApp.evalN(u__name__u __module__u __qualname__uhandleru_on_waitu_on_calluhellou long_waitu wait_returnu long_callufoouget_xuget_yueval(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyuApp:s       uAppuscopeumodulecstj||j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj |nd}}}fd d }|j |S( Nu registereduuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4csjdS(N(u unregister((uapp(u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu finalizerlsuapp..finalizer( uAppuregisteruwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu addfinalizer(urequestumanageruwatcheru @py_assert1u @py_assert3u @py_assert5u @py_format7u finalizer((uappu9/home/prologic/work/circuits/tests/core/test_call_wait.pyuappgs  u uappc Cs|jt}|j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj|nd}}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksAtj|rPtj|nd d6} di| d6} ttj| nd}} dS(Nu wait_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4u Hello World!u==u%(py0)s == %(py3)supy3uvalueuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s( ufireuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert2u @py_format4u @py_format6((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyutest_wait_simplets   u  lutest_wait_simplec Cs|jt}|j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj |nd}}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksAtj|rPtj|nd d6} di| d6} ttj | nd}} dS(Nu call_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4u Hello World!u==u%(py0)s == %(py3)supy3uvalueuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s( ufireucalluwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert2u @py_format4u @py_format6((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu call_simple|s   u  lu call_simplecCsi|jt}|j}d}||}| rdditj|d6dtjkpltj|r~tj|ndd6tj|d6tj|d6}ttj |nt }}}|j }d } d } t | | } t | } || k}| rOtjd f|fd f|| fid tjkpWtjt ritjt nd d6dtjkptjt rtjt ndd6dtjkptj|rtj|ndd6tj| d6tj| d6tj| d6tj| d6} ddi| d6}ttj |nt }} } } } dS(Nulong_call_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4ii u==uY%(py0)s == %(py11)s {%(py11)s = %(py2)s(%(py9)s {%(py9)s = %(py3)s(%(py5)s, %(py7)s) }) }urangeupy3ulistuvalueupy7upy5upy11upy9uassert %(py13)supy13(ufireu long_calluwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueurangeulistu_call_reprcompare(umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert4u @py_assert6u @py_assert8u @py_assert10u @py_format12u @py_format14((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyutest_long_calls(  u  utest_long_callcCsi|jt}|j}d}||}| rdditj|d6dtjkpltj|r~tj|ndd6tj|d6tj|d6}ttj |nt }}}|j }d } d } t | | } t | } || k}| rOtjd f|fd f|| fid tjkpWtjt ritjt nd d6dtjkptjt rtjt ndd6dtjkptj|rtj|ndd6tj| d6tj| d6tj| d6tj| d6} ddi| d6}ttj |nt }} } } } dS(Nulong_wait_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4ii u==uY%(py0)s == %(py11)s {%(py11)s = %(py2)s(%(py9)s {%(py9)s = %(py3)s(%(py5)s, %(py7)s) }) }urangeupy3ulistuvalueupy7upy5upy11upy9uassert %(py13)supy13(ufireu long_waituwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueurangeulistu_call_reprcompare(umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert4u @py_assert6u @py_assert8u @py_assert10u @py_format12u @py_format14((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyutest_long_waits(  u  utest_long_waitcCsi|jt}|j}d}||}| rdditj|d6dtjkpltj|r~tj|ndd6tj|d6tj|d6}ttj |nt }}}|j }d } d } t | | } t | } || k}| rOtjd f|fd f|| fid tjkpWtjt ritjt nd d6dtjkptjt rtjt ndd6dtjkptj|rtj|ndd6tj| d6tj| d6tj| d6tj| d6} ddi| d6}ttj |nt }} } } } dS(Nuwait_return_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4ii u==uY%(py0)s == %(py11)s {%(py11)s = %(py2)s(%(py9)s {%(py9)s = %(py3)s(%(py5)s, %(py7)s) }) }urangeupy3ulistuvalueupy7upy5upy11upy9uassert %(py13)supy13(ufireu wait_returnuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueurangeulistu_call_reprcompare(umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert4u @py_assert6u @py_assert8u @py_assert10u @py_format12u @py_format14((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyutest_wait_returns(  u  utest_wait_returnc Cs|jt}|j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj |nd}}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksAtj|rPtj|nd d6} di| d6} ttj | nd}} dS(Nu eval_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4iu==u%(py0)s == %(py3)supy3uvalueuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s( ufireuevaluwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert2u @py_format4u @py_format6((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu test_evals   u  lu test_eval(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsuhandleru ComponentuEventuwaitucallu long_callu long_waitu wait_returnuhelloufoouget_xuget_yuevaluAppufixtureuapputest_wait_simpleu call_simpleutest_long_callutest_long_waitutest_wait_returnu test_eval(((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyus*  -     circuits-3.1.0/tests/core/__pycache__/test_manager_repr.cpython-34-PYTEST.pyc0000644000014400001440000000567212414363521030021 0ustar prologicusers00000000000000 ?T@sdZddlZddljjZddlZddlm Z ddl m Z ddl Z ddl mZmZGdddeZdd ZdS) z:Manager Repr Tests Test Manager's representation string. N)sleep)current_thread) ComponentManagerc@seZdZddZdS)AppcOsdS)N)selfeventargskwargsrr===%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)mpy1idpy7py6py3reprpy0assert %(py10)spy10z%(py0)s == (%(py3)s %% %(py4)s)py4sassert %(py7)s_runningTg?z_Manager__thread)r)rr)r)rr!)r)rr!)r)rr!)osgetpidrgetNamerr @pytest_ar_call_reprcompare @py_builtinslocals_should_repr_global_name _safereprAssertionError_format_explanationNonerregisterstartpytestwait_forrstop) rr @py_assert2 @py_assert5 @py_assert8 @py_assert4 @py_format9 @py_format11appr @py_assert1 @py_format6 @py_format8rrr test_mainsZ              r?)__doc__builtinsr)_pytest.assertion.rewrite assertionrewriter'r$timer threadingrr2circuitsrrrr?rrrr s   circuits-3.1.0/tests/core/__pycache__/test_inheritence.cpython-32-PYTEST.pyc0000644000014400001440000001130512414363275027646 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlZddlmZm Z m Z Gdde Z Gdde Z Gdde Z Gd d e Zd Zd ZdS( iN(uhandleruEventu ComponentcBs|EeZdZdS(u test EventN(u__name__u __module__u__doc__(u __locals__((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyutests utestcBs|EeZdZdS(cCsdS(Nu Hello World!((uself((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyutestsN(u__name__u __module__utest(u __locals__((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyuBase s uBasecBs)|EeZeddddZdS(utestupriorityicCsdS(NuFoobar((uself((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyutestsNi(u__name__u __module__uhandlerutest(u __locals__((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyuApp1s uApp1cBs)|EeZeddddZdS(utestuoverridecCsdS(NuFoobar((uself((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyutestsNT(u__name__u __module__uhandleruTrueutest(u __locals__((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyuApp2s uApp2c Cst}|j|jt}tj}d}|||}|s ddidtjksttj |rtj |ndd6tj |d6dtjkstj trtj tndd6tj |d 6tj |d 6}t tj |nd}}}|j}d d g}||k}|stjd|fd||fitj |d6dtjkstj |rtj |ndd6}di|d 6} t tj | nd}}|jdS(NuresultuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uxupy3upy2upytestupy0upy7upy5u Hello World!uFoobaru==u%(py0)s == %(py3)suvuassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uApp1ustartufireutestupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuvalueu_call_reprcompareustop( uappuxu @py_assert1u @py_assert4u @py_assert6u @py_format8uvu @py_assert2u @py_format4u @py_format6((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyutest_inheritence s&     l c Cst}|j|jt}tj}d}|||}|s ddidtjksttj |rtj |ndd6tj |d6dtjkstj trtj tndd6tj |d 6tj |d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj |d6dtjkstj |rtj |ndd6}di|d 6} t tj | nd}}|jdS(NuresultuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uxupy3upy2upytestupy0upy7upy5uFoobaru==u%(py0)s == %(py3)suvuassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uApp2ustartufireutestupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuvalueu_call_reprcompareustop( uappuxu @py_assert1u @py_assert4u @py_assert6u @py_format8uvu @py_assert2u @py_format4u @py_format6((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyu test_override,s&     l (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsuhandleruEventu ComponentutestuBaseuApp1uApp2utest_inheritenceu test_override(((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyus   circuits-3.1.0/tests/core/__pycache__/test_utils.cpython-26-PYTEST.pyc0000644000014400001440000001515212407376151026517 0ustar prologicusers00000000000000 ?TMc @sddkZddkiiZddkZddklZddk l Z ddk l Z l Z lZdZdZde fdYZd efd YZd e fd YZd e fdYZdZdZdZdZdS(iN(t ModuleType(t Component(t findchanneltfindroottfindtypes%def foo(): return "Hello World!" s%def foo(); return "Hello World!' tBasecBseZdZRS(R(t__name__t __module__t__doc__(((s5/home/prologic/work/circuits/tests/core/test_utils.pyRstAppcBseZdZRS(cCsdS(Ns Hello World!((tself((s5/home/prologic/work/circuits/tests/core/test_utils.pythellos(RRR (((s5/home/prologic/work/circuits/tests/core/test_utils.pyR stAcBseZdZRS(ta(RRtchannel(((s5/home/prologic/work/circuits/tests/core/test_utils.pyR stBcBseZdZRS(tb(RRR(((s5/home/prologic/work/circuits/tests/core/test_utils.pyR#scCsddkl}tiidt||id}|it|d}|dj }|pt i d(|fd)|dfhdt i jpt i|ot i|ndd6d t i jpt idot idnd d 6}d h|d 6}tt i|nd}t|}|tj}|p t i d*|fd+|tfhdt i jpt i|ot i|ndd6dt i jpt itot itndd6t i|d6dt i jpt itot itndd6} dh| d6} tt i| nd}}|i} d}| |j}|pt i d,|fd-| |fhdt i jpt i| ot i| ndd6t i|d6} dh| d6} tt i| nd}}|idd} | iddo| idtn|id }|id!do|idtn|it|d}|dj}|pt i d.|fd/|dfhdt i jpt i|ot i|ndd6d t i jpt idot idnd d 6}d h|d 6}tt i|nd}ti}||j}|pt i d0|fd1||fhdt i jpt i|ot i|ndd6d%t i jpt itot itnd%d 6t i|d 6}d&h|d'6}tt i|nd}}dS(2Ni(t safeimportisfoo.pytfoosis nots%(py0)s is not %(py2)stpy0tNonetpy2sassert %(py4)stpy4tiss0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } is %(py5)stpy1ttypetpy3Rtpy5sassert %(py7)stpy7s Hello World!s==s%(py0)s == %(py3)stssassert %(py5)stexttpyctfileit ignore_errorst __pycache__tdirs%(py0)s is %(py2)ssnot ins3%(py0)s not in %(py4)s {%(py4)s = %(py2)s.modules }tsyssassert %(py6)stpy6(sis not(s%(py0)s is not %(py2)s(R(s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } is %(py5)s(s==(s%(py0)s == %(py3)s(R(s%(py0)s is %(py2)s(snot in(s3%(py0)s not in %(py4)s {%(py4)s = %(py2)s.modules }(tcircuits.core.utilsRR$tpathtinserttstrtensuretwritetFOORt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationRRRtnewtchecktremovetTruetdirpathtFOOBARtmodules(ttmpdirRtfoo_pathRt @py_assert1t @py_format3t @py_format5t @py_assert2t @py_assert4t @py_format6t @py_format8Rt @py_format4Rtpydt @py_assert3t @py_format7((s5/home/prologic/work/circuits/tests/core/test_utils.pyttest_safeimport(s^       o     cCs:t}t}t}|i||i|x|o|iq8Wt|}||j}|ptid |fd ||fhdti jpti |oti |ndd6dti jpti |oti |ndd6}dh|d6}t ti |nd}dS( Ns==s%(py0)s == %(py2)strootRtappRsassert %(py4)sR(s==(s%(py0)s == %(py2)s(R R RtregistertflushRR-R.R/R0R1R2R3R4R(RKR RRJR>R?R@((s5/home/prologic/work/circuits/tests/core/test_utils.pyt test_findrootCs       cCs%t}tti|x|o|iq#Wt|d}|i}d}||j}|ptid |fd ||fhdt i jpti |oti |ndd6ti |d6ti |d6}dh|d6}t ti|nd}}}dS( NR s==s/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)sRRRsassert %(py7)sR(s==(s/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)s(R R RRLRMRRR-R.R/R0R1R2R3R4R(RKR R>RBRGRCRD((s5/home/prologic/work/circuits/tests/core/test_utils.pyttest_findchannelSs   cCsIt}tti|x|o|iq#Wt|t}t|t}|pdhdtijpt i |ot i |ndd6dtijpt i tot i tndd6dtijpt i tot i tndd6t i |d6}t t i |nd}dS( Ns5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }R Rt isinstanceRR RR(R R RRLRMRRPR/R0R-R1R2R3R4R(RKR RGR@((s5/home/prologic/work/circuits/tests/core/test_utils.pyt test_findtype_s (t __builtin__R/t_pytest.assertion.rewritet assertiontrewriteR-R$ttypesRtcircuitsRR&RRRR,R:RR R RRIRNRORQ(((s5/home/prologic/work/circuits/tests/core/test_utils.pyts     circuits-3.1.0/tests/core/__pycache__/test_event_priority.cpython-32-PYTEST.pyc0000644000014400001440000000731212414363275030436 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlmZmZGddeZ GddeZ GddeZ d Z d Z dS( iN(u ComponentuEventcBs|EeZdZdS(u foo EventN(u__name__u __module__u__doc__(u __locals__((u>/home/prologic/work/circuits/tests/core/test_event_priority.pyufoos ufoocBs|EeZdZdS(u done EventN(u__name__u __module__u__doc__(u __locals__((u>/home/prologic/work/circuits/tests/core/test_event_priority.pyudone s udonecBs)|EeZdZdZdZdS(cCs g|_dS(N(uresults(uself((u>/home/prologic/work/circuits/tests/core/test_event_priority.pyuinitscCs|jj|dS(N(uresultsuappend(uselfuvalue((u>/home/prologic/work/circuits/tests/core/test_event_priority.pyufooscCs|jdS(N(ustop(uself((u>/home/prologic/work/circuits/tests/core/test_event_priority.pyudonesN(u__name__u __module__uinitufooudone(u __locals__((u>/home/prologic/work/circuits/tests/core/test_event_priority.pyuApps   uAppcCs)t}|jtd|jtdg|jt|j|j}ddg}||k}|stjd |fd ||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}dS(Niiu==u/%(py2)s {%(py2)s = %(py0)s.results } == %(py5)supy2uappupy0upy5uuassert %(py7)supy7(u==(u/%(py2)s {%(py2)s = %(py0)s.results } == %(py5)suassert %(py7)s(uAppufireufooudoneurunuresultsu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uappu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u>/home/prologic/work/circuits/tests/core/test_event_priority.pyutest1s (  |cCs5t}|jtddd|jtdddg|jt|j|j}ddg}||k}|s#tjd|fd||fitj|d6dt j kstj |rtj|ndd 6tj|d 6}di|d 6}t tj |nd}}}dS(Niupriorityiiu==u/%(py2)s {%(py2)s = %(py0)s.results } == %(py5)supy2uappupy0upy5uuassert %(py7)supy7(u==(u/%(py2)s {%(py2)s = %(py0)s.results } == %(py5)suassert %(py7)s(uAppufireufooudoneurunuresultsu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uappu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u>/home/prologic/work/circuits/tests/core/test_event_priority.pyutest2&s 4  |(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsu ComponentuEventufooudoneuApputest1utest2(((u>/home/prologic/work/circuits/tests/core/test_event_priority.pyus  circuits-3.1.0/tests/core/__pycache__/__init__.cpython-33.pyc0000644000014400001440000000022212414363410025007 0ustar prologicusers00000000000000 Qc@sdS(N((((u3/home/prologic/work/circuits/tests/core/__init__.pyuscircuits-3.1.0/tests/core/__pycache__/test_event_priority.cpython-33-PYTEST.pyc0000644000014400001440000000757212414363411030437 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZmZGdddeZ GdddeZ GdddeZ d d Z d d Z dS( iN(u ComponentuEventcBs|EeZdZdZdS(ufoou foo EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u>/home/prologic/work/circuits/tests/core/test_event_priority.pyufoosufoocBs|EeZdZdZdS(udoneu done EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u>/home/prologic/work/circuits/tests/core/test_event_priority.pyudone sudonecBs8|EeZdZddZddZddZdS(uAppcCs g|_dS(N(uresults(uself((u>/home/prologic/work/circuits/tests/core/test_event_priority.pyuinitsuApp.initcCs|jj|dS(N(uresultsuappend(uselfuvalue((u>/home/prologic/work/circuits/tests/core/test_event_priority.pyufoosuApp.foocCs|jdS(N(ustop(uself((u>/home/prologic/work/circuits/tests/core/test_event_priority.pyudonesuApp.doneN(u__name__u __module__u __qualname__uinitufooudone(u __locals__((u>/home/prologic/work/circuits/tests/core/test_event_priority.pyuApps  uAppcCs)t}|jtd|jtdg|jt|j|j}ddg}||k}|stjd |fd ||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}dS(Niiu==u/%(py2)s {%(py2)s = %(py0)s.results } == %(py5)supy2uappupy0upy5uuassert %(py7)supy7(u==(u/%(py2)s {%(py2)s = %(py0)s.results } == %(py5)suassert %(py7)s(uAppufireufooudoneurunuresultsu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uappu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u>/home/prologic/work/circuits/tests/core/test_event_priority.pyutest1s (  |utest1cCs5t}|jtddd|jtdddg|jt|j|j}ddg}||k}|s#tjd|fd||fitj|d6dt j kstj |rtj|ndd 6tj|d 6}di|d 6}t tj |nd}}}dS(Niupriorityiiu==u/%(py2)s {%(py2)s = %(py0)s.results } == %(py5)supy2uappupy0upy5uuassert %(py7)supy7(u==(u/%(py2)s {%(py2)s = %(py0)s.results } == %(py5)suassert %(py7)s(uAppufireufooudoneurunuresultsu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uappu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u>/home/prologic/work/circuits/tests/core/test_event_priority.pyutest2&s 4  |utest2(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsu ComponentuEventufooudoneuApputest1utest2(((u>/home/prologic/work/circuits/tests/core/test_event_priority.pyus  circuits-3.1.0/tests/core/__pycache__/test_value.cpython-32-PYTEST.pyc0000644000014400001440000003571012414363276026474 0ustar prologicusers00000000000000l ?T c@sddlZddljjZddlZddlmZm Z m Z Gdde Z Gdde Z Gdde Z Gd d e ZGd d e Zejd ZdZdZdZdZdZdZdS(iN(uhandleruEventu ComponentcBs|EeZdZdS(u Hhllo EventN(u__name__u __module__u__doc__(u __locals__((u5/home/prologic/work/circuits/tests/core/test_value.pyuhello s uhellocBs|EeZdZdS(u test EventN(u__name__u __module__u__doc__(u __locals__((u5/home/prologic/work/circuits/tests/core/test_value.pyutests utestcBs|EeZdZdS(u foo EventN(u__name__u __module__u__doc__(u __locals__((u5/home/prologic/work/circuits/tests/core/test_value.pyufoos ufoocBs|EeZdZdZdS(u values EventNT(u__name__u __module__u__doc__uTrueucomplete(u __locals__((u5/home/prologic/work/circuits/tests/core/test_value.pyuvaluess uvaluescBs|EeZdZdZdZeddZeddZeddd d Zeddd d Z eddd dZ dS(cCsdS(Nu Hello World!((uself((u5/home/prologic/work/circuits/tests/core/test_value.pyuhelloscCs|jtS(N(ufireuhello(uself((u5/home/prologic/work/circuits/tests/core/test_value.pyutest!scCstddS(NuERROR(u Exception(uself((u5/home/prologic/work/circuits/tests/core/test_value.pyufoo$suhello_value_changedcCs ||_dS(N(uvalue(uselfuvalue((u5/home/prologic/work/circuits/tests/core/test_value.pyu_on_hello_value_changed'sutest_value_changedcCs ||_dS(N(uvalue(uselfuvalue((u5/home/prologic/work/circuits/tests/core/test_value.pyu_on_test_value_changed+suvaluesupriorityg@cCsdS(Nufoo((uself((u5/home/prologic/work/circuits/tests/core/test_value.pyu_value1/sg?cCsdS(Nubar((uself((u5/home/prologic/work/circuits/tests/core/test_value.pyu_value23sgcCs|jtS(N(ufireuhello(uself((u5/home/prologic/work/circuits/tests/core/test_value.pyu_value37sN( u__name__u __module__uhelloutestufoouhandleru_on_hello_value_changedu_on_test_value_changedu_value1u_value2u_value3(u __locals__((u5/home/prologic/work/circuits/tests/core/test_value.pyuApps    uAppcsBtj|jdfd}|j|S(Nu registeredcsjjddS(Nu unregistered(u unregisteruwait((uappuwatcher(u5/home/prologic/work/circuits/tests/core/test_value.pyu finalizerAs (uAppuregisteruwaitu addfinalizer(urequestumanageruwatcheru finalizer((uappuwatcheru5/home/prologic/work/circuits/tests/core/test_value.pyuapp<s   c Cs|jt}|jdd}||k}|stjd|fd||fidtjksytj|rtj|ndd6tj|d6}di|d 6}t tj |nd}}|j }d}||k} | stjd| fd||fitj|d 6dtjksItj|rXtj|ndd6tj|d 6}di|d6} t tj | nd}} }dS(Nuhellou Hello World!uinu%(py1)s in %(py3)suxupy3upy1uuassert %(py5)supy5u==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2upy0uassert %(py7)supy7(uin(u%(py1)s in %(py3)suassert %(py5)s(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s( ufireuhellouwaitu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuvalue( uappuwatcheruxu @py_assert0u @py_assert2u @py_format4u @py_format6u @py_assert1u @py_assert4u @py_assert3u @py_format8((u5/home/prologic/work/circuits/tests/core/test_value.pyu test_valueJs"  l   |c Cs|jt}|jd|j}d}||k}|stjd|fd||fitj|d6dtjkstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}t |}d} || k}|stjd|fd|| fitj|d 6dtjksitj |rxtj|ndd6dtjkstj t rtjt ndd6tj| d6} di| d6} t tj | nd}}} dS(Nutestu Hello World!u==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2uxupy0upy5uuassert %(py7)supy7u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)supy3upy1ustrupy6uassert %(py8)supy8(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(u==(u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)suassert %(py8)s(ufireutestuwaituvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneustr( uappuwatcheruxu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_assert2u @py_assert5u @py_format7u @py_format9((u5/home/prologic/work/circuits/tests/core/test_value.pyutest_nested_valueRs$   |  c Cs|jt}d|_|jdd}||k}|stjd|fd||fidtjkstj |rtj |ndd6tj |d6}di|d 6}t tj |nd}}|j}d}||k} | stjd| fd||fitj |d 6dtjksRtj |ratj |ndd6tj |d 6}di|d6} t tj | nd}} }|j}||k} | stjd| fd||fitj |d 6dtjks tj |r/tj |ndd6dtjksWtj |rftj |ndd6} d i| d6} t tj | nd}} dS(!Nuhello_value_changedu Hello World!uinu%(py1)s in %(py3)suxupy3upy1uuassert %(py5)supy5u==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2upy0uassert %(py7)supy7uisu-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)suappupy4uassert %(py6)supy6T(uin(u%(py1)s in %(py3)suassert %(py5)s(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(uis(u-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)suassert %(py6)s(ufireuhellouTrueunotifyuwaitu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuvalue( uappuwatcheruxu @py_assert0u @py_assert2u @py_format4u @py_format6u @py_assert1u @py_assert4u @py_assert3u @py_format8u @py_format5u @py_format7((u5/home/prologic/work/circuits/tests/core/test_value.pyutest_value_notifyZs2   l   | c Cs|jt}d|_|jd|j}d}||k}|stjd|fd||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}t|}d} || k}|stjd|fd|| fitj|d 6dt j ksrtj |rtj|ndd6dt j kstj trtjtndd6tj| d6} di| d6} t tj | nd}}} |j}||k}|stjd|fd ||fitj|d6dt j kswtj |rtj|ndd6dt j kstj |rtj|ndd6} d!i| d6} t tj | nd}}dS("Nuhello_value_changedu Hello World!u==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2uxupy0upy5uuassert %(py7)supy7u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)supy3upy1ustrupy6uassert %(py8)supy8uisu-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)suappupy4uassert %(py6)sT(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(u==(u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)suassert %(py8)s(uis(u-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)suassert %(py6)s(ufireutestuTrueunotifyuwaituvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneustr( uappuwatcheruxu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_assert2u @py_assert5u @py_format7u @py_format9u @py_format5((u5/home/prologic/work/circuits/tests/core/test_value.pyutest_nested_value_notifyes4    |   c Cs |jt}|jd|\}}}|tk}|stjd|fd|tfidtjkstjtrtj tndd6dtjkstj|rtj |ndd6}di|d 6}t tj |nd}t |} d } | | k} | stjd| fd| | fitj | d6dtjksxtj|rtj |ndd6dtjkstjt rtj t ndd6tj | d6} di| d6} t tj | nd} } } t|t}|sddidtjksPtjtr_tj tndd6dtjkstj|rtj |ndd6dtjkstjtrtj tndd6tj |d 6}t tj |nd}dS(Nufoouisu%(py0)s is %(py2)su Exceptionupy2uetypeupy0uuassert %(py4)supy4uERRORu==u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)supy3uevalueupy1ustrupy6uassert %(py8)supy8u5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }ulistu etracebacku isinstance(uis(u%(py0)s is %(py2)suassert %(py4)s(u==(u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)suassert %(py8)s(ufireufoouwaitu Exceptionu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneustru isinstanceulist(uappuwatcheruxuetypeuevalueu etracebacku @py_assert1u @py_format3u @py_format5u @py_assert2u @py_assert5u @py_assert4u @py_format7u @py_format9u @py_assert3((u5/home/prologic/work/circuits/tests/core/test_value.pyutest_error_valueps,    c Cs|jt}|jd|j}t|t}|s(dditj|d6dtj ksxtj |rtj|ndd6dtj kstj trtjtndd6tj|d 6d tj kstj trtjtnd d 6}t tj |nd}}t|}d }||k}|stjd|fd||fidtj kstj |rtj|ndd6tj|d6}di|d6} t tj | nd}}d ddg}||k} | stjd| fd||fitj|d6dtj kshtj |rwtj|ndd6}d i|d6} t tj | nd} }|d}d } || k}|sEtjd!|fd"|| fitj|d6tj| d 6} d#i| d 6}t tj |nd}}} |d}d} || k}|stjd$|fd%|| fitj|d6tj| d 6} d&i| d 6}t tj |nd}}} |d}d} || k}|stjd'|fd(|| fitj|d6tj| d 6} d)i| d 6}t tj |nd}}} dS(*Nuvalues_completeuuPassert %(py6)s {%(py6)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.value }, %(py4)s) }upy3uvupy1u isinstanceupy0upy6ulistupy4ufoouinu%(py1)s in %(py3)suassert %(py5)supy5ubaru Hello World!u==u%(py0)s == %(py3)suxiu%(py1)s == %(py4)suassert %(py6)sii(uin(u%(py1)s in %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s(ufireuvaluesuwaituvalueu isinstanceulistu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu_call_reprcompare( uappuwatcheruvu @py_assert2u @py_assert5u @py_format7uxu @py_assert0u @py_format4u @py_format6u @py_assert1u @py_assert3u @py_format5((u5/home/prologic/work/circuits/tests/core/test_value.pyutest_multiple_valueszs^     l  l   E  E  E(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsuhandleruEventu ComponentuhelloutestufoouvaluesuAppufixtureuappu test_valueutest_nested_valueutest_value_notifyutest_nested_value_notifyutest_error_valueutest_multiple_values(((u5/home/prologic/work/circuits/tests/core/test_value.pyus      circuits-3.1.0/tests/core/__pycache__/test_filters.cpython-34-PYTEST.pyc0000644000014400001440000000325412414363521027021 0ustar prologicusers00000000000000 ?T@svddlZddljjZddlmZmZm Z GdddeZ Gddde Z ddZ dS) N)handlerEvent BaseComponentc@seZdZdZdS)testz test EventN)__name__ __module__ __qualname____doc__r r 7/home/prologic/work/circuits/tests/core/test_filters.pyrs rc@s4eZdZedddZddZdS)Apprc CszdSWd|jXdS)Nz Hello World!)stop)selfeventr r r _on_test sz App._on_testcCsdS)Nr )rr r r _on_test2sz App._on_test2N)rrrrrrr r r r r s r cCst}x|r|jq W|jt}|j|j}d}||k}|stjd |fd ||fitj|d6tj|d6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}}dS)Nz Hello World!==-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)spy5py2xpy0assert %(py7)spy7)r)rr)r flushfirervalue @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)appr @py_assert1 @py_assert4 @py_assert3 @py_format6 @py_format8r r r test_mains     |r-) builtinsr!_pytest.assertion.rewrite assertionrewritercircuitsrrrrr r-r r r r s  circuits-3.1.0/tests/core/__pycache__/test_inheritence.cpython-27-PYTEST.pyc0000644000014400001440000001011012414363101027627 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZddlmZm Z m Z de fdYZ de fdYZ de fdYZ d e fd YZd Zd ZdS( iN(thandlertEventt ComponentttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyRstBasecBseZdZRS(cCsdS(Ns Hello World!((tself((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyRs(RRR(((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyR stApp1cBs#eZeddddZRS(RtpriorityicCsdS(NtFoobar((R((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyRs(RRRR(((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyR stApp2cBs#eZeddedZRS(RtoverridecCsdS(NR ((R((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyRs(RRRtTrueR(((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyR sc Cst}|j|jt}tj}d}|||}|s ddidtjksttj |rtj |ndd6tj |d6dtjkstj trtj tndd6tj |d 6tj |d 6}t tj |nd}}}|j}d d g}||k}|stjd|fd||fitj |d6dtjkstj |rtj |ndd6}di|d 6} t tj | nd}}|jdS(NtresulttsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }txtpy3tpy2tpytesttpy0tpy7tpy5s Hello World!R s==s%(py0)s == %(py3)stvsassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(R tstarttfireRRtwait_fort @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetvaluet_call_reprcomparetstop( tappRt @py_assert1t @py_assert4t @py_assert6t @py_format8Rt @py_assert2t @py_format4t @py_format6((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyttest_inheritence s&     l c Cst}|j|jt}tj}d}|||}|s ddidtjksttj |rtj |ndd6tj |d6dtjkstj trtj tndd6tj |d 6tj |d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj |d6dtjkstj |rtj |ndd6}di|d 6} t tj | nd}}|jdS(NRRsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }RRRRRRRR s==s%(py0)s == %(py3)sRsassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(R RRRRRRRRRR R!R"R#R$R%R&( R'RR(R)R*R+RR,R-R.((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyt test_override,s&     l (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRRtcircuitsRRRRRR R R/R0(((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyts   circuits-3.1.0/tests/core/__pycache__/__init__.cpython-34.pyc0000644000014400001440000000020612414363521025015 0ustar prologicusers00000000000000 Q@sdS)Nrrr3/home/prologic/work/circuits/tests/core/__init__.pyscircuits-3.1.0/tests/core/__pycache__/test_call_wait.cpython-32-PYTEST.pyc0000644000014400001440000003652112414363275027317 0ustar prologicusers00000000000000l ?TP c@slddlZddljjZddlZddlmZm Z m Z Gdde Z Gdde Z Gdde Z Gd d e ZGd d e ZGd de ZGdde ZGdde ZGdde ZGdde ZGdde ZejdddZdZdZdZdZd Zd!ZdS("iN(uhandleru ComponentuEventcBs|EeZdZdZdS(u wait EventNT(u__name__u __module__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyuwaits uwaitcBs|EeZdZdZdS(u call EventNT(u__name__u __module__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyucall s ucallcBs|EeZdZdZdS(ulong_call EventNT(u__name__u __module__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu long_calls u long_callcBs|EeZdZdZdS(ulong_wait EventNT(u__name__u __module__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu long_waits u long_waitcBs|EeZdZdZdS(uwait_return EventNT(u__name__u __module__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu wait_returns u wait_returncBs|EeZdZdZdS(u hello EventNT(u__name__u __module__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyuhello!s uhellocBs|EeZdZdZdS(u foo EventNT(u__name__u __module__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyufoo&s ufoocBs|EeZdZdZdS(u get_x EventNT(u__name__u __module__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyuget_x+s uget_xcBs|EeZdZdZdS(u get_y EventNT(u__name__u __module__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyuget_y0s uget_ycBs|EeZdZdZdS(u eval EventNT(u__name__u __module__u__doc__uTrueusuccess(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyueval5s uevalcBs|EeZeddZeddZdZdZdZdZdZ d Z d Z d Z d S( uwaitccs,|jt}|jdV|jVdS(Nuhello(ufireuhellouwaituvalue(uselfux((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu_on_wait<sucallccs|jtV}|jVdS(N(ucalluhellouvalue(uselfux((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu_on_callBscCsdS(Nu Hello World!((uself((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyuhelloGsccs,|jt}|jdV|jVdS(Nufoo(ufireufoouwaituvalue(uselfux((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu long_waitJsccs#|jt|jdVVdS(Nufoo(ufireufoouwait(uself((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu wait_returnOsccs|jtV}|jVdS(N(ucallufoouvalue(uselfux((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu long_callSsccs#xtddD] }|VqWdS(Nii (urange(uselfui((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyufooWscCsdS(Ni((uself((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyuget_x[scCsdS(Ni((uself((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyuget_y^sccs9|jtV}|jtV}|j|jVdS(N(ucalluget_xuget_yuvalue(uselfuxuy((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyuevalasN( u__name__u __module__uhandleru_on_waitu_on_calluhellou long_waitu wait_returnu long_callufoouget_xuget_yueval(u __locals__((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyuApp:s        uAppuscopeumodulecstj||j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj |nd}}}fd }|j |S( Nu registereduuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4csjdS(N(u unregister((uapp(u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu finalizerls( uAppuregisteruwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu addfinalizer(urequestumanageruwatcheru @py_assert1u @py_assert3u @py_assert5u @py_format7u finalizer((uappu9/home/prologic/work/circuits/tests/core/test_call_wait.pyuappgs  u c Cs|jt}|j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj|nd}}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksAtj|rPtj|nd d6} di| d6} ttj| nd}} dS(Nu wait_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4u Hello World!u==u%(py0)s == %(py3)supy3uvalueuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s( ufireuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert2u @py_format4u @py_format6((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyutest_wait_simplets   u  lc Cs|jt}|j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj |nd}}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksAtj|rPtj|nd d6} di| d6} ttj | nd}} dS(Nu call_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4u Hello World!u==u%(py0)s == %(py3)supy3uvalueuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s( ufireucalluwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert2u @py_format4u @py_format6((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu call_simple|s   u  lcCsi|jt}|j}d}||}| rdditj|d6dtjkpltj|r~tj|ndd6tj|d6tj|d6}ttj |nt }}}|j }d } d } t | | } t | } || k}| rOtjd f|fd f|| fitj| d 6dtjkpgtjt rytjt ndd6dtjkptjt rtjt ndd6dtjkptj|rtj|ndd6tj| d6tj| d6tj| d6} ddi| d6}ttj |nt }} } } } dS(Nulong_call_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4ii u==uY%(py0)s == %(py11)s {%(py11)s = %(py2)s(%(py9)s {%(py9)s = %(py3)s(%(py5)s, %(py7)s) }) }upy11urangeupy3ulistuvalueupy7upy5upy9uassert %(py13)supy13(ufireu long_calluwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueurangeulistu_call_reprcompare(umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert4u @py_assert6u @py_assert8u @py_assert10u @py_format12u @py_format14((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyutest_long_calls(  u  cCsi|jt}|j}d}||}| rdditj|d6dtjkpltj|r~tj|ndd6tj|d6tj|d6}ttj |nt }}}|j }d } d } t | | } t | } || k}| rOtjd f|fd f|| fitj| d 6dtjkpgtjt rytjt ndd6dtjkptjt rtjt ndd6dtjkptj|rtj|ndd6tj| d6tj| d6tj| d6} ddi| d6}ttj |nt }} } } } dS(Nulong_wait_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4ii u==uY%(py0)s == %(py11)s {%(py11)s = %(py2)s(%(py9)s {%(py9)s = %(py3)s(%(py5)s, %(py7)s) }) }upy11urangeupy3ulistuvalueupy7upy5upy9uassert %(py13)supy13(ufireu long_waituwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueurangeulistu_call_reprcompare(umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert4u @py_assert6u @py_assert8u @py_assert10u @py_format12u @py_format14((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyutest_long_waits(  u  cCsi|jt}|j}d}||}| rdditj|d6dtjkpltj|r~tj|ndd6tj|d6tj|d6}ttj |nt }}}|j }d } d } t | | } t | } || k}| rOtjd f|fd f|| fitj| d 6dtjkpgtjt rytjt ndd6dtjkptjt rtjt ndd6dtjkptj|rtj|ndd6tj| d6tj| d6tj| d6} ddi| d6}ttj |nt }} } } } dS(Nuwait_return_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4ii u==uY%(py0)s == %(py11)s {%(py11)s = %(py2)s(%(py9)s {%(py9)s = %(py3)s(%(py5)s, %(py7)s) }) }upy11urangeupy3ulistuvalueupy7upy5upy9uassert %(py13)supy13(ufireu wait_returnuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueurangeulistu_call_reprcompare(umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert4u @py_assert6u @py_assert8u @py_assert10u @py_format12u @py_format14((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyutest_wait_returns(  u  c Cs|jt}|j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj |nd}}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksAtj|rPtj|nd d6} di| d6} ttj | nd}} dS(Nu eval_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4iu==u%(py0)s == %(py3)supy3uvalueuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s( ufireuevaluwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert2u @py_format4u @py_format6((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyu test_evals   u  l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsuhandleru ComponentuEventuwaitucallu long_callu long_waitu wait_returnuhelloufoouget_xuget_yuevaluAppufixtureuapputest_wait_simpleu call_simpleutest_long_callutest_long_waitutest_wait_returnu test_eval(((u9/home/prologic/work/circuits/tests/core/test_call_wait.pyus*  -     circuits-3.1.0/tests/core/__pycache__/test_new_filter.cpython-32-PYTEST.pyc0000644000014400001440000000735712414363275027523 0ustar prologicusers00000000000000l ?TXc@sddlZddljjZddlZddlmZm Z Gdde Z GddeZ ej dZ dZd ZdS( iN(u ComponentuEventcBs|EeZdZdZdS(u hello EventNT(u__name__u __module__u__doc__uTrueusuccess(u __locals__((u:/home/prologic/work/circuits/tests/core/test_new_filter.pyuhellos uhellocBs|EeZdZdS(cOs#|jddr|jndS(Nustopu Hello World!F(ugetuFalseustop(uselfueventuargsukwargs((u:/home/prologic/work/circuits/tests/core/test_new_filter.pyuhellos N(u__name__u __module__uhello(u __locals__((u:/home/prologic/work/circuits/tests/core/test_new_filter.pyuApps uAppcsIttj|jdfd}|j|S(Nu registeredcsjjddS(Nu unregistered(u unregisteruwait((uappuwatcher(u:/home/prologic/work/circuits/tests/core/test_new_filter.pyu finalizers (uAppuregisteruwaitu addfinalizer(urequestumanageruwatcheru finalizer((uappuwatcheru:/home/prologic/work/circuits/tests/core/test_new_filter.pyuapps   cCs|jt}|jd|j}ddg}||k}|stjd |fd ||fitj|d6dtjkstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}dS(Nu hello_successu Hello World!u==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2uxupy0upy5uuassert %(py7)supy7(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s( ufireuhellouwaituvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uappuwatcheruxu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u:/home/prologic/work/circuits/tests/core/test_new_filter.pyu test_normal$s  |cCs|jtdd }|jd|j}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd6tj|d 6}di|d 6}t tj |nd}}}dS(Nustopu hello_successu Hello World!u==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2uxupy0upy5uuassert %(py7)supy7T(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(ufireuhellouTrueuwaituvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uappuwatcheruxu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u:/home/prologic/work/circuits/tests/core/test_new_filter.pyu test_filter*s   |(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsu ComponentuEventuhellouAppufixtureuappu test_normalu test_filter(((u:/home/prologic/work/circuits/tests/core/test_new_filter.pyus   circuits-3.1.0/tests/core/__pycache__/test_component_repr.cpython-33-PYTEST.pyc0000644000014400001440000001356312414363411030404 0ustar prologicusers00000000000000 ?T{c @sdZddlZddljjZddlZyddlm Z Wn"e k rhddlm Z YnXddl m Z mZGdddeZGdd d e Zd d Zd d ZdS(u>Component Repr Tests Test Component's representation string. iN(ucurrent_thread(u currentThread(uEventu ComponentcBs |EeZdZddZdS(uAppcOsdS(N((uselfueventuargsukwargs((u>/home/prologic/work/circuits/tests/core/test_component_repr.pyutestsuApp.testN(u__name__u __module__u __qualname__utest(u __locals__((u>/home/prologic/work/circuits/tests/core/test_component_repr.pyuAppsuAppcBs|EeZdZdS(utestN(u__name__u __module__u __qualname__(u __locals__((u>/home/prologic/work/circuits/tests/core/test_component_repr.pyutestsutestc Cs?dtjtjf}t}t|}d}||}||k}|sitjd|fd||fitj|d6dt j kstj |rtj|ndd6dt j kstj trtjtndd 6d t j kstj |r%tj|nd d 6tj|d 6}di|d6}t tj |nd}}}}|jtt|}d}||}||k}|stjd|fd||fitj|d6dt j ks tj |rtj|ndd6dt j ksBtj trQtjtndd 6d t j ksytj |rtj|nd d 6tj|d 6}di|d6}t tj |nd}}}}|jt|}d}||}||k}|s)tjd|fd||fitj|d6dt j kshtj |rwtj|ndd6dt j kstj trtjtndd 6d t j kstj |rtj|nd d 6tj|d 6}di|d6}t tj |nd}}}}dS(Nu%s:%suu==u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)upy3uappupy1ureprupy0uidupy7upy6uuassert %(py10)supy10u(u==(u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)uassert %(py10)s(u==(u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)uassert %(py10)s(u==(u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)uassert %(py10)s(uosugetpiducurrent_threadugetNameuAppurepru @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneufireutestuflush(uiduappu @py_assert2u @py_assert5u @py_assert8u @py_assert4u @py_format9u @py_format11((u>/home/prologic/work/circuits/tests/core/test_component_repr.pyu test_mains>        u test_mainc CsEdtjtjf}tdd}t|}d}||}||k}|sotjd|fd||fitj|d6dt j kstj |rtj|ndd 6d t j kstj trtjtnd d 6d t j kstj |r+tj|nd d 6tj|d6}di|d6}t tj |nd}}}}|jtt|}d}||}||k}|stjd|fd||fitj|d6dt j kstj |r tj|ndd 6d t j ksHtj trWtjtnd d 6d t j kstj |rtj|nd d 6tj|d6}di|d6}t tj |nd}}}}|jt|}d}||}||k}|s/tjd|fd||fitj|d6dt j ksntj |r}tj|ndd 6d t j kstj trtjtnd d 6d t j kstj |rtj|nd d 6tj|d6}di|d6}t tj |nd}}}}dS(Nu%s:%suchanneliuu==u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)upy3uappupy1ureprupy0uidupy7upy6uuassert %(py10)supy10u(ii(u==(u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)uassert %(py10)s(u==(u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)uassert %(py10)s(u==(u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)uassert %(py10)s(uosugetpiducurrent_threadugetNameuAppurepru @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneufireutestuflush(uiduappu @py_assert2u @py_assert5u @py_assert8u @py_assert4u @py_format9u @py_format11((u>/home/prologic/work/circuits/tests/core/test_component_repr.pyutest_non_str_channel+s>       utest_non_str_channel(u__doc__ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruosu threadingucurrent_threadu ImportErroru currentThreaducircuitsuEventu ComponentuApputestu test_mainutest_non_str_channel(((u>/home/prologic/work/circuits/tests/core/test_component_repr.pyus    circuits-3.1.0/tests/core/__pycache__/test_loader.cpython-34-PYTEST.pyc0000644000014400001440000000337312414363521026621 0ustar prologicusers00000000000000 ?T@s|ddlZddljjZddlZddlmZddl m Z m Z m Z Gddde Z ddZdS)N)dirname)EventLoaderManagerc@seZdZdZdS)testz test EventN)__name__ __module__ __qualname____doc__r r 6/home/prologic/work/circuits/tests/core/test_loader.pyr s rc Cst}tdttgj|}|j|jd|jt}t j }d}|||}|s;ddit j |d6t j |d6t j |d6d t jkst j|rt j |nd d 6d t jks t jt rt j t nd d 6}tt j|nt}}}|j}d }||k}|st jd|fd||fit j |d 6dt jkst j|rt j |ndd 6} di| d6} tt j| nt}}|jdS)NpathsappresultzSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }py5py2py7xpy3pytestpy0z Hello World!==%(py0)s == %(py3)ssassert %(py5)s)r)rr)rrr__file__registerstartloadfirerrwait_for @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonevalue_call_reprcomparestop) mloaderr @py_assert1 @py_assert4 @py_assert6 @py_format8r @py_assert2 @py_format4 @py_format6r r r test_mains* !     l r6)builtinsr$_pytest.assertion.rewrite assertionrewriter"rZos.pathrcircuitsrrrrr6r r r r s  circuits-3.1.0/tests/core/__pycache__/test_event_priority.cpython-34-PYTEST.pyc0000644000014400001440000000505512414363521030434 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZmZGdddeZ GdddeZ GdddeZ d d Z d d Z dS) N) ComponentEventc@seZdZdZdS)fooz foo EventN)__name__ __module__ __qualname____doc__r r >/home/prologic/work/circuits/tests/core/test_event_priority.pyrs rc@seZdZdZdS)donez done EventN)rrrrr r r r r s r c@s4eZdZddZddZddZdS)AppcCs g|_dS)N)results)selfr r r initszApp.initcCs|jj|dS)N)r append)rvaluer r r rszApp.foocCs|jdS)N)stop)rr r r r szApp.doneN)rrrrrr r r r r r s   r cCs)t}|jtd|jtdg|jt|j|j}ddg}||k}|stjd |fd ||fitj|d6tj|d6dt j kstj |rtj|ndd6}di|d 6}t tj |nt}}}dS)N==/%(py2)s {%(py2)s = %(py0)s.results } == %(py5)spy5py2apppy0assert %(py7)spy7)r)rr)r firerr runr @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)r @py_assert1 @py_assert4 @py_assert3 @py_format6 @py_format8r r r test1s (  |r.cCs5t}|jtddd|jtdddg|jt|j|j}ddg}||k}|s#tjd|fd||fitj|d6tj|d6d t j kstj |rtj|nd d 6}di|d 6}t tj |nt}}}dS)Nrpriorityrrr/%(py2)s {%(py2)s = %(py0)s.results } == %(py5)srrrrrassert %(py7)sr)r)r0r1)r rrr rr r r!r"r#r$r%r&r'r()rr)r*r+r,r-r r r test2&s 4  |r2)builtinsr#_pytest.assertion.rewrite assertionrewriter circuitsrrrr r r.r2r r r r s  circuits-3.1.0/tests/core/__pycache__/test_interface_query.cpython-34-PYTEST.pyc0000644000014400001440000000624212414363521030536 0ustar prologicusers00000000000000 ?T@sdZddlZddljjZddlmZGdddeZ Gddde Z dd Z d d Z d d Z ddZdS)zTest Interface Query Test the capabilities of querying a Component class or instance for it's interface. That is it's event handlers it responds to. N) Componentc@seZdZddZdS)BasecCsdS)N)selfrr?/home/prologic/work/circuits/tests/core/test_interface_query.pyfooszBase.fooN)__name__ __module__ __qualname__rrrrrr s rc@seZdZddZdS) SuperBasecCsdS)Nr)rrrrbarsz SuperBase.barN)rr r r rrrrr s r cCstj}d}||}|sdditj|d6tj|d6dtjksltjtr{tjtndd6tj|d6}ttj|nt }}}dS) NrzIassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s) }py2py6rpy0py4) rhandles @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone) @py_assert1 @py_assert3 @py_assert5 @py_format7rrrtest_handles_base_classs  urcCstj}d}d}|||}|sdditj|d6tj|d6tj|d6dtjkstjtrtjtndd 6tj|d 6}ttj|nt }}}}dS) Nrr r zRassert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s, %(py6)s) }rrpy8r rr) r rrrrrrrrr)rrr @py_assert7 @py_format9rrrtest_handles_super_base_classs r#cCst}|j}d}||}|sdditj|d6tj|d6dtjksutj|rtj|ndd6tj|d6}ttj|nt }}}dS) Nrr zIassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s) }rrbaserr) rrrrrrrrrr)r$rrrrrrrtest_handles_base_instance!s   ur%cCst}|j}d}d}|||}|sdditj|d6tj|d6tj|d6dtjkstj|rtj|ndd 6tj|d 6}ttj|nt }}}}dS) Nrr r zRassert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s, %(py6)s) }rrr superbaserr) r rrrrrrrrr)r&rrrr!r"rrr test_handles_super_base_instance&s  r')__doc__builtinsr_pytest.assertion.rewrite assertionrewritercircuitsrrr rr#r%r'rrrrs    circuits-3.1.0/tests/core/__pycache__/test_worker_thread.cpython-34-PYTEST.pyc0000644000014400001440000000754612414363521030221 0ustar prologicusers00000000000000 ?T@sdZddlZddljjZddlZddlm Z m Z ej ddddZ dd Z d d Zd d ZddZdS)z Workers TestsN)taskWorkerscopemodulecstfdd}|j||jjjrZddlm}|jntj d}j |j }|}|s ddit j |d6d tjkst j|rt j |nd d 6t j |d 6}tt j|nt}}S) NcsjdS)N)stop)workerr=/home/prologic/work/circuits/tests/core/test_worker_thread.py finalizerszworker..finalizerr)Debuggerstartedz?assert %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.wait }() }py2waiterpy0py4)r addfinalizerconfigoptionverbosecircuitsr registerpytest WaitEventstartwait @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)requestr r r @py_assert1 @py_assert3 @py_format5r)rr r s    e rcCs7d}d}x$|dkr2|d7}|d7}qW|S)Nri@Br)xirrr f s  r+cCs||S)Nr)abrrr add)sr.c Cse|jtt}tj}d}|||}|sdditj|d6tj|d6tj|d6dtjkstj |rtj|ndd6d tjkstj trtjtnd d 6}t tj |nt }}}|j }|sdd itj|d6dtjksUtj |rdtj|ndd 6}t tj |nt }|j}d }||k}|sStjd|fd||fitj|d6tj|d6dtjkstj |rtj|ndd 6}di|d6}t tj |nt }}}dS)Nresultr zSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }py5rpy7r)py3rrz*assert %(py2)s {%(py2)s = %(py0)s.result }i@B==-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sassert %(py7)s)r3)r4r5)firerr+rwait_forrrrrr r!r"r#r/value_call_reprcompare) rr)r% @py_assert4 @py_assert6 @py_format8 @py_format3r& @py_format6rrr test-s*  U  |r?c Csk|jttdd}tj}d}|||}|sdditj|d6tj|d6tj|d6d tjkstj |rtj|nd d 6d tjkstj trtjtnd d 6}t tj |nt }}}|j }|sdd itj|d6d tjks[tj |rjtj|nd d 6}t tj |nt }|j}d}||k}|sYtjd|fd||fitj|d6tj|d6d tjkstj |r%tj|nd d 6}di|d6}t tj |nt }}}dS)Nr(r/r zSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }r0rr1r)r2rrz*assert %(py2)s {%(py2)s = %(py0)s.result }r3-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sassert %(py7)s)r3)rBrC)r6rr.rr7rrrrr r!r"r#r/r8r9) rr)r%r:r;r<r=r&r>rrr test_args6s*  U  |rD)__doc__builtinsr_pytest.assertion.rewrite assertionrewriterrrrrfixturerr+r.r?rDrrrr s    circuits-3.1.0/tests/core/__pycache__/test_channel_selection.cpython-26-PYTEST.pyc0000644000014400001440000001016212407376150031027 0ustar prologicusers00000000000000 ?Tc@sddkZddkiiZddklZlZl Z defdYZ defdYZ defdYZ d efd YZ d efd YZd ZdS(iN(tEventt ComponenttManagertfoocBseZdZdZRS(s foo Eventta(R(t__name__t __module__t__doc__tchannels(((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyRstbarcBseZdZRS(s bar Event(RRR(((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyR stAcBseZdZdZRS(RcCsdS(NtFoo((tself((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyRs(RRtchannelR(((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyR stBcBseZdZdZRS(tbcCsdS(Ns Hello World!((R ((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyRs(RRR R(((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyRstCcBs eZdZdZdZRS(tccCs|itS(N(tfireR (R ((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyR$scCsdS(NtBar((R ((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyR 's(RRR RR (((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyR s cCs+tttt}x|o|iq!W|it}|i|i}d}||j}|pti d|fd||fhdt i jpti |oti |ndd6ti |d6ti |d6}dh|d 6}tti|nd}}}|itd }|i|i}d }||j}|pti d|fd||fhdt i jpti |oti |ndd6ti |d6ti |d6}dh|d 6}tti|nd}}}|itd d }|i|i}dd g}||j}|pti d|fd||fhdt i jpti |oti |ndd6ti |d6ti |d6}dh|d 6}tti|nd}}}|itd }|i|i|i}d}||j}|pti d|fd||fhdt i jpti |oti |ndd6ti |d6ti |d6}dh|d 6}tti|nd}}}dS(NR s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)stxtpy0tpy2tpy5sassert %(py7)stpy7Rs Hello World!RRR(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)s(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)s(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)s(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)s(RR RRtflushRRtvaluet @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(tmRt @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyttest+sZ            (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtcircuitsRRRRR R RRR*(((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyts  circuits-3.1.0/tests/core/__pycache__/test_call_wait_timeout.cpython-32-PYTEST.pyc0000644000014400001440000002120012414363275031051 0ustar prologicusers00000000000000l ?T(c@sddlZddljjZddlZddlmZm Z m Z m Z Gdde Z Gdde Z Gdde ZGd d e Zejd d d ZdZdZdZdZdS(iN(uhandleru ComponentuEventu TimeoutErrorcBs|EeZdZdZdS(u wait EventNT(u__name__u __module__u__doc__uTrueusuccess(u __locals__((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyuwaits uwaitcBs|EeZdZdZdS(u call EventNT(u__name__u __module__u__doc__uTrueusuccess(u __locals__((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyucall s ucallcBs|EeZdZdZdS(u hello EventNT(u__name__u __module__u__doc__uTrueusuccess(u __locals__((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyuhellos uhellocBsS|EeZedddZeddZedd dZdS( uwaiticcs`|jt}y|jdd|VWn*tk rV}z |VWYdd}~XnX|VdS(Nuhelloutimeout(ufireuhellouwaitu TimeoutError(uselfutimeouturesultue((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyu_on_waits uhellocCsdS(Nuhello((uself((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyu _on_hello"sucallccsYd}y|jtd|V}Wn*tk rO}z |VWYdd}~XnX|VdS(Nutimeout(uNoneucalluhellou TimeoutError(uselfutimeouturesultue((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyu_on_call&s Nii(u__name__u __module__uhandleru_on_waitu _on_hellou_on_call(u __locals__((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyuApps    uAppuscopeumodulecstj||j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj |nd}}}fd }|j |S( Nu registereduuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4csjdS(N(u unregister((uapp(uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyu finalizer6s( uAppuregisteruwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu addfinalizer(urequestumanageruwatcheru @py_assert1u @py_assert3u @py_assert5u @py_format7u finalizer((uappuA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyuapp1s  u c Cs|jtd}|j}d}||}|sdditj|d6dtjksqtj|rtj|ndd6tj|d6tj|d 6}ttj|nd}}}|j }d } || k}|stj d|fd|| fitj| d 6dtjksDtj|rStj|ndd6} di| d6} ttj| nd}} dS(Ni u wait_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4uhellou==u%(py0)s == %(py3)supy3uvalueuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s( ufireuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert2u @py_format4u @py_format6((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyutest_wait_success>s   u  lc Cs|jtd}|j}d}||}|sdditj|d6dtjksqtj|rtj|ndd6tj|d6tj|d 6}ttj|nd}}}|j }t |t }|sdd id tjkstjt r)tjt nd d6d tjksQtj|r`tj|nd d 6dtjkstjt rtjt ndd6tj|d 6} ttj| nd}dS(Niu wait_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4u5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }u TimeoutErroruvalueupy1u isinstance( ufireuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu isinstanceu TimeoutError( umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_format5((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyutest_wait_failureGs  u c Cs|jtd}|j}d}||}|sdditj|d6dtjksqtj|rtj|ndd6tj|d6tj|d 6}ttj |nd}}}|j }d } || k}|stj d|fd|| fitj| d 6dtjksDtj|rStj|ndd6} di| d6} ttj | nd}} dS(Ni u call_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4uhellou==u%(py0)s == %(py3)supy3uvalueuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s( ufireucalluwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert2u @py_format4u @py_format6((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyutest_call_successPs   u  lc Cs|jtd}|j}d}||}|sdditj|d6dtjksqtj|rtj|ndd6tj|d6tj|d 6}ttj |nd}}}|j }t |t }|sdd id tjkstjt r)tjt nd d6d tjksQtj|r`tj|nd d 6dtjkstjt rtjt ndd6tj|d 6} ttj | nd}dS(Niu call_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4u5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }u TimeoutErroruvalueupy1u isinstance(ufireucalluwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu isinstanceu TimeoutError( umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_format5((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyutest_call_failureYs  u (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestu circuits.coreuhandleru ComponentuEventu TimeoutErroruwaitucalluhellouAppufixtureuapputest_wait_successutest_wait_failureutest_call_successutest_call_failure(((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyus  " circuits-3.1.0/tests/core/__pycache__/__init__.cpython-32.pyc0000644000014400001440000000021612414363275025022 0ustar prologicusers00000000000000l Qc@sdS(N((((u3/home/prologic/work/circuits/tests/core/__init__.pyuscircuits-3.1.0/tests/core/__pycache__/test_manager_repr.cpython-27-PYTEST.pyc0000644000014400001440000000706012414363102030007 0ustar prologicusers00000000000000 ?Tc@sdZddlZddljjZddlZddlm Z ddl m Z ddl Z ddl mZmZdefdYZdZdS( s:Manager Repr Tests Test Manager's representation string. iN(tsleep(tcurrent_thread(t ComponenttManagertAppcBseZdZRS(cOsdS(N((tselfteventtargstkwargs((s</home/prologic/work/circuits/tests/core/test_manager_repr.pyttests(t__name__t __module__R (((s</home/prologic/work/circuits/tests/core/test_manager_repr.pyRsc Csdtjtjf}t}t|}d}||}||k}|sitjd|fd||fitj|d6dt j kstj |rtj|ndd6dt j kstj trtjtndd 6d t j kstj |r%tj|nd d 6tj|d 6}di|d6}t tj |nd}}}}t}|j|t|} d}||}| |k} | stjd| fd| |fitj|d6dt j kstj | r tj| ndd 6d t j ksHtj |rWtj|nd d6} di| d 6} t tj | nd} }}|jtj|dttdt|} d}||}| |k} | stjd| fd | |fitj|d6dt j ks@tj | rOtj| ndd 6d t j kswtj |rtj|nd d6} d!i| d 6} t tj | nd} }}|jtj|ddt|} d}||}| |k} | stjd"| fd#| |fitj|d6dt j ksetj | rttj| ndd 6d t j kstj |rtj|nd d6} d$i| d 6} t tj | nd} }}dS(%Ns%s:%sss==s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)tpy3tmtpy1treprtpy0tidtpy7tpy6tsassert %(py10)stpy10ss%(py0)s == (%(py3)s %% %(py4)s)tstpy4sassert %(py7)st_runningg?st_Manager__thread(s==(s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)sassert %(py10)s(s==(s%(py0)s == (%(py3)s %% %(py4)s)sassert %(py7)s(s==(s%(py0)s == (%(py3)s %% %(py4)s)sassert %(py7)s(s==(s%(py0)s == (%(py3)s %% %(py4)s)sassert %(py7)s(tostgetpidRtgetNameRRt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNoneRtregistertstarttpytesttwait_fortTrueRtstop( RR t @py_assert2t @py_assert5t @py_assert8t @py_assert4t @py_format9t @py_format11tappRt @py_assert1t @py_format6t @py_format8((s</home/prologic/work/circuits/tests/core/test_manager_repr.pyt test_mainsZ              (t__doc__t __builtin__R t_pytest.assertion.rewritet assertiontrewriteRRttimeRt threadingRR(tcircuitsRRRR6(((s</home/prologic/work/circuits/tests/core/test_manager_repr.pyts   circuits-3.1.0/tests/core/__pycache__/test_globals.cpython-32-PYTEST.pyc0000644000014400001440000001333012414363275026774 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlmZmZm Z GddeZ GddeZ Gdde Z Gd d e Z d Zd Zd ZdS(iN(uhandleruEventu ComponentcBs|EeZdZdS(u foo EventN(u__name__u __module__u__doc__(u __locals__((u7/home/prologic/work/circuits/tests/core/test_globals.pyufoos ufoocBs|EeZdZdS(u test EventN(u__name__u __module__u__doc__(u __locals__((u7/home/prologic/work/circuits/tests/core/test_globals.pyutest s utestcBs5|EeZdZdZedddZdS(uacCsdS(Nu Hello World!((uself((u7/home/prologic/work/circuits/tests/core/test_globals.pyutestsupriorityg?cOsdS(NuFoo((uselfueventuargsukwargs((u7/home/prologic/work/circuits/tests/core/test_globals.pyu _on_eventsN(u__name__u __module__uchannelutestuhandleru _on_event(u __locals__((u7/home/prologic/work/circuits/tests/core/test_globals.pyuAs  uAcBs,|EeZedddddZdS(upriorityg$@uchannelu*cOsdS(NuBar((uselfueventuargsukwargs((u7/home/prologic/work/circuits/tests/core/test_globals.pyu _on_channelsN(u__name__u __module__uhandleru _on_channel(u __locals__((u7/home/prologic/work/circuits/tests/core/test_globals.pyuBs uBcCs:tt}x|r&|jqW|jtd}x|rR|jq?W|jd}d}||k}|stjd|fd||fitj|d6tj|d6}di|d 6}t tj |nd}}}|jd }d }||k}|stjd|fd||fitj|d6tj|d6}di|d 6}t tj |nd}}}|jd }d}||k}|s(tjd|fd||fitj|d6tj|d6}di|d 6}t tj |nd}}}dS(NuaiuBaru==u%(py1)s == %(py4)supy1upy4uuassert %(py6)supy6iuFooiu Hello World!(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s( uAuBuflushufireutestuvalueu @pytest_aru_call_reprcompareu _saferepruAssertionErroru_format_explanationuNone(uappuxu @py_assert0u @py_assert3u @py_assert2u @py_format5u @py_format7((u7/home/prologic/work/circuits/tests/core/test_globals.pyu test_main!s<    E  E  EcCs=tt}x|r&|jqWt}|j|}x|rU|jqBW|jd}d}||k}|stjd|fd||fitj|d6tj|d6}di|d 6}t tj |nd}}}|jd }d }||k}|stjd|fd||fitj|d6tj|d6}di|d 6}t tj |nd}}}|jd }d }||k}|s+tjd|fd||fitj|d6tj|d6}di|d 6}t tj |nd}}}dS(NiuBaru==u%(py1)s == %(py4)supy1upy4uuassert %(py6)supy6iuFooiu Hello World!(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s( uAuBuflushutestufireuvalueu @pytest_aru_call_reprcompareu _saferepruAssertionErroru_format_explanationuNone(uappueuxu @py_assert0u @py_assert3u @py_assert2u @py_format5u @py_format7((u7/home/prologic/work/circuits/tests/core/test_globals.pyu test_event/s>     E  E  EcCs1tt}x|r&|jqWt}|j|d}x|rX|jqEW|j}d}||k}|stjd |fd ||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}dS(NubuBaru==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2uxupy0upy5uuassert %(py7)supy7(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(uAuBuflushufooufireuvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uappueuxu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u7/home/prologic/work/circuits/tests/core/test_globals.pyu test_channel>s     |(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsuhandleruEventu ComponentufooutestuAuBu test_mainu test_eventu test_channel(((u7/home/prologic/work/circuits/tests/core/test_globals.pyus    circuits-3.1.0/tests/core/__pycache__/test_errors.cpython-27-PYTEST.pyc0000644000014400001440000001114312414363101026655 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZddlmZm Z defdYZ de fdYZ dZ ej dZd ZdS( iN(tEventt ComponentttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s6/home/prologic/work/circuits/tests/core/test_errors.pyRstAppcBs)eZdZdZdddZRS(cCsDtt|jd|_d|_d|_d|_d|_dS(N( tsuperRt__init__tNonetetypetevaluet etracebackthandlertfevent(tself((s6/home/prologic/work/circuits/tests/core/test_errors.pyRs     cCstS(N(tx(R((s6/home/prologic/work/circuits/tests/core/test_errors.pyRscCs1||_||_||_||_||_dS(N(R R R R R(RR R R R R((s6/home/prologic/work/circuits/tests/core/test_errors.pyt exceptions     N(RRRRR R(((s6/home/prologic/work/circuits/tests/core/test_errors.pyR s cCs |dS(N((te((s6/home/prologic/work/circuits/tests/core/test_errors.pytreraise"scs?tj||jdfd}|j|S(Nt registeredcsjdS(N(t unregister((tapp(s6/home/prologic/work/circuits/tests/core/test_errors.pyt finalizer+s(Rtregistertwaitt addfinalizer(trequesttmanagertwatcherR((Rs6/home/prologic/work/circuits/tests/core/test_errors.pyR&s   c CsCt}|j||jd|j}|tk}|s tjd|fd|tfitj|d6dtj kstj |rtj|ndd6dtj kstj trtjtndd6}di|d 6}t tj |nd}}tjtd |j|j}t|t}|s6d d itj|d6dtj kstj |rtj|ndd6dtj kstj trtjtndd6tj|d 6dtj kstj trtjtndd6}t tj |nd}}|j}|j}||k}|s@tjd|fd||fitj|d6dtj kstj |rtj|ndd6tj|d 6dtj kstj |r tj|ndd6}di|d6} t tj | nd}}}|j}||k}|s5tjd|fd||fitj|d6dtj kstj |rtj|ndd6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}dS( NRs==s-%(py2)s {%(py2)s = %(py0)s.etype } == %(py4)stpy2Rtpy0t NameErrortpy4tsassert %(py6)stpy6cSs t|S(N(R(R((s6/home/prologic/work/circuits/tests/core/test_errors.pyt9ssUassert %(py6)s {%(py6)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.etraceback }, %(py4)s) }tpy3tpy1t isinstancetlistsI%(py2)s {%(py2)s = %(py0)s.handler } == %(py6)s {%(py6)s = %(py4)s.test }sassert %(py8)stpy8s.%(py2)s {%(py2)s = %(py0)s.fevent } == %(py4)sR(s==(s-%(py2)s {%(py2)s = %(py0)s.etype } == %(py4)ssassert %(py6)s(s==(sI%(py2)s {%(py2)s = %(py0)s.handler } == %(py6)s {%(py6)s = %(py4)s.test }sassert %(py8)s(s==(s.%(py2)s {%(py2)s = %(py0)s.fevent } == %(py4)ssassert %(py6)s(RtfireRR R t @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationR tpytesttraisesR R R'R(R R( RRRt @py_assert1t @py_assert3t @py_format5t @py_format7t @py_assert2t @py_assert5t @py_format9((s6/home/prologic/work/circuits/tests/core/test_errors.pyt test_main3s@         (t __builtin__R.t_pytest.assertion.rewritet assertiontrewriteR+R3tcircuitsRRRRRtfixtureRR<(((s6/home/prologic/work/circuits/tests/core/test_errors.pyts    circuits-3.1.0/tests/core/__pycache__/test_dynamic_handlers.cpython-34-PYTEST.pyc0000644000014400001440000000636712414363521030665 0ustar prologicusers00000000000000 ?TX@sddlZddljjZddlZddlmZm Z m Z Gddde Z edddZ ddZ d d ZdS) N)handlerEventManagerc@seZdZdZdS)fooz foo EventN)__name__ __module__ __qualname____doc__r r @/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyrs rcCsdS)Nz Hello World!r )selfr r r on_foo sr cCst}|j|jttj|d}|jt}|j|j }d}||k}|st j d |fd ||fit j |d6dt jkst j|rt j |ndd6}d i|d 6}tt j|nt}}|jdS)Nrz Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5)r)rr)rstart addHandlerr pytest WaitEventfirerwaitvalue @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonestop)mwaiterxr @py_assert2 @py_assert1 @py_format4 @py_format6r r r test_addHandlers      l r.c Cs,t}|j|jt}tj|d}|jt}|j|j }d}||k}|st j d|fd||fit j |d6dt jkst j|rt j |ndd6}di|d 6}tt j|nt}}|j|tj|d}|jt}|j|j }d} || k} | st j d| fd|| fit j | d 6t j |d 6dt jkst j|rt j |ndd6}di|d6} tt j| nt}} } t|} t| k}|s@t j d|fdt| fit j | d 6dt jkst jtrt j tndd 6dt jkst j|rt j |ndd6dt jkst jtr t j tndd6}d i|d6} tt j| nt}} d} |j} | | k}|st j d!|fd"| | fit j | d6t j | d 6dt jkst j|rt j |ndd6}d#i|d6} tt j| nt} }} |jdS)$Nrz Hello World!r%(py0)s == %(py3)srrrrassert %(py5)sris-%(py2)s {%(py2)s = %(py0)s.value } is %(py5)spy2r)assert %(py7)spy7not in4%(py0)s not in %(py5)s {%(py5)s = %(py2)s(%(py3)s) }dirr'r 5%(py1)s not in %(py5)s {%(py5)s = %(py3)s._handlers }py1)r)r/r0)r1)r2r4)r6)r7r4)r6)r9r4)rrrr rrrrrrrrrr r!r"r#r$r% removeHandlerr8 _handlersr&) r'methodr(r)rr*r+r,r- @py_assert4 @py_assert3 @py_format8Z @py_assert0r r r test_removeHandler!sT     l     |   |rA)builtinsr _pytest.assertion.rewrite assertionrewriterrcircuitsrrrrr r.rAr r r r s   circuits-3.1.0/tests/core/__pycache__/test_component_repr.cpython-32-PYTEST.pyc0000644000014400001440000001336112414363275030407 0ustar prologicusers00000000000000l ?T{c @sdZddlZddljjZddlZyddlm Z Wn"e k rhddlm Z YnXddl m Z mZGddeZGdd e Zd Zd ZdS( u>Component Repr Tests Test Component's representation string. iN(ucurrent_thread(u currentThread(uEventu ComponentcBs|EeZdZdS(cOsdS(N((uselfueventuargsukwargs((u>/home/prologic/work/circuits/tests/core/test_component_repr.pyutestsN(u__name__u __module__utest(u __locals__((u>/home/prologic/work/circuits/tests/core/test_component_repr.pyuApps uAppcBs|EeZdS(N(u__name__u __module__(u __locals__((u>/home/prologic/work/circuits/tests/core/test_component_repr.pyutests utestc Cs?dtjtjf}t}t|}d}||}||k}|sitjd|fd||fitj|d6dt j kstj |rtj|ndd6dt j kstj trtjtndd 6d t j kstj |r%tj|nd d 6tj|d 6}di|d6}t tj |nd}}}}|jtt|}d}||}||k}|stjd|fd||fitj|d6dt j ks tj |rtj|ndd6dt j ksBtj trQtjtndd 6d t j ksytj |rtj|nd d 6tj|d 6}di|d6}t tj |nd}}}}|jt|}d}||}||k}|s)tjd|fd||fitj|d6dt j kshtj |rwtj|ndd6dt j kstj trtjtndd 6d t j kstj |rtj|nd d 6tj|d 6}di|d6}t tj |nd}}}}dS(Nu%s:%suu==u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)upy3uappupy1ureprupy0uidupy7upy6uuassert %(py10)supy10u(u==(u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)uassert %(py10)s(u==(u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)uassert %(py10)s(u==(u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)uassert %(py10)s(uosugetpiducurrent_threadugetNameuAppurepru @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneufireutestuflush(uiduappu @py_assert2u @py_assert5u @py_assert8u @py_assert4u @py_format9u @py_format11((u>/home/prologic/work/circuits/tests/core/test_component_repr.pyu test_mains>        c CsEdtjtjf}tdd}t|}d}||}||k}|sotjd|fd||fitj|d6dt j kstj |rtj|ndd 6d t j kstj trtjtnd d 6d t j kstj |r+tj|nd d 6tj|d6}di|d6}t tj |nd}}}}|jtt|}d}||}||k}|stjd|fd||fitj|d6dt j kstj |r tj|ndd 6d t j ksHtj trWtjtnd d 6d t j kstj |rtj|nd d 6tj|d6}di|d6}t tj |nd}}}}|jt|}d}||}||k}|s/tjd|fd||fitj|d6dt j ksntj |r}tj|ndd 6d t j kstj trtjtnd d 6d t j kstj |rtj|nd d 6tj|d6}di|d6}t tj |nd}}}}dS(Nu%s:%suchanneliuu==u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)upy3uappupy1ureprupy0uidupy7upy6uuassert %(py10)supy10u(ii(u==(u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)uassert %(py10)s(u==(u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)uassert %(py10)s(u==(u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)uassert %(py10)s(uosugetpiducurrent_threadugetNameuAppurepru @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneufireutestuflush(uiduappu @py_assert2u @py_assert5u @py_assert8u @py_assert4u @py_format9u @py_format11((u>/home/prologic/work/circuits/tests/core/test_component_repr.pyutest_non_str_channel+s>       (u__doc__ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruosu threadingucurrent_threadu ImportErroru currentThreaducircuitsuEventu ComponentuApputestu test_mainutest_non_str_channel(((u>/home/prologic/work/circuits/tests/core/test_component_repr.pyus    circuits-3.1.0/tests/core/__pycache__/test_manager_repr.cpython-26-PYTEST.pyc0000644000014400001440000000700112407376150030012 0ustar prologicusers00000000000000 ?Tc @sdZddkZddkiiZddkZddkl Z ddk l Z ddk Z ddk lZlZdefdYZdZdS( s:Manager Repr Tests Test Manager's representation string. iN(tsleep(tcurrent_thread(t ComponenttManagertAppcBseZdZRS(cOsdS(N((tselfteventtargstkwargs((s</home/prologic/work/circuits/tests/core/test_manager_repr.pyttests(t__name__t __module__R (((s</home/prologic/work/circuits/tests/core/test_manager_repr.pyRsc Csdtitif}t}t|}d}||}||j}|ptid|fd||fhdti jpti |oti |ndd6dti jpti toti tndd6ti |d 6d ti jpti |oti |nd d 6ti |d 6}d h|d6}t ti |nd}}}}t}|i|t|} d}||}| |j} | ptid| fd| |fhdti jpti | oti | ndd6ti |d 6d ti jpti |oti |nd d6} dh| d 6} t ti | nd} }}|iti|dttdt|} d}||}| |j} | ptid| fd| |fhdti jpti | oti | ndd6ti |d 6d ti jpti |oti |nd d6} dh| d 6} t ti | nd} }}|iti|ddt|} d}||}| |j} | ptid| fd| |fhdti jpti | oti | ndd6ti |d 6d ti jpti |oti |nd d6} dh| d 6} t ti | nd} }}dS( Ns%s:%sss==s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)tmtpy1treprtpy0tpy3tidtpy7tpy6sassert %(py10)stpy10ss%(py0)s == (%(py3)s %% %(py4)s)tstpy4sassert %(py7)st_runningg?st_Manager__thread(s==(s=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)(s==(s%(py0)s == (%(py3)s %% %(py4)s)(s==(s%(py0)s == (%(py3)s %% %(py4)s)(s==(s%(py0)s == (%(py3)s %% %(py4)s)(tostgetpidRtgetNameRRt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNoneRtregistertstarttpytesttwait_fortTrueRtstop( RR t @py_assert2t @py_assert5t @py_assert8t @py_assert4t @py_format9t @py_format11tappRt @py_assert1t @py_format6t @py_format8((s</home/prologic/work/circuits/tests/core/test_manager_repr.pyt test_mainsZ              (t__doc__t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRRttimeRt threadingRR'tcircuitsRRRR5(((s</home/prologic/work/circuits/tests/core/test_manager_repr.pyts   circuits-3.1.0/tests/core/__pycache__/test_channel_selection.cpython-34-PYTEST.pyc0000644000014400001440000000632712414363521031032 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZmZm Z GdddeZ GdddeZ GdddeZ Gd d d eZ Gd d d eZd dZdS)N)Event ComponentManagerc@seZdZdZdZdS)fooz foo EventaN)r)__name__ __module__ __qualname____doc__channelsr r A/home/prologic/work/circuits/tests/core/test_channel_selection.pyrs rc@seZdZdZdS)barz bar EventN)rrr r r r r r r s rc@s"eZdZdZddZdS)ArcCsdS)NFoor )selfr r r rszA.fooN)rrr channelrr r r r rs rc@s"eZdZdZddZdS)BbcCsdS)Nz Hello World!r )rr r r rszB.fooN)rrr rrr r r r rs rc@s.eZdZdZddZddZdS)CccCs|jtS)N)firer)rr r r r$szC.foocCsdS)NBarr )rr r r r'szC.barN)rrr rrrr r r r r s  rc Cstttt}x|r4|jq!W|jt}|j|j}d}||k}|stj d|fd||fitj |d6tj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nt}}}|jtd }|j|j}d }||k}|s tj d|fd||fitj |d6tj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nt}}}|jtd d }|j|j}dd g}||k}|stj d|fd||fitj |d6tj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nt}}}|jtd}|j|j|j}d}||k}|stj d|fd||fitj |d6tj |d6dt j kstj |rtj |ndd6}di|d 6}ttj|nt}}}dS)Nr==-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)spy5py2xpy0assert %(py7)spy7rz Hello World!rrr)r)rr )r)rr )r)rr )r)rr )rrrrflushrrvalue @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)mr @py_assert1 @py_assert4 @py_assert3 @py_format6 @py_format8r r r test+sX    |   |  |    |r3)builtinsr'_pytest.assertion.rewrite assertionrewriter$circuitsrrrrrrrrr3r r r r s  circuits-3.1.0/tests/core/__pycache__/test_new_filter.cpython-27-PYTEST.pyc0000644000014400001440000000643312414363102027506 0ustar prologicusers00000000000000 ?TXc@sddlZddljjZddlZddlmZm Z de fdYZ defdYZ ej dZ dZd ZdS( iN(t ComponenttEventthellocBseZdZeZRS(s hello Event(t__name__t __module__t__doc__tTruetsuccess(((s:/home/prologic/work/circuits/tests/core/test_new_filter.pyRstAppcBseZdZRS(cOs#|jdtr|jndS(Ntstops Hello World!(tgettFalseR (tselfteventtargstkwargs((s:/home/prologic/work/circuits/tests/core/test_new_filter.pyRs (RRR(((s:/home/prologic/work/circuits/tests/core/test_new_filter.pyRscsIttj|jdfd}|j|S(Nt registeredcsjjddS(Nt unregistered(t unregistertwait((tapptwatcher(s:/home/prologic/work/circuits/tests/core/test_new_filter.pyt finalizers (RtregisterRt addfinalizer(trequesttmanagerRR((RRs:/home/prologic/work/circuits/tests/core/test_new_filter.pyRs   cCs|jt}|jd|j}ddg}||k}|stjd |fd ||fitj|d6dtjkstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}dS(Nt hello_successs Hello World!s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)stpy2txtpy0tpy5tsassert %(py7)stpy7(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s( tfireRRtvaluet @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(RRRt @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8((s:/home/prologic/work/circuits/tests/core/test_new_filter.pyt test_normal$s  |cCs|jtdt}|jd|j}d}||k}|stjd |fd||fitj|d6dtj kstj |rtj|ndd6tj|d 6}di|d 6}t tj |nd}}}dS(NR Rs Hello World!s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sRRRRR sassert %(py7)sR!(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(R"RRRR#R$R%R&R'R(R)R*R+R,(RRRR-R.R/R0R1((s:/home/prologic/work/circuits/tests/core/test_new_filter.pyt test_filter*s   |(t __builtin__R't_pytest.assertion.rewritet assertiontrewriteR$tpytesttcircuitsRRRRtfixtureRR2R3(((s:/home/prologic/work/circuits/tests/core/test_new_filter.pyts   circuits-3.1.0/tests/core/__pycache__/test_core.cpython-33-PYTEST.pyc0000644000014400001440000000732412414363411026300 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZmZm Z GdddeZ GdddeZ e Z e Z e je xe re jqWddZd d ZdS( iN(uEventu ComponentuManagercBs|EeZdZdZdS(utestu test EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u4/home/prologic/work/circuits/tests/core/test_core.pyutestsutestcBs8|EeZdZddZddZddZdS(uAppcCsdS(Nu Hello World!((uself((u4/home/prologic/work/circuits/tests/core/test_core.pyutest suApp.testcGsdS(N((uselfuargs((u4/home/prologic/work/circuits/tests/core/test_core.pyu unregisteredsuApp.unregisteredcGsdS(N((uselfuargs((u4/home/prologic/work/circuits/tests/core/test_core.pyuprepare_unregistersuApp.prepare_unregisterN(u__name__u __module__u __qualname__utestu unregistereduprepare_unregister(u __locals__((u4/home/prologic/work/circuits/tests/core/test_core.pyuApp s  uAppcCstjt}tj|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6tj|d6}d i|d 6}t tj |nd}}}dS(Nu Hello World!u==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2uxupy0upy5uuassert %(py7)supy7(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(umufireutestuflushuvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uxu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u4/home/prologic/work/circuits/tests/core/test_core.pyu test_fires   |u test_firecCsttk}|stjd |fd ttfidtjksTtjtrctjtndd6dtjkstjtrtjtndd6}di|d 6}ttj |nd}tt k}| }|stjd|fdtt fid tjks/tjt r>tjt nd d6dtjksftjtrutjtndd6}di|d 6}ttj |nd}}dS(Nuinu%(py0)s in %(py2)sumupy2uAppupy0uuassert %(py4)supy4uappuassert not %(py4)s(uin(u%(py0)s in %(py2)suassert %(py4)s(uin(u%(py0)s in %(py2)suassert not %(py4)s( uAppumu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuapp(u @py_assert1u @py_format3u @py_format5u @py_assert5u @py_format6((u4/home/prologic/work/circuits/tests/core/test_core.pyu test_contains$s  u test_contains(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsuEventu ComponentuManagerutestuAppumuappuregisteruflushu test_fireu test_contains(((u4/home/prologic/work/circuits/tests/core/test_core.pyus      circuits-3.1.0/tests/core/__pycache__/test_loader.cpython-27-PYTEST.pyc0000644000014400001440000000406712414363102026617 0ustar prologicusers00000000000000 ?Tc@syddlZddljjZddlZddlmZddl m Z m Z m Z de fdYZ dZdS(iN(tdirname(tEventtLoadertManagerttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s6/home/prologic/work/circuits/tests/core/test_loader.pyR sc Cst}tdttgj|}|j|jd|jt}t j }d}|||}|s;ddidt j kst j|rt j|ndd6t j|d6d t j kst jt rt jt nd d 6t j|d 6t j|d 6}tt j|nd}}}|j}d }||k}|st jd|fd||fit j|d6dt j kst j|rt j|ndd 6} di| d 6} tt j| nd}}|jdS(NtpathstapptresulttsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }txtpy3tpy2tpytesttpy0tpy7tpy5s Hello World!s==s%(py0)s == %(py3)stssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(RRRt__file__tregistertstarttloadtfireRRtwait_fort @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetvaluet_call_reprcomparetstop( tmtloaderR t @py_assert1t @py_assert4t @py_assert6t @py_format8Rt @py_assert2t @py_format4t @py_format6((s6/home/prologic/work/circuits/tests/core/test_loader.pyt test_mains* !     l (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRRtos.pathRtcircuitsRRRRR.(((s6/home/prologic/work/circuits/tests/core/test_loader.pyts  circuits-3.1.0/tests/core/__pycache__/test_component_targeting.cpython-27-PYTEST.pyc0000644000014400001440000000612612414363101031414 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZddlmZm Z de fdYZ defdYZ ej ddd Z d ZdS( iN(t ComponenttEventthellocBseZdZeZRS(s hello Event(t__name__t __module__t__doc__tTruetsuccess(((sC/home/prologic/work/circuits/tests/core/test_component_targeting.pyR stAppcBseZdZdZRS(tappcCsdS(Ns Hello World!((tself((sC/home/prologic/work/circuits/tests/core/test_component_targeting.pyRs(RRtchannelR(((sC/home/prologic/work/circuits/tests/core/test_component_targeting.pyRstscopetmodulecstj||j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj |nd}}}fd }|j |S( Nt registeredtsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }tpy2twatchertpy0tpy6tpy4csjdS(N(t unregister((R (sC/home/prologic/work/circuits/tests/core/test_component_targeting.pyt finalizers( Rtregistertwaitt @pytest_art _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonet addfinalizer(trequesttmanagerRt @py_assert1t @py_assert3t @py_assert5t @py_format7R((R sC/home/prologic/work/circuits/tests/core/test_component_targeting.pyR s  u c Cs|jt|}|j}d}||}|sdditj|d6dtjksqtj|rtj|ndd6tj|d6tj|d6}ttj |nd}}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksDtj|rStj|nd d6} di| d6} ttj | nd}} dS(Nt hello_successRsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRRRs Hello World!s==s%(py0)s == %(py3)stpy3tvaluesassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s( tfireRRRRRRRRRR R*t_call_reprcompare( R#RR txR$R%R&R'R*t @py_assert2t @py_format4t @py_format6((sC/home/prologic/work/circuits/tests/core/test_component_targeting.pyttest$s   u  l(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtpytesttcircuitsRRRRtfixtureR R2(((sC/home/prologic/work/circuits/tests/core/test_component_targeting.pyts   circuits-3.1.0/tests/core/__pycache__/test_loader.cpython-32-PYTEST.pyc0000644000014400001440000000427112414363275026623 0ustar prologicusers00000000000000l ?Tc@svddlZddljjZddlZddlmZddl m Z m Z m Z Gdde Z dZdS(iN(udirname(uEventuLoaderuManagercBs|EeZdZdS(u test EventN(u__name__u __module__u__doc__(u __locals__((u6/home/prologic/work/circuits/tests/core/test_loader.pyutest s utestc Cst}tdttgj|}|j|jd|jt}t j }d}|||}|s;ddidt j kst j|rt j|ndd6t j|d6d t j kst jt rt jt nd d 6t j|d 6t j|d 6}tt j|nd}}}|j}d }||k}|st jd|fd||fit j|d6dt j kst j|rt j|ndd 6} di| d 6} tt j| nd}}|jdS(NupathsuappuresultuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uxupy3upy2upytestupy0upy7upy5u Hello World!u==u%(py0)s == %(py3)susuassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uManageruLoaderudirnameu__file__uregisterustartuloadufireutestupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuvalueu_call_reprcompareustop( umuloaderuxu @py_assert1u @py_assert4u @py_assert6u @py_format8usu @py_assert2u @py_format4u @py_format6((u6/home/prologic/work/circuits/tests/core/test_loader.pyu test_mains* !     l (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuos.pathudirnameucircuitsuEventuLoaderuManagerutestu test_main(((u6/home/prologic/work/circuits/tests/core/test_loader.pyus  circuits-3.1.0/tests/core/__pycache__/test_component_targeting.cpython-34-PYTEST.pyc0000644000014400001440000000502012414363521031410 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlZddlmZm Z Gddde Z GdddeZ ej ddd d Z d d ZdS) N) ComponentEventc@seZdZdZdZdS)helloz hello EventTN)__name__ __module__ __qualname____doc__successr r C/home/prologic/work/circuits/tests/core/test_component_targeting.pyr s rc@s"eZdZdZddZdS)AppappcCsdS)Nz Hello World!r )selfr r r rsz App.helloN)rrrchannelrr r r r r s r scopemodulecstj||j}d}||}|sdditj|d6tj|d6dtjks~tj|rtj|ndd6tj|d6}ttj |nt }}}fd d }|j |S) N registeredzFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }py2py6watcherpy0py4csjdS)N) unregisterr )r r r finalizerszapp..finalizer) r registerwait @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone addfinalizer)requestmanagerr @py_assert1 @py_assert3 @py_assert5 @py_format7rr )r r r s  u r c Cs|jt|}|j}d}||}|sdditj|d6tj|d6dtjkstj|rtj|ndd6tj|d6}ttj |nt }}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksDtj|rStj|nd d6} di| d6} ttj | nt }} dS)N hello_successrzFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }rrrrrz Hello World!==%(py0)s == %(py3)spy3valueassert %(py5)spy5)r-)r.r1) firerrrrrr r!r"r#r$r0_call_reprcompare) r'rr xr(r)r*r+r0 @py_assert2 @py_format4 @py_format6r r r test$s   u  lr9)builtinsr_pytest.assertion.rewrite assertionrewriterpytestcircuitsrrrr fixturer r9r r r r s   circuits-3.1.0/tests/core/__pycache__/test_worker_thread.cpython-32-PYTEST.pyc0000644000014400001440000001212612414363276030214 0ustar prologicusers00000000000000l ?Tc@sdZddlZddljjZddlZddlm Z m Z ej dddZ dZ dZd Zd ZdS( u Workers TestsiN(utaskuWorkeruscopeumodulecstfd}|j||jjjrWddlm}|jntj d}j |j }|}|sddit j |d6dtjkst j|rt j |ndd 6t j |d 6}tt j|nd}}S( NcsjdS(N(ustop((uworker(u=/home/prologic/work/circuits/tests/core/test_worker_thread.pyu finalizersi(uDebuggerustarteduu?assert %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.wait }() }upy2uwaiterupy0upy4(uWorkeru addfinalizeruconfiguoptionuverboseucircuitsuDebuggeruregisterupytestu WaitEventustartuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(urequestu finalizeruDebuggeruwaiteru @py_assert1u @py_assert3u @py_format5((uworkeru=/home/prologic/work/circuits/tests/core/test_worker_thread.pyuworker s    e cCs7d}d}x$|dkr2|d7}|d7}qW|S(Nii@Bi((uxui((u=/home/prologic/work/circuits/tests/core/test_worker_thread.pyuf s  cCs||S(N((uaub((u=/home/prologic/work/circuits/tests/core/test_worker_thread.pyuadd)sc Cse|jtt}tj}d}|||}|sddidtjksdtj|rstj |ndd6tj |d6dtjkstjtrtj tndd6tj |d 6tj |d 6}t tj |nd}}}|j }|sdd itj |d6dtjksUtj|rdtj |ndd6}t tj |nd}|j}d }||k}|sStjd|fd||fitj |d6dtjkstj|rtj |ndd6tj |d 6}di|d 6}t tj |nd}}}dS(NuresultuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uxupy3upy2upytestupy0upy7upy5u*assert %(py2)s {%(py2)s = %(py0)s.result }i@Bu==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(ufireutaskufupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuresultuvalueu_call_reprcompare( uworkeruxu @py_assert1u @py_assert4u @py_assert6u @py_format8u @py_format3u @py_assert3u @py_format6((u=/home/prologic/work/circuits/tests/core/test_worker_thread.pyutest-s*  U  |c Csk|jttdd}tj}d}|||}|sddidtjksjtj|rytj |ndd6tj |d6d tjkstjtrtj tnd d 6tj |d 6tj |d 6}t tj |nd}}}|j }|sdd itj |d6dtjks[tj|rjtj |ndd 6}t tj |nd}|j}d}||k}|sYtjd|fd||fitj |d6dtjkstj|rtj |ndd 6tj |d 6}di|d 6}t tj |nd}}}dS(NiiuresultuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uxupy3upy2upytestupy0upy7upy5u*assert %(py2)s {%(py2)s = %(py0)s.result }iu==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(ufireutaskuaddupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuresultuvalueu_call_reprcompare( uworkeruxu @py_assert1u @py_assert4u @py_assert6u @py_format8u @py_format3u @py_assert3u @py_format6((u=/home/prologic/work/circuits/tests/core/test_worker_thread.pyu test_args6s*  U  |(u__doc__ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsutaskuWorkerufixtureuworkerufuaddutestu test_args(((u=/home/prologic/work/circuits/tests/core/test_worker_thread.pyus    circuits-3.1.0/tests/core/__pycache__/test_errors.cpython-33-PYTEST.pyc0000644000014400001440000001240512414363411026660 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZddlmZm Z GdddeZ Gddde Z ddZ ej d d Zd d ZdS( iN(uEventu ComponentcBs|EeZdZdZdS(utestu test EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u6/home/prologic/work/circuits/tests/core/test_errors.pyutestsutestcsD|EeZdZfddZddZddddZS(uAppcsDtt|jd|_d|_d|_d|_d|_dS(N( usuperuAppu__init__uNoneuetypeuevalueu etracebackuhandlerufevent(uself(u __class__(u6/home/prologic/work/circuits/tests/core/test_errors.pyu__init__s     u App.__init__cCstS(N(ux(uself((u6/home/prologic/work/circuits/tests/core/test_errors.pyutestsuApp.testcCs1||_||_||_||_||_dS(N(uetypeuevalueu etracebackuhandlerufevent(uselfuetypeuevalueu etracebackuhandlerufevent((u6/home/prologic/work/circuits/tests/core/test_errors.pyu exceptions     u App.exceptionN(u__name__u __module__u __qualname__u__init__utestuNoneu exception(u __locals__((u __class__u6/home/prologic/work/circuits/tests/core/test_errors.pyuApp s uAppcCs |dS(N((ue((u6/home/prologic/work/circuits/tests/core/test_errors.pyureraise"sureraisecsBtj||jdfdd}|j|S(Nu registeredcsjdS(N(u unregister((uapp(u6/home/prologic/work/circuits/tests/core/test_errors.pyu finalizer+suapp..finalizer(uAppuregisteruwaitu addfinalizer(urequestumanageruwatcheru finalizer((uappu6/home/prologic/work/circuits/tests/core/test_errors.pyuapp&s   uappc CsFt}|j||jd|j}|tk}|s tjd|fd|tfitj|d6dtj kstj |rtj|ndd6dtj kstj trtjtndd6}di|d 6}t tj |nd}}tjtd d |j|j}t|t}|s9d ditj|d6dtj kstj |rtj|ndd6dtj kstj trtjtndd6tj|d 6dtj kstj trtjtndd6}t tj |nd}}|j}|j}||k}|sCtjd|fd||fitj|d6dtj kstj |rtj|ndd6tj|d 6dtj kstj |rtj|ndd6}di|d6} t tj | nd}}}|j}||k}|s8tjd|fd||fitj|d6dtj kstj |rtj|ndd6dtj kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS(!Nu exceptionu==u-%(py2)s {%(py2)s = %(py0)s.etype } == %(py4)supy2uappupy0u NameErrorupy4uuassert %(py6)supy6cSs t|S(N(ureraise(ue((u6/home/prologic/work/circuits/tests/core/test_errors.pyu9sutest_main..uUassert %(py6)s {%(py6)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.etraceback }, %(py4)s) }upy3upy1u isinstanceulistuI%(py2)s {%(py2)s = %(py0)s.handler } == %(py6)s {%(py6)s = %(py4)s.test }uassert %(py8)supy8u.%(py2)s {%(py2)s = %(py0)s.fevent } == %(py4)sue(u==(u-%(py2)s {%(py2)s = %(py0)s.etype } == %(py4)suassert %(py6)s(u==(uI%(py2)s {%(py2)s = %(py0)s.handler } == %(py6)s {%(py6)s = %(py4)s.test }uassert %(py8)s(u==(u.%(py2)s {%(py2)s = %(py0)s.fevent } == %(py4)suassert %(py6)s(utestufireuwaituetypeu NameErroru @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneupytesturaisesuevalueu etracebacku isinstanceulistuhandlerufevent( uappuwatcherueu @py_assert1u @py_assert3u @py_format5u @py_format7u @py_assert2u @py_assert5u @py_format9((u6/home/prologic/work/circuits/tests/core/test_errors.pyu test_main3s@         u test_main(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsuEventu ComponentutestuAppureraiseufixtureuappu test_main(((u6/home/prologic/work/circuits/tests/core/test_errors.pyus    circuits-3.1.0/tests/core/__pycache__/test_debugger.cpython-34-PYTEST.pyc0000644000014400001440000003420412414363521027134 0ustar prologicusers00000000000000 ?TE @sAdZddlZddljjZddlZddlZyddl m Z Wn"e k rtddl m Z YnXddl m Z ddlmZmZGdddeZGdd d eZGd d d eZd d ZddZddZddZddZddZddZddZdS)zDebugger TestsN)StringIO)Debugger)Event Componentc@seZdZdZdS)testz test EventN)__name__ __module__ __qualname____doc__r r 8/home/prologic/work/circuits/tests/core/test_debugger.pyrs rc@seZdZdddZdS)AppFcCs|rtndS)N) Exception)selfraiseExceptionr r r rszApp.testN)rrr rr r r r r s r c@s4eZdZdZdZddZddZdS)LoggerNcCs ||_dS)N) error_msg)rmsgr r r error$sz Logger.errorcCs ||_dS)N) debug_msg)rrr r r debug'sz Logger.debug)rrr rrrrr r r r rs  rc Cst}t}td|}|j|x|rD|jq1W|jd|j|j}|sdditj |d6dt j kstj |rtj |ndd6}t tj|nt}t}|j||j|jd|jj}t|}||k}|s>tjd|fd||fitj |d 6d t j kstj trtj tnd d6d t j kstj |rtj |nd d 6dt j kstj |r tj |ndd6}di|d6} t tj| nt}}|jd|jd|_|j}| } | sdditj |d6dt j kstj |rtj |ndd6} t tj| nt}} t}|j||jd|jj}d} || k}|stjd|fd|| fitj | d 6dt j kstj |rtj |ndd6} di| d 6}t tj|nt}} |jd|jdS)Nfilerz+assert %(py2)s {%(py2)s = %(py0)s._events }py2debuggerpy0==0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }py5strepy3sassert %(py7)spy7Fz/assert not %(py2)s {%(py2)s = %(py0)s._events }%(py0)s == %(py3)sassert %(py5)s)r)rr#)r)r%r&)r rrregisterflushseektruncate_events @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonerfirereadstripr_call_reprcompare) appstderrr @py_assert1 @py_format3r r" @py_assert4 @py_format6 @py_format8 @py_assert3 @py_format4 @py_assert2r r r test_main+s^       U          U     l  rBc Cst|jd}t|d}t}td|}|j|x|r_|jqLW|jd|j|j }|sddit j |d6dt j kst j|rt j |ndd 6}tt j|nt}t}|j||j|jd|jj}t|} || k}|sYt jd|fd|| fit j | d 6d t j kst jtrt j tnd d6dt j kst j|rt j |ndd6dt j kst j|r%t j |ndd 6} di| d6} tt j| nt}} |jd|jd|_ |j }| } | sddit j |d6dt j kst j|rt j |ndd 6} tt j| nt}} t}|j||jd|jj}d}||k}|st jd|fd||fit j |d6dt j kst j|rt j |ndd 6} di| d 6} tt j| nt}}|jd|jdS)Nz debug.logzw+rrrz+assert %(py2)s {%(py2)s = %(py0)s._events }rrrr0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }rrr r!r"assert %(py7)sr$Fz/assert not %(py2)s {%(py2)s = %(py0)s._events }%(py0)s == %(py3)sassert %(py5)s)r)rCrD)r)rErF)rensureopenr rr'r(r)r*r+r,r-r.r/r0r1r2r3rr4r5r6r7)tmpdirlogfiler9r8rr:r;r r"r<r=r>r?r@rAr r r test_fileMs`      U          U     l  rKc Cs6dtjkrtjdnt|jd}t|d}t}td|}|j |x|r~|j qkW|j d|j |j }|sdditj|d 6d tjkstj|rtj|nd d 6}ttj|nt}t}|j||j |j d|jj}t|} || k}|sxtjd|fd|| fitj| d6dtjkstjtrtjtndd 6dtjkstj|r tj|ndd6dtjks5tj|rDtj|ndd 6} di| d6} ttj| nt}} |j d|j d|_ |j }| } | s%dditj|d 6d tjkstj|rtj|nd d 6} ttj| nt}} t}|j||j d|jj}d}||k}|stjd|fd||fitj|d6dtjkstj|rtj|ndd 6} di| d6} ttj| nt}}|j d|j dS)NZ__pypy__zBroken on pypyz debug.logzr+rrrz+assert %(py2)s {%(py2)s = %(py0)s._events }rrrr0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }rrr r!r"assert %(py7)sr$Fz/assert not %(py2)s {%(py2)s = %(py0)s._events }%(py0)s == %(py3)sassert %(py5)s)r)rLrM)r)rNrO)sysmodulespytestskiprrGrHr rr'r(r)r*r+r,r-r.r/r0r1r2r3rr4r5r6r7)rIrJr9r8rr:r;r r"r<r=r>r?r@rAr r r test_filenamersd      U          U     l  rTcCst}t}td|}|j|x|rD|jq1W|jd|j|j}|sdditj |d6dt j kstj |rtj |ndd6}t tj|nt}|j}|sZdditj |d6dt j ks(tj |r7tj |ndd6}t tj|nt}td d }|j||j|jd|jj}t|}||k}|stjd|fd||fitj |d 6dt j kstj tr$tj tndd6dt j ksLtj |r[tj |ndd6dt j kstj |rtj |ndd6}di|d6} t tj| nt}}|jd|j|j|jd|jj}|j}d} || } | sdditj |d6tj | d6dt j ks|tj |rtj |ndd6tj | d6} t tj| nt}} } |jd|jd|_d|_|j}| } | sxdditj |d6dt j ksFtj |rUtj |ndd6} t tj| nt}} |j}| } | sdditj |d6dt j kstj |rtj |ndd6} t tj| nt}} td d }|j||j|jd|jj}d}||k}|stjd |fd!||fitj |d6dt j kstj |rtj |ndd6} d"i| d 6}t tj|nt}}|jd|j|j|jd|jj}d}||k}|stjd#|fd$||fitj |d6dt j kstj |rtj |ndd6} d%i| d 6}t tj|nt}}dS)&Nrrrz+assert %(py2)s {%(py2)s = %(py0)s._events }rrrz+assert %(py2)s {%(py2)s = %(py0)s._errors }rTr0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }rrr r!r"assert %(py7)sr$z r? @py_assert5 @py_format7r@rAr r r test_exceptionss       U U           u     U  U     l      lr_c Cst}t}td|}|j|x|rD|jq1W|jd|j|j}|sdditj |d6dt j kstj |rtj |ndd6}t tj|nt}|jjdgt}|j||j|jd|jj}t|}||k}|sQtjd|fd||fitj |d 6d t j kstj trtj tnd d6d t j kstj |rtj |nd d6dt j kstj |rtj |ndd6}di|d6} t tj| nt}}|jd|jt}|j||j|jd|jj}d} || k}|s^tjd|fd|| fitj | d6dt j kstj |r*tj |ndd6} di| d 6}t tj|nt}} |jd|jdS)Nrrrz+assert %(py2)s {%(py2)s = %(py0)s._events }rrrrr0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }rrr r!r"assert %(py7)sr$%(py0)s == %(py3)sassert %(py5)s)r)r`ra)r)rbrc)r rrr'r(r)r*r+r,r-r.r/r0r1r2r3 IgnoreEventsextendrr4r5r6rr7r) r8r9rr:r;r r"r<r=r>rAr@r r r test_IgnoreEventssT       U             l  rfc Cst}t}td|}|j|x|rD|jq1W|jd|j|j}|sdditj |d6dt j kstj |rtj |ndd6}t tj|nt}|jjdgt}|j||j|jd|jj}t|}||k}|sQtjd|fd||fitj |d 6d t j kstj trtj tnd d6dt j kstj |rtj |ndd6dt j kstj |rtj |ndd6}di|d6} t tj| nt}}|jd|jt}|j||j|jd|jj}d} || k}|s^tjd|fd|| fitj | d6dt j kstj |r*tj |ndd6} di| d 6}t tj|nt}} |jd|jdS)Nrrrz+assert %(py2)s {%(py2)s = %(py0)s._events }rrr*rr0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }rrr r!r"assert %(py7)sr$%(py0)s == %(py3)sassert %(py5)s)rgztest)r)rhri)r)rjrk)r rrr'r(r)r*r+r,r-r.r/r0r1r2r3IgnoreChannelsrerr4r5r6rr7r) r8r9rr:r;r r"r<r=r>rAr@r r r test_IgnoreChannelssT       U             l  rmc Cst}t}td|}|j|x|rD|jq1Wt}|j||j|j}t|}||k}|st j d|fd||fidt j kst j |rt j|ndd6t j|d6t j|d6dt j ks%t j |r4t j|ndd6d t j ks\t j trkt jtnd d 6}di|d 6}tt j|nt}}}dS)NloggerrO%(py2)s {%(py2)s = %(py0)s.debug_msg } == %(py7)s {%(py7)s = %(py4)s(%(py5)s) }r rrr$rreprrXrassert %(py9)spy9)r)rorq)r rrr'r(rr4rrpr,r7r.r/r0r-r1r2r3) r8rnrr r: @py_assert6r?r>Z @py_format10r r r test_Logger_debugs"        rtc CsUt}t}td|}|j|x|rD|jq1Wtdd}|j|x|rw|jqdW|j}|j}d}||}|s?ddit j |d6t j |d6t j |d 6dt j kst j |r t j |ndd 6t j |d 6}tt j|nt}}}}dS) NrnrTz$ERROR (rzkassert %(py8)s {%(py8)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error_msg }.startswith }(%(py6)s) }rrWpy8rrX)r rrr'r(rr4rr\r,r-r.r/r0r1r2r3) r8rnrr r:r?r] @py_assert7 @py_format9r r r test_Logger_error"s$        rx)r builtinsr._pytest.assertion.rewrite assertionrewriter,rPrRr ImportErroriocircuitsrZ circuits.corerrrr objectrrBrKrTr_rfrmrtrxr r r r s*     " % ( 4 # " circuits-3.1.0/tests/core/__pycache__/test_feedback.cpython-26-PYTEST.pyc0000644000014400001440000001632012407376150027100 0ustar prologicusers00000000000000 ?Tic@sdZddkZddkiiZddkZddkl Z l Z l Z de fdYZ de fdYZ dZd Zd ZdS( sFeedback Channels TestsiN(thandlertEventt ComponentttestcBseZdZeZeZRS(s test Event(t__name__t __module__t__doc__tTruetsuccesstfailure(((s8/home/prologic/work/circuits/tests/core/test_feedback.pyR stAppcBsDeZdZeddZedZdZdZRS(cCsDtt|id|_d|_d|_t|_t|_ dS(N( tsuperR t__init__tNoneteterrortvaluetFalseRR (tself((s8/home/prologic/work/circuits/tests/core/test_feedback.pyR s     t*cOs%|idto|indS(Ntfilter(tgetRtstop(Rteventtargstkwargs((s8/home/prologic/work/circuits/tests/core/test_feedback.pyRscCs|otdndS(Ns Hello World!(t Exception(RR((s8/home/prologic/work/circuits/tests/core/test_feedback.pyR#scCs||_||_t|_dS(N(RRRR(RRR((s8/home/prologic/work/circuits/tests/core/test_feedback.pyt test_success)s  cCs||_||_t|_dS(N(RRRR (RRR((s8/home/prologic/work/circuits/tests/core/test_feedback.pyt test_failure.s  ( RRR RRRRRR(((s8/home/prologic/work/circuits/tests/core/test_feedback.pyR s    cCs |dS(N((R((s8/home/prologic/work/circuits/tests/core/test_feedback.pytreraise4scCst}x|o|iq Wt}|i|}x|o|iq=W|i}d}||j}|ptid|fd||fhdtijpti |oti |ndd6ti |d6}dh|d6}t ti |nd}}x|o|iqW|i}||j}|ptid|fd||fhd tijpti |oti |nd d6ti |d 6d tijpti |oti |nd d 6} dh| d6} t ti | nd}}|i}|pmdhd tijpti |oti |nd d6ti |d 6} t ti | nd}|i}|i}||j} | ptid| fd||fhd tijpti |oti |nd d6ti |d 6ti |d 6dtijpti |oti |ndd6} dh| d6} t ti | nd}}} |i}|i} || j}|ptid|fd|| fhd tijpti |oti |nd d6ti |d 6dtijpti |oti |ndd 6ti | d6} dh| d6} t ti | nd}}} dS(Ns Hello World!s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5s)%(py2)s {%(py2)s = %(py0)s.e } == %(py4)stapptpy2Rtpy4sassert %(py6)stpy6s+assert %(py2)s {%(py2)s = %(py0)s.success }sD%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.e }.value } == %(py6)sRsassert %(py8)stpy8sH%(py2)s {%(py2)s = %(py0)s.value } == %(py6)s {%(py6)s = %(py4)s.value }(s==(s%(py0)s == %(py3)s(s==(s)%(py2)s {%(py2)s = %(py0)s.e } == %(py4)s(s==(sD%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.e }.value } == %(py6)s(s==(sH%(py2)s {%(py2)s = %(py0)s.value } == %(py6)s {%(py6)s = %(py4)s.value }(R tflushRtfireRt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationR RR(R"RRRt @py_assert2t @py_assert1t @py_format4t @py_format6t @py_assert3t @py_format5t @py_format7t @py_format3t @py_assert5t @py_format9((s8/home/prologic/work/circuits/tests/core/test_feedback.pyR8s`    o    T  cCst}x|o|iq Wtdt}|i|}x|o|iqCWtiitd|ix|o|iqxW|i }||j}|pt i d|fd||fhdt i jpt i|ot i|ndd6t i|d6dt i jpt i|ot i|ndd 6}d h|d 6}tt i|nd}}|i\}}} tiitd ||tj}|pt i d|fd|tfhdt i jpt i|ot i|ndd6dt i jpt itot itndd6} dh| d 6}tt i|nd}|i}|pmdhdt i jpt i|ot i|ndd6t i|d6} tt i| nd}|i}| }|pmdhdt i jpt i|ot i|ndd6t i|d6} tt i| nd}}|i }|i}||j} | pt i d| fd||fhdt i jpt i|ot i|ndd6t i|d6t i|d 6dt i jpt i|ot i|ndd 6}dh|d6} tt i| nd}}} dS(NRcSst|dS(i(R(tx((s8/home/prologic/work/circuits/tests/core/test_feedback.pyt\ss==s)%(py2)s {%(py2)s = %(py0)s.e } == %(py4)sR"RR#RR$sassert %(py6)sR%cSs t|S((R(R;((s8/home/prologic/work/circuits/tests/core/test_feedback.pyR<dss%(py0)s == %(py2)stetypeRsassert %(py4)ss+assert %(py2)s {%(py2)s = %(py0)s.failure }s/assert not %(py2)s {%(py2)s = %(py0)s.success }sD%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.e }.value } == %(py6)sR;sassert %(py8)sR&(s==(s)%(py2)s {%(py2)s = %(py0)s.e } == %(py4)s(s==(s%(py0)s == %(py2)s(s==(sD%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.e }.value } == %(py6)s(R R'RRR(tpytraisesRRRR)R*R+R,R-R.R/R0R RR R(R"RR;R2R5R6R7R=tevaluet etracebackR8R3R9R:((s8/home/prologic/work/circuits/tests/core/test_feedback.pyRPs^     T T  (Rt __builtin__R+t_pytest.assertion.rewritet assertiontrewriteR)R>tcircuitsRRRRR RRR(((s8/home/prologic/work/circuits/tests/core/test_feedback.pyts  !  circuits-3.1.0/tests/core/__pycache__/test_signals.cpython-27-PYTEST.pyc0000644000014400001440000000765212414363102027014 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZddlZddlZddl m Z ddl m Z ddl mZddlmZmZddlmZddlmZd Zd d Zd ZdS( iN(tsleep(tESRCH(tSIGTERM(tkilltremove(tPopeni(t signalappcCs>yt|dWn&tk r9}|jtkr:tSnXtS(Ni(RtOSErrorterrnoRtFalsetTrue(tpidterror((s7/home/prologic/work/circuits/tests/core/test_signals.pyt is_runnings icCs-|}x t|r(|r(tdq WdS(Ni(R R(R ttimeouttcount((s7/home/prologic/work/circuits/tests/core/test_signals.pytwaitscCs$tjdkstjdn|jd|jdt|jd}t|jd}tjt j ||g}dj|}t |dt didjtj d 6}|j}d }||k}|sntjd!|fd"||fitj|d 6dtjks+tj|r:tj|ndd6} d#i| d6} ttj| nd}}tdtj }|j} | |} | sjdditj|d6dtjkstjtrtjtndd6tj| d6dtjks(tj|r7tj|ndd6tj| d6} ttj| nd}} } tj }|j} | |} | s`dditj|d6dtjkstjtrtjtndd6tj| d6dtjkstj|r-tj|ndd6tj| d6} ttj| nd}} } t|d}t|jj}|jt |t!t|t|d}|jj}|jtt!}||k}|stjd$|fd%||fidtjksAtjt!rPtjt!ndd 6dtjksxtjtrtjtndd6dtjkstj|rtj|ndd6tj|d6} d&i| d6} ttj| nd}}t"|t"|dS('Ntposixs(Cannot run test on a non-POSIX platform.s.pids.signalt tshelltenvt:t PYTHONPATHis==s%(py0)s == %(py3)stpy3tstatustpy0tsassert %(py5)stpy5isbassert %(py7)s {%(py7)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.path }.exists }(%(py5)s) }tpy2tostpy7tpidfiletpy4sbassert %(py7)s {%(py7)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.path }.isfile }(%(py5)s) }trs0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }Rtstrtsignalsassert %(py7)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }sassert %(py7)s(#RtnametpytesttskiptensureR"tjointsyst executableRt__file__RR tpathRt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNoneRtexiststisfiletopentinttreadtstriptcloseRRR(ttmpdirRt signalfiletargstcmdtpRt @py_assert2t @py_assert1t @py_format4t @py_format6t @py_assert3t @py_assert6t @py_format8tfR R#t @py_assert4((s7/home/prologic/work/circuits/tests/core/test_signals.pyttest"sb  +  l           (t __builtin__R0t_pytest.assertion.rewritet assertiontrewriteR-R%RR)ttimeRRRR#RRRt subprocessRRRR RRK(((s7/home/prologic/work/circuits/tests/core/test_signals.pyts     circuits-3.1.0/tests/core/__pycache__/test_complete.cpython-27-PYTEST.pyc0000644000014400001440000001322312414363101027152 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZmZdefdYZ defdYZ defdYZ d efd YZ d efd YZ d efdYZeZe jee jee jexerejqWdZdZdS(iN(tEventt Componentt simple_eventcBseZeZRS((t__name__t __module__tTruetcomplete(((s8/home/prologic/work/circuits/tests/core/test_complete.pyRsttestcBseZdZeZRS(s test Event(RRt__doc__Rtsuccess(((s8/home/prologic/work/circuits/tests/core/test_complete.pyR stNested3cBseZdZdZRS(tnested3cCs1|jjdkr!d|j_n d|j_dS(s; Updating state. Must be called twice to reach final state.sPre final states Final stateN(troott_state(tself((s8/home/prologic/work/circuits/tests/core/test_complete.pyRs(RRtchannelR(((s8/home/prologic/work/circuits/tests/core/test_complete.pyR stNested2cBseZdZdZRS(tnested2cCs<d|j_|jttj|jttjdS(s Updating state. s New stateN(R R tfireRR R(R((s8/home/prologic/work/circuits/tests/core/test_complete.pyRs (RRRR(((s8/home/prologic/work/circuits/tests/core/test_complete.pyRstNested1cBseZdZdZRS(tnested1cCs|jttjdS(s1 State change involves other components as well. N(RRRR(R((s8/home/prologic/work/circuits/tests/core/test_complete.pyR)s(RRRR(((s8/home/prologic/work/circuits/tests/core/test_complete.pyR&stAppcBsJeZdZeZdZdZdZdZ dZ dZ dZ RS(tapps Old statecCs t|_dS(N(Rt_simple_event_completed(Rtetvalue((s8/home/prologic/work/circuits/tests/core/test_complete.pytsimple_event_complete5scCs8t}t|_|jg|_|j|tjdS(s9 Fire the test event that should produce a state change. N(RRRRtcomplete_channelsRR(Rtevt((s8/home/prologic/work/circuits/tests/core/test_complete.pyR8s  cCs|j|_dS(s8 Test event has been processed, save the achieved state.N(R t_state_when_success(RRR((s8/home/prologic/work/circuits/tests/core/test_complete.pyt test_success?scCs|j|_dS(sT Test event has been completely processed, save the achieved state. N(R t_state_when_complete(RRR((s8/home/prologic/work/circuits/tests/core/test_complete.pyt test_completeCsN( RRRtFalseRR tNoneRRRRRR (((s8/home/prologic/work/circuits/tests/core/test_complete.pyR.s   cCstjtxtr&tjqWtj}|sdditj|d6dtjksqtj trtjtndd6}t tj |nd}dS(sE Test if complete works for an event without further effects ts;assert %(py2)s {%(py2)s = %(py0)s._simple_event_completed }tpy2Rtpy0N( RRRtflushRt @pytest_art _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationR"(t @py_assert1t @py_format3((s8/home/prologic/work/circuits/tests/core/test_complete.pyttest_complete_simpleRs  UcCstjtxtr&tjqWtj}d}||k}|stjd |fd||fitj|d6dtj kstj trtjtndd6tj|d6}di|d 6}t tj |nd}}}tj}d }||k}|stjd|fd||fitj|d6dtj ksntj tr}tjtndd6tj|d6}di|d 6}t tj |nd}}}dS(Ns Old states==s;%(py2)s {%(py2)s = %(py0)s._state_when_success } == %(py5)sR$RR%tpy5R#sassert %(py7)stpy7s Final states<%(py2)s {%(py2)s = %(py0)s._state_when_complete } == %(py5)s(s==(s;%(py2)s {%(py2)s = %(py0)s._state_when_success } == %(py5)ssassert %(py7)s(s==(s<%(py2)s {%(py2)s = %(py0)s._state_when_complete } == %(py5)ssassert %(py7)s(RRRR&RR't_call_reprcompareR(R)R*R+R,R-R"R(R.t @py_assert4t @py_assert3t @py_format6t @py_format8((s8/home/prologic/work/circuits/tests/core/test_complete.pyttest_complete_nested]s&   |  |(t __builtin__R)t_pytest.assertion.rewritet assertiontrewriteR'tcircuitsRRRRR RRRRtregisterR&R0R8(((s8/home/prologic/work/circuits/tests/core/test_complete.pyts      circuits-3.1.0/tests/core/__pycache__/test_core.cpython-26-PYTEST.pyc0000644000014400001440000000616312407376150026310 0ustar prologicusers00000000000000 ?Tc@sddkZddkiiZddklZlZl Z defdYZ defdYZ e Z e Z e ie xe oe iqWdZdZdS( iN(tEventt ComponenttManagerttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s4/home/prologic/work/circuits/tests/core/test_core.pyRstAppcBs#eZdZdZdZRS(cCsdS(Ns Hello World!((tself((s4/home/prologic/work/circuits/tests/core/test_core.pyR scGsdS(N((Rtargs((s4/home/prologic/work/circuits/tests/core/test_core.pyt unregisteredscGsdS(N((RR ((s4/home/prologic/work/circuits/tests/core/test_core.pytprepare_unregisters(RRRR R (((s4/home/prologic/work/circuits/tests/core/test_core.pyR s  cCstit}ti|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6ti |d6}dh|d 6}t ti |nd}}}dS( Ns Hello World!s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)stxtpy0tpy2tpy5sassert %(py7)stpy7(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)s(tmtfireRtflushtvaluet @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(R t @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8((s4/home/prologic/work/circuits/tests/core/test_core.pyt test_fires   cCsttj}|ptid |fd ttfhdtijptitotitndd6dtijptitotitndd6}dh|d6}tti |nd}tt j}| }|ptid |fdtt fhdtijptitotitndd6d tijptit otit nd d6}d h|d6}tti |nd}}dS(Ntins%(py0)s in %(py2)sRR RRsassert %(py4)stpy4tappsassert not %(py4)s(R$(s%(py0)s in %(py2)s(R$(s%(py0)s in %(py2)s( RRRRRRRRRRRR&(Rt @py_format3t @py_format5t @py_assert5R!((s4/home/prologic/work/circuits/tests/core/test_core.pyt test_contains$s  (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtcircuitsRRRRRRR&tregisterRR#R*(((s4/home/prologic/work/circuits/tests/core/test_core.pyts     circuits-3.1.0/tests/core/__pycache__/test_component_setup.cpython-33-PYTEST.pyc0000644000014400001440000002440312414363411030567 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z m Z Gddde Z Gddde Z Gdd d e Z Gd d d e ZGd d d eZddZddZddZdS(iN(uhandler(u ComponentuManagercBs |EeZdZddZdS(uAppcOsdS(N((uselfueventuargsukwargs((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyutestsuApp.testN(u__name__u __module__u __qualname__utest(u __locals__((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyuAppsuAppcBs|EeZdZdS(uAN(u__name__u __module__u __qualname__(u __locals__((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyuAsuAcBs8|EeZdZdZedddddZdS(uBuprepare_unregisteruchannelu*cCs|j|rd|_ndS(NT(u in_subtreeuTrueuinformed(uselfueventuc((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyu_on_prepare_unregistersuB._on_prepare_unregisterNF(u__name__u __module__u __qualname__uFalseuinformeduhandleru_on_prepare_unregister(u __locals__((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyuBsuBcBs|EeZdZdZdS(uBaseubaseN(u__name__u __module__u __qualname__uchannel(u __locals__((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyuBase#suBasecBs|EeZdZdZdS(uCucN(u__name__u __module__u __qualname__uchannel(u __locals__((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyuC(suCc Cst}t}|j||j}|j}|j}d}t}|||}||k}| rtjdf|fdf||fi dt j kptj trtj tndd6tj |d6tj |d6dt j kptj |rtj |ndd 6tj |d 6tj |d 6tj |d 6dt j kpntj |rtj |ndd 6tj |d6} ddi| d6} t tj| nt}}}}}}}|jx|r|jqW|j}| }| rdditj |d6dt j kpVtj |rhtj |ndd 6} t tj| nt}}dS(Nutestuinu%(py2)s {%(py2)s = %(py0)s.test } in %(py15)s {%(py15)s = %(py8)s {%(py8)s = %(py6)s {%(py6)s = %(py4)s._handlers }.get }(%(py10)s, %(py13)s {%(py13)s = %(py11)s() }) }usetupy11upy2upy13uappupy0upy15upy6upy10upy4upy8uuassert %(py17)supy17u1assert not %(py2)s {%(py2)s = %(py0)s._handlers }um(uManageruAppuregisterutestu _handlersugetusetu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneu unregisteruflush( umuappu @py_assert1u @py_assert5u @py_assert7u @py_assert9u @py_assert12u @py_assert14u @py_assert3u @py_format16u @py_format18u @py_format4((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyu test_basic-s2      1   Uu test_basiccCs t}t}t}|j||j|||k}|stjd|fd||fidtjkstj|rtj |ndd6dtjkstj|rtj |ndd6}di|d 6}t tj |nd}|j }||k}|stjd|fd||fitj |d6dtjksvtj|rtj |ndd6dtjkstj|rtj |ndd 6}di|d 6}t tj |nd}}|j}||k}|stjd|fd||fitj |d6dtjksgtj|rvtj |ndd6dtjkstj|rtj |ndd 6}di|d 6}t tj |nd}}||k}|stjd|fd||fidtjks?tj|rNtj |ndd6dtjksvtj|rtj |ndd6}di|d 6}t tj |nd}|j }||k}|stjd|fd ||fitj |d6dtjks,tj|r;tj |ndd6dtjksctj|rrtj |ndd 6}d!i|d 6}t tj |nd}}|j}||k}|stjd"|fd#||fitj |d6dtjkstj|r,tj |ndd6dtjksTtj|rctj |ndd 6}d$i|d 6}t tj |nd}}|jx|r|jqW|j}|s>dditj |d6dtjks tj|rtj |ndd6}t tj |nd}||k}|stjd%|fd&||fidtjkstj|rtj |ndd6dtjkstj|rtj |ndd6}d'i|d 6}t tj |nd}|j }||k}|stjd(|fd)||fitj |d6dtjkstj|rtj |ndd6dtjkstj|rtj |ndd 6}d*i|d 6}t tj |nd}}|j}||k}|stjd+|fd,||fitj |d6dtjksvtj|rtj |ndd6dtjkstj|rtj |ndd 6}d-i|d 6}t tj |nd}}||k}|s tjd.|fd/||fidtjksN tj|r] tj |ndd6dtjks tj|r tj |ndd6}d0i|d 6}t tj |nd}|j }||k}|s tjd1|fd2||fitj |d6dtjks; tj|rJ tj |ndd6dtjksr tj|r tj |ndd 6}d3i|d 6}t tj |nd}}|j}||k}|s tjd4|fd5||fitj |d6dtjks, tj|r; tj |ndd6dtjksc tj|rr tj |ndd 6}d6i|d 6}t tj |nd}}dS(7Nuinu%(py0)s in %(py2)sumupy2uaupy0uuassert %(py4)supy4u==u,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)suassert %(py6)supy6u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)subu,assert %(py2)s {%(py2)s = %(py0)s.informed }unot inu%(py0)s not in %(py2)s(uin(u%(py0)s in %(py2)suassert %(py4)s(u==(u,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(uin(u%(py0)s in %(py2)suassert %(py4)s(u==(u,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(unot in(u%(py0)s not in %(py2)suassert %(py4)s(u==(u,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(uin(u%(py0)s in %(py2)suassert %(py4)s(u==(u,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)suassert %(py6)s(u==(u.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)suassert %(py6)s(uManageruAuBuregisteru @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneurootuparentu unregisteruflushuinformed(umuaubu @py_assert1u @py_format3u @py_format5u @py_assert3u @py_format7((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyu test_complex<s                  U         u test_complexcCst}|j}d}||k}|stjd |fd ||fitj|d6dtjks|tj|rtj|ndd6tj|d6}d i|d 6}ttj |nd}}}t }|j}d }||k}|stjd|fd||fitj|d6d tjksYtj|rhtj|nd d6tj|d6}di|d 6}ttj |nd}}}dS(Nubaseu==u/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)supy2upy0upy5uuassert %(py7)supy7uc(u==(u/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)suassert %(py7)s(u==(u/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)suassert %(py7)s( uBaseuchannelu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuC(ubaseu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8uc((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyu$test_subclassing_with_custom_channelYs$   |   |u$test_subclassing_with_custom_channel(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuits.core.handlersuhandlerucircuitsu ComponentuManageruAppuAuBuBaseuCu test_basicu test_complexu$test_subclassing_with_custom_channel(((u?/home/prologic/work/circuits/tests/core/test_component_setup.pyus    circuits-3.1.0/tests/core/__pycache__/test_call_wait_timeout.cpython-34-PYTEST.pyc0000644000014400001440000001411312414363521031052 0ustar prologicusers00000000000000 ?T(@sddlZddljjZddlZddlmZm Z m Z m Z Gddde Z Gddde Z Gddde ZGd d d e Zejd d d dZddZddZddZddZdS)N)handler ComponentEvent TimeoutErrorc@seZdZdZdZdS)waitz wait EventTN)__name__ __module__ __qualname____doc__successr r A/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyrs rc@seZdZdZdZdS)callz call EventTN)rrr r r r r r r r s rc@seZdZdZdZdS)helloz hello EventTN)rrr r r r r r r rs rc@s^eZdZedd ddZedddZedd d d Zd S)Apprccs`|jt}y|jdd|VWn*tk rV}z |VWYdd}~XnX|VdS)Nrtimeout)firerrr)selfrresulter r r _on_waits z App._on_waitrcCsdS)Nrr )rr r r _on_hello"sz App._on_hellorccsYd}y|jtd|V}Wn*tk rO}z |VWYdd}~XnX|VdS)Nr)rrr)rrrrr r r _on_call&s z App._on_callNr)rrr rrrrr r r r rs    rscopemodulecstj||j}d}||}|sdditj|d6tj|d6dtjks~tj|rtj|ndd6tj|d6}ttj |nt }}}fd d }|j |S) N registeredzFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }py2py6watcherpy0py4csjdS)N) unregisterr )appr r finalizer6szapp..finalizer) rregisterr @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone addfinalizer)requestmanagerr! @py_assert1 @py_assert3 @py_assert5 @py_format7r&r )r%r r%1s  u r%c Cs|jtd}|j}d}||}|sdditj|d6tj|d6dtjkstj|rtj|ndd6tj|d 6}ttj|nt }}}|j }d } || k}|stj d|fd|| fitj| d 6dtjksDtj|rStj|ndd6} di| d6} ttj| nt }} dS)N wait_successrzFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }rr r!r"r#r==%(py0)s == %(py3)spy3valueassert %(py5)spy5)r9)r:r=) rrr(r)r*r+r,r-r.r/r<_call_reprcompare) r2r!r%xr3r4r5r6r< @py_assert2 @py_format4 @py_format6r r r test_wait_success>s   u  lrDc Cs|jtd}|j}d}||}|sdditj|d6tj|d6dtjkstj|rtj|ndd6tj|d 6}ttj|nt }}}|j }t |t }|sdd id tjkstj|r)tj|nd d 6d tjksQtjt r`tjt nd d6dtjkstjt rtjt ndd6tj|d 6} ttj| nt }dS)Nrr8rzFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }rr r!r"r#z5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }r<py1r isinstance) rrr(r)r*r+r,r-r.r/r<rFr) r2r!r%r@r3r4r5r6r< @py_format5r r r test_wait_failureGs  u rHc Cs|jtd}|j}d}||}|sdditj|d6tj|d6dtjkstj|rtj|ndd6tj|d 6}ttj |nt }}}|j }d } || k}|stj d|fd|| fitj| d 6dtjksDtj|rStj|ndd6} di| d6} ttj | nt }} dS)Nr7 call_successrzFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }rr r!r"r#rr9%(py0)s == %(py3)sr;r<assert %(py5)sr>)r9)rJrK) rrrr(r)r*r+r,r-r.r/r<r?) r2r!r%r@r3r4r5r6r<rArBrCr r r test_call_successPs   u  lrLc Cs|jtd}|j}d}||}|sdditj|d6tj|d6dtjkstj|rtj|ndd6tj|d 6}ttj |nt }}}|j }t |t }|sdd id tjkstj|r)tj|nd d 6d tjksQtjt r`tjt nd d6dtjkstjt rtjt ndd6tj|d 6} ttj | nt }dS)NrrIrzFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }rr r!r"r#z5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }r<rErrF)rrrr(r)r*r+r,r-r.r/r<rFr) r2r!r%r@r3r4r5r6r<rGr r r test_call_failureYs  u rM)builtinsr*_pytest.assertion.rewrite assertionrewriter(pytestZ circuits.corerrrrrrrrfixturer%rDrHrLrMr r r r s  " circuits-3.1.0/tests/core/__pycache__/test_call_wait_order.cpython-33-PYTEST.pyc0000644000014400001440000001075412414363411030503 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZddlmZmZddl m Z m Z ddl m Z m Z ddl mZmZmZGdddeZddd ZGd d d eZejd d ddZddZdS(iN(usleeputime(urandomuseed(utaskuWorker(uhandleru ComponentuEventcBs |EeZdZdZdZdS(uhellou hello EventNT(u__name__u __module__u __qualname__u__doc__uTrueusuccess(u __locals__((u?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyuhellosuhellocCstt|S(N(usleepurandom(ux((u?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyuprocesss uprocesscBs,|EeZdZedddZdS(uAppuhelloccsNttd}|jttd|jttd|j|VVdS(Niii(utaskuprocessufireucall(uselfue1((u?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyu _on_hellosu App._on_helloN(u__name__u __module__u __qualname__uhandleru _on_hello(u __locals__((u?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyuAppsuAppuscopeumodulecstttj||j}d}||}|sdditj|d6dtjks{tj |rtj|ndd6tj|d6tj|d6}t tj |nd}}}t j||j}d}||}|sdditj|d6dtjksItj |rXtj|ndd6tj|d6tj|d6}t tj |nd}}}fd d }|j|S( Nu registereduuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4csjjdS(N(u unregister((uappuworker(u?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyu finalizer-s uapp..finalizer(useedutimeuAppuregisteruwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuWorkeru addfinalizer(urequestumanageruwatcheru @py_assert1u @py_assert3u @py_assert5u @py_format7u finalizer((uappuworkeru?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyuapp#s(   u  u uappc Cs|jt}|j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj |nd}}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksAtj|rPtj|nd d6} di| d6} ttj | nd}} dS(Nu hello_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4iu==u%(py0)s == %(py3)supy3uvalueuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s( ufireuhellouwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert2u @py_format4u @py_format6((u?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyutest_call_order6s   u  lutest_call_order(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestutimeusleepurandomuseedu circuits.coreutaskuWorkeruhandleru ComponentuEventuhellouNoneuprocessuAppufixtureuapputest_call_order(((u?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyus   circuits-3.1.0/tests/core/__pycache__/test_priority.cpython-33-PYTEST.pyc0000644000014400001440000000513412414363411027226 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZmZm Z m Z GdddeZ Gddde Z e Z e Zeje xe re jqWddZdS( iN(uhandleruEventu ComponentuManagercBs|EeZdZdZdS(utestu test EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u8/home/prologic/work/circuits/tests/core/test_priority.pyutestsutestcBsh|EeZdZedddZedddddZedddd d Zd S( uApputestcCsdS(Ni((uself((u8/home/prologic/work/circuits/tests/core/test_priority.pyutest_0 su App.test_0upriorityicCsdS(Ni((uself((u8/home/prologic/work/circuits/tests/core/test_priority.pyutest_3su App.test_3icCsdS(Ni((uself((u8/home/prologic/work/circuits/tests/core/test_priority.pyutest_2su App.test_2N(u__name__u __module__u __qualname__uhandlerutest_0utest_3utest_2(u __locals__((u8/home/prologic/work/circuits/tests/core/test_priority.pyuApp suAppcCstjt}xtr(tjqWt|}dddg}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}dS(Niiiu==u%(py0)s == %(py3)supy3uxupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(umufireutestuflushulistu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uvuxu @py_assert2u @py_assert1u @py_format4u @py_format6((u8/home/prologic/work/circuits/tests/core/test_priority.pyu test_main s   lu test_main(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsuhandleruEventu ComponentuManagerutestuAppumuappuregisteruflushu test_main(((u8/home/prologic/work/circuits/tests/core/test_priority.pyus "    circuits-3.1.0/tests/core/__pycache__/test_signals.cpython-32-PYTEST.pyc0000644000014400001440000001023412414363275027011 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlZddlZddlZddl m Z ddl m Z ddl mZddlmZmZddlmZddlmZd Zd d Zd ZdS( iN(usleep(uESRCH(uSIGTERM(ukilluremove(uPopeni(u signalappcCsPyt|dWn8tk rK}z|jtkr9dSWYdd}~XnXdS(NiFT(ukilluOSErroruerrnouESRCHuFalseuTrue(upiduerror((u7/home/prologic/work/circuits/tests/core/test_signals.pyu is_runnings icCs-|}x t|r(|r(tdq WdS(Ni(u is_runningusleep(upidutimeoutucount((u7/home/prologic/work/circuits/tests/core/test_signals.pyuwaitsc Cs$tjdkstjdn|jd|jdt|jd}t|jd}tjt j ||g}dj|}t |dd!didjtj d 6}|j}d }||k}|sntjd"|fd#||fitj|d 6dtjks+tj|r:tj|ndd6} d$i| d6} ttj| nd}}tdtj }|j} | |} | sjdditj|d6dtjkstjtrtjtndd6tj| d6dtjks(tj|r7tj|ndd6tj| d6} ttj| nd}} } tj }|j} | |} | s`dditj|d6dtjkstjtrtjtndd6tj| d6dtjkstj|r-tj|ndd6tj| d6} ttj| nd}} } t|d}t|jj}|jt |t!t|t|d}|jj}|jtt!}||k}|stjd%|fd&||fidtjksAtjt!rPtjt!ndd 6dtjksxtjtrtjtndd6dtjkstj|rtj|ndd6tj|d6} d'i| d6} ttj| nd}}t"|t"|dS((Nuposixu(Cannot run test on a non-POSIX platform.u.pidu.signalu ushelluenvu:u PYTHONPATHiu==u%(py0)s == %(py3)supy3ustatusupy0uuassert %(py5)supy5iubassert %(py7)s {%(py7)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.path }.exists }(%(py5)s) }upy2uosupy7upidfileupy4ubassert %(py7)s {%(py7)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.path }.isfile }(%(py5)s) }uru0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }uSIGTERMustrusignaluassert %(py7)sT(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }uassert %(py7)s(#uosunameupytestuskipuensureustrujoinusysu executableu signalappu__file__uPopenuTrueupathuwaitu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneusleepuexistsuisfileuopenuintureadustripucloseukilluSIGTERMuremove(utmpdirupidfileu signalfileuargsucmdupustatusu @py_assert2u @py_assert1u @py_format4u @py_format6u @py_assert3u @py_assert6u @py_format8ufupidusignalu @py_assert4((u7/home/prologic/work/circuits/tests/core/test_signals.pyutest"sb  +  l           (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuosusysutimeusleepuerrnouESRCHusignaluSIGTERMukilluremoveu subprocessuPopenuu signalappu is_runninguwaitutest(((u7/home/prologic/work/circuits/tests/core/test_signals.pyus     circuits-3.1.0/tests/core/__pycache__/test_worker_process.cpython-27-PYTEST.pyc0000644000014400001440000001203712414363102030414 0ustar prologicusers00000000000000 ?Tc@sdZddlZddljjZddlZddlm Z ddl m Z m Z ej dddZdZd Zd Zd Zd Zd ZdZdS(s Workers TestsiN(tgetpid(ttasktWorkertscopetmodulecs2tj|fd}|j|S(NcsjdS(N(t unregister((tworker(s>/home/prologic/work/circuits/tests/core/test_worker_process.pyt finalizers(Rtregistert addfinalizer(trequesttmanagerR((Rs>/home/prologic/work/circuits/tests/core/test_worker_process.pyRs cCstdS(Ni(tx(((s>/home/prologic/work/circuits/tests/core/test_worker_process.pyterrscCs7d}d}x$|dkr2|d7}|d7}qW|S(Nii@Bi((R ti((s>/home/prologic/work/circuits/tests/core/test_worker_process.pytfoos  cCsdjtS(NsHello from {0:d}(tformatR(((s>/home/prologic/work/circuits/tests/core/test_worker_process.pytpid'scCs||S(N((tatb((s>/home/prologic/work/circuits/tests/core/test_worker_process.pytadd+sc Cstt}t|_|j|}|j}d}||}|sdditj|d6dtj kstj |rtj|ndd6tj|d6tj|d6}t tj |nd}}}|jd }t|t} | sdd id tj ks-tj tr<tjtnd d 6tj|d6d tj ksttj trtjtnd d6tj| d6} t tj | nd}} dS(Nt task_failuretsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }tpy2twatchertpy0tpy6tpy4is5assert %(py5)s {%(py5)s = %(py0)s(%(py2)s, %(py3)s) }t Exceptiontpy3t isinstancetpy5(RR tTruetfailuretfiretwaitt @pytest_art _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonetvalueRR( R RRteR t @py_assert1t @py_assert3t @py_assert5t @py_format7t @py_assert4t @py_format6((s>/home/prologic/work/circuits/tests/core/test_worker_process.pyt test_failure/s     u c Cstt}t|_|j|}|j}d}||}|sdditj|d6dtj kstj |rtj|ndd6tj|d6tj|d6}t tj |nd}}}|j}d } || k}|stjd|fd|| fitj|d6d tj ksStj |rbtj|nd d6tj| d 6} di| d6} t tj | nd}}} dS(Nt task_successRsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRRRi@Bs==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sR Rsassert %(py7)stpy7(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(RRR tsuccessR"R#R$R%R&R'R(R)R*R+R,t_call_reprcompare( R RRR-R R.R/R0R1R2R3t @py_format8((s>/home/prologic/work/circuits/tests/core/test_worker_process.pyt test_success:s$    u  |c Csttdd}t|_|j|}|j}d}||}|sdditj|d6dtj kstj |rtj|ndd6tj|d 6tj|d 6}t tj |nd}}}|j}d } || k}|stjd|fd|| fitj|d6dtj ksYtj |rhtj|ndd6tj| d6} di| d6} t tj | nd}}} dS(NiiR5RsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRRRis==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sR Rsassert %(py7)sR6(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(RRR R7R"R#R$R%R&R'R(R)R*R+R,R8( R RRR-R R.R/R0R1R2R3R9((s>/home/prologic/work/circuits/tests/core/test_worker_process.pyt test_argsEs$   u  |(t__doc__t __builtin__R&t_pytest.assertion.rewritet assertiontrewriteR$tpytesttosRtcircuitsRRtfixtureRR RRRR4R:R;(((s>/home/prologic/work/circuits/tests/core/test_worker_process.pyts      circuits-3.1.0/tests/core/__pycache__/test_call_wait_timeout.cpython-26-PYTEST.pyc0000644000014400001440000001606212407376150031064 0ustar prologicusers00000000000000 ?T(c@sddkZddkiiZddkZddklZl Z l Z l Z de fdYZ de fdYZ de fdYZd e fd YZeid d d ZdZdZdZdZdS(iN(thandlert ComponenttEventt TimeoutErrortwaitcBseZdZeZRS(s wait Event(t__name__t __module__t__doc__tTruetsuccess(((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyRstcallcBseZdZeZRS(s call Event(RRRRR (((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyR sthellocBseZdZeZRS(s hello Event(RRRRR (((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyR stAppcBsMeZedddZeddZedddZRS(RiccsP|it}y|idd|VWntj o}|VnX|VdS(NR ttimeout(tfireR RR(tselfR tresultte((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyt_on_waits  R cCsdS(NR ((R((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyt _on_hello"sR ccsId}y|itd|V}Wntj o}|VnX|VdS(NR (tNoneR R R(RR RR((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyt_on_call&s  (RRRRRR(((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyR s    tscopetmodulecsti||i}d}||}|pdhdtijpti|oti|ndd6ti|d6ti|d6ti|d6}tti |nd}}}fd}|i |S( Nt registeredsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }twatchertpy0tpy2tpy4tpy6csidS(N(t unregister((tapp(sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyt finalizer6s( R tregisterRt @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationRt addfinalizer(trequesttmanagerRt @py_assert1t @py_assert3t @py_assert5t @py_format7R ((RsA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyR1s  t c Cs|itd}|i}d}||}|pdhdtijpti|oti|ndd6ti|d6ti|d6ti|d6}tti|nd}}}|i }d } || j}|pti d|fd|| fhd tijpti|oti|nd d6ti| d 6} dh| d6} tti| nd}} dS(Ni t wait_successsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRRRR s==s%(py0)s == %(py3)stvaluetpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s( RRR"R#R$R%R&R'R(RR1t_call_reprcompare( R+RRtxR,R-R.R/R1t @py_assert2t @py_format4t @py_format6((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyttest_wait_success>s   t  oc Cs|itd}|i}d}||}|pdhdtijpti|oti|ndd6ti|d6ti|d6ti|d6}tti|nd}}}|i }t |t }|pd hd tijpti|oti|nd d 6d tijptit otit nd d6d tijptit otit nd d6ti|d6} tti| nd}dS(NiR0sFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRRRs5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }R1tpy1t isinstanceR( RRR"R#R$R%R&R'R(RR1R;R( R+RRR5R,R-R.R/R1t @py_format5((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyttest_wait_failureGs  t c Cs|itd}|i}d}||}|pdhdtijpti|oti|ndd6ti|d6ti|d6ti|d6}tti |nd}}}|i }d } || j}|pti d|fd|| fhd tijpti|oti|nd d6ti| d 6} dh| d6} tti | nd}} dS(Ni t call_successsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRRRR s==s%(py0)s == %(py3)sR1R2sassert %(py5)sR3(s==(s%(py0)s == %(py3)s( RR RR"R#R$R%R&R'R(RR1R4( R+RRR5R,R-R.R/R1R6R7R8((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyttest_call_successPs   t  oc Cs|itd}|i}d}||}|pdhdtijpti|oti|ndd6ti|d6ti|d6ti|d6}tti |nd}}}|i }t |t }|pd hd tijpti|oti|nd d 6d tijptit otit nd d6d tijptit otit nd d6ti|d6} tti | nd}dS(NiR>sFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRRRs5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }R1R:R;R(RR RR"R#R$R%R&R'R(RR1R;R( R+RRR5R,R-R.R/R1R<((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyttest_call_failureYs  t (t __builtin__R"t_pytest.assertion.rewritet assertiontrewriteR$tpytestt circuits.coreRRRRRR R R tfixtureRR9R=R?R@(((sA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyts  " circuits-3.1.0/tests/core/__pycache__/test_timers.cpython-33-PYTEST.pyc0000644000014400001440000001767312414363411026663 0ustar prologicusers00000000000000 ?TAc@sddlZddljjZddlZddlZddlmZm Z ddl m Z m Z m Z ddZddZdd ZGd d d e ZGd d d e ZddZddZddZdS(iN(udatetimeu timedelta(uEventu ComponentuTimercs.jdfdddddddS(Nusetupcs tS(N(usetupapp((urequest(u6/home/prologic/work/circuits/tests/core/test_timers.pyusu%pytest_funcarg__app..uteardowncSs t|S(N(u teardownapp(uapp((u6/home/prologic/work/circuits/tests/core/test_timers.pyususcopeumodule(u cached_setup(urequest((urequestu6/home/prologic/work/circuits/tests/core/test_timers.pyupytest_funcarg__apps  upytest_funcarg__appcCst}|j|S(N(uAppustart(urequestuapp((u6/home/prologic/work/circuits/tests/core/test_timers.pyusetupapps  usetupappcCs|jdS(N(ustop(uapp((u6/home/prologic/work/circuits/tests/core/test_timers.pyu teardownappsu teardownappcBs|EeZdZdZdS(utestu test EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u6/home/prologic/work/circuits/tests/core/test_timers.pyutest!sutestcs>|EeZdZfddZddZddZS(uAppcs2tt|jd|_d|_g|_dS(NiF(usuperuAppu__init__uFalseuflagucountu timestamps(uself(u __class__(u6/home/prologic/work/circuits/tests/core/test_timers.pyu__init__'s  u App.__init__cCsg|_d|_d|_dS(NiF(u timestampsuFalseuflagucount(uself((u6/home/prologic/work/circuits/tests/core/test_timers.pyureset-s  u App.resetcCs2|jjtj|jd7_d|_dS(NiT(u timestampsuappendutimeucountuTrueuflag(uself((u6/home/prologic/work/circuits/tests/core/test_timers.pyutest2suApp.test(u__name__u __module__u __qualname__u__init__uresetutest(u __locals__((u __class__u6/home/prologic/work/circuits/tests/core/test_timers.pyuApp%s uAppcCs&tdtd}|j|tj}d}|||}|s ddidtjksqtj|rtj |ndd6tj |d6d tjkstjtrtj tnd d 6tj |d 6tj |d 6}t tj |nd}}}|j dS( Ng?utimeruflaguuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uappupy3upy2upytestupy0upy7upy5(uTimerutesturegisterupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneureset(uapputimeru @py_assert1u @py_assert4u @py_assert6u @py_format8((u6/home/prologic/work/circuits/tests/core/test_timers.pyu test_timer8s  u test_timerc CsD|jjtjtdtddd }|j|tj|dd}|j }d}||k}|st j d!|fd"||fit j |d6d t jkst j|rt j |nd d 6t j |d 6}d#i|d6}tt j|nd}}}|sd$idt jksTt j|rct j |ndd 6}tt j|n|jd|jd} g}d}| |k}|} |rd} | | k} | } n| s?t j d%|fd&| |fidt jks%t j| r4t j | ndd6t j |d 6}di|d6}|j||rt j d'| fd(| | fidt jkst j| rt j | ndd6t j | d6} di| d6}|j|nt j|di}d)i|d6}tt j|nd} }}}} } |jd|jd} g}d}| |k}|} |rd} | | k} | } n| st j d*|fd+| |fidt jkst j| rt j | ndd6t j |d 6}di|d6}|j||rt j d,| fd-| | fidt jkst j| rt j | ndd6t j | d6} di| d6}|j|nt j|di}d.i|d6}tt j|nd} }}}} } |j|jdS(/Ng?utimerupersistucountiu>=u-%(py2)s {%(py2)s = %(py0)s.count } >= %(py5)supy2uappupy0upy5uuassert %(py7)supy7uassert %(py0)suwait_resiig{Gz?g?u%(py2)s >= %(py5)sudeltau%(py7)su=(u-%(py2)s {%(py2)s = %(py0)s.count } >= %(py5)suassert %(py7)suassert %(py0)s(u>=(u%(py2)s >= %(py5)s(u<(u%(py9)s < %(py12)suassert %(py17)s(u>=(u%(py2)s >= %(py5)s(u<(u%(py9)s < %(py12)suassert %(py17)s(u timestampsuappendutimeuTimerutestuTrueuregisterupytestuwait_forucountu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu_format_boolopuresetu unregister(uapputimeruwait_resu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1udeltau @py_assert0u @py_assert11u @py_assert10u @py_format13u @py_format15u @py_format16u @py_format18((u6/home/prologic/work/circuits/tests/core/test_timers.pyutest_persistentTimer?sv   |A  l l  l l utest_persistentTimercCsEtj}|tdd}t|td}|j|tj}d}|||}|s)ddidtj kst j |rt j |ndd6t j |d 6d tj kst j trt j tnd d 6t j |d 6t j |d 6}t t j|nd}}}|jdS(Nusecondsg?utimeruflaguuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uappupy3upy2upytestupy0upy7upy5(udatetimeunowu timedeltauTimerutesturegisterupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneureset(uappunowudutimeru @py_assert1u @py_assert4u @py_assert6u @py_format8((u6/home/prologic/work/circuits/tests/core/test_timers.pyu test_datetimeQs   u test_datetime(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arutimeupytestudatetimeu timedeltaucircuitsuEventu ComponentuTimerupytest_funcarg__appusetupappu teardownapputestuAppu test_timerutest_persistentTimeru test_datetime(((u6/home/prologic/work/circuits/tests/core/test_timers.pyus        circuits-3.1.0/tests/core/__pycache__/test_dynamic_handlers.cpython-27-PYTEST.pyc0000644000014400001440000001011212414363101030640 0ustar prologicusers00000000000000 ?TXc@sddlZddljjZddlZddlmZm Z m Z de fdYZ eddZ dZ dZdS(iN(thandlertEventtManagertfoocBseZdZRS(s foo Event(t__name__t __module__t__doc__(((s@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyRscCsdS(Ns Hello World!((tself((s@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyton_foo scCst}|j|jttj|d}|jt}|j|j }d}||k}|st j d |fd ||fit j |d6dt jkst j|rt j |ndd6}d i|d 6}tt j|nd}}|jdS(NRs Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(Rtstartt addHandlerRtpytestt WaitEventtfireRtwaittvaluet @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonetstop(tmtwaitertxR t @py_assert2t @py_assert1t @py_format4t @py_format6((s@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyttest_addHandlers      l cCsIt}|j|jt}tj|d}|jt}|j|j }d}||k}|st j d|fd||fit j |d6dt jkst j|rt j |ndd6}di|d 6}tt j|nd}}|j|tj|d}|jt}|j|j }|dk} | s2t j d| fd |dfit j |d 6dt jkst j|rt j |ndd6dt jkst jdrt j dndd6} d!i| d6} tt j| nd}} t|} t| k}|s]t j d"|fd#t| fidt jkst j|rt j |ndd6dt jkst jtrt j tndd 6dt jks t jtrt j tndd6t j | d 6}d$i|d6} tt j| nd}} d}|j} || k}|s-t j d%|fd&|| fidt jkst j|rt j |ndd6t j |d6t j | d 6}d'i|d6} tt j| nd}}} |jdS((NRs Hello World!s==s%(py0)s == %(py3)sR R R R sassert %(py5)sR tiss-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)stpy2R!Rtpy4sassert %(py6)stpy6snot ins4%(py0)s not in %(py5)s {%(py5)s = %(py2)s(%(py3)s) }RtdirRsassert %(py7)stpy7s5%(py1)s not in %(py5)s {%(py5)s = %(py3)s._handlers }tpy1(s==(s%(py0)s == %(py3)ssassert %(py5)s(R'(s-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)ssassert %(py6)s(snot in(s4%(py0)s not in %(py5)s {%(py5)s = %(py2)s(%(py3)s) }sassert %(py7)s(snot in(s5%(py1)s not in %(py5)s {%(py5)s = %(py3)s._handlers }sassert %(py7)s(RRRRRRRRRRRRRRRRRRRt removeHandlerR+t _handlersR(RtmethodR R!R R"R#R$R%t @py_assert3t @py_format5t @py_format7t @py_assert4t @py_format8t @py_assert0((s@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyttest_removeHandler!sR     l        |(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRRtcircuitsRRRRRR&R7(((s@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyts   circuits-3.1.0/tests/core/__pycache__/test_generate_events.cpython-26-PYTEST.pyc0000644000014400001440000000730212407376150030532 0ustar prologicusers00000000000000 ?T*c@s~ddkZddkiiZddkZddklZl Z defdYZ ei dddZ dZ dS( iN(t ComponenttEventtAppcBs>eZdZdZdZdZdZdZRS(cCst|_t|_d|_dS(Ni(tFalset_readyt_donet_counter(tself((s?/home/prologic/work/circuits/tests/core/test_generate_events.pytinit s  cCs+||jo|itidndS(Ntready(tfireRtcreate(Rt componenttmanager((s?/home/prologic/work/circuits/tests/core/test_generate_events.pyt registereds cCsk|i p |iodS|idjo|itidn|itid|iddS(Ni thellotdonei(RRRR RR treduce_time_left(Rtevent((s?/home/prologic/work/circuits/tests/core/test_generate_events.pytgenerate_eventss cCs t|_dS(N(tTrueR(R((s?/home/prologic/work/circuits/tests/core/test_generate_events.pyRscCs|id7_dS(Ni(R(R((s?/home/prologic/work/circuits/tests/core/test_generate_events.pyR scCs t|_dS(N(RR(R((s?/home/prologic/work/circuits/tests/core/test_generate_events.pyR #s(t__name__t __module__RRRRRR (((s?/home/prologic/work/circuits/tests/core/test_generate_events.pyRs     tscopetmodulecsti|fd}|i||i}d}||}|pdhdtijpti|oti|ndd6ti|d6ti|d6ti|d6}t ti |nd}}}S( NcsidS(N(t unregister((tapp(s?/home/prologic/work/circuits/tests/core/test_generate_events.pyt finalizer+sR sFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }twatchertpy0tpy2tpy4tpy6( Rtregistert addfinalizertwaitt @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(trequestR RRt @py_assert1t @py_assert3t @py_assert5t @py_format7((Rs?/home/prologic/work/circuits/tests/core/test_generate_events.pyR's   tcCs|id|i}d}||j}|ptid |fd ||fhdtijpti|oti|ndd6ti|d6ti|d6}d h|d 6}tti |nd}}}dS( NRi s==s0%(py2)s {%(py2)s = %(py0)s._counter } == %(py5)sRRRtpy5sassert %(py7)stpy7(s==(s0%(py2)s {%(py2)s = %(py0)s._counter } == %(py5)s( R#RR&t_call_reprcompareR$R%R'R(R)R*R+(R RRR-t @py_assert4R.t @py_format6t @py_format8((s?/home/prologic/work/circuits/tests/core/test_generate_events.pyttest5s   (t __builtin__R$t_pytest.assertion.rewritet assertiontrewriteR&tpytesttcircuitsRRRtfixtureRR7(((s?/home/prologic/work/circuits/tests/core/test_generate_events.pyts  circuits-3.1.0/tests/core/__pycache__/test_imports.cpython-33-PYTEST.pyc0000644000014400001440000000267012414363411027044 0ustar prologicusers00000000000000 ?Tc@s>ddlZddljjZddlmZddZdS(iN(u BaseComponentc Csy ddlm}t|t}|sddidtjksStjtrbtjtndd6dtjkstj|rtj|ndd6d tjkstjtrtjtnd d 6tj|d 6}t tj |nd}Wnqt k r}dsydid tjksGtjdrVtjdnd d 6}t tj |nYnXdS(Ni(u BasePolleruu5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }u BaseComponentupy2u BasePollerupy1u issubclassupy0upy4uassert %(py0)suFalseFuassert %(py0)s(ucircuits.core.pollersu BasePolleru issubclassu BaseComponentu @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneu ImportErroruFalse(u BasePolleru @py_assert3u @py_format5u @py_format1((u7/home/prologic/work/circuits/tests/core/test_imports.pyutests  Autest( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuits.core.componentsu BaseComponentutest(((u7/home/prologic/work/circuits/tests/core/test_imports.pyus circuits-3.1.0/tests/core/__pycache__/test_core.cpython-27-PYTEST.pyc0000644000014400001440000000624112414363101026274 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZmZm Z defdYZ defdYZ e Z e Z e je xe re jqWdZdZdS( iN(tEventt ComponenttManagerttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s4/home/prologic/work/circuits/tests/core/test_core.pyRstAppcBs#eZdZdZdZRS(cCsdS(Ns Hello World!((tself((s4/home/prologic/work/circuits/tests/core/test_core.pyR scGsdS(N((Rtargs((s4/home/prologic/work/circuits/tests/core/test_core.pyt unregisteredscGsdS(N((RR ((s4/home/prologic/work/circuits/tests/core/test_core.pytprepare_unregisters(RRRR R (((s4/home/prologic/work/circuits/tests/core/test_core.pyR s  cCstjt}tj|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6tj|d6}d i|d 6}t tj |nd}}}dS(Ns Hello World!s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)stpy2txtpy0tpy5tsassert %(py7)stpy7(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(tmtfireRtflushtvaluet @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(R t @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8((s4/home/prologic/work/circuits/tests/core/test_core.pyt test_fires   |cCsttk}|stjd |fd ttfidtjksTtjtrctjtndd6dtjkstjtrtjtndd6}di|d 6}ttj |nd}tt k}| }|stjd|fdtt fid tjks/tjt r>tjt nd d6dtjksftjtrutjtndd6}di|d 6}ttj |nd}}dS(Ntins%(py0)s in %(py2)sRR RRRsassert %(py4)stpy4tappsassert not %(py4)s(R%(s%(py0)s in %(py2)ssassert %(py4)s(R%(s%(py0)s in %(py2)ssassert not %(py4)s( RRRRRRRRRRRR'(Rt @py_format3t @py_format5t @py_assert5R"((s4/home/prologic/work/circuits/tests/core/test_core.pyt test_contains$s  (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtcircuitsRRRRRRR'tregisterRR$R+(((s4/home/prologic/work/circuits/tests/core/test_core.pyts      circuits-3.1.0/tests/core/__pycache__/test_imports.cpython-26-PYTEST.pyc0000644000014400001440000000245512407376150027055 0ustar prologicusers00000000000000 ?Tc@s;ddkZddkiiZddklZdZdS(iN(t BaseComponentcCsyddkl}t|t}|pdhdtijpti|oti|ndd6dtijptitotitndd6dtijptitotitndd 6ti|d 6}t ti |nd}Wnwt j okt p]d hd tijptit otit nd d6}t ti |qnXdS( Ni(t BasePollers5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }Rtpy1t issubclasstpy0Rtpy2tpy4sassert %(py0)stFalse(tcircuits.core.pollersRRRt @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonet ImportErrorR(Rt @py_assert3t @py_format5t @py_format1((s7/home/prologic/work/circuits/tests/core/test_imports.pyttests D( t __builtin__R t_pytest.assertion.rewritet assertiontrewriteR tcircuits.core.componentsRR(((s7/home/prologic/work/circuits/tests/core/test_imports.pyts circuits-3.1.0/tests/core/__pycache__/test_component_setup.cpython-26-PYTEST.pyc0000644000014400001440000002205312407376150030576 0ustar prologicusers00000000000000 ?Tc@sddkZddkiiZddklZddkl Z l Z de fdYZ de fdYZ de fd YZ d e fd YZd efd YZdZdZdZdS(iN(thandler(t ComponenttManagertAppcBseZdZRS(cOsdS(N((tselfteventtargstkwargs((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyttests(t__name__t __module__R(((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyRstAcBseZRS((R R (((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyR stBcBs)eZeZeddddZRS(tprepare_unregistertchannelt*cCs!|i|o t|_ndS(N(t in_subtreetTruetinformed(RRtc((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyt_on_prepare_unregisters(R R tFalseRRR(((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyR stBasecBseZdZRS(tbase(R R R(((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyR#stCcBseZdZRS(R(R R R(((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyR(sc Cst}t}|i||i}|i}|i}d}t}|||}||j}| octidf|fdf||fh ti |d6dt i jp ti toti tndd6ti |d6ti |d6d t i jp ti |oti |nd d 6ti |d 6d t i jp ti |oti |nd d 6ti |d 6ti |d6} dh| d6} t ti| nt}}}}}}}|ix|o|iqW|i}| }| omdhdt i jp ti |oti |ndd 6ti |d 6} t ti| nt}}dS(NRtins%(py2)s {%(py2)s = %(py0)s.test } in %(py15)s {%(py15)s = %(py8)s {%(py8)s = %(py6)s {%(py6)s = %(py4)s._handlers }.get }(%(py10)s, %(py13)s {%(py13)s = %(py11)s() }) }tpy15tsettpy11tpy10tpy13tapptpy0tpy2tpy4tpy6tpy8sassert %(py17)stpy17s1assert not %(py2)s {%(py2)s = %(py0)s._handlers }tm(RRtregisterRt _handlerstgetRt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonet unregistertflush( R&Rt @py_assert1t @py_assert5t @py_assert7t @py_assert9t @py_assert12t @py_assert14t @py_assert3t @py_format16t @py_format18t @py_format4((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyt test_basic-s4      :  TcCs t}t}t}|i||i|||j}|ptid|fd||fhdtijpti|oti |ndd6dtijpti|oti |ndd6}dh|d6}t ti |nd}|i }||j}|ptid|fd||fhdtijpti|oti |ndd6ti |d6dtijpti|oti |ndd6}d h|d 6}t ti |nd}}|i}||j}|ptid|fd||fhdtijpti|oti |ndd6ti |d6dtijpti|oti |ndd6}d h|d 6}t ti |nd}}||j}|ptid|fd||fhdtijpti|oti |ndd6dtijpti|oti |ndd6}dh|d6}t ti |nd}|i }||j}|ptid|fd||fhdtijpti|oti |ndd6ti |d6dtijpti|oti |ndd6}d h|d 6}t ti |nd}}|i}||j}|ptid|fd||fhdtijpti|oti |ndd6ti |d6dtijpti|oti |ndd6}d h|d 6}t ti |nd}}|ix|o|iqW|i}|pmdhdtijpti|oti |ndd6ti |d6}t ti |nd}||j}|ptid|fd||fhdtijpti|oti |ndd6dtijpti|oti |ndd6}dh|d6}t ti |nd}|i }||j}|ptid |fd!||fhdtijpti|oti |ndd6ti |d6dtijpti|oti |ndd6}d h|d 6}t ti |nd}}|i}||j}|ptid"|fd#||fhdtijpti|oti |ndd6ti |d6dtijpti|oti |ndd6}d h|d 6}t ti |nd}}||j}|ptid$|fd%||fhdtijpti|oti |ndd6dtijpti|oti |ndd6}dh|d6}t ti |nd}|i }||j}|ptid&|fd'||fhdtijpti|oti |ndd6ti |d6dtijpti|oti |ndd6}d h|d 6}t ti |nd}}|i}||j}|ptid(|fd)||fhdtijpti|oti |ndd6ti |d6dtijpti|oti |ndd6}d h|d 6}t ti |nd}}dS(*NRs%(py0)s in %(py2)staR R&R!sassert %(py4)sR"s==s,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)ssassert %(py6)sR#s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)stbs,assert %(py2)s {%(py2)s = %(py0)s.informed }snot ins%(py0)s not in %(py2)s(R(s%(py0)s in %(py2)s(s==(s,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)s(R(s%(py0)s in %(py2)s(s==(s,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)s(snot in(s%(py0)s not in %(py2)s(s==(s,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)s(R(s%(py0)s in %(py2)s(s==(s,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)s(RR R R'R*R+R-R.R/R,R0R1R2troottparentR3R4R(R&R@RAR5t @py_format3t @py_format5R;t @py_format7((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyt test_complex<s                 T         cCst}|i}d}||j}|ptid |fd ||fhdtijpti|oti|ndd6ti|d6ti|d6}dh|d6}tti |nd}}}t }|i}d }||j}|ptid |fd ||fhd tijpti|oti|nd d6ti|d6ti|d6}dh|d6}tti |nd}}}dS(NRs==s/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)sR R!tpy5sassert %(py7)stpy7R(s==(s/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)s(s==(s/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)s( RRR*R+R-R.R/R,R0R1R2R(RR5t @py_assert4R;t @py_format6t @py_format8R((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyt$test_subclassing_with_custom_channelYs$      (t __builtin__R-t_pytest.assertion.rewritet assertiontrewriteR*tcircuits.core.handlersRtcircuitsRRRR R RRR?RGRM(((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyts    circuits-3.1.0/tests/core/__pycache__/test_timers.cpython-32-PYTEST.pyc0000644000014400001440000001722012414363275026656 0ustar prologicusers00000000000000l ?TAc@sddlZddljjZddlZddlZddlmZm Z ddl m Z m Z m Z dZdZdZGdde ZGd d e Zd Zd Zd ZdS(iN(udatetimeu timedelta(uEventu ComponentuTimercs(jdfdddddS(Nusetupcs tS(N(usetupapp((urequest(u6/home/prologic/work/circuits/tests/core/test_timers.pyusuteardowncSs t|S(N(u teardownapp(uapp((u6/home/prologic/work/circuits/tests/core/test_timers.pyususcopeumodule(u cached_setup(urequest((urequestu6/home/prologic/work/circuits/tests/core/test_timers.pyupytest_funcarg__apps  cCst}|j|S(N(uAppustart(urequestuapp((u6/home/prologic/work/circuits/tests/core/test_timers.pyusetupapps  cCs|jdS(N(ustop(uapp((u6/home/prologic/work/circuits/tests/core/test_timers.pyu teardownappscBs|EeZdZdS(u test EventN(u__name__u __module__u__doc__(u __locals__((u6/home/prologic/work/circuits/tests/core/test_timers.pyutest!s utestcs/|EeZfdZdZdZS(cs2tt|jd|_d|_g|_dS(NiF(usuperuAppu__init__uFalseuflagucountu timestamps(uself(u __class__(u6/home/prologic/work/circuits/tests/core/test_timers.pyu__init__'s  cCsg|_d|_d|_dS(NiF(u timestampsuFalseuflagucount(uself((u6/home/prologic/work/circuits/tests/core/test_timers.pyureset-s  cCs2|jjtj|jd7_d|_dS(NiT(u timestampsuappendutimeucountuTrueuflag(uself((u6/home/prologic/work/circuits/tests/core/test_timers.pyutest2s(u__name__u __module__u__init__uresetutest(u __locals__((u __class__u6/home/prologic/work/circuits/tests/core/test_timers.pyuApp%s  uAppcCs&tdtd}|j|tj}d}|||}|s ddidtjksqtj|rtj |ndd6tj |d6d tjkstjtrtj tnd d 6tj |d 6tj |d 6}t tj |nd}}}|j dS( Ng?utimeruflaguuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uappupy3upy2upytestupy0upy7upy5(uTimerutesturegisterupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneureset(uapputimeru @py_assert1u @py_assert4u @py_assert6u @py_format8((u6/home/prologic/work/circuits/tests/core/test_timers.pyu test_timer8s  c CsD|jjtjtdtddd }|j|tj|dd}|j }d}||k}|st j d!|fd"||fit j |d6d t jkst j|rt j |nd d 6t j |d 6}d#i|d6}tt j|nd}}}|sd$idt jksTt j|rct j |ndd 6}tt j|n|jd|jd} g}d}| |k}|} |rd} | | k} | } n| s?t j d%|fd&| |fidt jks%t j| r4t j | ndd6t j |d 6}di|d6}|j||rt j d'| fd(| | fidt jkst j| rt j | ndd6t j | d6} di| d6}|j|nt j|di}d)i|d6}tt j|nd} }}}} } |jd|jd} g}d}| |k}|} |rd} | | k} | } n| st j d*|fd+| |fidt jkst j| rt j | ndd6t j |d 6}di|d6}|j||rt j d,| fd-| | fidt jkst j| rt j | ndd6t j | d6} di| d6}|j|nt j|di}d.i|d6}tt j|nd} }}}} } |j|jdS(/Ng?utimerupersistucountiu>=u-%(py2)s {%(py2)s = %(py0)s.count } >= %(py5)supy2uappupy0upy5uuassert %(py7)supy7uassert %(py0)suwait_resiig{Gz?g?u%(py2)s >= %(py5)sudeltau%(py7)su=(u-%(py2)s {%(py2)s = %(py0)s.count } >= %(py5)suassert %(py7)suassert %(py0)s(u>=(u%(py2)s >= %(py5)s(u<(u%(py9)s < %(py12)suassert %(py17)s(u>=(u%(py2)s >= %(py5)s(u<(u%(py9)s < %(py12)suassert %(py17)s(u timestampsuappendutimeuTimerutestuTrueuregisterupytestuwait_forucountu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu_format_boolopuresetu unregister(uapputimeruwait_resu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8u @py_format1udeltau @py_assert0u @py_assert11u @py_assert10u @py_format13u @py_format15u @py_format16u @py_format18((u6/home/prologic/work/circuits/tests/core/test_timers.pyutest_persistentTimer?sv   |A  l l  l l cCsEtj}|tdd}t|td}|j|tj}d}|||}|s)ddidtj kst j |rt j |ndd6t j |d 6d tj kst j trt j tnd d 6t j |d 6t j |d 6}t t j|nd}}}|jdS(Nusecondsg?utimeruflaguuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uappupy3upy2upytestupy0upy7upy5(udatetimeunowu timedeltauTimerutesturegisterupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneureset(uappunowudutimeru @py_assert1u @py_assert4u @py_assert6u @py_format8((u6/home/prologic/work/circuits/tests/core/test_timers.pyu test_datetimeQs   (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arutimeupytestudatetimeu timedeltaucircuitsuEventu ComponentuTimerupytest_funcarg__appusetupappu teardownapputestuAppu test_timerutest_persistentTimeru test_datetime(((u6/home/prologic/work/circuits/tests/core/test_timers.pyus        circuits-3.1.0/tests/core/__pycache__/test_call_wait_order.cpython-34-PYTEST.pyc0000644000014400001440000000630312414363521030501 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlZddlmZmZddl m Z m Z ddl m Z m Z ddl mZmZmZGdddeZddd ZGd d d eZejd d ddZddZdS)N)sleeptime)randomseed)taskWorker)handler ComponentEventc@seZdZdZdZdS)helloz hello EventTN)__name__ __module__ __qualname____doc__successrr?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyr s r cCstt|S)N)rr)xrrrprocesss rc@s(eZdZedddZdS)Appr ccsNttd}|jttd|jttd|j|VVdS)N)rrfirecall)selfe1rrr _on_hellosz App._on_helloN)r r rrrrrrrrs rscopemodulecstttj||j}d}||}|sdditj|d6tj|d6dtjkstj |rtj|ndd6tj|d6}t tj |nt }}}t j||j}d}||}|sdditj|d6tj|d6dtjksYtj |rhtj|ndd6tj|d6}t tj |nt }}}fd d }|j|S) N registeredzFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }py2py6watcherpy0py4csjjdS)N) unregisterr)appworkerrr finalizer-s zapp..finalizer)rrrregisterwait @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNoner addfinalizer)requestmanagerr$ @py_assert1 @py_assert3 @py_assert5 @py_format7r*r)r(r)rr(#s(   u  u r(c Cs|jt}|j}d}||}|sdditj|d6tj|d6dtjks~tj|rtj|ndd6tj|d6}ttj |nt }}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksAtj|rPtj|nd d6} di| d6} ttj | nt }} dS)NZ hello_successr!zFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }r"r#r$r%r&r==%(py0)s == %(py3)spy3valueassert %(py5)spy5)r<)r=r@) rr r,r-r.r/r0r1r2r3r4r?_call_reprcompare) r7r$r(rr8r9r:r;r? @py_assert2 @py_format4 @py_format6rrrtest_call_order6s   u  lrF)builtinsr/_pytest.assertion.rewrite assertionrewriter-pytestrrrrZ circuits.corerrrr r r rrfixturer(rFrrrrs   circuits-3.1.0/tests/core/__pycache__/test_worker_process.cpython-26-PYTEST.pyc0000644000014400001440000001177712407376151030437 0ustar prologicusers00000000000000 ?Tc@sdZddkZddkiiZddkZddkl Z ddk l Z l Z ei dddZdZd Zd Zd Zd Zd ZdZdS(s Workers TestsiN(tgetpid(ttasktWorkertscopetmodulecs2ti|fd}|i|S(NcsidS(N(t unregister((tworker(s>/home/prologic/work/circuits/tests/core/test_worker_process.pyt finalizers(Rtregistert addfinalizer(trequesttmanagerR((Rs>/home/prologic/work/circuits/tests/core/test_worker_process.pyRs cCstdS(Ni(tx(((s>/home/prologic/work/circuits/tests/core/test_worker_process.pyterrscCs9d}d}x&|djo|d7}|d7}qW|S(Nii@Bi((R ti((s>/home/prologic/work/circuits/tests/core/test_worker_process.pytfoos  cCsditS(NsHello from {0:d}(tformatR(((s>/home/prologic/work/circuits/tests/core/test_worker_process.pytpid'scCs||S(N((tatb((s>/home/prologic/work/circuits/tests/core/test_worker_process.pytadd+sc Cstt}t|_|i|}|i}d}||}|pdhdtijpti |oti |ndd6ti |d6ti |d6ti |d6}t ti |nd}}}|id}t|t} | pd hd tijpti toti tnd d6d tijpti toti tnd d 6ti |d6ti | d 6} t ti | nd}} dS(Nt task_failuresFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }twatchertpy0tpy2tpy4tpy6is5assert %(py5)s {%(py5)s = %(py0)s(%(py2)s, %(py3)s) }t isinstancet Exceptiontpy3tpy5(RR tTruetfailuretfiretwaitt @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetvalueRR( R RRteR t @py_assert1t @py_assert3t @py_assert5t @py_format7t @py_assert4t @py_format6((s>/home/prologic/work/circuits/tests/core/test_worker_process.pyt test_failure/s     t c Cstt}t|_|i|}|i}d}||}|pdhdtijpti |oti |ndd6ti |d6ti |d6ti |d6}t ti |nd}}}|i}d} || j}|ptid|fd|| fhd tijpti |oti |nd d6ti |d6ti | d 6} d h| d6} t ti | nd}}} dS(Nt task_successsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRRRi@Bs==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sR Rsassert %(py7)stpy7(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)s(RRRtsuccessR!R"R#R$R%R&R'R(R)R*R+t_call_reprcompare( R RRR,R R-R.R/R0R1R2t @py_format8((s>/home/prologic/work/circuits/tests/core/test_worker_process.pyt test_success:s$    t  c Csttdd}t|_|i|}|i}d}||}|pdhdtijpti |oti |ndd6ti |d6ti |d6ti |d 6}t ti |nd}}}|i}d } || j}|ptid|fd|| fhd tijpti |oti |nd d6ti |d6ti | d6} dh| d6} t ti | nd}}} dS(NiiR4sFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRRRis==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sR Rsassert %(py7)sR5(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)s(RRRR6R!R"R#R$R%R&R'R(R)R*R+R7( R RRR,R R-R.R/R0R1R2R8((s>/home/prologic/work/circuits/tests/core/test_worker_process.pyt test_argsEs$   t  (t__doc__t __builtin__R#t_pytest.assertion.rewritet assertiontrewriteR%tpytesttosRtcircuitsRRtfixtureRR RRRR3R9R:(((s>/home/prologic/work/circuits/tests/core/test_worker_process.pyts      circuits-3.1.0/tests/core/__pycache__/test_filters.cpython-26-PYTEST.pyc0000644000014400001440000000411512407376150027023 0ustar prologicusers00000000000000 ?Tc@ssddkZddkiiZddklZlZl Z defdYZ de fdYZ dZ dS(iN(thandlertEventt BaseComponentttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s7/home/prologic/work/circuits/tests/core/test_filters.pyRstAppcBs&eZeddZdZRS(RcCszdSWd|iXdS(Ns Hello World!(tstop(tselftevent((s7/home/prologic/work/circuits/tests/core/test_filters.pyt_on_test scCsdS(N((R ((s7/home/prologic/work/circuits/tests/core/test_filters.pyt _on_test2s(RRRR R (((s7/home/prologic/work/circuits/tests/core/test_filters.pyR scCst}x|o|iq W|it}|i|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6ti |d6}dh|d 6}t ti |nd}}}dS( Ns Hello World!s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)stxtpy0tpy2tpy5sassert %(py7)stpy7(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)s(RtflushtfireRtvaluet @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(tappR t @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8((s7/home/prologic/work/circuits/tests/core/test_filters.pyt test_mains    ( t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtcircuitsRRRRRR$(((s7/home/prologic/work/circuits/tests/core/test_filters.pyts  circuits-3.1.0/tests/core/__pycache__/test_new_filter.cpython-26-PYTEST.pyc0000644000014400001440000000636712407376150027524 0ustar prologicusers00000000000000 ?TXc@sddkZddkiiZddkZddklZl Z de fdYZ defdYZ ei dZ dZd ZdS( iN(t ComponenttEventthellocBseZdZeZRS(s hello Event(t__name__t __module__t__doc__tTruetsuccess(((s:/home/prologic/work/circuits/tests/core/test_new_filter.pyRstAppcBseZdZRS(cOs%|idto|indS(Ntstops Hello World!(tgettFalseR (tselfteventtargstkwargs((s:/home/prologic/work/circuits/tests/core/test_new_filter.pyRs(RRR(((s:/home/prologic/work/circuits/tests/core/test_new_filter.pyRscsItti|idfd}|i|S(Nt registeredcsiiddS(Nt unregistered(t unregistertwait((twatchertapp(s:/home/prologic/work/circuits/tests/core/test_new_filter.pyt finalizers (RtregisterRt addfinalizer(trequesttmanagerRR((RRs:/home/prologic/work/circuits/tests/core/test_new_filter.pyRs   cCs|it}|id|i}ddg}||j}|ptid |fd ||fhdtijpti|oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}dS( Nt hello_successs Hello World!s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)stxtpy0tpy2tpy5sassert %(py7)stpy7(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)s( tfireRRtvaluet @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(RRRt @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8((s:/home/prologic/work/circuits/tests/core/test_new_filter.pyt test_normal$s  cCs|itdt}|id|i}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6ti |d 6}d h|d 6}t ti |nd}}}dS(NR Rs Hello World!s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sRRRRsassert %(py7)sR (s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)s(R!RRRR"R#R$R%R&R'R(R)R*R+(RRRR,R-R.R/R0((s:/home/prologic/work/circuits/tests/core/test_new_filter.pyt test_filter*s   (t __builtin__R%t_pytest.assertion.rewritet assertiontrewriteR#tpytesttcircuitsRRRRtfixtureRR1R2(((s:/home/prologic/work/circuits/tests/core/test_new_filter.pyts   circuits-3.1.0/tests/core/__pycache__/test_dynamic_handlers.cpython-32-PYTEST.pyc0000644000014400001440000001074312414363275030662 0ustar prologicusers00000000000000l ?TXc@sddlZddljjZddlZddlmZm Z m Z Gdde Z eddZ dZ dZdS(iN(uhandleruEventuManagercBs|EeZdZdS(u foo EventN(u__name__u __module__u__doc__(u __locals__((u@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyufoos ufoocCsdS(Nu Hello World!((uself((u@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyuon_foo scCst}|j|jttj|d}|jt}|j|j }d}||k}|st j d |fd ||fit j |d6dt jkst j|rt j |ndd6}d i|d 6}tt j|nd}}|jdS(Nufoou Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uManagerustartu addHandleruon_fooupytestu WaitEventufireufoouwaituvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneustop(umuwaiteruxusu @py_assert2u @py_assert1u @py_format4u @py_format6((u@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyutest_addHandlers      l c CsIt}|j|jt}tj|d}|jt}|j|j }d}||k}|st j d|fd||fit j |d6dt jkst j|rt j |ndd6}di|d 6}tt j|nd}}|j|tj|d}|jt}|j|j }|dk} | s2t j d| fd |dfit j |d 6dt jkst j|rt j |ndd6dt jkst jdrt j dndd6} d!i| d6} tt j| nd}} t|} t| k}|s]t j d"|fd#t| fidt jkst j|rt j |ndd6dt jkst jtrt j tndd 6dt jks t jtrt j tndd6t j | d 6}d$i|d6} tt j| nd}} d}|j} || k}|s-t j d%|fd&|| fidt jkst j|rt j |ndd6t j |d6t j | d 6}d'i|d6} tt j| nd}}} |jdS((Nufoou Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5uisu-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)supy2uxuNoneupy4uassert %(py6)supy6unot inu4%(py0)s not in %(py5)s {%(py5)s = %(py2)s(%(py3)s) }umudiruon_foouassert %(py7)supy7u5%(py1)s not in %(py5)s {%(py5)s = %(py3)s._handlers }upy1(u==(u%(py0)s == %(py3)suassert %(py5)s(uis(u-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)suassert %(py6)s(unot in(u4%(py0)s not in %(py5)s {%(py5)s = %(py2)s(%(py3)s) }uassert %(py7)s(unot in(u5%(py1)s not in %(py5)s {%(py5)s = %(py3)s._handlers }uassert %(py7)s(uManagerustartu addHandleruon_fooupytestu WaitEventufireufoouwaituvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu removeHandlerudiru _handlersustop(umumethoduwaiteruxusu @py_assert2u @py_assert1u @py_format4u @py_format6u @py_assert3u @py_format5u @py_format7u @py_assert4u @py_format8u @py_assert0((u@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyutest_removeHandler!sR     l        |(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsuhandleruEventuManagerufoouon_fooutest_addHandlerutest_removeHandler(((u@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyus   circuits-3.1.0/tests/core/__pycache__/test_feedback.cpython-33-PYTEST.pyc0000644000014400001440000002045512414363411027074 0ustar prologicusers00000000000000 ?Tic@sdZddlZddljjZddlZddlm Z m Z m Z Gddde Z Gddde Z dd Zd d Zd d ZdS(uFeedback Channels TestsiN(uhandleruEventu ComponentcBs&|EeZdZdZdZdZdS(utestu test EventNT(u__name__u __module__u __qualname__u__doc__uTrueusuccessufailure(u __locals__((u8/home/prologic/work/circuits/tests/core/test_feedback.pyutest sutestcse|EeZdZfddZedddZd ddZdd Zd d Z S( uAppcsDtt|jd|_d|_d|_d|_d|_ dS(NF( usuperuAppu__init__uNoneueuerroruvalueuFalseusuccessufailure(uself(u __class__(u8/home/prologic/work/circuits/tests/core/test_feedback.pyu__init__s     u App.__init__u*cOs#|jddr|jndS(NufilterF(ugetuFalseustop(uselfueventuargsukwargs((u8/home/prologic/work/circuits/tests/core/test_feedback.pyueventsu App.eventcCs|rtdndS(Nu Hello World!(u Exception(uselfuerror((u8/home/prologic/work/circuits/tests/core/test_feedback.pyutest#suApp.testcCs||_||_d|_dS(NT(ueuvalueuTrueusuccess(uselfueuvalue((u8/home/prologic/work/circuits/tests/core/test_feedback.pyu test_success)s  uApp.test_successcCs||_||_d|_dS(NT(ueuerroruTrueufailure(uselfueuerror((u8/home/prologic/work/circuits/tests/core/test_feedback.pyu test_failure.s  uApp.test_failureF( u__name__u __module__u __qualname__u__init__uhandlerueventuFalseutestu test_successu test_failure(u __locals__((u __class__u8/home/prologic/work/circuits/tests/core/test_feedback.pyuApps   uAppcCs |dS(N((ue((u8/home/prologic/work/circuits/tests/core/test_feedback.pyureraise4sureraisec Cst}x|r|jq Wt}|j|}x|rN|jq;W|j}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}x|r%|jqW|j}||k}|s tjd|fd||fitj|d 6d tj kstj |rtj|nd d6d tj kstj |rtj|nd d6} di| d6} t tj | nd}}|j}|sdditj|d 6d tj ksatj |rptj|nd d6} t tj | nd}|j}|j}||k} | stjd| fd||fitj|d 6d tj kstj |rtj|nd d6dtj ksFtj |rUtj|ndd6tj|d6} di| d6} t tj | nd}}} |j}|j} || k}|stjd |fd!|| fitj|d 6d tj kstj |r,tj|nd d6tj| d6dtj ksdtj |rstj|ndd6} d"i| d6} t tj | nd}}} dS(#Nu Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u)%(py2)s {%(py2)s = %(py0)s.e } == %(py4)supy2uappueupy4uassert %(py6)supy6u+assert %(py2)s {%(py2)s = %(py0)s.success }uD%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.e }.value } == %(py6)suvalueuassert %(py8)supy8uH%(py2)s {%(py2)s = %(py0)s.value } == %(py6)s {%(py6)s = %(py4)s.value }(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u)%(py2)s {%(py2)s = %(py0)s.e } == %(py4)suassert %(py6)s(u==(uD%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.e }.value } == %(py6)suassert %(py8)s(u==(uH%(py2)s {%(py2)s = %(py0)s.value } == %(py6)s {%(py6)s = %(py4)s.value }uassert %(py8)s(uAppuflushutestufireuvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneueusuccess(uappueuvalueusu @py_assert2u @py_assert1u @py_format4u @py_format6u @py_assert3u @py_format5u @py_format7u @py_format3u @py_assert5u @py_format9((u8/home/prologic/work/circuits/tests/core/test_feedback.pyu test_success8sZ      l     U  u test_successc Cst}x|r|jq Wtdd}|j|}x|rT|jqAWtjjtdd|jx|r|jqwW|j }||k}|srt j d|fd||fit j |d6dt jkst j|rt j |ndd6d t jks/t j|r>t j |nd d 6}di|d 6}tt j|nd}}|j\}}} tjjtdd||tk}|sxt j d|fd|tfidt jkst jtr t j tndd6dt jks5t j|rDt j |ndd6} di| d 6}tt j|nd}|j}|sd dit j |d6dt jkst j|rt j |ndd6} tt j| nd}|j}| }|sd dit j |d6dt jksQt j|r`t j |ndd6} tt j| nd}}|j }|j}||k} | st j d | fd!||fit j |d6dt jkst j|rt j |ndd6dt jks:t j|rIt j |ndd 6t j |d 6}d"i|d6} tt j| nd}}} dS(#NuerrorcSst|dS(Ni(ureraise(ux((u8/home/prologic/work/circuits/tests/core/test_feedback.pyu\sutest_failure..u==u)%(py2)s {%(py2)s = %(py0)s.e } == %(py4)supy2uappupy0ueupy4uuassert %(py6)supy6cSs t|S(N(ureraise(ux((u8/home/prologic/work/circuits/tests/core/test_feedback.pyudsu%(py0)s == %(py2)su Exceptionuetypeuassert %(py4)su+assert %(py2)s {%(py2)s = %(py0)s.failure }u/assert not %(py2)s {%(py2)s = %(py0)s.success }uD%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.e }.value } == %(py6)suxuassert %(py8)supy8T(u==(u)%(py2)s {%(py2)s = %(py0)s.e } == %(py4)suassert %(py6)s(u==(u%(py0)s == %(py2)suassert %(py4)s(u==(uD%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.e }.value } == %(py6)suassert %(py8)s(uAppuflushutestuTrueufireupyuraisesu Exceptionuvalueueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuerrorufailureusuccess(uappueuxu @py_assert1u @py_assert3u @py_format5u @py_format7uetypeuevalueu etracebacku @py_format3u @py_format4u @py_assert5u @py_format9((u8/home/prologic/work/circuits/tests/core/test_feedback.pyu test_failurePsX        U U  u test_failure(u__doc__ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupyucircuitsuhandleruEventu ComponentutestuAppureraiseu test_successu test_failure(((u8/home/prologic/work/circuits/tests/core/test_feedback.pyus  !  circuits-3.1.0/tests/core/__pycache__/test_dynamic_handlers.cpython-33-PYTEST.pyc0000644000014400001440000001110412414363411030643 0ustar prologicusers00000000000000 ?TXc@sddlZddljjZddlZddlmZm Z m Z Gddde Z edddZ ddZ d d ZdS( iN(uhandleruEventuManagercBs|EeZdZdZdS(ufoou foo EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyufoosufoocCsdS(Nu Hello World!((uself((u@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyuon_foo suon_foocCst}|j|jttj|d}|jt}|j|j }d}||k}|st j d |fd ||fit j |d6dt jkst j|rt j |ndd6}d i|d 6}tt j|nd}}|jdS(Nufoou Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uManagerustartu addHandleruon_fooupytestu WaitEventufireufoouwaituvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneustop(umuwaiteruxusu @py_assert2u @py_assert1u @py_format4u @py_format6((u@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyutest_addHandlers      l utest_addHandlerc CsIt}|j|jt}tj|d}|jt}|j|j }d}||k}|st j d|fd||fit j |d6dt jkst j|rt j |ndd6}di|d 6}tt j|nd}}|j|tj|d}|jt}|j|j }|dk} | s2t j d| fd |dfit j |d 6dt jkst j|rt j |ndd6dt jkst jdrt j dndd6} d!i| d6} tt j| nd}} t|} t| k}|s]t j d"|fd#t| fidt jkst j|rt j |ndd6dt jkst jtrt j tndd 6dt jks t jtrt j tndd6t j | d 6}d$i|d6} tt j| nd}} d}|j} || k}|s-t j d%|fd&|| fidt jkst j|rt j |ndd6t j |d6t j | d 6}d'i|d6} tt j| nd}}} |jdS((Nufoou Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5uisu-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)supy2uxuNoneupy4uassert %(py6)supy6unot inu4%(py0)s not in %(py5)s {%(py5)s = %(py2)s(%(py3)s) }umudiruon_foouassert %(py7)supy7u5%(py1)s not in %(py5)s {%(py5)s = %(py3)s._handlers }upy1(u==(u%(py0)s == %(py3)suassert %(py5)s(uis(u-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)suassert %(py6)s(unot in(u4%(py0)s not in %(py5)s {%(py5)s = %(py2)s(%(py3)s) }uassert %(py7)s(unot in(u5%(py1)s not in %(py5)s {%(py5)s = %(py3)s._handlers }uassert %(py7)s(uManagerustartu addHandleruon_fooupytestu WaitEventufireufoouwaituvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu removeHandlerudiru _handlersustop(umumethoduwaiteruxusu @py_assert2u @py_assert1u @py_format4u @py_format6u @py_assert3u @py_format5u @py_format7u @py_assert4u @py_format8u @py_assert0((u@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyutest_removeHandler!sR     l        |utest_removeHandler(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsuhandleruEventuManagerufoouon_fooutest_addHandlerutest_removeHandler(((u@/home/prologic/work/circuits/tests/core/test_dynamic_handlers.pyus   circuits-3.1.0/tests/core/__pycache__/test_imports.cpython-27-PYTEST.pyc0000644000014400001440000000246712414363101027047 0ustar prologicusers00000000000000 ?Tc@s;ddlZddljjZddlmZdZdS(iN(t BaseComponentcCsy ddlm}t|t}|sddidtjksStjtrbtjtndd6dtjkstj|rtj|ndd6d tjkstjtrtjtnd d 6tj|d 6}t tj |nd}Wnpt k r|t s}did tjksGtjt rVtjt nd d 6}t tj |q}nXdS(Ni(t BasePollerts5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }Rtpy2Rtpy1t issubclasstpy0tpy4sassert %(py0)stFalsesassert %(py0)s(tcircuits.core.pollersRRRt @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonet ImportErrorR(Rt @py_assert3t @py_format5t @py_format1((s7/home/prologic/work/circuits/tests/core/test_imports.pyttests  A( t __builtin__R t_pytest.assertion.rewritet assertiontrewriteR tcircuits.core.componentsRR(((s7/home/prologic/work/circuits/tests/core/test_imports.pyts circuits-3.1.0/tests/core/__pycache__/test_complete.cpython-32-PYTEST.pyc0000644000014400001440000001512512414363275027165 0ustar prologicusers00000000000000l ?Tc@s ddlZddljjZddlmZmZGddeZ GddeZ GddeZ Gd d eZ Gd d eZ Gd deZeZe jee jee jexerejqWdZdZdS(iN(uEventu ComponentcBs|EeZdZdS(NT(u__name__u __module__uTrueucomplete(u __locals__((u8/home/prologic/work/circuits/tests/core/test_complete.pyu simple_events u simple_eventcBs|EeZdZdZdS(u test EventNT(u__name__u __module__u__doc__uTrueusuccess(u __locals__((u8/home/prologic/work/circuits/tests/core/test_complete.pyutest s utestcBs|EeZdZdZdS(unested3cCs1|jjdkr!d|j_n d|j_dS(u; Updating state. Must be called twice to reach final state.uPre final stateu Final stateN(urootu_state(uself((u8/home/prologic/work/circuits/tests/core/test_complete.pyutestsN(u__name__u __module__uchannelutest(u __locals__((u8/home/prologic/work/circuits/tests/core/test_complete.pyuNested3s uNested3cBs|EeZdZdZdS(unested2cCs<d|j_|jttj|jttjdS(u Updating state. u New stateN(urootu_stateufireutestuNested3uchannel(uself((u8/home/prologic/work/circuits/tests/core/test_complete.pyutests N(u__name__u __module__uchannelutest(u __locals__((u8/home/prologic/work/circuits/tests/core/test_complete.pyuNested2s uNested2cBs|EeZdZdZdS(unested1cCs|jttjdS(u1 State change involves other components as well. N(ufireutestuNested2uchannel(uself((u8/home/prologic/work/circuits/tests/core/test_complete.pyutest)sN(u__name__u __module__uchannelutest(u __locals__((u8/home/prologic/work/circuits/tests/core/test_complete.pyuNested1&s uNested1cBsP|EeZdZdZdZdZdZdZ dZ dZ dZ dS(uappu Old statecCs d|_dS(NT(uTrueu_simple_event_completed(uselfueuvalue((u8/home/prologic/work/circuits/tests/core/test_complete.pyusimple_event_complete5scCs8t}d|_|jg|_|j|tjdS(u9 Fire the test event that should produce a state change. NT(utestuTrueucompleteuchannelucomplete_channelsufireuNested1(uselfuevt((u8/home/prologic/work/circuits/tests/core/test_complete.pyutest8s  cCs|j|_dS(u8 Test event has been processed, save the achieved state.N(u_stateu_state_when_success(uselfueuvalue((u8/home/prologic/work/circuits/tests/core/test_complete.pyu test_success?scCs|j|_dS(uT Test event has been completely processed, save the achieved state. N(u_stateu_state_when_complete(uselfueuvalue((u8/home/prologic/work/circuits/tests/core/test_complete.pyu test_completeCsNF( u__name__u __module__uchanneluFalseu_simple_event_completedu_stateuNoneu_state_when_successu_state_when_completeusimple_event_completeutestu test_successu test_complete(u __locals__((u8/home/prologic/work/circuits/tests/core/test_complete.pyuApp.s    uAppcCstjtxtr&tjqWtj}|sdditj|d6dtjksqtj trtjtndd6}t tj |nd}dS(uE Test if complete works for an event without further effects uu;assert %(py2)s {%(py2)s = %(py0)s._simple_event_completed }upy2uappupy0N( uappufireu simple_eventuflushu_simple_event_completedu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(u @py_assert1u @py_format3((u8/home/prologic/work/circuits/tests/core/test_complete.pyutest_complete_simpleRs  UcCstjtxtr&tjqWtj}d}||k}|stjd |fd||fitj|d6dtj kstj trtjtndd6tj|d6}di|d 6}t tj |nd}}}tj}d }||k}|stjd|fd||fitj|d6dtj ksntj tr}tjtndd6tj|d6}di|d 6}t tj |nd}}}dS(Nu Old stateu==u;%(py2)s {%(py2)s = %(py0)s._state_when_success } == %(py5)supy2uappupy0upy5uuassert %(py7)supy7u Final stateu<%(py2)s {%(py2)s = %(py0)s._state_when_complete } == %(py5)s(u==(u;%(py2)s {%(py2)s = %(py0)s._state_when_success } == %(py5)suassert %(py7)s(u==(u<%(py2)s {%(py2)s = %(py0)s._state_when_complete } == %(py5)suassert %(py7)s(uappufireutestuflushu_state_when_successu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu_state_when_complete(u @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u8/home/prologic/work/circuits/tests/core/test_complete.pyutest_complete_nested]s&   |  |(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsuEventu Componentu simple_eventutestuNested3uNested2uNested1uAppuappuregisteruflushutest_complete_simpleutest_complete_nested(((u8/home/prologic/work/circuits/tests/core/test_complete.pyus      circuits-3.1.0/tests/core/__pycache__/test_worker_thread.cpython-27-PYTEST.pyc0000644000014400001440000001104312414363102030201 0ustar prologicusers00000000000000 ?Tc@sdZddlZddljjZddlZddlm Z m Z ej dddZ dZ dZd Zd ZdS( s Workers TestsiN(ttasktWorkertscopetmodulecstfd}|j||jjjrWddlm}|jntj d}j |j }|}|sddit j |d6dtjkst j|rt j |ndd 6t j |d 6}tt j|nd}}S( NcsjdS(N(tstop((tworker(s=/home/prologic/work/circuits/tests/core/test_worker_thread.pyt finalizersi(tDebuggertstartedts?assert %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.wait }() }tpy2twaitertpy0tpy4(Rt addfinalizertconfigtoptiontverbosetcircuitsRtregistertpytestt WaitEventtstarttwaitt @pytest_art _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(trequestRRR t @py_assert1t @py_assert3t @py_format5((Rs=/home/prologic/work/circuits/tests/core/test_worker_thread.pyR s    e cCs7d}d}x$|dkr2|d7}|d7}qW|S(Nii@Bi((txti((s=/home/prologic/work/circuits/tests/core/test_worker_thread.pytf s  cCs||S(N((tatb((s=/home/prologic/work/circuits/tests/core/test_worker_thread.pytadd)sc Cse|jtt}tj}d}|||}|sddidtjksdtj|rstj |ndd6tj |d6dtjkstjtrtj tndd6tj |d 6tj |d 6}t tj |nd}}}|j }|sdd itj |d6dtjksUtj|rdtj |ndd6}t tj |nd}|j}d }||k}|sStjd|fd||fitj |d6dtjkstj|rtj |ndd6tj |d 6}di|d 6}t tj |nd}}}dS(NtresultR sSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }R$tpy3R RR tpy7tpy5s*assert %(py2)s {%(py2)s = %(py0)s.result }i@Bs==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(tfireRR&Rtwait_forRRRRRRRRR*tvaluet_call_reprcompare( RR$R!t @py_assert4t @py_assert6t @py_format8t @py_format3R"t @py_format6((s=/home/prologic/work/circuits/tests/core/test_worker_thread.pyttest-s*  U  |c Csk|jttdd}tj}d}|||}|sddidtjksjtj|rytj |ndd6tj |d6d tjkstjtrtj tnd d 6tj |d 6tj |d 6}t tj |nd}}}|j }|sdd itj |d6dtjks[tj|rjtj |ndd 6}t tj |nd}|j}d}||k}|sYtjd|fd||fitj |d6dtjkstj|rtj |ndd 6tj |d 6}di|d 6}t tj |nd}}}dS(NiiR*R sSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }R$R+R RR R,R-s*assert %(py2)s {%(py2)s = %(py0)s.result }is==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(R.RR)RR/RRRRRRRRR*R0R1( RR$R!R2R3R4R5R"R6((s=/home/prologic/work/circuits/tests/core/test_worker_thread.pyt test_args6s*  U  |(t__doc__t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRRRRRtfixtureRR&R)R7R8(((s=/home/prologic/work/circuits/tests/core/test_worker_thread.pyts    circuits-3.1.0/tests/core/__pycache__/test_event.cpython-34-PYTEST.pyc0000644000014400001440000001274712414363521026501 0ustar prologicusers00000000000000 ?T@sdZddlZddljjZddlZddlm Z m Z Gddde Z Gddde Z dd Z d d Zd d ZddZddZdS)z Event TestsN)Event Componentc@seZdZdZdS)testz test EventN)__name__ __module__ __qualname____doc__r r 5/home/prologic/work/circuits/tests/core/test_event.pyr s rc@seZdZddZdS)AppcCsdS)Nz Hello World!r )selfr r r rszApp.testN)rrrrr r r r r s r cCst}x|r|jq Wt}t|}d}||k}|stjd |fd ||fitj|d6dtjkstj |rtj|ndd6}d i|d 6}t tj |nt }}|j |t|}d }||k}|stjd|fd||fitj|d6dtjksotj |r~tj|ndd6}di|d 6}t tj |nt }}dS)Nz ==%(py0)s == %(py3)spy3spy0assert %(py5)spy5z )r )rr)r )rr)r flushrrepr @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonefire)apper @py_assert2 @py_assert1 @py_format4 @py_format6r r r test_reprs*     l    lr'cCst}x|r|jq Wtjd}t|}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nt }}|j|t|}d }||k}|stjd|fd||fitj|d6dtj ksutj |rtj|ndd6}di|d 6}t tj |nt }}dS)Nrz r %(py0)s == %(py3)srrrrassert %(py5)srz )r )r(r))r )r(r))r rrcreaterrrrrrrrrrr )r!r"rr#r$r%r&r r r test_create&s*    l    lr+cCst}x|r|jq Wtddddd}|d}d}||k}|stjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nt}}}|d}d}||k}|sftjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nt}}}dd}t jj t ||ddS)Nfoobarrr %(py1)s == %(py4)spy1py4rassert %(py6)spy6cSs||S)Nr )r"kr r r f@sztest_getitem..f)r )r1r4)r )r1r4) r rrrrrrrrpyraises TypeError)r!r" @py_assert0 @py_assert3r# @py_format5 @py_format7r7r r r test_getitem6s,    E  E r?cCst}x|r|jq Wtddddd}|d}d}||k}|stjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nt}}}|d}d}||k}|sftjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nt}}}d|d.f)r )r@rA)r )r@rA)r )r@rA)r )r@rA) r rrrrrrrrr8r9r:)r!r"r;r<r#r=r>r7r r r test_setitemFsP    E  E     E  ErCcCsGdddt}|jd}|j}d}||k}|stjd|fd||fitj|d6tj|d6d tjkstj|rtj|nd d 6}di|d 6}t tj |nt }}}dS)Nc@seZdZdZdS)z.test_subclass_looses_properties..helloTN)rrrsuccessr r r r hello]s rErDFis/%(py2)s {%(py2)s = %(py0)s.success } is %(py5)srpy2r"rrassert %(py7)spy7)rF)rGrI) rchildrDrrrrrrrrr)rEr"r$ @py_assert4r<r& @py_format8r r r test_subclass_looses_properties\s  |rN)rbuiltinsr_pytest.assertion.rewrite assertionrewriterr8circuitsrrrr r'r+r?rCrNr r r r s      circuits-3.1.0/tests/core/__pycache__/test_event.cpython-33-PYTEST.pyc0000644000014400001440000001762612414363411026477 0ustar prologicusers00000000000000 ?Tc@sdZddlZddljjZddlZddlm Z m Z Gddde Z Gddde Z dd Z d d Zd d ZddZddZdS(u Event TestsiN(uEventu ComponentcBs|EeZdZdZdS(utestu test EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u5/home/prologic/work/circuits/tests/core/test_event.pyutest sutestcBs |EeZdZddZdS(uAppcCsdS(Nu Hello World!((uself((u5/home/prologic/work/circuits/tests/core/test_event.pyutestsuApp.testN(u__name__u __module__u __qualname__utest(u __locals__((u5/home/prologic/work/circuits/tests/core/test_event.pyuAppsuAppcCst}x|r|jq Wt}t|}d}||k}|stjd |fd ||fitj|d6dtjkstj |rtj|ndd6}d i|d 6}t tj |nd}}|j |t|}d }||k}|stjd|fd||fitj|d6dtjksotj |r~tj|ndd6}di|d 6}t tj |nd}}dS(Nu u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u (u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uAppuflushutesturepru @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneufire(uappueusu @py_assert2u @py_assert1u @py_format4u @py_format6((u5/home/prologic/work/circuits/tests/core/test_event.pyu test_reprs*     l    lu test_reprcCst}x|r|jq Wtjd}t|}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}|j|t|}d }||k}|stjd|fd||fitj|d6dtj ksutj |rtj|ndd6}di|d 6}t tj |nd}}dS(Nutestu u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u (u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uAppuflushuEventucreateurepru @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneufire(uappueusu @py_assert2u @py_assert1u @py_format4u @py_format6((u5/home/prologic/work/circuits/tests/core/test_event.pyu test_create&s*    l    lu test_createcCst}x|r|jq Wtddddd}|d}d}||k}|stjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nd}}}|d}d}||k}|sftjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nd}}}dd}t jj t ||ddS(Niiiufooubariu==u%(py1)s == %(py4)supy1upy4uuassert %(py6)supy6cSs||S(N((ueuk((u5/home/prologic/work/circuits/tests/core/test_event.pyuf@sutest_getitem..f(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s( uAppuflushutestu @pytest_aru_call_reprcompareu _saferepruAssertionErroru_format_explanationuNoneupyuraisesu TypeError(uappueu @py_assert0u @py_assert3u @py_assert2u @py_format5u @py_format7uf((u5/home/prologic/work/circuits/tests/core/test_event.pyu test_getitem6s,    E  E u test_getitemcCst}x|r|jq Wtddddd}|d}d}||k}|stjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nd}}}|d}d}||k}|sftjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nd}}}d|d.f(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s( uAppuflushutestu @pytest_aru_call_reprcompareu _saferepruAssertionErroru_format_explanationuNoneupyuraisesu TypeError(uappueu @py_assert0u @py_assert3u @py_assert2u @py_format5u @py_format7uf((u5/home/prologic/work/circuits/tests/core/test_event.pyu test_setitemFsP    E  E     E  Eu test_setitemcCsGdddt}|jd}|j}|dk}|stjd|fd|dfitj|d6dtjkstj |rtj|ndd6d tjkstj drtjdnd d 6}di|d 6}t tj |nd}}dS(NcBs|EeZdZdZdS(u.test_subclass_looses_properties..helloNT(u__name__u __module__u __qualname__uTrueusuccess(u __locals__((u5/home/prologic/work/circuits/tests/core/test_event.pyuhello]suhellousuccessuisu/%(py2)s {%(py2)s = %(py0)s.success } is %(py4)supy2ueupy0uFalseupy4uuassert %(py6)supy6F(uis(u/%(py2)s {%(py2)s = %(py0)s.success } is %(py4)suassert %(py6)s( uEventuchildusuccessuFalseu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uhelloueu @py_assert1u @py_assert3u @py_format5u @py_format7((u5/home/prologic/work/circuits/tests/core/test_event.pyutest_subclass_looses_properties\s utest_subclass_looses_properties(u__doc__ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupyucircuitsuEventu ComponentutestuAppu test_repru test_createu test_getitemu test_setitemutest_subclass_looses_properties(((u5/home/prologic/work/circuits/tests/core/test_event.pyus      circuits-3.1.0/tests/core/__pycache__/test_timers.cpython-26-PYTEST.pyc0000644000014400001440000001522412407376150026661 0ustar prologicusers00000000000000 ?TAc @sddkZddkiiZddkZddkZddklZl Z ddk l Z l Z l Z dZdZdZde fdYZd e fd YZd Zd Zd ZdS(iN(tdatetimet timedelta(tEventt ComponenttTimercs(idfdddddS(Ntsetupcs tS((tsetupapp((trequest(s6/home/prologic/work/circuits/tests/core/test_timers.pytstteardowncSs t|S((t teardownapp(tapp((s6/home/prologic/work/circuits/tests/core/test_timers.pyRstscopetmodule(t cached_setup(R((Rs6/home/prologic/work/circuits/tests/core/test_timers.pytpytest_funcarg__apps  cCst}|i|S(N(tApptstart(RR ((s6/home/prologic/work/circuits/tests/core/test_timers.pyRs  cCs|idS(N(tstop(R ((s6/home/prologic/work/circuits/tests/core/test_timers.pyR sttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s6/home/prologic/work/circuits/tests/core/test_timers.pyR!sRcBs#eZdZdZdZRS(cCs2tt|it|_d|_g|_dS(Ni(tsuperRt__init__tFalsetflagtcountt timestamps(tself((s6/home/prologic/work/circuits/tests/core/test_timers.pyR's  cCsg|_t|_d|_dS(Ni(RRRR(R((s6/home/prologic/work/circuits/tests/core/test_timers.pytreset-s  cCs2|iiti|id7_t|_dS(Ni(RtappendttimeRtTrueR(R((s6/home/prologic/work/circuits/tests/core/test_timers.pyR2s(RRRRR(((s6/home/prologic/work/circuits/tests/core/test_timers.pyR%s  cCs*tdtd}|i|ti}d}|||}|pdhdtijptitoti tndd6dtijpti|oti |ndd6ti |d 6ti |d 6ti |d 6}t ti |nd}}}|i dS( Ng?ttimerRsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }tpytesttpy0R tpy3tpy2tpy5tpy7(RRtregisterR#twait_fort @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNoneR(R R"t @py_assert1t @py_assert4t @py_assert6t @py_format8((s6/home/prologic/work/circuits/tests/core/test_timers.pyt test_timer8s  cCsf|iititdtddt}|i|ti|dd}|i }d}||j}|pt i d|fd ||fhdt i jpt i|ot i|ndd 6t i|d 6t i|d 6}d h|d 6}tt i|nd}}}|p]dhdt i jpt i|ot i|ndd 6}tt i|n|id|id} g}d}| |j}|} |od} | | j} | } n| pet i d!|fd"| |fhdt i jpt i| ot i| ndd 6t i|d 6}dh|d 6}|i||ot i d#| fd$| | fhdt i jpt i| ot i| ndd6t i| d6} dh| d6}|i|nt i|dh}dh|d6}tt i|nd} }}}} } |id|id} g}d}| |j}|} |od} | | j} | } n| pet i d%|fd&| |fhdt i jpt i| ot i| ndd 6t i|d 6}dh|d 6}|i||ot i d'| fd(| | fhdt i jpt i| ot i| ndd6t i| d6} dh| d6}|i|nt i|dh}dh|d6}tt i|nd} }}}} } |i|idS()Ng?R"tpersistRis>=s-%(py2)s {%(py2)s = %(py0)s.count } >= %(py5)sR R$R&R'sassert %(py7)sR(sassert %(py0)stwait_resiig{Gz?g?s%(py2)s >= %(py5)stdeltas%(py7)st=(s-%(py2)s {%(py2)s = %(py0)s.count } >= %(py5)s(s>=(s%(py2)s >= %(py5)s(R;(s%(py9)s < %(py12)s(s>=(s%(py2)s >= %(py5)s(R;(s%(py9)s < %(py12)s(RRR RRR!R)R#R*RR-t_call_reprcompareR+R,R.R/R0R1R2t_format_boolopRt unregister(R R"R9R3R4t @py_assert3t @py_format6R6t @py_format1R:t @py_assert0t @py_assert11t @py_assert10t @py_format13t @py_format15t @py_format16t @py_format18((s6/home/prologic/work/circuits/tests/core/test_timers.pyttest_persistentTimer?sv   D  o o  o o cCsIti}|tdd}t|td}|i|ti}d}|||}|pdhdti jpt i tot i tndd6dti jpt i |ot i |ndd 6t i |d 6t i |d 6t i |d 6}t t i|nd}}}|idS( Ntsecondsg?R"RsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }R#R$R R%R&R'R((RtnowRRRR)R#R*R+R,R-R.R/R0R1R2R(R ROtdR"R3R4R5R6((s6/home/prologic/work/circuits/tests/core/test_timers.pyt test_datetimeQs   (t __builtin__R+t_pytest.assertion.rewritet assertiontrewriteR-R R#RRtcircuitsRRRRRR RRR7RMRQ(((s6/home/prologic/work/circuits/tests/core/test_timers.pyts        circuits-3.1.0/tests/core/__pycache__/test_filters.cpython-33-PYTEST.pyc0000644000014400001440000000462612414363411027022 0ustar prologicusers00000000000000 ?Tc@svddlZddljjZddlmZmZm Z GdddeZ Gddde Z ddZ dS( iN(uhandleruEventu BaseComponentcBs|EeZdZdZdS(utestu test EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u7/home/prologic/work/circuits/tests/core/test_filters.pyutestsutestcBs8|EeZdZedddZddZdS(uApputestc CszdSWd|jXdS(Nu Hello World!(ustop(uselfuevent((u7/home/prologic/work/circuits/tests/core/test_filters.pyu_on_test su App._on_testcCsdS(N((uself((u7/home/prologic/work/circuits/tests/core/test_filters.pyu _on_test2su App._on_test2N(u__name__u __module__u __qualname__uhandleru_on_testu _on_test2(u __locals__((u7/home/prologic/work/circuits/tests/core/test_filters.pyuApp suAppcCst}x|r|jq W|jt}|j|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6tj|d6}d i|d 6}t tj |nd}}}dS(Nu Hello World!u==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2uxupy0upy5uuassert %(py7)supy7(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(uAppuflushufireutestuvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uappuxu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u7/home/prologic/work/circuits/tests/core/test_filters.pyu test_mains     |u test_main( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsuhandleruEventu BaseComponentutestuAppu test_main(((u7/home/prologic/work/circuits/tests/core/test_filters.pyus  circuits-3.1.0/tests/core/__pycache__/test_inheritence.cpython-33-PYTEST.pyc0000644000014400001440000001166112414363411027644 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZddlmZm Z m Z Gddde Z Gddde Z Gddde Z Gd d d e Zd d Zd dZdS(iN(uhandleruEventu ComponentcBs|EeZdZdZdS(utestu test EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyutestsutestcBs |EeZdZddZdS(uBasecCsdS(Nu Hello World!((uself((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyutestsu Base.testN(u__name__u __module__u __qualname__utest(u __locals__((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyuBase suBasecBs2|EeZdZedddddZdS(uApp1utestupriorityicCsdS(NuFoobar((uself((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyutestsu App1.testNi(u__name__u __module__u __qualname__uhandlerutest(u __locals__((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyuApp1suApp1cBs2|EeZdZedddddZdS(uApp2utestuoverridecCsdS(NuFoobar((uself((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyutestsu App2.testNT(u__name__u __module__u __qualname__uhandleruTrueutest(u __locals__((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyuApp2suApp2c Cst}|j|jt}tj}d}|||}|s ddidtjksttj |rtj |ndd6tj |d6dtjkstj trtj tndd6tj |d 6tj |d 6}t tj |nd}}}|j}d d g}||k}|stjd|fd||fitj |d6dtjkstj |rtj |ndd6}di|d 6} t tj | nd}}|jdS(NuresultuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uxupy3upy2upytestupy0upy7upy5u Hello World!uFoobaru==u%(py0)s == %(py3)suvuassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uApp1ustartufireutestupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuvalueu_call_reprcompareustop( uappuxu @py_assert1u @py_assert4u @py_assert6u @py_format8uvu @py_assert2u @py_format4u @py_format6((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyutest_inheritence s&     l utest_inheritencec Cst}|j|jt}tj}d}|||}|s ddidtjksttj |rtj |ndd6tj |d6dtjkstj trtj tndd6tj |d 6tj |d 6}t tj |nd}}}|j}d }||k}|stjd|fd||fitj |d6dtjkstj |rtj |ndd6}di|d 6} t tj | nd}}|jdS(NuresultuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uxupy3upy2upytestupy0upy7upy5uFoobaru==u%(py0)s == %(py3)suvuassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uApp2ustartufireutestupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuvalueu_call_reprcompareustop( uappuxu @py_assert1u @py_assert4u @py_assert6u @py_format8uvu @py_assert2u @py_format4u @py_format6((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyu test_override,s&     l u test_override(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsuhandleruEventu ComponentutestuBaseuApp1uApp2utest_inheritenceu test_override(((u;/home/prologic/work/circuits/tests/core/test_inheritence.pyus   circuits-3.1.0/tests/core/__pycache__/test_loader.cpython-33-PYTEST.pyc0000644000014400001440000000435512414363411026617 0ustar prologicusers00000000000000 ?Tc@s|ddlZddljjZddlZddlmZddl m Z m Z m Z Gddde Z ddZdS(iN(udirname(uEventuLoaderuManagercBs|EeZdZdZdS(utestu test EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u6/home/prologic/work/circuits/tests/core/test_loader.pyutest sutestc Cst}tdttgj|}|j|jd|jt}t j }d}|||}|s;ddidt j kst j|rt j|ndd6t j|d6d t j kst jt rt jt nd d 6t j|d 6t j|d 6}tt j|nd}}}|j}d }||k}|st jd|fd||fit j|d6dt j kst j|rt j|ndd 6} di| d 6} tt j| nd}}|jdS(NupathsuappuresultuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uxupy3upy2upytestupy0upy7upy5u Hello World!u==u%(py0)s == %(py3)susuassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uManageruLoaderudirnameu__file__uregisterustartuloadufireutestupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuvalueu_call_reprcompareustop( umuloaderuxu @py_assert1u @py_assert4u @py_assert6u @py_format8usu @py_assert2u @py_format4u @py_format6((u6/home/prologic/work/circuits/tests/core/test_loader.pyu test_mains* !     l u test_main(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuos.pathudirnameucircuitsuEventuLoaderuManagerutestu test_main(((u6/home/prologic/work/circuits/tests/core/test_loader.pyus  circuits-3.1.0/tests/core/__pycache__/test_event_priority.cpython-27-PYTEST.pyc0000644000014400001440000000637212414363101030433 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZmZdefdYZ defdYZ defdYZ d Z d Z dS( iN(t ComponenttEventtfoocBseZdZRS(s foo Event(t__name__t __module__t__doc__(((s>/home/prologic/work/circuits/tests/core/test_event_priority.pyRstdonecBseZdZRS(s done Event(RRR(((s>/home/prologic/work/circuits/tests/core/test_event_priority.pyR stAppcBs#eZdZdZdZRS(cCs g|_dS(N(tresults(tself((s>/home/prologic/work/circuits/tests/core/test_event_priority.pytinitscCs|jj|dS(N(Rtappend(R tvalue((s>/home/prologic/work/circuits/tests/core/test_event_priority.pyRscCs|jdS(N(tstop(R ((s>/home/prologic/work/circuits/tests/core/test_event_priority.pyRs(RRR RR(((s>/home/prologic/work/circuits/tests/core/test_event_priority.pyRs  cCs)t}|jtd|jtdg|jt|j|j}ddg}||k}|stjd |fd ||fitj|d6dt j kstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}dS(Niis==s/%(py2)s {%(py2)s = %(py0)s.results } == %(py5)stpy2tapptpy0tpy5tsassert %(py7)stpy7(s==(s/%(py2)s {%(py2)s = %(py0)s.results } == %(py5)ssassert %(py7)s(RtfireRRtrunRt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(Rt @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8((s>/home/prologic/work/circuits/tests/core/test_event_priority.pyttest1s (  |cCs5t}|jtddd|jtdddg|jt|j|j}ddg}||k}|s#tjd|fd||fitj|d6dt j kstj |rtj|ndd 6tj|d 6}di|d 6}t tj |nd}}}dS(Nitpriorityiis==s/%(py2)s {%(py2)s = %(py0)s.results } == %(py5)sRRRRRsassert %(py7)sR(s==(s/%(py2)s {%(py2)s = %(py0)s.results } == %(py5)ssassert %(py7)s(RRRRRRRRRRRRRRR(RRR R!R"R#((s>/home/prologic/work/circuits/tests/core/test_event_priority.pyttest2&s 4  |(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtcircuitsRRRRRR$R&(((s>/home/prologic/work/circuits/tests/core/test_event_priority.pyts  circuits-3.1.0/tests/core/__pycache__/test_complete.cpython-33-PYTEST.pyc0000644000014400001440000001601512414363411027155 0ustar prologicusers00000000000000 ?Tc@s$ddlZddljjZddlmZmZGdddeZ GdddeZ GdddeZ Gd d d eZ Gd d d eZ Gd ddeZeZe jee jee jexerejqWddZddZdS(iN(uEventu ComponentcBs|EeZdZdZdS(u simple_eventNT(u__name__u __module__u __qualname__uTrueucomplete(u __locals__((u8/home/prologic/work/circuits/tests/core/test_complete.pyu simple_eventsu simple_eventcBs |EeZdZdZdZdS(utestu test EventNT(u__name__u __module__u __qualname__u__doc__uTrueusuccess(u __locals__((u8/home/prologic/work/circuits/tests/core/test_complete.pyutest sutestcBs&|EeZdZdZddZdS(uNested3unested3cCs1|jjdkr!d|j_n d|j_dS(u; Updating state. Must be called twice to reach final state.uPre final stateu Final stateN(urootu_state(uself((u8/home/prologic/work/circuits/tests/core/test_complete.pyutestsu Nested3.testN(u__name__u __module__u __qualname__uchannelutest(u __locals__((u8/home/prologic/work/circuits/tests/core/test_complete.pyuNested3suNested3cBs&|EeZdZdZddZdS(uNested2unested2cCs<d|j_|jttj|jttjdS(u Updating state. u New stateN(urootu_stateufireutestuNested3uchannel(uself((u8/home/prologic/work/circuits/tests/core/test_complete.pyutests u Nested2.testN(u__name__u __module__u __qualname__uchannelutest(u __locals__((u8/home/prologic/work/circuits/tests/core/test_complete.pyuNested2suNested2cBs&|EeZdZdZddZdS(uNested1unested1cCs|jttjdS(u1 State change involves other components as well. N(ufireutestuNested2uchannel(uself((u8/home/prologic/work/circuits/tests/core/test_complete.pyutest)su Nested1.testN(u__name__u __module__u __qualname__uchannelutest(u __locals__((u8/home/prologic/work/circuits/tests/core/test_complete.pyuNested1&suNested1cBsb|EeZdZdZd ZdZd Zd Z ddZ ddZ ddZ d d Z d S( uAppuappu Old statecCs d|_dS(NT(uTrueu_simple_event_completed(uselfueuvalue((u8/home/prologic/work/circuits/tests/core/test_complete.pyusimple_event_complete5suApp.simple_event_completecCs8t}d|_|jg|_|j|tjdS(u9 Fire the test event that should produce a state change. NT(utestuTrueucompleteuchannelucomplete_channelsufireuNested1(uselfuevt((u8/home/prologic/work/circuits/tests/core/test_complete.pyutest8s  uApp.testcCs|j|_dS(u8 Test event has been processed, save the achieved state.N(u_stateu_state_when_success(uselfueuvalue((u8/home/prologic/work/circuits/tests/core/test_complete.pyu test_success?suApp.test_successcCs|j|_dS(uT Test event has been completely processed, save the achieved state. N(u_stateu_state_when_complete(uselfueuvalue((u8/home/prologic/work/circuits/tests/core/test_complete.pyu test_completeCsuApp.test_completeNF(u__name__u __module__u __qualname__uchanneluFalseu_simple_event_completedu_stateuNoneu_state_when_successu_state_when_completeusimple_event_completeutestu test_successu test_complete(u __locals__((u8/home/prologic/work/circuits/tests/core/test_complete.pyuApp.s   uAppcCstjtxtr&tjqWtj}|sdditj|d6dtjksqtj trtjtndd6}t tj |nd}dS(uE Test if complete works for an event without further effects uu;assert %(py2)s {%(py2)s = %(py0)s._simple_event_completed }upy2uappupy0N( uappufireu simple_eventuflushu_simple_event_completedu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(u @py_assert1u @py_format3((u8/home/prologic/work/circuits/tests/core/test_complete.pyutest_complete_simpleRs  Uutest_complete_simplecCstjtxtr&tjqWtj}d}||k}|stjd |fd||fitj|d6dtj kstj trtjtndd6tj|d6}di|d 6}t tj |nd}}}tj}d }||k}|stjd|fd||fitj|d6dtj ksntj tr}tjtndd6tj|d6}di|d 6}t tj |nd}}}dS(Nu Old stateu==u;%(py2)s {%(py2)s = %(py0)s._state_when_success } == %(py5)supy2uappupy0upy5uuassert %(py7)supy7u Final stateu<%(py2)s {%(py2)s = %(py0)s._state_when_complete } == %(py5)s(u==(u;%(py2)s {%(py2)s = %(py0)s._state_when_success } == %(py5)suassert %(py7)s(u==(u<%(py2)s {%(py2)s = %(py0)s._state_when_complete } == %(py5)suassert %(py7)s(uappufireutestuflushu_state_when_successu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu_state_when_complete(u @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u8/home/prologic/work/circuits/tests/core/test_complete.pyutest_complete_nested]s&   |  |utest_complete_nested(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsuEventu Componentu simple_eventutestuNested3uNested2uNested1uAppuappuregisteruflushutest_complete_simpleutest_complete_nested(((u8/home/prologic/work/circuits/tests/core/test_complete.pyus      circuits-3.1.0/tests/core/__pycache__/app.cpython-32.pyc0000644000014400001440000000142012414363315024034 0ustar prologicusers00000000000000l ?Tc@s'ddlmZGddeZdS(i(u ComponentcBs |EeZdZdZdS(cCsdS(Nu Hello World!((uself((u./home/prologic/work/circuits/tests/core/app.pyutestscGsdS(N((uselfuargs((u./home/prologic/work/circuits/tests/core/app.pyuprepare_unregister sN(u__name__u __module__utestuprepare_unregister(u __locals__((u./home/prologic/work/circuits/tests/core/app.pyuApps  uAppN(ucircuitsu ComponentuApp(((u./home/prologic/work/circuits/tests/core/app.pyuscircuits-3.1.0/tests/core/__pycache__/test_filters.cpython-32-PYTEST.pyc0000644000014400001440000000442712414363275027030 0ustar prologicusers00000000000000l ?Tc@smddlZddljjZddlmZmZm Z GddeZ Gdde Z dZ dS(iN(uhandleruEventu BaseComponentcBs|EeZdZdS(u test EventN(u__name__u __module__u__doc__(u __locals__((u7/home/prologic/work/circuits/tests/core/test_filters.pyutests utestcBs,|EeZeddZdZdS(utestc CszdSWd|jXdS(Nu Hello World!(ustop(uselfuevent((u7/home/prologic/work/circuits/tests/core/test_filters.pyu_on_test scCsdS(N((uself((u7/home/prologic/work/circuits/tests/core/test_filters.pyu _on_test2sN(u__name__u __module__uhandleru_on_testu _on_test2(u __locals__((u7/home/prologic/work/circuits/tests/core/test_filters.pyuApp s uAppcCst}x|r|jq W|jt}|j|j}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6tj|d6}d i|d 6}t tj |nd}}}dS(Nu Hello World!u==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2uxupy0upy5uuassert %(py7)supy7(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(uAppuflushufireutestuvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uappuxu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u7/home/prologic/work/circuits/tests/core/test_filters.pyu test_mains     |( ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsuhandleruEventu BaseComponentutestuAppu test_main(((u7/home/prologic/work/circuits/tests/core/test_filters.pyus  circuits-3.1.0/tests/core/__pycache__/test_feedback.cpython-27-PYTEST.pyc0000644000014400001440000001641512414363101027074 0ustar prologicusers00000000000000 ?Tic@sdZddlZddljjZddlZddlm Z m Z m Z de fdYZ de fdYZ dZd Zd ZdS( sFeedback Channels TestsiN(thandlertEventt ComponentttestcBseZdZeZeZRS(s test Event(t__name__t __module__t__doc__tTruetsuccesstfailure(((s8/home/prologic/work/circuits/tests/core/test_feedback.pyR stAppcBsDeZdZeddZedZdZdZRS(cCsDtt|jd|_d|_d|_t|_t|_ dS(N( tsuperR t__init__tNoneteterrortvaluetFalseRR (tself((s8/home/prologic/work/circuits/tests/core/test_feedback.pyR s     t*cOs#|jdtr|jndS(Ntfilter(tgetRtstop(Rteventtargstkwargs((s8/home/prologic/work/circuits/tests/core/test_feedback.pyRscCs|rtdndS(Ns Hello World!(t Exception(RR((s8/home/prologic/work/circuits/tests/core/test_feedback.pyR#scCs||_||_t|_dS(N(RRRR(RRR((s8/home/prologic/work/circuits/tests/core/test_feedback.pyt test_success)s  cCs||_||_t|_dS(N(RRRR (RRR((s8/home/prologic/work/circuits/tests/core/test_feedback.pyt test_failure.s  ( RRR RRRRRR(((s8/home/prologic/work/circuits/tests/core/test_feedback.pyR s    cCs |dS(N((R((s8/home/prologic/work/circuits/tests/core/test_feedback.pytreraise4scCst}x|r|jq Wt}|j|}x|rN|jq;W|j}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}x|r%|jqW|j}||k}|s tjd|fd||fitj|d 6d tj kstj |rtj|nd d6d tj kstj |rtj|nd d6} di| d6} t tj | nd}}|j}|sdditj|d 6d tj ksatj |rptj|nd d6} t tj | nd}|j}|j}||k} | stjd| fd||fitj|d 6d tj kstj |rtj|nd d6dtj ksFtj |rUtj|ndd6tj|d6} di| d6} t tj | nd}}} |j}|j} || k}|stjd |fd!|| fitj|d 6d tj kstj |r,tj|nd d6tj| d6dtj ksdtj |rstj|ndd6} d"i| d6} t tj | nd}}} dS(#Ns Hello World!s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5s)%(py2)s {%(py2)s = %(py0)s.e } == %(py4)stpy2tappRtpy4sassert %(py6)stpy6s+assert %(py2)s {%(py2)s = %(py0)s.success }sD%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.e }.value } == %(py6)sRsassert %(py8)stpy8sH%(py2)s {%(py2)s = %(py0)s.value } == %(py6)s {%(py6)s = %(py4)s.value }(s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s)%(py2)s {%(py2)s = %(py0)s.e } == %(py4)ssassert %(py6)s(s==(sD%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.e }.value } == %(py6)ssassert %(py8)s(s==(sH%(py2)s {%(py2)s = %(py0)s.value } == %(py6)s {%(py6)s = %(py4)s.value }sassert %(py8)s(R tflushRtfireRt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationR RR(R$RRRt @py_assert2t @py_assert1t @py_format4t @py_format6t @py_assert3t @py_format5t @py_format7t @py_format3t @py_assert5t @py_format9((s8/home/prologic/work/circuits/tests/core/test_feedback.pyR8sZ      l     U  cCst}x|r|jq Wtdt}|j|}x|rT|jqAWtjjtd|jx|r|jqtW|j }||k}|sot j d|fd||fit j |d6dt jkst j|rt j |ndd6dt jks,t j|r;t j |ndd 6}di|d 6}tt j|nd}}|j\}}} tjjtd ||tk}|srt j d|fd|tfidt jkst jtrt j tndd6dt jks/t j|r>t j |ndd6} di| d 6}tt j|nd}|j}|sd dit j |d6dt jkst j|rt j |ndd6} tt j| nd}|j}| }|s}d dit j |d6dt jksKt j|rZt j |ndd6} tt j| nd}}|j }|j}||k} | st j d| fd||fit j |d6dt jkst j|r t j |ndd6dt jks4t j|rCt j |ndd 6t j |d 6}d i|d6} tt j| nd}}} dS(!NRcSst|dS(Ni(R(tx((s8/home/prologic/work/circuits/tests/core/test_feedback.pyt\ss==s)%(py2)s {%(py2)s = %(py0)s.e } == %(py4)sR#R$R RR%R!sassert %(py6)sR&cSs t|S(N(R(R<((s8/home/prologic/work/circuits/tests/core/test_feedback.pyR=dss%(py0)s == %(py2)sRtetypesassert %(py4)ss+assert %(py2)s {%(py2)s = %(py0)s.failure }s/assert not %(py2)s {%(py2)s = %(py0)s.success }sD%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.e }.value } == %(py6)sR<sassert %(py8)sR'(s==(s)%(py2)s {%(py2)s = %(py0)s.e } == %(py4)ssassert %(py6)s(s==(s%(py0)s == %(py2)ssassert %(py4)s(s==(sD%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.e }.value } == %(py6)ssassert %(py8)s(R R(RRR)tpytraisesRRRR*R+R,R-R.R/R0R1R RR R(R$RR<R3R6R7R8R>tevaluet etracebackR9R4R:R;((s8/home/prologic/work/circuits/tests/core/test_feedback.pyRPsX        U U  (Rt __builtin__R-t_pytest.assertion.rewritet assertiontrewriteR*R?tcircuitsRRRRR RRR(((s8/home/prologic/work/circuits/tests/core/test_feedback.pyts  !  circuits-3.1.0/tests/core/__pycache__/test_channel_selection.cpython-27-PYTEST.pyc0000644000014400001440000001025312414363101031017 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZmZm Z defdYZ defdYZ defdYZ d efd YZ d efd YZd ZdS(iN(tEventt ComponenttManagertfoocBseZdZdZRS(s foo Eventta(R(t__name__t __module__t__doc__tchannels(((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyRstbarcBseZdZRS(s bar Event(RRR(((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyR stAcBseZdZdZRS(RcCsdS(NtFoo((tself((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyRs(RRtchannelR(((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyR stBcBseZdZdZRS(tbcCsdS(Ns Hello World!((R ((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyRs(RRR R(((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyRstCcBs eZdZdZdZRS(tccCs|jtS(N(tfireR (R ((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyR$scCsdS(NtBar((R ((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyR 's(RRR RR (((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyR s cCstttt}x|r4|jq!W|jt}|j|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}di|d 6}ttj|nd}}}|jtd }|j|j}d }||k}|s tj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}di|d 6}ttj|nd}}}|jtd d }|j|j}dd g}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}di|d 6}ttj|nd}}}|jtd}|j|j|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}di|d 6}ttj|nd}}}dS(NR s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)stpy2txtpy0tpy5tsassert %(py7)stpy7Rs Hello World!RRR(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)ssassert %(py7)s(RR RRtflushRRtvaluet @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(tmRt @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyttest+sX    |   |  |    |(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtcircuitsRRRRR R RRR+(((sA/home/prologic/work/circuits/tests/core/test_channel_selection.pyts  circuits-3.1.0/tests/core/__pycache__/test_utils.cpython-33-PYTEST.pyc0000644000014400001440000001757712414363411026523 0ustar prologicusers00000000000000 ?TMc@sddlZddljjZddlZddlmZddl m Z ddl m Z m Z mZdZdZGddde ZGd d d eZGd d d e ZGd dde ZddZddZddZddZdS(iN(u ModuleType(u Component(u findchannelufindrootufindtypeu%def foo(): return "Hello World!" u%def foo(); return "Hello World!' cBs|EeZdZdZdS(uBaseN(u__name__u __module__u __qualname__u__doc__(u __locals__((u5/home/prologic/work/circuits/tests/core/test_utils.pyuBasesuBasecBs |EeZdZddZdS(uAppcCsdS(Nu Hello World!((uself((u5/home/prologic/work/circuits/tests/core/test_utils.pyuhellosu App.helloN(u__name__u __module__u __qualname__uhello(u __locals__((u5/home/prologic/work/circuits/tests/core/test_utils.pyuAppsuAppcBs|EeZdZdZdS(uAuaN(u__name__u __module__u __qualname__uchannel(u __locals__((u5/home/prologic/work/circuits/tests/core/test_utils.pyuAsuAcBs|EeZdZdZdS(uBubN(u__name__u __module__u __qualname__uchannel(u __locals__((u5/home/prologic/work/circuits/tests/core/test_utils.pyuB#suBcCs`ddlm}tjjdt||jd}|jt|d}|dk }|st j d(|fd)|dfidt j kst jdrt jdndd6dt j kst j|rt j|ndd 6}d*i|d 6}tt j|nd}t|}|tk}|sFt j d+|fd,|tfit j|d6dt j kst j|rt j|ndd6dt j kst jtrt jtndd 6dt j kst jtrt jtndd6} d-i| d6} tt j| nd}}|j} d}| |k}|s t j d.|fd/| |fit j|d6dt j kst j| rt j| ndd 6} d0i| d6} tt j| nd}}|jdd} | jddrJ| jdd1n|jd }|jd!dr~|jdd1n|jt|d}|dk}|set j d2|fd3|dfidt j kst jdrt jdndd6dt j ks"t j|r1t j|ndd 6}d4i|d 6}tt j|nd}tj}||k}|sRt j d5|fd6||fid%t j kst jtrt jtnd%d6dt j kst j|rt j|ndd 6t j|d 6}d7i|d'6}tt j|nd}}dS(8Ni(u safeimportufoo.pyufoouis notu%(py0)s is not %(py2)suNoneupy2upy0uuassert %(py4)supy4uisu0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } is %(py5)supy3upy1utypeu ModuleTypeupy5uassert %(py7)supy7u Hello World!u==u%(py0)s == %(py3)susuassert %(py5)suextupycufileiu ignore_errorsu __pycache__udiru%(py0)s is %(py2)sunot inu3%(py0)s not in %(py4)s {%(py4)s = %(py2)s.modules }usysuassert %(py6)supy6(uis not(u%(py0)s is not %(py2)suassert %(py4)s(uis(u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } is %(py5)suassert %(py7)s(u==(u%(py0)s == %(py3)suassert %(py5)sT(uis(u%(py0)s is %(py2)suassert %(py4)s(unot in(u3%(py0)s not in %(py4)s {%(py4)s = %(py2)s.modules }uassert %(py6)s(ucircuits.core.utilsu safeimportusysupathuinsertustruensureuwriteuFOOuNoneu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationutypeu ModuleTypeufoounewucheckuremoveuTrueudirpathuFOOBARumodules(utmpdiru safeimportufoo_pathufoou @py_assert1u @py_format3u @py_format5u @py_assert2u @py_assert4u @py_format6u @py_format8usu @py_format4upycupydu @py_assert3u @py_format7((u5/home/prologic/work/circuits/tests/core/test_utils.pyutest_safeimport(s^       l     utest_safeimportcCs0t}t}t}|j||j|x|rK|jq8Wt|}||k}|s&tjd |fd ||fidtj kstj |rtj |ndd6dtj kstj |rtj |ndd6}d i|d 6}t tj |nd}dS( Nu==u%(py0)s == %(py2)suappupy2urootupy0uuassert %(py4)supy4(u==(u%(py0)s == %(py2)suassert %(py4)s(uAppuAuBuregisteruflushufindrootu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(uappuauburootu @py_assert1u @py_format3u @py_format5((u5/home/prologic/work/circuits/tests/core/test_utils.pyu test_findrootCs        u test_findrootcCst}ttj|x|r6|jq#Wt|d}|j}d}||k}|s tjd |fd ||fitj |d6dt j kstj |rtj |ndd6tj |d6}d i|d 6}t tj|nd}}}dS( Nuau==u/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)supy2upy0upy5uuassert %(py7)supy7(u==(u/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)suassert %(py7)s(uAppuAuBuregisteruflushu findchanneluchannelu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uappuau @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u5/home/prologic/work/circuits/tests/core/test_utils.pyutest_findchannelSs    |utest_findchannelcCs@t}ttj|x|r6|jq#Wt|t}t|t}|s6ddidtjkst j trt j tndd6dtjkst j |rt j |ndd6dtjkst j trt j tndd6t j |d 6}t t j |nd}dS( Nuu5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }uAupy2uaupy1u isinstanceupy0upy4(uAppuAuBuregisteruflushufindtypeu isinstanceu @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(uappuau @py_assert3u @py_format5((u5/home/prologic/work/circuits/tests/core/test_utils.pyu test_findtype_s  u test_findtype(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arusysutypesu ModuleTypeucircuitsu Componentucircuits.core.utilsu findchannelufindrootufindtypeuFOOuFOOBARuBaseuAppuAuButest_safeimportu test_findrootutest_findchannelu test_findtype(((u5/home/prologic/work/circuits/tests/core/test_utils.pyus     circuits-3.1.0/tests/core/__pycache__/test_timers.cpython-34-PYTEST.pyc0000644000014400001440000001315612414363521026656 0ustar prologicusers00000000000000 ?TA@sddlZddljjZddlZddlZddlmZm Z ddl m Z m Z m Z ddZddZdd ZGd d d e ZGd d d e ZddZddZddZdS)N)datetime timedelta)Event ComponentTimercs.jdfdddddddS)Nsetupcs tS)N)setupapp)requestr 6/home/prologic/work/circuits/tests/core/test_timers.pysz%pytest_funcarg__app..teardowncSs t|S)N) teardownapp)appr r r r sscopemodule) cached_setup)r r )r r pytest_funcarg__apps  rcCst}|j|S)N)Appstart)r rr r r rs  rcCs|jdS)N)stop)rr r r rsrc@seZdZdZdS)testz test EventN)__name__ __module__ __qualname____doc__r r r r r!s rcs:eZdZfddZddZddZS)rcs2tt|jd|_d|_g|_dS)NFr)superr__init__flagcount timestamps)self) __class__r r r's  z App.__init__cCsg|_d|_d|_dS)NFr)r rr)r!r r r reset-s  z App.resetcCs2|jjtj|jd7_d|_dS)NT)r appendtimerr)r!r r r r2szApp.test)rrrrr#rr r )r"r r%s  rcCs&tdtd}|j|tj}d}|||}|s dditj|d6tj|d6tj|d6d tjkstj |rtj|nd d 6d tjkstj trtjtnd d 6}t tj |nt }}}|j dS) Ng?timerrzSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }py5py2py7rpy3pytestpy0)rrregisterr-wait_for @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNoner#)rr' @py_assert1 @py_assert4 @py_assert6 @py_format8r r r test_timer8s  r=c CsD|jjtjtdtddd}|j|tj|dd}|j}d}||k}|st j d!|fd"||fit j |d 6t j |d 6d t j kst j|rt j |nd d 6}d#i|d6}tt j|nt}}}|sd$idt j ksTt j|rct j |ndd 6}tt j|n|jd|jd} g}d}| |k}|} |rd} | | k} | } n| s?t j d%|fd&| |fit j |d 6dt j ks5t j| rDt j | ndd 6}di|d6}|j||rt j d'| fd(| | fidt j kst j| rt j | ndd6t j | d6} di| d6}|j|nt j|di}d)i|d 6}tt j|nt} }}}} } |jd|jd} g}d}| |k}|} |rd} | | k} | } n| st j d*|fd+| |fit j |d 6dt j kst j| rt j | ndd 6}di|d6}|j||rt j d,| fd-| | fidt j kst j| rt j | ndd6t j | d6} di| d6}|j|nt j|di}d.i|d 6}tt j|nt} }}}} } |j|jdS)/Ng?r'persistTr>=-%(py2)s {%(py2)s = %(py0)s.count } >= %(py5)sr)r*rr.r(assert %(py7)sr+assert %(py0)swait_resr$rg{Gz?g?%(py2)s >= %(py5)sdeltaz%(py7)s<%(py9)s < %(py12)spy9py12z%(py14)spy14assert %(py17)spy17)r@)rArBrC)r@)rE)rG)rHrL)r@)rE)rG)rHrL)r r%r&rrr/r-r0rr1_call_reprcomparer2r3r4r5r6r7r8_format_boolopr# unregister)rr'rDr9r: @py_assert3 @py_format6r<Z @py_format1rF @py_assert0 @py_assert11 @py_assert10 @py_format13 @py_format15 @py_format16 @py_format18r r r test_persistentTimer?sv   |A  l l  l l rZcCsEtj}|tdd}t|td}|j|tj}d}|||}|s)dditj |d6tj |d6tj |d 6d t j kstj |rtj |nd d 6d t j kstj trtj tnd d 6}t tj|nt}}}|jdS)Nsecondsg?r'rr(zSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }r)r*r+rr,r-r.)rnowrrrr/r-r0r1r2r3r4r5r6r7r8r#)rr\dr'r9r:r;r<r r r test_datetimeQs   r^)builtinsr3_pytest.assertion.rewrite assertionrewriter1r&r-rrcircuitsrrrrrrrrr=rZr^r r r r s        circuits-3.1.0/tests/core/__pycache__/test_call_wait_timeout.cpython-33-PYTEST.pyc0000644000014400001440000002172612414363411031057 0ustar prologicusers00000000000000 ?T(c@sddlZddljjZddlZddlmZm Z m Z m Z Gddde Z Gddde Z Gddde ZGd d d e Zejd d d dZddZddZddZddZdS(iN(uhandleru ComponentuEventu TimeoutErrorcBs |EeZdZdZdZdS(uwaitu wait EventNT(u__name__u __module__u __qualname__u__doc__uTrueusuccess(u __locals__((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyuwaitsuwaitcBs |EeZdZdZdZdS(ucallu call EventNT(u__name__u __module__u __qualname__u__doc__uTrueusuccess(u __locals__((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyucall sucallcBs |EeZdZdZdZdS(uhellou hello EventNT(u__name__u __module__u __qualname__u__doc__uTrueusuccess(u __locals__((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyuhellosuhellocBsb|EeZdZedd ddZedddZedd d d Zd S(uAppuwaiticcs`|jt}y|jdd|VWn*tk rV}z |VWYdd}~XnX|VdS(Nuhelloutimeout(ufireuhellouwaitu TimeoutError(uselfutimeouturesultue((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyu_on_waits u App._on_waituhellocCsdS(Nuhello((uself((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyu _on_hello"su App._on_helloucallccsYd}y|jtd|V}Wn*tk rO}z |VWYdd}~XnX|VdS(Nutimeout(uNoneucalluhellou TimeoutError(uselfutimeouturesultue((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyu_on_call&s u App._on_callNii(u__name__u __module__u __qualname__uhandleru_on_waitu _on_hellou_on_call(u __locals__((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyuApps    uAppuscopeumodulecstj||j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj |nd}}}fd d }|j |S( Nu registereduuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4csjdS(N(u unregister((uapp(uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyu finalizer6suapp..finalizer( uAppuregisteruwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneu addfinalizer(urequestumanageruwatcheru @py_assert1u @py_assert3u @py_assert5u @py_format7u finalizer((uappuA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyuapp1s  u uappc Cs|jtd}|j}d}||}|sdditj|d6dtjksqtj|rtj|ndd6tj|d6tj|d 6}ttj|nd}}}|j }d } || k}|stj d|fd|| fitj| d 6dtjksDtj|rStj|ndd6} di| d6} ttj| nd}} dS(Ni u wait_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4uhellou==u%(py0)s == %(py3)supy3uvalueuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s( ufireuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert2u @py_format4u @py_format6((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyutest_wait_success>s   u  lutest_wait_successc Cs|jtd}|j}d}||}|sdditj|d6dtjksqtj|rtj|ndd6tj|d6tj|d 6}ttj|nd}}}|j }t |t }|sdd id tjkstjt r)tjt nd d6d tjksQtj|r`tj|nd d 6dtjkstjt rtjt ndd6tj|d 6} ttj| nd}dS(Niu wait_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4u5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }u TimeoutErroruvalueupy1u isinstance( ufireuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu isinstanceu TimeoutError( umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_format5((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyutest_wait_failureGs  u utest_wait_failurec Cs|jtd}|j}d}||}|sdditj|d6dtjksqtj|rtj|ndd6tj|d6tj|d 6}ttj |nd}}}|j }d } || k}|stj d|fd|| fitj| d 6dtjksDtj|rStj|ndd6} di| d6} ttj | nd}} dS(Ni u call_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4uhellou==u%(py0)s == %(py3)supy3uvalueuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s( ufireucalluwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert2u @py_format4u @py_format6((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyutest_call_successPs   u  lutest_call_successc Cs|jtd}|j}d}||}|sdditj|d6dtjksqtj|rtj|ndd6tj|d6tj|d 6}ttj |nd}}}|j }t |t }|sdd id tjkstjt r)tjt nd d6d tjksQtj|r`tj|nd d 6dtjkstjt rtjt ndd6tj|d 6} ttj | nd}dS(Niu call_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4u5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }u TimeoutErroruvalueupy1u isinstance(ufireucalluwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu isinstanceu TimeoutError( umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_format5((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyutest_call_failureYs  u utest_call_failure(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestu circuits.coreuhandleru ComponentuEventu TimeoutErroruwaitucalluhellouAppufixtureuapputest_wait_successutest_wait_failureutest_call_successutest_call_failure(((uA/home/prologic/work/circuits/tests/core/test_call_wait_timeout.pyus  " circuits-3.1.0/tests/core/__pycache__/test_component_setup.cpython-27-PYTEST.pyc0000644000014400001440000002230712414363101030567 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZddlm Z m Z de fdYZ de fdYZ de fd YZ d e fd YZd efd YZdZdZdZdS(iN(thandler(t ComponenttManagertAppcBseZdZRS(cOsdS(N((tselfteventtargstkwargs((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyttests(t__name__t __module__R(((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyRstAcBseZRS((R R (((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyR stBcBs)eZeZeddddZRS(tprepare_unregistertchannelt*cCs|j|rt|_ndS(N(t in_subtreetTruetinformed(RRtc((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyt_on_prepare_unregisters(R R tFalseRRR(((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyR stBasecBseZdZRS(tbase(R R R(((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyR#stCcBseZdZRS(R(R R R(((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyR(sc Cst}t}|j||j}|j}|j}d}t}|||}||k}| rtjdf|fdf||fi tj |d6dt j kptj trtj tndd6tj |d6tj |d6d t j kptj |r)tj |nd d 6tj |d 6tj |d 6d t j kpntj |rtj |nd d 6tj |d6} ddi| d6} t tj| nt}}}}}}}|jx|r|jqW|j}| }| rdditj |d6dt j kpVtj |rhtj |ndd 6} t tj| nt}}dS(NRtins%(py2)s {%(py2)s = %(py0)s.test } in %(py15)s {%(py15)s = %(py8)s {%(py8)s = %(py6)s {%(py6)s = %(py4)s._handlers }.get }(%(py10)s, %(py13)s {%(py13)s = %(py11)s() }) }tpy10tsettpy11tpy2tpy13tapptpy0tpy15tpy6tpy4tpy8tsassert %(py17)stpy17s1assert not %(py2)s {%(py2)s = %(py0)s._handlers }tm(RRtregisterRt _handlerstgetRt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonet unregistertflush( R'Rt @py_assert1t @py_assert5t @py_assert7t @py_assert9t @py_assert12t @py_assert14t @py_assert3t @py_format16t @py_format18t @py_format4((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyt test_basic-s2      1   UcCs t}t}t}|j||j|||k}|stjd|fd||fidtjkstj|rtj |ndd6dtjkstj|rtj |ndd6}di|d 6}t tj |nd}|j }||k}|stjd|fd||fitj |d6dtjksvtj|rtj |ndd6dtjkstj|rtj |ndd 6}di|d 6}t tj |nd}}|j}||k}|stjd|fd||fitj |d6dtjksgtj|rvtj |ndd6dtjkstj|rtj |ndd 6}di|d 6}t tj |nd}}||k}|stjd|fd||fidtjks?tj|rNtj |ndd6dtjksvtj|rtj |ndd6}di|d 6}t tj |nd}|j }||k}|stjd|fd ||fitj |d6dtjks,tj|r;tj |ndd6dtjksctj|rrtj |ndd 6}d!i|d 6}t tj |nd}}|j}||k}|stjd"|fd#||fitj |d6dtjkstj|r,tj |ndd6dtjksTtj|rctj |ndd 6}d$i|d 6}t tj |nd}}|jx|r|jqW|j}|s>dditj |d6dtjks tj|rtj |ndd6}t tj |nd}||k}|stjd%|fd&||fidtjkstj|rtj |ndd6dtjkstj|rtj |ndd6}d'i|d 6}t tj |nd}|j }||k}|stjd(|fd)||fitj |d6dtjkstj|rtj |ndd6dtjkstj|rtj |ndd 6}d*i|d 6}t tj |nd}}|j}||k}|stjd+|fd,||fitj |d6dtjksvtj|rtj |ndd6dtjkstj|rtj |ndd 6}d-i|d 6}t tj |nd}}||k}|s tjd.|fd/||fidtjksN tj|r] tj |ndd6dtjks tj|r tj |ndd6}d0i|d 6}t tj |nd}|j }||k}|s tjd1|fd2||fitj |d6dtjks; tj|rJ tj |ndd6dtjksr tj|r tj |ndd 6}d3i|d 6}t tj |nd}}|j}||k}|s tjd4|fd5||fitj |d6dtjks, tj|r; tj |ndd6dtjksc tj|rr tj |ndd 6}d6i|d 6}t tj |nd}}dS(7NRs%(py0)s in %(py2)sR'RtaR R%sassert %(py4)sR#s==s,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)ssassert %(py6)sR"s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)stbs,assert %(py2)s {%(py2)s = %(py0)s.informed }snot ins%(py0)s not in %(py2)s(R(s%(py0)s in %(py2)ssassert %(py4)s(s==(s,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)ssassert %(py6)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)ssassert %(py6)s(R(s%(py0)s in %(py2)ssassert %(py4)s(s==(s,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)ssassert %(py6)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)ssassert %(py6)s(snot in(s%(py0)s not in %(py2)ssassert %(py4)s(s==(s,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)ssassert %(py6)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)ssassert %(py6)s(R(s%(py0)s in %(py2)ssassert %(py4)s(s==(s,%(py2)s {%(py2)s = %(py0)s.root } == %(py4)ssassert %(py6)s(s==(s.%(py2)s {%(py2)s = %(py0)s.parent } == %(py4)ssassert %(py6)s(RR R R(R+R,R.R/R0R-R1R2R3troottparentR4R5R(R'RARBR6t @py_format3t @py_format5R<t @py_format7((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyt test_complex<s                  U         cCst}|j}d}||k}|stjd |fd ||fitj|d6dtjks|tj|rtj|ndd6tj|d6}d i|d 6}ttj |nd}}}t }|j}d }||k}|stjd|fd||fitj|d6d tjksYtj|rhtj|nd d6tj|d6}di|d 6}ttj |nd}}}dS(NRs==s/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)sRR tpy5R%sassert %(py7)stpy7R(s==(s/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)ssassert %(py7)s(s==(s/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)ssassert %(py7)s( RRR+R,R-R.R/R0R1R2R3R(RR6t @py_assert4R<t @py_format6t @py_format8R((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyt$test_subclassing_with_custom_channelYs$   |   |(t __builtin__R.t_pytest.assertion.rewritet assertiontrewriteR+tcircuits.core.handlersRtcircuitsRRRR R RRR@RHRN(((s?/home/prologic/work/circuits/tests/core/test_component_setup.pyts    circuits-3.1.0/tests/core/__pycache__/test_priority.cpython-26-PYTEST.pyc0000644000014400001440000000437312407376150027242 0ustar prologicusers00000000000000 ?Tc@sddkZddkiiZddklZlZl Z l Z defdYZ de fdYZ e Z e Zeie xe oe iqWdZdS(iN(thandlertEventt ComponenttManagerttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s8/home/prologic/work/circuits/tests/core/test_priority.pyRstAppcBsSeZeddZeddddZeddddZRS(RcCsdS(Ni((tself((s8/home/prologic/work/circuits/tests/core/test_priority.pyttest_0 stpriorityicCsdS(Ni((R ((s8/home/prologic/work/circuits/tests/core/test_priority.pyttest_3sicCsdS(Ni((R ((s8/home/prologic/work/circuits/tests/core/test_priority.pyttest_2s(RRRR R R (((s8/home/prologic/work/circuits/tests/core/test_priority.pyR scCstit}xtotiqWt|}dddg}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}d h|d 6}t ti |nd}}dS( Niiis==s%(py0)s == %(py3)stxtpy0tpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s(tmtfireRtflushtlistt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(tvRt @py_assert2t @py_assert1t @py_format4t @py_format6((s8/home/prologic/work/circuits/tests/core/test_priority.pyt test_main s  o(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtcircuitsRRRRRRRtapptregisterRR$(((s8/home/prologic/work/circuits/tests/core/test_priority.pyts "   circuits-3.1.0/tests/core/__pycache__/test_utils.cpython-27-PYTEST.pyc0000644000014400001440000001526712414363102026515 0ustar prologicusers00000000000000 ?TMc@sddlZddljjZddlZddlmZddl m Z ddl m Z m Z mZdZdZde fdYZd efd YZd e fd YZd e fdYZdZdZdZdZdS(iN(t ModuleType(t Component(t findchanneltfindroottfindtypes%def foo(): return "Hello World!" s%def foo(); return "Hello World!' tBasecBseZdZRS(R(t__name__t __module__t__doc__(((s5/home/prologic/work/circuits/tests/core/test_utils.pyRstAppcBseZdZRS(cCsdS(Ns Hello World!((tself((s5/home/prologic/work/circuits/tests/core/test_utils.pythellos(RRR (((s5/home/prologic/work/circuits/tests/core/test_utils.pyR stAcBseZdZRS(ta(RRtchannel(((s5/home/prologic/work/circuits/tests/core/test_utils.pyR stBcBseZdZRS(tb(RRR(((s5/home/prologic/work/circuits/tests/core/test_utils.pyR#scCs`ddlm}tjjdt||jd}|jt|d}|dk }|st j d)|fd*|dfidt j kst jdrt jdndd 6dt j kst j|rt j|ndd 6}d+i|d 6}tt j|nd}t|}|tk}|sFt j d,|fd-|tfit j|d6dt j kst j|rt j|ndd6dt j kst jtrt jtndd 6dt j kst jtrt jtndd6} d.i| d6} tt j| nd}}|j} d}| |k}|s t j d/|fd0| |fit j|d6dt j kst j| rt j| ndd 6} d1i| d6} tt j| nd}}|jdd} | jddrJ| jd tn|jd!}|jd"dr~|jd tn|jt|d}|dk}|set j d2|fd3|dfidt j kst jdrt jdndd 6dt j ks"t j|r1t j|ndd 6}d4i|d 6}tt j|nd}tj}||k}|sRt j d5|fd6||fid&t j kst jtrt jtnd&d 6dt j kst j|rt j|ndd 6t j|d 6}d7i|d(6}tt j|nd}}dS(8Ni(t safeimportisfoo.pytfoosis nots%(py0)s is not %(py2)stNonetpy2tpy0tsassert %(py4)stpy4tiss0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } is %(py5)stpy3tpy1ttypeRtpy5sassert %(py7)stpy7s Hello World!s==s%(py0)s == %(py3)stssassert %(py5)stexttpyctfileit ignore_errorst __pycache__tdirs%(py0)s is %(py2)ssnot ins3%(py0)s not in %(py4)s {%(py4)s = %(py2)s.modules }tsyssassert %(py6)stpy6(sis not(s%(py0)s is not %(py2)ssassert %(py4)s(R(s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } is %(py5)ssassert %(py7)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(R(s%(py0)s is %(py2)ssassert %(py4)s(snot in(s3%(py0)s not in %(py4)s {%(py4)s = %(py2)s.modules }sassert %(py6)s(tcircuits.core.utilsRR%tpathtinserttstrtensuretwritetFOORt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationRRRtnewtchecktremovetTruetdirpathtFOOBARtmodules(ttmpdirRtfoo_pathRt @py_assert1t @py_format3t @py_format5t @py_assert2t @py_assert4t @py_format6t @py_format8Rt @py_format4R tpydt @py_assert3t @py_format7((s5/home/prologic/work/circuits/tests/core/test_utils.pyttest_safeimport(s^       l     cCs0t}t}t}|j||j|x|rK|jq8Wt|}||k}|s&tjd |fd ||fidtj kstj |rtj |ndd6dtj kstj |rtj |ndd6}d i|d 6}t tj |nd}dS( Ns==s%(py0)s == %(py2)stappRtrootRRsassert %(py4)sR(s==(s%(py0)s == %(py2)ssassert %(py4)s(R R RtregistertflushRR.R/R0R1R2R3R4R5R(RKR RRLR?R@RA((s5/home/prologic/work/circuits/tests/core/test_utils.pyt test_findrootCs        cCst}ttj|x|r6|jq#Wt|d}|j}d}||k}|s tjd |fd ||fitj |d6dt j kstj |rtj |ndd6tj |d6}d i|d 6}t tj|nd}}}dS( NR s==s/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)sRRRRsassert %(py7)sR(s==(s/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)ssassert %(py7)s(R R RRMRNRRR.R/R3R0R1R2R4R5R(RKR R?RCRHRDRE((s5/home/prologic/work/circuits/tests/core/test_utils.pyttest_findchannelSs    |cCs@t}ttj|x|r6|jq#Wt|t}t|t}|s6ddidtjkst j trt j tndd6dtjkst j |rt j |ndd6dtjkst j trt j tndd6t j |d 6}t t j |nd}dS( NRs5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }R RR Rt isinstanceRR(R R RRMRNRRQR0R1R.R2R3R4R5R(RKR RHRA((s5/home/prologic/work/circuits/tests/core/test_utils.pyt test_findtype_s  (t __builtin__R0t_pytest.assertion.rewritet assertiontrewriteR.R%ttypesRtcircuitsRR'RRRR-R;RR R RRJRORPRR(((s5/home/prologic/work/circuits/tests/core/test_utils.pyts     circuits-3.1.0/tests/core/__pycache__/test_complete.cpython-26-PYTEST.pyc0000644000014400001440000001317412407376150027170 0ustar prologicusers00000000000000 ?Tc@s ddkZddkiiZddklZlZdefdYZ defdYZ defdYZ d efd YZ d efd YZ d efdYZeZe iee iee iexeoeiqWdZdZdS(iN(tEventt Componentt simple_eventcBseZeZRS((t__name__t __module__tTruetcomplete(((s8/home/prologic/work/circuits/tests/core/test_complete.pyRsttestcBseZdZeZRS(s test Event(RRt__doc__Rtsuccess(((s8/home/prologic/work/circuits/tests/core/test_complete.pyR stNested3cBseZdZdZRS(tnested3cCs3|iidjod|i_n d|i_dS(s; Updating state. Must be called twice to reach final state.sPre final states Final stateN(troott_state(tself((s8/home/prologic/work/circuits/tests/core/test_complete.pyRs(RRtchannelR(((s8/home/prologic/work/circuits/tests/core/test_complete.pyR stNested2cBseZdZdZRS(tnested2cCs<d|i_|itti|ittidS(s Updating state. s New stateN(R R tfireRR R(R((s8/home/prologic/work/circuits/tests/core/test_complete.pyRs (RRRR(((s8/home/prologic/work/circuits/tests/core/test_complete.pyRstNested1cBseZdZdZRS(tnested1cCs|ittidS(s1 State change involves other components as well. N(RRRR(R((s8/home/prologic/work/circuits/tests/core/test_complete.pyR)s(RRRR(((s8/home/prologic/work/circuits/tests/core/test_complete.pyR&stAppcBsJeZdZeZdZdZdZdZ dZ dZ dZ RS(tapps Old statecCs t|_dS(N(Rt_simple_event_completed(Rtetvalue((s8/home/prologic/work/circuits/tests/core/test_complete.pytsimple_event_complete5scCs8t}t|_|ig|_|i|tidS(s9 Fire the test event that should produce a state change. N(RRRRtcomplete_channelsRR(Rtevt((s8/home/prologic/work/circuits/tests/core/test_complete.pyR8s  cCs|i|_dS(s8 Test event has been processed, save the achieved state.N(R t_state_when_success(RRR((s8/home/prologic/work/circuits/tests/core/test_complete.pyt test_success?scCs|i|_dS(sT Test event has been completely processed, save the achieved state. N(R t_state_when_complete(RRR((s8/home/prologic/work/circuits/tests/core/test_complete.pyt test_completeCsN( RRRtFalseRR tNoneRRRRRR (((s8/home/prologic/work/circuits/tests/core/test_complete.pyR.s   cCstitxtotiqWti}|pmdhdtijptitoti tndd6ti |d6}t ti |nd}dS(sE Test if complete works for an event without further effects s;assert %(py2)s {%(py2)s = %(py0)s._simple_event_completed }Rtpy0tpy2N( RRRtflushRt @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationR"(t @py_assert1t @py_format3((s8/home/prologic/work/circuits/tests/core/test_complete.pyttest_complete_simpleRs TcCstitxtotiqWti}d}||j}|ptid |fd ||fhdtijpti toti tndd6ti |d6ti |d6}dh|d 6}t ti |nd}}}ti}d }||j}|ptid|fd||fhdtijpti toti tndd6ti |d6ti |d6}dh|d 6}t ti |nd}}}dS(Ns Old states==s;%(py2)s {%(py2)s = %(py0)s._state_when_success } == %(py5)sRR#R$tpy5sassert %(py7)stpy7s Final states<%(py2)s {%(py2)s = %(py0)s._state_when_complete } == %(py5)s(s==(s;%(py2)s {%(py2)s = %(py0)s._state_when_success } == %(py5)s(s==(s<%(py2)s {%(py2)s = %(py0)s._state_when_complete } == %(py5)s(RRRR%RR(t_call_reprcompareR&R'R)R*R+R,R"R(R-t @py_assert4t @py_assert3t @py_format6t @py_format8((s8/home/prologic/work/circuits/tests/core/test_complete.pyttest_complete_nested]s(    (t __builtin__R&t_pytest.assertion.rewritet assertiontrewriteR(tcircuitsRRRRR RRRRtregisterR%R/R7(((s8/home/prologic/work/circuits/tests/core/test_complete.pyts"     circuits-3.1.0/tests/core/__pycache__/test_worker_process.cpython-34-PYTEST.pyc0000644000014400001440000001022212414363521030411 0ustar prologicusers00000000000000 ?T@sdZddlZddljjZddlZddlm Z ddl m Z m Z ej ddddZd d Zd d Zd dZddZddZddZddZdS)z Workers TestsN)getpid)taskWorkerscopemodulecs5tj|fdd}|j|S)NcsjdS)N) unregister)workerr>/home/prologic/work/circuits/tests/core/test_worker_process.py finalizerszworker..finalizer)rregister addfinalizer)requestmanagerr r)r r r s r cCstdS)N)xrrrr errsrcCs7d}d}x$|dkr2|d7}|d7}qW|S)Nri@Br)rirrr foos  rcCsdjtS)NzHello from {0:d})formatrrrrr pid'srcCs||S)Nr)abrrr add+src Cstt}d|_|j|}|j}d}||}|sdditj|d6tj|d6dtjkstj |rtj|ndd6tj|d 6}t tj |nt }}}|j d }t|t} | sdd itj| d 6tj|d6d tjksMtj tr\tjtnd d6dtjkstj trtjtndd6} t tj | nt }} dS)NTZ task_failurezFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }py2py6watcherpy0py4rz5assert %(py5)s {%(py5)s = %(py0)s(%(py2)s, %(py3)s) }py5 Exceptionpy3 isinstance)rrfailurefirewait @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonevaluer$r") rrr er @py_assert1 @py_assert3 @py_assert5 @py_format7 @py_assert4 @py_format6rrr test_failure/s     u r8c Cstt}d|_|j|}|j}d}||}|sdditj|d6tj|d6dtjkstj |rtj|ndd6tj|d 6}t tj |nt }}}|j }d } || k}|stjd|fd|| fitj| d 6tj|d6dtjksctj |rrtj|ndd6} di| d6} t tj | nt }}} dS)NT task_successrzFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }rrrrr i@B==-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sr!rassert %(py7)spy7)r:)r;r<)rrsuccessr&r'r(r)r*r+r,r-r.r/r0_call_reprcompare) rrr r1rr2r3r4r5r6r7 @py_format8rrr test_success:s$    u  |rAc Csttdd}d|_|j|}|j}d}||}|sdditj|d6tj|d6d tjkstj |rtj|nd d 6tj|d 6}t tj |nt }}}|j }d } || k}|stjd|fd|| fitj| d6tj|d6dtjksitj |rxtj|ndd 6} di| d6} t tj | nt }}} dS)NrrTr9rzFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }rrrrr r:-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sr!rassert %(py7)sr=)r:)rCrD)rrr>r&r'r(r)r*r+r,r-r.r/r0r?) rrr r1rr2r3r4r5r6r7r@rrr test_argsEs$   u  |rE)__doc__builtinsr*_pytest.assertion.rewrite assertionrewriter(pytestosrcircuitsrrfixturer rrrrr8rArErrrr s      circuits-3.1.0/tests/core/__pycache__/test_new_filter.cpython-33-PYTEST.pyc0000644000014400001440000000762512414363411027512 0ustar prologicusers00000000000000 ?TXc@sddlZddljjZddlZddlmZm Z Gddde Z GdddeZ ej ddZ d d Zd d ZdS( iN(u ComponentuEventcBs |EeZdZdZdZdS(uhellou hello EventNT(u__name__u __module__u __qualname__u__doc__uTrueusuccess(u __locals__((u:/home/prologic/work/circuits/tests/core/test_new_filter.pyuhellosuhellocBs |EeZdZddZdS(uAppcOs#|jddr|jndS(Nustopu Hello World!F(ugetuFalseustop(uselfueventuargsukwargs((u:/home/prologic/work/circuits/tests/core/test_new_filter.pyuhellos u App.helloN(u__name__u __module__u __qualname__uhello(u __locals__((u:/home/prologic/work/circuits/tests/core/test_new_filter.pyuAppsuAppcsLttj|jdfdd}|j|S(Nu registeredcsjjddS(Nu unregistered(u unregisteruwait((uappuwatcher(u:/home/prologic/work/circuits/tests/core/test_new_filter.pyu finalizers uapp..finalizer(uAppuregisteruwaitu addfinalizer(urequestumanageruwatcheru finalizer((uappuwatcheru:/home/prologic/work/circuits/tests/core/test_new_filter.pyuapps   uappcCs|jt}|jd|j}ddg}||k}|stjd |fd ||fitj|d6dtjkstj |rtj|ndd6tj|d6}di|d 6}t tj |nd}}}dS(Nu hello_successu Hello World!u==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2uxupy0upy5uuassert %(py7)supy7(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s( ufireuhellouwaituvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uappuwatcheruxu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u:/home/prologic/work/circuits/tests/core/test_new_filter.pyu test_normal$s  |u test_normalcCs|jtdd }|jd|j}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd6tj|d 6}di|d 6}t tj |nd}}}dS(Nustopu hello_successu Hello World!u==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2uxupy0upy5uuassert %(py7)supy7T(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(ufireuhellouTrueuwaituvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uappuwatcheruxu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u:/home/prologic/work/circuits/tests/core/test_new_filter.pyu test_filter*s   |u test_filter(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsu ComponentuEventuhellouAppufixtureuappu test_normalu test_filter(((u:/home/prologic/work/circuits/tests/core/test_new_filter.pyus   circuits-3.1.0/tests/core/__pycache__/test_generator_value.cpython-27-PYTEST.pyc0000644000014400001440000000613612414363101030531 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZmZdefdYZ defdYZ defdYZ d Z d Z dS( iN(tEventt ComponentttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s?/home/prologic/work/circuits/tests/core/test_generator_value.pyRsthellocBseZdZRS(s hello Event(RRR(((s?/home/prologic/work/circuits/tests/core/test_generator_value.pyR stAppcBseZdZdZRS(cCsd}|S(NcssxtrdVqWdS(NtHello(tTrue(((s?/home/prologic/work/circuits/tests/core/test_generator_value.pytfs ((tselfR ((s?/home/prologic/work/circuits/tests/core/test_generator_value.pyRs ccsdVdVdS(NsHello sWorld!((R ((s?/home/prologic/work/circuits/tests/core/test_generator_value.pyRs(RRRR(((s?/home/prologic/work/circuits/tests/core/test_generator_value.pyRs cCs t}x|r|jq W|jt}|j|j|j}d}||k}|stjd |fd ||fitj|d6dt j kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( NRs==s%(py0)s == %(py3)stpy3txtpy0tsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(RtflushtfireRtticktvaluet @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(tapptvR t @py_assert2t @py_assert1t @py_format4t @py_format6((s?/home/prologic/work/circuits/tests/core/test_generator_value.pyttest_return_generators      lcCst}x|r|jq W|jt}|j|j|j|j}ddg}||k}|s tjd |fd ||fitj|d6dt j kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS(NsHello sWorld!s==s%(py0)s == %(py3)sR R RRsassert %(py5)sR(s==(s%(py0)s == %(py3)ssassert %(py5)s(RRRRRRRRRRRRRRR(RRR R R!R"R#((s?/home/prologic/work/circuits/tests/core/test_generator_value.pyt test_yield(s       l(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtcircuitsRRRRRR$R%(((s?/home/prologic/work/circuits/tests/core/test_generator_value.pyts  circuits-3.1.0/tests/core/__pycache__/test_generate_events.cpython-34-PYTEST.pyc0000644000014400001440000000564012414363521030530 0ustar prologicusers00000000000000 ?T*@sddlZddljjZddlZddlmZm Z GdddeZ ej ddddZ d d Z dS) N) ComponentEventc@sXeZdZddZddZddZddZd d Zd d Zd S)AppcCsd|_d|_d|_dS)NFr)_ready_done_counter)selfr ?/home/prologic/work/circuits/tests/core/test_generate_events.pyinit s  zApp.initcCs)||kr%|jtjdndS)Nready)firercreate)r componentmanagerr r r registereds zApp.registeredcCsf|j s|jrdS|jdkr?|jtjdn|jtjd|jddS)N hellodoner)rrrr rrreduce_time_left)reventr r r generate_eventss zApp.generate_eventscCs d|_dS)NT)r)rr r r rszApp.donecCs|jd7_dS)N)r)rr r r r sz App.hellocCs d|_dS)NT)r)rr r r r #sz App.readyN) __name__ __module__ __qualname__r rrrrr r r r r rs     rscopemodulecstj|fdd}|j||j}d}||}|sdditj|d6tj|d6dtjkstj|rtj|ndd 6tj|d 6}t tj |nt }}}S) NcsjdS)N) unregisterr )appr r finalizer+szapp..finalizerr zFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }py2py6watcherpy0py4) rregister addfinalizerwait @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)requestrr$r @py_assert1 @py_assert3 @py_assert5 @py_format7r )rr r's   urcCs|jd|j}d}||k}|stjd |fd ||fitj|d6tj|d6dtjkstj|rtj|ndd6}di|d 6}ttj |nt }}}dS)Nrr==0%(py2)s {%(py2)s = %(py0)s._counter } == %(py5)spy5r"rr%r!assert %(py7)spy7)r7)r8r:) r)rr*_call_reprcomparer+r,r-r.r/r0r1)rr$rr3 @py_assert4r4 @py_format6 @py_format8r r r test5s   |r@)builtinsr,_pytest.assertion.rewrite assertionrewriter*pytestcircuitsrrrfixturerr@r r r r s  circuits-3.1.0/tests/core/__pycache__/test_value.cpython-26-PYTEST.pyc0000644000014400001440000003112212407376151026466 0ustar prologicusers00000000000000 ?T c@sddkZddkiiZddkZddklZl Z l Z de fdYZ de fdYZ de fdYZ d e fd YZd e fd YZeid ZdZdZdZdZdZdZdS(iN(thandlertEventt ComponentthellocBseZdZRS(s Hhllo Event(t__name__t __module__t__doc__(((s5/home/prologic/work/circuits/tests/core/test_value.pyR sttestcBseZdZRS(s test Event(RRR(((s5/home/prologic/work/circuits/tests/core/test_value.pyRstfoocBseZdZRS(s foo Event(RRR(((s5/home/prologic/work/circuits/tests/core/test_value.pyRstvaluescBseZdZeZRS(s values Event(RRRtTruetcomplete(((s5/home/prologic/work/circuits/tests/core/test_value.pyR stAppcBseZdZdZdZeddZeddZeddd d Zeddd d Z eddd dZ RS(cCsdS(Ns Hello World!((tself((s5/home/prologic/work/circuits/tests/core/test_value.pyRscCs|itS(N(tfireR(R ((s5/home/prologic/work/circuits/tests/core/test_value.pyR!scCstddS(NtERROR(t Exception(R ((s5/home/prologic/work/circuits/tests/core/test_value.pyR$sthello_value_changedcCs ||_dS(N(tvalue(R R((s5/home/prologic/work/circuits/tests/core/test_value.pyt_on_hello_value_changed'sttest_value_changedcCs ||_dS(N(R(R R((s5/home/prologic/work/circuits/tests/core/test_value.pyt_on_test_value_changed+sR tpriorityg@cCsdS(NR((R ((s5/home/prologic/work/circuits/tests/core/test_value.pyt_value1/sg?cCsdS(Ntbar((R ((s5/home/prologic/work/circuits/tests/core/test_value.pyt_value23sgcCs|itS(N(RR(R ((s5/home/prologic/work/circuits/tests/core/test_value.pyt_value37s( RRRRRRRRRRR(((s5/home/prologic/work/circuits/tests/core/test_value.pyR s   csBti|idfd}|i|S(Nt registeredcsiiddS(Nt unregistered(t unregistertwait((twatchertapp(s5/home/prologic/work/circuits/tests/core/test_value.pyt finalizerAs (R tregisterRt addfinalizer(trequesttmanagerRR!((RR s5/home/prologic/work/circuits/tests/core/test_value.pyR <s   c Cs|it}|idd}||j}|ptid|fd||fhti|d6dtijpti|oti|ndd6}dh|d 6}t ti |nd}}|i }d}||j} | ptid| fd||fhdtijpti|oti|ndd 6ti|d 6ti|d 6}dh|d6} t ti | nd}} }dS(NRs Hello World!tins%(py1)s in %(py3)stpy1txtpy3sassert %(py5)stpy5s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)stpy0tpy2sassert %(py7)stpy7(R&(s%(py1)s in %(py3)s(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)s( RRRt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNoneR( R RR(t @py_assert0t @py_assert2t @py_format4t @py_format6t @py_assert1t @py_assert4t @py_assert3t @py_format8((s5/home/prologic/work/circuits/tests/core/test_value.pyt test_valueJs"  o   c Cs|it}|id|i}d}||j}|ptid|fd||fhdtijpti|oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}t |}d} || j}|ptid|fd|| fhdtijpti|oti |ndd 6d tijptit oti t nd d6ti |d6ti | d6} dh| d6} t ti | nd}}} dS(NRs Hello World!s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sR(R+R,R*sassert %(py7)sR-s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)sR'tstrR)tpy6sassert %(py8)stpy8(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)s(s==(s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)s(RRRRR.R/R1R2R3R0R4R5R6R@( R RR(R;R<R=R:R>R8t @py_assert5t @py_format7t @py_format9((s5/home/prologic/work/circuits/tests/core/test_value.pyttest_nested_valueRs$     c Cs|it}t|_|idd}||j}|ptid|fd||fhti|d6dti jpti |oti|ndd6}dh|d 6}t ti |nd}}|i}d}||j} | ptid| fd||fhdti jpti |oti|ndd 6ti|d 6ti|d 6}dh|d6} t ti | nd}} }|i}||j} | ptid| fd||fhdti jpti |oti|ndd 6ti|d 6dti jpti |oti|ndd6} dh| d6} t ti | nd}} dS(NRs Hello World!R&s%(py1)s in %(py3)sR'R(R)sassert %(py5)sR*s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sR+R,sassert %(py7)sR-tiss-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)sR tpy4sassert %(py6)sRA(R&(s%(py1)s in %(py3)s(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)s(RG(s-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)s(RRR tnotifyRR.R/R0R1R2R3R4R5R6R( R RR(R7R8R9R:R;R<R=R>t @py_format5RD((s5/home/prologic/work/circuits/tests/core/test_value.pyttest_value_notifyZs2   o    c Cs|it}t|_|id|i}d}||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}t|}d} || j}|ptid|fd|| fhdti jpti |oti |ndd 6d ti jpti toti tnd d6ti |d6ti | d6} dh| d6} t ti | nd}}} |i}||j}|ptid|fd||fhdti jpti |oti |ndd6ti |d6dti jpti |oti |ndd6} dh| d6} t ti | nd}}dS(NRs Hello World!s==s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sR(R+R,R*sassert %(py7)sR-s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)sR'R@R)RAsassert %(py8)sRBRGs-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)sR RHsassert %(py6)s(s==(s-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)s(s==(s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)s(RG(s-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)s(RRR RIRRR.R/R1R2R3R0R4R5R6R@( R RR(R;R<R=R:R>R8RCRDRERJ((s5/home/prologic/work/circuits/tests/core/test_value.pyttest_nested_value_notifyes4       cCs!|it}|id|\}}}|tj}|ptid|fd|tfhdtijpti|oti |ndd6dtijptitoti tndd6}dh|d 6}t ti |nd}t |} d } | | j} | ptid| fd| | fhd tijpti|oti |nd d6dtijptit oti t ndd6ti | d6ti | d6} dh| d6} t ti | nd} } } t|t}|pdhdtijpti|oti |ndd6dtijptitoti tndd6dtijptitoti tndd6ti |d 6}t ti |nd}dS(NRRGs%(py0)s is %(py2)stetypeR+RR,sassert %(py4)sRHRs==s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)stevalueR'R@R)RAsassert %(py8)sRBs5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }t etracebackt isinstancetlist(RG(s%(py0)s is %(py2)s(s==(s0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)s(RRRRR.R/R1R2R3R0R4R5R6R@RPRQ(R RR(RMRNROR;t @py_format3RJR8RCR<RDRER=((s5/home/prologic/work/circuits/tests/core/test_value.pyttest_error_valueps,    c Cs|it}|id|i}t|t}|pdhdtijpti |oti |ndd6dtijpti toti tndd6ti |d6dtijpti toti tndd 6ti |d 6}t ti |nd}}t|}d }||j}|ptid|fd||fhti |d6dtijpti |oti |ndd6}dh|d6} t ti | nd}}d ddg}||j} | ptid| fd||fhdtijpti |oti |ndd6ti |d6}dh|d6} t ti | nd} }|d}d } || j}|potid|fd|| fhti |d6ti | d 6} dh| d 6}t ti |nd}}} |d}d} || j}|potid |fd!|| fhti |d6ti | d 6} dh| d 6}t ti |nd}}} |d}d} || j}|potid"|fd#|| fhti |d6ti | d 6} dh| d 6}t ti |nd}}} dS($Ntvalues_completesPassert %(py6)s {%(py6)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.value }, %(py4)s) }tvR'RPR+R)RQRHRARR&s%(py1)s in %(py3)ssassert %(py5)sR*Rs Hello World!s==s%(py0)s == %(py3)sR(is%(py1)s == %(py4)ssassert %(py6)sii(R&(s%(py1)s in %(py3)s(s==(s%(py0)s == %(py3)s(s==(s%(py1)s == %(py4)s(s==(s%(py1)s == %(py4)s(s==(s%(py1)s == %(py4)s(RR RRRPRQR1R2R.R3R0R4R5R6R/( R RRUR8RCRDR(R7R9R:R;R=RJ((s5/home/prologic/work/circuits/tests/core/test_value.pyttest_multiple_valueszs^     o  o   E  E  E(t __builtin__R1t_pytest.assertion.rewritet assertiontrewriteR.tpytesttcircuitsRRRRRRR R tfixtureR R?RFRKRLRSRV(((s5/home/prologic/work/circuits/tests/core/test_value.pyts      circuits-3.1.0/tests/core/__pycache__/signalapp.cpython-33.pyc0000644000014400001440000000360312414363411025235 0ustar prologicusers00000000000000 ?Twc @sddlZddlZyddlmZd ZWnek rLd ZYnXddlmZddl m Z GdddeZ ddZ e d kre ndS( iN(ucoverage(u Component(uDaemoncBs,|EeZdZddZddZdS(uAppcCs,||_||_t|jj|dS(N(upidfileu signalfileuDaemonuregister(uselfupidfileu signalfile((u4/home/prologic/work/circuits/tests/core/signalapp.pyuinits  uApp.initcCs=t|jd}|jt||j|jdS(Nuw(uopenu signalfileuwriteustrucloseustop(uselfusignalustackuf((u4/home/prologic/work/circuits/tests/core/signalapp.pyusignals u App.signalN(u__name__u __module__u __qualname__uinitusignal(u __locals__((u4/home/prologic/work/circuits/tests/core/signalapp.pyuApps uAppcCstr"tdd}|jntjjtjd}tjjtjd}t ||j tr|j |j ndS(Nu data_suffixiiT( u HAS_COVERAGEucoverageuTrueustartuosupathuabspathusysuargvuAppurunustopusave(u _coverageupidfileu signalfile((u4/home/prologic/work/circuits/tests/core/signalapp.pyumain"s  umainu__main__TF(uosusysucoverageuTrueu HAS_COVERAGEu ImportErroruFalseucircuitsu Componentu circuits.appuDaemonuAppumainu__name__(((u4/home/prologic/work/circuits/tests/core/signalapp.pyus      circuits-3.1.0/tests/core/__pycache__/test_worker_process.cpython-32-PYTEST.pyc0000644000014400001440000001336512414363276030431 0ustar prologicusers00000000000000l ?Tc@sdZddlZddljjZddlZddlm Z ddl m Z m Z ej dddZdZd Zd Zd Zd Zd ZdZdS(u Workers TestsiN(ugetpid(utaskuWorkeruscopeumodulecs2tj|fd}|j|S(NcsjdS(N(u unregister((uworker(u>/home/prologic/work/circuits/tests/core/test_worker_process.pyu finalizers(uWorkeruregisteru addfinalizer(urequestumanageru finalizer((uworkeru>/home/prologic/work/circuits/tests/core/test_worker_process.pyuworkers cCstdS(Ni(ux(((u>/home/prologic/work/circuits/tests/core/test_worker_process.pyuerrscCs7d}d}x$|dkr2|d7}|d7}qW|S(Nii@Bi((uxui((u>/home/prologic/work/circuits/tests/core/test_worker_process.pyufoos  cCsdjtS(NuHello from {0:d}(uformatugetpid(((u>/home/prologic/work/circuits/tests/core/test_worker_process.pyupid'scCs||S(N((uaub((u>/home/prologic/work/circuits/tests/core/test_worker_process.pyuadd+sc Cstt}d|_|j|}|j}d}||}|sdditj|d6dtj kstj |rtj|ndd6tj|d6tj|d6}t tj |nd}}}|jd }t|t} | sdd id tj ks-tj tr<tjtnd d 6tj|d6d tj ksttj trtjtnd d6tj| d6} t tj | nd}} dS(Nu task_failureuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4iu5assert %(py5)s {%(py5)s = %(py0)s(%(py2)s, %(py3)s) }u Exceptionupy3u isinstanceupy5T(utaskuerruTrueufailureufireuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu isinstanceu Exception( umanageruwatcheruworkerueuxu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_assert4u @py_format6((u>/home/prologic/work/circuits/tests/core/test_worker_process.pyu test_failure/s     u c Cstt}d|_|j|}|j}d}||}|sdditj|d6dtj kstj |rtj|ndd6tj|d6tj|d6}t tj |nd}}}|j}d } || k}|stjd|fd|| fitj|d6d tj ksStj |rbtj|nd d6tj| d 6} di| d6} t tj | nd}}} dS(Nu task_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4i@Bu==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suxupy5uassert %(py7)supy7T(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(utaskufoouTrueusuccessufireuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( umanageruwatcheruworkerueuxu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_assert4u @py_format6u @py_format8((u>/home/prologic/work/circuits/tests/core/test_worker_process.pyu test_success:s$    u  |c Csttdd}d|_|j|}|j}d}||}|sdditj|d6dtj kstj |rtj|ndd6tj|d 6tj|d 6}t tj |nd}}}|j}d } || k}|stjd|fd|| fitj|d6dtj ksYtj |rhtj|ndd6tj| d6} di| d6} t tj | nd}}} dS(Niiu task_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4iu==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suxupy5uassert %(py7)supy7T(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(utaskuadduTrueusuccessufireuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( umanageruwatcheruworkerueuxu @py_assert1u @py_assert3u @py_assert5u @py_format7u @py_assert4u @py_format6u @py_format8((u>/home/prologic/work/circuits/tests/core/test_worker_process.pyu test_argsEs$   u  |(u__doc__ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuosugetpiducircuitsutaskuWorkerufixtureuworkeruerrufooupiduaddu test_failureu test_successu test_args(((u>/home/prologic/work/circuits/tests/core/test_worker_process.pyus      circuits-3.1.0/tests/core/__pycache__/test_generate_events.cpython-32-PYTEST.pyc0000644000014400001440000001022412414363275030526 0ustar prologicusers00000000000000l ?T*c@s{ddlZddljjZddlZddlmZm Z GddeZ ej dddZ dZ dS( iN(u ComponentuEventcBsD|EeZdZdZdZdZdZdZdS(cCsd|_d|_d|_dS(NiF(uFalseu_readyu_doneu_counter(uself((u?/home/prologic/work/circuits/tests/core/test_generate_events.pyuinit s  cCs)||kr%|jtjdndS(Nuready(ufireuEventucreate(uselfu componentumanager((u?/home/prologic/work/circuits/tests/core/test_generate_events.pyu registereds cCsf|j s|jrdS|jdkr?|jtjdn|jtjd|jddS(Ni uhelloudonei(u_readyu_doneu_counterufireuEventucreateureduce_time_left(uselfuevent((u?/home/prologic/work/circuits/tests/core/test_generate_events.pyugenerate_eventss cCs d|_dS(NT(uTrueu_done(uself((u?/home/prologic/work/circuits/tests/core/test_generate_events.pyudonescCs|jd7_dS(Ni(u_counter(uself((u?/home/prologic/work/circuits/tests/core/test_generate_events.pyuhello scCs d|_dS(NT(uTrueu_ready(uself((u?/home/prologic/work/circuits/tests/core/test_generate_events.pyuready#sN(u__name__u __module__uinitu registeredugenerate_eventsudoneuhellouready(u __locals__((u?/home/prologic/work/circuits/tests/core/test_generate_events.pyuApps     uAppuscopeumodulecstj|fd}|j||j}d}||}|sdditj|d6dtjkstj|rtj|ndd6tj|d6tj|d 6}t tj |nd}}}S( NcsjdS(N(u unregister((uapp(u?/home/prologic/work/circuits/tests/core/test_generate_events.pyu finalizer+sureadyuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4( uAppuregisteru addfinalizeruwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(urequestumanageruwatcheru finalizeru @py_assert1u @py_assert3u @py_assert5u @py_format7((uappu?/home/prologic/work/circuits/tests/core/test_generate_events.pyuapp's   ucCs|jd|j}d}||k}|stjd |fd ||fitj|d6dtjkstj|rtj|ndd6tj|d6}di|d 6}ttj |nd}}}dS(Nudonei u==u0%(py2)s {%(py2)s = %(py0)s._counter } == %(py5)supy2uappupy0upy5uuassert %(py7)supy7(u==(u0%(py2)s {%(py2)s = %(py0)s._counter } == %(py5)suassert %(py7)s( uwaitu_counteru @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(umanageruwatcheruappu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u?/home/prologic/work/circuits/tests/core/test_generate_events.pyutest5s   |(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsu ComponentuEventuAppufixtureuapputest(((u?/home/prologic/work/circuits/tests/core/test_generate_events.pyus  circuits-3.1.0/tests/core/__pycache__/test_errors.cpython-34-PYTEST.pyc0000644000014400001440000000737212414363521026672 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlZddlmZm Z GdddeZ Gddde Z ddZ ej d d Zd d ZdS) N)Event Componentc@seZdZdZdS)testz test EventN)__name__ __module__ __qualname____doc__r r 6/home/prologic/work/circuits/tests/core/test_errors.pyrs rcs@eZdZfddZddZddddZS)AppcsDtt|jd|_d|_d|_d|_d|_dS)N)superr __init__etypeevalue etracebackhandlerfevent)self) __class__r r r s     z App.__init__cCstS)N)x)rr r r rszApp.testNcCs1||_||_||_||_||_dS)N)rrrrr)rrrrrrr r r exceptions     z App.exception)rrrr rrr r )rr r s  r cCs |dS)Nr )er r r reraise"srcsBtj||jdfdd}|j|S)N registeredcsjdS)N) unregisterr )appr r finalizer+szapp..finalizer)r registerwait addfinalizer)requestmanagerwatcherrr )rr r&s   rc CsFt}|j||jd|j}|tk}|s tjd|fd|tfitj|d6dtj kstj |rtj|ndd6dtj kstj trtjtndd6}di|d 6}t tj |nt }}tjtd d |j|j}t|t}|s9d didtj ksytj |rtj|ndd6dtj kstj trtjtndd6tj|d 6tj|d6dtj kstj trtjtndd6}t tj |nt }}|j}|j}||k}|sCtjd|fd||fitj|d6tj|d 6dtj kstj |rtj|ndd6dtj kstj |rtj|ndd6}di|d6} t tj | nt }}}|j}||k}|s8tjd|fd||fitj|d6dtj kstj |rtj|ndd6dtj kstj |rtj|ndd6}d i|d 6}t tj |nt }}dS)!Nr==-%(py2)s {%(py2)s = %(py0)s.etype } == %(py4)spy2rpy0 NameErrorpy4assert %(py6)spy6cSs t|S)N)r)rr r r 9sztest_main..zUassert %(py6)s {%(py6)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.etraceback }, %(py4)s) }py1listpy3 isinstanceI%(py2)s {%(py2)s = %(py0)s.handler } == %(py6)s {%(py6)s = %(py4)s.test }assert %(py8)spy8.%(py2)s {%(py2)s = %(py0)s.fevent } == %(py4)sr)r#)r$r*)r#)r1r2)r#)r4r*)rfirerrr' @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonepytestraisesrrr0r.rr) rr"r @py_assert1 @py_assert3 @py_format5 @py_format7 @py_assert2 @py_assert5 @py_format9r r r test_main3s@         rH)builtinsr9_pytest.assertion.rewrite assertionrewriter6r?circuitsrrrr rfixturerrHr r r r s    circuits-3.1.0/tests/core/__pycache__/test_priority.cpython-34-PYTEST.pyc0000644000014400001440000000347712414363521027241 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZmZm Z m Z GdddeZ Gddde Z e Z e Zeje xe re jqWddZdS) N)handlerEvent ComponentManagerc@seZdZdZdS)testz test EventN)__name__ __module__ __qualname____doc__r r 8/home/prologic/work/circuits/tests/core/test_priority.pyrs rc@sdeZdZedddZedddddZedddd d Zd S) ApprcCsdS)Nrr )selfr r r test_0 sz App.test_0prioritycCsdS)Nrr )rr r r test_3sz App.test_3cCsdS)Nrr )rr r r test_2sz App.test_2N)rrr rrrrr r r r r s r cCstjt}xtr(tjqWt|}dddg}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nt }}dS)Nrrr==%(py0)s == %(py3)spy3xpy0assert %(py5)spy5)r)rr)mfirerflushlist @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)vr @py_assert2 @py_assert1 @py_format4 @py_format6r r r test_main s   lr/)builtinsr$_pytest.assertion.rewrite assertionrewriter!circuitsrrrrrr rappregisterrr/r r r r s "    circuits-3.1.0/tests/core/__pycache__/test_event.cpython-27-PYTEST.pyc0000644000014400001440000001516212414363101026467 0ustar prologicusers00000000000000 ?Tc@sdZddlZddljjZddlZddlm Z m Z de fdYZ de fdYZ dZ d Zd Zd Zd ZdS( s Event TestsiN(tEventt ComponentttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s5/home/prologic/work/circuits/tests/core/test_event.pyR stAppcBseZdZRS(cCsdS(Ns Hello World!((tself((s5/home/prologic/work/circuits/tests/core/test_event.pyRs(RRR(((s5/home/prologic/work/circuits/tests/core/test_event.pyRscCst}x|r|jq Wt}t|}d}||k}|stjd |fd ||fitj|d6dtjkstj |rtj|ndd6}d i|d 6}t tj |nd}}|j |t|}d }||k}|stjd|fd||fitj|d6dtjksotj |r~tj|ndd6}di|d 6}t tj |nd}}dS(Ns s==s%(py0)s == %(py3)stpy3tstpy0tsassert %(py5)stpy5s (s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(RtflushRtreprt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonetfire(tappteR t @py_assert2t @py_assert1t @py_format4t @py_format6((s5/home/prologic/work/circuits/tests/core/test_event.pyt test_reprs*     l    lcCst}x|r|jq Wtjd}t|}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}|j|t|}d }||k}|stjd|fd||fitj|d6dtj ksutj |rtj|ndd6}di|d 6}t tj |nd}}dS(NRs s==s%(py0)s == %(py3)sRR R R sassert %(py5)sR s (s==(s%(py0)s == %(py3)ssassert %(py5)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(RR RtcreateRRRRRRRRRRR(RRR RRRR((s5/home/prologic/work/circuits/tests/core/test_event.pyt test_create&s*    l    lcCst}x|r|jq Wtddddd}|d}d}||k}|stjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nd}}}|d}d}||k}|sftjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nd}}}d}t jj t ||ddS(Niiitfootbaris==s%(py1)s == %(py4)stpy1tpy4R sassert %(py6)stpy6cSs||S(N((Rtk((s5/home/prologic/work/circuits/tests/core/test_event.pytf@s(s==(s%(py1)s == %(py4)ssassert %(py6)s(s==(s%(py1)s == %(py4)ssassert %(py6)s( RR RRRRRRRtpytraisest TypeError(RRt @py_assert0t @py_assert3Rt @py_format5t @py_format7R(((s5/home/prologic/work/circuits/tests/core/test_event.pyt test_getitem6s,    E  E cCst}x|r|jq Wtddddd}|d}d}||k}|stjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nd}}}|d}d}||k}|sftjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nd}}}d|ds      circuits-3.1.0/tests/core/__pycache__/test_generate_events.cpython-33-PYTEST.pyc0000644000014400001440000001053612414363411030525 0ustar prologicusers00000000000000 ?T*c@sddlZddljjZddlZddlmZm Z GdddeZ ej ddddZ d d Z dS( iN(u ComponentuEventcBs\|EeZdZddZddZddZddZd d Zd d Zd S(uAppcCsd|_d|_d|_dS(NiF(uFalseu_readyu_doneu_counter(uself((u?/home/prologic/work/circuits/tests/core/test_generate_events.pyuinit s  uApp.initcCs)||kr%|jtjdndS(Nuready(ufireuEventucreate(uselfu componentumanager((u?/home/prologic/work/circuits/tests/core/test_generate_events.pyu registereds uApp.registeredcCsf|j s|jrdS|jdkr?|jtjdn|jtjd|jddS(Ni uhelloudonei(u_readyu_doneu_counterufireuEventucreateureduce_time_left(uselfuevent((u?/home/prologic/work/circuits/tests/core/test_generate_events.pyugenerate_eventss uApp.generate_eventscCs d|_dS(NT(uTrueu_done(uself((u?/home/prologic/work/circuits/tests/core/test_generate_events.pyudonesuApp.donecCs|jd7_dS(Ni(u_counter(uself((u?/home/prologic/work/circuits/tests/core/test_generate_events.pyuhello su App.hellocCs d|_dS(NT(uTrueu_ready(uself((u?/home/prologic/work/circuits/tests/core/test_generate_events.pyuready#su App.readyN( u__name__u __module__u __qualname__uinitu registeredugenerate_eventsudoneuhellouready(u __locals__((u?/home/prologic/work/circuits/tests/core/test_generate_events.pyuApps     uAppuscopeumodulecstj|fdd}|j||j}d}||}|sdditj|d6dtjkstj|rtj|ndd6tj|d 6tj|d 6}t tj |nd}}}S( NcsjdS(N(u unregister((uapp(u?/home/prologic/work/circuits/tests/core/test_generate_events.pyu finalizer+suapp..finalizerureadyuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4( uAppuregisteru addfinalizeruwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(urequestumanageruwatcheru finalizeru @py_assert1u @py_assert3u @py_assert5u @py_format7((uappu?/home/prologic/work/circuits/tests/core/test_generate_events.pyuapp's   uuappcCs|jd|j}d}||k}|stjd |fd ||fitj|d6dtjkstj|rtj|ndd6tj|d6}di|d 6}ttj |nd}}}dS(Nudonei u==u0%(py2)s {%(py2)s = %(py0)s._counter } == %(py5)supy2uappupy0upy5uuassert %(py7)supy7(u==(u0%(py2)s {%(py2)s = %(py0)s._counter } == %(py5)suassert %(py7)s( uwaitu_counteru @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(umanageruwatcheruappu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u?/home/prologic/work/circuits/tests/core/test_generate_events.pyutest5s   |utest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsu ComponentuEventuAppufixtureuapputest(((u?/home/prologic/work/circuits/tests/core/test_generate_events.pyus  circuits-3.1.0/tests/core/__pycache__/test_event_priority.cpython-26-PYTEST.pyc0000644000014400001440000000632412407376150030441 0ustar prologicusers00000000000000 ?Tc@sddkZddkiiZddklZlZdefdYZ defdYZ defdYZ d Z d Z dS( iN(t ComponenttEventtfoocBseZdZRS(s foo Event(t__name__t __module__t__doc__(((s>/home/prologic/work/circuits/tests/core/test_event_priority.pyRstdonecBseZdZRS(s done Event(RRR(((s>/home/prologic/work/circuits/tests/core/test_event_priority.pyR stAppcBs#eZdZdZdZRS(cCs g|_dS(N(tresults(tself((s>/home/prologic/work/circuits/tests/core/test_event_priority.pytinitscCs|ii|dS(N(Rtappend(R tvalue((s>/home/prologic/work/circuits/tests/core/test_event_priority.pyRscCs|idS(N(tstop(R ((s>/home/prologic/work/circuits/tests/core/test_event_priority.pyRs(RRR RR(((s>/home/prologic/work/circuits/tests/core/test_event_priority.pyRs  cCs.t}|itd|itdg|it|i|i}ddg}||j}|ptid |fd ||fhdti jpti |oti |ndd6ti |d6ti |d6}d h|d 6}t ti |nd}}}dS( Niis==s/%(py2)s {%(py2)s = %(py0)s.results } == %(py5)stapptpy0tpy2tpy5sassert %(py7)stpy7(s==(s/%(py2)s {%(py2)s = %(py0)s.results } == %(py5)s(RtfireRRtrunRt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(Rt @py_assert1t @py_assert4t @py_assert3t @py_format6t @py_format8((s>/home/prologic/work/circuits/tests/core/test_event_priority.pyttest1s (  cCs:t}|itddd|itdddg|it|i|i}ddg}||j}|ptid |fd||fhdti jpti |oti |ndd6ti |d 6ti |d 6}d h|d 6}t ti |nd}}}dS(Nitpriorityiis==s/%(py2)s {%(py2)s = %(py0)s.results } == %(py5)sRRRRsassert %(py7)sR(s==(s/%(py2)s {%(py2)s = %(py0)s.results } == %(py5)s(RRRRRRRRRRRRRRR(RRRR R!R"((s>/home/prologic/work/circuits/tests/core/test_event_priority.pyttest2&s 4  (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtcircuitsRRRRRR#R%(((s>/home/prologic/work/circuits/tests/core/test_event_priority.pyts  circuits-3.1.0/tests/core/__pycache__/test_call_wait_order.cpython-32-PYTEST.pyc0000644000014400001440000001050212414363275030501 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlZddlmZmZddl m Z m Z ddl m Z m Z ddl mZmZmZGddeZddZGd d eZejd d d ZdZdS(iN(usleeputime(urandomuseed(utaskuWorker(uhandleru ComponentuEventcBs|EeZdZdZdS(u hello EventNT(u__name__u __module__u__doc__uTrueusuccess(u __locals__((u?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyuhellos uhellocCstt|S(N(usleepurandom(ux((u?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyuprocesss cBs#|EeZeddZdS(uhelloccsNttd}|jttd|jttd|j|VVdS(Niii(utaskuprocessufireucall(uselfue1((u?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyu _on_hellosN(u__name__u __module__uhandleru _on_hello(u __locals__((u?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyuApps uAppuscopeumodulecstttj||j}d}||}|sdditj|d6dtjks{tj |rtj|ndd6tj|d6tj|d6}t tj |nd}}}t j||j}d}||}|sdditj|d6dtjksItj |rXtj|ndd6tj|d6tj|d6}t tj |nd}}}fd }|j|S( Nu registereduuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4csjjdS(N(u unregister((uappuworker(u?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyu finalizer-s (useedutimeuAppuregisteruwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuWorkeru addfinalizer(urequestumanageruwatcheru @py_assert1u @py_assert3u @py_assert5u @py_format7u finalizer((uappuworkeru?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyuapp#s(   u  u c Cs|jt}|j}d}||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d6}ttj |nd}}}|j }d } || k}|stj d|fd|| fitj| d 6d tjksAtj|rPtj|nd d6} di| d6} ttj | nd}} dS(Nu hello_successuuFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }upy2uwatcherupy0upy6upy4iu==u%(py0)s == %(py3)supy3uvalueuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s( ufireuhellouwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuvalueu_call_reprcompare( umanageruwatcheruappuxu @py_assert1u @py_assert3u @py_assert5u @py_format7uvalueu @py_assert2u @py_format4u @py_format6((u?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyutest_call_order6s   u  l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestutimeusleepurandomuseedu circuits.coreutaskuWorkeruhandleru ComponentuEventuhellouNoneuprocessuAppufixtureuapputest_call_order(((u?/home/prologic/work/circuits/tests/core/test_call_wait_order.pyus    circuits-3.1.0/tests/core/__pycache__/test_signals.cpython-33-PYTEST.pyc0000644000014400001440000001030612414363411027002 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZddlZddlZddl m Z ddl m Z ddl mZddlmZmZddlmZddlmZd d Zd d d ZddZdS(iN(usleep(uESRCH(uSIGTERM(ukilluremove(uPopeni(u signalappcCsPyt|dWn8tk rK}z|jtkr9dSWYdd}~XnXdS(NiFT(ukilluOSErroruerrnouESRCHuFalseuTrue(upiduerror((u7/home/prologic/work/circuits/tests/core/test_signals.pyu is_runnings u is_runningicCs-|}x t|r(|r(tdq WdS(Ni(u is_runningusleep(upidutimeoutucount((u7/home/prologic/work/circuits/tests/core/test_signals.pyuwaitsuwaitc Cs$tjdkstjdn|jd|jdt|jd}t|jd}tjt j ||g}dj|}t |dd!didjtj d 6}|j}d }||k}|sntjd"|fd#||fitj|d 6dtjks+tj|r:tj|ndd6} d$i| d6} ttj| nd}}tdtj }|j} | |} | sjdditj|d6dtjkstjtrtjtndd6tj| d6dtjks(tj|r7tj|ndd6tj| d6} ttj| nd}} } tj }|j} | |} | s`dditj|d6dtjkstjtrtjtndd6tj| d6dtjkstj|r-tj|ndd6tj| d6} ttj| nd}} } t|d}t|jj}|jt |t!t|t|d}|jj}|jtt!}||k}|stjd%|fd&||fidtjksAtjt!rPtjt!ndd 6dtjksxtjtrtjtndd6dtjkstj|rtj|ndd6tj|d6} d'i| d6} ttj| nd}}t"|t"|dS((Nuposixu(Cannot run test on a non-POSIX platform.u.pidu.signalu ushelluenvu:u PYTHONPATHiu==u%(py0)s == %(py3)supy3ustatusupy0uuassert %(py5)supy5iubassert %(py7)s {%(py7)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.path }.exists }(%(py5)s) }upy2uosupy7upidfileupy4ubassert %(py7)s {%(py7)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.path }.isfile }(%(py5)s) }uru0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }uSIGTERMustrusignaluassert %(py7)sT(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }uassert %(py7)s(#uosunameupytestuskipuensureustrujoinusysu executableu signalappu__file__uPopenuTrueupathuwaitu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneusleepuexistsuisfileuopenuintureadustripucloseukilluSIGTERMuremove(utmpdirupidfileu signalfileuargsucmdupustatusu @py_assert2u @py_assert1u @py_format4u @py_format6u @py_assert3u @py_assert6u @py_format8ufupidusignalu @py_assert4((u7/home/prologic/work/circuits/tests/core/test_signals.pyutest"sb  +  l           utest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuosusysutimeusleepuerrnouESRCHusignaluSIGTERMukilluremoveu subprocessuPopenuu signalappu is_runninguwaitutest(((u7/home/prologic/work/circuits/tests/core/test_signals.pyus     circuits-3.1.0/tests/core/__pycache__/test_loader.cpython-26-PYTEST.pyc0000644000014400001440000000405012407376150026617 0ustar prologicusers00000000000000 ?Tc@syddkZddkiiZddkZddklZddk l Z l Z l Z de fdYZ dZdS(iN(tdirname(tEventtLoadertManagerttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s6/home/prologic/work/circuits/tests/core/test_loader.pyR sc Cs t}tdttgi|}|i|id|it}t i }d}|||}|pdhdt i jpt it ot it ndd6dt i jpt i|ot i|ndd6t i|d 6t i|d 6t i|d 6}tt i|nd}}}|i}d }||j}|pt id|fd||fhdt i jpt i|ot i|ndd6t i|d6} dh| d 6} tt i| nd}}|idS(NtpathstapptresultsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }tpytesttpy0txtpy3tpy2tpy5tpy7s Hello World!s==s%(py0)s == %(py3)stssassert %(py5)s(s==(s%(py0)s == %(py3)s(RRRt__file__tregistertstarttloadtfireRR twait_fort @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetvaluet_call_reprcomparetstop( tmtloaderR t @py_assert1t @py_assert4t @py_assert6t @py_format8Rt @py_assert2t @py_format4t @py_format6((s6/home/prologic/work/circuits/tests/core/test_loader.pyt test_mains* !     o (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRR tos.pathRtcircuitsRRRRR-(((s6/home/prologic/work/circuits/tests/core/test_loader.pyts  circuits-3.1.0/tests/core/__pycache__/signalapp.cpython-34.pyc0000644000014400001440000000250012414363521025233 0ustar prologicusers00000000000000 ?Tw @sddlZddlZyddlmZdZWnek rLdZYnXddlmZddlmZGdddeZ d d Z e d kre ndS) N)coverageTF) Component)Daemonc@s(eZdZddZddZdS)AppcCs,||_||_t|jj|dS)N)pidfile signalfilerregister)selfrrr 4/home/prologic/work/circuits/tests/core/signalapp.pyinits  zApp.initcCs=t|jd}|jt||j|jdS)Nw)openrwritestrclosestop)r signalstackfr r r rs z App.signalN)__name__ __module__ __qualname__r rr r r r rs  rcCstr"tdd}|jntjjtjd}tjjtjd}t||j tr|j |j ndS)N data_suffixT) HAS_COVERAGErstartospathabspathsysargvrrunrsave) _coveragerrr r r main"s  r&__main__) rr!rr ImportErrorcircuitsr circuits.apprrr&rr r r r s      circuits-3.1.0/tests/core/__pycache__/test_generator_value.cpython-34-PYTEST.pyc0000644000014400001440000000470612414363521030536 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlmZmZGdddeZ GdddeZ GdddeZ d d Z d d Z dS) N)Event Componentc@seZdZdZdS)testz test EventN)__name__ __module__ __qualname____doc__r r ?/home/prologic/work/circuits/tests/core/test_generator_value.pyrs rc@seZdZdZdS)helloz hello EventN)rrrrr r r r r s r c@s(eZdZddZddZdS)AppcCsdd}|S)NcssxdVqdS)NHellor r r r r fszApp.test..fr )selfrr r r rs zApp.testccsdVdVdS)NzHello zWorld!r )rr r r r sz App.helloN)rrrrr r r r r r s  r cCs t}x|r|jq W|jt}|j|j|j}d}||k}|stjd |fd ||fitj|d6dt j kstj |rtj|ndd6}d i|d 6}t tj |nt}}dS) Nr ==%(py0)s == %(py3)spy3xpy0assert %(py5)spy5)r)rr)r flushfirertickvalue @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNone)appvr @py_assert2 @py_assert1 @py_format4 @py_format6r r r test_return_generators      lr+cCst}x|r|jq W|jt}|j|j|j|j}ddg}||k}|s tjd |fd ||fitj|d6dt j kstj |rtj|ndd6}d i|d 6}t tj |nt}}dS)NzHello zWorld!r%(py0)s == %(py3)srrrrassert %(py5)sr)r)r,r-)r rrr rrrrrrr r!r"r#r$)r%r&rr'r(r)r*r r r test_yield(s       lr.)builtinsr_pytest.assertion.rewrite assertionrewritercircuitsrrrr r r+r.r r r r s  circuits-3.1.0/tests/core/__pycache__/test_bridge.cpython-26-PYTEST.pyc0000644000014400001440000000677412414362702026620 0ustar prologicusers00000000000000 +Tc@sddkZddkiiZddkZeidjoeidnei dddk l Z ddk l Z lZdefdYZd e fd YZd ZdS( iNtwin32sUnsupported Platformtmultiprocessing(tgetpid(t ComponenttEventthellocBseZdZRS(s hello Event(t__name__t __module__t__doc__(((s6/home/prologic/work/circuits/tests/core/test_bridge.pyRstAppcBseZdZRS(cCsditS(NsHello from {0:d}(tformatR(tself((s6/home/prologic/work/circuits/tests/core/test_bridge.pyRs(RRR(((s6/home/prologic/work/circuits/tests/core/test_bridge.pyR scCst}|idtd|\}}|i}d}d}||d|}|pddhti|d6d tijpti|oti|nd d 6ti|d 6ti|d 6ti|d 6} t ti | nd}}}}|i t } ti}d} || | } | pddhdtijpti| oti| ndd6ti|d6dtijptitotitndd 6ti| d6ti| d6} t ti | nd}} } | i}d} | i} |i}| |}||j}|ptid|fd||fhti|d6ti|d6ti|d6dtijpti| oti| ndd 6ti| d6ti| d6dtijpti|oti|ndd 6}d h|d6}t ti |nd}}} } }}|i|i|i|iddS(!NtprocesstlinktreadyittimeouttsWassert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, timeout=%(py6)s) }tpy2twatchertpy0tpy6tpy8tpy4tresultsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }txtpy3tpytesttpy7tpy5sHello from {0:d}s==s%(py2)s {%(py2)s = %(py0)s.value } == %(py12)s {%(py12)s = %(py7)s {%(py7)s = %(py5)s.format }(%(py10)s {%(py10)s = %(py8)s.pid }) }tpy10tpy12tappsassert %(py14)stpy14t unregistered(s==(s%(py2)s {%(py2)s = %(py0)s.value } == %(py12)s {%(py12)s = %(py7)s {%(py7)s = %(py5)s.format }(%(py10)s {%(py10)s = %(py8)s.pid }) }sassert %(py14)s(R tstarttTruetwaitt @pytest_art _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonetfireRRtwait_fortvalueR tpidt_call_reprcomparetstoptjoint unregister(tmanagerRRR tbridget @py_assert1t @py_assert3t @py_assert5t @py_assert7t @py_format9Rt @py_assert4t @py_assert6t @py_format8t @py_assert9t @py_assert11t @py_format13t @py_format15((s6/home/prologic/work/circuits/tests/core/test_bridge.pyttestsB        (t __builtin__R't_pytest.assertion.rewritet assertiontrewriteR%RtPLATFORMtskipt importorskiptosRtcircuitsRRRR RC(((s6/home/prologic/work/circuits/tests/core/test_bridge.pyts   circuits-3.1.0/tests/core/__pycache__/test_imports.cpython-34-PYTEST.pyc0000644000014400001440000000216312414363521027044 0ustar prologicusers00000000000000 ?T@s>ddlZddljjZddlmZddZdS)N) BaseComponentc Csgy ddlm}t|t}|sddidtjksStj|rbtj|ndd6dtjkstjtrtjtndd6d tjkstjtrtjtnd d 6tj|d 6}t tj |nt }WnVt k rbd }|sXditj|d6}t tj |nt }YnXdS)Nr) BasePollerz5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }rpy1rpy2 issubclasspy0py4Fassert %(py1)sr ) circuits.core.pollersrrr @py_builtinslocals @pytest_ar_should_repr_global_name _safereprAssertionError_format_explanationNone ImportError)r @py_assert3 @py_format5 @py_assert0Z @py_format2r7/home/prologic/work/circuits/tests/core/test_imports.pytests  r) builtinsr _pytest.assertion.rewrite assertionrewriterZcircuits.core.componentsrrrrrrs circuits-3.1.0/tests/core/__pycache__/test_feedback.cpython-34-PYTEST.pyc0000644000014400001440000001373612414363521027103 0ustar prologicusers00000000000000 ?Ti@sdZddlZddljjZddlZddlm Z m Z m Z Gddde Z Gddde Z dd Zd d Zd d ZdS)zFeedback Channels TestsN)handlerEvent Componentc@s"eZdZdZdZdZdS)testz test EventTN)__name__ __module__ __qualname____doc__successfailurer r 8/home/prologic/work/circuits/tests/core/test_feedback.pyr s rcsaeZdZfddZedddZdddZd d Zd d ZS) AppcsDtt|jd|_d|_d|_d|_d|_dS)NF)superr__init__eerrorvaluer r )self) __class__r r rs     z App.__init__*cOs#|jddr|jndS)NfilterF)getstop)reventargskwargsr r r rsz App.eventFcCs|rtdndS)Nz Hello World!) Exception)rrr r r r#szApp.testcCs||_||_d|_dS)NT)rrr )rrrr r r test_success)s  zApp.test_successcCs||_||_d|_dS)NT)rrr )rrrr r r test_failure.s  zApp.test_failure) rrrrrrrrrr r )rr rs   rcCs |dS)Nr )rr r r reraise4sr c Cst}x|r|jq Wt}|j|}x|rN|jq;W|j}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nt }}x|r%|jqW|j}||k}|s tjd|fd||fitj|d 6d tj kstj |rtj|nd d6d tj kstj |rtj|nd d6} di| d6} t tj | nt }}|j}|sdditj|d 6d tj ksatj |rptj|nd d6} t tj | nt }|j}|j}||k} | stjd| fd||fitj|d 6dtj kstj |rtj|ndd6d tj ksFtj |rUtj|nd d6tj|d6} di| d6} t tj | nt }}} |j}|j} || k}|stjd |fd!|| fitj|d 6tj| d6d tj ks-tj |r<tj|nd d6dtj ksdtj |rstj|ndd6} d"i| d6} t tj | nt }}} dS)#Nz Hello World!==%(py0)s == %(py3)spy3spy0assert %(py5)spy5)%(py2)s {%(py2)s = %(py0)s.e } == %(py4)spy2apprpy4assert %(py6)spy6z+assert %(py2)s {%(py2)s = %(py0)s.success }D%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.e }.value } == %(py6)srassert %(py8)spy8H%(py2)s {%(py2)s = %(py0)s.value } == %(py6)s {%(py6)s = %(py4)s.value })r!)r"r')r!)r)r-)r!)r/r0)r!)r2r0)rflushrfirer @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonerr )r+rrr$ @py_assert2 @py_assert1 @py_format4 @py_format6 @py_assert3 @py_format5 @py_format7 @py_format3 @py_assert5 @py_format9r r r r8sZ      l     U  rc Cst}x|r|jq Wtdd}|j|}x|rT|jqAWtjjtdd|jx|r|jqwW|j}||k}|srt j d|fd||fit j |d6dt j kst j|rt j |ndd 6d t j ks/t j|r>t j |nd d 6}di|d6}tt j|nt}}|j\}}} tjjtdd||tk}|sxt j d|fd|tfidt j kst jtr t j tndd6dt j ks5t j|rDt j |ndd 6} di| d 6}tt j|nt}|j}|sd dit j |d6dt j kst j|rt j |ndd 6} tt j| nt}|j}| }|sd dit j |d6dt j ksQt j|r`t j |ndd 6} tt j| nt}}|j}|j}||k} | st j d | fd!||fit j |d6dt j kst j|rt j |ndd6dt j ks:t j|rIt j |ndd 6t j |d 6}d"i|d6} tt j| nt}}} dS)#NrTcSst|dS)N)r )xr r r \sztest_failure..r!)%(py2)s {%(py2)s = %(py0)s.e } == %(py4)sr*r+r%rr,r&assert %(py6)sr.cSs t|S)N)r )rIr r r rJds%(py0)s == %(py2)sretypeassert %(py4)sz+assert %(py2)s {%(py2)s = %(py0)s.failure }z/assert not %(py2)s {%(py2)s = %(py0)s.success }D%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.e }.value } == %(py6)srIassert %(py8)sr1)r!)rKrL)r!)rMrO)r!)rPrQ)rr3rr4pyraisesrrrr5r6r7r8r9r:r;r<r=rr r )r+rrIr?rBrCrDrNevalue etracebackrEr@rFrGr r r rPsX        U U  r)r builtinsr8_pytest.assertion.rewrite assertionrewriter5rRcircuitsrrrrrr rrr r r r s  !  circuits-3.1.0/tests/core/__pycache__/test_generator_value.cpython-32-PYTEST.pyc0000644000014400001440000000703212414363275030535 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlmZmZGddeZ GddeZ GddeZ d Z d Z dS( iN(uEventu ComponentcBs|EeZdZdS(u test EventN(u__name__u __module__u__doc__(u __locals__((u?/home/prologic/work/circuits/tests/core/test_generator_value.pyutests utestcBs|EeZdZdS(u hello EventN(u__name__u __module__u__doc__(u __locals__((u?/home/prologic/work/circuits/tests/core/test_generator_value.pyuhello s uhellocBs |EeZdZdZdS(cCsd}|S(NcssxdVqdS(NuHello((((u?/home/prologic/work/circuits/tests/core/test_generator_value.pyufs((uselfuf((u?/home/prologic/work/circuits/tests/core/test_generator_value.pyutests ccsdVdVdS(NuHello uWorld!((uself((u?/home/prologic/work/circuits/tests/core/test_generator_value.pyuhellosN(u__name__u __module__utestuhello(u __locals__((u?/home/prologic/work/circuits/tests/core/test_generator_value.pyuApps  uAppcCs t}x|r|jq W|jt}|j|j|j}d}||k}|stjd |fd ||fitj|d6dt j kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( NuHellou==u%(py0)s == %(py3)supy3uxupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uAppuflushufireutestutickuvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uappuvuxu @py_assert2u @py_assert1u @py_format4u @py_format6((u?/home/prologic/work/circuits/tests/core/test_generator_value.pyutest_return_generators      lcCst}x|r|jq W|jt}|j|j|j|j}ddg}||k}|s tjd |fd ||fitj|d6dt j kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS(NuHello uWorld!u==u%(py0)s == %(py3)supy3uxupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uAppuflushufireuhelloutickuvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uappuvuxu @py_assert2u @py_assert1u @py_format4u @py_format6((u?/home/prologic/work/circuits/tests/core/test_generator_value.pyu test_yield(s       l(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsuEventu ComponentutestuhellouApputest_return_generatoru test_yield(((u?/home/prologic/work/circuits/tests/core/test_generator_value.pyus  circuits-3.1.0/tests/core/__pycache__/test_signals.cpython-26-PYTEST.pyc0000644000014400001440000000764212407376150027023 0ustar prologicusers00000000000000 ?Tc @sddkZddkiiZddkZddkZddkZddk l Z ddk l Z ddk lZddklZlZddklZddklZd Zd d Zd ZdS( iN(tsleep(tESRCH(tSIGTERM(tkilltremove(tPopeni(t signalappcCsByt|dWn*tj o}|itjotSnXtS(Ni(RtOSErrorterrnoRtFalsetTrue(tpidterror((s7/home/prologic/work/circuits/tests/core/test_signals.pyt is_runnings  icCs0|}x#t|o|otdq WdS(Ni(R R(R ttimeouttcount((s7/home/prologic/work/circuits/tests/core/test_signals.pytwaitscCs>tidjptidn|id|idt|id}t|id}tit i ||g}di|}t |dt dhditi d 6}|i}d }||j}|ptid |fd!||fhd tijpti|oti|nd d6ti|d6} dh| d6} tti| nd}}tdti }|i} | |} | pdhdtijptitotitndd6ti|d6dtijpti|oti|ndd6ti| d6ti| d6} tti| nd}} } ti }|i} | |} | pdhdtijptitotitndd6ti|d6dtijpti|oti|ndd6ti| d6ti| d6} tti| nd}} } t|d}t|ii}|it |t!t|t|d}|ii}|itt!}||j}|p tid"|fd#||fhdtijpti|oti|ndd6dtijptit!otit!ndd6dtijptitotitndd6ti|d6} dh| d6} tti| nd}}t"|t"|dS($Ntposixs(Cannot run test on a non-POSIX platform.s.pids.signalt tshelltenvt:t PYTHONPATHis==s%(py0)s == %(py3)ststatustpy0tpy3sassert %(py5)stpy5isbassert %(py7)s {%(py7)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.path }.exists }(%(py5)s) }tostpy2tpidfiletpy4tpy7sbassert %(py7)s {%(py7)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.path }.isfile }(%(py5)s) }trs0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }tsignalRtstrsassert %(py7)s(s==(s%(py0)s == %(py3)s(s==(s0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }(#RtnametpytesttskiptensureR"tjointsyst executableRt__file__RR tpathRt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNoneRtexiststisfiletopentinttreadtstriptcloseRRR(ttmpdirRt signalfiletargstcmdtpRt @py_assert2t @py_assert1t @py_format4t @py_format6t @py_assert3t @py_assert6t @py_format8tfR R!t @py_assert4((s7/home/prologic/work/circuits/tests/core/test_signals.pyttest"sb  +  o           (t __builtin__R.t_pytest.assertion.rewritet assertiontrewriteR,R$RR(ttimeRRRR!RRRt subprocessRtRR RRJ(((s7/home/prologic/work/circuits/tests/core/test_signals.pyts     circuits-3.1.0/tests/core/__pycache__/test_manager_repr.cpython-32-PYTEST.pyc0000644000014400001440000000731212414363275030016 0ustar prologicusers00000000000000l ?Tc@sdZddlZddljjZddlZddlm Z ddl m Z ddl Z ddl mZmZGddeZdZdS( u:Manager Repr Tests Test Manager's representation string. iN(usleep(ucurrent_thread(u ComponentuManagercBs|EeZdZdS(cOsdS(N((uselfueventuargsukwargs((u</home/prologic/work/circuits/tests/core/test_manager_repr.pyutestsN(u__name__u __module__utest(u __locals__((u</home/prologic/work/circuits/tests/core/test_manager_repr.pyuApps uAppc Csdtjtjf}t}t|}d}||}||k}|sitjd|fd||fitj|d6dt j kstj |rtj|ndd6dt j kstj trtjtndd 6d t j kstj |r%tj|nd d 6tj|d 6}di|d6}t tj |nd}}}}t}|j|t|} d}||}| |k} | stjd| fd| |fitj|d6dt j kstj | r tj| ndd 6d t j ksHtj |rWtj|nd d6} di| d 6} t tj | nd} }}|jtj|ddtdt|} d}||}| |k} | stjd | fd!| |fitj|d6dt j ks@tj | rOtj| ndd 6d t j kswtj |rtj|nd d6} d"i| d 6} t tj | nd} }}|jtj|ddt|} d}||}| |k} | stjd#| fd$| |fitj|d6dt j ksetj | rttj| ndd 6d t j kstj |rtj|nd d6} d%i| d 6} t tj | nd} }}dS(&Nu%s:%suu==u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)upy3umupy1ureprupy0uidupy7upy6uuassert %(py10)supy10uu%(py0)s == (%(py3)s %% %(py4)s)usupy4uassert %(py7)su_runningg?uu_Manager__thread(u==(u=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)uassert %(py10)s(u==(u%(py0)s == (%(py3)s %% %(py4)s)uassert %(py7)sT(u==(u%(py0)s == (%(py3)s %% %(py4)s)uassert %(py7)s(u==(u%(py0)s == (%(py3)s %% %(py4)s)uassert %(py7)s(uosugetpiducurrent_threadugetNameuManagerurepru @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuAppuregisterustartupytestuwait_foruTrueusleepustop( uidumu @py_assert2u @py_assert5u @py_assert8u @py_assert4u @py_format9u @py_format11uappusu @py_assert1u @py_format6u @py_format8((u</home/prologic/work/circuits/tests/core/test_manager_repr.pyu test_mainsZ              (u__doc__ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_aruosutimeusleepu threadingucurrent_threadupytestucircuitsu ComponentuManageruAppu test_main(((u</home/prologic/work/circuits/tests/core/test_manager_repr.pyus   circuits-3.1.0/tests/core/__pycache__/test_event.cpython-32-PYTEST.pyc0000644000014400001440000001710312414363275026474 0ustar prologicusers00000000000000l ?Tc@sdZddlZddljjZddlZddlm Z m Z Gdde Z Gdde Z dZ d Zd Zd Zd ZdS( u Event TestsiN(uEventu ComponentcBs|EeZdZdS(u test EventN(u__name__u __module__u__doc__(u __locals__((u5/home/prologic/work/circuits/tests/core/test_event.pyutest s utestcBs|EeZdZdS(cCsdS(Nu Hello World!((uself((u5/home/prologic/work/circuits/tests/core/test_event.pyutestsN(u__name__u __module__utest(u __locals__((u5/home/prologic/work/circuits/tests/core/test_event.pyuApps uAppcCst}x|r|jq Wt}t|}d}||k}|stjd |fd ||fitj|d6dtjkstj |rtj|ndd6}d i|d 6}t tj |nd}}|j |t|}d }||k}|stjd|fd||fitj|d6dtjksotj |r~tj|ndd6}di|d 6}t tj |nd}}dS(Nu u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u (u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uAppuflushutesturepru @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneufire(uappueusu @py_assert2u @py_assert1u @py_format4u @py_format6((u5/home/prologic/work/circuits/tests/core/test_event.pyu test_reprs*     l    lcCst}x|r|jq Wtjd}t|}d}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}|j|t|}d }||k}|stjd|fd||fitj|d6dtj ksutj |rtj|ndd6}di|d 6}t tj |nd}}dS(Nutestu u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u (u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u%(py0)s == %(py3)suassert %(py5)s(uAppuflushuEventucreateurepru @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneufire(uappueusu @py_assert2u @py_assert1u @py_format4u @py_format6((u5/home/prologic/work/circuits/tests/core/test_event.pyu test_create&s*    l    lcCst}x|r|jq Wtddddd}|d}d}||k}|stjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nd}}}|d}d}||k}|sftjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nd}}}d}t jj t ||ddS(Niiiufooubariu==u%(py1)s == %(py4)supy1upy4uuassert %(py6)supy6cSs||S(N((ueuk((u5/home/prologic/work/circuits/tests/core/test_event.pyuf@s(u==(u%(py1)s == %(py4)suassert %(py6)s(u==(u%(py1)s == %(py4)suassert %(py6)s( uAppuflushutestu @pytest_aru_call_reprcompareu _saferepruAssertionErroru_format_explanationuNoneupyuraisesu TypeError(uappueu @py_assert0u @py_assert3u @py_assert2u @py_format5u @py_format7uf((u5/home/prologic/work/circuits/tests/core/test_event.pyu test_getitem6s,    E  E cCst}x|r|jq Wtddddd}|d}d}||k}|stjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nd}}}|d}d}||k}|sftjd|fd||fitj|d 6tj|d 6}di|d 6}ttj|nd}}}d|ds      circuits-3.1.0/tests/core/__pycache__/test_bridge.cpython-27-PYTEST.pyc0000644000014400001440000000674512414363101026611 0ustar prologicusers00000000000000 +Tc@sddlZddljjZddlZejdkrIejdnej dddl m Z ddl m Z mZdefdYZd e fd YZd ZdS( iNtwin32sUnsupported Platformtmultiprocessing(tgetpid(t ComponenttEventthellocBseZdZRS(s hello Event(t__name__t __module__t__doc__(((s6/home/prologic/work/circuits/tests/core/test_bridge.pyRstAppcBseZdZRS(cCsdjtS(NsHello from {0:d}(tformatR(tself((s6/home/prologic/work/circuits/tests/core/test_bridge.pyRs(RRR(((s6/home/prologic/work/circuits/tests/core/test_bridge.pyR scCst}|jdtd|\}}|j}d}d}||d|}|sdditj|d6d tjkstj|rtj|nd d 6tj|d 6tj|d 6tj|d 6} t tj | nd}}}}|j t } tj}d} || | } | sddidtjksdtj| rstj| ndd6tj|d6dtjkstjtrtjtndd 6tj| d6tj| d6} t tj | nd}} } | j}d} | j} |j}| |}||k}|sVtjd|fd||fitj|d6tj|d6tj|d6dtjkstj| rtj| ndd 6tj| d6tj| d6dtjkstj|r"tj|ndd 6}d i|d6}t tj |nd}}} } }}|j|j|j|jddS(!NtprocesstlinktreadyittimeouttsWassert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, timeout=%(py6)s) }tpy2twatchertpy0tpy6tpy8tpy4tresultsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }txtpy3tpytesttpy7tpy5sHello from {0:d}s==s%(py2)s {%(py2)s = %(py0)s.value } == %(py12)s {%(py12)s = %(py7)s {%(py7)s = %(py5)s.format }(%(py10)s {%(py10)s = %(py8)s.pid }) }tpy10tpy12tappsassert %(py14)stpy14t unregistered(s==(s%(py2)s {%(py2)s = %(py0)s.value } == %(py12)s {%(py12)s = %(py7)s {%(py7)s = %(py5)s.format }(%(py10)s {%(py10)s = %(py8)s.pid }) }sassert %(py14)s(R tstarttTruetwaitt @pytest_art _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNonetfireRRtwait_fortvalueR tpidt_call_reprcomparetstoptjoint unregister(tmanagerRRR tbridget @py_assert1t @py_assert3t @py_assert5t @py_assert7t @py_format9Rt @py_assert4t @py_assert6t @py_format8t @py_assert9t @py_assert11t @py_format13t @py_format15((s6/home/prologic/work/circuits/tests/core/test_bridge.pyttestsB        (t __builtin__R't_pytest.assertion.rewritet assertiontrewriteR%RtPLATFORMtskipt importorskiptosRtcircuitsRRRR RC(((s6/home/prologic/work/circuits/tests/core/test_bridge.pyts   circuits-3.1.0/tests/core/__pycache__/test_component_repr.cpython-34-PYTEST.pyc0000644000014400001440000001047112414363521030402 0ustar prologicusers00000000000000 ?T{ @sdZddlZddljjZddlZyddlm Z Wn"e k rhddlm Z YnXddl m Z mZGdddeZGdd d e Zd d Zd d ZdS)z>Component Repr Tests Test Component's representation string. N)current_thread) currentThread)Event Componentc@seZdZddZdS)AppcOsdS)N)selfeventargskwargsrr>/home/prologic/work/circuits/tests/core/test_component_repr.pytestszApp.testN)__name__ __module__ __qualname__r rrrr rs rc@seZdZdS)r N)rrrrrrr r s r c Cs?dtjtjf}t}t|}d}||}||k}|sitjd|fd||fidtj kstj |rtj |ndd6dtj kstj |rtj |ndd6tj |d 6tj |d 6d tj ks&tj tr5tj tnd d 6}di|d6}t tj |nt}}}}|jtt|}d}||}||k}|stjd|fd||fidtj kstj |r tj |ndd6dtj ks2tj |rAtj |ndd6tj |d 6tj |d 6d tj kstj trtj tnd d 6}di|d6}t tj |nt}}}}|jt|}d}||}||k}|s)tjd|fd||fidtj ksXtj |rgtj |ndd6dtj kstj |rtj |ndd6tj |d 6tj |d 6d tj kstj trtj tnd d 6}di|d6}t tj |nt}}}}dS)Nz%s:%sz===%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)apppy1idpy7py6py3reprpy0assert %(py10)spy10z)r)rr)r)rr)r)rr)osgetpidrgetNamerr @pytest_ar_call_reprcompare @py_builtinslocals_should_repr_global_name _safereprAssertionError_format_explanationNonefirer flush)rr @py_assert2 @py_assert5 @py_assert8 @py_assert4 @py_format9 @py_format11rrr test_mains>        r2c CsEdtjtjf}tdd}t|}d}||}||k}|sotjd|fd||fidtj kstj |rtj |ndd6d tj kstj |rtj |nd d 6tj |d 6tj |d 6d tj ks,tj tr;tj tnd d6}di|d6}t tj |nt}}}}|jtt|}d}||}||k}|stjd|fd||fidtj kstj |rtj |ndd6d tj ks8tj |rGtj |nd d 6tj |d 6tj |d 6d tj kstj trtj tnd d6}di|d6}t tj |nt}}}}|jt|}d}||}||k}|s/tjd|fd||fidtj ks^tj |rmtj |ndd6d tj kstj |rtj |nd d 6tj |d 6tj |d 6d tj kstj trtj tnd d6}di|d6}t tj |nt}}}}dS)Nz%s:%schannelzr=%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == (%(py6)s %% %(py7)s)rrrrrrrrrassert %(py10)srz)r4r4)r)r5r6)r)r5r6)r)r5r6)rrrr rrr!r"r#r$r%r&r'r(r)r*r r+)rrr,r-r.r/r0r1rrr test_non_str_channel+s>       r7)__doc__builtinsr#_pytest.assertion.rewrite assertionrewriter!r threadingr ImportErrorrcircuitsrrrr r2r7rrrr s    circuits-3.1.0/tests/core/__pycache__/test_inheritence.cpython-26-PYTEST.pyc0000644000014400001440000001005212407376150027645 0ustar prologicusers00000000000000 ?Tc@sddkZddkiiZddkZddklZl Z l Z de fdYZ de fdYZ de fdYZ d e fd YZd Zd ZdS( iN(thandlertEventt ComponentttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyRstBasecBseZdZRS(cCsdS(Ns Hello World!((tself((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyRs(RRR(((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyR stApp1cBs#eZeddddZRS(RtpriorityicCsdS(NtFoobar((R((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyRs(RRRR(((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyR stApp2cBs#eZeddedZRS(RtoverridecCsdS(NR ((R((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyRs(RRRtTrueR(((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyR sc Cst}|i|it}ti}d}|||}|pdhdtijpti toti tndd6dtijpti |oti |ndd6ti |d6ti |d6ti |d 6}t ti |nd}}}|i}d d g}||j}|ptid|fd||fhdtijpti |oti |ndd6ti |d6}dh|d6} t ti | nd}}|idS(NtresultsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }tpytesttpy0txtpy3tpy2tpy5tpy7s Hello World!R s==s%(py0)s == %(py3)stvsassert %(py5)s(s==(s%(py0)s == %(py3)s(R tstarttfireRRtwait_fort @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetvaluet_call_reprcomparetstop( tappRt @py_assert1t @py_assert4t @py_assert6t @py_format8Rt @py_assert2t @py_format4t @py_format6((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyttest_inheritence s&     o c Cst}|i|it}ti}d}|||}|pdhdtijpti toti tndd6dtijpti |oti |ndd6ti |d6ti |d6ti |d 6}t ti |nd}}}|i}d }||j}|ptid|fd||fhd tijpti |oti |nd d6ti |d6}dh|d6} t ti | nd}}|idS(NRsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }RRRRRRRR s==s%(py0)s == %(py3)sRsassert %(py5)s(s==(s%(py0)s == %(py3)s(R RRRRRRRRRRR R!R"R#R$R%( R&RR'R(R)R*RR+R,R-((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyt test_override,s&     o (t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRRtcircuitsRRRRRR R R.R/(((s;/home/prologic/work/circuits/tests/core/test_inheritence.pyts   circuits-3.1.0/tests/core/__pycache__/app.cpython-34.pyc0000644000014400001440000000112012414363541024034 0ustar prologicusers00000000000000 ?T@s*ddlmZGdddeZdS)) Componentc@s(eZdZddZddZdS)AppcCsdS)Nz Hello World!)selfrr./home/prologic/work/circuits/tests/core/app.pytestszApp.testcGsdS)Nr)rargsrrrprepare_unregister szApp.prepare_unregisterN)__name__ __module__ __qualname__rr rrrrrs  rN)circuitsrrrrrrscircuits-3.1.0/tests/core/__pycache__/test_feedback.cpython-32-PYTEST.pyc0000644000014400001440000002004312414363275027074 0ustar prologicusers00000000000000l ?Tic@sdZddlZddljjZddlZddlm Z m Z m Z Gdde Z Gdde Z dZd Zd ZdS( uFeedback Channels TestsiN(uhandleruEventu ComponentcBs |EeZdZdZdZdS(u test EventNT(u__name__u __module__u__doc__uTrueusuccessufailure(u __locals__((u8/home/prologic/work/circuits/tests/core/test_feedback.pyutest s utestcsP|EeZfdZeddZddZdZdZS(csDtt|jd|_d|_d|_d|_d|_ dS(NF( usuperuAppu__init__uNoneueuerroruvalueuFalseusuccessufailure(uself(u __class__(u8/home/prologic/work/circuits/tests/core/test_feedback.pyu__init__s     u*cOs#|jddr|jndS(NufilterF(ugetuFalseustop(uselfueventuargsukwargs((u8/home/prologic/work/circuits/tests/core/test_feedback.pyueventscCs|rtdndS(Nu Hello World!(u Exception(uselfuerror((u8/home/prologic/work/circuits/tests/core/test_feedback.pyutest#scCs||_||_d|_dS(NT(ueuvalueuTrueusuccess(uselfueuvalue((u8/home/prologic/work/circuits/tests/core/test_feedback.pyu test_success)s  cCs||_||_d|_dS(NT(ueuerroruTrueufailure(uselfueuerror((u8/home/prologic/work/circuits/tests/core/test_feedback.pyu test_failure.s  F( u__name__u __module__u__init__uhandlerueventuFalseutestu test_successu test_failure(u __locals__((u __class__u8/home/prologic/work/circuits/tests/core/test_feedback.pyuApps    uAppcCs |dS(N((ue((u8/home/prologic/work/circuits/tests/core/test_feedback.pyureraise4sc Cst}x|r|jq Wt}|j|}x|rN|jq;W|j}d}||k}|stjd|fd||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}x|r%|jqW|j}||k}|s tjd|fd||fitj|d 6d tj kstj |rtj|nd d6d tj kstj |rtj|nd d6} di| d6} t tj | nd}}|j}|sdditj|d 6d tj ksatj |rptj|nd d6} t tj | nd}|j}|j}||k} | stjd| fd||fitj|d 6d tj kstj |rtj|nd d6dtj ksFtj |rUtj|ndd6tj|d6} di| d6} t tj | nd}}} |j}|j} || k}|stjd |fd!|| fitj|d 6d tj kstj |r,tj|nd d6tj| d6dtj ksdtj |rstj|ndd6} d"i| d6} t tj | nd}}} dS(#Nu Hello World!u==u%(py0)s == %(py3)supy3usupy0uuassert %(py5)supy5u)%(py2)s {%(py2)s = %(py0)s.e } == %(py4)supy2uappueupy4uassert %(py6)supy6u+assert %(py2)s {%(py2)s = %(py0)s.success }uD%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.e }.value } == %(py6)suvalueuassert %(py8)supy8uH%(py2)s {%(py2)s = %(py0)s.value } == %(py6)s {%(py6)s = %(py4)s.value }(u==(u%(py0)s == %(py3)suassert %(py5)s(u==(u)%(py2)s {%(py2)s = %(py0)s.e } == %(py4)suassert %(py6)s(u==(uD%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.e }.value } == %(py6)suassert %(py8)s(u==(uH%(py2)s {%(py2)s = %(py0)s.value } == %(py6)s {%(py6)s = %(py4)s.value }uassert %(py8)s(uAppuflushutestufireuvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneueusuccess(uappueuvalueusu @py_assert2u @py_assert1u @py_format4u @py_format6u @py_assert3u @py_format5u @py_format7u @py_format3u @py_assert5u @py_format9((u8/home/prologic/work/circuits/tests/core/test_feedback.pyu test_success8sZ      l     U  c Cst}x|r|jq Wtdd}|j|}x|rT|jqAWtjjtd|jx|r|jqtW|j }||k}|sot j d|fd||fit j |d6dt jkst j|rt j |ndd6dt jks,t j|r;t j |ndd 6}di|d 6}tt j|nd}}|j\}}} tjjtd ||tk}|srt j d|fd|tfidt jkst jtrt j tndd6dt jks/t j|r>t j |ndd6} di| d 6}tt j|nd}|j}|sd dit j |d6dt jkst j|rt j |ndd6} tt j| nd}|j}| }|s}d dit j |d6dt jksKt j|rZt j |ndd6} tt j| nd}}|j }|j}||k} | st j d| fd ||fit j |d6dt jkst j|r t j |ndd6dt jks4t j|rCt j |ndd 6t j |d 6}d!i|d6} tt j| nd}}} dS("NuerrorcSst|dS(Ni(ureraise(ux((u8/home/prologic/work/circuits/tests/core/test_feedback.pyu\su==u)%(py2)s {%(py2)s = %(py0)s.e } == %(py4)supy2uappupy0ueupy4uuassert %(py6)supy6cSs t|S(N(ureraise(ux((u8/home/prologic/work/circuits/tests/core/test_feedback.pyudsu%(py0)s == %(py2)su Exceptionuetypeuassert %(py4)su+assert %(py2)s {%(py2)s = %(py0)s.failure }u/assert not %(py2)s {%(py2)s = %(py0)s.success }uD%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.e }.value } == %(py6)suxuassert %(py8)supy8T(u==(u)%(py2)s {%(py2)s = %(py0)s.e } == %(py4)suassert %(py6)s(u==(u%(py0)s == %(py2)suassert %(py4)s(u==(uD%(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.e }.value } == %(py6)suassert %(py8)s(uAppuflushutestuTrueufireupyuraisesu Exceptionuvalueueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNoneuerrorufailureusuccess(uappueuxu @py_assert1u @py_assert3u @py_format5u @py_format7uetypeuevalueu etracebacku @py_format3u @py_format4u @py_assert5u @py_format9((u8/home/prologic/work/circuits/tests/core/test_feedback.pyu test_failurePsX        U U  (u__doc__ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupyucircuitsuhandleruEventu ComponentutestuAppureraiseu test_successu test_failure(((u8/home/prologic/work/circuits/tests/core/test_feedback.pyus  !  circuits-3.1.0/tests/core/__pycache__/app.cpython-33.pyc0000644000014400001440000000154412414363430024042 0ustar prologicusers00000000000000 ?Tc@s*ddlmZGdddeZdS(i(u ComponentcBs,|EeZdZddZddZdS(uAppcCsdS(Nu Hello World!((uself((u./home/prologic/work/circuits/tests/core/app.pyutestsuApp.testcGsdS(N((uselfuargs((u./home/prologic/work/circuits/tests/core/app.pyuprepare_unregister suApp.prepare_unregisterN(u__name__u __module__u __qualname__utestuprepare_unregister(u __locals__((u./home/prologic/work/circuits/tests/core/app.pyuApps uAppN(ucircuitsu ComponentuApp(((u./home/prologic/work/circuits/tests/core/app.pyuscircuits-3.1.0/tests/core/__pycache__/test_utils.cpython-34-PYTEST.pyc0000644000014400001440000001277112414363521026515 0ustar prologicusers00000000000000 ?TM@sddlZddljjZddlZddlmZddl m Z ddl m Z m Z mZdZdZGddde ZGd d d eZGd d d e ZGd dde ZddZddZddZddZdS)N) ModuleType) Component) findchannelfindrootfindtypez%def foo(): return "Hello World!" z%def foo(); return "Hello World!' c@seZdZdZdS)BaseN)__name__ __module__ __qualname____doc__r r 5/home/prologic/work/circuits/tests/core/test_utils.pyrs rc@seZdZddZdS)AppcCsdS)Nz Hello World!r )selfr r r hellosz App.helloN)rr r rr r r r rs rc@seZdZdZdS)AaN)rr r channelr r r r rs rc@seZdZdZdS)BbN)rr r rr r r r r#s rc Cs&ddlm}tjjdt||jd}|jt|d}d}||k }|st j d'|fd(||fit j |d6dt j kst j|rt j |ndd6}d)i|d 6}tt j|nt}}t|}|tk}|s)t j d*|fd+|tfidt j ksht j|rwt j |ndd6dt j kst jtrt j tndd 6t j |d6dt j kst jtrt j tndd6}d,i|d6} tt j| nt}}|j} d}| |k}|st j d-|fd.| |fit j |d6dt j kst j| rt j | ndd6}d/i|d 6}tt j|nt}}|jdd} | jddr-| jddn|jd} | jddra| jddn|jt|d}d}||k}|s't j d0|fd1||fit j |d6dt j kst j|rt j |ndd6}d2i|d 6}tt j|nt}}tj} || k}|st j d3|fd4|| fid"t j kst jtrt j tnd"d#6dt j kst j|rt j |ndd6t j | d$6}d5i|d&6}tt j|nt}} dS)6Nr) safeimportzfoo.pyfoois not%(py0)s is not %(py3)spy3py0assert %(py5)spy5is0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } is %(py5)spy1rtypeassert %(py7)spy7z Hello World!==%(py0)s == %(py3)ssextpycfile ignore_errorsT __pycache__dir%(py0)s is %(py3)snot in3%(py0)s not in %(py4)s {%(py4)s = %(py2)s.modules }syspy2py4assert %(py6)spy6)r)rr)r)r r#)r%)r&r)r)r/r)r0)r1r5)circuits.core.utilsrr2pathinsertstrensurewriteFOO @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNoner"rrnewcheckremovedirpathFOOBARmodules)tmpdirrZfoo_pathr @py_assert2 @py_assert1 @py_format4 @py_format6 @py_assert4 @py_format8r'r)Zpyd @py_assert3 @py_format5 @py_format7r r r test_safeimport(sb   l     l    l  rWcCs0t}t}t}|j||j|x|rK|jq8Wt|}||k}|s&tjd |fd ||fidtj kstj |rtj |ndd6dtj kstj |rtj |ndd6}d i|d 6}t tj |nt}dS) Nr%%(py0)s == %(py2)sappr3rootrrassert %(py4)sr4)r%)rXr[)rrrregisterflushrr>r?rArBrCr@rDrErF)rYrrrZrO @py_format3rUr r r test_findrootCs        r_cCst}ttj|x|r6|jq#Wt|d}|j}d}||k}|s tjd |fd ||fitj |d6tj |d6dt j kstj |rtj |ndd6}d i|d 6}t tj|nt}}}dS) Nrr%/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)srr3rrassert %(py7)sr$)r%)r`ra)rrrr\r]rrr>r?r@rArBrCrDrErF)rYrrOrRrTrQrSr r r test_findchannelSs    |rbcCs@t}ttj|x|r6|jq#Wt|t}t|t}|s6ddidtjkst j |rt j |ndd6dtjkst j trt j tndd6dtjkst j trt j tndd6t j |d 6}t t j |nt}dS) Nrz5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }rr!rr3 isinstancerr4)rrrr\r]rrcrArBr>rCr@rDrErF)rYrrTrUr r r test_findtype_s  rd)builtinsrA_pytest.assertion.rewrite assertionrewriter>r2typesrcircuitsrr7rrrr=rKrrrrrWr_rbrdr r r r s     circuits-3.1.0/tests/core/__pycache__/test_channel_selection.cpython-33-PYTEST.pyc0000644000014400001440000001137112414363411031022 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZmZm Z GdddeZ GdddeZ GdddeZ Gd d d eZ Gd d d eZd dZdS(iN(uEventu ComponentuManagercBs |EeZdZdZdZdS(ufoou foo EventuaN(ua(u__name__u __module__u __qualname__u__doc__uchannels(u __locals__((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyufoosufoocBs|EeZdZdZdS(ubaru bar EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyubar subarcBs&|EeZdZdZddZdS(uAuacCsdS(NuFoo((uself((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyufoosuA.fooN(u__name__u __module__u __qualname__uchannelufoo(u __locals__((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyuAsuAcBs&|EeZdZdZddZdS(uBubcCsdS(Nu Hello World!((uself((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyufoosuB.fooN(u__name__u __module__u __qualname__uchannelufoo(u __locals__((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyuBsuBcBs2|EeZdZdZddZddZdS(uCuccCs|jtS(N(ufireubar(uself((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyufoo$suC.foocCsdS(NuBar((uself((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyubar'suC.barN(u__name__u __module__u __qualname__uchannelufooubar(u __locals__((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyuC s uCc Cstttt}x|r4|jq!W|jt}|j|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}di|d 6}ttj|nd}}}|jtd }|j|j}d }||k}|s tj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}di|d 6}ttj|nd}}}|jtd d }|j|j}dd g}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}di|d 6}ttj|nd}}}|jtd}|j|j|j}d}||k}|stj d|fd||fitj |d6dt j kstj |rtj |ndd6tj |d6}di|d 6}ttj|nd}}}dS(NuFoou==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)supy2uxupy0upy5uuassert %(py7)supy7ubu Hello World!uaucuBar(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(uManageruAuBuCuflushufireufoouvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(umuxu @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyutest+sX    |   |  |    |utest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsuEventu ComponentuManagerufooubaruAuBuCutest(((uA/home/prologic/work/circuits/tests/core/test_channel_selection.pyus  circuits-3.1.0/tests/core/__pycache__/test_timers.cpython-27-PYTEST.pyc0000644000014400001440000001531112414363102026646 0ustar prologicusers00000000000000 ?TAc@sddlZddljjZddlZddlZddlmZm Z ddl m Z m Z m Z dZdZdZde fdYZd e fd YZd Zd Zd ZdS(iN(tdatetimet timedelta(tEventt ComponenttTimercs(jdfdddddS(Ntsetupcs tS(N(tsetupapp((trequest(s6/home/prologic/work/circuits/tests/core/test_timers.pytstteardowncSs t|S(N(t teardownapp(tapp((s6/home/prologic/work/circuits/tests/core/test_timers.pyRstscopetmodule(t cached_setup(R((Rs6/home/prologic/work/circuits/tests/core/test_timers.pytpytest_funcarg__apps  cCst}|j|S(N(tApptstart(RR ((s6/home/prologic/work/circuits/tests/core/test_timers.pyRs  cCs|jdS(N(tstop(R ((s6/home/prologic/work/circuits/tests/core/test_timers.pyR sttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s6/home/prologic/work/circuits/tests/core/test_timers.pyR!sRcBs#eZdZdZdZRS(cCs2tt|jt|_d|_g|_dS(Ni(tsuperRt__init__tFalsetflagtcountt timestamps(tself((s6/home/prologic/work/circuits/tests/core/test_timers.pyR's  cCsg|_t|_d|_dS(Ni(RRRR(R((s6/home/prologic/work/circuits/tests/core/test_timers.pytreset-s  cCs2|jjtj|jd7_t|_dS(Ni(RtappendttimeRtTrueR(R((s6/home/prologic/work/circuits/tests/core/test_timers.pyR2s(RRRRR(((s6/home/prologic/work/circuits/tests/core/test_timers.pyR%s  cCs&tdtd}|j|tj}d}|||}|s ddidtjksqtj|rtj |ndd6tj |d6d tjkstjtrtj tnd d 6tj |d 6tj |d 6}t tj |nd}}}|j dS( Ng?ttimerRtsSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }R tpy3tpy2tpytesttpy0tpy7tpy5(RRtregisterR&twait_fort @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNoneR(R R"t @py_assert1t @py_assert4t @py_assert6t @py_format8((s6/home/prologic/work/circuits/tests/core/test_timers.pyt test_timer8s  cCsD|jjtjtdtddt}|j|tj|dd}|j }d}||k}|st j d |fd!||fit j |d6d t jkst j|rt j |nd d 6t j |d 6}d"i|d6}tt j|nd}}}|sd#idt jksTt j|rct j |ndd 6}tt j|n|jd|jd} g}d}| |k}|} |rd} | | k} | } n| s?t j d$|fd%| |fidt jks%t j| r4t j | ndd6t j |d 6}di|d6}|j||rt j d&| fd'| | fidt jkst j| rt j | ndd6t j | d6} di| d6}|j|nt j|di}d(i|d6}tt j|nd} }}}} } |jd|jd} g}d}| |k}|} |rd} | | k} | } n| st j d)|fd*| |fidt jkst j| rt j | ndd6t j |d 6}di|d6}|j||rt j d+| fd,| | fidt jkst j| rt j | ndd6t j | d6} di| d6}|j|nt j|di}d-i|d6}tt j|nd} }}}} } |j|jdS(.Ng?R"tpersistRis>=s-%(py2)s {%(py2)s = %(py0)s.count } >= %(py5)sR%R R'R)R#sassert %(py7)sR(sassert %(py0)stwait_resiig{Gz?g?s%(py2)s >= %(py5)stdeltas%(py7)st=(s-%(py2)s {%(py2)s = %(py0)s.count } >= %(py5)ssassert %(py7)ssassert %(py0)s(s>=(s%(py2)s >= %(py5)s(R<(s%(py9)s < %(py12)ssassert %(py17)s(s>=(s%(py2)s >= %(py5)s(R<(s%(py9)s < %(py12)ssassert %(py17)s(RRR RRR!R*R&R+RR.t_call_reprcompareR0R,R-R/R1R2R3t_format_boolopRt unregister(R R"R:R4R5t @py_assert3t @py_format6R7t @py_format1R;t @py_assert0t @py_assert11t @py_assert10t @py_format13t @py_format15t @py_format16t @py_format18((s6/home/prologic/work/circuits/tests/core/test_timers.pyttest_persistentTimer?sv   |A  l l  l l cCsEtj}|tdd}t|td}|j|tj}d}|||}|s)ddidtj kst j |rt j |ndd6t j |d 6d tj kst j trt j tnd d 6t j |d 6t j |d 6}t t j|nd}}}|jdS(Ntsecondsg?R"RR#sSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }R R$R%R&R'R(R)(RtnowRRRR*R&R+R,R-R.R/R0R1R2R3R(R RPtdR"R4R5R6R7((s6/home/prologic/work/circuits/tests/core/test_timers.pyt test_datetimeQs   (t __builtin__R,t_pytest.assertion.rewritet assertiontrewriteR.R R&RRtcircuitsRRRRRR RRR8RNRR(((s6/home/prologic/work/circuits/tests/core/test_timers.pyts        circuits-3.1.0/tests/core/__pycache__/test_event.cpython-26-PYTEST.pyc0000644000014400001440000001470012407376150026475 0ustar prologicusers00000000000000 ?Tc@sdZddkZddkiiZddkZddkl Z l Z de fdYZ de fdYZ dZ d Zd Zd Zd ZdS( s Event TestsiN(tEventt ComponentttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s5/home/prologic/work/circuits/tests/core/test_event.pyR stAppcBseZdZRS(cCsdS(Ns Hello World!((tself((s5/home/prologic/work/circuits/tests/core/test_event.pyRs(RRR(((s5/home/prologic/work/circuits/tests/core/test_event.pyRscCst}x|o|iq Wt}t|}d}||j}|ptid |fd ||fhdtijpti|oti |ndd6ti |d6}dh|d6}t ti |nd}}|i |t|}d }||j}|ptid |fd ||fhdtijpti|oti |ndd6ti |d6}dh|d6}t ti |nd}}dS(Ns s==s%(py0)s == %(py3)ststpy0tpy3sassert %(py5)stpy5s (s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s(RtflushRtreprt @pytest_art_call_reprcomparet @py_builtinstlocalst_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetfire(tappteRt @py_assert2t @py_assert1t @py_format4t @py_format6((s5/home/prologic/work/circuits/tests/core/test_event.pyt test_reprs,    o    ocCst}x|o|iq Wtid}t|}d}||j}|ptid |fd ||fhdtijpti |oti |ndd6ti |d6}dh|d 6}t ti |nd}}|i|t|}d }||j}|ptid |fd||fhdtijpti |oti |ndd6ti |d6}dh|d 6}t ti |nd}}dS(NRs s==s%(py0)s == %(py3)sRR R sassert %(py5)sR s (s==(s%(py0)s == %(py3)s(s==(s%(py0)s == %(py3)s(RR RtcreateR RRRRRRRRRR(RRRRRRR((s5/home/prologic/work/circuits/tests/core/test_event.pyt test_create&s,   o    ocCst}x|o|iq Wtddddd}|d}d}||j}|potid|fd||fhti|d 6ti|d 6}d h|d 6}tti|nd}}}|d}d}||j}|potid|fd||fhti|d 6ti|d 6}d h|d 6}tti|nd}}}d }t ii t ||ddS(Niiitfootbaris==s%(py1)s == %(py4)stpy1tpy4sassert %(py6)stpy6cSs||S(N((Rtk((s5/home/prologic/work/circuits/tests/core/test_event.pytf@s(s==(s%(py1)s == %(py4)s(s==(s%(py1)s == %(py4)s( RR RRRRRRRtpytraisest TypeError(RRt @py_assert0t @py_assert3Rt @py_format5t @py_format7R'((s5/home/prologic/work/circuits/tests/core/test_event.pyt test_getitem6s.   E  E cCst}x|o|iq Wtddddd}|d}d}||j}|potid|fd||fhti|d 6ti|d 6}d h|d 6}tti|nd}}}|d}d}||j}|potid|fd||fhti|d 6ti|d 6}d h|d 6}tti|nd}}}d|ds      circuits-3.1.0/tests/core/__pycache__/test_bridge.cpython-34-PYTEST.pyc0000644000014400001440000000561612414363521026611 0ustar prologicusers00000000000000 +T@sddlZddljjZddlZejdkrIejdnej dddl m Z ddl m Z mZGdddeZGd d d e Zd d ZdS) Nwin32zUnsupported Platformmultiprocessing)getpid) ComponentEventc@seZdZdZdS)helloz hello EventN)__name__ __module__ __qualname____doc__r r 6/home/prologic/work/circuits/tests/core/test_bridge.pyrs rc@seZdZddZdS)AppcCsdjtS)NzHello from {0:d})formatr)selfr r r rsz App.helloN)rr r rr r r r rs rc Cst}|jddd|\}}|j}d}d}||d|}|sdditj|d 6tj|d 6tj|d 6d tjkstj|rtj|nd d 6tj|d6} ttj | nt }}}}|j t } t j}d} || | } | sdditj| d6tj|d 6tj| d6dtjkstj| rtj| ndd6dtjkstjt rtjt ndd 6} ttj | nt }} } | j}d} | j} |j}| |}||k}|sVtjd|fd ||fitj|d 6tj| d6dtjkstj| rtj| ndd 6tj| d6tj|d6dtjkstj|rtj|ndd 6tj|d6}d!i|d6}ttj |nt }}} } }}|j|j|j|jddS)"NprocessTlinkreadytimeoutzWassert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s, timeout=%(py6)s) }py2py6py8watcherpy0py4resultzSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }py5Zpy7xpy3pytestzHello from {0:d}==%(py2)s {%(py2)s = %(py0)s.value } == %(py12)s {%(py12)s = %(py7)s {%(py7)s = %(py5)s.format }(%(py10)s {%(py10)s = %(py8)s.pid }) }Zpy12appZpy10assert %(py14)sZpy14 unregistered)r")r#r%)rstartwait @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNonefirerr!wait_forvaluerpid_call_reprcomparestopjoin unregister)managerrr$rbridge @py_assert1 @py_assert3 @py_assert5 @py_assert7 @py_format9rZ @py_assert4Z @py_assert6Z @py_format8Z @py_assert9Z @py_assert11Z @py_format13Z @py_format15r r r testsB        r@)builtinsr+_pytest.assertion.rewrite assertionrewriter)r!PLATFORMskip importorskiposrcircuitsrrrrr@r r r r s   circuits-3.1.0/tests/core/__pycache__/test_interface_query.cpython-33-PYTEST.pyc0000644000014400001440000001142712414363411030534 0ustar prologicusers00000000000000 ?Tc@sdZddlZddljjZddlmZGdddeZ Gddde Z dd Z d d Z d d Z ddZdS(uTest Interface Query Test the capabilities of querying a Component class or instance for it's interface. That is it's event handlers it responds to. iN(u ComponentcBs |EeZdZddZdS(uBasecCsdS(N((uself((u?/home/prologic/work/circuits/tests/core/test_interface_query.pyufoosuBase.fooN(u__name__u __module__u __qualname__ufoo(u __locals__((u?/home/prologic/work/circuits/tests/core/test_interface_query.pyuBase suBasecBs |EeZdZddZdS(u SuperBasecCsdS(N((uself((u?/home/prologic/work/circuits/tests/core/test_interface_query.pyubarsu SuperBase.barN(u__name__u __module__u __qualname__ubar(u __locals__((u?/home/prologic/work/circuits/tests/core/test_interface_query.pyu SuperBasesu SuperBasecCstj}d}||}|sdditj|d6dtjks\tjtrktjtndd6tj|d6tj|d6}ttj|nd}}}dS( NufoouuIassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s) }upy2uBaseupy0upy6upy4( uBaseuhandlesu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(u @py_assert1u @py_assert3u @py_assert5u @py_format7((u?/home/prologic/work/circuits/tests/core/test_interface_query.pyutest_handles_base_classs  uutest_handles_base_classcCstj}d}d}|||}|sdditj|d6dtjksetjtrttjtndd6tj|d6tj|d 6tj|d 6}ttj|nd}}}}dS( NufooubaruuRassert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s, %(py6)s) }upy2u SuperBaseupy0upy6upy8upy4( u SuperBaseuhandlesu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(u @py_assert1u @py_assert3u @py_assert5u @py_assert7u @py_format9((u?/home/prologic/work/circuits/tests/core/test_interface_query.pyutest_handles_super_base_classs utest_handles_super_base_classcCst}|j}d}||}|sdditj|d6dtjksetj|rttj|ndd6tj|d6tj|d6}ttj|nd}}}dS( NufoouuIassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s) }upy2ubaseupy0upy6upy4( uBaseuhandlesu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(ubaseu @py_assert1u @py_assert3u @py_assert5u @py_format7((u?/home/prologic/work/circuits/tests/core/test_interface_query.pyutest_handles_base_instance!s   uutest_handles_base_instancecCst}|j}d}d}|||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d 6tj|d 6}ttj|nd}}}}dS( NufooubaruuRassert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s, %(py6)s) }upy2u superbaseupy0upy6upy8upy4( u SuperBaseuhandlesu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(u superbaseu @py_assert1u @py_assert3u @py_assert5u @py_assert7u @py_format9((u?/home/prologic/work/circuits/tests/core/test_interface_query.pyu test_handles_super_base_instance&s  u test_handles_super_base_instance(u__doc__ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsu ComponentuBaseu SuperBaseutest_handles_base_classutest_handles_super_base_classutest_handles_base_instanceu test_handles_super_base_instance(((u?/home/prologic/work/circuits/tests/core/test_interface_query.pyus    circuits-3.1.0/tests/core/__pycache__/test_worker_thread.cpython-33-PYTEST.pyc0000644000014400001440000001226612414363411030211 0ustar prologicusers00000000000000 ?Tc@sdZddlZddljjZddlZddlm Z m Z ej ddddZ dd Z d d Zd d ZddZdS(u Workers TestsiN(utaskuWorkeruscopeumodulecstfdd}|j||jjjrZddlm}|jntj d}j |j }|}|s ddit j |d6d tjkst j|rt j |nd d 6t j |d 6}tt j|nd}}S( NcsjdS(N(ustop((uworker(u=/home/prologic/work/circuits/tests/core/test_worker_thread.pyu finalizersuworker..finalizeri(uDebuggerustarteduu?assert %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.wait }() }upy2uwaiterupy0upy4(uWorkeru addfinalizeruconfiguoptionuverboseucircuitsuDebuggeruregisterupytestu WaitEventustartuwaitu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(urequestu finalizeruDebuggeruwaiteru @py_assert1u @py_assert3u @py_format5((uworkeru=/home/prologic/work/circuits/tests/core/test_worker_thread.pyuworker s    e uworkercCs7d}d}x$|dkr2|d7}|d7}qW|S(Nii@Bi((uxui((u=/home/prologic/work/circuits/tests/core/test_worker_thread.pyuf s  ufcCs||S(N((uaub((u=/home/prologic/work/circuits/tests/core/test_worker_thread.pyuadd)suaddc Cse|jtt}tj}d}|||}|sddidtjksdtj|rstj |ndd6tj |d6dtjkstjtrtj tndd6tj |d 6tj |d 6}t tj |nd}}}|j }|sdd itj |d6dtjksUtj|rdtj |ndd6}t tj |nd}|j}d }||k}|sStjd|fd||fitj |d6dtjkstj|rtj |ndd6tj |d 6}di|d 6}t tj |nd}}}dS(NuresultuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uxupy3upy2upytestupy0upy7upy5u*assert %(py2)s {%(py2)s = %(py0)s.result }i@Bu==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(ufireutaskufupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuresultuvalueu_call_reprcompare( uworkeruxu @py_assert1u @py_assert4u @py_assert6u @py_format8u @py_format3u @py_assert3u @py_format6((u=/home/prologic/work/circuits/tests/core/test_worker_thread.pyutest-s*  U  |utestc Csk|jttdd}tj}d}|||}|sddidtjksjtj|rytj |ndd6tj |d6d tjkstjtrtj tnd d 6tj |d 6tj |d 6}t tj |nd}}}|j }|sdd itj |d6dtjks[tj|rjtj |ndd 6}t tj |nd}|j}d}||k}|sYtjd|fd||fitj |d6dtjkstj|rtj |ndd 6tj |d 6}di|d 6}t tj |nd}}}dS(NiiuresultuuSassert %(py7)s {%(py7)s = %(py2)s {%(py2)s = %(py0)s.wait_for }(%(py3)s, %(py5)s) }uxupy3upy2upytestupy0upy7upy5u*assert %(py2)s {%(py2)s = %(py0)s.result }iu==u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(u==(u-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)suassert %(py7)s(ufireutaskuaddupytestuwait_foru @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuresultuvalueu_call_reprcompare( uworkeruxu @py_assert1u @py_assert4u @py_assert6u @py_format8u @py_format3u @py_assert3u @py_format6((u=/home/prologic/work/circuits/tests/core/test_worker_thread.pyu test_args6s*  U  |u test_args(u__doc__ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestucircuitsutaskuWorkerufixtureuworkerufuaddutestu test_args(((u=/home/prologic/work/circuits/tests/core/test_worker_thread.pyus    circuits-3.1.0/tests/core/__pycache__/test_value.cpython-34-PYTEST.pyc0000644000014400001440000002522012414363521026462 0ustar prologicusers00000000000000 ?T @sddlZddljjZddlZddlmZm Z m Z Gddde Z Gddde Z Gddde Z Gd d d e ZGd d d e Zejd dZddZddZddZddZddZddZdS)N)handlerEvent Componentc@seZdZdZdS)helloz Hhllo EventN)__name__ __module__ __qualname____doc__r r 5/home/prologic/work/circuits/tests/core/test_value.pyr s rc@seZdZdZdS)testz test EventN)rrrr r r r r r s r c@seZdZdZdS)fooz foo EventN)rrrr r r r r r s r c@seZdZdZdZdS)valuesz values EventTN)rrrr completer r r r rs rc@seZdZddZddZddZeddd Zed d d Zed ddddZ ed ddddZ ed ddddZ dS)AppcCsdS)Nz Hello World!r )selfr r r rsz App.hellocCs|jtS)N)firer)rr r r r !szApp.testcCstddS)NERROR) Exception)rr r r r $szApp.foohello_value_changedcCs ||_dS)N)value)rrr r r _on_hello_value_changed'szApp._on_hello_value_changedZtest_value_changedcCs ||_dS)N)r)rrr r r _on_test_value_changed+szApp._on_test_value_changedrpriorityg@cCsdS)Nr r )rr r r _value1/sz App._value1g?cCsdS)Nbarr )rr r r _value23sz App._value2gcCs|jtS)N)rr)rr r r _value37sz App._value3N) rrrrr r rrrrrrr r r r rs    rcsEtj|jdfdd}|j|S)N registeredcsjjddS)N unregistered) unregisterwaitr )appwatcherr r finalizerAs zapp..finalizer)rregisterr! addfinalizer)requestmanagerr#r$r )r"r#r r"<s   r"c Cs|jt}|jdd}||k}|stjd|fd||fitj|d6dtjkstj|rtj|ndd6}di|d 6}t tj |nt }}|j }d}||k} | stjd| fd||fitj|d 6tj|d 6dtjksYtj|rhtj|ndd6}di|d6} t tj | nt }} }dS)Nrz Hello World!in%(py1)s in %(py3)spy1xpy3assert %(py5)spy5==-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)spy2py0assert %(py7)spy7)r))r*r/)r1)r2r5) rrr! @pytest_ar_call_reprcompare _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNoner) r"r#r, @py_assert0 @py_assert2 @py_format4 @py_format6 @py_assert1 @py_assert4 @py_assert3 @py_format8r r r test_valueJs"  l   |rHc Cs|jt}|jd|j}d}||k}|stjd|fd||fitj|d6tj|d6dtjkstj |rtj|ndd6}di|d 6}t tj |nt }}}t |}d} || k}|stjd|fd|| fidtjksYtj |rhtj|ndd 6tj| d6tj|d6dtjkstj t rtjt ndd6} di| d6} t tj | nt }}} dS)Nr z Hello World!r1-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sr0r3r,r4r.assert %(py7)sr60%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)sr+py6r-strassert %(py8)spy8)r1)rIrJ)r1)rKrN)rr r!rr7r8r9r:r;r<r=r>r?rM) r"r#r,rDrErFrCrGrA @py_assert5 @py_format7 @py_format9r r r test_nested_valueRs$   |  rSc Cs|jt}d|_|jdd}||k}|stjd|fd||fitj|d6dtjkstj |rtj|ndd6}di|d 6}t tj |nt }}|j }d}||k} | stjd| fd||fitj|d 6tj|d6dtjksbtj |rqtj|ndd6}di|d6} t tj | nt }} }|j }||k} | stjd| fd||fitj|d6dtjks tj |r/tj|ndd6dtjksWtj |rftj|ndd6} d i| d6} t tj | nt }} dS)!NTrz Hello World!r)%(py1)s in %(py3)sr+r,r-r.assert %(py5)sr0r1-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sr3r4assert %(py7)sr6is-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)sr"py4assert %(py6)srL)r))rTrU)r1)rVrW)rX)rYr[)rrnotifyr!r7r8r9r:r;r<r=r>r?r) r"r#r,r@rArBrCrDrErFrG @py_format5rQr r r test_value_notifyZs2   l   | r^c Cs|jt}d|_|jd|j}d}||k}|stjd|fd||fitj|d6tj|d6dtj kstj |rtj|ndd 6}di|d 6}t tj |nt }}}t|}d} || k}|stjd|fd|| fidtj ksbtj |rqtj|ndd6tj| d6tj|d6dtj kstj trtjtndd 6} di| d6} t tj | nt }}} |j}||k}|stjd|fd ||fitj|d6dtj kswtj |rtj|ndd 6dtj kstj |rtj|ndd6} d!i| d6} t tj | nt }}dS)"NTrz Hello World!r1-%(py2)s {%(py2)s = %(py0)s.value } == %(py5)sr0r3r,r4r.assert %(py7)sr60%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)sr+rLr-rMassert %(py8)srOrX-%(py2)s {%(py2)s = %(py0)s.value } is %(py4)sr"rZassert %(py6)s)r1)r_r`)r1)rarb)rX)rcrd)rr r\r!rr7r8r9r:r;r<r=r>r?rM) r"r#r,rDrErFrCrGrArPrQrRr]r r r test_nested_value_notifyes4    |   rec Cs |jt}|jd|\}}}|tk}|stjd|fd|tfidtjkstjtrtj tndd6dtjkstj|rtj |ndd6}di|d 6}t tj |nt }t |} d } | | k} | stjd| fd| | fidtjkshtj|rwtj |ndd6tj | d6tj | d6dtjkstjt rtj t ndd6} di| d6} t tj | nt } } } t|t}|sddidtjksPtj|r_tj |ndd6dtjkstjtrtj tndd6dtjkstjtrtj tndd6tj |d 6}t tj |nt }dS)Nr rX%(py0)s is %(py2)srr3etyper4r.assert %(py4)srZrr10%(py3)s {%(py3)s = %(py0)s(%(py1)s) } == %(py6)sevaluer+rLr-rMassert %(py8)srOz5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) } etracebacklist isinstance)rX)rfrh)r1)rirk)rr r!rr7r8r:r;r<r9r=r>r?rMrnrm)r"r#r,rgrjrlrD @py_format3r]rArPrErQrRrFr r r test_error_valueps,    rpc Cs|jt}|jd|j}t|t}|s(ddidtjkshtj |rwtj |ndd6dtjkstj trtj tndd6tj |d6tj |d 6d tjkstj trtj tnd d 6}t tj |nt }}t|}d }||k}|stjd|fd||fitj |d6dtjkstj |rtj |ndd 6}di|d6} t tj | nt }}d ddg}||k} | stjd| fd||fitj |d 6dtjkshtj |rwtj |ndd 6}d i|d6} t tj | nt } }|d}d } || k}|sEtjd!|fd"|| fitj |d6tj | d6} d#i| d6}t tj |nt }}} |d}d} || k}|stjd$|fd%|| fitj |d6tj | d6} d&i| d6}t tj |nt }}} |d}d} || k}|stjd'|fd(|| fitj |d6tj | d6} d)i| d6}t tj |nt }}} dS)*NZvalues_completer.zPassert %(py6)s {%(py6)s = %(py0)s(%(py3)s {%(py3)s = %(py1)s.value }, %(py4)s) }vr+rmrZrLr-rnr4r r)%(py1)s in %(py3)sassert %(py5)sr0rz Hello World!r1%(py0)s == %(py3)sr,r%(py1)s == %(py4)sassert %(py6)s)r))rrrs)r1)rtrs)r1)rurv)r1)rurv)r1)rurv)rrr!rrnrmr:r;r7r<r9r=r>r?r8) r"r#rqrArPrQr,r@rBrCrDrFr]r r r test_multiple_valueszs^     l  l   E  E  Ery)builtinsr:_pytest.assertion.rewrite assertionrewriter7pytestcircuitsrrrrr r rrfixturer"rHrSr^rerpryr r r r s      circuits-3.1.0/tests/core/__pycache__/test_interface_query.cpython-26-PYTEST.pyc0000644000014400001440000000732312407376150030544 0ustar prologicusers00000000000000 ?Tc@sdZddkZddkiiZddklZdefdYZ de fdYZ dZ d Z d Z d ZdS( sTest Interface Query Test the capabilities of querying a Component class or instance for it's interface. That is it's event handlers it responds to. iN(t ComponenttBasecBseZdZRS(cCsdS(N((tself((s?/home/prologic/work/circuits/tests/core/test_interface_query.pytfoos(t__name__t __module__R(((s?/home/prologic/work/circuits/tests/core/test_interface_query.pyR st SuperBasecBseZdZRS(cCsdS(N((R((s?/home/prologic/work/circuits/tests/core/test_interface_query.pytbars(RRR(((s?/home/prologic/work/circuits/tests/core/test_interface_query.pyRscCsti}d}||}|pdhdtijptitotitndd6ti|d6ti|d6ti|d6}tti|nd}}}dS(NRsIassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s) }Rtpy0tpy2tpy4tpy6( Rthandlest @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNone(t @py_assert1t @py_assert3t @py_assert5t @py_format7((s?/home/prologic/work/circuits/tests/core/test_interface_query.pyttest_handles_base_classs  tcCsti}d}d}|||}|pdhdtijptitotitndd6ti|d6ti|d6ti|d6ti|d 6}tti|nd}}}}dS( NRRsRassert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s, %(py6)s) }RRtpy8R R R ( RR R RRRRRRR(RRRt @py_assert7t @py_format9((s?/home/prologic/work/circuits/tests/core/test_interface_query.pyttest_handles_super_base_classs cCst}|i}d}||}|pdhdtijpti|oti|ndd6ti|d6ti|d6ti|d6}tti|nd}}}dS(NRsIassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s) }tbaseRR R R ( RR R RRRRRRR(RRRRR((s?/home/prologic/work/circuits/tests/core/test_interface_query.pyttest_handles_base_instance!s   tcCst}|i}d}d}|||}|pdhdtijpti|oti|ndd6ti|d6ti|d6ti|d6ti|d 6}tti|nd}}}}dS( NRRsRassert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s, %(py6)s) }t superbaseRRR R R ( RR R RRRRRRR(R RRRRR((s?/home/prologic/work/circuits/tests/core/test_interface_query.pyt test_handles_super_base_instance&s  (t__doc__t __builtin__R t_pytest.assertion.rewritet assertiontrewriteRtcircuitsRRRRRRR!(((s?/home/prologic/work/circuits/tests/core/test_interface_query.pyts    circuits-3.1.0/tests/core/__pycache__/test_debugger.cpython-27-PYTEST.pyc0000644000014400001440000004012612414363101027130 0ustar prologicusers00000000000000 ?TEc@s(dZddlZddljjZddlZddlZyddl m Z Wn!e k rsddl m Z nXddl m Z ddlmZmZdefdYZdefd YZd efd YZd Zd ZdZdZdZdZdZdZdS(sDebugger TestsiN(tStringIO(tDebugger(tEventt ComponentttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s8/home/prologic/work/circuits/tests/core/test_debugger.pyRstAppcBseZedZRS(cCs|rtndS(N(t Exception(tselftraiseException((s8/home/prologic/work/circuits/tests/core/test_debugger.pyRs(RRtFalseR(((s8/home/prologic/work/circuits/tests/core/test_debugger.pyRstLoggercBs&eZdZdZdZdZRS(cCs ||_dS(N(t error_msg(R tmsg((s8/home/prologic/work/circuits/tests/core/test_debugger.pyterror$scCs ||_dS(N(t debug_msg(R R((s8/home/prologic/work/circuits/tests/core/test_debugger.pytdebug'sN(RRtNoneRRRR(((s8/home/prologic/work/circuits/tests/core/test_debugger.pyR s c Cst}t}td|}|j|x|rD|jq1W|jd|j|j}|sdditj |d6dt j kstj |rtj |ndd6}t tj|nd}t}|j||j|jd|jj}t|}||k}|s>tjd|fd||fid t j ks}tj |rtj |nd d 6d t j kstj trtj tnd d6d t j kstj |rtj |nd d6tj |d6}di|d6} t tj| nd}}|jd|jt|_|j}| } | sdditj |d6dt j kstj |rtj |ndd6} t tj| nd}} t}|j||jd|jj}d} || k}|stjd|fd|| fitj | d 6d t j kstj |rtj |nd d6} di| d6}t tj|nd}} |jd|jdS(Ntfileits+assert %(py2)s {%(py2)s = %(py0)s._events }tpy2tdebuggertpy0s==s0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }tetpy3tstrtstpy5sassert %(py7)stpy7s/assert not %(py2)s {%(py2)s = %(py0)s._events }s%(py0)s == %(py3)ssassert %(py5)s(s==(s0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }sassert %(py7)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(RRRtregistertflushtseekttruncatet_eventst @pytest_art _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationRRtfiretreadtstripRt_call_reprcompareR ( tapptstderrRt @py_assert1t @py_format3RRt @py_assert4t @py_format6t @py_format8t @py_assert3t @py_format4t @py_assert2((s8/home/prologic/work/circuits/tests/core/test_debugger.pyt test_main+s^       U          U     l  cCst|jd}t|d}t}td|}|j|x|r_|jqLW|jd|j|j }|sddit j |d6dt j kst j|rt j |ndd 6}tt j|nd}t}|j||j|jd|jj}t|} || k}|sYt jd|fd|| fid t j kst j|rt j |nd d 6dt j kst jtrt j tndd6dt j kst j|rt j |ndd 6t j | d6} di| d6} tt j| nd}} |jd|jt|_ |j }| } | sddit j |d6dt j kst j|rt j |ndd 6} tt j| nd}} t}|j||jd|jj}d}||k}|st jd|fd||fit j |d 6dt j kst j|rt j |ndd 6} di| d6} tt j| nd}}|jd|jdS(Ns debug.logsw+RiRs+assert %(py2)s {%(py2)s = %(py0)s._events }RRRs==s0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }RRRRRsassert %(py7)sRs/assert not %(py2)s {%(py2)s = %(py0)s._events }s%(py0)s == %(py3)ssassert %(py5)s(s==(s0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }sassert %(py7)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(RtensuretopenRRRR R!R"R#R$R%R&R'R(R)R*RRR+R,R-R.R (ttmpdirtlogfileR0R/RR1R2RRR3R4R5R6R7R8((s8/home/prologic/work/circuits/tests/core/test_debugger.pyt test_fileMs`      U          U     l  cCs6dtjkrtjdnt|jd}t|d}t}td|}|j |x|r~|j qkW|j d|j |j }|sdditj|d 6d tjkstj|rtj|nd d 6}ttj|nd}t}|j||j |j d|jj}t|} || k}|sxtjd|fd|| fidtjkstj|rtj|ndd6dtjkstjtrtjtndd 6dtjks%tj|r4tj|ndd 6tj| d6} di| d6} ttj| nd}} |j d|j t|_ |j }| } | s%dditj|d 6d tjkstj|rtj|nd d 6} ttj| nd}} t}|j||j d|jj}d}||k}|stjd|fd||fitj|d6dtjkstj|rtj|ndd 6} di| d6} ttj| nd}}|j d|j dS(Nt__pypy__sBroken on pypys debug.logsr+RiRs+assert %(py2)s {%(py2)s = %(py0)s._events }RRRs==s0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }RRRRRsassert %(py7)sRs/assert not %(py2)s {%(py2)s = %(py0)s._events }s%(py0)s == %(py3)ssassert %(py5)s(s==(s0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }sassert %(py7)s(s==(s%(py0)s == %(py3)ssassert %(py5)s(tsystmodulestpytesttskipRR:R;RRRR R!R"R#R$R%R&R'R(R)R*RRR+R,R-R.R (R<R=R0R/RR1R2RRR3R4R5R6R7R8((s8/home/prologic/work/circuits/tests/core/test_debugger.pyt test_filenamersd      U          U     l  cCst}t}td|}|j|x|rD|jq1W|jd|j|j}|sdditj |d6dt j kstj |rtj |ndd6}t tj|nd}|j}|sZdditj |d6dt j ks(tj |r7tj |ndd6}t tj|nd}td t}|j||j|jd|jj}t|}||k}|stjd|fd||fid t j kstj |rtj |nd d 6dt j ks<tj trKtj tndd6dt j ksstj |rtj |ndd6tj |d6}di|d6} t tj| nd}}|jd|j|j|jd|jj}|j}d} || } | sdditj |d6dt j ksltj |r{tj |ndd6tj | d6tj | d6} t tj| nd}} } |jd|jt|_t|_|j}| } | sxdditj |d6dt j ksFtj |rUtj |ndd6} t tj| nd}} |j}| } | sdditj |d6dt j kstj |rtj |ndd6} t tj| nd}} td t}|j||j|jd|jj}d}||k}|stjd|fd||fitj |d 6dt j kstj |rtj |ndd6} d i| d6}t tj|nd}}|jd|j|j|jd|jj}d}||k}|stjd!|fd"||fitj |d 6dt j kstj |rtj |ndd6} d#i| d6}t tj|nd}}dS($NRiRs+assert %(py2)s {%(py2)s = %(py0)s._events }RRRs+assert %(py2)s {%(py2)s = %(py0)s._errors }R s==s0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }RRRRRsassert %(py7)sRs (Rskassert %(py8)s {%(py8)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error_msg }.startswith }(%(py6)s) }RRREtpy8RF(RR RRR RRHR+RRIR$R%R&R'R(R)R*R( R/RSRRR1R6RJt @py_assert7t @py_format9((s8/home/prologic/work/circuits/tests/core/test_debugger.pyttest_Logger_error"s$        (Rt __builtin__R&t_pytest.assertion.rewritet assertiontrewriteR$R@RBRt ImportErrortiotcircuitsRt circuits.coreRRRRtobjectR R9R>RDRLRORRRXR\(((s8/home/prologic/work/circuits/tests/core/test_debugger.pyts*     " % ( 4 # " circuits-3.1.0/tests/core/__pycache__/test_generate_events.cpython-27-PYTEST.pyc0000644000014400001440000000732212414363101030523 0ustar prologicusers00000000000000 ?T*c@s~ddlZddljjZddlZddlmZm Z defdYZ ej dddZ dZ dS( iN(t ComponenttEventtAppcBs>eZdZdZdZdZdZdZRS(cCst|_t|_d|_dS(Ni(tFalset_readyt_donet_counter(tself((s?/home/prologic/work/circuits/tests/core/test_generate_events.pytinit s  cCs)||kr%|jtjdndS(Ntready(tfireRtcreate(Rt componenttmanager((s?/home/prologic/work/circuits/tests/core/test_generate_events.pyt registereds cCsf|j s|jrdS|jdkr?|jtjdn|jtjd|jddS(Ni thellotdonei(RRRR RR treduce_time_left(Rtevent((s?/home/prologic/work/circuits/tests/core/test_generate_events.pytgenerate_eventss cCs t|_dS(N(tTrueR(R((s?/home/prologic/work/circuits/tests/core/test_generate_events.pyRscCs|jd7_dS(Ni(R(R((s?/home/prologic/work/circuits/tests/core/test_generate_events.pyR scCs t|_dS(N(RR(R((s?/home/prologic/work/circuits/tests/core/test_generate_events.pyR #s(t__name__t __module__RRRRRR (((s?/home/prologic/work/circuits/tests/core/test_generate_events.pyRs     tscopetmodulecstj|fd}|j||j}d}||}|sdditj|d6dtjkstj|rtj|ndd6tj|d6tj|d 6}t tj |nd}}}S( NcsjdS(N(t unregister((tapp(s?/home/prologic/work/circuits/tests/core/test_generate_events.pyt finalizer+sR tsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }tpy2twatchertpy0tpy6tpy4( Rtregistert addfinalizertwaitt @pytest_art _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(trequestR RRt @py_assert1t @py_assert3t @py_assert5t @py_format7((Rs?/home/prologic/work/circuits/tests/core/test_generate_events.pyR's   ucCs|jd|j}d}||k}|stjd |fd ||fitj|d6dtjkstj|rtj|ndd6tj|d6}di|d 6}ttj |nd}}}dS(NRi s==s0%(py2)s {%(py2)s = %(py0)s._counter } == %(py5)sRRRtpy5Rsassert %(py7)stpy7(s==(s0%(py2)s {%(py2)s = %(py0)s._counter } == %(py5)ssassert %(py7)s( R$RR%t_call_reprcompareR&R'R(R)R*R+R,(R RRR.t @py_assert4R/t @py_format6t @py_format8((s?/home/prologic/work/circuits/tests/core/test_generate_events.pyttest5s   |(t __builtin__R't_pytest.assertion.rewritet assertiontrewriteR%tpytesttcircuitsRRRtfixtureRR8(((s?/home/prologic/work/circuits/tests/core/test_generate_events.pyts  circuits-3.1.0/tests/core/__pycache__/test_generator_value.cpython-33-PYTEST.pyc0000644000014400001440000000735612414363411030537 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZmZGdddeZ GdddeZ GdddeZ d d Z d d Z dS( iN(uEventu ComponentcBs|EeZdZdZdS(utestu test EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u?/home/prologic/work/circuits/tests/core/test_generator_value.pyutestsutestcBs|EeZdZdZdS(uhellou hello EventN(u__name__u __module__u __qualname__u__doc__(u __locals__((u?/home/prologic/work/circuits/tests/core/test_generator_value.pyuhello suhellocBs,|EeZdZddZddZdS(uAppcCsdd}|S(NcssxdVqdS(NuHello((((u?/home/prologic/work/circuits/tests/core/test_generator_value.pyufsuApp.test..f((uselfuf((u?/home/prologic/work/circuits/tests/core/test_generator_value.pyutests uApp.testccsdVdVdS(NuHello uWorld!((uself((u?/home/prologic/work/circuits/tests/core/test_generator_value.pyuhellosu App.helloN(u__name__u __module__u __qualname__utestuhello(u __locals__((u?/home/prologic/work/circuits/tests/core/test_generator_value.pyuApps uAppcCs t}x|r|jq W|jt}|j|j|j}d}||k}|stjd |fd ||fitj|d6dt j kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS( NuHellou==u%(py0)s == %(py3)supy3uxupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uAppuflushufireutestutickuvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uappuvuxu @py_assert2u @py_assert1u @py_format4u @py_format6((u?/home/prologic/work/circuits/tests/core/test_generator_value.pyutest_return_generators      lutest_return_generatorcCst}x|r|jq W|jt}|j|j|j|j}ddg}||k}|s tjd |fd ||fitj|d6dt j kstj |rtj|ndd6}d i|d 6}t tj |nd}}dS(NuHello uWorld!u==u%(py0)s == %(py3)supy3uxupy0uuassert %(py5)supy5(u==(u%(py0)s == %(py3)suassert %(py5)s(uAppuflushufireuhelloutickuvalueu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uappuvuxu @py_assert2u @py_assert1u @py_format4u @py_format6((u?/home/prologic/work/circuits/tests/core/test_generator_value.pyu test_yield(s       lu test_yield(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsuEventu ComponentutestuhellouApputest_return_generatoru test_yield(((u?/home/prologic/work/circuits/tests/core/test_generator_value.pyus  circuits-3.1.0/tests/core/__pycache__/test_call_wait.cpython-26-PYTEST.pyc0000644000014400001440000003075612407376150027324 0ustar prologicusers00000000000000 ?TP c@sddkZddkiiZddkZddklZl Z l Z de fdYZ de fdYZ de fdYZ d e fd YZd e fd YZd e fdYZde fdYZde fdYZde fdYZde fdYZde fdYZeidddZdZdZdZdZd Zd!ZdS("iN(thandlert ComponenttEventtwaitcBseZdZeZRS(s wait Event(t__name__t __module__t__doc__tTruetsuccess(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyRstcallcBseZdZeZRS(s call Event(RRRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR st long_callcBseZdZeZRS(slong_call Event(RRRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR st long_waitcBseZdZeZRS(slong_wait Event(RRRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR st wait_returncBseZdZeZRS(swait_return Event(RRRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR sthellocBseZdZeZRS(s hello Event(RRRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR !stfoocBseZdZeZRS(s foo Event(RRRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR&stget_xcBseZdZeZRS(s get_x Event(RRRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR+stget_ycBseZdZeZRS(s get_y Event(RRRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR0stevalcBseZdZeZRS(s eval Event(RRRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR5stAppcBszeZeddZeddZdZdZdZdZdZ d Z d Z d Z RS( Rccs,|it}|idV|iVdS(NR (tfireR Rtvalue(tselftx((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyt_on_wait<sR ccs|itV}|iVdS(N(R R R(RR((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyt_on_callBscCsdS(Ns Hello World!((R((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR Gsccs,|it}|idV|iVdS(NR(RRRR(RR((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR Jsccs#|it|idVVdS(NR(RRR(R((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR Osccs|itV}|iVdS(N(R RR(RR((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR Ssccs#xtddD] }|VqWdS(Nii (trange(Rti((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyRWscCsdS(Ni((R((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR[scCsdS(Ni((R((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR^sccs9|itV}|itV}|i|iVdS(N(R RRR(RRty((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyRas( RRRRRR R R R RRRR(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR:s       tscopetmodulecsti||i}d}||}|pdhdtijpti|oti|ndd6ti|d6ti|d6ti|d6}tti |nd}}}fd}|i |S( Nt registeredsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }twatchertpy0tpy2tpy4tpy6csidS(N(t unregister((tapp(s9/home/prologic/work/circuits/tests/core/test_call_wait.pyt finalizerls( RtregisterRt @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonet addfinalizer(trequesttmanagerRt @py_assert1t @py_assert3t @py_assert5t @py_format7R&((R%s9/home/prologic/work/circuits/tests/core/test_call_wait.pyR%gs  t c Cs|it}|i}d}||}|pdhdtijpti|oti|ndd6ti|d6ti|d6ti|d6}tti|nd}}}|i }d} || j}|pti d|fd|| fhd tijpti|oti|nd d6ti| d 6} d h| d6} tti| nd}} dS(Nt wait_successsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RR R!R"R#s Hello World!s==s%(py0)s == %(py3)sRtpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s( RRR(R)R*R+R,R-R.R/Rt_call_reprcompare( R2RR%RR3R4R5R6Rt @py_assert2t @py_format4t @py_format6((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyttest_wait_simplets   t  oc Cs|it}|i}d}||}|pdhdtijpti|oti|ndd6ti|d6ti|d6ti|d6}tti |nd}}}|i }d} || j}|pti d|fd|| fhd tijpti|oti|nd d6ti| d 6} d h| d6} tti | nd}} dS(Nt call_successsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RR R!R"R#s Hello World!s==s%(py0)s == %(py3)sRR8sassert %(py5)sR9(s==(s%(py0)s == %(py3)s( RR RR(R)R*R+R,R-R.R/RR:( R2RR%RR3R4R5R6RR;R<R=((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyt call_simple|s   t  ocCsq|it}|i}d}||}| odhdtijp ti|oti|ndd6ti|d6ti|d6ti|d6}tti |nt }}}|i }d} d } t | | } t | } || j}| oCtid f|fd f|| fhti| d 6d tijp ti|oti|nd d6dtijp tit otit ndd6dtijp tit otit ndd6ti| d6ti| d6ti| d6} dh| d6}tti |nt }} } } } dS(Ntlong_call_successsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RR R!R"R#ii s==sY%(py0)s == %(py11)s {%(py11)s = %(py2)s(%(py9)s {%(py9)s = %(py3)s(%(py5)s, %(py7)s) }) }tpy11RRR8tlistR9tpy7tpy9sassert %(py13)stpy13(RR RR(R)R*R+R,R-R.R/RRRCR:(R2RR%RR3R4R5R6Rt @py_assert4t @py_assert6t @py_assert8t @py_assert10t @py_format12t @py_format14((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyttest_long_calls(  t  cCsq|it}|i}d}||}| odhdtijp ti|oti|ndd6ti|d6ti|d6ti|d6}tti |nt }}}|i }d} d } t | | } t | } || j}| oCtid f|fd f|| fhti| d 6d tijp ti|oti|nd d6dtijp tit otit ndd6dtijp tit otit ndd6ti| d6ti| d6ti| d6} dh| d6}tti |nt }} } } } dS(Ntlong_wait_successsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RR R!R"R#ii s==sY%(py0)s == %(py11)s {%(py11)s = %(py2)s(%(py9)s {%(py9)s = %(py3)s(%(py5)s, %(py7)s) }) }RBRRR8RCR9RDREsassert %(py13)sRF(RR RR(R)R*R+R,R-R.R/RRRCR:(R2RR%RR3R4R5R6RRGRHRIRJRKRL((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyttest_long_waits(  t  cCsq|it}|i}d}||}| odhdtijp ti|oti|ndd6ti|d6ti|d6ti|d6}tti |nt }}}|i }d} d } t | | } t | } || j}| oCtid f|fd f|| fhti| d 6d tijp ti|oti|nd d6dtijp tit otit ndd6dtijp tit otit ndd6ti| d6ti| d6ti| d6} dh| d6}tti |nt }} } } } dS(Ntwait_return_successsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RR R!R"R#ii s==sY%(py0)s == %(py11)s {%(py11)s = %(py2)s(%(py9)s {%(py9)s = %(py3)s(%(py5)s, %(py7)s) }) }RBRRR8RCR9RDREsassert %(py13)sRF(RR RR(R)R*R+R,R-R.R/RRRCR:(R2RR%RR3R4R5R6RRGRHRIRJRKRL((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyttest_wait_returns(  t  c Cs|it}|i}d}||}|pdhdtijpti|oti|ndd6ti|d6ti|d6ti|d6}tti |nd}}}|i }d} || j}|pti d|fd|| fhd tijpti|oti|nd d6ti| d 6} d h| d6} tti | nd}} dS(Nt eval_successsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RR R!R"R#is==s%(py0)s == %(py3)sRR8sassert %(py5)sR9(s==(s%(py0)s == %(py3)s( RRRR(R)R*R+R,R-R.R/RR:( R2RR%RR3R4R5R6RR;R<R=((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyt test_evals   t  o(t __builtin__R(t_pytest.assertion.rewritet assertiontrewriteR*tpytesttcircuitsRRRRR R R R R RRRRRtfixtureR%R>R@RMRORQRS(((s9/home/prologic/work/circuits/tests/core/test_call_wait.pyts*  -     circuits-3.1.0/tests/core/__pycache__/test_debugger.cpython-26-PYTEST.pyc0000644000014400001440000003775212407376150027154 0ustar prologicusers00000000000000 ?TEc @s*dZddkZddkiiZddkZddkZyddk l Z Wn#e j oddk l Z nXddk l Z ddklZlZdefdYZdefd YZd efd YZd Zd ZdZdZdZdZdZdZdS(sDebugger TestsiN(tStringIO(tDebugger(tEventt ComponentttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s8/home/prologic/work/circuits/tests/core/test_debugger.pyRstAppcBseZedZRS(cCs|o tndS(N(t Exception(tselftraiseException((s8/home/prologic/work/circuits/tests/core/test_debugger.pyRs(RRtFalseR(((s8/home/prologic/work/circuits/tests/core/test_debugger.pyRstLoggercBs&eZdZdZdZdZRS(cCs ||_dS(N(t error_msg(R tmsg((s8/home/prologic/work/circuits/tests/core/test_debugger.pyterror$scCs ||_dS(N(t debug_msg(R R((s8/home/prologic/work/circuits/tests/core/test_debugger.pytdebug'sN(RRtNoneRRRR(((s8/home/prologic/work/circuits/tests/core/test_debugger.pyR s c Cst}t}td|}|i|x|o|iq1W|id|i|i}|pmdhdti jpt i |ot i |ndd6t i |d6}t t i|nd}t}|i||i|id|ii}t|}||j}|p t id|fd||fhd ti jpt i |ot i |nd d6d ti jpt i |ot i |nd d 6d ti jpt i tot i tnd d6t i |d 6}dh|d6} t t i| nd}}|id|it|_|i}| } | pmdhdti jpt i |ot i |ndd6t i |d6} t t i| nd}} t}|i||id|ii}d} || j}|pt id|fd|| fhd ti jpt i |ot i |nd d6t i | d 6} dh| d 6}t t i|nd}} |id|idS(Ntfileis+assert %(py2)s {%(py2)s = %(py0)s._events }tdebuggertpy0tpy2s==s0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }tstetpy3tstrtpy5sassert %(py7)stpy7s/assert not %(py2)s {%(py2)s = %(py0)s._events }ts%(py0)s == %(py3)ssassert %(py5)s(s==(s0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }(s==(s%(py0)s == %(py3)s(RRRtregistertflushtseekttruncatet_eventst @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationRRtfiretreadtstripRt_call_reprcompareR ( tapptstderrRt @py_assert1t @py_format3RRt @py_assert4t @py_format6t @py_format8t @py_assert3t @py_format4t @py_assert2((s8/home/prologic/work/circuits/tests/core/test_debugger.pyt test_main+s`      T          T     o  cCs+t|id}t|d}t}td|}|i|x|o|iqLW|id|i|i }|pmdhdt i jpt i |ot i|ndd6t i|d6}tt i|nd}t}|i||i|id|ii}t|} || j}|p t id|fd|| fhd t i jpt i |ot i|nd d6d t i jpt i |ot i|nd d 6dt i jpt i tot itndd6t i| d6} dh| d6} tt i| nd}} |id|it|_ |i }| } | pmdhdt i jpt i |ot i|ndd6t i|d6} tt i| nd}} t}|i||id|ii}d}||j}|pt id|fd||fhd t i jpt i |ot i|nd d6t i|d 6} dh| d6} tt i| nd}}|id|idS(Ns debug.logsw+Ris+assert %(py2)s {%(py2)s = %(py0)s._events }RRRs==s0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }RRRRRsassert %(py7)sRs/assert not %(py2)s {%(py2)s = %(py0)s._events }Rs%(py0)s == %(py3)ssassert %(py5)s(s==(s0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }(s==(s%(py0)s == %(py3)s(RtensuretopenRRRR R!R"R#R$R%R&R'R(R)R*RRR+R,R-R.R (ttmpdirtlogfileR0R/RR1R2RRR3R4R5R6R7R8((s8/home/prologic/work/circuits/tests/core/test_debugger.pyt test_fileMsb     T          T     o  cCsLdtijotidnt|id}t|d}t}td|}|i |x|o|i qmW|i d|i |i }|pmdhdtijpti|oti|ndd 6ti|d 6}tti|nd}t}|i||i |i d|ii}t|} || j}|p tid|fd|| fhd tijpti|oti|nd d 6dtijpti|oti|ndd6dtijptitotitndd 6ti| d6} dh| d6} tti| nd}} |i d|i t|_ |i }| } | pmdhdtijpti|oti|ndd 6ti|d 6} tti| nd}} t}|i||i d|ii}d}||j}|ptid|fd||fhd tijpti|oti|nd d 6ti|d6} dh| d6} tti| nd}}|i d|i dS(Nt__pypy__sBroken on pypys debug.logsr+Ris+assert %(py2)s {%(py2)s = %(py0)s._events }RRRs==s0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }RRRRRsassert %(py7)sRs/assert not %(py2)s {%(py2)s = %(py0)s._events }Rs%(py0)s == %(py3)ssassert %(py5)s(s==(s0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }(s==(s%(py0)s == %(py3)s(tsystmodulestpytesttskipRR:R;RRRR R!R"R#R$R%R&R'R(R)R*RRR+R,R-R.R (R<R=R0R/RR1R2RRR3R4R5R6R7R8((s8/home/prologic/work/circuits/tests/core/test_debugger.pyt test_filenamersf     T          T     o  cCs"t}t}td|}|i|x|o|iq1W|id|i|i}|pmdhdti jpt i |ot i |ndd6t i |d6}t t i|nd}|i}|pmdhdti jpt i |ot i |ndd6t i |d6}t t i|nd}tdt}|i||i|id|ii}t|}||j}|p t id|fd||fhd ti jpt i |ot i |nd d6d ti jpt i |ot i |nd d 6dti jpt i tot i tndd6t i |d6}dh|d6} t t i| nd}}|id|i|i|id|ii}|i}d} || } | pdhd ti jpt i |ot i |nd d6t i |d6t i | d6t i | d6} t t i| nd}} } |id|it|_t|_|i}| } | pmdhdti jpt i |ot i |ndd6t i |d6} t t i| nd}} |i}| } | pmdhdti jpt i |ot i |ndd6t i |d6} t t i| nd}} tdt}|i||i|id|ii}d}||j}|pt id|fd||fhd ti jpt i |ot i |nd d6t i |d 6} dh| d6}t t i|nd}}|id|i|i|id|ii}d}||j}|pt id|fd ||fhd ti jpt i |ot i |nd d6t i |d 6} dh| d6}t t i|nd}}dS(!NRis+assert %(py2)s {%(py2)s = %(py0)s._events }RRRs+assert %(py2)s {%(py2)s = %(py0)s._errors }R s==s0%(py0)s == %(py5)s {%(py5)s = %(py2)s(%(py3)s) }RRRRRsassert %(py7)sRs (skassert %(py8)s {%(py8)s = %(py4)s {%(py4)s = %(py2)s {%(py2)s = %(py0)s.error_msg }.startswith }(%(py6)s) }Rtpy8RRERF(RR RRR RRHR+RRIR$R%R&R'R(R)R*R( R/RSRRR1R6RJt @py_assert7t @py_format9((s8/home/prologic/work/circuits/tests/core/test_debugger.pyttest_Logger_error"s(      (Rt __builtin__R$t_pytest.assertion.rewritet assertiontrewriteR&R@RBRt ImportErrortiotcircuitsRt circuits.coreRRRRtobjectR R9R>RDRLRORRRXR\(((s8/home/prologic/work/circuits/tests/core/test_debugger.pyts*    " % ( 4 # " circuits-3.1.0/tests/core/__pycache__/test_component_targeting.cpython-26-PYTEST.pyc0000644000014400001440000000610012407376150031415 0ustar prologicusers00000000000000 ?Tc@sddkZddkiiZddkZddklZl Z de fdYZ defdYZ ei ddd Z d ZdS( iN(t ComponenttEventthellocBseZdZeZRS(s hello Event(t__name__t __module__t__doc__tTruetsuccess(((sC/home/prologic/work/circuits/tests/core/test_component_targeting.pyR stAppcBseZdZdZRS(tappcCsdS(Ns Hello World!((tself((sC/home/prologic/work/circuits/tests/core/test_component_targeting.pyRs(RRtchannelR(((sC/home/prologic/work/circuits/tests/core/test_component_targeting.pyRstscopetmodulecsti||i}d}||}|pdhdtijpti|oti|ndd6ti|d6ti|d6ti|d6}tti |nd}}}fd}|i |S( Nt registeredsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }twatchertpy0tpy2tpy4tpy6csidS(N(t unregister((R (sC/home/prologic/work/circuits/tests/core/test_component_targeting.pyt finalizers( Rtregistertwaitt @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonet addfinalizer(trequesttmanagerRt @py_assert1t @py_assert3t @py_assert5t @py_format7R((R sC/home/prologic/work/circuits/tests/core/test_component_targeting.pyR s  t c Cs|it|}|i}d}||}|pdhdtijpti|oti|ndd6ti|d6ti|d6ti|d6}tti |nd}}}|i }d} || j}|pti d|fd|| fhd tijpti|oti|nd d6ti| d 6} d h| d6} tti | nd}} dS(Nt hello_successsFassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.wait }(%(py4)s) }RRRRRs Hello World!s==s%(py0)s == %(py3)stvaluetpy3sassert %(py5)stpy5(s==(s%(py0)s == %(py3)s( tfireRRRRRRRRRRR(t_call_reprcompare( R"RR txR#R$R%R&R(t @py_assert2t @py_format4t @py_format6((sC/home/prologic/work/circuits/tests/core/test_component_targeting.pyttest$s   t  o(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtpytesttcircuitsRRRRtfixtureR R1(((sC/home/prologic/work/circuits/tests/core/test_component_targeting.pyts   circuits-3.1.0/tests/core/__pycache__/test_priority.cpython-27-PYTEST.pyc0000644000014400001440000000440612414363102027227 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlmZmZm Z m Z defdYZ de fdYZ e Z e Zeje xe re jqWdZdS(iN(thandlertEventt ComponenttManagerttestcBseZdZRS(s test Event(t__name__t __module__t__doc__(((s8/home/prologic/work/circuits/tests/core/test_priority.pyRstAppcBsSeZeddZeddddZeddddZRS(RcCsdS(Ni((tself((s8/home/prologic/work/circuits/tests/core/test_priority.pyttest_0 stpriorityicCsdS(Ni((R ((s8/home/prologic/work/circuits/tests/core/test_priority.pyttest_3sicCsdS(Ni((R ((s8/home/prologic/work/circuits/tests/core/test_priority.pyttest_2s(RRRR R R (((s8/home/prologic/work/circuits/tests/core/test_priority.pyR scCstjt}xtr(tjqWt|}dddg}||k}|stjd |fd ||fitj|d6dtj kstj |rtj|ndd6}di|d 6}t tj |nd}}dS(Niiis==s%(py0)s == %(py3)stpy3txtpy0tsassert %(py5)stpy5(s==(s%(py0)s == %(py3)ssassert %(py5)s(tmtfireRtflushtlistt @pytest_art_call_reprcomparet _safereprt @py_builtinstlocalst_should_repr_global_nametAssertionErrort_format_explanationtNone(tvRt @py_assert2t @py_assert1t @py_format4t @py_format6((s8/home/prologic/work/circuits/tests/core/test_priority.pyt test_main s   l(t __builtin__Rt_pytest.assertion.rewritet assertiontrewriteRtcircuitsRRRRRRRtapptregisterRR%(((s8/home/prologic/work/circuits/tests/core/test_priority.pyts "    circuits-3.1.0/tests/core/__pycache__/test_interface_query.cpython-32-PYTEST.pyc0000644000014400001440000001103112414363275030532 0ustar prologicusers00000000000000l ?Tc@sdZddlZddljjZddlmZGddeZ Gdde Z dZ d Z d Z d ZdS( uTest Interface Query Test the capabilities of querying a Component class or instance for it's interface. That is it's event handlers it responds to. iN(u ComponentcBs|EeZdZdS(cCsdS(N((uself((u?/home/prologic/work/circuits/tests/core/test_interface_query.pyufoosN(u__name__u __module__ufoo(u __locals__((u?/home/prologic/work/circuits/tests/core/test_interface_query.pyuBase s uBasecBs|EeZdZdS(cCsdS(N((uself((u?/home/prologic/work/circuits/tests/core/test_interface_query.pyubarsN(u__name__u __module__ubar(u __locals__((u?/home/prologic/work/circuits/tests/core/test_interface_query.pyu SuperBases u SuperBasecCstj}d}||}|sdditj|d6dtjks\tjtrktjtndd6tj|d6tj|d6}ttj|nd}}}dS( NufoouuIassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s) }upy2uBaseupy0upy6upy4( uBaseuhandlesu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(u @py_assert1u @py_assert3u @py_assert5u @py_format7((u?/home/prologic/work/circuits/tests/core/test_interface_query.pyutest_handles_base_classs  ucCstj}d}d}|||}|sdditj|d6dtjksetjtrttjtndd6tj|d6tj|d 6tj|d 6}ttj|nd}}}}dS( NufooubaruuRassert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s, %(py6)s) }upy2u SuperBaseupy0upy6upy8upy4( u SuperBaseuhandlesu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(u @py_assert1u @py_assert3u @py_assert5u @py_assert7u @py_format9((u?/home/prologic/work/circuits/tests/core/test_interface_query.pyutest_handles_super_base_classs cCst}|j}d}||}|sdditj|d6dtjksetj|rttj|ndd6tj|d6tj|d6}ttj|nd}}}dS( NufoouuIassert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s) }upy2ubaseupy0upy6upy4( uBaseuhandlesu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(ubaseu @py_assert1u @py_assert3u @py_assert5u @py_format7((u?/home/prologic/work/circuits/tests/core/test_interface_query.pyutest_handles_base_instance!s   ucCst}|j}d}d}|||}|sdditj|d6dtjksntj|r}tj|ndd6tj|d6tj|d 6tj|d 6}ttj|nd}}}}dS( NufooubaruuRassert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.handles }(%(py4)s, %(py6)s) }upy2u superbaseupy0upy6upy8upy4( u SuperBaseuhandlesu @pytest_aru _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(u superbaseu @py_assert1u @py_assert3u @py_assert5u @py_assert7u @py_format9((u?/home/prologic/work/circuits/tests/core/test_interface_query.pyu test_handles_super_base_instance&s  (u__doc__ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arucircuitsu ComponentuBaseu SuperBaseutest_handles_base_classutest_handles_super_base_classutest_handles_base_instanceu test_handles_super_base_instance(((u?/home/prologic/work/circuits/tests/core/test_interface_query.pyus    circuits-3.1.0/tests/core/__pycache__/test_utils.cpython-32-PYTEST.pyc0000644000014400001440000001723112414363275026515 0ustar prologicusers00000000000000l ?TMc@sddlZddljjZddlZddlmZddl m Z ddl m Z m Z mZdZdZGdde ZGd d eZGd d e ZGd de ZdZdZdZdZdS(iN(u ModuleType(u Component(u findchannelufindrootufindtypeu%def foo(): return "Hello World!" u%def foo(); return "Hello World!' cBs|EeZdZdS(uBaseN(u__name__u __module__u__doc__(u __locals__((u5/home/prologic/work/circuits/tests/core/test_utils.pyuBases uBasecBs|EeZdZdS(cCsdS(Nu Hello World!((uself((u5/home/prologic/work/circuits/tests/core/test_utils.pyuhellosN(u__name__u __module__uhello(u __locals__((u5/home/prologic/work/circuits/tests/core/test_utils.pyuApps uAppcBs|EeZdZdS(uaN(u__name__u __module__uchannel(u __locals__((u5/home/prologic/work/circuits/tests/core/test_utils.pyuAs uAcBs|EeZdZdS(ubN(u__name__u __module__uchannel(u __locals__((u5/home/prologic/work/circuits/tests/core/test_utils.pyuB#s uBcCs`ddlm}tjjdt||jd}|jt|d}|dk }|st j d(|fd)|dfidt j kst jdrt jdndd6dt j kst j|rt j|ndd 6}d*i|d 6}tt j|nd}t|}|tk}|sFt j d+|fd,|tfit j|d6dt j kst j|rt j|ndd6dt j kst jtrt jtndd 6dt j kst jtrt jtndd6} d-i| d6} tt j| nd}}|j} d}| |k}|s t j d.|fd/| |fit j|d6dt j kst j| rt j| ndd 6} d0i| d6} tt j| nd}}|jdd} | jddrJ| jdd1n|jd }|jd!dr~|jdd1n|jt|d}|dk}|set j d2|fd3|dfidt j kst jdrt jdndd6dt j ks"t j|r1t j|ndd 6}d4i|d 6}tt j|nd}tj}||k}|sRt j d5|fd6||fid%t j kst jtrt jtnd%d6dt j kst j|rt j|ndd 6t j|d 6}d7i|d'6}tt j|nd}}dS(8Ni(u safeimportufoo.pyufoouis notu%(py0)s is not %(py2)suNoneupy2upy0uuassert %(py4)supy4uisu0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } is %(py5)supy3upy1utypeu ModuleTypeupy5uassert %(py7)supy7u Hello World!u==u%(py0)s == %(py3)susuassert %(py5)suextupycufileiu ignore_errorsu __pycache__udiru%(py0)s is %(py2)sunot inu3%(py0)s not in %(py4)s {%(py4)s = %(py2)s.modules }usysuassert %(py6)supy6(uis not(u%(py0)s is not %(py2)suassert %(py4)s(uis(u0%(py3)s {%(py3)s = %(py0)s(%(py1)s) } is %(py5)suassert %(py7)s(u==(u%(py0)s == %(py3)suassert %(py5)sT(uis(u%(py0)s is %(py2)suassert %(py4)s(unot in(u3%(py0)s not in %(py4)s {%(py4)s = %(py2)s.modules }uassert %(py6)s(ucircuits.core.utilsu safeimportusysupathuinsertustruensureuwriteuFOOuNoneu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationutypeu ModuleTypeufoounewucheckuremoveuTrueudirpathuFOOBARumodules(utmpdiru safeimportufoo_pathufoou @py_assert1u @py_format3u @py_format5u @py_assert2u @py_assert4u @py_format6u @py_format8usu @py_format4upycupydu @py_assert3u @py_format7((u5/home/prologic/work/circuits/tests/core/test_utils.pyutest_safeimport(s^       l     cCs0t}t}t}|j||j|x|rK|jq8Wt|}||k}|s&tjd |fd ||fidtj kstj |rtj |ndd6dtj kstj |rtj |ndd6}d i|d 6}t tj |nd}dS( Nu==u%(py0)s == %(py2)suappupy2urootupy0uuassert %(py4)supy4(u==(u%(py0)s == %(py2)suassert %(py4)s(uAppuAuBuregisteruflushufindrootu @pytest_aru_call_reprcompareu @py_builtinsulocalsu_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(uappuauburootu @py_assert1u @py_format3u @py_format5((u5/home/prologic/work/circuits/tests/core/test_utils.pyu test_findrootCs        cCst}ttj|x|r6|jq#Wt|d}|j}d}||k}|s tjd |fd ||fitj |d6dt j kstj |rtj |ndd6tj |d6}d i|d 6}t tj|nd}}}dS( Nuau==u/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)supy2upy0upy5uuassert %(py7)supy7(u==(u/%(py2)s {%(py2)s = %(py0)s.channel } == %(py5)suassert %(py7)s(uAppuAuBuregisteruflushu findchanneluchannelu @pytest_aru_call_reprcompareu _saferepru @py_builtinsulocalsu_should_repr_global_nameuAssertionErroru_format_explanationuNone(uappuau @py_assert1u @py_assert4u @py_assert3u @py_format6u @py_format8((u5/home/prologic/work/circuits/tests/core/test_utils.pyutest_findchannelSs    |cCs@t}ttj|x|r6|jq#Wt|t}t|t}|s6ddidtjkst j trt j tndd6dtjkst j |rt j |ndd6dtjkst j trt j tndd6t j |d 6}t t j |nd}dS( Nuu5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }uAupy2uaupy1u isinstanceupy0upy4(uAppuAuBuregisteruflushufindtypeu isinstanceu @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNone(uappuau @py_assert3u @py_format5((u5/home/prologic/work/circuits/tests/core/test_utils.pyu test_findtype_s  (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arusysutypesu ModuleTypeucircuitsu Componentucircuits.core.utilsu findchannelufindrootufindtypeuFOOuFOOBARuBaseuAppuAuButest_safeimportu test_findrootutest_findchannelu test_findtype(((u5/home/prologic/work/circuits/tests/core/test_utils.pyus     circuits-3.1.0/tests/core/test_channel_selection.py0000644000014400001440000000177212402037676023527 0ustar prologicusers00000000000000#!/usr/bin/python -i from circuits import Event, Component, Manager class foo(Event): """foo Event""" channels = ("a",) class bar(Event): """bar Event""" class A(Component): channel = "a" def foo(self): return "Foo" class B(Component): channel = "b" def foo(self): return "Hello World!" class C(Component): channel = "c" def foo(self): return self.fire(bar()) def bar(self): return "Bar" def test(): m = Manager() + A() + B() + C() while m: m.flush() # Rely on Event.channels x = m.fire(foo()) m.flush() assert x.value == "Foo" # Explicitly specify the channel x = m.fire(foo(), "b") m.flush() assert x.value == "Hello World!" # Explicitly specify a set of channels x = m.fire(foo(), "a", "b") m.flush() assert x.value == ["Foo", "Hello World!"] # Rely on self.channel x = m.fire(foo(), "c") m.flush() m.flush() assert x.value == "Bar" circuits-3.1.0/tests/core/test_inheritence.py0000644000014400001440000000141612402037676022342 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest from circuits import handler, Event, Component class test(Event): """test Event""" class Base(Component): def test(self): return "Hello World!" class App1(Base): @handler("test", priority=-1) def test(self): return "Foobar" class App2(Base): @handler("test", override=True) def test(self): return "Foobar" def test_inheritence(): app = App1() app.start() x = app.fire(test()) assert pytest.wait_for(x, "result") v = x.value assert v == ["Hello World!", "Foobar"] app.stop() def test_override(): app = App2() app.start() x = app.fire(test()) assert pytest.wait_for(x, "result") v = x.value assert v == "Foobar" app.stop() circuits-3.1.0/tests/core/test_signals.py0000644000014400001440000000241612402037676021506 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest import os import sys from time import sleep from errno import ESRCH from signal import SIGTERM from os import kill, remove from subprocess import Popen from . import signalapp def is_running(pid): try: kill(pid, 0) except OSError as error: if error.errno == ESRCH: return False return True def wait(pid, timeout=3): count = timeout while is_running(pid) and count: sleep(1) def test(tmpdir): if not os.name == "posix": pytest.skip("Cannot run test on a non-POSIX platform.") tmpdir.ensure(".pid") tmpdir.ensure(".signal") pidfile = str(tmpdir.join(".pid")) signalfile = str(tmpdir.join(".signal")) args = [sys.executable, signalapp.__file__, pidfile, signalfile] cmd = " ".join(args) p = Popen(cmd, shell=True, env={'PYTHONPATH': ':'.join(sys.path)}) status = p.wait() assert status == 0 sleep(1) assert os.path.exists(pidfile) assert os.path.isfile(pidfile) f = open(pidfile, "r") pid = int(f.read().strip()) f.close() kill(pid, SIGTERM) wait(pid) f = open(signalfile, "r") signal = f.read().strip() f.close() assert signal == str(SIGTERM) remove(pidfile) remove(signalfile) circuits-3.1.0/tests/core/test_worker_process.py0000644000014400001440000000227112402037676023114 0ustar prologicusers00000000000000# Module: test_workers # Date: 7th October 2008 # Author: James Mills, prologic at shortcircuit dot net dot au """Workers Tests""" import pytest from os import getpid from circuits import task, Worker @pytest.fixture(scope="module") def worker(request, manager): worker = Worker().register(manager) def finalizer(): worker.unregister() request.addfinalizer(finalizer) return worker def err(): return x * 2 # NOQA def foo(): x = 0 i = 0 while i < 1000000: x += 1 i += 1 return x def pid(): return "Hello from {0:d}".format(getpid()) def add(a, b): return a + b def test_failure(manager, watcher, worker): e = task(err) e.failure = True x = worker.fire(e) assert watcher.wait("task_failure") assert isinstance(x.value[1], Exception) def test_success(manager, watcher, worker): e = task(foo) e.success = True x = worker.fire(e) assert watcher.wait("task_success") assert x.value == 1000000 def test_args(manager, watcher, worker): e = task(add, 1, 2) e.success = True x = worker.fire(e) assert watcher.wait("task_success") assert x.value == 3 circuits-3.1.0/tests/core/test_generate_events.py0000755000014400001440000000205212402037676023223 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest from circuits import Component, Event class App(Component): def init(self): self._ready = False self._done = False self._counter = 0 def registered(self, component, manager): if component is self: self.fire(Event.create("ready")) def generate_events(self, event): if not self._ready or self._done: return if self._counter < 10: self.fire(Event.create("hello")) else: self.fire(Event.create("done")) event.reduce_time_left(0) def done(self): self._done = True def hello(self): self._counter += 1 def ready(self): self._ready = True @pytest.fixture(scope="module") def app(request, manager, watcher): app = App().register(manager) def finalizer(): app.unregister() request.addfinalizer(finalizer) assert watcher.wait("ready") return app def test(manager, watcher, app): watcher.wait("done") assert app._counter == 10 circuits-3.1.0/tests/core/test_debugger.py0000644000014400001440000001250512402037676021632 0ustar prologicusers00000000000000# Module: debugger # Date: 5th November 2008 # Author: James Mills, prologic at shortcircuit dot net dot au """Debugger Tests""" import sys import pytest try: from StringIO import StringIO except ImportError: from io import StringIO # NOQA from circuits import Debugger from circuits.core import Event, Component class test(Event): """test Event""" class App(Component): def test(self, raiseException=False): if raiseException: raise Exception() class Logger(object): error_msg = None debug_msg = None def error(self, msg): self.error_msg = msg def debug(self, msg): self.debug_msg = msg def test_main(): app = App() stderr = StringIO() debugger = Debugger(file=stderr) debugger.register(app) while app: app.flush() stderr.seek(0) stderr.truncate() assert debugger._events e = Event() app.fire(e) app.flush() stderr.seek(0) s = stderr.read().strip() assert s == str(e) stderr.seek(0) stderr.truncate() debugger._events = False assert not debugger._events e = Event() app.fire(e) stderr.seek(0) s = stderr.read().strip() assert s == "" stderr.seek(0) stderr.truncate() def test_file(tmpdir): logfile = str(tmpdir.ensure("debug.log")) stderr = open(logfile, "w+") app = App() debugger = Debugger(file=stderr) debugger.register(app) while app: app.flush() stderr.seek(0) stderr.truncate() assert debugger._events e = Event() app.fire(e) app.flush() stderr.seek(0) s = stderr.read().strip() assert s == str(e) stderr.seek(0) stderr.truncate() debugger._events = False assert not debugger._events e = Event() app.fire(e) stderr.seek(0) s = stderr.read().strip() assert s == "" stderr.seek(0) stderr.truncate() def test_filename(tmpdir): if "__pypy__" in sys.modules: pytest.skip("Broken on pypy") logfile = str(tmpdir.ensure("debug.log")) stderr = open(logfile, "r+") app = App() debugger = Debugger(file=logfile) debugger.register(app) while app: app.flush() stderr.seek(0) stderr.truncate() assert debugger._events e = Event() app.fire(e) app.flush() stderr.seek(0) s = stderr.read().strip() assert s == str(e) stderr.seek(0) stderr.truncate() debugger._events = False assert not debugger._events e = Event() app.fire(e) stderr.seek(0) s = stderr.read().strip() assert s == "" stderr.seek(0) stderr.truncate() def test_exceptions(): app = App() stderr = StringIO() debugger = Debugger(file=stderr) debugger.register(app) while app: app.flush() stderr.seek(0) stderr.truncate() assert debugger._events assert debugger._errors e = test(raiseException=True) app.fire(e) app.flush() stderr.seek(0) s = stderr.read().strip() assert s == str(e) stderr.seek(0) stderr.truncate() app.flush() stderr.seek(0) s = stderr.read().strip() assert s.startswith(" (") circuits-3.1.0/tests/core/test_component_targeting.py0000644000014400001440000000120712402037676024111 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest from circuits import Component, Event class hello(Event): """hello Event""" success = True class App(Component): channel = "app" def hello(self): return "Hello World!" @pytest.fixture(scope="module") def app(request, manager, watcher): app = App().register(manager) assert watcher.wait("registered") def finalizer(): app.unregister() request.addfinalizer(finalizer) return app def test(manager, watcher, app): x = manager.fire(hello(), app) assert watcher.wait("hello_success") value = x.value assert value == "Hello World!" circuits-3.1.0/tests/core/test_imports.py0000644000014400001440000000037012402037676021540 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.core.components import BaseComponent def test(): try: from circuits.core.pollers import BasePoller assert issubclass(BasePoller, BaseComponent) except ImportError: assert False circuits-3.1.0/tests/core/test_errors.py0000644000014400001440000000221712402037676021361 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest from circuits import Event, Component class test(Event): """test Event""" class App(Component): def __init__(self): super(App, self).__init__() self.etype = None self.evalue = None self.etraceback = None self.handler = None self.fevent = None def test(self): return x # NOQA def exception(self, etype, evalue, etraceback, handler=None, fevent=None): self.etype = etype self.evalue = evalue self.etraceback = etraceback self.handler = handler self.fevent = fevent def reraise(e): raise e @pytest.fixture def app(request, manager, watcher): app = App().register(manager) watcher.wait("registered") def finalizer(): app.unregister() request.addfinalizer(finalizer) return app def test_main(app, watcher): e = test() app.fire(e) watcher.wait("exception") assert app.etype == NameError pytest.raises(NameError, lambda e: reraise(e), app.evalue) assert isinstance(app.etraceback, list) assert app.handler == app.test assert app.fevent == e circuits-3.1.0/tests/core/test_call_wait.py0000644000014400001440000000552012402037676022004 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest from circuits import handler, Component, Event class wait(Event): """wait Event""" success = True class call(Event): """call Event""" success = True class long_call(Event): """long_call Event""" success = True class long_wait(Event): """long_wait Event""" success = True class wait_return(Event): """wait_return Event""" success = True class hello(Event): """hello Event""" success = True class foo(Event): """foo Event""" success = True class get_x(Event): """get_x Event""" success = True class get_y(Event): """get_y Event""" success = True class eval(Event): """eval Event""" success = True class App(Component): @handler("wait") def _on_wait(self): x = self.fire(hello()) yield self.wait("hello") yield x.value @handler("call") def _on_call(self): x = yield self.call(hello()) yield x.value def hello(self): return "Hello World!" def long_wait(self): x = self.fire(foo()) yield self.wait("foo") yield x.value def wait_return(self): self.fire(foo()) yield (yield self.wait("foo")) def long_call(self): x = yield self.call(foo()) yield x.value def foo(self): for i in range(1, 10): yield i def get_x(self): return 1 def get_y(self): return 2 def eval(self): x = yield self.call(get_x()) y = yield self.call(get_y()) yield x.value + y.value @pytest.fixture(scope="module") def app(request, manager, watcher): app = App().register(manager) assert watcher.wait("registered") def finalizer(): app.unregister() request.addfinalizer(finalizer) return app def test_wait_simple(manager, watcher, app): x = manager.fire(wait()) assert watcher.wait("wait_success") value = x.value assert value == "Hello World!" def call_simple(manager, watcher, app): x = manager.fire(call()) assert watcher.wait("call_success") value = x.value assert value == "Hello World!" def test_long_call(manager, watcher, app): x = manager.fire(long_call()) assert watcher.wait("long_call_success") value = x.value assert value == list(range(1, 10)) def test_long_wait(manager, watcher, app): x = manager.fire(long_wait()) assert watcher.wait("long_wait_success") value = x.value assert value == list(range(1, 10)) def test_wait_return(manager, watcher, app): x = manager.fire(wait_return()) assert watcher.wait("wait_return_success") value = x.value assert value == list(range(1, 10)) def test_eval(manager, watcher, app): x = manager.fire(eval()) assert watcher.wait("eval_success") value = x.value assert value == 3 circuits-3.1.0/tests/core/test_interface_query.py0000644000014400001440000000124112402037676023226 0ustar prologicusers00000000000000#!/usr/bin/env python """Test Interface Query Test the capabilities of querying a Component class or instance for it's interface. That is it's event handlers it responds to. """ from circuits import Component class Base(Component): def foo(self): pass class SuperBase(Base): def bar(self): pass def test_handles_base_class(): assert Base.handles("foo") def test_handles_super_base_class(): assert SuperBase.handles("foo", "bar") def test_handles_base_instance(): base = Base() assert base.handles("foo") def test_handles_super_base_instance(): superbase = SuperBase() assert superbase.handles("foo", "bar") circuits-3.1.0/tests/core/test_utils.py0000644000014400001440000000311512402037676021203 0ustar prologicusers00000000000000#!/usr/bin/env python import sys from types import ModuleType from circuits import Component from circuits.core.utils import findchannel, findroot, findtype FOO = """\ def foo(): return "Hello World!" """ FOOBAR = """\ def foo(); return "Hello World!' """ class Base(Component): """Base""" class App(Base): def hello(self): return "Hello World!" class A(Component): channel = "a" class B(Component): channel = "b" def test_safeimport(tmpdir): from circuits.core.utils import safeimport sys.path.insert(0, str(tmpdir)) foo_path = tmpdir.ensure("foo.py") foo_path.write(FOO) foo = safeimport("foo") assert foo is not None assert type(foo) is ModuleType s = foo.foo() assert s == "Hello World!" pyc = foo_path.new(ext="pyc") if pyc.check(file=1): pyc.remove(ignore_errors=True) pyd = foo_path.dirpath('__pycache__') if pyd.check(dir=1): pyd.remove(ignore_errors=True) foo_path.write(FOOBAR) foo = safeimport("foo") assert foo is None assert foo not in sys.modules def test_findroot(): app = App() a = A() b = B() b.register(a) a.register(app) while app: app.flush() root = findroot(b) assert root == app def test_findchannel(): app = App() (A() + B()).register(app) while app: app.flush() a = findchannel(app, "a") assert a.channel == "a" def test_findtype(): app = App() (A() + B()).register(app) while app: app.flush() a = findtype(app, A) assert isinstance(a, A) circuits-3.1.0/tests/core/test_call_wait_order.py0000644000014400001440000000203312402037676023173 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest from time import sleep, time from random import random, seed from circuits.core import task, Worker from circuits.core import handler, Component, Event class hello(Event): """hello Event""" success = True def process(x=None): sleep(random()) return x class App(Component): @handler('hello') def _on_hello(self): e1 = task(process, 1) self.fire(task(process, 2)) self.fire(task(process, 3)) yield (yield self.call(e1)) @pytest.fixture(scope="module") def app(request, manager, watcher): seed(time()) app = App().register(manager) assert watcher.wait("registered") worker = Worker().register(manager) assert watcher.wait("registered") def finalizer(): app.unregister() worker.unregister() request.addfinalizer(finalizer) return app def test_call_order(manager, watcher, app): x = manager.fire(hello()) assert watcher.wait('hello_success') value = x.value assert value == 1 circuits-3.1.0/tests/core/test_priority.py0000644000014400001440000000102512402037676021722 0ustar prologicusers00000000000000#!/usr/bin/python -i from circuits import handler, Event, Component, Manager class test(Event): """test Event""" class App(Component): @handler("test") def test_0(self): return 0 @handler("test", priority=3) def test_3(self): return 3 @handler("test", priority=2) def test_2(self): return 2 m = Manager() app = App() app.register(m) while m: m.flush() def test_main(): v = m.fire(test()) while m: m.flush() x = list(v) assert x == [3, 2, 0] circuits-3.1.0/tests/core/app.py0000644000014400001440000000024312402037676017563 0ustar prologicusers00000000000000from circuits import Component class App(Component): def test(self): return "Hello World!" def prepare_unregister(self, *args): return circuits-3.1.0/tests/core/test_component_repr.py0000644000014400001440000000217312402037676023100 0ustar prologicusers00000000000000# Module: test_component_repr # Date: 23rd February 2010 # Author: James Mills, prologic at shortcircuit dot net dot au """Component Repr Tests Test Component's representation string. """ import os try: from threading import current_thread except ImportError: from threading import currentThread as current_thread # NOQA from circuits import Event, Component class App(Component): def test(self, event, *args, **kwargs): pass class test(Event): pass def test_main(): id = "%s:%s" % (os.getpid(), current_thread().getName()) app = App() assert repr(app) == "" % id app.fire(test()) assert repr(app) == "" % id app.flush() assert repr(app) == "" % id def test_non_str_channel(): id = "%s:%s" % (os.getpid(), current_thread().getName()) app = App(channel=(1, 1)) assert repr(app) == "" % id app.fire(test()) assert repr(app) == "" % id app.flush() assert repr(app) == "" % id circuits-3.1.0/tests/core/__init__.pyc0000644000014400001440000000021212420400435020664 0ustar prologicusers00000000000000 Qc@sdS(N((((s3/home/prologic/work/circuits/tests/core/__init__.pytscircuits-3.1.0/tests/app/0000755000014400001440000000000012425013643016253 5ustar prologicusers00000000000000circuits-3.1.0/tests/app/app.pyc0000644000014400001440000000265512420400435017552 0ustar prologicusers00000000000000 ?Tc@sddlmZddlmZyddlmZeZWnek rSeZnXddl m Z ddl m Z de fdYZ dZed krend S( i(targv(tabspath(tcoverage(t Component(tDaemontAppcBseZdZdZRS(cKst||j|dS(N(Rtregister(tselftpidfiletkwargs((s-/home/prologic/work/circuits/tests/app/app.pytinitscGsdS(N((Rtargs((s-/home/prologic/work/circuits/tests/app/app.pytprepare_unregisters(t__name__t __module__R R (((s-/home/prologic/work/circuits/tests/app/app.pyRs cCsitr"tdt}|jnttd}t|}|jtre|j|j ndS(Nt data_suffixi( t HAS_COVERAGERtTruetstartRRRtruntstoptsave(t _coverageRtapp((s-/home/prologic/work/circuits/tests/app/app.pytmains    t__main__N(tsysRtos.pathRRRRt ImportErrortFalsetcircuitsRt circuits.appRRRR (((s-/home/prologic/work/circuits/tests/app/app.pyts     circuits-3.1.0/tests/app/__init__.py0000644000014400001440000000000012174742426020363 0ustar prologicusers00000000000000circuits-3.1.0/tests/app/__pycache__/0000755000014400001440000000000012425013643020463 5ustar prologicusers00000000000000circuits-3.1.0/tests/app/__pycache__/test_daemon.cpython-27-PYTEST.pyc0000644000014400001440000000623012414363101026435 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZejdkrIejdnddl Z ddl m Z ddl m Z ddlmZddlmZddlmZd d lmZd Zd d ZdZdS(iNtwin32sUnsupported Platform(tkill(tsleep(tESRCH(tSIGTERM(tPopeni(tappcCs>yt|dWn&tk r9}|jtkr:tSnXtS(Ni(RtOSErrorterrnoRtFalsetTrue(tpidterror((s5/home/prologic/work/circuits/tests/app/test_daemon.pyt is_runnings icCs-|}x t|r(|r(tdq WdS(Ni(R R(R ttimeouttcount((s5/home/prologic/work/circuits/tests/app/test_daemon.pytwaitsc Cs~|jd|jd}tjtjt|g}t|didjtjd6j t d|j }|dt dt }|sydd id t jkstjt rtjt nd d 6tj|d 6d t jkstj|rtj|nd d6tj|d6d t jksGtjt rVtjt nd d6}ttj|nd}}d}|j}t|jj}WdQXt|t}|sddidt jkstjtrtjtndd 6dt jks-tj|r<tj|ndd6dt jksdtjtrstjtndd6tj|d6} ttj| nd}d} || k}|sYtjd|fd|| fitj| d 6dt jkstj|r%tj|ndd6} di| d6} ttj| nd}} t|tt |dS(Nsapp.pidtenvt:t PYTHONPATHitexiststfilets\assert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.check }(exists=%(py3)s, file=%(py4)s) }R tpy3tpy2tpid_pathtpy0tpy6tpy4s5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }tintR tpy1t isinstanceit>s%(py0)s > %(py3)ssassert %(py5)stpy5(R (s%(py0)s > %(py3)ssassert %(py5)s(tensuretjointsyst executableRt__file__tstrRtpathRRtcheckR t @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetopenRtreadtstripRt_call_reprcompareRR( ttmpdirRtargst @py_assert1t @py_assert5t @py_format7R tft @py_assert3t @py_format5t @py_assert2t @py_format4t @py_format6((s5/home/prologic/work/circuits/tests/app/test_daemon.pyttest#s8 )    l  (t __builtin__R*t_pytest.assertion.rewritet assertiontrewriteR,tpytesttPLATFORMtskipR$tosRttimeRRRtsignalRt subprocessRRRR RRA(((s5/home/prologic/work/circuits/tests/app/test_daemon.pyts    circuits-3.1.0/tests/app/__pycache__/test_daemon.cpython-34-PYTEST.pyc0000644000014400001440000000523612414363521026446 0ustar prologicusers00000000000000 ?T@sddlZddljjZddlZejdkrIejdnddl Z ddl m Z ddl m Z ddlmZddlmZddlmZd d lmZd d Zd ddZddZdS)Nwin32zUnsupported Platform)kill)sleep)ESRCH)SIGTERM)Popen)appcCsPyt|dWn8tk rK}z|jtkr9dSWYdd}~XnXdS)NrFT)rOSErrorerrnor)piderrorr5/home/prologic/work/circuits/tests/app/test_daemon.py is_runnings rcCs-|}x t|r(|r(tdq WdS)Nr)rr)r timeoutcountrrrwaitsrcCsD|jd|jd}tjtjt|g}t|didjtjd6j t d|j }d}d}|d|d|}|s7d d it j |d 6t j |d 6t j |d 6dtjkst j|rt j |ndd6t j |d6}tt j|nt}}}}d}|j} t| jj}WdQXt|t}|sld didtjkst j|rt j |ndd6dtjkst jtrt j tndd 6dtjks*t jtr9t j tndd6t j |d6} tt j| nt}d} || k}|st jd|fd|| fit j | d6dtjkst j|rt j |ndd6} di| d6} tt j| nt}} t|tt |dS)Nzapp.pidenv:Z PYTHONPATHrTexistsfilez\assert %(py8)s {%(py8)s = %(py2)s {%(py2)s = %(py0)s.check }(exists=%(py4)s, file=%(py6)s) }Zpy2Zpy6Zpy8pid_pathZpy0Zpy4z5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }r Zpy1int isinstancer>%(py0)s > %(py3)sZpy3assert %(py5)sZpy5)r)rr)ensurejoinsys executabler __file__strrpathrrcheck @pytest_ar _saferepr @py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNoneopenrreadstripr_call_reprcomparerr)tmpdirrargsZ @py_assert1Z @py_assert3Z @py_assert5Z @py_assert7Z @py_format9r fZ @py_format5Z @py_assert2Z @py_format4Z @py_format6rrrtest#s< )   l  r7)builtinsr*_pytest.assertion.rewrite assertionrewriter(pytestPLATFORMskipr"osrtimerr rsignalr subprocessrrr rrr7rrrrs    circuits-3.1.0/tests/app/__pycache__/__init__.cpython-33.pyc0000644000014400001440000000022112414363410024636 0ustar prologicusers00000000000000 Qc@sdS(N((((u2/home/prologic/work/circuits/tests/app/__init__.pyuscircuits-3.1.0/tests/app/__pycache__/__init__.cpython-34.pyc0000644000014400001440000000020512414363521024644 0ustar prologicusers00000000000000 Q@sdS)Nrrr2/home/prologic/work/circuits/tests/app/__init__.pyscircuits-3.1.0/tests/app/__pycache__/test_daemon.cpython-33-PYTEST.pyc0000644000014400001440000000661412414363410026443 0ustar prologicusers00000000000000 ?Tc@sddlZddljjZddlZejdkrIejdnddl Z ddl m Z ddl m Z ddlmZddlmZddlmZd d lmZd d Zd ddZddZdS(iNuwin32uUnsupported Platform(ukill(usleep(uESRCH(uSIGTERM(uPopeni(uappcCsPyt|dWn8tk rK}z|jtkr9dSWYdd}~XnXdS(NiFT(ukilluOSErroruerrnouESRCHuFalseuTrue(upiduerror((u5/home/prologic/work/circuits/tests/app/test_daemon.pyu is_runnings u is_runningicCs-|}x t|r(|r(tdq WdS(Ni(u is_runningusleep(upidutimeoutucount((u5/home/prologic/work/circuits/tests/app/test_daemon.pyuwaitsuwaitc Cs~|jd|jd}tjtjt|g}t|didjtjd6j t d|j }|dddd}|sydd id t jkstjdrtjdnd d 6tj|d 6d t jkstj|rtj|nd d6tj|d6d t jksGtjdrVtjdnd d6}ttj|nd}}d}|j}t|jj}WdQXt|t}|sddidt jkstjtrtjtndd 6dt jks-tj|r<tj|ndd6dt jksdtjtrstjtndd6tj|d6} ttj| nd}d} || k}|sYtjd|fd|| fitj| d 6dt jkstj|r%tj|ndd6} di| d6} ttj| nd}} t|tt |dS(Nuapp.piduenvu:u PYTHONPATHiuexistsufileuu\assert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.check }(exists=%(py3)s, file=%(py4)s) }uTrueupy3upy2upid_pathupy0upy6upy4u5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }uintupidupy1u isinstanceiu>u%(py0)s > %(py3)suassert %(py5)supy5T(u>(u%(py0)s > %(py3)suassert %(py5)s(uensureujoinusysu executableuappu__file__ustruPopenupathuwaitusleepucheckuTrueu @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuopenuintureadustripu isinstanceu_call_reprcompareukilluSIGTERM( utmpdirupid_pathuargsu @py_assert1u @py_assert5u @py_format7upidufu @py_assert3u @py_format5u @py_assert2u @py_format4u @py_format6((u5/home/prologic/work/circuits/tests/app/test_daemon.pyutest#s8 )    l  utest(ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuPLATFORMuskipusysuosukillutimeusleepuerrnouESRCHusignaluSIGTERMu subprocessuPopenuuappu is_runninguwaitutest(((u5/home/prologic/work/circuits/tests/app/test_daemon.pyus    circuits-3.1.0/tests/app/__pycache__/__init__.cpython-32.pyc0000644000014400001440000000021512414363275024651 0ustar prologicusers00000000000000l Qc@sdS(N((((u2/home/prologic/work/circuits/tests/app/__init__.pyuscircuits-3.1.0/tests/app/__pycache__/test_daemon.cpython-32-PYTEST.pyc0000644000014400001440000000654212414363275026453 0ustar prologicusers00000000000000l ?Tc@sddlZddljjZddlZejdkrIejdnddl Z ddl m Z ddl m Z ddlmZddlmZddlmZd d lmZd Zd d ZdZdS(iNuwin32uUnsupported Platform(ukill(usleep(uESRCH(uSIGTERM(uPopeni(uappcCsPyt|dWn8tk rK}z|jtkr9dSWYdd}~XnXdS(NiFT(ukilluOSErroruerrnouESRCHuFalseuTrue(upiduerror((u5/home/prologic/work/circuits/tests/app/test_daemon.pyu is_runnings icCs-|}x t|r(|r(tdq WdS(Ni(u is_runningusleep(upidutimeoutucount((u5/home/prologic/work/circuits/tests/app/test_daemon.pyuwaitsc Cs~|jd|jd}tjtjt|g}t|didjtjd6j t d|j }|dddd}|sydd id t jkstjdrtjdnd d 6tj|d 6d t jkstj|rtj|nd d6tj|d6d t jksGtjdrVtjdnd d6}ttj|nd}}d}|j}t|jj}WdQXt|t}|sddidt jkstjtrtjtndd 6dt jks-tj|r<tj|ndd6dt jksdtjtrstjtndd6tj|d6} ttj| nd}d} || k}|sYtjd|fd|| fitj| d 6dt jkstj|r%tj|ndd6} di| d6} ttj| nd}} t|tt |dS(Nuapp.piduenvu:u PYTHONPATHiuexistsufileuu\assert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.check }(exists=%(py3)s, file=%(py4)s) }uTrueupy3upy2upid_pathupy0upy6upy4u5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }uintupidupy1u isinstanceiu>u%(py0)s > %(py3)suassert %(py5)supy5T(u>(u%(py0)s > %(py3)suassert %(py5)s(uensureujoinusysu executableuappu__file__ustruPopenupathuwaitusleepucheckuTrueu @py_builtinsulocalsu @pytest_aru_should_repr_global_nameu _saferepruAssertionErroru_format_explanationuNoneuopenuintureadustripu isinstanceu_call_reprcompareukilluSIGTERM( utmpdirupid_pathuargsu @py_assert1u @py_assert5u @py_format7upidufu @py_assert3u @py_format5u @py_assert2u @py_format4u @py_format6((u5/home/prologic/work/circuits/tests/app/test_daemon.pyutest#s8 )    l  (ubuiltinsu @py_builtinsu_pytest.assertion.rewriteu assertionurewriteu @pytest_arupytestuPLATFORMuskipusysuosukillutimeusleepuerrnouESRCHusignaluSIGTERMu subprocessuPopenuuappu is_runninguwaitutest(((u5/home/prologic/work/circuits/tests/app/test_daemon.pyus    circuits-3.1.0/tests/app/__pycache__/app.cpython-32.pyc0000644000014400001440000000313112414363275023672 0ustar prologicusers00000000000000l ?Tc @sddlmZddlmZyddlmZd ZWnek rTd ZYnXddl m Z ddl m Z Gdde Z dZed krend S( i(uargv(uabspath(ucoverage(u Component(uDaemoncBs |EeZdZdZdS(cKst||j|dS(N(uDaemonuregister(uselfupidfileukwargs((u-/home/prologic/work/circuits/tests/app/app.pyuinitscGsdS(N((uselfuargs((u-/home/prologic/work/circuits/tests/app/app.pyuprepare_unregistersN(u__name__u __module__uinituprepare_unregister(u __locals__((u-/home/prologic/work/circuits/tests/app/app.pyuApps  uAppcCsitr"tdd}|jnttd}t|}|jtre|j|j ndS(Nu data_suffixiT( u HAS_COVERAGEucoverageuTrueustartuabspathuargvuAppurunustopusave(u _coverageupidfileuapp((u-/home/prologic/work/circuits/tests/app/app.pyumains    u__main__NTF(usysuargvuos.pathuabspathucoverageuTrueu HAS_COVERAGEu ImportErroruFalseucircuitsu Componentu circuits.appuDaemonuAppumainu__name__(((u-/home/prologic/work/circuits/tests/app/app.pyus     circuits-3.1.0/tests/app/__pycache__/test_daemon.cpython-26-PYTEST.pyc0000644000014400001440000000632612407376150026454 0ustar prologicusers00000000000000 ?Tc @sddkZddkiiZddkZeidjoeidnddk Z ddk l Z ddk l Z ddklZddklZddklZd d klZd Zd d ZdZdS(iNtwin32sUnsupported Platform(tkill(tsleep(tESRCH(tSIGTERM(tPopeni(tappcCsByt|dWn*tj o}|itjotSnXtS(Ni(RtOSErrorterrnoRtFalsetTrue(tpidterror((s5/home/prologic/work/circuits/tests/app/test_daemon.pyt is_runnings  icCs0|}x#t|o|otdq WdS(Ni(R R(R ttimeouttcount((s5/home/prologic/work/circuits/tests/app/test_daemon.pytwaitsc Cs|id|id}titit|g}t|dhditid6i t d|i }|dt dt }|pdhd t ijpti|oti|nd d 6d t ijptit otit nd d 6ti|d 6d t ijptit otit nd d6ti|d6}tti|nd}}d}|iii}z%|~}t|ii}WdQXt|t} | pdhdt ijpti|oti|ndd6dt ijptitotitndd 6dt ijptitotitndd 6ti| d6} tti| nd} d} || j}|ptid|fd|| fhdt ijpti|oti|ndd 6ti| d 6} dh| d6} tti| nd}} t|tt |dS(Nsapp.pidtenvt:t PYTHONPATHitexiststfiles\assert %(py6)s {%(py6)s = %(py2)s {%(py2)s = %(py0)s.check }(exists=%(py3)s, file=%(py4)s) }tpid_pathtpy0R tpy3tpy2tpy4tpy6s5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }R tpy1t isinstancetintit>s%(py0)s > %(py3)ssassert %(py5)stpy5(R(s%(py0)s > %(py3)s(tensuretjointsyst executableRt__file__tstrRtpathRRtcheckR t @py_builtinstlocalst @pytest_art_should_repr_global_namet _safereprtAssertionErrort_format_explanationtNonetopent__exit__t __enter__RtreadtstripRt_call_reprcompareRR(ttmpdirRtargst @py_assert1t @py_assert5t @py_format7R t_[1]tft @py_assert3t @py_format5t @py_assert2t @py_format4t @py_format6((s5/home/prologic/work/circuits/tests/app/test_daemon.pyttest#s8 )   # o  (t __builtin__R)t_pytest.assertion.rewritet assertiontrewriteR+tpytesttPLATFORMtskipR#tosRttimeRRRtsignalRt subprocessRtRR RRC(((s5/home/prologic/work/circuits/tests/app/test_daemon.pyts    circuits-3.1.0/tests/app/__pycache__/app.cpython-34.pyc0000644000014400001440000000226312414363521023673 0ustar prologicusers00000000000000 ?T @sddlmZddlmZyddlmZdZWnek rTdZYnXddlmZddl m Z Gdd d eZ d d Z e d kre nd S))argv)abspath)coverageTF) Component)Daemonc@s(eZdZddZddZdS)AppcKst||j|dS)N)rregister)selfpidfilekwargsr -/home/prologic/work/circuits/tests/app/app.pyinitszApp.initcGsdS)Nr )r argsr r r prepare_unregisterszApp.prepare_unregisterN)__name__ __module__ __qualname__rrr r r r rs  rcCsitr"tdd}|jnttd}t|}|jtre|j|jndS)N data_suffixT) HAS_COVERAGErstartrrrrunstopsave)Z _coverager appr r r mains    r__main__N)sysrZos.pathrrr ImportErrorcircuitsrZ circuits.apprrrrr r r r s     circuits-3.1.0/tests/app/__pycache__/app.cpython-33.pyc0000644000014400001440000000327112414363410023667 0ustar prologicusers00000000000000 ?Tc @sddlmZddlmZyddlmZd ZWnek rTd ZYnXddl m Z ddl m Z Gddde Z dd Zed krend S(i(uargv(uabspath(ucoverage(u Component(uDaemoncBs,|EeZdZddZddZdS(uAppcKst||j|dS(N(uDaemonuregister(uselfupidfileukwargs((u-/home/prologic/work/circuits/tests/app/app.pyuinitsuApp.initcGsdS(N((uselfuargs((u-/home/prologic/work/circuits/tests/app/app.pyuprepare_unregistersuApp.prepare_unregisterN(u__name__u __module__u __qualname__uinituprepare_unregister(u __locals__((u-/home/prologic/work/circuits/tests/app/app.pyuApps uAppcCsitr"tdd}|jnttd}t|}|jtre|j|j ndS(Nu data_suffixiT( u HAS_COVERAGEucoverageuTrueustartuabspathuargvuAppurunustopusave(u _coverageupidfileuapp((u-/home/prologic/work/circuits/tests/app/app.pyumains    umainu__main__NTF(usysuargvuos.pathuabspathucoverageuTrueu HAS_COVERAGEu ImportErroruFalseucircuitsu Componentu circuits.appuDaemonuAppumainu__name__(((u-/home/prologic/work/circuits/tests/app/app.pyus     circuits-3.1.0/tests/app/test_daemon.py0000644000014400001440000000171112402037676021136 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest if pytest.PLATFORM == "win32": pytest.skip("Unsupported Platform") import sys from os import kill from time import sleep from errno import ESRCH from signal import SIGTERM from subprocess import Popen from . import app def is_running(pid): try: kill(pid, 0) except OSError as error: if error.errno == ESRCH: return False return True def wait(pid, timeout=3): count = timeout while is_running(pid) and count: sleep(1) def test(tmpdir): tmpdir.ensure("app.pid") pid_path = tmpdir.join("app.pid") args = [sys.executable, app.__file__, str(pid_path)] Popen(args, env={'PYTHONPATH': ':'.join(sys.path)}).wait() sleep(1) assert pid_path.check(exists=True, file=True) pid = None with pid_path.open() as f: pid = int(f.read().strip()) assert isinstance(pid, int) assert pid > 0 kill(pid, SIGTERM) wait(pid) circuits-3.1.0/tests/app/app.py0000644000014400001440000000130512402037676017413 0ustar prologicusers00000000000000#!/usr/bin/env python from sys import argv from os.path import abspath try: from coverage import coverage HAS_COVERAGE = True except ImportError: HAS_COVERAGE = False from circuits import Component from circuits.app import Daemon class App(Component): def init(self, pidfile, **kwargs): Daemon(pidfile, **kwargs).register(self) def prepare_unregister(self, *args): return def main(): if HAS_COVERAGE: _coverage = coverage(data_suffix=True) _coverage.start() pidfile = abspath(argv[1]) app = App(pidfile) app.run() if HAS_COVERAGE: _coverage.stop() _coverage.save() if __name__ == "__main__": main() circuits-3.1.0/tests/app/__init__.pyc0000644000014400001440000000021112420400435020513 0ustar prologicusers00000000000000 Qc@sdS(N((((s2/home/prologic/work/circuits/tests/app/__init__.pytscircuits-3.1.0/tests/conftest.py0000644000014400001440000000744312402037676017711 0ustar prologicusers00000000000000# Module: conftest # Date: 6th December 2010 # Author: James Mills, prologic at shortcircuit dot net dot au """py.test config""" import pytest import sys import threading import collections from time import sleep from collections import deque from circuits.core.manager import TIMEOUT from circuits import handler, BaseComponent, Debugger, Manager class Watcher(BaseComponent): def init(self): self._lock = threading.Lock() self.events = deque() @handler(channel="*", priority=999.9) def _on_event(self, event, *args, **kwargs): with self._lock: self.events.append(event) def clear(self): self.events.clear() def wait(self, name, channel=None, timeout=6.0): try: for i in range(int(timeout / TIMEOUT)): if channel is None: with self._lock: for event in self.events: if event.name == name: return True else: with self._lock: for event in self.events: if event.name == name and \ channel in event.channels: return True sleep(TIMEOUT) finally: pass #self.events.clear() class Flag(object): status = False def call_event_from_name(manager, event, event_name, *channels): fired = False value = None for r in manager.waitEvent(event_name): if not fired: fired = True value = manager.fire(event, *channels) sleep(0.1) return value def call_event(manager, event, *channels): return call_event_from_name(manager, event, event.name, *channels) class WaitEvent(object): def __init__(self, manager, name, channel=None, timeout=6.0): if channel is None: channel = getattr(manager, "channel", None) self.timeout = timeout self.manager = manager flag = Flag() @handler(name, channel=channel) def on_event(self, *args, **kwargs): flag.status = True self.handler = self.manager.addHandler(on_event) self.flag = flag def wait(self): try: for i in range(int(self.timeout / TIMEOUT)): if self.flag.status: return True sleep(TIMEOUT) finally: self.manager.removeHandler(self.handler) def wait_for(obj, attr, value=True, timeout=3.0): from circuits.core.manager import TIMEOUT for i in range(int(timeout / TIMEOUT)): if isinstance(value, collections.Callable): if value(obj, attr): return True elif getattr(obj, attr) == value: return True sleep(TIMEOUT) @pytest.fixture(scope="session") def manager(request): manager = Manager() def finalizer(): manager.stop() request.addfinalizer(finalizer) waiter = WaitEvent(manager, "started") manager.start() assert waiter.wait() if request.config.option.verbose: verbose = True else: verbose = False Debugger(events=verbose).register(manager) return manager @pytest.fixture def watcher(request, manager): watcher = Watcher().register(manager) def finalizer(): waiter = WaitEvent(manager, "unregistered") watcher.unregister() waiter.wait() request.addfinalizer(finalizer) return watcher def pytest_namespace(): return dict(( ("WaitEvent", WaitEvent), ("wait_for", wait_for), ("call_event", call_event), ("PLATFORM", sys.platform), ("PYVER", sys.version_info[:3]), ("call_event_from_name", call_event_from_name), )) circuits-3.1.0/tests/__init__.pyc0000644000014400001440000000025212420400435017740 0ustar prologicusers00000000000000 Qc@s dZdS(scircuits testsN(t__doc__(((s./home/prologic/work/circuits/tests/__init__.pytscircuits-3.1.0/Makefile0000644000014400001440000000207412402037676016003 0ustar prologicusers00000000000000.PHONY: help clean docs graph packages tests help: @echo "Please use \`make ' where is one of" @echo " clean to cleanup build and temporary files" @echo " docs to build the documentation" @echo " graph to generate dependency graph" @echo " packages to build python source and egg packages" @echo " tests to run the test suite" clean: @rm -rf build dist circuits.egg-info @rm -rf .coverage coverage @rm -rf docs/build @find . -name '__pycache__' -exec rm -rf {} + @find . -name '*.pyc' -delete @find . -name '*.pyo' -delete @find . -name '*~' -delete @rm -f *.xml docs: @make -C docs html graph: @sfood circuits -i -I tests -d -u 2> /dev/null | sfood-graph | dot -Tps | ps2pdf - > circuits.pdf release: @python2.6 setup.py clean bdist_egg upload @python2.7 setup.py clean bdist_egg upload @python3.2 setup.py clean bdist_egg upload @python3.3 setup.py clean bdist_egg upload @python setup.py clean build_sphinx upload_sphinx @python setup.py clean sdist --formats=bztar,gztar,zip upload tests: @python -m tests.main circuits-3.1.0/setup.py0000755000014400001440000000641012413657153016056 0ustar prologicusers00000000000000#!/usr/bin/env python from glob import glob from os import getcwd, path from imp import new_module from setuptools import setup, find_packages version = new_module("version") exec( compile( open( path.join( path.dirname( globals().get( "__file__", path.join(getcwd(), "circuits") ) ), "circuits/version.py" ), "r" ).read(), "circuits/version.py", "exec" ), version.__dict__ ) setup( name="circuits", version=version.version, description="Asynchronous Component based Event Application Framework", long_description=open("README.rst").read().replace( ".. include:: examples/index.rst", open("examples/index.rst", "r").read() ), author="James Mills", author_email="prologic@shortcircuit.net.au", url="http://circuitsframework.com/", download_url="http://bitbucket.org/circuits/circuits/downloads/", classifiers=[ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Environment :: No Input/Output (Daemon)", "Environment :: Other Environment", "Environment :: Plugins", "Environment :: Web Environment", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: Science/Research", "Intended Audience :: System Administrators", "Intended Audience :: Telecommunications Industry", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: POSIX :: BSD", "Operating System :: POSIX :: Linux", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Adaptive Technologies", "Topic :: Communications :: Chat :: Internet Relay Chat", "Topic :: Communications :: Email :: Mail Transport Agents", "Topic :: Database", "Topic :: Internet :: WWW/HTTP :: HTTP Servers", "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", "Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware", "Topic :: Internet :: WWW/HTTP :: WSGI :: Server", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Clustering", "Topic :: System :: Distributed Computing"], license="MIT", keywords="event framework distributed concurrent component asynchronous", platforms="POSIX", packages=find_packages("."), scripts=glob("bin/*"), install_requires=[], entry_points={ "console_scripts": [ "circuits.web=circuits.web.main:main", ] }, test_suite="tests.main.main", zip_safe=True ) circuits-3.1.0/README.rst0000644000014400001440000001012112425013540016007 0ustar prologicusers00000000000000.. _Python Programming Language: http://www.python.org/ .. _#circuits IRC Channel: http://webchat.freenode.net/?randomnick=1&channels=circuits&uio=d4 .. _FreeNode IRC Network: http://freenode.net .. _Python Standard Library: http://docs.python.org/library/ .. _MIT License: http://www.opensource.org/licenses/mit-license.php .. _Create an Issue: https://bitbucket.org/circuits/circuits/issue/new .. _Mailing List: http://groups.google.com/group/circuits-users .. _Project Website: http://circuitsframework.com/ .. _PyPi Page: http://pypi.python.org/pypi/circuits .. _Read the Docs: http://circuits.readthedocs.org/en/latest/ .. _View the ChangeLog: http://circuits.readthedocs.org/en/latest/changes.html .. _Downloads Page: https://bitbucket.org/circuits/circuits/downloads circuits is a **Lightweight** **Event** driven and **Asynchronous** **Application Framework** for the `Python Programming Language`_ with a strong **Component** Architecture. circuits also includes a lightweight, high performance and scalable HTTP/WSGI compliant web server as well as various I/O and Networking components. - Visit the `Project Website`_ - `Read the Docs`_ - Download it from the `Downloads Page`_ - `View the ChangeLog`_ .. image:: https://pypip.in/v/circuits/badge.png?text=version :target: https://pypi.python.org/pypi/circuits :alt: Latest Version .. image:: https://pypip.in/py_versions/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Supported Python Versions .. image:: https://pypip.in/implementation/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Supported Python implementations .. image:: https://pypip.in/status/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Development Status .. image:: https://pypip.in/d/circuits/badge.png :target: https://pypi.python.org/pypi/circuits :alt: Number of Downloads .. image:: https://pypip.in/format/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Format .. image:: https://pypip.in/license/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: License .. image:: https://requires.io/bitbucket/circuits/circuits/requirements.png?branch=default :target: https://requires.io/bitbucket/circuits/circuits/requirements?branch=default :alt: Requirements Status Examples -------- .. include:: examples/index.rst Features -------- - event driven - concurrency support - component architecture - asynchronous I/O components - no required external dependencies - full featured web framework (circuits.web) - coroutine based synchronization primitives Requirements ------------ - circuits has no dependencies beyond the `Python Standard Library`_. Supported Platforms ------------------- - Linux, FreeBSD, Mac OS X, Windows - Python 2.6, 2.7, 3.2, 3.3, 3.4 - pypy 2.0, 2.1, 2.2 Installation ------------ The simplest and recommended way to install circuits is with pip. You may install the latest stable release from PyPI with pip:: > pip install circuits If you do not have pip, you may use easy_install:: > easy_install circuits Alternatively, you may download the source package from the `PyPi Page`_ or the `Downloads Page`_ extract it and install using:: > python setup.py install .. note:: You can install the `development version `_ via ``pip install circuits==dev``. License ------- circuits is licensed under the `MIT License`_. Feedback -------- We welcome any questions or feedback about bugs and suggestions on how to improve circuits. Let us know what you think about circuits. `@pythoncircuits `_. Do you have suggestions for improvement? Then please `Create an Issue`_ with details of what you would like to see. I'll take a look at it and work with you to either incorporate the idea or find a better solution. Community --------- There is also a small community of circuits enthusiasts that you may find on the `#circuits IRC Channel`_ on the `FreeNode IRC Network`_ and the `Mailing List`_. circuits-3.1.0/bin/0000755000014400001440000000000012425013643015101 5ustar prologicusers00000000000000circuits-3.1.0/bin/circuits.bench0000755000014400001440000001210312402037676017736 0ustar prologicusers00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- """(Tool) Bench Marking Tool THis tool does some simple benchmaking of the circuits library. """ import sys import math import optparse from time import sleep if sys.platform == "win32": from time import clock as time else: from time import time # NOQA try: import hotshot import hotshot.stats except ImportError: hotshot = None # NOQA try: import psyco except ImportError: psyco = None # NOQA from circuits import __version__ as systemVersion from circuits import handler, Event, Component, Manager, Debugger USAGE = "%prog [options]" VERSION = "%prog v" + systemVersion def duration(seconds): days = int(seconds / 60 / 60 / 24) seconds = (seconds) % (60 * 60 * 24) hours = int((seconds / 60 / 60)) seconds = (seconds) % (60 * 60) mins = int((seconds / 60)) seconds = int((seconds) % (60)) return (days, hours, mins, seconds) def parse_options(): parser = optparse.OptionParser(usage=USAGE, version=VERSION) parser.add_option( "-t", "--time", action="store", type="int", default=0, dest="time", help="Stop after specified elapsed seconds" ) parser.add_option( "-e", "--events", action="store", type="int", default=0, dest="events", help="Stop after specified number of events" ) parser.add_option( "-p", "--profile", action="store_true", default=False, dest="profile", help="Enable execution profiling support" ) parser.add_option( "-d", "--debug", action="store_true", default=False, dest="debug", help="Enable debug mode" ) parser.add_option( "-m", "--mode", action="store", type="choice", default="speed", dest="mode", choices=["sync", "speed", "latency"], help="Operation mode" ) parser.add_option( "-s", "--speed", action="store_true", default=False, dest="speed", help="Enable psyco (circuits on speed!)" ) parser.add_option( "-q", "--quiet", action="store_false", default=True, dest="verbose", help="Suppress output" ) opts, args = parser.parse_args() return opts, args class stop(Event): """stop Event""" class term(Event): """term Event""" class hello(Event): """hello Event""" class received(Event): """received Event""" class Base(Component): def __init__(self, opts, *args, **kwargs): super(Base, self).__init__(*args, **kwargs) self.opts = opts class SpeedTest(Base): def received(self, message=""): self.fire(hello("hello")) def hello(self, message): self.fire(received(message)) class LatencyTest(Base): t = None def received(self, message=""): print("Latency: %0.9f us" % ((time() - self.t) * 1e6)) sleep(1) self.fire(hello("hello")) def hello(self, message=""): self.t = time() self.fire(received(message)) class State(Base): done = False def stop(self): self.fire(term()) def term(self): self.done = True class Monitor(Base): sTime = sys.maxsize events = 0 state = 0 @handler(filter=True) def event(self, *args, **kwargs): self.events += 1 if self.events > self.opts.events: self.stop() def main(): opts, args = parse_options() if opts.speed and psyco: psyco.full() manager = Manager() monitor = Monitor(opts) manager += monitor state = State(opts) manager += state if opts.debug: manager += Debugger() if opts.mode.lower() == "speed": if opts.verbose: print("Setting up Speed Test...") manager += SpeedTest(opts) monitor.sTime = time() elif opts.mode.lower() == "latency": if opts.verbose: print("Setting up Latency Test...") manager += LatencyTest(opts) monitor.sTime = time() if opts.verbose: print("Setting up Sender...") print("Setting up Receiver...") monitor.sTime = time() if opts.profile: if hotshot: profiler = hotshot.Profile("bench.prof") profiler.start() manager.fire(hello("hello")) while not state.done: try: manager.tick() if opts.events > 0 and monitor.events > opts.events: manager.fire(stop()) if opts.time > 0 and (time() - monitor.sTime) > opts.time: manager.fire(stop()) except KeyboardInterrupt: manager.fire(stop()) if opts.verbose: print() eTime = time() tTime = eTime - monitor.sTime events = monitor.events speed = int(math.ceil(float(monitor.events) / tTime)) print("Total Events: %d (%d/s after %0.2fs)" % (events, speed, tTime)) if opts.profile and hotshot: profiler.stop() profiler.close() stats = hotshot.stats.load("bench.prof") stats.strip_dirs() stats.sort_stats("time", "calls") stats.print_stats(20) if __name__ == "__main__": main() circuits-3.1.0/bin/htpasswd0000755000014400001440000001144012402037676016673 0ustar prologicusers00000000000000#!/usr/bin/env python """Pure Python replacement for Apache's htpasswd Borrowed from: https://gist.github.com/eculver/1420227 Modifications by James Mills, prologic at shortcircuit dot net dot au - Added support for MD5 and SHA1 hashing. """ # Original author: Eli Carter import os import sys import random from hashlib import md5, sha1 from optparse import OptionParser try: from crypt import crypt except ImportError: try: from fcrypt import crypt except ImportError: crypt = None def salt(): """Returns a string of 2 randome letters""" letters = 'abcdefghijklmnopqrstuvwxyz' \ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' \ '0123456789/.' return random.choice(letters) + random.choice(letters) class HtpasswdFile: """A class for manipulating htpasswd files.""" def __init__(self, filename, create=False, encryption=None): self.filename = filename if encryption is None: self.encryption = lambda p: md5(p).hexdigest() else: self.encryption = encryption self.entries = [] if not create: if os.path.exists(self.filename): self.load() else: raise Exception("%s does not exist" % self.filename) def load(self): """Read the htpasswd file into memory.""" lines = open(self.filename, 'r').readlines() self.entries = [] for line in lines: username, pwhash = line.split(':') entry = [username, pwhash.rstrip()] self.entries.append(entry) def save(self): """Write the htpasswd file to disk""" open(self.filename, 'w').writelines(["%s:%s\n" % (entry[0], entry[1]) for entry in self.entries]) def update(self, username, password): """Replace the entry for the given user, or add it if new.""" pwhash = self.encryption(password) matching_entries = [entry for entry in self.entries if entry[0] == username] if matching_entries: matching_entries[0][1] = pwhash else: self.entries.append([username, pwhash]) def delete(self, username): """Remove the entry for the given user.""" self.entries = [entry for entry in self.entries if entry[0] != username] def main(): """%prog [-c] -b filename username password Create or update an htpasswd file""" # For now, we only care about the use cases that affect tests/functional.py parser = OptionParser(usage=main.__doc__) parser.add_option('-b', action='store_true', dest='batch', default=False, help='Batch mode; password is passed on the command line IN THE CLEAR.' ) parser.add_option('-c', action='store_true', dest='create', default=False, help='Create a new htpasswd file, overwriting any existing file.') parser.add_option('-D', action='store_true', dest='delete_user', default=False, help='Remove the given user from the password file.') if crypt is not None: parser.add_option('-d', action='store_true', dest='crypt', default=False, help='Use crypt() encryption for passwords.') parser.add_option('-m', action='store_true', dest='md5', default=False, help='Use MD5 encryption for passwords. (Default)') parser.add_option('-s', action='store_true', dest='sha', default=False, help='Use SHA encryption for passwords.') options, args = parser.parse_args() def syntax_error(msg): """Utility function for displaying fatal error messages with usage help. """ sys.stderr.write("Syntax error: " + msg) sys.stderr.write(parser.get_usage()) sys.exit(1) if not options.batch: syntax_error("Only batch mode is supported\n") # Non-option arguments if len(args) < 2: syntax_error("Insufficient number of arguments.\n") filename, username = args[:2] if options.delete_user: if len(args) != 2: syntax_error("Incorrect number of arguments.\n") password = None else: if len(args) != 3: syntax_error("Incorrect number of arguments.\n") password = args[2] if options.crypt: encryption = lambda p: crypt(p, salt()) elif options.md5: encryption = lambda p: md5(p).hexdigest() elif options.sha: encryption = lambda p: sha1(p).hexdigest() else: encryption = lambda p: md5(p).hexdigest() passwdfile = HtpasswdFile( filename, create=options.create, encryption=encryption ) if options.delete_user: passwdfile.delete(username) else: passwdfile.update(username, password) passwdfile.save() if __name__ == '__main__': main() circuits-3.1.0/MANIFEST.in0000644000014400001440000000017312402037676016077 0ustar prologicusers00000000000000recursive-include docs * recursive-include tests * recursive-include examples * include LICENSE Makefile *.rst *.txt *.ini circuits-3.1.0/requirements.txt0000644000014400001440000000000212402037676017614 0ustar prologicusers00000000000000. circuits-3.1.0/PKG-INFO0000644000014400001440000002552512425013644015440 0ustar prologicusers00000000000000Metadata-Version: 1.1 Name: circuits Version: 3.1.0 Summary: Asynchronous Component based Event Application Framework Home-page: http://circuitsframework.com/ Author: James Mills Author-email: prologic@shortcircuit.net.au License: MIT Download-URL: http://bitbucket.org/circuits/circuits/downloads/ Description: .. _Python Programming Language: http://www.python.org/ .. _#circuits IRC Channel: http://webchat.freenode.net/?randomnick=1&channels=circuits&uio=d4 .. _FreeNode IRC Network: http://freenode.net .. _Python Standard Library: http://docs.python.org/library/ .. _MIT License: http://www.opensource.org/licenses/mit-license.php .. _Create an Issue: https://bitbucket.org/circuits/circuits/issue/new .. _Mailing List: http://groups.google.com/group/circuits-users .. _Project Website: http://circuitsframework.com/ .. _PyPi Page: http://pypi.python.org/pypi/circuits .. _Read the Docs: http://circuits.readthedocs.org/en/latest/ .. _View the ChangeLog: http://circuits.readthedocs.org/en/latest/changes.html .. _Downloads Page: https://bitbucket.org/circuits/circuits/downloads circuits is a **Lightweight** **Event** driven and **Asynchronous** **Application Framework** for the `Python Programming Language`_ with a strong **Component** Architecture. circuits also includes a lightweight, high performance and scalable HTTP/WSGI compliant web server as well as various I/O and Networking components. - Visit the `Project Website`_ - `Read the Docs`_ - Download it from the `Downloads Page`_ - `View the ChangeLog`_ .. image:: https://pypip.in/v/circuits/badge.png?text=version :target: https://pypi.python.org/pypi/circuits :alt: Latest Version .. image:: https://pypip.in/py_versions/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Supported Python Versions .. image:: https://pypip.in/implementation/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Supported Python implementations .. image:: https://pypip.in/status/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Development Status .. image:: https://pypip.in/d/circuits/badge.png :target: https://pypi.python.org/pypi/circuits :alt: Number of Downloads .. image:: https://pypip.in/format/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Format .. image:: https://pypip.in/license/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: License .. image:: https://requires.io/bitbucket/circuits/circuits/requirements.png?branch=default :target: https://requires.io/bitbucket/circuits/circuits/requirements?branch=default :alt: Requirements Status Examples -------- Hello ..... .. code:: python #!/usr/bin/env python """circuits Hello World""" from circuits import Component, Event class hello(Event): """hello Event""" class App(Component): def hello(self): """Hello Event Handler""" print("Hello World!") def started(self, component): """Started Event Handler This is fired internally when your application starts up and can be used to trigger events that only occur once during startup. """ self.fire(hello()) # Fire hello Event raise SystemExit(0) # Terminate the Application App().run() Echo Server ........... .. code:: python #!/usr/bin/env python """Simple TCP Echo Server This example shows how you can create a simple TCP Server (an Echo Service) utilizing the builtin Socket Components that the circuits library ships with. """ from circuits import handler, Debugger from circuits.net.sockets import TCPServer class EchoServer(TCPServer): @handler("read") def on_read(self, sock, data): """Read Event Handler This is fired by the underlying Socket Component when there has been new data read from the connected client. ..note :: By simply returning, client/server socket components listen to ValueChagned events (feedback) to determine if a handler returned some data and fires a subsequent Write event with the value returned. """ return data # Start and "run" the system. # Bind to port 0.0.0.0:9000 app = EchoServer(9000) Debugger().register(app) app.run() Hello Web ......... .. code:: python #!/usr/bin/env python from circuits.web import Server, Controller class Root(Controller): def index(self): """Index Request Handler Controller(s) expose implicitly methods as request handlers. Request Handlers can still be customized by using the ``@expose`` decorator. For example exposing as a different path. """ return "Hello World!" app = Server(("0.0.0.0", 9000)) Root().register(app) app.run() More `examples `_... Features -------- - event driven - concurrency support - component architecture - asynchronous I/O components - no required external dependencies - full featured web framework (circuits.web) - coroutine based synchronization primitives Requirements ------------ - circuits has no dependencies beyond the `Python Standard Library`_. Supported Platforms ------------------- - Linux, FreeBSD, Mac OS X, Windows - Python 2.6, 2.7, 3.2, 3.3, 3.4 - pypy 2.0, 2.1, 2.2 Installation ------------ The simplest and recommended way to install circuits is with pip. You may install the latest stable release from PyPI with pip:: > pip install circuits If you do not have pip, you may use easy_install:: > easy_install circuits Alternatively, you may download the source package from the `PyPi Page`_ or the `Downloads Page`_ extract it and install using:: > python setup.py install .. note:: You can install the `development version `_ via ``pip install circuits==dev``. License ------- circuits is licensed under the `MIT License`_. Feedback -------- We welcome any questions or feedback about bugs and suggestions on how to improve circuits. Let us know what you think about circuits. `@pythoncircuits `_. Do you have suggestions for improvement? Then please `Create an Issue`_ with details of what you would like to see. I'll take a look at it and work with you to either incorporate the idea or find a better solution. Community --------- There is also a small community of circuits enthusiasts that you may find on the `#circuits IRC Channel`_ on the `FreeNode IRC Network`_ and the `Mailing List`_. Keywords: event framework distributed concurrent component asynchronous Platform: POSIX Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Console Classifier: Environment :: No Input/Output (Daemon) Classifier: Environment :: Other Environment Classifier: Environment :: Plugins Classifier: Environment :: Web Environment Classifier: Intended Audience :: Developers Classifier: Intended Audience :: Information Technology Classifier: Intended Audience :: Science/Research Classifier: Intended Audience :: System Administrators Classifier: Intended Audience :: Telecommunications Industry Classifier: License :: OSI Approved :: MIT License Classifier: Natural Language :: English Classifier: Operating System :: POSIX :: BSD Classifier: Operating System :: POSIX :: Linux Classifier: Operating System :: MacOS :: MacOS X Classifier: Operating System :: Microsoft :: Windows Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3.1 Classifier: Programming Language :: Python :: 3.2 Classifier: Programming Language :: Python :: 3.3 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Adaptive Technologies Classifier: Topic :: Communications :: Chat :: Internet Relay Chat Classifier: Topic :: Communications :: Email :: Mail Transport Agents Classifier: Topic :: Database Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Server Classifier: Topic :: Software Development :: Libraries :: Application Frameworks Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: System :: Clustering Classifier: Topic :: System :: Distributed Computing circuits-3.1.0/circuits.egg-info/0000755000014400001440000000000012425013643017650 5ustar prologicusers00000000000000circuits-3.1.0/circuits.egg-info/top_level.txt0000644000014400001440000000002712425013643022401 0ustar prologicusers00000000000000circuits fabfile tests circuits-3.1.0/circuits.egg-info/zip-safe0000644000014400001440000000000112402040014021263 0ustar prologicusers00000000000000 circuits-3.1.0/circuits.egg-info/SOURCES.txt0000644000014400001440000017704312425013643021550 0ustar prologicusers00000000000000CHANGES.rst LICENSE MANIFEST.in Makefile README.rst requirements-dev.txt requirements.txt setup.cfg setup.py tox.ini bin/circuits.bench bin/htpasswd circuits/__init__.py circuits/six.py circuits/version.py circuits.egg-info/PKG-INFO circuits.egg-info/SOURCES.txt circuits.egg-info/dependency_links.txt circuits.egg-info/entry_points.txt circuits.egg-info/top_level.txt circuits.egg-info/zip-safe circuits/app/__init__.py circuits/app/daemon.py circuits/core/__init__.py circuits/core/bridge.py circuits/core/components.py circuits/core/debugger.py circuits/core/events.py circuits/core/handlers.py circuits/core/helpers.py circuits/core/loader.py circuits/core/manager.py circuits/core/pollers.py circuits/core/timers.py circuits/core/utils.py circuits/core/values.py circuits/core/workers.py circuits/io/__init__.py circuits/io/events.py circuits/io/file.py circuits/io/notify.py circuits/io/process.py circuits/io/serial.py circuits/net/__init__.py circuits/net/events.py circuits/net/sockets.py circuits/node/__init__.py circuits/node/client.py circuits/node/events.py circuits/node/node.py circuits/node/server.py circuits/node/utils.py circuits/protocols/__init__.py circuits/protocols/http.py circuits/protocols/line.py circuits/protocols/websocket.py circuits/protocols/irc/__init__.py circuits/protocols/irc/commands.py circuits/protocols/irc/events.py circuits/protocols/irc/message.py circuits/protocols/irc/numerics.py circuits/protocols/irc/protocol.py circuits/protocols/irc/replies.py circuits/protocols/irc/utils.py circuits/tools/__init__.py circuits/web/__init__.py circuits/web/_httpauth.py circuits/web/client.py circuits/web/constants.py circuits/web/controllers.py circuits/web/errors.py circuits/web/events.py circuits/web/exceptions.py circuits/web/headers.py circuits/web/http.py circuits/web/loggers.py circuits/web/main.py circuits/web/processors.py circuits/web/servers.py circuits/web/sessions.py circuits/web/tools.py circuits/web/url.py circuits/web/utils.py circuits/web/wrappers.py circuits/web/wsgi.py circuits/web/dispatchers/__init__.py circuits/web/dispatchers/dispatcher.py circuits/web/dispatchers/jsonrpc.py circuits/web/dispatchers/static.py circuits/web/dispatchers/virtualhosts.py circuits/web/dispatchers/xmlrpc.py circuits/web/parsers/__init__.py circuits/web/parsers/http.py circuits/web/parsers/multipart.py circuits/web/parsers/querystring.py circuits/web/websockets/__init__.py circuits/web/websockets/client.py circuits/web/websockets/dispatcher.py docs/.requirements.txt.un~ docs/Makefile docs/check_docs.py docs/circuits-docs.xml docs/logo.png docs/logo_small.png docs/make.bat docs/requirements.txt docs/build/doctrees/changes.doctree docs/build/doctrees/contributors.doctree docs/build/doctrees/environment.pickle docs/build/doctrees/faq.doctree docs/build/doctrees/glossary.doctree docs/build/doctrees/index.doctree docs/build/doctrees/readme.doctree docs/build/doctrees/roadmap.doctree docs/build/doctrees/todo.doctree docs/build/doctrees/api/circuits.app.daemon.doctree docs/build/doctrees/api/circuits.app.doctree docs/build/doctrees/api/circuits.core.bridge.doctree docs/build/doctrees/api/circuits.core.components.doctree docs/build/doctrees/api/circuits.core.debugger.doctree docs/build/doctrees/api/circuits.core.doctree docs/build/doctrees/api/circuits.core.events.doctree docs/build/doctrees/api/circuits.core.handlers.doctree docs/build/doctrees/api/circuits.core.helpers.doctree docs/build/doctrees/api/circuits.core.loader.doctree docs/build/doctrees/api/circuits.core.manager.doctree docs/build/doctrees/api/circuits.core.pollers.doctree docs/build/doctrees/api/circuits.core.timers.doctree docs/build/doctrees/api/circuits.core.utils.doctree docs/build/doctrees/api/circuits.core.values.doctree docs/build/doctrees/api/circuits.core.workers.doctree docs/build/doctrees/api/circuits.doctree docs/build/doctrees/api/circuits.io.doctree docs/build/doctrees/api/circuits.io.events.doctree docs/build/doctrees/api/circuits.io.file.doctree docs/build/doctrees/api/circuits.io.notify.doctree docs/build/doctrees/api/circuits.io.process.doctree docs/build/doctrees/api/circuits.io.serial.doctree docs/build/doctrees/api/circuits.net.doctree docs/build/doctrees/api/circuits.net.events.doctree docs/build/doctrees/api/circuits.net.sockets.doctree docs/build/doctrees/api/circuits.node.client.doctree docs/build/doctrees/api/circuits.node.doctree docs/build/doctrees/api/circuits.node.events.doctree docs/build/doctrees/api/circuits.node.node.doctree docs/build/doctrees/api/circuits.node.server.doctree docs/build/doctrees/api/circuits.node.utils.doctree docs/build/doctrees/api/circuits.protocols.doctree docs/build/doctrees/api/circuits.protocols.http.doctree docs/build/doctrees/api/circuits.protocols.irc.doctree docs/build/doctrees/api/circuits.protocols.line.doctree docs/build/doctrees/api/circuits.protocols.websocket.doctree docs/build/doctrees/api/circuits.six.doctree docs/build/doctrees/api/circuits.tools.doctree docs/build/doctrees/api/circuits.version.doctree docs/build/doctrees/api/circuits.web.client.doctree docs/build/doctrees/api/circuits.web.constants.doctree docs/build/doctrees/api/circuits.web.controllers.doctree docs/build/doctrees/api/circuits.web.dispatchers.dispatcher.doctree docs/build/doctrees/api/circuits.web.dispatchers.doctree docs/build/doctrees/api/circuits.web.dispatchers.jsonrpc.doctree docs/build/doctrees/api/circuits.web.dispatchers.static.doctree docs/build/doctrees/api/circuits.web.dispatchers.virtualhosts.doctree docs/build/doctrees/api/circuits.web.dispatchers.xmlrpc.doctree docs/build/doctrees/api/circuits.web.doctree docs/build/doctrees/api/circuits.web.errors.doctree docs/build/doctrees/api/circuits.web.events.doctree docs/build/doctrees/api/circuits.web.exceptions.doctree docs/build/doctrees/api/circuits.web.headers.doctree docs/build/doctrees/api/circuits.web.http.doctree docs/build/doctrees/api/circuits.web.loggers.doctree docs/build/doctrees/api/circuits.web.main.doctree docs/build/doctrees/api/circuits.web.parsers.doctree docs/build/doctrees/api/circuits.web.parsers.http.doctree docs/build/doctrees/api/circuits.web.parsers.multipart.doctree docs/build/doctrees/api/circuits.web.parsers.querystring.doctree docs/build/doctrees/api/circuits.web.processors.doctree docs/build/doctrees/api/circuits.web.servers.doctree docs/build/doctrees/api/circuits.web.sessions.doctree docs/build/doctrees/api/circuits.web.tools.doctree docs/build/doctrees/api/circuits.web.url.doctree docs/build/doctrees/api/circuits.web.utils.doctree docs/build/doctrees/api/circuits.web.websockets.client.doctree docs/build/doctrees/api/circuits.web.websockets.dispatcher.doctree docs/build/doctrees/api/circuits.web.websockets.doctree docs/build/doctrees/api/circuits.web.wrappers.doctree docs/build/doctrees/api/circuits.web.wsgi.doctree docs/build/doctrees/api/index.doctree docs/build/doctrees/dev/contributing.doctree docs/build/doctrees/dev/index.doctree docs/build/doctrees/dev/introduction.doctree docs/build/doctrees/dev/processes.doctree docs/build/doctrees/dev/standards.doctree docs/build/doctrees/examples/index.doctree docs/build/doctrees/man/components.doctree docs/build/doctrees/man/debugger.doctree docs/build/doctrees/man/events.doctree docs/build/doctrees/man/handlers.doctree docs/build/doctrees/man/index.doctree docs/build/doctrees/man/manager.doctree docs/build/doctrees/man/values.doctree docs/build/doctrees/man/misc/tools.doctree docs/build/doctrees/start/downloading.doctree docs/build/doctrees/start/index.doctree docs/build/doctrees/start/installing.doctree docs/build/doctrees/start/quick.doctree docs/build/doctrees/start/requirements.doctree docs/build/doctrees/tutorials/index.doctree docs/build/doctrees/tutorials/telnet/index.doctree docs/build/doctrees/tutorials/woof/index.doctree docs/build/doctrees/web/features.doctree docs/build/doctrees/web/gettingstarted.doctree docs/build/doctrees/web/howtos.doctree docs/build/doctrees/web/index.doctree docs/build/doctrees/web/introduction.doctree docs/build/doctrees/web/miscellaneous.doctree docs/build/html/.buildinfo docs/build/html/changes.html docs/build/html/contributors.html docs/build/html/faq.html docs/build/html/genindex.html docs/build/html/glossary.html docs/build/html/index.html docs/build/html/objects.inv docs/build/html/py-modindex.html docs/build/html/readme.html docs/build/html/roadmap.html docs/build/html/search.html docs/build/html/searchindex.js docs/build/html/todo.html docs/build/html/_downloads/001.py docs/build/html/_downloads/002.py docs/build/html/_downloads/003.py docs/build/html/_downloads/004.py docs/build/html/_downloads/005.py docs/build/html/_downloads/006.py docs/build/html/_downloads/007.py docs/build/html/_downloads/008.py docs/build/html/_downloads/009.py docs/build/html/_downloads/echoserver.py docs/build/html/_downloads/handler_annotation.py docs/build/html/_downloads/handler_returns.py docs/build/html/_downloads/hello.py docs/build/html/_downloads/helloweb.py docs/build/html/_downloads/telnet.py docs/build/html/_images/CircuitsWebServer.png docs/build/html/_images/Telnet.png docs/build/html/_images/graphviz-b83b24d47415abeb6163e2ff753b8a7fed644c3e.png docs/build/html/_images/graphviz-b83b24d47415abeb6163e2ff753b8a7fed644c3e.png.map docs/build/html/_images/graphviz-fa9bbccfbcc0c44bc0636e85a3c610dc406600cf.png docs/build/html/_images/graphviz-fa9bbccfbcc0c44bc0636e85a3c610dc406600cf.png.map docs/build/html/_sources/changes.txt docs/build/html/_sources/contributors.txt docs/build/html/_sources/faq.txt docs/build/html/_sources/glossary.txt docs/build/html/_sources/index.txt docs/build/html/_sources/readme.txt docs/build/html/_sources/roadmap.txt docs/build/html/_sources/todo.txt docs/build/html/_sources/api/circuits.app.daemon.txt docs/build/html/_sources/api/circuits.app.txt docs/build/html/_sources/api/circuits.core.bridge.txt docs/build/html/_sources/api/circuits.core.components.txt docs/build/html/_sources/api/circuits.core.debugger.txt docs/build/html/_sources/api/circuits.core.events.txt docs/build/html/_sources/api/circuits.core.handlers.txt docs/build/html/_sources/api/circuits.core.helpers.txt docs/build/html/_sources/api/circuits.core.loader.txt docs/build/html/_sources/api/circuits.core.manager.txt docs/build/html/_sources/api/circuits.core.pollers.txt docs/build/html/_sources/api/circuits.core.timers.txt docs/build/html/_sources/api/circuits.core.txt docs/build/html/_sources/api/circuits.core.utils.txt docs/build/html/_sources/api/circuits.core.values.txt docs/build/html/_sources/api/circuits.core.workers.txt docs/build/html/_sources/api/circuits.io.events.txt docs/build/html/_sources/api/circuits.io.file.txt docs/build/html/_sources/api/circuits.io.notify.txt docs/build/html/_sources/api/circuits.io.process.txt docs/build/html/_sources/api/circuits.io.serial.txt docs/build/html/_sources/api/circuits.io.txt docs/build/html/_sources/api/circuits.net.events.txt docs/build/html/_sources/api/circuits.net.sockets.txt docs/build/html/_sources/api/circuits.net.txt docs/build/html/_sources/api/circuits.node.client.txt docs/build/html/_sources/api/circuits.node.events.txt docs/build/html/_sources/api/circuits.node.node.txt docs/build/html/_sources/api/circuits.node.server.txt docs/build/html/_sources/api/circuits.node.txt docs/build/html/_sources/api/circuits.node.utils.txt docs/build/html/_sources/api/circuits.protocols.http.txt docs/build/html/_sources/api/circuits.protocols.irc.txt docs/build/html/_sources/api/circuits.protocols.line.txt docs/build/html/_sources/api/circuits.protocols.txt docs/build/html/_sources/api/circuits.protocols.websocket.txt docs/build/html/_sources/api/circuits.six.txt docs/build/html/_sources/api/circuits.tools.txt docs/build/html/_sources/api/circuits.txt docs/build/html/_sources/api/circuits.version.txt docs/build/html/_sources/api/circuits.web.client.txt docs/build/html/_sources/api/circuits.web.constants.txt docs/build/html/_sources/api/circuits.web.controllers.txt docs/build/html/_sources/api/circuits.web.dispatchers.dispatcher.txt docs/build/html/_sources/api/circuits.web.dispatchers.jsonrpc.txt docs/build/html/_sources/api/circuits.web.dispatchers.static.txt docs/build/html/_sources/api/circuits.web.dispatchers.txt docs/build/html/_sources/api/circuits.web.dispatchers.virtualhosts.txt docs/build/html/_sources/api/circuits.web.dispatchers.xmlrpc.txt docs/build/html/_sources/api/circuits.web.errors.txt docs/build/html/_sources/api/circuits.web.events.txt docs/build/html/_sources/api/circuits.web.exceptions.txt docs/build/html/_sources/api/circuits.web.headers.txt docs/build/html/_sources/api/circuits.web.http.txt docs/build/html/_sources/api/circuits.web.loggers.txt docs/build/html/_sources/api/circuits.web.main.txt docs/build/html/_sources/api/circuits.web.parsers.http.txt docs/build/html/_sources/api/circuits.web.parsers.multipart.txt docs/build/html/_sources/api/circuits.web.parsers.querystring.txt docs/build/html/_sources/api/circuits.web.parsers.txt docs/build/html/_sources/api/circuits.web.processors.txt docs/build/html/_sources/api/circuits.web.servers.txt docs/build/html/_sources/api/circuits.web.sessions.txt docs/build/html/_sources/api/circuits.web.tools.txt docs/build/html/_sources/api/circuits.web.txt docs/build/html/_sources/api/circuits.web.url.txt docs/build/html/_sources/api/circuits.web.utils.txt docs/build/html/_sources/api/circuits.web.websockets.client.txt docs/build/html/_sources/api/circuits.web.websockets.dispatcher.txt docs/build/html/_sources/api/circuits.web.websockets.txt docs/build/html/_sources/api/circuits.web.wrappers.txt docs/build/html/_sources/api/circuits.web.wsgi.txt docs/build/html/_sources/api/index.txt docs/build/html/_sources/dev/contributing.txt docs/build/html/_sources/dev/index.txt docs/build/html/_sources/dev/introduction.txt docs/build/html/_sources/dev/processes.txt docs/build/html/_sources/dev/standards.txt docs/build/html/_sources/examples/index.txt docs/build/html/_sources/man/components.txt docs/build/html/_sources/man/debugger.txt docs/build/html/_sources/man/events.txt docs/build/html/_sources/man/handlers.txt docs/build/html/_sources/man/index.txt docs/build/html/_sources/man/manager.txt docs/build/html/_sources/man/values.txt docs/build/html/_sources/man/misc/tools.txt docs/build/html/_sources/start/downloading.txt docs/build/html/_sources/start/index.txt docs/build/html/_sources/start/installing.txt docs/build/html/_sources/start/quick.txt docs/build/html/_sources/start/requirements.txt docs/build/html/_sources/tutorials/index.txt docs/build/html/_sources/tutorials/telnet/index.txt docs/build/html/_sources/tutorials/woof/index.txt docs/build/html/_sources/web/features.txt docs/build/html/_sources/web/gettingstarted.txt docs/build/html/_sources/web/howtos.txt docs/build/html/_sources/web/index.txt docs/build/html/_sources/web/introduction.txt docs/build/html/_sources/web/miscellaneous.txt docs/build/html/_static/ajax-loader.gif docs/build/html/_static/basic.css docs/build/html/_static/comment-bright.png docs/build/html/_static/comment-close.png docs/build/html/_static/comment.png docs/build/html/_static/default.css docs/build/html/_static/doctools.js docs/build/html/_static/down-pressed.png docs/build/html/_static/down.png docs/build/html/_static/file.png docs/build/html/_static/jquery.js docs/build/html/_static/logo.png docs/build/html/_static/minus.png docs/build/html/_static/plus.png docs/build/html/_static/pygments.css docs/build/html/_static/rtd.css docs/build/html/_static/searchtools.js docs/build/html/_static/sidebar.js docs/build/html/_static/tracsphinx.css docs/build/html/_static/underscore.js docs/build/html/_static/up-pressed.png docs/build/html/_static/up.png docs/build/html/_static/websupport.js docs/build/html/api/circuits.app.daemon.html docs/build/html/api/circuits.app.html docs/build/html/api/circuits.core.bridge.html docs/build/html/api/circuits.core.components.html docs/build/html/api/circuits.core.debugger.html docs/build/html/api/circuits.core.events.html docs/build/html/api/circuits.core.handlers.html docs/build/html/api/circuits.core.helpers.html docs/build/html/api/circuits.core.html docs/build/html/api/circuits.core.loader.html docs/build/html/api/circuits.core.manager.html docs/build/html/api/circuits.core.pollers.html docs/build/html/api/circuits.core.timers.html docs/build/html/api/circuits.core.utils.html docs/build/html/api/circuits.core.values.html docs/build/html/api/circuits.core.workers.html docs/build/html/api/circuits.html docs/build/html/api/circuits.io.events.html docs/build/html/api/circuits.io.file.html docs/build/html/api/circuits.io.html docs/build/html/api/circuits.io.notify.html docs/build/html/api/circuits.io.process.html docs/build/html/api/circuits.io.serial.html docs/build/html/api/circuits.net.events.html docs/build/html/api/circuits.net.html docs/build/html/api/circuits.net.sockets.html docs/build/html/api/circuits.node.client.html docs/build/html/api/circuits.node.events.html docs/build/html/api/circuits.node.html docs/build/html/api/circuits.node.node.html docs/build/html/api/circuits.node.server.html docs/build/html/api/circuits.node.utils.html docs/build/html/api/circuits.protocols.html docs/build/html/api/circuits.protocols.http.html docs/build/html/api/circuits.protocols.irc.html docs/build/html/api/circuits.protocols.line.html docs/build/html/api/circuits.protocols.websocket.html docs/build/html/api/circuits.six.html docs/build/html/api/circuits.tools.html docs/build/html/api/circuits.version.html docs/build/html/api/circuits.web.client.html docs/build/html/api/circuits.web.constants.html docs/build/html/api/circuits.web.controllers.html docs/build/html/api/circuits.web.dispatchers.dispatcher.html docs/build/html/api/circuits.web.dispatchers.html docs/build/html/api/circuits.web.dispatchers.jsonrpc.html docs/build/html/api/circuits.web.dispatchers.static.html docs/build/html/api/circuits.web.dispatchers.virtualhosts.html docs/build/html/api/circuits.web.dispatchers.xmlrpc.html docs/build/html/api/circuits.web.errors.html docs/build/html/api/circuits.web.events.html docs/build/html/api/circuits.web.exceptions.html docs/build/html/api/circuits.web.headers.html docs/build/html/api/circuits.web.html docs/build/html/api/circuits.web.http.html docs/build/html/api/circuits.web.loggers.html docs/build/html/api/circuits.web.main.html docs/build/html/api/circuits.web.parsers.html docs/build/html/api/circuits.web.parsers.http.html docs/build/html/api/circuits.web.parsers.multipart.html docs/build/html/api/circuits.web.parsers.querystring.html docs/build/html/api/circuits.web.processors.html docs/build/html/api/circuits.web.servers.html docs/build/html/api/circuits.web.sessions.html docs/build/html/api/circuits.web.tools.html docs/build/html/api/circuits.web.url.html docs/build/html/api/circuits.web.utils.html docs/build/html/api/circuits.web.websockets.client.html docs/build/html/api/circuits.web.websockets.dispatcher.html docs/build/html/api/circuits.web.websockets.html docs/build/html/api/circuits.web.wrappers.html docs/build/html/api/circuits.web.wsgi.html docs/build/html/api/index.html docs/build/html/dev/contributing.html docs/build/html/dev/index.html docs/build/html/dev/introduction.html docs/build/html/dev/processes.html docs/build/html/dev/standards.html docs/build/html/examples/index.html docs/build/html/man/components.html docs/build/html/man/debugger.html docs/build/html/man/events.html docs/build/html/man/handlers.html docs/build/html/man/index.html docs/build/html/man/manager.html docs/build/html/man/values.html docs/build/html/man/misc/tools.html docs/build/html/start/downloading.html docs/build/html/start/index.html docs/build/html/start/installing.html docs/build/html/start/quick.html docs/build/html/start/requirements.html docs/build/html/tutorials/index.html docs/build/html/tutorials/telnet/index.html docs/build/html/tutorials/woof/index.html docs/build/html/web/features.html docs/build/html/web/gettingstarted.html docs/build/html/web/howtos.html docs/build/html/web/index.html docs/build/html/web/introduction.html docs/build/html/web/miscellaneous.html docs/source/.conf.py.un~ docs/source/changes.rst docs/source/conf.py docs/source/contributors.rst docs/source/faq.rst docs/source/glossary.rst docs/source/index.rst docs/source/readme.rst docs/source/roadmap.rst docs/source/todo.rst docs/source/_static/logo.png docs/source/_static/rtd.css docs/source/_static/tracsphinx.css docs/source/_templates/layout.html docs/source/_themes/om/genindex.html docs/source/_themes/om/layout.html docs/source/_themes/om/modindex.html docs/source/_themes/om/search.html docs/source/_themes/om/theme.conf docs/source/_themes/om/static/default.css docs/source/_themes/om/static/djangodocs.css docs/source/_themes/om/static/docicons-behindscenes.png docs/source/_themes/om/static/docicons-note.png docs/source/_themes/om/static/docicons-philosophy.png docs/source/_themes/om/static/homepage.css docs/source/_themes/om/static/reset-fonts-grids.css docs/source/api/circuits.app.daemon.rst docs/source/api/circuits.app.rst docs/source/api/circuits.core.bridge.rst docs/source/api/circuits.core.components.rst docs/source/api/circuits.core.debugger.rst docs/source/api/circuits.core.events.rst docs/source/api/circuits.core.handlers.rst docs/source/api/circuits.core.helpers.rst docs/source/api/circuits.core.loader.rst docs/source/api/circuits.core.manager.rst docs/source/api/circuits.core.pollers.rst docs/source/api/circuits.core.rst docs/source/api/circuits.core.timers.rst docs/source/api/circuits.core.utils.rst docs/source/api/circuits.core.values.rst docs/source/api/circuits.core.workers.rst docs/source/api/circuits.io.events.rst docs/source/api/circuits.io.file.rst docs/source/api/circuits.io.notify.rst docs/source/api/circuits.io.process.rst docs/source/api/circuits.io.rst docs/source/api/circuits.io.serial.rst docs/source/api/circuits.net.events.rst docs/source/api/circuits.net.rst docs/source/api/circuits.net.sockets.rst docs/source/api/circuits.node.client.rst docs/source/api/circuits.node.events.rst docs/source/api/circuits.node.node.rst docs/source/api/circuits.node.rst docs/source/api/circuits.node.server.rst docs/source/api/circuits.node.utils.rst docs/source/api/circuits.protocols.http.rst docs/source/api/circuits.protocols.irc.rst docs/source/api/circuits.protocols.line.rst docs/source/api/circuits.protocols.rst docs/source/api/circuits.protocols.websocket.rst docs/source/api/circuits.rst docs/source/api/circuits.six.rst docs/source/api/circuits.tools.rst docs/source/api/circuits.version.rst docs/source/api/circuits.web.client.rst docs/source/api/circuits.web.constants.rst docs/source/api/circuits.web.controllers.rst docs/source/api/circuits.web.dispatchers.dispatcher.rst docs/source/api/circuits.web.dispatchers.jsonrpc.rst docs/source/api/circuits.web.dispatchers.rst docs/source/api/circuits.web.dispatchers.static.rst docs/source/api/circuits.web.dispatchers.virtualhosts.rst docs/source/api/circuits.web.dispatchers.xmlrpc.rst docs/source/api/circuits.web.errors.rst docs/source/api/circuits.web.events.rst docs/source/api/circuits.web.exceptions.rst docs/source/api/circuits.web.headers.rst docs/source/api/circuits.web.http.rst docs/source/api/circuits.web.loggers.rst docs/source/api/circuits.web.main.rst docs/source/api/circuits.web.parsers.http.rst docs/source/api/circuits.web.parsers.multipart.rst docs/source/api/circuits.web.parsers.querystring.rst docs/source/api/circuits.web.parsers.rst docs/source/api/circuits.web.processors.rst docs/source/api/circuits.web.rst docs/source/api/circuits.web.servers.rst docs/source/api/circuits.web.sessions.rst docs/source/api/circuits.web.tools.rst docs/source/api/circuits.web.url.rst docs/source/api/circuits.web.utils.rst docs/source/api/circuits.web.websockets.client.rst docs/source/api/circuits.web.websockets.dispatcher.rst docs/source/api/circuits.web.websockets.rst docs/source/api/circuits.web.wrappers.rst docs/source/api/circuits.web.wsgi.rst docs/source/api/index.rst docs/source/dev/contributing.rst docs/source/dev/index.rst docs/source/dev/introduction.rst docs/source/dev/processes.rst docs/source/dev/standards.rst docs/source/examples/.echoserver.py.un~ docs/source/examples/.helloweb.py.un~ docs/source/examples/echoserver.py docs/source/examples/hello.py docs/source/examples/helloweb.py docs/source/examples/index.rst docs/source/images/CircuitsWebServer.png docs/source/man/components.rst docs/source/man/debugger.rst docs/source/man/events.rst docs/source/man/handlers.rst docs/source/man/index.rst docs/source/man/manager.rst docs/source/man/values.rst docs/source/man/examples/Telnet.dot docs/source/man/examples/Telnet.png docs/source/man/examples/handler_annotation.py docs/source/man/examples/handler_returns.py docs/source/man/misc/tools.rst docs/source/start/downloading.rst docs/source/start/index.rst docs/source/start/installing.rst docs/source/start/quick.rst docs/source/start/requirements.rst docs/source/tutorials/index.rst docs/source/tutorials/telnet/Telnet.dot docs/source/tutorials/telnet/index.rst docs/source/tutorials/telnet/index.rst.bak docs/source/tutorials/telnet/telnet.py docs/source/tutorials/woof/.007.py.un~ docs/source/tutorials/woof/001.py docs/source/tutorials/woof/002.py docs/source/tutorials/woof/003.py docs/source/tutorials/woof/004.py docs/source/tutorials/woof/005.py docs/source/tutorials/woof/006.py docs/source/tutorials/woof/007.py docs/source/tutorials/woof/008.py docs/source/tutorials/woof/009.py docs/source/tutorials/woof/index.rst docs/source/web/features.rst docs/source/web/gettingstarted.rst docs/source/web/howtos.rst docs/source/web/index.rst docs/source/web/introduction.rst docs/source/web/miscellaneous.rst examples/.wget.py.un~ examples/99bottles.py examples/cat.py examples/chatserver.py examples/circ.py examples/dirwatch.py examples/dnsclient.py examples/dnsserver.py examples/echoserial.py examples/echoserver.py examples/echoserverunix.py examples/factorial.py examples/filter.py examples/hello.py examples/hello_bridge.py examples/index.rst examples/ircbot.py examples/ircclient.py examples/ircd.py examples/ping.py examples/portforward.py examples/proxy.py examples/signals.py examples/tail.py examples/telnet.py examples/timers.py examples/wget.py examples/node/hello_node.py examples/node/nodeserver.py examples/node/increment/client.py examples/node/increment/server.py examples/primitives/call.py examples/primitives/fire.py examples/primitives/wait.py examples/testing/pytest/README.rst examples/testing/pytest/conftest.py examples/testing/pytest/hello.py examples/testing/pytest/test_hello.py examples/web/acldemo.py examples/web/authdemo.py examples/web/basecontrollers.py examples/web/baseservers.py examples/web/ca-chain.pem examples/web/cert.pem examples/web/controllers.py examples/web/crud.py examples/web/fileupload.py examples/web/filtering.py examples/web/forms.py examples/web/httpauth.py examples/web/jsoncontroller.py examples/web/jsonrpc.py examples/web/jsonserializer.py examples/web/jsontool.py examples/web/makotemplates.py examples/web/server-cert.pem examples/web/server-key.pem examples/web/sessions.py examples/web/shadowauth.py examples/web/singleclickandrun.py examples/web/ssl-forward-cert.py examples/web/sslserver.py examples/web/virtualhosts.py examples/web/websocket.html examples/web/websockets.py examples/web/wiki.zip examples/web/wsgi.py examples/web/wsgiapp.py examples/web/xmlrpc_demo.py examples/web/static/css/base.css examples/web/static/img/rss.gif examples/web/static/img/valid-xhtml10.png examples/web/static/img/vcss.gif examples/web/terminal/terminal.py examples/web/terminal/static/favicon.ico examples/web/terminal/static/index.xhtml examples/web/terminal/static/css/base.css examples/web/terminal/static/js/jquery.js examples/web/terminal/static/js/jquery.terminal.js examples/web/terminal/static/js/main.js examples/web/tpl/base.html examples/web/tpl/index.html examples/web/wiki/wiki.py examples/web/wiki/defaultpages/BulletList examples/web/wiki/defaultpages/CheatSheet examples/web/wiki/defaultpages/DefinitionList examples/web/wiki/defaultpages/FrontPage examples/web/wiki/defaultpages/HeadingsPage examples/web/wiki/defaultpages/HorizontalLine examples/web/wiki/defaultpages/Indented examples/web/wiki/defaultpages/Macros examples/web/wiki/defaultpages/MixedList examples/web/wiki/defaultpages/NoLineBreak examples/web/wiki/defaultpages/NumberedList examples/web/wiki/defaultpages/RenderedPre examples/web/wiki/defaultpages/RenderedTable examples/web/wiki/defaultpages/SandBox examples/web/wiki/defaultpages/SiteMenu examples/web/wiki/macros/__init__.py examples/web/wiki/macros/html.py examples/web/wiki/macros/include.py examples/web/wiki/macros/utils.py examples/web/wiki/macros/wiki.py examples/web/wiki/static/Image.jpg examples/web/wiki/static/favicon.ico examples/web/wiki/static/css/pygments.css examples/web/wiki/static/css/screen.css examples/web/wiki/static/images/header_bg.png examples/web/wiki/tpl/edit.html examples/web/wiki/tpl/view.html fabfile/__init__.py fabfile/docker.py fabfile/docs.py fabfile/help.py fabfile/utils.py tests/__init__.py tests/__init__.pyc tests/conftest.py tests/conftest.pyc tests/main.py tests/main.pyc tests/__pycache__/__init__.cpython-32.pyc tests/__pycache__/__init__.cpython-33.pyc tests/__pycache__/__init__.cpython-34.pyc tests/__pycache__/conftest.cpython-32.pyc tests/__pycache__/conftest.cpython-33.pyc tests/__pycache__/conftest.cpython-34.pyc tests/app/__init__.py tests/app/__init__.pyc tests/app/app.py tests/app/app.pyc tests/app/test_daemon.py tests/app/__pycache__/__init__.cpython-32.pyc tests/app/__pycache__/__init__.cpython-33.pyc tests/app/__pycache__/__init__.cpython-34.pyc tests/app/__pycache__/app.cpython-32.pyc tests/app/__pycache__/app.cpython-33.pyc tests/app/__pycache__/app.cpython-34.pyc tests/app/__pycache__/test_daemon.cpython-26-PYTEST.pyc tests/app/__pycache__/test_daemon.cpython-27-PYTEST.pyc tests/app/__pycache__/test_daemon.cpython-32-PYTEST.pyc tests/app/__pycache__/test_daemon.cpython-33-PYTEST.pyc tests/app/__pycache__/test_daemon.cpython-34-PYTEST.pyc tests/core/.test_bridge.py.un~ tests/core/__init__.py tests/core/__init__.pyc tests/core/app.py tests/core/app.pyc tests/core/signalapp.py tests/core/signalapp.pyc tests/core/test_bridge.py tests/core/test_call_wait.py tests/core/test_call_wait_order.py tests/core/test_call_wait_timeout.py tests/core/test_channel_selection.py tests/core/test_complete.py tests/core/test_component_repr.py tests/core/test_component_setup.py tests/core/test_component_targeting.py tests/core/test_core.py tests/core/test_debugger.py tests/core/test_dynamic_handlers.py tests/core/test_errors.py tests/core/test_event.py tests/core/test_event_priority.py tests/core/test_feedback.py tests/core/test_filters.py tests/core/test_generate_events.py tests/core/test_generator_value.py tests/core/test_globals.py tests/core/test_imports.py tests/core/test_inheritence.py tests/core/test_interface_query.py tests/core/test_loader.py tests/core/test_manager_repr.py tests/core/test_new_filter.py tests/core/test_priority.py tests/core/test_signals.py tests/core/test_timers.py tests/core/test_utils.py tests/core/test_value.py tests/core/test_worker_process.py tests/core/test_worker_thread.py tests/core/__pycache__/__init__.cpython-32.pyc tests/core/__pycache__/__init__.cpython-33.pyc tests/core/__pycache__/__init__.cpython-34.pyc tests/core/__pycache__/app.cpython-32.pyc tests/core/__pycache__/app.cpython-33.pyc tests/core/__pycache__/app.cpython-34.pyc tests/core/__pycache__/signalapp.cpython-32.pyc tests/core/__pycache__/signalapp.cpython-33.pyc tests/core/__pycache__/signalapp.cpython-34.pyc tests/core/__pycache__/test_bridge.cpython-26-PYTEST.pyc tests/core/__pycache__/test_bridge.cpython-27-PYTEST.pyc tests/core/__pycache__/test_bridge.cpython-32-PYTEST.pyc tests/core/__pycache__/test_bridge.cpython-33-PYTEST.pyc tests/core/__pycache__/test_bridge.cpython-34-PYTEST.pyc tests/core/__pycache__/test_call_wait.cpython-26-PYTEST.pyc tests/core/__pycache__/test_call_wait.cpython-27-PYTEST.pyc tests/core/__pycache__/test_call_wait.cpython-32-PYTEST.pyc tests/core/__pycache__/test_call_wait.cpython-33-PYTEST.pyc tests/core/__pycache__/test_call_wait.cpython-34-PYTEST.pyc tests/core/__pycache__/test_call_wait_order.cpython-26-PYTEST.pyc tests/core/__pycache__/test_call_wait_order.cpython-27-PYTEST.pyc tests/core/__pycache__/test_call_wait_order.cpython-32-PYTEST.pyc tests/core/__pycache__/test_call_wait_order.cpython-33-PYTEST.pyc tests/core/__pycache__/test_call_wait_order.cpython-34-PYTEST.pyc tests/core/__pycache__/test_call_wait_timeout.cpython-26-PYTEST.pyc tests/core/__pycache__/test_call_wait_timeout.cpython-27-PYTEST.pyc tests/core/__pycache__/test_call_wait_timeout.cpython-32-PYTEST.pyc tests/core/__pycache__/test_call_wait_timeout.cpython-33-PYTEST.pyc tests/core/__pycache__/test_call_wait_timeout.cpython-34-PYTEST.pyc tests/core/__pycache__/test_channel_selection.cpython-26-PYTEST.pyc tests/core/__pycache__/test_channel_selection.cpython-27-PYTEST.pyc tests/core/__pycache__/test_channel_selection.cpython-32-PYTEST.pyc tests/core/__pycache__/test_channel_selection.cpython-33-PYTEST.pyc tests/core/__pycache__/test_channel_selection.cpython-34-PYTEST.pyc tests/core/__pycache__/test_complete.cpython-26-PYTEST.pyc tests/core/__pycache__/test_complete.cpython-27-PYTEST.pyc tests/core/__pycache__/test_complete.cpython-32-PYTEST.pyc tests/core/__pycache__/test_complete.cpython-33-PYTEST.pyc tests/core/__pycache__/test_complete.cpython-34-PYTEST.pyc tests/core/__pycache__/test_component_repr.cpython-26-PYTEST.pyc tests/core/__pycache__/test_component_repr.cpython-27-PYTEST.pyc tests/core/__pycache__/test_component_repr.cpython-32-PYTEST.pyc tests/core/__pycache__/test_component_repr.cpython-33-PYTEST.pyc tests/core/__pycache__/test_component_repr.cpython-34-PYTEST.pyc tests/core/__pycache__/test_component_setup.cpython-26-PYTEST.pyc tests/core/__pycache__/test_component_setup.cpython-27-PYTEST.pyc tests/core/__pycache__/test_component_setup.cpython-32-PYTEST.pyc tests/core/__pycache__/test_component_setup.cpython-33-PYTEST.pyc tests/core/__pycache__/test_component_setup.cpython-34-PYTEST.pyc tests/core/__pycache__/test_component_targeting.cpython-26-PYTEST.pyc tests/core/__pycache__/test_component_targeting.cpython-27-PYTEST.pyc tests/core/__pycache__/test_component_targeting.cpython-32-PYTEST.pyc tests/core/__pycache__/test_component_targeting.cpython-33-PYTEST.pyc tests/core/__pycache__/test_component_targeting.cpython-34-PYTEST.pyc tests/core/__pycache__/test_core.cpython-26-PYTEST.pyc tests/core/__pycache__/test_core.cpython-27-PYTEST.pyc tests/core/__pycache__/test_core.cpython-32-PYTEST.pyc tests/core/__pycache__/test_core.cpython-33-PYTEST.pyc tests/core/__pycache__/test_core.cpython-34-PYTEST.pyc tests/core/__pycache__/test_debugger.cpython-26-PYTEST.pyc tests/core/__pycache__/test_debugger.cpython-27-PYTEST.pyc tests/core/__pycache__/test_debugger.cpython-32-PYTEST.pyc tests/core/__pycache__/test_debugger.cpython-33-PYTEST.pyc tests/core/__pycache__/test_debugger.cpython-34-PYTEST.pyc tests/core/__pycache__/test_dynamic_handlers.cpython-26-PYTEST.pyc tests/core/__pycache__/test_dynamic_handlers.cpython-27-PYTEST.pyc tests/core/__pycache__/test_dynamic_handlers.cpython-32-PYTEST.pyc tests/core/__pycache__/test_dynamic_handlers.cpython-33-PYTEST.pyc tests/core/__pycache__/test_dynamic_handlers.cpython-34-PYTEST.pyc tests/core/__pycache__/test_errors.cpython-26-PYTEST.pyc tests/core/__pycache__/test_errors.cpython-27-PYTEST.pyc tests/core/__pycache__/test_errors.cpython-32-PYTEST.pyc tests/core/__pycache__/test_errors.cpython-33-PYTEST.pyc tests/core/__pycache__/test_errors.cpython-34-PYTEST.pyc tests/core/__pycache__/test_event.cpython-26-PYTEST.pyc tests/core/__pycache__/test_event.cpython-27-PYTEST.pyc tests/core/__pycache__/test_event.cpython-32-PYTEST.pyc tests/core/__pycache__/test_event.cpython-33-PYTEST.pyc tests/core/__pycache__/test_event.cpython-34-PYTEST.pyc tests/core/__pycache__/test_event_priority.cpython-26-PYTEST.pyc tests/core/__pycache__/test_event_priority.cpython-27-PYTEST.pyc tests/core/__pycache__/test_event_priority.cpython-32-PYTEST.pyc tests/core/__pycache__/test_event_priority.cpython-33-PYTEST.pyc tests/core/__pycache__/test_event_priority.cpython-34-PYTEST.pyc tests/core/__pycache__/test_feedback.cpython-26-PYTEST.pyc tests/core/__pycache__/test_feedback.cpython-27-PYTEST.pyc tests/core/__pycache__/test_feedback.cpython-32-PYTEST.pyc tests/core/__pycache__/test_feedback.cpython-33-PYTEST.pyc tests/core/__pycache__/test_feedback.cpython-34-PYTEST.pyc tests/core/__pycache__/test_filters.cpython-26-PYTEST.pyc tests/core/__pycache__/test_filters.cpython-27-PYTEST.pyc tests/core/__pycache__/test_filters.cpython-32-PYTEST.pyc tests/core/__pycache__/test_filters.cpython-33-PYTEST.pyc tests/core/__pycache__/test_filters.cpython-34-PYTEST.pyc tests/core/__pycache__/test_generate_events.cpython-26-PYTEST.pyc tests/core/__pycache__/test_generate_events.cpython-27-PYTEST.pyc tests/core/__pycache__/test_generate_events.cpython-32-PYTEST.pyc tests/core/__pycache__/test_generate_events.cpython-33-PYTEST.pyc tests/core/__pycache__/test_generate_events.cpython-34-PYTEST.pyc tests/core/__pycache__/test_generator_value.cpython-26-PYTEST.pyc tests/core/__pycache__/test_generator_value.cpython-27-PYTEST.pyc tests/core/__pycache__/test_generator_value.cpython-32-PYTEST.pyc tests/core/__pycache__/test_generator_value.cpython-33-PYTEST.pyc tests/core/__pycache__/test_generator_value.cpython-34-PYTEST.pyc tests/core/__pycache__/test_globals.cpython-26-PYTEST.pyc tests/core/__pycache__/test_globals.cpython-27-PYTEST.pyc tests/core/__pycache__/test_globals.cpython-32-PYTEST.pyc tests/core/__pycache__/test_globals.cpython-33-PYTEST.pyc tests/core/__pycache__/test_globals.cpython-34-PYTEST.pyc tests/core/__pycache__/test_imports.cpython-26-PYTEST.pyc tests/core/__pycache__/test_imports.cpython-27-PYTEST.pyc tests/core/__pycache__/test_imports.cpython-32-PYTEST.pyc tests/core/__pycache__/test_imports.cpython-33-PYTEST.pyc tests/core/__pycache__/test_imports.cpython-34-PYTEST.pyc tests/core/__pycache__/test_inheritence.cpython-26-PYTEST.pyc tests/core/__pycache__/test_inheritence.cpython-27-PYTEST.pyc tests/core/__pycache__/test_inheritence.cpython-32-PYTEST.pyc tests/core/__pycache__/test_inheritence.cpython-33-PYTEST.pyc tests/core/__pycache__/test_inheritence.cpython-34-PYTEST.pyc tests/core/__pycache__/test_interface_query.cpython-26-PYTEST.pyc tests/core/__pycache__/test_interface_query.cpython-27-PYTEST.pyc tests/core/__pycache__/test_interface_query.cpython-32-PYTEST.pyc tests/core/__pycache__/test_interface_query.cpython-33-PYTEST.pyc tests/core/__pycache__/test_interface_query.cpython-34-PYTEST.pyc tests/core/__pycache__/test_loader.cpython-26-PYTEST.pyc tests/core/__pycache__/test_loader.cpython-27-PYTEST.pyc tests/core/__pycache__/test_loader.cpython-32-PYTEST.pyc tests/core/__pycache__/test_loader.cpython-33-PYTEST.pyc tests/core/__pycache__/test_loader.cpython-34-PYTEST.pyc tests/core/__pycache__/test_manager_repr.cpython-26-PYTEST.pyc tests/core/__pycache__/test_manager_repr.cpython-27-PYTEST.pyc tests/core/__pycache__/test_manager_repr.cpython-32-PYTEST.pyc tests/core/__pycache__/test_manager_repr.cpython-33-PYTEST.pyc tests/core/__pycache__/test_manager_repr.cpython-34-PYTEST.pyc tests/core/__pycache__/test_new_filter.cpython-26-PYTEST.pyc tests/core/__pycache__/test_new_filter.cpython-27-PYTEST.pyc tests/core/__pycache__/test_new_filter.cpython-32-PYTEST.pyc tests/core/__pycache__/test_new_filter.cpython-33-PYTEST.pyc tests/core/__pycache__/test_new_filter.cpython-34-PYTEST.pyc tests/core/__pycache__/test_priority.cpython-26-PYTEST.pyc tests/core/__pycache__/test_priority.cpython-27-PYTEST.pyc tests/core/__pycache__/test_priority.cpython-32-PYTEST.pyc tests/core/__pycache__/test_priority.cpython-33-PYTEST.pyc tests/core/__pycache__/test_priority.cpython-34-PYTEST.pyc tests/core/__pycache__/test_signals.cpython-26-PYTEST.pyc tests/core/__pycache__/test_signals.cpython-27-PYTEST.pyc tests/core/__pycache__/test_signals.cpython-32-PYTEST.pyc tests/core/__pycache__/test_signals.cpython-33-PYTEST.pyc tests/core/__pycache__/test_signals.cpython-34-PYTEST.pyc tests/core/__pycache__/test_timers.cpython-26-PYTEST.pyc tests/core/__pycache__/test_timers.cpython-27-PYTEST.pyc tests/core/__pycache__/test_timers.cpython-32-PYTEST.pyc tests/core/__pycache__/test_timers.cpython-33-PYTEST.pyc tests/core/__pycache__/test_timers.cpython-34-PYTEST.pyc tests/core/__pycache__/test_utils.cpython-26-PYTEST.pyc tests/core/__pycache__/test_utils.cpython-27-PYTEST.pyc tests/core/__pycache__/test_utils.cpython-32-PYTEST.pyc tests/core/__pycache__/test_utils.cpython-33-PYTEST.pyc tests/core/__pycache__/test_utils.cpython-34-PYTEST.pyc tests/core/__pycache__/test_value.cpython-26-PYTEST.pyc tests/core/__pycache__/test_value.cpython-27-PYTEST.pyc tests/core/__pycache__/test_value.cpython-32-PYTEST.pyc tests/core/__pycache__/test_value.cpython-33-PYTEST.pyc tests/core/__pycache__/test_value.cpython-34-PYTEST.pyc tests/core/__pycache__/test_worker_process.cpython-26-PYTEST.pyc tests/core/__pycache__/test_worker_process.cpython-27-PYTEST.pyc tests/core/__pycache__/test_worker_process.cpython-32-PYTEST.pyc tests/core/__pycache__/test_worker_process.cpython-33-PYTEST.pyc tests/core/__pycache__/test_worker_process.cpython-34-PYTEST.pyc tests/core/__pycache__/test_worker_thread.cpython-26-PYTEST.pyc tests/core/__pycache__/test_worker_thread.cpython-27-PYTEST.pyc tests/core/__pycache__/test_worker_thread.cpython-32-PYTEST.pyc tests/core/__pycache__/test_worker_thread.cpython-33-PYTEST.pyc tests/core/__pycache__/test_worker_thread.cpython-34-PYTEST.pyc tests/io/__init__.py tests/io/__init__.pyc tests/io/test_file.py tests/io/test_notify.py tests/io/test_process.py tests/io/__pycache__/__init__.cpython-32.pyc tests/io/__pycache__/__init__.cpython-33.pyc tests/io/__pycache__/__init__.cpython-34.pyc tests/io/__pycache__/test_file.cpython-26-PYTEST.pyc tests/io/__pycache__/test_file.cpython-27-PYTEST.pyc tests/io/__pycache__/test_file.cpython-32-PYTEST.pyc tests/io/__pycache__/test_file.cpython-33-PYTEST.pyc tests/io/__pycache__/test_file.cpython-34-PYTEST.pyc tests/io/__pycache__/test_notify.cpython-26-PYTEST.pyc tests/io/__pycache__/test_notify.cpython-27-PYTEST.pyc tests/io/__pycache__/test_notify.cpython-32-PYTEST.pyc tests/io/__pycache__/test_notify.cpython-33-PYTEST.pyc tests/io/__pycache__/test_notify.cpython-34-PYTEST.pyc tests/io/__pycache__/test_process.cpython-26-PYTEST.pyc tests/io/__pycache__/test_process.cpython-27-PYTEST.pyc tests/io/__pycache__/test_process.cpython-32-PYTEST.pyc tests/io/__pycache__/test_process.cpython-33-PYTEST.pyc tests/io/__pycache__/test_process.cpython-34-PYTEST.pyc tests/net/__init__.py tests/net/__init__.pyc tests/net/client.py tests/net/client.pyc tests/net/server.py tests/net/server.pyc tests/net/test_client.py tests/net/test_pipe.py tests/net/test_poller_reuse.py tests/net/test_tcp.py tests/net/test_udp.py tests/net/test_unix.py tests/net/__pycache__/__init__.cpython-32.pyc tests/net/__pycache__/__init__.cpython-33.pyc tests/net/__pycache__/__init__.cpython-34.pyc tests/net/__pycache__/client.cpython-32.pyc tests/net/__pycache__/client.cpython-33.pyc tests/net/__pycache__/client.cpython-34.pyc tests/net/__pycache__/server.cpython-32.pyc tests/net/__pycache__/server.cpython-33.pyc tests/net/__pycache__/server.cpython-34.pyc tests/net/__pycache__/test_client.cpython-26-PYTEST.pyc tests/net/__pycache__/test_client.cpython-27-PYTEST.pyc tests/net/__pycache__/test_client.cpython-32-PYTEST.pyc tests/net/__pycache__/test_client.cpython-33-PYTEST.pyc tests/net/__pycache__/test_client.cpython-34-PYTEST.pyc tests/net/__pycache__/test_pipe.cpython-26-PYTEST.pyc tests/net/__pycache__/test_pipe.cpython-27-PYTEST.pyc tests/net/__pycache__/test_pipe.cpython-32-PYTEST.pyc tests/net/__pycache__/test_pipe.cpython-33-PYTEST.pyc tests/net/__pycache__/test_pipe.cpython-34-PYTEST.pyc tests/net/__pycache__/test_poller_reuse.cpython-26-PYTEST.pyc tests/net/__pycache__/test_poller_reuse.cpython-27-PYTEST.pyc tests/net/__pycache__/test_poller_reuse.cpython-32-PYTEST.pyc tests/net/__pycache__/test_poller_reuse.cpython-33-PYTEST.pyc tests/net/__pycache__/test_poller_reuse.cpython-34-PYTEST.pyc tests/net/__pycache__/test_tcp.cpython-26-PYTEST.pyc tests/net/__pycache__/test_tcp.cpython-27-PYTEST.pyc tests/net/__pycache__/test_tcp.cpython-32-PYTEST.pyc tests/net/__pycache__/test_tcp.cpython-33-PYTEST.pyc tests/net/__pycache__/test_tcp.cpython-34-PYTEST.pyc tests/net/__pycache__/test_udp.cpython-26-PYTEST.pyc tests/net/__pycache__/test_udp.cpython-27-PYTEST.pyc tests/net/__pycache__/test_udp.cpython-32-PYTEST.pyc tests/net/__pycache__/test_udp.cpython-33-PYTEST.pyc tests/net/__pycache__/test_udp.cpython-34-PYTEST.pyc tests/net/__pycache__/test_unix.cpython-26-PYTEST.pyc tests/net/__pycache__/test_unix.cpython-27-PYTEST.pyc tests/net/__pycache__/test_unix.cpython-32-PYTEST.pyc tests/net/__pycache__/test_unix.cpython-33-PYTEST.pyc tests/net/__pycache__/test_unix.cpython-34-PYTEST.pyc tests/node/test_node.py tests/node/test_utils.py tests/node/__pycache__/test_node.cpython-26-PYTEST.pyc tests/node/__pycache__/test_node.cpython-27-PYTEST.pyc tests/node/__pycache__/test_node.cpython-32-PYTEST.pyc tests/node/__pycache__/test_node.cpython-33-PYTEST.pyc tests/node/__pycache__/test_node.cpython-34-PYTEST.pyc tests/node/__pycache__/test_utils.cpython-26-PYTEST.pyc tests/node/__pycache__/test_utils.cpython-27-PYTEST.pyc tests/node/__pycache__/test_utils.cpython-32-PYTEST.pyc tests/node/__pycache__/test_utils.cpython-33-PYTEST.pyc tests/node/__pycache__/test_utils.cpython-34-PYTEST.pyc tests/protocols/.test_irc.py.un~ tests/protocols/__init__.py tests/protocols/__init__.pyc tests/protocols/test_irc.py tests/protocols/test_line.py tests/protocols/__pycache__/__init__.cpython-32.pyc tests/protocols/__pycache__/__init__.cpython-33.pyc tests/protocols/__pycache__/__init__.cpython-34.pyc tests/protocols/__pycache__/test_irc.cpython-26-PYTEST.pyc tests/protocols/__pycache__/test_irc.cpython-27-PYTEST.pyc tests/protocols/__pycache__/test_irc.cpython-32-PYTEST.pyc tests/protocols/__pycache__/test_irc.cpython-33-PYTEST.pyc tests/protocols/__pycache__/test_irc.cpython-34-PYTEST.pyc tests/protocols/__pycache__/test_line.cpython-26-PYTEST.pyc tests/protocols/__pycache__/test_line.cpython-27-PYTEST.pyc tests/protocols/__pycache__/test_line.cpython-32-PYTEST.pyc tests/protocols/__pycache__/test_line.cpython-33-PYTEST.pyc tests/protocols/__pycache__/test_line.cpython-34-PYTEST.pyc tests/tools/__init__.py tests/tools/__init__.pyc tests/tools/test_tools.py tests/tools/__pycache__/__init__.cpython-32.pyc tests/tools/__pycache__/__init__.cpython-33.pyc tests/tools/__pycache__/__init__.cpython-34.pyc tests/tools/__pycache__/test_tools.cpython-26-PYTEST.pyc tests/tools/__pycache__/test_tools.cpython-27-PYTEST.pyc tests/tools/__pycache__/test_tools.cpython-32-PYTEST.pyc tests/tools/__pycache__/test_tools.cpython-33-PYTEST.pyc tests/tools/__pycache__/test_tools.cpython-34-PYTEST.pyc tests/web/__init__.py tests/web/__init__.pyc tests/web/cert.pem tests/web/conftest.py tests/web/conftest.pyc tests/web/helpers.py tests/web/helpers.pyc tests/web/jsonrpclib.py tests/web/jsonrpclib.pyc tests/web/multipartform.py tests/web/multipartform.pyc tests/web/test_bad_requests.py tests/web/test_basicauth.py tests/web/test_call_wait.py tests/web/test_client.py tests/web/test_conn.py tests/web/test_cookies.py tests/web/test_core.py tests/web/test_digestauth.py tests/web/test_dispatcher.py tests/web/test_dispatcher2.py tests/web/test_dispatcher3.py tests/web/test_disps.py tests/web/test_exceptions.py tests/web/test_expires.py tests/web/test_expose.py tests/web/test_generator.py tests/web/test_gzip.py tests/web/test_headers.py tests/web/test_http.py tests/web/test_json.py tests/web/test_jsonrpc.py tests/web/test_large_post.py tests/web/test_logger.py tests/web/test_methods.py tests/web/test_multipartformdata.py tests/web/test_null_response.py tests/web/test_request_failure.py tests/web/test_security.py tests/web/test_serve_download.py tests/web/test_serve_file.py tests/web/test_servers.py tests/web/test_sessions.py tests/web/test_static.py tests/web/test_unicode.py tests/web/test_utils.py tests/web/test_value.py tests/web/test_vpath_args.py tests/web/test_websockets.py tests/web/test_wsgi_application.py tests/web/test_wsgi_application_generator.py tests/web/test_wsgi_application_yield.py tests/web/test_wsgi_gateway.py tests/web/test_wsgi_gateway_errors.py tests/web/test_wsgi_gateway_generator.py tests/web/test_wsgi_gateway_multiple_apps.py tests/web/test_wsgi_gateway_null_response.py tests/web/test_wsgi_gateway_write.py tests/web/test_wsgi_gateway_yield.py tests/web/test_xmlrpc.py tests/web/test_yield.py tests/web/websocket.py tests/web/__pycache__/__init__.cpython-32.pyc tests/web/__pycache__/__init__.cpython-33.pyc tests/web/__pycache__/__init__.cpython-34.pyc tests/web/__pycache__/conftest.cpython-32.pyc tests/web/__pycache__/conftest.cpython-33.pyc tests/web/__pycache__/conftest.cpython-34.pyc tests/web/__pycache__/helpers.cpython-32.pyc tests/web/__pycache__/helpers.cpython-33.pyc tests/web/__pycache__/helpers.cpython-34.pyc tests/web/__pycache__/jsonrpclib.cpython-32.pyc tests/web/__pycache__/jsonrpclib.cpython-33.pyc tests/web/__pycache__/jsonrpclib.cpython-34.pyc tests/web/__pycache__/multipartform.cpython-32.pyc tests/web/__pycache__/multipartform.cpython-33.pyc tests/web/__pycache__/multipartform.cpython-34.pyc tests/web/__pycache__/test_bad_requests.cpython-26-PYTEST.pyc tests/web/__pycache__/test_bad_requests.cpython-27-PYTEST.pyc tests/web/__pycache__/test_bad_requests.cpython-32-PYTEST.pyc tests/web/__pycache__/test_bad_requests.cpython-33-PYTEST.pyc tests/web/__pycache__/test_bad_requests.cpython-34-PYTEST.pyc tests/web/__pycache__/test_basicauth.cpython-26-PYTEST.pyc tests/web/__pycache__/test_basicauth.cpython-27-PYTEST.pyc tests/web/__pycache__/test_basicauth.cpython-32-PYTEST.pyc tests/web/__pycache__/test_basicauth.cpython-33-PYTEST.pyc tests/web/__pycache__/test_basicauth.cpython-34-PYTEST.pyc tests/web/__pycache__/test_call_wait.cpython-26-PYTEST.pyc tests/web/__pycache__/test_call_wait.cpython-27-PYTEST.pyc tests/web/__pycache__/test_call_wait.cpython-32-PYTEST.pyc tests/web/__pycache__/test_call_wait.cpython-33-PYTEST.pyc tests/web/__pycache__/test_call_wait.cpython-34-PYTEST.pyc tests/web/__pycache__/test_client.cpython-26-PYTEST.pyc tests/web/__pycache__/test_client.cpython-27-PYTEST.pyc tests/web/__pycache__/test_client.cpython-32-PYTEST.pyc tests/web/__pycache__/test_client.cpython-33-PYTEST.pyc tests/web/__pycache__/test_client.cpython-34-PYTEST.pyc tests/web/__pycache__/test_conn.cpython-26-PYTEST.pyc tests/web/__pycache__/test_conn.cpython-27-PYTEST.pyc tests/web/__pycache__/test_conn.cpython-32-PYTEST.pyc tests/web/__pycache__/test_conn.cpython-33-PYTEST.pyc tests/web/__pycache__/test_conn.cpython-34-PYTEST.pyc tests/web/__pycache__/test_cookies.cpython-26-PYTEST.pyc tests/web/__pycache__/test_cookies.cpython-27-PYTEST.pyc tests/web/__pycache__/test_cookies.cpython-32-PYTEST.pyc tests/web/__pycache__/test_cookies.cpython-33-PYTEST.pyc tests/web/__pycache__/test_cookies.cpython-34-PYTEST.pyc tests/web/__pycache__/test_core.cpython-26-PYTEST.pyc tests/web/__pycache__/test_core.cpython-27-PYTEST.pyc tests/web/__pycache__/test_core.cpython-32-PYTEST.pyc tests/web/__pycache__/test_core.cpython-33-PYTEST.pyc tests/web/__pycache__/test_core.cpython-34-PYTEST.pyc tests/web/__pycache__/test_digestauth.cpython-26-PYTEST.pyc tests/web/__pycache__/test_digestauth.cpython-27-PYTEST.pyc tests/web/__pycache__/test_digestauth.cpython-32-PYTEST.pyc tests/web/__pycache__/test_digestauth.cpython-33-PYTEST.pyc tests/web/__pycache__/test_digestauth.cpython-34-PYTEST.pyc tests/web/__pycache__/test_dispatcher.cpython-26-PYTEST.pyc tests/web/__pycache__/test_dispatcher.cpython-27-PYTEST.pyc tests/web/__pycache__/test_dispatcher.cpython-32-PYTEST.pyc tests/web/__pycache__/test_dispatcher.cpython-33-PYTEST.pyc tests/web/__pycache__/test_dispatcher.cpython-34-PYTEST.pyc tests/web/__pycache__/test_dispatcher2.cpython-26-PYTEST.pyc tests/web/__pycache__/test_dispatcher2.cpython-27-PYTEST.pyc tests/web/__pycache__/test_dispatcher2.cpython-32-PYTEST.pyc tests/web/__pycache__/test_dispatcher2.cpython-33-PYTEST.pyc tests/web/__pycache__/test_dispatcher2.cpython-34-PYTEST.pyc tests/web/__pycache__/test_dispatcher3.cpython-26-PYTEST.pyc tests/web/__pycache__/test_dispatcher3.cpython-27-PYTEST.pyc tests/web/__pycache__/test_dispatcher3.cpython-32-PYTEST.pyc tests/web/__pycache__/test_dispatcher3.cpython-33-PYTEST.pyc tests/web/__pycache__/test_dispatcher3.cpython-34-PYTEST.pyc tests/web/__pycache__/test_disps.cpython-26-PYTEST.pyc tests/web/__pycache__/test_disps.cpython-27-PYTEST.pyc tests/web/__pycache__/test_disps.cpython-32-PYTEST.pyc tests/web/__pycache__/test_disps.cpython-33-PYTEST.pyc tests/web/__pycache__/test_disps.cpython-34-PYTEST.pyc tests/web/__pycache__/test_exceptions.cpython-26-PYTEST.pyc tests/web/__pycache__/test_exceptions.cpython-27-PYTEST.pyc tests/web/__pycache__/test_exceptions.cpython-32-PYTEST.pyc tests/web/__pycache__/test_exceptions.cpython-33-PYTEST.pyc tests/web/__pycache__/test_exceptions.cpython-34-PYTEST.pyc tests/web/__pycache__/test_expires.cpython-26-PYTEST.pyc tests/web/__pycache__/test_expires.cpython-27-PYTEST.pyc tests/web/__pycache__/test_expires.cpython-32-PYTEST.pyc tests/web/__pycache__/test_expires.cpython-33-PYTEST.pyc tests/web/__pycache__/test_expires.cpython-34-PYTEST.pyc tests/web/__pycache__/test_expose.cpython-26-PYTEST.pyc tests/web/__pycache__/test_expose.cpython-27-PYTEST.pyc tests/web/__pycache__/test_expose.cpython-32-PYTEST.pyc tests/web/__pycache__/test_expose.cpython-33-PYTEST.pyc tests/web/__pycache__/test_expose.cpython-34-PYTEST.pyc tests/web/__pycache__/test_generator.cpython-26-PYTEST.pyc tests/web/__pycache__/test_generator.cpython-27-PYTEST.pyc tests/web/__pycache__/test_generator.cpython-32-PYTEST.pyc tests/web/__pycache__/test_generator.cpython-33-PYTEST.pyc tests/web/__pycache__/test_generator.cpython-34-PYTEST.pyc tests/web/__pycache__/test_gzip.cpython-26-PYTEST.pyc tests/web/__pycache__/test_gzip.cpython-27-PYTEST.pyc tests/web/__pycache__/test_gzip.cpython-32-PYTEST.pyc tests/web/__pycache__/test_gzip.cpython-33-PYTEST.pyc tests/web/__pycache__/test_gzip.cpython-34-PYTEST.pyc tests/web/__pycache__/test_headers.cpython-26-PYTEST.pyc tests/web/__pycache__/test_headers.cpython-27-PYTEST.pyc tests/web/__pycache__/test_headers.cpython-32-PYTEST.pyc tests/web/__pycache__/test_headers.cpython-33-PYTEST.pyc tests/web/__pycache__/test_headers.cpython-34-PYTEST.pyc tests/web/__pycache__/test_http.cpython-26-PYTEST.pyc tests/web/__pycache__/test_http.cpython-27-PYTEST.pyc tests/web/__pycache__/test_http.cpython-32-PYTEST.pyc tests/web/__pycache__/test_http.cpython-33-PYTEST.pyc tests/web/__pycache__/test_http.cpython-34-PYTEST.pyc tests/web/__pycache__/test_json.cpython-26-PYTEST.pyc tests/web/__pycache__/test_json.cpython-27-PYTEST.pyc tests/web/__pycache__/test_json.cpython-32-PYTEST.pyc tests/web/__pycache__/test_json.cpython-33-PYTEST.pyc tests/web/__pycache__/test_json.cpython-34-PYTEST.pyc tests/web/__pycache__/test_jsonrpc.cpython-26-PYTEST.pyc tests/web/__pycache__/test_jsonrpc.cpython-27-PYTEST.pyc tests/web/__pycache__/test_jsonrpc.cpython-32-PYTEST.pyc tests/web/__pycache__/test_jsonrpc.cpython-33-PYTEST.pyc tests/web/__pycache__/test_jsonrpc.cpython-34-PYTEST.pyc tests/web/__pycache__/test_large_post.cpython-26-PYTEST.pyc tests/web/__pycache__/test_large_post.cpython-27-PYTEST.pyc tests/web/__pycache__/test_large_post.cpython-32-PYTEST.pyc tests/web/__pycache__/test_large_post.cpython-33-PYTEST.pyc tests/web/__pycache__/test_large_post.cpython-34-PYTEST.pyc tests/web/__pycache__/test_logger.cpython-26-PYTEST.pyc tests/web/__pycache__/test_logger.cpython-27-PYTEST.pyc tests/web/__pycache__/test_logger.cpython-32-PYTEST.pyc tests/web/__pycache__/test_logger.cpython-33-PYTEST.pyc tests/web/__pycache__/test_logger.cpython-34-PYTEST.pyc tests/web/__pycache__/test_methods.cpython-26-PYTEST.pyc tests/web/__pycache__/test_methods.cpython-27-PYTEST.pyc tests/web/__pycache__/test_methods.cpython-32-PYTEST.pyc tests/web/__pycache__/test_methods.cpython-33-PYTEST.pyc tests/web/__pycache__/test_methods.cpython-34-PYTEST.pyc tests/web/__pycache__/test_multipartformdata.cpython-26-PYTEST.pyc tests/web/__pycache__/test_multipartformdata.cpython-27-PYTEST.pyc tests/web/__pycache__/test_multipartformdata.cpython-32-PYTEST.pyc tests/web/__pycache__/test_multipartformdata.cpython-33-PYTEST.pyc tests/web/__pycache__/test_multipartformdata.cpython-34-PYTEST.pyc tests/web/__pycache__/test_null_response.cpython-26-PYTEST.pyc tests/web/__pycache__/test_null_response.cpython-27-PYTEST.pyc tests/web/__pycache__/test_null_response.cpython-32-PYTEST.pyc tests/web/__pycache__/test_null_response.cpython-33-PYTEST.pyc tests/web/__pycache__/test_null_response.cpython-34-PYTEST.pyc tests/web/__pycache__/test_request_failure.cpython-26-PYTEST.pyc tests/web/__pycache__/test_request_failure.cpython-27-PYTEST.pyc tests/web/__pycache__/test_request_failure.cpython-32-PYTEST.pyc tests/web/__pycache__/test_request_failure.cpython-33-PYTEST.pyc tests/web/__pycache__/test_request_failure.cpython-34-PYTEST.pyc tests/web/__pycache__/test_security.cpython-26-PYTEST.pyc tests/web/__pycache__/test_security.cpython-27-PYTEST.pyc tests/web/__pycache__/test_security.cpython-32-PYTEST.pyc tests/web/__pycache__/test_security.cpython-33-PYTEST.pyc tests/web/__pycache__/test_security.cpython-34-PYTEST.pyc tests/web/__pycache__/test_serve_download.cpython-26-PYTEST.pyc tests/web/__pycache__/test_serve_download.cpython-27-PYTEST.pyc tests/web/__pycache__/test_serve_download.cpython-32-PYTEST.pyc tests/web/__pycache__/test_serve_download.cpython-33-PYTEST.pyc tests/web/__pycache__/test_serve_download.cpython-34-PYTEST.pyc tests/web/__pycache__/test_serve_file.cpython-26-PYTEST.pyc tests/web/__pycache__/test_serve_file.cpython-27-PYTEST.pyc tests/web/__pycache__/test_serve_file.cpython-32-PYTEST.pyc tests/web/__pycache__/test_serve_file.cpython-33-PYTEST.pyc tests/web/__pycache__/test_serve_file.cpython-34-PYTEST.pyc tests/web/__pycache__/test_servers.cpython-26-PYTEST.pyc tests/web/__pycache__/test_servers.cpython-27-PYTEST.pyc tests/web/__pycache__/test_servers.cpython-32-PYTEST.pyc tests/web/__pycache__/test_servers.cpython-33-PYTEST.pyc tests/web/__pycache__/test_servers.cpython-34-PYTEST.pyc tests/web/__pycache__/test_sessions.cpython-26-PYTEST.pyc tests/web/__pycache__/test_sessions.cpython-27-PYTEST.pyc tests/web/__pycache__/test_sessions.cpython-32-PYTEST.pyc tests/web/__pycache__/test_sessions.cpython-33-PYTEST.pyc tests/web/__pycache__/test_sessions.cpython-34-PYTEST.pyc tests/web/__pycache__/test_static.cpython-26-PYTEST.pyc tests/web/__pycache__/test_static.cpython-27-PYTEST.pyc tests/web/__pycache__/test_static.cpython-32-PYTEST.pyc tests/web/__pycache__/test_static.cpython-33-PYTEST.pyc tests/web/__pycache__/test_static.cpython-34-PYTEST.pyc tests/web/__pycache__/test_unicode.cpython-26-PYTEST.pyc tests/web/__pycache__/test_unicode.cpython-27-PYTEST.pyc tests/web/__pycache__/test_unicode.cpython-32-PYTEST.pyc tests/web/__pycache__/test_unicode.cpython-33-PYTEST.pyc tests/web/__pycache__/test_unicode.cpython-34-PYTEST.pyc tests/web/__pycache__/test_utils.cpython-26-PYTEST.pyc tests/web/__pycache__/test_utils.cpython-27-PYTEST.pyc tests/web/__pycache__/test_utils.cpython-32-PYTEST.pyc tests/web/__pycache__/test_utils.cpython-33-PYTEST.pyc tests/web/__pycache__/test_utils.cpython-34-PYTEST.pyc tests/web/__pycache__/test_value.cpython-26-PYTEST.pyc tests/web/__pycache__/test_value.cpython-27-PYTEST.pyc tests/web/__pycache__/test_value.cpython-32-PYTEST.pyc tests/web/__pycache__/test_value.cpython-33-PYTEST.pyc tests/web/__pycache__/test_value.cpython-34-PYTEST.pyc tests/web/__pycache__/test_vpath_args.cpython-26-PYTEST.pyc tests/web/__pycache__/test_vpath_args.cpython-27-PYTEST.pyc tests/web/__pycache__/test_vpath_args.cpython-32-PYTEST.pyc tests/web/__pycache__/test_vpath_args.cpython-33-PYTEST.pyc tests/web/__pycache__/test_vpath_args.cpython-34-PYTEST.pyc tests/web/__pycache__/test_websockets.cpython-26-PYTEST.pyc tests/web/__pycache__/test_websockets.cpython-27-PYTEST.pyc tests/web/__pycache__/test_websockets.cpython-32-PYTEST.pyc tests/web/__pycache__/test_websockets.cpython-33-PYTEST.pyc tests/web/__pycache__/test_websockets.cpython-34-PYTEST.pyc tests/web/__pycache__/test_wsgi_application.cpython-26-PYTEST.pyc tests/web/__pycache__/test_wsgi_application.cpython-27-PYTEST.pyc tests/web/__pycache__/test_wsgi_application.cpython-32-PYTEST.pyc tests/web/__pycache__/test_wsgi_application.cpython-33-PYTEST.pyc tests/web/__pycache__/test_wsgi_application.cpython-34-PYTEST.pyc tests/web/__pycache__/test_wsgi_application_generator.cpython-26-PYTEST.pyc tests/web/__pycache__/test_wsgi_application_generator.cpython-27-PYTEST.pyc tests/web/__pycache__/test_wsgi_application_generator.cpython-32-PYTEST.pyc tests/web/__pycache__/test_wsgi_application_generator.cpython-33-PYTEST.pyc tests/web/__pycache__/test_wsgi_application_generator.cpython-34-PYTEST.pyc tests/web/__pycache__/test_wsgi_application_yield.cpython-26-PYTEST.pyc tests/web/__pycache__/test_wsgi_application_yield.cpython-27-PYTEST.pyc tests/web/__pycache__/test_wsgi_application_yield.cpython-32-PYTEST.pyc tests/web/__pycache__/test_wsgi_application_yield.cpython-33-PYTEST.pyc tests/web/__pycache__/test_wsgi_application_yield.cpython-34-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway.cpython-26-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway.cpython-27-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway.cpython-32-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway.cpython-33-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway.cpython-34-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_errors.cpython-26-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_errors.cpython-27-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_errors.cpython-32-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_errors.cpython-33-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_errors.cpython-34-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_generator.cpython-26-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_generator.cpython-27-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_generator.cpython-32-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_generator.cpython-33-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_generator.cpython-34-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_multiple_apps.cpython-26-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_multiple_apps.cpython-27-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_multiple_apps.cpython-32-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_multiple_apps.cpython-33-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_multiple_apps.cpython-34-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_null_response.cpython-26-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_null_response.cpython-27-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_null_response.cpython-32-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_null_response.cpython-33-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_null_response.cpython-34-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_write.cpython-26-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_write.cpython-27-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_write.cpython-32-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_write.cpython-33-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_write.cpython-34-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_yield.cpython-26-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_yield.cpython-27-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_yield.cpython-32-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_yield.cpython-33-PYTEST.pyc tests/web/__pycache__/test_wsgi_gateway_yield.cpython-34-PYTEST.pyc tests/web/__pycache__/test_xmlrpc.cpython-26-PYTEST.pyc tests/web/__pycache__/test_xmlrpc.cpython-27-PYTEST.pyc tests/web/__pycache__/test_xmlrpc.cpython-32-PYTEST.pyc tests/web/__pycache__/test_xmlrpc.cpython-33-PYTEST.pyc tests/web/__pycache__/test_xmlrpc.cpython-34-PYTEST.pyc tests/web/__pycache__/test_yield.cpython-26-PYTEST.pyc tests/web/__pycache__/test_yield.cpython-27-PYTEST.pyc tests/web/__pycache__/test_yield.cpython-32-PYTEST.pyc tests/web/__pycache__/test_yield.cpython-33-PYTEST.pyc tests/web/__pycache__/test_yield.cpython-34-PYTEST.pyc tests/web/static/#foobar.txt tests/web/static/helloworld.txt tests/web/static/largefile.txt tests/web/static/test.css tests/web/static/unicode.txtcircuits-3.1.0/circuits.egg-info/entry_points.txt0000644000014400001440000000007112425013643023144 0ustar prologicusers00000000000000[console_scripts] circuits.web = circuits.web.main:main circuits-3.1.0/circuits.egg-info/dependency_links.txt0000644000014400001440000000000112425013643023716 0ustar prologicusers00000000000000 circuits-3.1.0/circuits.egg-info/PKG-INFO0000644000014400001440000002552512425013643020756 0ustar prologicusers00000000000000Metadata-Version: 1.1 Name: circuits Version: 3.1.0 Summary: Asynchronous Component based Event Application Framework Home-page: http://circuitsframework.com/ Author: James Mills Author-email: prologic@shortcircuit.net.au License: MIT Download-URL: http://bitbucket.org/circuits/circuits/downloads/ Description: .. _Python Programming Language: http://www.python.org/ .. _#circuits IRC Channel: http://webchat.freenode.net/?randomnick=1&channels=circuits&uio=d4 .. _FreeNode IRC Network: http://freenode.net .. _Python Standard Library: http://docs.python.org/library/ .. _MIT License: http://www.opensource.org/licenses/mit-license.php .. _Create an Issue: https://bitbucket.org/circuits/circuits/issue/new .. _Mailing List: http://groups.google.com/group/circuits-users .. _Project Website: http://circuitsframework.com/ .. _PyPi Page: http://pypi.python.org/pypi/circuits .. _Read the Docs: http://circuits.readthedocs.org/en/latest/ .. _View the ChangeLog: http://circuits.readthedocs.org/en/latest/changes.html .. _Downloads Page: https://bitbucket.org/circuits/circuits/downloads circuits is a **Lightweight** **Event** driven and **Asynchronous** **Application Framework** for the `Python Programming Language`_ with a strong **Component** Architecture. circuits also includes a lightweight, high performance and scalable HTTP/WSGI compliant web server as well as various I/O and Networking components. - Visit the `Project Website`_ - `Read the Docs`_ - Download it from the `Downloads Page`_ - `View the ChangeLog`_ .. image:: https://pypip.in/v/circuits/badge.png?text=version :target: https://pypi.python.org/pypi/circuits :alt: Latest Version .. image:: https://pypip.in/py_versions/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Supported Python Versions .. image:: https://pypip.in/implementation/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Supported Python implementations .. image:: https://pypip.in/status/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Development Status .. image:: https://pypip.in/d/circuits/badge.png :target: https://pypi.python.org/pypi/circuits :alt: Number of Downloads .. image:: https://pypip.in/format/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Format .. image:: https://pypip.in/license/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: License .. image:: https://requires.io/bitbucket/circuits/circuits/requirements.png?branch=default :target: https://requires.io/bitbucket/circuits/circuits/requirements?branch=default :alt: Requirements Status Examples -------- Hello ..... .. code:: python #!/usr/bin/env python """circuits Hello World""" from circuits import Component, Event class hello(Event): """hello Event""" class App(Component): def hello(self): """Hello Event Handler""" print("Hello World!") def started(self, component): """Started Event Handler This is fired internally when your application starts up and can be used to trigger events that only occur once during startup. """ self.fire(hello()) # Fire hello Event raise SystemExit(0) # Terminate the Application App().run() Echo Server ........... .. code:: python #!/usr/bin/env python """Simple TCP Echo Server This example shows how you can create a simple TCP Server (an Echo Service) utilizing the builtin Socket Components that the circuits library ships with. """ from circuits import handler, Debugger from circuits.net.sockets import TCPServer class EchoServer(TCPServer): @handler("read") def on_read(self, sock, data): """Read Event Handler This is fired by the underlying Socket Component when there has been new data read from the connected client. ..note :: By simply returning, client/server socket components listen to ValueChagned events (feedback) to determine if a handler returned some data and fires a subsequent Write event with the value returned. """ return data # Start and "run" the system. # Bind to port 0.0.0.0:9000 app = EchoServer(9000) Debugger().register(app) app.run() Hello Web ......... .. code:: python #!/usr/bin/env python from circuits.web import Server, Controller class Root(Controller): def index(self): """Index Request Handler Controller(s) expose implicitly methods as request handlers. Request Handlers can still be customized by using the ``@expose`` decorator. For example exposing as a different path. """ return "Hello World!" app = Server(("0.0.0.0", 9000)) Root().register(app) app.run() More `examples `_... Features -------- - event driven - concurrency support - component architecture - asynchronous I/O components - no required external dependencies - full featured web framework (circuits.web) - coroutine based synchronization primitives Requirements ------------ - circuits has no dependencies beyond the `Python Standard Library`_. Supported Platforms ------------------- - Linux, FreeBSD, Mac OS X, Windows - Python 2.6, 2.7, 3.2, 3.3, 3.4 - pypy 2.0, 2.1, 2.2 Installation ------------ The simplest and recommended way to install circuits is with pip. You may install the latest stable release from PyPI with pip:: > pip install circuits If you do not have pip, you may use easy_install:: > easy_install circuits Alternatively, you may download the source package from the `PyPi Page`_ or the `Downloads Page`_ extract it and install using:: > python setup.py install .. note:: You can install the `development version `_ via ``pip install circuits==dev``. License ------- circuits is licensed under the `MIT License`_. Feedback -------- We welcome any questions or feedback about bugs and suggestions on how to improve circuits. Let us know what you think about circuits. `@pythoncircuits `_. Do you have suggestions for improvement? Then please `Create an Issue`_ with details of what you would like to see. I'll take a look at it and work with you to either incorporate the idea or find a better solution. Community --------- There is also a small community of circuits enthusiasts that you may find on the `#circuits IRC Channel`_ on the `FreeNode IRC Network`_ and the `Mailing List`_. Keywords: event framework distributed concurrent component asynchronous Platform: POSIX Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Console Classifier: Environment :: No Input/Output (Daemon) Classifier: Environment :: Other Environment Classifier: Environment :: Plugins Classifier: Environment :: Web Environment Classifier: Intended Audience :: Developers Classifier: Intended Audience :: Information Technology Classifier: Intended Audience :: Science/Research Classifier: Intended Audience :: System Administrators Classifier: Intended Audience :: Telecommunications Industry Classifier: License :: OSI Approved :: MIT License Classifier: Natural Language :: English Classifier: Operating System :: POSIX :: BSD Classifier: Operating System :: POSIX :: Linux Classifier: Operating System :: MacOS :: MacOS X Classifier: Operating System :: Microsoft :: Windows Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3.1 Classifier: Programming Language :: Python :: 3.2 Classifier: Programming Language :: Python :: 3.3 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Adaptive Technologies Classifier: Topic :: Communications :: Chat :: Internet Relay Chat Classifier: Topic :: Communications :: Email :: Mail Transport Agents Classifier: Topic :: Database Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Server Classifier: Topic :: Software Development :: Libraries :: Application Frameworks Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: System :: Clustering Classifier: Topic :: System :: Distributed Computing circuits-3.1.0/circuits/0000755000014400001440000000000012425013643016156 5ustar prologicusers00000000000000circuits-3.1.0/circuits/protocols/0000755000014400001440000000000012425013643020202 5ustar prologicusers00000000000000circuits-3.1.0/circuits/protocols/__init__.py0000644000014400001440000000043612402037676022325 0ustar prologicusers00000000000000# Package: protocols # Date: 13th March 2009 # Author: James Mills, prologic at shortcircuit dot net dot au """Networking Protocols This package contains components that implement various networking protocols. """ from .irc import IRC # noqa from .line import Line # noqa circuits-3.1.0/circuits/protocols/line.py0000644000014400001440000000704412402037676021517 0ustar prologicusers00000000000000# Module: line # Date: 04th February 2010 # Author: James Mills """Line Protocol This module implements the basic Line protocol. This module can be used in both server and client implementations. """ import re from circuits.core import handler, Event, BaseComponent from circuits.six import b LINESEP = re.compile(b("\r?\n")) def splitLines(s, buffer): """splitLines(s, buffer) -> lines, buffer Append s to buffer and find any new lines of text in the string splitting at the standard IRC delimiter CRLF. Any new lines found, return them as a list and the remaining buffer for further processing. """ lines = LINESEP.split(buffer + s) return lines[:-1], lines[-1] class line(Event): """line Event""" class Line(BaseComponent): """Line Protocol Implements the Line Protocol. Incoming data is split into lines with a splitter function. For each line of data processed a Line Event is created. Any unfinished lines are appended into an internal buffer. A custom line splitter function can be passed to customize how data is split into lines. This function must accept two arguments, the data to process and any left over data from a previous invocation of the splitter function. The function must also return a tuple of two items, a list of lines and any left over data. :param splitter: a line splitter function :type splitter: function This Component operates in two modes. In normal operation it's expected to be used in conjunction with components that expose a Read Event on a "read" channel with only one argument (data). Some builtin components that expose such events are: - circuits.net.sockets.TCPClient - circuits.io.File The second mode of operation works with circuits.net.sockets.Server components such as TCPServer, UNIXServer, etc. It's expected that two arguments exist in the Read Event, sock and data. The following two arguments can be passed to affect how unfinished data is stored and retrieved for such components: :param getBuffer: function to retrieve the buffer for a client sock :type getBuffer: function This function must accept one argument (sock,) the client socket whoose buffer is to be retrieved. :param updateBuffer: function to update the buffer for a client sock :type updateBuffer: function This function must accept two arguments (sock, buffer,) the client socket and the left over buffer to be updated. @note: This Component must be used in conjunction with a Component that exposes Read events on a "read" Channel. """ def __init__(self, *args, **kwargs): "initializes x; see x.__class__.__doc__ for signature" super(Line, self).__init__(*args, **kwargs) self.encoding = kwargs.get('encoding', 'utf-8') # Used for Servers self.getBuffer = kwargs.get("getBuffer") self.updateBuffer = kwargs.get("updateBuffer") self.splitter = kwargs.get("splitter", splitLines) self.buffer = b"" @handler("read") def _on_read(self, *args): if len(args) == 1: # Client read data, = args lines, self.buffer = self.splitter(data, self.buffer) [self.fire(line(x)) for x in lines] else: # Server read sock, data = args lines, buffer = self.splitter(data, self.getBuffer(sock)) self.updateBuffer(sock, buffer) [self.fire(line(sock, x)) for x in lines] circuits-3.1.0/circuits/protocols/irc/0000755000014400001440000000000012425013643020757 5ustar prologicusers00000000000000circuits-3.1.0/circuits/protocols/irc/__init__.py0000644000014400001440000000104012402037676023072 0ustar prologicusers00000000000000# Package: irc # Date: 04th August 2004 # Author: James Mills """Internet Relay Chat Protocol This package implements the Internet Relay Chat Protocol or commonly known as IRC. Support for both server and client is implemented. """ from .commands import * from .numerics import * from .protocol import IRC from .message import Message from .events import response, reply from .utils import joinprefix, parsemsg, parseprefix, strip sourceJoin = joinprefix sourceSplit = parseprefix # pylama:skip=1 circuits-3.1.0/circuits/protocols/irc/events.py0000644000014400001440000000054412402037676022647 0ustar prologicusers00000000000000# Module: events # Date: 11th August 2014 # Author: James Mills """Internet Relay Chat Protocol events""" from circuits import Event class response(Event): """response Event (Server and Client)""" class reply(Event): """reply Event (Server)""" class request(Event): """request Event (Client)""" circuits-3.1.0/circuits/protocols/irc/numerics.py0000644000014400001440000000512012402037676023163 0ustar prologicusers00000000000000# Module: numerics # Date: 11 August 2014 # Author: James Mills """Internet Relay Chat Protocol numerics""" RPL_WELCOME = 1 RPL_YOURHOST = 2 RPL_TRACELINK = 200 RPL_TRACECONNECTING = 201 RPL_TRACEHANDSHAKE = 202 RPL_TRACEUNKNOWN = 203 RPL_TRACEOPERATOR = 204 RPL_TRACEUSER = 205 RPL_TRACESERVER = 206 RPL_TRACENEWTYPE = 208 RPL_TRACELOG = 261 RPL_STATSLINKINFO = 211 RPL_STATSCOMMANDS = 212 RPL_STATSCLINE = 213 RPL_STATSNLINE = 214 RPL_STATSILINE = 215 RPL_STATSKLINE = 216 RPL_STATSYLINE = 218 RPL_ENDOFSTATS = 219 RPL_STATSLLINE = 241 RPL_STATSUPTIME = 242 RPL_STATSOLINE = 243 RPL_STATSHLINE = 244 RPL_UMODEIS = 221 RPL_LUSERCLIENT = 251 RPL_LUSEROP = 252 RPL_LUSERUNKNOWN = 253 RPL_LUSERCHANNELS = 254 RPL_LUSERME = 255 RPL_ADMINME = 256 RPL_ADMINLOC1 = 257 RPL_ADMINLOC2 = 258 RPL_ADMINEMAIL = 259 RPL_NONE = 300 RPL_USERHOST = 302 RPL_ISON = 303 RPL_AWAY = 301 RPL_UNAWAY = 305 RPL_NOWAWAY = 306 RPL_WHOISUSER = 311 RPL_WHOISSERVER = 312 RPL_WHOISOPERATOR = 313 RPL_WHOISIDLE = 317 RPL_ENDOFWHOIS = 318 RPL_WHOISCHANNELS = 319 RPL_WHOWASUSER = 314 RPL_ENDOFWHOWAS = 369 RPL_LIST = 322 RPL_LISTEND = 323 RPL_CHANNELMODEIS = 324 RPL_NOTOPIC = 331 RPL_TOPIC = 332 RPL_INVITING = 341 RPL_SUMMONING = 342 RPL_VERSION = 351 RPL_WHOREPLY = 352 RPL_ENDOFWHO = 315 RPL_NAMEREPLY = 353 RPL_ENDOFNAMES = 366 RPL_LINKS = 364 RPL_ENDOFLINKS = 365 RPL_BANLIST = 367 RPL_ENDOFBANLIST = 368 RPL_INFO = 371 RPL_ENDOFINFO = 374 RPL_MOTDSTART = 375 RPL_MOTD = 372 RPL_ENDOFMOTD = 376 RPL_YOUREOPER = 381 RPL_REHASHING = 382 RPL_TIME = 391 RPL_USERSSTART = 392 RPL_USERS = 393 RPL_ENDOFUSERS = 394 RPL_NOUSERS = 395 ERR_NOSUCHNICK = 401 ERR_NOSUCHSERVER = 402 ERR_NOSUCHCHANNEL = 403 ERR_CANNOTSENDTOCHAN = 404 ERR_TOOMANYCHANNELS = 405 ERR_WASNOSUCHNICK = 406 ERR_TOOMANYTARGETS = 407 ERR_NOORIGIN = 409 ERR_NORECIPIENT = 411 ERR_NOTEXTTOSEND = 412 ERR_NOTOPLEVEL = 413 ERR_WILDTOPLEVEL = 414 ERR_UNKNOWNCOMMAND = 421 ERR_NOMOTD = 422 ERR_NOADMININFO = 423 ERR_FILEERROR = 424 ERR_NONICKNAMEGIVEN = 431 ERR_ERRONEUSNICKNAME = 432 ERR_NICKNAMEINUSE = 433 ERR_NICKCOLLISION = 436 ERR_NOTONCHANNEL = 442 ERR_USERONCHANNEL = 443 ERR_NOLOGIN = 444 ERR_SUMMONDISABLED = 445 ERR_USERSDISABLED = 446 ERR_NOTREGISTERED = 451 ERR_NEEDMOREPARAMS = 461 ERR_ALREADYREGISTRED = 462 ERR_PASSWDMISMATCH = 464 ERR_YOUREBANNEDCREEP = 465 ERR_KEYSET = 467 ERR_CHANNELISFULL = 471 ERR_UNKNOWNMODE = 472 ERR_INVITEONLYCHAN = 473 ERR_BANNEDFROMCHAN = 474 ERR_BADCHANNELKEY = 475 ERR_NOPRIVILEGES = 481 ERR_CHANOPRIVSNEEDED = 482 ERR_CANTKILLSERVER = 483 ERR_NOOPERHOST = 491 ERR_UMODEUNKNOWNFLAG = 501 ERR_USERSDONTMATCH = 502 circuits-3.1.0/circuits/protocols/irc/protocol.py0000644000014400001440000000600212402037676023177 0ustar prologicusers00000000000000# Module: protocol # Date: 11th August 2014 # Author: James Mills """Internet Relay Chat Protocol""" from re import compile as compile_regex from circuits import Component from circuits.net.events import write from circuits.protocols.line import Line from .commands import PONG from .utils import parsemsg from .message import Message from .events import reply, response NUMERIC = compile_regex("[0-9]+") class IRC(Component): """IRC Protocol Component Creates a new IRC Component instance that implements the IRC Protocol. Incoming messages are handled by the "read" Event Handler, parsed and processed with appropriate Events created and exposed to the rest of the system to listen to and handle. """ def __init__(self, *args, **kwargs): super(IRC, self).__init__(*args, **kwargs) self.encoding = kwargs.get("encoding", "utf-8") Line(**kwargs).register(self) def line(self, *args): """line Event Handler Process a line of text and generate the appropriate event. This must not be overridden by subclasses, if it is, this must be explicitly called by the subclass. Other Components may however listen to this event and process custom IRC events. """ if len(args) == 1: # Client read sock, line = None, args[0] else: # Server read sock, line = args prefix, command, args = parsemsg(line, encoding=self.encoding) command = command.lower() if NUMERIC.match(command): args.insert(0, int(command)) command = "numeric" if sock is not None: self.fire(response.create(command, sock, prefix, *args)) else: self.fire(response.create(command, prefix, *args)) def request(self, event, message): """request Event Handler (Default) This is a default event handler to respond to ``request`` events by converting the given message to bytes and firing a ``write`` event to a hopefully connected client socket. Components may override this, but be sure to respond to ``request`` events by either explicitly calling this method or sending your own ``write`` events as the client socket. """ event.stop() message.encoding = self.encoding self.fire(write(bytes(message))) def ping(self, event, *args): """ping Event Handler (Default) This is a default event to respond to ``ping`` events by sending a ``PONG`` in response. Subclasses or components may override this, but be sure to respond to ``ping`` events by either explicitly calling this method or sending your own ``PONG`` response. """ if len(args) == 2: # Client read self.fire(PONG(args[1])) else: # Server read self.fire(reply(args[0], Message("PONG", args[2]))) event.stop() circuits-3.1.0/circuits/protocols/irc/utils.py0000644000014400001440000000371612424652316022505 0ustar prologicusers00000000000000# Module: utils # Date: 11th August 2014 # Author: James Mills """Internet Relay Chat Utilities""" from re import compile as compile_regex PREFIX = compile_regex("([^!].*)!(.*)@(.*)") class Error(Exception): """Error Exception""" def strip(s, color=False): """strip(s, color=False) -> str Strips the : from the start of a string and optionally also strips all colors if color is True. :param s str: string to process :param color bool: whether to strip colors :returns str: returns processes string """ if len(s) > 0: if s[0] == ":": s = s[1:] if color: s = s.replace("\x01", "") s = s.replace("\x02", "") return s def joinprefix(nick, user, host): """Join the parts of a prefix :param nick str: nickname :param user str: username :param host str: hostname :returns str: a string in the form of !@ """ return "{0:s}!{1:s}@{2:s}".format(nick or "", user or "", host or "") def parseprefix(prefix): """Parse a prefix into it's parts :param prefix str: prefix to parse :returns tuple: tuple of strings in the form of (nick, user, host) """ m = PREFIX.match(prefix) if m is not None: return m.groups() else: return prefix, None, None def parsemsg(s, encoding="utf-8"): """Parse an IRC Message from s :param s bytes: bytes to parse :param encoding str: encoding to use (Default: utf-8) :returns tuple: parsed message in the form of (prefix, command, args) """ s = s.decode(encoding) prefix = "" trailing = [] if s[0] == ":": prefix, s = s[1:].split(" ", 1) prefix = parseprefix(prefix) if s.find(" :") != -1: s, trailing = s.split(" :", 1) args = s.split() args.append(trailing) else: args = s.split() command = str(args.pop(0)) return prefix, command, args circuits-3.1.0/circuits/protocols/irc/replies.py0000644000014400001440000000307512402037676023010 0ustar prologicusers00000000000000# Module: replies # Date: 11th August 2014 # Author: James Mills """Internet Relay Chat Protocol replies""" from operator import attrgetter from .message import Message def _M(*args, **kwargs): kwargs["add_nick"] = True return Message(*args, **kwargs) def RPL_WELCOME(network): return _M("001", "Welcome to the {0:s} IRC Network".format(network)) def RPL_YOURHOST(host, version): return _M("002", "Your host is {0:s} running {1:s}".format(host, version)) def ERR_NOMOTD(): return _M("422", "MOTD file is missing") def ERR_NOSUCHNICK(nick): return _M("401", nick, "No such nick") def ERR_NOSUCHCHANNEL(channel): return _M("403", channel, "No such channel") def RPL_WHOREPLY(user, mask, server): # H = Here # G = Away # * = IRCOp # @ = Channel Op # + = Voiced return _M( "352", mask, user.userinfo.user, user.userinfo.host, server, user.nick, "G" if user.away else "H", "0 " + user.userinfo.name ) def RPL_ENDOFWHO(mask): return _M("315", mask, "End of WHO list") def RPL_NOTOPIC(channel): return _M("331", channel, "No topic is set") def RPL_NAMEREPLY(channel): prefix = "=" nicks = " ".join(map(attrgetter("nick"), channel.users)) return _M("353", prefix, channel.name, nicks) def RPL_ENDOFNAMES(): return _M("366", "End of NAMES list") def ERR_UNKNOWNCOMMAND(command): return _M("421", command, "Unknown command") def ERR_NICKNAMEINUSE(nick): return _M("433", nick, "Nickname is already in use") circuits-3.1.0/circuits/protocols/irc/commands.py0000644000014400001440000000313612402037676023144 0ustar prologicusers00000000000000# Module: commands # Date: 11th August 2014 # Author: James Mills """Internet Relay Chat Protocol commands""" from .events import request from .message import Message def AWAY(message=None): return request(Message("AWAY", message)) def NICK(nickname, hopcount=None): return request(Message("NICK", nickname, hopcount)) def USER(user, host, server, name): return request(Message("USER", user, host, server, name)) def PASS(password): return request(Message("PASS", password)) def PONG(daemon1, daemon2=None): return request(Message("PONG", daemon1, daemon2)) def QUIT(message=None): return request(Message("QUIT", message)) def JOIN(channels, keys=None): return request(Message("JOIN", channels, keys)) def PART(channels): return request(Message("PART", channels)) def PRIVMSG(receivers, message): return request(Message("PRIVMSG", receivers, message)) def NOTICE(receivers, message): return request(Message("NOTICE", receivers, message)) def KICK(channel, user, comment=None): return request(Message("KICK", channel, user, comment)) def TOPIC(channel, topic=None): return request(Message("TOPIC", channel, topic)) def MODE(target, *args): return request(Message("MODE", target, *args)) def INVITE(nickname, channel): return request(Message("INVITE", nickname, channel)) def NAMES(channels=None): return request(Message("NAMES", channels)) def WHOIS(nickmasks, server=None): return request(Message(server, nickmasks)) def WHO(name=None, o=None): return request(Message("WHO", name, o)) circuits-3.1.0/circuits/protocols/irc/message.py0000644000014400001440000000356212402037676022772 0ustar prologicusers00000000000000# Module: message # Date: 11th August 2014 # Author: James Mills """Internet Relay Chat message""" from .utils import parsemsg class Error(Exception): """Error Exception""" class Message(object): def __init__(self, command, *args, **kwargs): for arg in args[:-1]: if " " in arg: raise Error("Space can only appear in the very last arg") self.command = command self.args = list(filter(lambda x: x is not None, list(args))) self.prefix = str(kwargs["prefix"]) if "prefix" in kwargs else None self.encoding = kwargs.get("encoding", "utf-8") self.add_nick = kwargs.get("add_nick", False) @staticmethod def from_string(s): if len(s) > 512: raise Error("Message must not be longer than 512 characters") prefix, command, args = parsemsg(s) return Message(command, *args, prefix=prefix) def __bytes__(self): return str(self).encode(self.encoding) def __str__(self): args = self.args[:] for arg in args[:-1]: if arg is not None and " " in arg: raise Error("Space can only appear in the very last arg") if len(args) > 0 and " " in args[-1]: args[-1] = ":{0:s}".format(args[-1]) return "{prefix:s}{command:s} {args:s}\r\n".format( prefix=( ":{0:s} ".format(self.prefix) if self.prefix is not None else "" ), command=str(self.command), args=" ".join(args) ) def __repr__(self): return "\"{0:s}\"".format(str(self)[:-2]) def __eq__(self, other): return isinstance(other, Message) \ and self.prefix == other.prefix \ and self.command == other.command \ and self.args == other.args circuits-3.1.0/circuits/protocols/websocket.py0000644000014400001440000001751612402037676022563 0ustar prologicusers00000000000000""" .. codeauthor: mnl """ import os import random from circuits.six import string_types from circuits.core.handlers import handler from circuits.core.components import BaseComponent from circuits.net.events import write, read, close class WebSocketCodec(BaseComponent): """WebSocket Protocol Implements the Data Framing protocol for WebSocket. This component is used in conjunction with a parent component that receives Read events on its channel. When created (after a successful WebSocket setup handshake), the codec registers a handler on the parent's channel that filters out these Read events for a given socket (if used in a server) or all Read events (if used in a client). The data is decoded and the contained payload is emitted as Read events on the codec's channel. The data from write events sent to the codec's channel (with socket argument if used in a server) is encoded according to the WebSocket Data Framing protocol. The encoded data is then forwarded as write events on the parents channel. """ channel = "ws" def __init__(self, sock=None, data=bytearray(), *args, **kwargs): """ Creates a new codec. :param sock: the socket used in Read and write events (if used in a server, else None) """ super(WebSocketCodec, self).__init__(*args, **kwargs) self._sock = sock self._pending_payload = bytearray() self._pending_type = None self._close_received = False self._close_sent = False messages = self._parse_messages(bytearray(data)) for message in messages: if self._sock is not None: self.fire(read(self._sock, message)) else: self.fire(read(message)) @handler("registered") def _on_registered(self, component, parent): if component == self: @handler("read", priority=10, channel=parent.channel) def _on_read_raw(self, event, *args): if self._sock is not None: if args[0] != self._sock: return data = args[1] else: data = args[0] messages = self._parse_messages(bytearray(data)) for message in messages: if self._sock is not None: self.fire(read(self._sock, message)) else: self.fire(read(message)) event.stop() self.addHandler(_on_read_raw) @handler("disconnect", channel=parent.channel) def _on_disconnect(self, *args): if self._sock is not None: if args[0] != self._sock: return self.unregister() self.addHandler(_on_disconnect) def _parse_messages(self, data): msgs = [] # one chunk of bytes may result in several messages if self._close_received: return msgs while data: # extract final flag, opcode and masking final = bool(data[0] & 0x80 != 0) opcode = data[0] & 0xf masking = bool(data[1] & 0x80 != 0) # evaluate payload length payload_length = data[1] & 0x7f offset = 2 if payload_length >= 126: payload_bytes = 2 if payload_length == 126 else 8 payload_length = 0 for _ in range(payload_bytes): payload_length = payload_length * 256 \ + data[offset] offset += 1 # retrieve optional masking key if masking: masking_key = data[offset:offset + 4] offset += 4 # if not enough bytes available yet, retry after next read if len(data) - offset < payload_length: break # rest of _buffer is payload msg = data[offset:offset + payload_length] if masking: # unmask msg = list(msg) for i, c in enumerate(msg): msg[i] = c ^ masking_key[i % 4] msg = bytearray(msg) # remove bytes of processed frame from byte _buffer offset += payload_length data = data[offset:] # if there have been parts already, combine msg = self._pending_payload + msg if final: if opcode < 8: # if text or continuation of text, convert if opcode == 1 \ or opcode == 0 and self._pending_type == 1: msg = msg.decode("utf-8", "replace") self._pending_type = None self._pending_payload = bytearray() msgs.append(msg) # check for client closing the connection elif opcode == 8: self._close_received = True if self._sock: self.fire(close(self._sock)) else: self.fire(close()) break # check for Ping elif opcode == 9: if self._close_sent: return frame = bytearray(b'\x8a') frame += self._encode_tail(msg, self._sock is None) self._write(frame) else: self._pending_payload = msg if opcode != 0: self._pending_type = opcode return msgs @handler("write") def _on_write(self, *args): if self._close_sent: return if self._sock is not None: if args[0] != self._sock: return data = args[1] else: data = args[0] frame = bytearray() first = 0x80 # set FIN flag, we never fragment if isinstance(data, string_types): first += 1 # text data = bytearray(data, "utf-8") else: first += 2 # binary frame.append(first) frame += self._encode_tail(data, self._sock is None) self._write(frame) def _encode_tail(self, data, mask=False): tail = bytearray() data_length = len(data) if data_length <= 125: len_byte = data_length lbytes = 0 elif data_length <= 0xffff: len_byte = 126 lbytes = 2 else: len_byte = 127 lbytes = 8 if mask: len_byte = len_byte | 0x80 tail.append(len_byte) for i in range(lbytes - 1, -1, -1): tail.append(data_length >> (i * 8) & 0xff) if mask: try: masking_key = bytearray(list(os.urandom(4))) except NotImplementedError: masking_key \ = bytearray([random.randint(0, 255) for i in range(4)]) tail += masking_key for i, c in enumerate(data): tail.append(c ^ masking_key[i % 4]) else: tail += data return tail def _write(self, data): if self._sock is not None: self.fire(write(self._sock, data), self.parent.channel) else: self.fire(write(data), self.parent.channel) @handler("close") def _on_close(self, *args): if self._sock is not None: if args and (args[0] != self._sock): return if not self._close_sent: self._write(b"\x88\x00") self._close_sent = True if self._close_received and self._close_sent: if self._sock: self.fire(close(self._sock), self.parent.channel) else: self.fire(close(), self.parent.channel) circuits-3.1.0/circuits/protocols/http.py0000644000014400001440000000373212402037676021547 0ustar prologicusers00000000000000 from io import BytesIO from circuits.core import handler, BaseComponent, Event class request(Event): """request Event""" class response(Event): """response Event""" class ResponseObject(object): def __init__(self, headers, status, version): self.headers = headers self.status = status self.version = version self.body = BytesIO() # XXX: This sucks :/ Avoiding the circuit import here :/ from circuits.web.constants import HTTP_STATUS_CODES self.reason = HTTP_STATUS_CODES[self.status] def __repr__(self): return "".format( self.status, self.reason, self.headers.get("Content-Type"), len(self.body.getvalue()) ) def read(self): return self.body.read() class HTTP(BaseComponent): channel = "web" def __init__(self, encoding="utf-8", channel=channel): super(HTTP, self).__init__(channel=channel) self._encoding = encoding # XXX: This sucks :/ Avoiding the circuit import here :/ from circuits.web.parsers import HttpParser self._parser = HttpParser(1, True) @handler("read") def _on_client_read(self, data): self._parser.execute(data, len(data)) if self._parser.is_message_complete() or \ self._parser.is_upgrade() or \ (self._parser.is_headers_complete() and self._parser._clen == 0): status = self._parser.get_status_code() version = self._parser.get_version() headers = self._parser.get_headers() res = ResponseObject(headers, status, version) res.body.write(self._parser.recv_body()) res.body.seek(0) self.fire(response(res)) # XXX: This sucks :/ Avoiding the circuit import here :/ from circuits.web.parsers import HttpParser self._parser = HttpParser(1, True) circuits-3.1.0/circuits/__init__.py0000644000014400001440000000146012402037676020277 0ustar prologicusers00000000000000# Package: circuits # Date: 3rd October 2008 # Author: James Mills, prologic at shortcircuit dot net dot au """Lightweight Event driven and Asynchronous Application Framework circuits is a **Lightweight** **Event** driven and **Asynchronous** **Application Framework** for the `Python Programming Language`_ with a strong **Component** Architecture. :copyright: CopyRight (C) 2004-2013 by James Mills :license: MIT (See: LICENSE) .. _Python Programming Language: http://www.python.org/ """ __author__ = "James Mills" __date__ = "24th February 2013" from .version import version as __version__ from .core import Event from .core import task, Worker from .core import handler, reprhandler, BaseComponent, Component from .core import Debugger, Bridge, Loader, Manager, Timer, TimeoutError # flake8: noqa circuits-3.1.0/circuits/net/0000755000014400001440000000000012425013643016744 5ustar prologicusers00000000000000circuits-3.1.0/circuits/net/__init__.py0000644000014400001440000000054312402037676021066 0ustar prologicusers00000000000000# Package: net # Date: 7th April 2010 # Author: James Mills, prologic at shortcircuit dot net dot au """Networking Components This package contains components that implement network sockets and protocols for implementing client and server network applications. :copyright: CopyRight (C) 2004-2013 by James Mills :license: MIT (See: LICENSE) """ circuits-3.1.0/circuits/net/events.py0000644000014400001440000001320712402037676020634 0ustar prologicusers00000000000000# Module: events # Date: 21st September 2013 # Author: James Mills """Networking Events This module implements commonly used Networking events used by socket components. """ from circuits.core import Event class connect(Event): """connect Event This Event is sent when a new client connection has arrived on a server. This event is also used for client's to initiate a new connection to a remote host. .. note :: This event is used for both Client and Server Components. :param args: Client: (host, port) Server: (sock, host, port) :type args: tuple :param kwargs: Client: (ssl) :type kwargs: dict """ def __init__(self, *args, **kwargs): "x.__init__(...) initializes x; see x.__class__.__doc__ for signature" super(connect, self).__init__(*args, **kwargs) class disconnect(Event): """disconnect Event This Event is sent when a client connection has closed on a server. This event is also used for client's to disconnect from a remote host. .. note:: This event is used for both Client and Server Components. :param args: Client: () Server: (sock) :type tuple: tuple """ def __init__(self, *args): "x.__init__(...) initializes x; see x.__class__.__doc__ for signature" super(disconnect, self).__init__(*args) class connected(Event): """connected Event This Event is sent when a client has successfully connected. .. note:: This event is for Client Components. :param host: The hostname connected to. :type str: str :param port: The port connected to :type int: int """ def __init__(self, host, port): "x.__init__(...) initializes x; see x.__class__.__doc__ for signature" super(connected, self).__init__(host, port) class disconnected(Event): """disconnected Event This Event is sent when a client has disconnected .. note:: This event is for Client Components. """ def __init__(self): "x.__init__(...) initializes x; see x.__class__.__doc__ for signature" super(disconnected, self).__init__() class read(Event): """read Event This Event is sent when a client or server connection has read any data. .. note:: This event is used for both Client and Server Components. :param args: Client: (data) Server: (sock, data) :type tuple: tuple """ def __init__(self, *args): "x.__init__(...) initializes x; see x.__class__.__doc__ for signature" super(read, self).__init__(*args) class error(Event): """error Event This Event is sent when a client or server connection has an error. .. note:: This event is used for both Client and Server Components. :param args: Client: (error) Server: (sock, error) :type tuple: tuple """ def __init__(self, *args): "x.__init__(...) initializes x; see x.__class__.__doc__ for signature" super(error, self).__init__(*args) class broadcast(Event): """broadcast Event This Event is used by the UDPServer/UDPClient sockets to send a message on the ```` network. .. note:: - This event is never sent, it is used to send data. - This event is used for both Client and Server UDP Components. :param args: (data, port) :type tuple: tuple """ def __init__(self, *args): "x.__init__(...) initializes x; see x.__class__.__doc__ for signature" super(broadcast, self).__init__(*args) class write(Event): """write Event This Event is used to notify a client, client connection or server that we have data to be written. .. note:: - This event is never sent, it is used to send data. - This event is used for both Client and Server Components. :param args: Client: (data) Server: (sock, data) :type tuple: tuple """ def __init__(self, *args): "x.__init__(...) initializes x; see x.__class__.__doc__ for signature" super(write, self).__init__(*args) class close(Event): """close Event This Event is used to notify a client, client connection or server that we want to close. .. note:: - This event is never sent, it is used to close. - This event is used for both Client and Server Components. :param args: Client: () Server: (sock) :type tuple: tuple """ def __init__(self, *args): "x.__init__(...) initializes x; see x.__class__.__doc__ for signature" super(close, self).__init__(*args) class ready(Event): """ready Event This Event is used to notify the rest of the system that the underlying Client or Server Component is ready to begin processing connections or incoming/outgoing data. (This is triggered as a direct result of having the capability to support multiple client/server components with a single poller component instance in a system). .. note:: This event is used for both Client and Server Components. :param component: The Client/Server Component that is ready. :type tuple: Component (Client/Server) :param bind: The (host, port) the server has bound to. :type tuple: (host, port) """ def __init__(self, component, bind=None): "x.__init__(...) initializes x; see x.__class__.__doc__ for signature" args = (component, bind) if bind is not None else (component,) super(ready, self).__init__(*args) class closed(Event): """closed Event This Event is sent when a server has closed its listening socket. .. note:: This event is for Server components. """ circuits-3.1.0/circuits/net/sockets.py0000644000014400001440000005454012407400563021002 0ustar prologicusers00000000000000# Module: sockets # Date: 04th August 2004 # Author: James Mills """Socket Components This module contains various Socket Components for use with Networking. """ import os import select from collections import defaultdict, deque from errno import EAGAIN, EALREADY, EBADF from errno import ECONNABORTED, EINPROGRESS, EINTR, EISCONN, EMFILE, ENFILE from errno import ENOBUFS, ENOMEM, ENOTCONN, EPERM, EPIPE, EINVAL, EWOULDBLOCK from _socket import socket as SocketType from socket import gaierror from socket import error as SocketError from socket import getfqdn, gethostbyname, socket, getaddrinfo, gethostname from socket import AF_INET, AF_INET6, IPPROTO_TCP, SOCK_STREAM, SOCK_DGRAM from socket import SOL_SOCKET, SO_BROADCAST, SO_REUSEADDR, TCP_NODELAY try: from ssl import wrap_socket as ssl_socket from ssl import CERT_NONE, PROTOCOL_SSLv23 from ssl import SSLError, SSL_ERROR_WANT_WRITE, SSL_ERROR_WANT_READ HAS_SSL = 1 except ImportError: import warnings warnings.warn("No SSL support available.") HAS_SSL = 0 from circuits.six import binary_type from circuits.core.utils import findcmp from circuits.core import handler, BaseComponent from circuits.core.pollers import BasePoller, Poller from .events import close, closed, connect, connected, disconnect, disconnected, error, read, ready, write BUFSIZE = 4096 # 4KB Buffer BACKLOG = 5000 # 5K Concurrent Connections class Client(BaseComponent): channel = "client" def __init__(self, bind=None, bufsize=BUFSIZE, channel=channel): super(Client, self).__init__(channel=channel) if isinstance(bind, SocketType): self._bind = bind.getsockname() self._sock = bind else: self._bind = self.parse_bind_parameter(bind) self._sock = self._create_socket() self._bufsize = bufsize self._ssock = None self._poller = None self._buffer = deque() self._closeflag = False self._connected = False self.host = None self.port = 0 self.secure = False self.server = {} self.issuer = {} def parse_bind_parameter(self, bind_parameter): return parse_ipv4_parameter(bind_parameter) @property def connected(self): return getattr(self, "_connected", None) @handler("registered", "started", channel="*") def _on_registered_or_started(self, component, manager=None): if self._poller is None: if isinstance(component, BasePoller): self._poller = component self.fire(ready(self)) else: if component is not self: return component = findcmp(self.root, BasePoller) if component is not None: self._poller = component self.fire(ready(self)) else: self._poller = Poller().register(self) self.fire(ready(self)) @handler("stopped", channel="*") def _on_stopped(self, component): self.fire(close()) @handler("read_value_changed") def _on_read_value_changed(self, value): if isinstance(value, binary_type): self.fire(write(value)) @handler("prepare_unregister", channel="*") def _on_prepare_unregister(self, event, c): if event.in_subtree(self): self._close() def _close(self): if not self._connected: return self._poller.discard(self._sock) self._buffer.clear() self._closeflag = False self._connected = False try: self._sock.shutdown(2) self._sock.close() except SocketError: pass self.fire(disconnected()) @handler("close") def close(self): if not self._buffer: self._close() elif not self._closeflag: self._closeflag = True def _read(self): try: if self.secure and self._ssock: data = self._ssock.read(self._bufsize) else: data = self._sock.recv(self._bufsize) if data: self.fire(read(data)).notify = True else: self.close() except SocketError as e: if e.args[0] == EWOULDBLOCK: return else: self.fire(error(e)) self._close() def _write(self, data): try: if self.secure and self._ssock: nbytes = self._ssock.write(data) else: nbytes = self._sock.send(data) if nbytes < len(data): self._buffer.appendleft(data[nbytes:]) except SocketError as e: if e.args[0] in (EPIPE, ENOTCONN): self._close() else: self.fire(error(e)) @handler("write") def write(self, data): if not self._poller.isWriting(self._sock): self._poller.addWriter(self, self._sock) self._buffer.append(data) @handler("_disconnect", priority=1) def __on_disconnect(self, sock): self._close() @handler("_read", priority=1) def __on_read(self, sock): self._read() @handler("_write", priority=1) def __on_write(self, sock): if self._buffer: data = self._buffer.popleft() self._write(data) if not self._buffer: if self._closeflag: self._close() elif self._poller.isWriting(self._sock): self._poller.removeWriter(self._sock) def _do_handshake_for_non_blocking(ssock): """ This is how to do handshake for an ssl socket with underlying non-blocking socket (according to the Python doc). """ while True: try: ssock.do_handshake() break except SSLError as err: if err.args[0] == SSL_ERROR_WANT_READ: select.select([ssock], [], []) elif err.args[0] == SSL_ERROR_WANT_WRITE: select.select([], [ssock], []) else: raise class TCPClient(Client): socket_family = AF_INET def _create_socket(self): sock = socket(self.socket_family, SOCK_STREAM, IPPROTO_TCP) if self._bind is not None: sock.bind(self._bind) sock.setblocking(False) sock.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1) return sock @handler("connect") def connect(self, host, port, secure=False, **kwargs): self.host = host self.port = port self.secure = secure if self.secure: self.certfile = kwargs.get("certfile", None) self.keyfile = kwargs.get("keyfile", None) try: r = self._sock.connect((host, port)) except SocketError as e: if e.args[0] in (EBADF, EINVAL,): self._sock = self._create_socket() r = self._sock.connect_ex((host, port)) else: r = e.args[0] if r in (EISCONN, EWOULDBLOCK, EINPROGRESS, EALREADY): self._connected = True else: self.fire(error(e)) self._close() return self._connected = True self._poller.addReader(self, self._sock) if self.secure: self._ssock = ssl_socket( self._sock, self.keyfile, self.certfile, do_handshake_on_connect=False ) _do_handshake_for_non_blocking(self._ssock) self.fire(connected(host, port)) class TCP6Client(TCPClient): socket_family = AF_INET6 def parse_bind_parameter(self, bind_parameter): return parse_ipv6_parameter(bind_parameter) class UNIXClient(Client): def _create_socket(self): from socket import AF_UNIX sock = socket(AF_UNIX, SOCK_STREAM) if self._bind is not None: sock.bind(self._bind) sock.setblocking(False) return sock @handler("ready") def ready(self, component): if self._poller is not None and self._connected: self._poller.addReader(self, self._sock) @handler("connect") def connect(self, path, secure=False, **kwargs): self.path = path self.secure = secure if self.secure: self.certfile = kwargs.get("certfile", None) self.keyfile = kwargs.get("keyfile", None) try: r = self._sock.connect_ex(path) except SocketError as e: r = e.args[0] if r: if r in (EISCONN, EWOULDBLOCK, EINPROGRESS, EALREADY): self._connected = True else: self.fire(error(r)) return self._connected = True self._poller.addReader(self, self._sock) if self.secure: self._ssock = ssl_socket( self._sock, self.keyfile, self.certfile, do_handshake_on_connect=False ) _do_handshake_for_non_blocking(self._ssock) self.fire(connected(gethostname(), path)) class Server(BaseComponent): channel = "server" def __init__(self, bind, secure=False, backlog=BACKLOG, bufsize=BUFSIZE, channel=channel, **kwargs): super(Server, self).__init__(channel=channel) self._bind = self.parse_bind_parameter(bind) self._backlog = backlog self._bufsize = bufsize if isinstance(bind, socket): self._sock = bind else: self._sock = self._create_socket() self._closeq = [] self._clients = [] self._poller = None self._buffers = defaultdict(deque) self.secure = secure if self.secure: self.certfile = kwargs.get("certfile", None) self.keyfile = kwargs.get("keyfile", None) self.cert_reqs = kwargs.get("cert_reqs", CERT_NONE) self.ssl_version = kwargs.get("ssl_version", PROTOCOL_SSLv23) self.ca_certs = kwargs.get("ca_certs", None) def parse_bind_parameter(self, bind_parameter): return parse_ipv4_parameter(bind_parameter) @property def connected(self): return True @property def host(self): if getattr(self, "_sock", None) is not None: try: sockname = self._sock.getsockname() if isinstance(sockname, tuple): return sockname[0] else: return sockname except SocketError: return None @property def port(self): if getattr(self, "_sock", None) is not None: try: sockname = self._sock.getsockname() if isinstance(sockname, tuple): return sockname[1] except SocketError: return None @handler("registered", "started", channel="*") def _on_registered_or_started(self, component, manager=None): if self._poller is None: if isinstance(component, BasePoller): self._poller = component self._poller.addReader(self, self._sock) self.fire(ready(self, (self.host, self.port))) else: if component is not self: return component = findcmp(self.root, BasePoller) if component is not None: self._poller = component self._poller.addReader(self, self._sock) self.fire(ready(self, (self.host, self.port))) else: self._poller = Poller().register(self) self._poller.addReader(self, self._sock) self.fire(ready(self, (self.host, self.port))) @handler("stopped", channel="*") def _on_stopped(self, component): self.fire(close()) @handler("read_value_changed") def _on_read_value_changed(self, value): if isinstance(value.value, binary_type): sock = value.event.args[0] self.fire(write(sock, value.value)) def _close(self, sock): if sock is None: return if sock != self._sock and sock not in self._clients: return self._poller.discard(sock) if sock in self._buffers: del self._buffers[sock] if sock in self._clients: self._clients.remove(sock) else: self._sock = None try: sock.shutdown(2) sock.close() except SocketError: pass self.fire(disconnect(sock)) @handler("close") def close(self, sock=None): is_closed = sock is None if sock is None: socks = [self._sock] socks.extend(self._clients[:]) else: socks = [sock] for sock in socks: if not self._buffers[sock]: self._close(sock) elif sock not in self._closeq: self._closeq.append(sock) if is_closed: self.fire(closed()) def _read(self, sock): if sock not in self._clients: return try: data = sock.recv(self._bufsize) if data: self.fire(read(sock, data)).notify = True else: self.close(sock) except SocketError as e: if e.args[0] == EWOULDBLOCK: return else: self.fire(error(sock, e)) self._close(sock) def _write(self, sock, data): if sock not in self._clients: return try: nbytes = sock.send(data) if nbytes < len(data): self._buffers[sock].appendleft(data[nbytes:]) except SocketError as e: if e.args[0] not in (EINTR, EWOULDBLOCK, ENOBUFS): self.fire(error(sock, e)) self._close(sock) else: self._buffers[sock].appendleft(data) @handler("write") def write(self, sock, data): if not self._poller.isWriting(sock): self._poller.addWriter(self, sock) self._buffers[sock].append(data) def _accept(self): try: newsock, host = self._sock.accept() if self.secure and HAS_SSL: sslsock = ssl_socket( newsock, server_side=True, keyfile=self.keyfile, ca_certs=self.ca_certs, certfile=self.certfile, cert_reqs=self.cert_reqs, ssl_version=self.ssl_version, do_handshake_on_connect=False ) try: _do_handshake_for_non_blocking(sslsock) newsock = sslsock except SSLError as e: self.fire(error(self._sock, e)) newsock.shutdown(2) newsock.close() return else: newsock = sslsock except SocketError as e: if e.args[0] in (EWOULDBLOCK, EAGAIN): return elif e.args[0] == EPERM: # Netfilter on Linux may have rejected the # connection, but we get told to try to accept() # anyway. return elif e.args[0] in (EMFILE, ENOBUFS, ENFILE, ENOMEM, ECONNABORTED): # Linux gives EMFILE when a process is not allowed # to allocate any more file descriptors. *BSD and # Win32 give (WSA)ENOBUFS. Linux can also give # ENFILE if the system is out of inodes, or ENOMEM # if there is insufficient memory to allocate a new # dentry. ECONNABORTED is documented as possible on # both Linux and Windows, but it is not clear # whether there are actually any circumstances under # which it can happen (one might expect it to be # possible if a client sends a FIN or RST after the # server sends a SYN|ACK but before application code # calls accept(2), however at least on Linux this # _seems_ to be short-circuited by syncookies. return else: raise newsock.setblocking(False) self._poller.addReader(self, newsock) self._clients.append(newsock) self.fire(connect(newsock, *host)) @handler("_disconnect", priority=1) def _on_disconnect(self, sock): self._close(sock) @handler("_read", priority=1) def _on_read(self, sock): if sock == self._sock: self._accept() else: self._read(sock) @handler("_write", priority=1) def _on_write(self, sock): if self._buffers[sock]: data = self._buffers[sock].popleft() self._write(sock, data) if not self._buffers[sock]: if sock in self._closeq: self._closeq.remove(sock) self._close(sock) elif self._poller.isWriting(sock): self._poller.removeWriter(sock) class TCPServer(Server): socket_family = AF_INET def _create_socket(self): sock = socket(self.socket_family, SOCK_STREAM) sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) sock.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1) sock.setblocking(False) sock.bind(self._bind) sock.listen(self._backlog) return sock def parse_bind_parameter(self, bind_parameter): return parse_ipv4_parameter(bind_parameter) def parse_ipv4_parameter(bind_parameter): if isinstance(bind_parameter, int): try: bind = (gethostbyname(gethostname()), bind_parameter) except gaierror: bind = ("0.0.0.0", bind_parameter) elif isinstance(bind_parameter, str) and ":" in bind_parameter: host, port = bind_parameter.split(":") port = int(port) bind = (host, port) else: bind = bind_parameter return bind def parse_ipv6_parameter(bind_parameter): if isinstance(bind_parameter, int): try: _, _, _, _, bind \ = getaddrinfo(getfqdn(), bind_parameter, AF_INET6)[0] except (gaierror, IndexError): bind = ("::", bind_parameter) else: bind = bind_parameter return bind class TCP6Server(TCPServer): socket_family = AF_INET6 def parse_bind_parameter(self, bind_parameter): return parse_ipv6_parameter(bind_parameter) class UNIXServer(Server): def _create_socket(self): from socket import AF_UNIX if os.path.exists(self._bind): os.unlink(self._bind) sock = socket(AF_UNIX, SOCK_STREAM) sock.bind(self._bind) sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) sock.setblocking(False) sock.listen(self._backlog) return sock class UDPServer(Server): socket_family = AF_INET def _create_socket(self): sock = socket(self.socket_family, SOCK_DGRAM) sock.bind(self._bind) sock.setsockopt(SOL_SOCKET, SO_BROADCAST, 1) sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) sock.setblocking(False) return sock def _close(self, sock): self._poller.discard(sock) if sock in self._buffers: del self._buffers[sock] try: sock.shutdown(2) except SocketError: pass try: sock.close() except SocketError: pass self.fire(disconnect(sock)) @handler("close", override=True) def close(self): self.fire(closed()) if self._buffers[self._sock] and self._sock not in self._closeq: self._closeq.append(self._sock) else: self._close(self._sock) def _read(self): try: data, address = self._sock.recvfrom(self._bufsize) if data: self.fire(read(address, data)).notify = True except SocketError as e: if e.args[0] in (EWOULDBLOCK, EAGAIN): return self.fire(error(self._sock, e)) self._close(self._sock) def _write(self, address, data): try: bytes = self._sock.sendto(data, address) if bytes < len(data): self._buffers[self._sock].appendleft(data[bytes:]) except SocketError as e: if e.args[0] in (EPIPE, ENOTCONN): self._close(self._sock) else: self.fire(error(self._sock, e)) @handler("write", override=True) def write(self, address, data): if not self._poller.isWriting(self._sock): self._poller.addWriter(self, self._sock) self._buffers[self._sock].append((address, data)) @handler("broadcast", override=True) def broadcast(self, data, port): self.write(("", port), data) @handler("_disconnect", priority=1, override=True) def _on_disconnect(self, sock): self._close(sock) @handler("_read", priority=1, override=True) def _on_read(self, sock): self._read() @handler("_write", priority=1, override=True) def _on_write(self, sock): if self._buffers[self._sock]: address, data = self._buffers[self._sock].popleft() self._write(address, data) if not self._buffers[self._sock]: if self._sock in self._closeq: self._closeq.remove(self._sock) self._close(self._sock) elif self._poller.isWriting(self._sock): self._poller.removeWriter(self._sock) UDPClient = UDPServer class UDP6Server(UDPServer): socket_family = AF_INET6 def parse_bind_parameter(self, bind_parameter): return parse_ipv6_parameter(bind_parameter) UDP6Client = UDP6Server def Pipe(*channels, **kwargs): """Create a new full duplex Pipe Returns a pair of UNIXClient instances connected on either side of the pipe. """ from socket import socketpair if not channels: channels = ("a", "b") s1, s2 = socketpair() s1.setblocking(False) s2.setblocking(False) a = UNIXClient(s1, channel=channels[0], **kwargs) b = UNIXClient(s2, channel=channels[1], **kwargs) a._connected = True b._connected = True return a, b circuits-3.1.0/circuits/six.py0000644000014400001440000002544312402037676017352 0ustar prologicusers00000000000000"""Utilities for writing code that runs on Python 2 and 3""" import sys import types import operator __author__ = "Benjamin Peterson " __version__ = "1.2.0" # True if we are running on Python 3. PY3 = sys.version_info[0] == 3 if PY3: string_types = str, integer_types = int, class_types = type, text_type = str binary_type = bytes byteindex = lambda x, i: x[i] iterbytes = lambda x: iter(x) MAXSIZE = sys.maxsize else: string_types = basestring, integer_types = (int, long) class_types = (type, types.ClassType) text_type = unicode binary_type = str if sys.platform == "java": # Jython always uses 32 bits. MAXSIZE = int((1 << 31) - 1) else: # It's possible to have sizeof(long) != sizeof(Py_ssize_t). class X(object): def __len__(self): return 1 << 31 try: len(X()) except OverflowError: # 32-bit MAXSIZE = int((1 << 31) - 1) else: # 64-bit MAXSIZE = int((1 << 63) - 1) del X def byteindex(data, index): return ord(data[index]) def iterbytes(data): return (ord (char) for char in data) def _add_doc(func, doc): """Add documentation to a function.""" func.__doc__ = doc def _import_module(name): """Import module, returning the module after the last dot.""" __import__(name) return sys.modules[name] class _LazyDescr(object): def __init__(self, name): self.name = name def __get__(self, obj, tp): result = self._resolve() setattr(obj, self.name, result) # This is a bit ugly, but it avoids running this again. delattr(tp, self.name) return result class MovedModule(_LazyDescr): def __init__(self, name, old, new=None): super(MovedModule, self).__init__(name) if PY3: if new is None: new = name self.mod = new else: self.mod = old def _resolve(self): return _import_module(self.mod) class MovedAttribute(_LazyDescr): def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None): super(MovedAttribute, self).__init__(name) if PY3: if new_mod is None: new_mod = name self.mod = new_mod if new_attr is None: if old_attr is None: new_attr = name else: new_attr = old_attr self.attr = new_attr else: self.mod = old_mod if old_attr is None: old_attr = name self.attr = old_attr def _resolve(self): module = _import_module(self.mod) return getattr(module, self.attr) class _MovedItems(types.ModuleType): """Lazy loading of moved objects""" _moved_attributes = [ MovedAttribute("cStringIO", "cStringIO", "io", "StringIO"), MovedAttribute("filter", "itertools", "builtins", "ifilter", "filter"), MovedAttribute("input", "__builtin__", "builtins", "raw_input", "input"), MovedAttribute("map", "itertools", "builtins", "imap", "map"), MovedAttribute("reload_module", "__builtin__", "imp", "reload"), MovedAttribute("reduce", "__builtin__", "functools"), MovedAttribute("StringIO", "StringIO", "io"), MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"), MovedAttribute("zip", "itertools", "builtins", "izip", "zip"), MovedModule("builtins", "__builtin__"), MovedModule("configparser", "ConfigParser"), MovedModule("copyreg", "copy_reg"), MovedModule("http_cookiejar", "cookielib", "http.cookiejar"), MovedModule("http_cookies", "Cookie", "http.cookies"), MovedModule("html_entities", "htmlentitydefs", "html.entities"), MovedModule("html_parser", "HTMLParser", "html.parser"), MovedModule("http_client", "httplib", "http.client"), MovedModule("BaseHTTPServer", "BaseHTTPServer", "http.server"), MovedModule("CGIHTTPServer", "CGIHTTPServer", "http.server"), MovedModule("SimpleHTTPServer", "SimpleHTTPServer", "http.server"), MovedModule("cPickle", "cPickle", "pickle"), MovedModule("queue", "Queue"), MovedModule("reprlib", "repr"), MovedModule("socketserver", "SocketServer"), MovedModule("tkinter", "Tkinter"), MovedModule("tkinter_dialog", "Dialog", "tkinter.dialog"), MovedModule("tkinter_filedialog", "FileDialog", "tkinter.filedialog"), MovedModule("tkinter_scrolledtext", "ScrolledText", "tkinter.scrolledtext"), MovedModule("tkinter_simpledialog", "SimpleDialog", "tkinter.simpledialog"), MovedModule("tkinter_tix", "Tix", "tkinter.tix"), MovedModule("tkinter_constants", "Tkconstants", "tkinter.constants"), MovedModule("tkinter_dnd", "Tkdnd", "tkinter.dnd"), MovedModule("tkinter_colorchooser", "tkColorChooser", "tkinter.colorchooser"), MovedModule("tkinter_commondialog", "tkCommonDialog", "tkinter.commondialog"), MovedModule("tkinter_tkfiledialog", "tkFileDialog", "tkinter.filedialog"), MovedModule("tkinter_font", "tkFont", "tkinter.font"), MovedModule("tkinter_messagebox", "tkMessageBox", "tkinter.messagebox"), MovedModule("tkinter_tksimpledialog", "tkSimpleDialog", "tkinter.simpledialog"), MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"), MovedModule("winreg", "_winreg"), ] for attr in _moved_attributes: setattr(_MovedItems, attr.name, attr) del attr moves = sys.modules["six.moves"] = _MovedItems("moves") def add_move(move): """Add an item to six.moves.""" setattr(_MovedItems, move.name, move) def remove_move(name): """Remove item from six.moves.""" try: delattr(_MovedItems, name) except AttributeError: try: del moves.__dict__[name] except KeyError: raise AttributeError("no such move, %r" % (name,)) if PY3: _meth_func = "__func__" _meth_self = "__self__" _func_code = "__code__" _func_defaults = "__defaults__" _iterkeys = "keys" _itervalues = "values" _iteritems = "items" else: _meth_func = "im_func" _meth_self = "im_self" _func_code = "func_code" _func_defaults = "func_defaults" _iterkeys = "iterkeys" _itervalues = "itervalues" _iteritems = "iteritems" try: advance_iterator = next except NameError: def advance_iterator(it): return it.next() next = advance_iterator if PY3: create_bound_method = types.MethodType def get_unbound_function(unbound): return unbound Iterator = object def callable(obj): return any("__call__" in klass.__dict__ for klass in type(obj).__mro__) else: def create_bound_method(function, instance): return types.MethodType(function, instance, instance.__class__) def get_unbound_function(unbound): return unbound.im_func class Iterator(object): def next(self): return type(self).__next__(self) callable = callable _add_doc(get_unbound_function, """Get the function out of a possibly unbound function""") get_method_function = operator.attrgetter(_meth_func) get_method_self = operator.attrgetter(_meth_self) get_function_code = operator.attrgetter(_func_code) get_function_defaults = operator.attrgetter(_func_defaults) def iterkeys(d): """Return an iterator over the keys of a dictionary.""" return iter(getattr(d, _iterkeys)()) def itervalues(d): """Return an iterator over the values of a dictionary.""" return iter(getattr(d, _itervalues)()) def iteritems(d): """Return an iterator over the (key, value) pairs of a dictionary.""" return iter(getattr(d, _iteritems)()) if PY3: def b(s, encoding='utf-8'): return s.encode(encoding) def u(s, encoding='utf-8'): return s def bytes_to_str(b): return str(b, "unicode_escape") if sys.version_info[1] <= 1: def int2byte(i): return bytes((i,)) else: # This is about 2x faster than the implementation above on 3.2+ int2byte = operator.methodcaller("to_bytes", 1, "big") import io StringIO = io.StringIO BytesIO = io.BytesIO else: def b(s, encoding='utf-8'): return s def u(s, encoding='utf-8'): return unicode(s, encoding) def bytes_to_str(s): return s int2byte = chr import StringIO StringIO = BytesIO = StringIO.StringIO _add_doc(b, """Byte literal""") _add_doc(u, """Text literal""") if PY3: import builtins exec_ = getattr(builtins, "exec") def reraise(tp, value, tb=None): if value.__traceback__ is not tb: raise value.with_traceback(tb) raise value print_ = getattr(builtins, "print") del builtins else: def exec_(code, globs=None, locs=None): """Execute code in a namespace.""" if globs is None: frame = sys._getframe(1) globs = frame.f_globals if locs is None: locs = frame.f_locals del frame elif locs is None: locs = globs exec("""exec code in globs, locs""") exec_("""def reraise(tp, value, tb=None): raise tp, value, tb """) def print_(*args, **kwargs): """The new-style print function.""" fp = kwargs.pop("file", sys.stdout) if fp is None: return def write(data): if not isinstance(data, basestring): data = str(data) fp.write(data) want_unicode = False sep = kwargs.pop("sep", None) if sep is not None: if isinstance(sep, unicode): want_unicode = True elif not isinstance(sep, str): raise TypeError("sep must be None or a string") end = kwargs.pop("end", None) if end is not None: if isinstance(end, unicode): want_unicode = True elif not isinstance(end, str): raise TypeError("end must be None or a string") if kwargs: raise TypeError("invalid keyword arguments to print()") if not want_unicode: for arg in args: if isinstance(arg, unicode): want_unicode = True break if want_unicode: newline = unicode("\n") space = unicode(" ") else: newline = "\n" space = " " if sep is None: sep = space if end is None: end = newline for i, arg in enumerate(args): if i: write(sep) write(arg) write(end) _add_doc(reraise, """Reraise an exception.""") def with_metaclass(meta, base=object): """Create a base class with a metaclass.""" return meta("NewBase", (base,), {}) circuits-3.1.0/circuits/version.py0000644000014400001440000000045412425013527020221 0ustar prologicusers00000000000000# Package: version # Date: 12th October 2013 # Author: James Mills, j dot mills at griffith dot edu dot au """Version Module So we only have to maintain version information in one place! """ version_info = (3, 1, 0) # (major, minor, patch, dev?) version = ".".join(map(str, version_info)) circuits-3.1.0/circuits/node/0000755000014400001440000000000012425013643017103 5ustar prologicusers00000000000000circuits-3.1.0/circuits/node/__init__.py0000644000014400001440000000027012402037676021222 0ustar prologicusers00000000000000# Module: node # Date: ... # Author: ... """Node Distributed and Inter-Processing support for circuits """ from .node import Node from .events import remote # flake8: noqa circuits-3.1.0/circuits/node/server.py0000644000014400001440000000365712410512343020771 0ustar prologicusers00000000000000# Module: server # Date: ... # Author: ... """Server ... """ from circuits.core import Value from circuits.net.events import write from circuits.net.sockets import TCPServer from circuits import handler, BaseComponent, Event from .utils import load_event, dump_value DELIMITER = b"\r\n\r\n" class Server(BaseComponent): """Server ... """ channel = "node" def __init__(self, bind, channel=channel, **kwargs): super(Server, self).__init__(channel=channel, **kwargs) self._buffers = {} self.__server_event_firewall = kwargs.get( 'server_event_firewall', None ) self.transport = TCPServer(bind, channel=self.channel, **kwargs).register(self) @handler('_process_packet') def _process_packet(self, sock, packet): event, id = load_event(packet) if self.__server_event_firewall and \ not self.__server_event_firewall(event, sock): value = Value(event, self) else: value = yield self.call(event, *event.channels) value.notify = True value.node_trn = id value.node_sock = sock self.send(value) def send(self, v): data = dump_value(v) packet = data.encode("utf-8") + DELIMITER self.fire(write(v.node_sock, packet)) @handler("read") def _on_read(self, sock, data): buffer = self._buffers.get(sock, b"") buffer += data delimiter = buffer.find(DELIMITER) if delimiter > 0: packet = buffer[:delimiter].decode("utf-8") self._buffers[sock] = buffer[(delimiter + len(DELIMITER)):] self.fire(Event.create('_process_packet', sock, packet)) @property def host(self): if hasattr(self, "transport"): return self.transport.host @property def port(self): if hasattr(self, "transport"): return self.transport.port circuits-3.1.0/circuits/node/events.py0000644000014400001440000000050112402037676020764 0ustar prologicusers00000000000000# Module: events # Date: ... # Author: ... """Events ... """ from circuits import Event class packet(Event): """packet Event""" class remote(Event): """remote Event ... """ def __init__(self, event, node, channel=None): super(remote, self).__init__(event, node, channel=None) circuits-3.1.0/circuits/node/node.py0000644000014400001440000000265412410512343020404 0ustar prologicusers00000000000000# Module: node # Date: ... # Author: ... """Node ... """ from .client import Client from .server import Server from circuits import handler, BaseComponent class Node(BaseComponent): """Node ... """ channel = "node" def __init__(self, bind=None, channel=channel, **kwargs): super(Node, self).__init__(channel=channel, **kwargs) self.bind = bind self.nodes = {} self.__client_event_firewall = kwargs.get( 'client_event_firewall', None ) if self.bind is not None: self.server = Server( self.bind, channel=channel, **kwargs ).register(self) else: self.server = None def add(self, name, host, port, **kwargs): channel = kwargs['channel'] if 'channel' in kwargs else \ '%s_client_%s' % (self.channel, name) node = Client(host, port, channel=channel, **kwargs) node.register(self) self.nodes[name] = node return channel @handler("remote") def _on_remote(self, event, e, client_name, channel=None): if self.__client_event_firewall and \ not self.__client_event_firewall(event, client_name, channel): return node = self.nodes[client_name] if channel is not None: e.channels = (channel,) return node.send(event, e) circuits-3.1.0/circuits/node/utils.py0000644000014400001440000000245612402037676020633 0ustar prologicusers00000000000000# Package: utils # Date: ... # Author: ... """Utils ... """ import json from circuits.core import Event from circuits.six import bytes_to_str, text_type def load_event(s): data = json.loads(s) name = bytes_to_str(data["name"].encode("utf-8")) args = [] for arg in data["args"]: if isinstance(arg, text_type): arg = arg.encode("utf-8") args.append(arg) kwargs = {} for k, v in data["kwargs"].items(): if isinstance(v, text_type): v = v.encode("utf-8") kwargs[str(k)] = v e = Event.create(name, *args, **kwargs) e.success = bool(data["success"]) e.failure = bool(data["failure"]) e.notify = bool(data["notify"]) e.channels = tuple(data["channels"]) return e, data["id"] def dump_event(e, id): data = { "id": id, "name": e.name, "args": e.args, "kwargs": e.kwargs, "success": e.success, "failure": e.failure, "channels": e.channels, "notify": e.notify } return json.dumps(data) def dump_value(v): data = { "id": v.node_trn, "errors": v.errors, "value": v._value, } return json.dumps(data) def load_value(v): data = json.loads(v) return data['value'], data['id'], data['errors'] circuits-3.1.0/circuits/node/client.py0000644000014400001440000000344412410512343020733 0ustar prologicusers00000000000000# Module: client # Date: ... # Author: ... """Client ... """ from weakref import WeakValueDictionary from circuits.net.sockets import TCPClient from circuits import handler, BaseComponent from circuits.net.events import close, connect, write from .utils import dump_event, load_value DELIMITER = b"\r\n\r\n" class Client(BaseComponent): """Client ... """ channel = "node" def __init__(self, host, port, channel=channel, **kwargs): super(Client, self).__init__(channel=channel, **kwargs) self._host = host self._port = port self._nid = 0 self._buffer = b"" self._values = {} TCPClient(channel=self.channel, **kwargs).register(self) @handler("ready") def _on_ready(self, component): self.fire(connect(self._host, self._port)) def _process_packet(self, packet): value, id, errors = load_value(packet) if id in self._values: self._values[id].value = value self._values[id].errors = errors def close(self): self.fire(close()) def connect(self, host, port): self.fire(connect(host, port)) def send(self, event, e): id = self._nid self._nid += 1 self._values[id] = event.value data = dump_event(e, id) packet = data.encode("utf-8") + DELIMITER self.fire(write(packet)) while not self._values[id].result: yield del(self._values[id]) @handler("read") def _on_read(self, data): self._buffer += data delimiter = self._buffer.find(DELIMITER) if delimiter > 0: packet = self._buffer[:delimiter].decode("utf-8") self._buffer = self._buffer[(delimiter + len(DELIMITER)):] self._process_packet(packet) circuits-3.1.0/circuits/io/0000755000014400001440000000000012425013643016565 5ustar prologicusers00000000000000circuits-3.1.0/circuits/io/__init__.py0000644000014400001440000000132112402037676020702 0ustar prologicusers00000000000000# Module: io # Date: 4th August 2004 # Author: James Mills """I/O Support This package contains various I/O Components. Provided are a generic File Component, StdIn, StdOut and StdErr components. Instances of StdIn, StdOut and StdErr are also created by importing this package. """ import sys from .file import File from .process import Process from .events import close, open, seek, write try: from .notify import Notify except: pass try: from .serial import Serial except: pass try: stdin = File(sys.stdin, channel="stdin") stdout = File(sys.stdout, channel="stdout") stderr = File(sys.stderr, channel="stderr") except: pass # flake8: noqa circuits-3.1.0/circuits/io/serial.py0000644000014400001440000001110512402037676020423 0ustar prologicusers00000000000000# Module: serial # Date: 4th August 2004 # Author: James Mills """Serial I/O This module implements basic Serial (RS232) I/O. """ import os import select from collections import deque from circuits.core import Component, handler, Event from circuits.core.pollers import BasePoller, Poller from circuits.core.utils import findcmp from circuits.tools import tryimport from circuits.six import binary_type, string_types from .events import closed, error, opened, read, ready, close serial = tryimport("serial") TIMEOUT = 0.2 BUFSIZE = 4096 class _open(Event): """_open Event""" class Serial(Component): channel = "serial" def __init__(self, port, baudrate=115200, bufsize=BUFSIZE, timeout=TIMEOUT, channel=channel): super(Serial, self).__init__(channel=channel) if serial is None: raise RuntimeError("No serial support available") self._port = port self._baudrate = baudrate self._bufsize = bufsize self._serial = None self._poller = None self._buffer = deque() self._closeflag = False @handler("ready") def _on_ready(self, component): self.fire(_open(), self.channel) @handler("_open") def _on_open(self, port=None, baudrate=None, bufsize=None): self._port = port or self._port self._baudrate = baudrate or self._baudrate self._bufsize = bufsize or self._bufsize self._serial = serial.Serial(port=self._port, baudrate=self._baudrate, timeout=0) self._fd = self._serial.fileno() # not portable! self._poller.addReader(self, self._fd) self.fire(opened(self._port, self._baudrate)) @handler("registered", "started", channel="*") def _on_registered_or_started(self, component, manager=None): if self._poller is None: if isinstance(component, BasePoller): self._poller = component self.fire(ready(self)) else: if component is not self: return component = findcmp(self.root, BasePoller) if component is not None: self._poller = component self.fire(ready(self)) else: self._poller = Poller().register(self) self.fire(ready(self)) @handler("stopped", channel="*") def _on_stopped(self, component): self.fire(close()) @handler("prepare_unregister", channel="*") def _on_prepare_unregister(self, event, c): if event.in_subtree(self): self._close() def _close(self): if self._closeflag: return self._poller.discard(self._fd) self._buffer.clear() self._closeflag = False self._connected = False try: self._serial.close() except: pass self.fire(closed()) def close(self): if not self._buffer: self._close() elif not self._closeflag: self._closeflag = True def _read(self): try: data = self._serial.read(self._bufsize) if not isinstance(data, binary_type): data = data.encode(self._encoding) if data: self.fire(read(data)).notify = True except (OSError, IOError) as e: self.fire(error(e)) self._close() def _write(self, data): try: if not isinstance(data, binary_type): data = data.encode(self._encoding) try: nbytes = self._serial.write(data) except (serial.SerialTimeoutException) as e: nbytes = 0 if nbytes < len(data): self._buffer.appendleft(data[nbytes:]) except (OSError, IOError) as e: self.fire(error(e)) self._close() def write(self, data): if self._poller is not None and not self._poller.isWriting(self._fd): self._poller.addWriter(self, self._fd) self._buffer.append(data) @handler("_disconnect") def __on_disconnect(self, sock): self._close() @handler("_read") def __on_read(self, sock): self._read() @handler("_write") def __on_write(self, sock): if self._buffer: data = self._buffer.popleft() self._write(data) if not self._buffer: if self._closeflag: self._close() elif self._poller.isWriting(self._fd): self._poller.removeWriter(self._fd) circuits-3.1.0/circuits/io/process.py0000644000014400001440000001013512402037676020624 0ustar prologicusers00000000000000# Module: process # Date: 4th January 2013 # Author: James Mills """Process This module implements a wrapper for basic ``subprocess.Popen`` functionality. """ from io import BytesIO from subprocess import Popen, PIPE from circuits.core.manager import TIMEOUT from circuits import handler, BaseComponent from .file import File from .events import started, stopped, write class Process(BaseComponent): channel = "process" def init(self, args, cwd=None, shell=False): self.args = args self.cwd = cwd self.shell = shell self.p = None self.stderr = BytesIO() self.stdout = BytesIO() self._status = None self._terminated = False self._stdout_closed = False self._stderr_closed = False self._stdin = None self._stderr = None self._stdout = None self._stdin_closed_handler = None self._stderr_read_handler = None self._stdout_read_handler = None self._stderr_closed_handler = None self._stdout_closed_handler = None def start(self): self.p = Popen( self.args, cwd=self.cwd, shell=self.shell, stdin=PIPE, stderr=PIPE, stdout=PIPE ) self.stderr = BytesIO() self.stdout = BytesIO() self._status = None self._stdin = File( self.p.stdin, channel="{0:d}.stdin".format(self.p.pid) ).register(self) self._stderr = File( self.p.stderr, channel="{0:d}.stderr".format(self.p.pid) ).register(self) self._stdout = File( self.p.stdout, channel="{0:d}.stdout".format(self.p.pid) ).register(self) self._stderr_read_handler = self.addHandler( handler("read", channel="{0:d}.stderr".format(self.p.pid))( self.__class__._on_stderr_read ) ) self._stdout_read_handler = self.addHandler( handler("read", channel="{0:d}.stdout".format(self.p.pid))( self.__class__._on_stdout_read ) ) self._stderr_closed_handler = self.addHandler( handler("closed", channel="{0:d}.stderr".format(self.p.pid))( self.__class__._on_stderr_closed ) ) self._stdout_closed_handler = self.addHandler( handler("closed", channel="{0:d}.stdout".format(self.p.pid))( self.__class__._on_stdout_closed ) ) self.fire(started(self)) @staticmethod def _on_stdout_closed(self): self._stdout_closed = True @staticmethod def _on_stderr_closed(self): self._stderr_closed = True def stop(self): if self.p is not None: self.p.terminate() def kill(self): self.p.kill() def signal(self, signal): self.p.send_signal(signal) def wait(self): return self.p.wait() def write(self, data): self.fire(write(data), "{0:d}.stdin".format(self.p.pid)) @property def status(self): if getattr(self, "p", None) is not None: return self.p.poll() @staticmethod def _on_stderr_read(self, data): self.stderr.write(data) @staticmethod def _on_stdout_read(self, data): self.stdout.write(data) @handler("generate_events") def _on_generate_events(self, event): if self.p is not None and self._status is None: self._status = self.p.poll() if self._status is not None and self._stderr_closed \ and self._stdout_closed and not self._terminated: self._terminated = True self.removeHandler(self._stderr_read_handler) self.removeHandler(self._stdout_read_handler) self.removeHandler(self._stderr_closed_handler) self.removeHandler(self._stdout_closed_handler) self.fire(stopped(self)) event.reduce_time_left(0) event.stop() else: event.reduce_time_left(TIMEOUT) circuits-3.1.0/circuits/io/events.py0000644000014400001440000000203312402037676020450 0ustar prologicusers00000000000000# Module: events # Date: 10th June 2011 # Author: James Mills """I/O Events This module implements commonly used I/O events used by other I/O modules. """ from circuits.core import Event class eof(Event): """eof Event""" class seek(Event): """seek Event""" class read(Event): """read Event""" class close(Event): """close Event""" class write(Event): """write Event""" class error(Event): """error Event""" class open(Event): """open Event""" class opened(Event): """opened Event""" class closed(Event): """closed Event""" class ready(Event): """ready Event""" class started(Event): """started Event""" class stopped(Event): """stopped Event""" class moved(Event): """moved Event""" class created(Event): """created Event""" class deleted(Event): """deleted Event""" class accessed(Event): """accessed Event""" class modified(Event): """modified Event""" class unmounted(Event): """unmounted Event""" circuits-3.1.0/circuits/io/notify.py0000644000014400001440000000645412402037676020467 0ustar prologicusers00000000000000# Module: notify # Date: 2nd March 2009 # Author: James Mills, prologic at shortcircuit dot net dot au """File Notification Support A Component wrapping the inotify API using the pyinotify library. """ try: from pyinotify import IN_UNMOUNT from pyinotify import WatchManager, Notifier, ALL_EVENTS from pyinotify import IN_ACCESS, IN_MODIFY, IN_ATTRIB, IN_CLOSE_WRITE from pyinotify import IN_CREATE, IN_DELETE, IN_DELETE_SELF, IN_MOVE_SELF from pyinotify import IN_CLOSE_NOWRITE, IN_OPEN, IN_MOVED_FROM, IN_MOVED_TO except ImportError: raise Exception("No pyinotify support available. Is pyinotify installed?") from circuits.core.utils import findcmp from circuits.core import handler, BaseComponent from circuits.core.pollers import BasePoller, Poller from .events import accessed, closed, created, deleted, modified, moved, opened, ready, unmounted MASK = ALL_EVENTS EVENT_MAP = { IN_MOVED_TO: moved, IN_MOVE_SELF: moved, IN_MOVED_FROM: moved, IN_CLOSE_WRITE: closed, IN_CLOSE_NOWRITE: closed, IN_OPEN: opened, IN_DELETE_SELF: deleted, IN_DELETE: deleted, IN_CREATE: created, IN_ACCESS: accessed, IN_MODIFY: modified, IN_ATTRIB: modified, IN_UNMOUNT: unmounted, } class Notify(BaseComponent): channel = "notify" def __init__(self, channel=channel): super(Notify, self).__init__(channel=channel) self._poller = None self._wm = WatchManager() self._notifier = Notifier(self._wm, self._on_process_events) def _on_process_events(self, event): dir = event.dir mask = event.mask path = event.path name = event.name pathname = event.pathname for k, v in EVENT_MAP.items(): if mask & k: self.fire(v(name, path, pathname, dir)) def add_path(self, path, mask=None, recursive=False): mask = mask or MASK self._wm.add_watch(path, mask, rec=recursive) def remove_path(self, path, recursive=False): wd = self._wm.get_wd(path) if wd: self._wm.rm_watch(wd, rec=recursive) @handler("ready") def _on_ready(self, component): self._poller.addReader(self, self._notifier._fd) @handler("registered", channel="*") def _on_registered(self, component, manager): if self._poller is None: if isinstance(component, BasePoller): self._poller = component self.fire(ready(self)) else: if component is not self: return component = findcmp(self.root, BasePoller) if component is not None: self._poller = component self.fire(ready(self)) else: self._poller = Poller().register(self) self.fire(ready(self)) @handler("started", channel="*", priority=1) def _on_started(self, event, component): if self._poller is None: self._poller = Poller().register(self) self.fire(ready(self)) event.stop() @handler("_read", priority=1) def __on_read(self, fd): self._notifier.read_events() self._notifier.process_events() circuits-3.1.0/circuits/io/file.py0000644000014400001440000001366312402037676020076 0ustar prologicusers00000000000000# Module: file # Date: 4th August 2004 # Author: James Mills """File I/O This module implements a wrapper for basic File I/O. """ try: from os import O_NONBLOCK except ImportError: # If it fails, that's fine. the fcntl import # will fail anyway. pass from collections import deque from os import read as fd_read from os import write as fd_write from sys import getdefaultencoding from errno import EINTR, EWOULDBLOCK from circuits.tools import tryimport from circuits.core.utils import findcmp from circuits.core import handler, Component, Event from circuits.core.pollers import BasePoller, Poller from circuits.six import binary_type, string_types, PY3 from .events import close, closed, eof, error, opened, read, ready fcntl = tryimport("fcntl") TIMEOUT = 0.2 BUFSIZE = 4096 class _open(Event): """_open Event""" class File(Component): channel = "file" def init(self, filename, mode="r", bufsize=BUFSIZE, encoding=None, channel=channel): self._mode = mode self._bufsize = bufsize self._filename = filename self._encoding = encoding or getdefaultencoding() self._fd = None self._poller = None self._buffer = deque() self._closeflag = False @property def closed(self): return getattr(self._fd, "closed", True) \ if hasattr(self, "_fd") else True @property def filename(self): return getattr(self, "_filename", None) @property def mode(self): return getattr(self, "_mode", None) @handler("ready") def _on_ready(self, component): self.fire(_open(), self.channel) @handler("_open") def _on_open(self, filename=None, mode=None, bufsize=None): self._filename = filename or self._filename self._bufsize = bufsize or self._bufsize self._mode = mode or self._mode if isinstance(self._filename, string_types[0]): kwargs = {"encoding": self._encoding} if PY3 else {} self._fd = open(self.filename, self.mode, **kwargs) else: self._fd = self._filename self._mode = self._fd.mode self._filename = self._fd.name self._encoding = getattr(self._fd, "encoding", self._encoding) if fcntl is not None: # Set non-blocking file descriptor (non-portable) flag = fcntl.fcntl(self._fd, fcntl.F_GETFL) flag = flag | O_NONBLOCK fcntl.fcntl(self._fd, fcntl.F_SETFL, flag) if "r" in self.mode or "+" in self.mode: self._poller.addReader(self, self._fd) self.fire(opened(self.filename, self.mode)) @handler("registered", "started", channel="*") def _on_registered_or_started(self, component, manager=None): if self._poller is None: if isinstance(component, BasePoller): self._poller = component self.fire(ready(self)) else: if component is not self: return component = findcmp(self.root, BasePoller) if component is not None: self._poller = component self.fire(ready(self)) else: self._poller = Poller().register(self) self.fire(ready(self)) @handler("stopped", channel="*") def _on_stopped(self, component): self.fire(close()) @handler("prepare_unregister", channel="*") def _on_prepare_unregister(self, event, c): if event.in_subtree(self): self._close() def _close(self): if self.closed: return self._poller.discard(self._fd) self._buffer.clear() self._closeflag = False self._connected = False try: self._fd.close() except: pass self.fire(closed()) def close(self): if not self._buffer: self._close() elif not self._closeflag: self._closeflag = True def _read(self): try: data = fd_read(self._fd.fileno(), self._bufsize) if not isinstance(data, binary_type): data = data.encode(self._encoding) if data: self.fire(read(data)).notify = True else: self.fire(eof()) if not any(m in self.mode for m in ("a", "+")): self.close() else: self._poller.discard(self._fd) except (OSError, IOError) as e: if e.args[0] in (EWOULDBLOCK, EINTR): return else: self.fire(error(e)) self._close() def seek(self, offset, whence=0): self._fd.seek(offset, whence) def _write(self, data): try: if not isinstance(data, binary_type): data = data.encode(self._encoding) nbytes = fd_write(self._fd.fileno(), data) if nbytes < len(data): self._buffer.appendleft(data[nbytes:]) except (OSError, IOError) as e: if e.args[0] in (EWOULDBLOCK, EINTR): return else: self.fire(error(e)) self._close() def write(self, data): if self._poller is not None and not self._poller.isWriting(self._fd): self._poller.addWriter(self, self._fd) self._buffer.append(data) @handler("_disconnect") def __on_disconnect(self, sock): self._close() @handler("_read") def __on_read(self, sock): self._read() @handler("_write") def __on_write(self, sock): if self._buffer: data = self._buffer.popleft() self._write(data) if not self._buffer: if self._closeflag: self._close() elif self._poller.isWriting(self._fd): self._poller.removeWriter(self._fd) circuits-3.1.0/circuits/web/0000755000014400001440000000000012425013643016733 5ustar prologicusers00000000000000circuits-3.1.0/circuits/web/parsers/0000755000014400001440000000000012425013643020412 5ustar prologicusers00000000000000circuits-3.1.0/circuits/web/parsers/__init__.py0000644000014400001440000000043512402037676022534 0ustar prologicusers00000000000000# Package: parsers # Date: 26th March 2013 # Author: James Mills, prologic at shortcircuit dot net dot au """circuits.web parsers""" from .multipart import MultipartParser from .querystring import QueryStringParser from .http import HttpParser, BAD_FIRST_LINE # flake8: noqa circuits-3.1.0/circuits/web/parsers/querystring.py0000644000014400001440000001017112402037676023367 0ustar prologicusers00000000000000# -*- coding: utf-8 -*- try: from urlparse import parse_qsl except ImportError: from urllib.parse import parse_qsl # NOQA from circuits.six import iteritems, string_types class QueryStringToken(object): ARRAY = "ARRAY" OBJECT = "OBJECT" KEY = "KEY" class QueryStringParser(object): def __init__(self, data): self.result = {} if isinstance(data, string_types[0]): sorted_pairs = self._sorted_from_string(data) else: sorted_pairs = self._sorted_from_obj(data) [self.process(x) for x in sorted_pairs] def _sorted_from_string(self, data): stage1 = parse_qsl(data, keep_blank_values=True) stage2 = [(x[0].strip(), x[1].strip()) for x in stage1] return sorted(stage2, key=lambda p: p[0]) def _sorted_from_obj(self, data): # data is a list of the type generated by parse_qsl if isinstance(data, list): items = data else: # complex objects: try: # django.http.QueryDict, items = [(i[0], j) for i in data.lists() for j in i[1]] except AttributeError: # webob.multidict.MultiDict # werkzeug.datastructures.MultiDict items = iteritems(data) return sorted(items, key=lambda p: p[0]) def process(self, pair): key = pair[0] value = pair[1] #faster than invoking a regex try: key.index("[") self.parse(key, value) return except ValueError: pass try: key.index(".") self.parse(key, value) return except ValueError: pass self.result[key] = value def parse(self, key, value): ref = self.result tokens = self.tokens(key) for token in tokens: token_type, key = token if token_type == QueryStringToken.ARRAY: if key not in ref: ref[key] = [] ref = ref[key] elif token_type == QueryStringToken.OBJECT: if key not in ref: ref[key] = {} ref = ref[key] elif token_type == QueryStringToken.KEY: try: ref = ref[key] next(tokens) # TypeError is for pet[]=lucy&pet[]=ollie # if the array key is empty a type error will be raised except (IndexError, KeyError, TypeError): # the index didn't exist # so we look ahead to see what we are setting # there is not a next token # set the value try: next_token = next(tokens) if next_token[0] == QueryStringToken.ARRAY: ref.append([]) ref = ref[key] elif next_token[0] == QueryStringToken.OBJECT: try: ref[key] = {} except IndexError: ref.append({}) ref = ref[key] except StopIteration: try: ref.append(value) except AttributeError: ref[key] = value return def tokens(self, key): buf = "" for char in key: if char == "[": yield QueryStringToken.ARRAY, buf buf = "" elif char == ".": yield QueryStringToken.OBJECT, buf buf = "" elif char == "]": try: yield QueryStringToken.KEY, int(buf) buf = "" except ValueError: yield QueryStringToken.KEY, None else: buf = buf + char if len(buf) > 0: yield QueryStringToken.KEY, buf else: raise StopIteration() circuits-3.1.0/circuits/web/parsers/multipart.py0000644000014400001440000004242412402037676023022 0ustar prologicusers00000000000000# -*- coding: utf-8 -*- ''' Parser for multipart/form-data ============================== This module provides a parser for the multipart/form-data format. It can read from a file, a socket or a WSGI environment. The parser can be used to replace cgi.FieldStorage (without the bugs) and works with Python 2.5+ and 3.x (2to3). Licence (MIT) ------------- Copyright (c) 2010, Marcel Hellkamp. Inspired by the Werkzeug library: http://werkzeug.pocoo.org/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ''' __author__ = 'Marcel Hellkamp' __version__ = '0.1' __license__ = 'MIT' from tempfile import TemporaryFile from wsgiref.headers import Headers import re, sys try: from urlparse import parse_qs except ImportError: # pragma: no cover (fallback for Python 2.5) from cgi import parse_qs try: from io import BytesIO except ImportError: # pragma: no cover (fallback for Python 2.5) from StringIO import StringIO as BytesIO from circuits.six import text_type ############################################################################## ################################ Helper & Misc ################################ ############################################################################## # Some of these were copied from bottle: http://bottle.paws.de/ try: from collections import MutableMapping as DictMixin except ImportError: # pragma: no cover (fallback for Python 2.5) from UserDict import DictMixin class MultiDict(DictMixin): """ A dict that remembers old values for each key """ def __init__(self, *a, **k): self.dict = dict() for k, v in dict(*a, **k).iteritems(): self[k] = v def __len__(self): return len(self.dict) def __iter__(self): return iter(self.dict) def __contains__(self, key): return key in self.dict def __delitem__(self, key): del self.dict[key] def keys(self): return self.dict.keys() def __getitem__(self, key): return self.get(key, KeyError, -1) def __setitem__(self, key, value): self.append(key, value) def append(self, key, value): self.dict.setdefault(key, []).append(value) def replace(self, key, value): self.dict[key] = [value] def getall(self, key): return self.dict.get(key) or [] def get(self, key, default=None, index=-1): if key not in self.dict and default != KeyError: return [default][index] return self.dict[key][index] def iterallitems(self): for key, values in self.dict.iteritems(): for value in values: yield key, value def tob(data, enc='utf8'): # Convert strings to bytes (py2 and py3) return data.encode(enc) if isinstance(data, text_type) else data def copy_file(stream, target, maxread=-1, buffer_size=2*16): ''' Read from :stream and write to :target until :maxread or EOF. ''' size, read = 0, stream.read while 1: to_read = buffer_size if maxread < 0 else min(buffer_size, maxread-size) part = read(to_read) if not part: return size target.write(part) size += len(part) ############################################################################## ################################ Header Parser ################################ ############################################################################## _special = re.escape('()<>@,;:\\"/[]?={} \t') _re_special = re.compile('[%s]' % _special) _qstr = '"(?:\\\\.|[^"])*"' # Quoted string _value = '(?:[^%s]+|%s)' % (_special, _qstr) # Save or quoted string _option = '(?:;|^)\s*([^%s]+)\s*=\s*(%s)' % (_special, _value) _re_option = re.compile(_option) # key=value part of an Content-Type like header def header_quote(val): if not _re_special.search(val): return val return '"' + val.replace('\\','\\\\').replace('"','\\"') + '"' def header_unquote(val, filename=False): if val[0] == val[-1] == '"': val = val[1:-1] if val[1:3] == ':\\' or val[:2] == '\\\\': val = val.split('\\')[-1] # fix ie6 bug: full path --> filename return val.replace('\\\\','\\').replace('\\"','"') return val def parse_options_header(header, options=None): if ';' not in header: return header.lower().strip(), {} ctype, tail = header.split(';', 1) options = options or {} for match in _re_option.finditer(tail): key = match.group(1).lower() value = header_unquote(match.group(2), key=='filename') options[key] = value return ctype, options ############################################################################## ################################## Multipart ################################## ############################################################################## class MultipartError(ValueError): pass class MultipartParser(object): def __init__(self, stream, boundary, content_length=-1, disk_limit=2**30, mem_limit=2**20, memfile_limit=2**18, buffer_size=2**16, charset='latin1'): ''' Parse a multipart/form-data byte stream. This object is an iterator over the parts of the message. :param stream: A file-like stream. Must implement ``.read(size)``. :param boundary: The multipart boundary as a byte string. :param content_length: The maximum number of bytes to read. ''' self.stream, self.boundary = stream, boundary self.content_length = content_length self.disk_limit = disk_limit self.memfile_limit = memfile_limit self.mem_limit = min(mem_limit, self.disk_limit) self.buffer_size = min(buffer_size, self.mem_limit) self.charset = charset if self.buffer_size - 6 < len(boundary): # "--boundary--\r\n" raise MultipartError('Boundary does not fit into buffer_size.') self._done = [] self._part_iter = None def __iter__(self): ''' Iterate over the parts of the multipart message. ''' if not self._part_iter: self._part_iter = self._iterparse() for part in self._done: yield part for part in self._part_iter: self._done.append(part) yield part def parts(self): ''' Returns a list with all parts of the multipart message. ''' return list(iter(self)) def get(self, name, default=None): ''' Return the first part with that name or a default value (None). ''' for part in self: if name == part.name: return part return default def get_all(self, name): ''' Return a list of parts with that name. ''' return [p for p in self if p.name == name] def _lineiter(self): ''' Iterate over a binary file-like object line by line. Each line is returned as a (line, line_ending) tuple. If the line does not fit into self.buffer_size, line_ending is empty and the rest of the line is returned with the next iteration. ''' read = self.stream.read maxread, maxbuf = self.content_length, self.buffer_size _bcrnl = tob('\r\n') _bcr = _bcrnl[:1] _bnl = _bcrnl[1:] _bempty = _bcrnl[:0] # b'rn'[:0] -> b'' buffer = _bempty # buffer for the last (partial) line while 1: data = read(maxbuf if maxread < 0 else min(maxbuf, maxread)) maxread -= len(data) lines = (buffer+data).splitlines(True) len_first_line = len(lines[0]) # be sure that the first line does not become too big if len_first_line > self.buffer_size: # at the same time don't split a '\r\n' accidentally if (len_first_line == self.buffer_size+1 and lines[0].endswith(_bcrnl)): splitpos = self.buffer_size - 1 else: splitpos = self.buffer_size lines[:1] = [lines[0][:splitpos], lines[0][splitpos:]] if data: buffer = lines[-1] lines = lines[:-1] for line in lines: if line.endswith(_bcrnl): yield line[:-2], _bcrnl elif line.endswith(_bnl): yield line[:-1], _bnl elif line.endswith(_bcr): yield line[:-1], _bcr else: yield line, _bempty if not data: break def _iterparse(self): lines, line = self._lineiter(), '' separator = tob('--') + tob(self.boundary) terminator = tob('--') + tob(self.boundary) + tob('--') # Consume first boundary. Ignore leading blank lines for line, nl in lines: if line: break if line != separator: raise MultipartError("Stream does not start with boundary") # For each part in stream... mem_used, disk_used = 0, 0 # Track used resources to prevent DoS is_tail = False # True if the last line was incomplete (cutted) opts = {'buffer_size': self.buffer_size, 'memfile_limit': self.memfile_limit, 'charset': self.charset} part = MultipartPart(**opts) for line, nl in lines: if line == terminator and not is_tail: part.file.seek(0) yield part break elif line == separator and not is_tail: if part.is_buffered(): mem_used += part.size else: disk_used += part.size part.file.seek(0) yield part part = MultipartPart(**opts) else: is_tail = not nl # The next line continues this one part.feed(line, nl) if part.is_buffered(): if part.size + mem_used > self.mem_limit: raise MultipartError("Memory limit reached.") elif part.size + disk_used > self.disk_limit: raise MultipartError("Disk limit reached.") if line != terminator: raise MultipartError("Unexpected end of multipart stream.") class MultipartPart(object): def __init__(self, buffer_size=2**16, memfile_limit=2**18, charset='latin1'): self.headerlist = [] self.headers = None self.file = False self.size = 0 self._buf = tob('') self.disposition, self.name, self.filename = None, None, None self.content_type, self.charset = None, charset self.memfile_limit = memfile_limit self.buffer_size = buffer_size def feed(self, line, nl=''): if self.file: return self.write_body(line, nl) return self.write_header(line, nl) def write_header(self, line, nl): line = line.decode(self.charset or 'latin1') if not nl: raise MultipartError('Unexpected end of line in header.') if not line.strip(): # blank line -> end of header segment self.finish_header() elif line[0] in ' \t' and self.headerlist: name, value = self.headerlist.pop() self.headerlist.append((name, value+line.strip())) else: if ':' not in line: raise MultipartError("Syntax error in header: No colon.") name, value = line.split(':', 1) self.headerlist.append((name.strip(), value.strip())) def write_body(self, line, nl): if not line and not nl: return # This does not even flush the buffer self.size += len(line) + len(self._buf) self.file.write(self._buf + line) self._buf = nl if self.content_length > 0 and self.size > self.content_length: raise MultipartError('Size of body exceeds Content-Length header.') if self.size > self.memfile_limit and isinstance(self.file, BytesIO): # TODO: What about non-file uploads that exceed the memfile_limit? self.file, old = TemporaryFile(mode='w+b'), self.file old.seek(0) copy_file(old, self.file, self.size, self.buffer_size) def finish_header(self): self.file = BytesIO() self.headers = Headers(self.headerlist) cdis = self.headers.get('Content-Disposition','') ctype = self.headers.get('Content-Type','') clen = self.headers.get('Content-Length','-1') if not cdis: raise MultipartError('Content-Disposition header is missing.') self.disposition, self.options = parse_options_header(cdis) self.name = self.options.get('name') self.filename = self.options.get('filename') self.content_type, options = parse_options_header(ctype) self.charset = options.get('charset') or self.charset self.content_length = int(self.headers.get('Content-Length','-1')) def is_buffered(self): ''' Return true if the data is fully buffered in memory.''' return isinstance(self.file, BytesIO) @property def value(self): ''' Data decoded with the specified charset ''' pos = self.file.tell() self.file.seek(0) val = self.file.read() self.file.seek(pos) return val.decode(self.charset) def save_as(self, path): fp = open(path, 'wb') pos = self.file.tell() try: self.file.seek(0) size = copy_file(self.file, fp) finally: self.file.seek(pos) return size ############################################################################## #################################### WSGI #################################### ############################################################################## def parse_form_data(environ, charset='utf8', strict=False, **kw): ''' Parse form data from an environ dict and return a (forms, files) tuple. Both tuple values are dictionaries with the form-field name as a key (text_type) and lists as values (multiple values per key are possible). The forms-dictionary contains form-field values as text_type strings. The files-dictionary contains :class:`MultipartPart` instances, either because the form-field was a file-upload or the value is to big to fit into memory limits. :param environ: An WSGI environment dict. :param charset: The charset to use if unsure. (default: utf8) :param strict: If True, raise :exc:`MultipartError` on any parsing errors. These are silently ignored by default. ''' forms, files = MultiDict(), MultiDict() try: if environ.get('REQUEST_METHOD','GET').upper() not in ('POST', 'PUT'): raise MultipartError("Request method other than POST or PUT.") content_length = int(environ.get('CONTENT_LENGTH', '-1')) content_type = environ.get('CONTENT_TYPE', '') if not content_type: raise MultipartError("Missing Content-Type header.") content_type, options = parse_options_header(content_type) stream = environ.get('wsgi.input') or BytesIO() kw['charset'] = charset = options.get('charset', charset) if content_type == 'multipart/form-data': boundary = options.get('boundary','') if not boundary: raise MultipartError("No boundary for multipart/form-data.") for part in MultipartParser(stream, boundary, content_length, **kw): if part.filename or not part.is_buffered(): files[part.name] = part else: # TODO: Big form-fields are in the files dict. really? forms[part.name] = part.value elif content_type in ('application/x-www-form-urlencoded', 'application/x-url-encoded'): mem_limit = kw.get('mem_limit', 2**20) if content_length > mem_limit: raise MultipartError("Request to big. Increase MAXMEM.") data = stream.read(mem_limit).decode(charset) if stream.read(1): # These is more that does not fit mem_limit raise MultipartError("Request to big. Increase MAXMEM.") data = parse_qs(data, keep_blank_values=True) for key, values in data.iteritems(): for value in values: forms[key] = value else: raise MultipartError("Unsupported content type.") except MultipartError: if strict: raise return forms, files circuits-3.1.0/circuits/web/parsers/http.py0000644000014400001440000003213512407400563021750 0ustar prologicusers00000000000000# -*- coding: utf-8 - # # This file is part of http-parser released under the MIT license. # See the NOTICE for more information. # # This module is liberally borrowed (with modifications) from: https://raw.githubusercontent.com/benoitc/http-parser/master/http_parser/pyparser.py import re import zlib try: import urlparse from urllib import unquote except ImportError: import urllib.parse as urlparse # NOQA from urllib.parse import unquote # NOQA from circuits.six import b, bytes_to_str, MAXSIZE from ..headers import Headers METHOD_RE = re.compile("^[A-Z0-9$-_.]{1,20}$") VERSION_RE = re.compile("^HTTP/(\d+).(\d+)$") STATUS_RE = re.compile("^(\d{3})(?:\s+([\s\w]*))$") HEADER_RE = re.compile("[\x00-\x1F\x7F()<>@,;:/\[\]={} \t\\\\\"]") # errors BAD_FIRST_LINE = 0 INVALID_HEADER = 1 INVALID_CHUNK = 2 class InvalidRequestLine(Exception): """ error raised when first line is invalid """ class InvalidHeader(Exception): """ error raised on invalid header """ class InvalidChunkSize(Exception): """ error raised when we parse an invalid chunk size """ class HttpParser(object): def __init__(self, kind=2, decompress=False): self.kind = kind self.decompress = decompress # errors vars self.errno = None self.errstr = "" # protected variables self._buf = [] self._version = None self._method = None self._status_code = None self._status = None self._reason = None self._url = None self._path = None self._query_string = None self._headers = Headers([]) self._environ = dict() self._chunked = False self._body = [] self._trailers = None self._partial_body = False self._clen = None self._clen_rest = None # private events self.__on_firstline = False self.__on_headers_complete = False self.__on_message_begin = False self.__on_message_complete = False self.__decompress_obj = None def get_version(self): return self._version def get_method(self): return self._method def get_status_code(self): return self._status_code def get_url(self): return self._url def get_scheme(self): return self._scheme def get_path(self): return self._path def get_query_string(self): return self._query_string def get_headers(self): return self._headers def recv_body(self): """ return last chunk of the parsed body""" body = b("").join(self._body) self._body = [] self._partial_body = False return body def recv_body_into(self, barray): """ Receive the last chunk of the parsed bodyand store the data in a buffer rather than creating a new string. """ l = len(barray) body = b("").join(self._body) m = min(len(body), l) data, rest = body[:m], body[m:] barray[0:m] = data if not rest: self._body = [] self._partial_body = False else: self._body = [rest] return m def is_upgrade(self): """ Do we get upgrade header in the request. Useful for websockets """ return self._headers.get('connection', "").lower() == "upgrade" def is_headers_complete(self): """ return True if all headers have been parsed. """ return self.__on_headers_complete def is_partial_body(self): """ return True if a chunk of body have been parsed """ return self._partial_body def is_message_begin(self): """ return True if the parsing start """ return self.__on_message_begin def is_message_complete(self): """ return True if the parsing is done (we get EOF) """ return self.__on_message_complete def is_chunked(self): """ return True if Transfer-Encoding header value is chunked""" return self._chunked def should_keep_alive(self): """ return True if the connection should be kept alive """ hconn = self._headers.get('connection', "").lower() if hconn == "close": return False elif hconn == "keep-alive": return True return self._version == (1, 1) def execute(self, data, length): # end of body can be passed manually by putting a length of 0 if length == 0: self.on_message_complete = True return length # start to parse nb_parsed = 0 while True: if not self.__on_firstline: idx = data.find(b("\r\n")) if idx < 0: self._buf.append(data) return len(data) else: self.__on_firstline = True self._buf.append(data[:idx]) first_line = bytes_to_str(b("").join(self._buf)) nb_parsed = nb_parsed + idx + 2 rest = data[idx+2:] data = b("") if self._parse_firstline(first_line): self._buf = [rest] else: return nb_parsed elif not self.__on_headers_complete: if data: self._buf.append(data) data = b("") try: to_parse = b("").join(self._buf) ret = self._parse_headers(to_parse) if not ret: return length nb_parsed = nb_parsed + (len(to_parse) - ret) except InvalidHeader as e: self.errno = INVALID_HEADER self.errstr = str(e) return nb_parsed elif not self.__on_message_complete: if not self.__on_message_begin: self.__on_message_begin = True if data: self._buf.append(data) data = b("") ret = self._parse_body() if ret is None: return length elif ret < 0: return ret elif ret == 0: self.__on_message_complete = True return length else: nb_parsed = max(length, ret) else: return 0 def _parse_firstline(self, line): try: if self.kind == 2: # auto detect try: self._parse_request_line(line) except InvalidRequestLine: self._parse_response_line(line) elif self.kind == 1: self._parse_response_line(line) elif self.kind == 0: self._parse_request_line(line) except InvalidRequestLine as e: self.errno = BAD_FIRST_LINE self.errstr = str(e) return False return True def _parse_response_line(self, line): bits = line.split(None, 1) if len(bits) != 2: raise InvalidRequestLine(line) # version matchv = VERSION_RE.match(bits[0]) if matchv is None: raise InvalidRequestLine("Invalid HTTP version: %s" % bits[0]) self._version = (int(matchv.group(1)), int(matchv.group(2))) # status matchs = STATUS_RE.match(bits[1]) if matchs is None: raise InvalidRequestLine("Invalid status %" % bits[1]) self._status = bits[1] self._status_code = int(matchs.group(1)) self._reason = matchs.group(2) def _parse_request_line(self, line): bits = line.split(None, 2) if len(bits) != 3: raise InvalidRequestLine(line) # Method if not METHOD_RE.match(bits[0]): raise InvalidRequestLine("invalid Method: %s" % bits[0]) self._method = bits[0].upper() # URI self._url = bits[1] parts = urlparse.urlsplit(bits[1]) self._scheme = parts.scheme or None self._path = parts.path or "" self._query_string = parts.query or "" if parts.fragment: raise InvalidRequestLine( "HTTP requests may not contain fragment(s)" ) # Version match = VERSION_RE.match(bits[2]) if match is None: raise InvalidRequestLine("Invalid HTTP version: %s" % bits[2]) self._version = (int(match.group(1)), int(match.group(2))) # update environ if hasattr(self, 'environ'): self._environ.update({ "PATH_INFO": self._path, "QUERY_STRING": self._query_string, "RAW_URI": self._url, "REQUEST_METHOD": self._method, "SERVER_PROTOCOL": bits[2]}) def _parse_headers(self, data): idx = data.find(b("\r\n\r\n")) if idx < 0: # we don't have all headers return False # Split lines on \r\n keeping the \r\n on each line lines = [bytes_to_str(line) + "\r\n" for line in data[:idx].split(b("\r\n"))] # Parse headers into key/value pairs paying attention # to continuation lines. while len(lines): # Parse initial header name : value pair. curr = lines.pop(0) if curr.find(":") < 0: raise InvalidHeader("invalid line %s" % curr.strip()) name, value = curr.split(":", 1) name = name.rstrip(" \t").upper() if HEADER_RE.search(name): raise InvalidHeader("invalid header name %s" % name) name, value = name.strip(), [value.lstrip()] # Consume value continuation lines while len(lines) and lines[0].startswith((" ", "\t")): value.append(lines.pop(0)) value = ''.join(value).rstrip() # store new header value self._headers.add_header(name, value) # update WSGI environ key = 'HTTP_%s' % name.upper().replace('-', '_') self._environ[key] = value # detect now if body is sent by chunks. clen = self._headers.get('content-length') te = self._headers.get('transfer-encoding', '').lower() if clen is not None: try: self._clen_rest = self._clen = int(clen) except ValueError: pass else: self._chunked = (te == 'chunked') if not self._chunked: self._clen_rest = MAXSIZE # detect encoding and set decompress object encoding = self._headers.get('content-encoding') if self.decompress: if encoding == "gzip": self.__decompress_obj = zlib.decompressobj(16+zlib.MAX_WBITS) elif encoding == "deflate": self.__decompress_obj = zlib.decompressobj() rest = data[idx+4:] self._buf = [rest] self.__on_headers_complete = True return len(rest) def _parse_body(self): if not self._chunked: body_part = b("").join(self._buf) self._clen_rest -= len(body_part) # maybe decompress if self.__decompress_obj is not None: body_part = self.__decompress_obj.decompress(body_part) self._partial_body = True self._body.append(body_part) self._buf = [] if self._clen_rest <= 0: self.__on_message_complete = True return else: data = b("").join(self._buf) try: size, rest = self._parse_chunk_size(data) except InvalidChunkSize as e: self.errno = INVALID_CHUNK self.errstr = "invalid chunk size [%s]" % str(e) return -1 if size == 0: return size if size is None or len(rest) < size: return None body_part, rest = rest[:size], rest[size:] if len(rest) < 2: self.errno = INVALID_CHUNK self.errstr = "chunk missing terminator [%s]" % data return -1 # maybe decompress if self.__decompress_obj is not None: body_part = self.__decompress_obj.decompress(body_part) self._partial_body = True self._body.append(body_part) self._buf = [rest[2:]] return len(rest) def _parse_chunk_size(self, data): idx = data.find(b("\r\n")) if idx < 0: return None, None line, rest_chunk = data[:idx], data[idx+2:] chunk_size = line.split(b(";"), 1)[0].strip() try: chunk_size = int(chunk_size, 16) except ValueError: raise InvalidChunkSize(chunk_size) if chunk_size == 0: self._parse_trailers(rest_chunk) return 0, None return chunk_size, rest_chunk def _parse_trailers(self, data): idx = data.find(b("\r\n\r\n")) if data[:2] == b("\r\n"): self._trailers = self._parse_headers(data[:idx]) circuits-3.1.0/circuits/web/servers.py0000644000014400001440000001141212402037676021004 0ustar prologicusers00000000000000# Module: server # Date: 6th November 2008 # Author: James Mills, prologic at shortcircuit dot net dot au """Web Servers This module implements the several Web Server components. """ from sys import stderr from circuits import io from circuits.net.events import close, read, write from circuits.net.sockets import TCPServer, UNIXServer from circuits.core import handler, BaseComponent, Timer from .http import HTTP from .events import terminate from .dispatchers import Dispatcher class BaseServer(BaseComponent): """Create a Base Web Server Create a Base Web Server (HTTP) bound to the IP Address / Port or UNIX Socket specified by the 'bind' parameter. :ivar server: Reference to underlying Server Component :param bind: IP Address / Port or UNIX Socket to bind to. :type bind: Instance of int, list, tuple or str The 'bind' parameter is quite flexible with what valid values it accepts. If an int is passed, a TCPServer will be created. The Server will be bound to the Port given by the 'bind' argument and the bound interface will default (normally to "0.0.0.0"). If a list or tuple is passed, a TCPServer will be created. The Server will be bound to the Port given by the 2nd item in the 'bind' argument and the bound interface will be the 1st item. If a str is passed and it contains the ':' character, this is assumed to be a request to bind to an IP Address / Port. A TCpServer will thus be created and the IP Address and Port will be determined by splitting the string given by the 'bind' argument. Otherwise if a str is passed and it does not contain the ':' character, a file path is assumed and a UNIXServer is created and bound to the file given by the 'bind' argument. """ channel = "web" def __init__(self, bind, encoding="utf-8", secure=False, certfile=None, channel=channel): "x.__init__(...) initializes x; see x.__class__.__doc__ for signature" super(BaseServer, self).__init__(channel=channel) if isinstance(bind, (int, list, tuple,)): SocketType = TCPServer else: SocketType = TCPServer if ":" in bind else UNIXServer self.server = SocketType( bind, secure=secure, certfile=certfile, channel=channel ).register(self) self.http = HTTP( self, encoding=encoding, channel=channel ).register(self) @property def host(self): if hasattr(self, "server"): return self.server.host @property def port(self): if hasattr(self, "server"): return self.server.port @property def secure(self): if hasattr(self, "server"): return self.server.secure @handler("connect") def _on_connect(self, *args, **kwargs): """Dummy Event Handler for connect""" @handler("closed") def _on_closed(self, *args, **kwargs): """Dummy Event Handler for closed""" @handler("signal") def _on_signal(self, *args, **kwargs): """signal Event Handler""" self.fire(close()) Timer(3, terminate()).register(self) @handler("terminate") def _on_terminate(self): raise SystemExit(0) @handler("ready") def _on_ready(self, server, bind): stderr.write( "{0:s} ready! Listening on: {1:s}\n".format( self.http.version, self.http.base ) ) class Server(BaseServer): """Create a Web Server Create a Web Server (HTTP) complete with the default Dispatcher to parse requests and posted form data dispatching to appropriate Controller(s). See: circuits.web.servers.BaseServer """ def __init__(self, bind, **kwargs): "x.__init__(...) initializes x; see x.__class__.__doc__ for signature" super(Server, self).__init__(bind, **kwargs) Dispatcher(channel=self.channel).register(self.http) class FakeSock(): def getpeername(self): return (None, None) class StdinServer(BaseComponent): channel = "web" def __init__(self, encoding="utf-8", channel=channel): super(StdinServer, self).__init__(channel=channel) self.server = (io.stdin + io.stdout).register(self) self.http = HTTP( self, encoding=encoding, channel=channel ).register(self) Dispatcher(channel=self.channel).register(self) @property def host(self): return io.stdin.filename @property def port(self): return 0 @property def secure(self): return False @handler("read", channel="stdin") def read(self, data): self.fire(read(FakeSock(), data)) @handler("write") def write(self, sock, data): self.fire(write(data)) circuits-3.1.0/circuits/web/__init__.py0000644000014400001440000000136112402037676021054 0ustar prologicusers00000000000000# Module: __init__ # Date: 3rd October 2008 # Author: James Mills, prologic at shortcircuit dot net dot au """Circuits Library - Web circuits.web contains the circuits full stack web server that is HTTP and WSGI compliant. """ from .loggers import Logger from .sessions import Sessions from .url import parse_url, URL from .servers import BaseServer, Server from .controllers import expose, Controller from .events import request, response, stream from .errors import httperror, forbidden, notfound, redirect from .dispatchers import Static, Dispatcher, VirtualHosts, XMLRPC try: from .dispatchers import JSONRPC except ImportError: pass try: from .controllers import JSONController except ImportError: pass # flake8: noqa circuits-3.1.0/circuits/web/websockets/0000755000014400001440000000000012425013643021104 5ustar prologicusers00000000000000circuits-3.1.0/circuits/web/websockets/__init__.py0000644000014400001440000000036512402037676023230 0ustar prologicusers00000000000000# Package: websockets # Date: 26th March 2013 # Author: James Mills, prologic at shortcircuit dot net dot au """circuits.web websockets""" from .client import WebSocketClient from .dispatcher import WebSocketsDispatcher # flake8: noqa circuits-3.1.0/circuits/web/websockets/dispatcher.py0000644000014400001440000001053612402037676023620 0ustar prologicusers00000000000000# Module: dispatcher # Date: 26th February 2011 # Author: James Mills, prologic at shortcircuit dot net dot au import base64 import hashlib from circuits.six import b from circuits.web.errors import httperror from circuits import handler, BaseComponent from circuits.net.events import connect, disconnect from circuits.protocols.websocket import WebSocketCodec class WebSocketsDispatcher(BaseComponent): """ This class implements an RFC 6455 compliant WebSockets dispatcher that handles the WebSockets handshake and upgrades the connection. The dispatcher listens on its channel for :class:`~.web.events.Request` events and tries to match them with a given path. Upon a match, the request is checked for the proper Opening Handshake information. If successful, the dispatcher confirms the establishment of the connection to the client. Any subsequent data from the client is handled as a WebSocket data frame, decoded and fired as a :class:`~.sockets.Read` event on the ``wschannel`` passed to the constructor. The data from :class:`~.net.events.write` events on that channel is encoded as data frames and forwarded to the client. Firing a :class:`~.sockets.Close` event on the ``wschannel`` closes the connection in an orderly fashion (i.e. as specified by the WebSocket protocol). """ channel = "web" def __init__(self, path=None, wschannel="wsserver", *args, **kwargs): """ :param path: the path to handle. Requests that start with this path are considered to be WebSocket Opening Handshakes. :param wschannel: the channel on which :class:`~.sockets.read` events from the client will be delivered and where :class:`~.net.events.write` events to the client will be sent to. """ super(WebSocketsDispatcher, self).__init__(*args, **kwargs) self._path = path self._wschannel = wschannel self._codecs = dict() @handler("request", priority=0.2) def _on_request(self, event, request, response): if self._path is not None and not request.path.startswith(self._path): return self._protocol_version = 13 headers = request.headers sec_key = headers.get("Sec-WebSocket-Key", "").encode("utf-8") connection_tokens = [s.strip() for s in headers.get("Connection", "").lower().split(",")] try: if ("Host" not in headers or headers.get("Upgrade", "").lower() != "websocket" or "upgrade" not in connection_tokens or sec_key is None or len(base64.b64decode(sec_key)) != 16): return httperror(request, response, code=400) if headers.get("Sec-WebSocket-Version", "") != "13": response.headers["Sec-WebSocket-Version"] = "13" return httperror(request, response, code=400) # Generate accept header information msg = sec_key + b("258EAFA5-E914-47DA-95CA-C5AB0DC85B11") hasher = hashlib.sha1() hasher.update(msg) accept = base64.b64encode(hasher.digest()) # Successful completion response.status = 101 response.close = False try: del response.headers["Content-Type"] except KeyError: pass response.headers["Upgrade"] = "WebSocket" response.headers["Connection"] = "Upgrade" response.headers["Sec-WebSocket-Accept"] = accept.decode() codec = WebSocketCodec(request.sock, channel=self._wschannel) self._codecs[request.sock] = codec codec.register(self) return response finally: event.stop() @handler("response_complete") def _on_response_complete(self, e, value): response = e.args[0] request = response.request if request.sock in self._codecs: self.fire( connect( request.sock, *request.sock.getpeername() ), self._wschannel ) @handler("disconnect") def _on_disconnect(self, sock): if sock in self._codecs: self.fire(disconnect(sock), self._wschannel) del self._codecs[sock] circuits-3.1.0/circuits/web/websockets/client.py0000644000014400001440000001207712402037676022752 0ustar prologicusers00000000000000# Module: client # Date: 4th January 2013 # Author: mnl import os import random import base64 from errno import ECONNRESET from socket import error as SocketError try: from urllib.parse import urlparse except ImportError: from urlparse import urlparse # NOQA from circuits.web.headers import Headers from circuits.protocols.http import HTTP from circuits.core.handlers import handler from circuits.net.sockets import TCPClient from circuits.web.client import NotConnected from circuits.core.components import BaseComponent from circuits.net.events import connect, write, close from circuits.protocols.websocket import WebSocketCodec class WebSocketClient(BaseComponent): """ An RFC 6455 compliant WebSocket client component. Upon receiving a :class:`circuits.web.client.Connect` event, the component tries to establish the connection to the server in a two stage process. First, a :class:`circuits.net.events.connect` event is sent to a child :class:`~.sockets.TCPClient`. When the TCP connection has been established, the HTTP request for opening the WebSocket is sent to the server. A failure in this setup process is signaled by raising an :class:`~.client.NotConnected` exception. When the server accepts the request, the WebSocket connection is established and can be used very much like an ordinary socket by handling :class:`~.net.events.read` events on and sending :class:`~.net.events.write` events to the channel specified as the ``wschannel`` parameter of the constructor. Firing a :class:`~.net.events.close` event on that channel closes the connection in an orderly fashion (i.e. as specified by the WebSocket protocol). """ channel = "wsclient" def __init__(self, url, channel=channel, wschannel="ws", headers={}): """ :param url: the URL to connect to. :param channel: the channel used by this component :param wschannel: the channel used for the actual WebSocket communication (read, write, close events) :param headers: additional headers to be passed with the WebSocket setup HTTP request """ super(WebSocketClient, self).__init__(channel=channel) self._url = url self._headers = headers self._response = None self._pending = 0 self._wschannel = wschannel self._transport = TCPClient(channel=self.channel).register(self) HTTP(channel=self.channel).register(self._transport) @handler("ready") def _on_ready(self, event, *args, **kwargs): p = urlparse(self._url) if not p.hostname: raise ValueError("URL must be absolute") self._host = p.hostname if p.scheme == "ws": self._secure = False self._port = p.port or 80 elif p.scheme == "wss": self._secure = True self._port = p.port or 443 else: raise NotConnected() self._resource = p.path or "/" if p.query: self._resource += "?" + p.query self.fire(connect(self._host, self._port, self._secure), self._transport) @handler("connected") def _on_connected(self, host, port): headers = Headers([(k, v) for k, v in self._headers.items()]) # Clients MUST include Host header in HTTP/1.1 requests (RFC 2616) if not "Host" in headers: headers["Host"] = self._host \ + (":" + str(self._port)) if self._port else "" headers["Upgrade"] = "websocket" headers["Connection"] = "Upgrade" try: sec_key = os.urandom(16) except NotImplementedError: sec_key = "".join([chr(random.randint(0, 255)) for i in range(16)]) headers["Sec-WebSocket-Key"] = base64.b64encode(sec_key).decode("latin1") headers["Sec-WebSocket-Version"] = "13" command = "GET %s HTTP/1.1" % self._resource message = "%s\r\n%s" % (command, headers) self._pending += 1 self.fire(write(message.encode('utf-8')), self._transport) return True @handler("response") def _on_response(self, response): self._response = response self._pending -= 1 if response.headers.get("Connection") == "Close" \ or response.status != 101: self.fire(close(), self._transport) raise NotConnected() WebSocketCodec(data=response.body.read(), channel=self._wschannel).register(self) @handler("error", priority=10) def _on_error(self, event, error, *args, **kwargs): # For HTTP 1.1 we leave the connection open. If the peer closes # it after some time and we have no pending request, that's OK. if isinstance(error, SocketError) and error.args[0] == ECONNRESET \ and self._pending == 0: event.stop() def close(self): if self._transport is not None: self._transport.close() @property def connected(self): return getattr(self._transport, "connected", False) \ if hasattr(self, "_transport") else False circuits-3.1.0/circuits/web/dispatchers/0000755000014400001440000000000012425013643021244 5ustar prologicusers00000000000000circuits-3.1.0/circuits/web/dispatchers/__init__.py0000644000014400001440000000077512402037676023375 0ustar prologicusers00000000000000# Package: dispatchers # Date: 26th February 2011 # Author: James Mills, prologic at shortcircuit dot net dot au """Dispatchers This package contains various circuits.web dispatchers By default a ``circuits.web.Server`` Component uses the ``dispatcher.Dispatcher`` """ from .static import Static from .xmlrpc import XMLRPC from .jsonrpc import JSONRPC from .dispatcher import Dispatcher from .virtualhosts import VirtualHosts from ..websockets.dispatcher import WebSocketsDispatcher # flake8: noqa circuits-3.1.0/circuits/web/dispatchers/virtualhosts.py0000644000014400001440000000345512402037676024403 0ustar prologicusers00000000000000# Module: virtualhost # Date: 13th September 2007 # Author: James Mills, prologic at shortcircuit dot net dot au """VirtualHost This module implements a virtual host dispatcher that sends requests for configured virtual hosts to different dispatchers. """ try: from urllib.parse import urljoin except ImportError: from urlparse import urljoin # NOQA from circuits import handler, BaseComponent class VirtualHosts(BaseComponent): """Forward to anotehr Dispatcher based on the Host header. This can be useful when running multiple sites within one server. It allows several domains to point to different parts of a single website structure. For example: - http://www.domain.example -> / - http://www.domain2.example -> /domain2 - http://www.domain2.example:443 -> /secure :param domains: a dict of {host header value: virtual prefix} pairs. :type domains: dict The incoming "Host" request header is looked up in this dict, and, if a match is found, the corresponding "virtual prefix" value will be prepended to the URL path before passing the request onto the next dispatcher. Note that you often need separate entries for "example.com" and "www.example.com". In addition, "Host" headers may contain the port number. """ channel = "web" def __init__(self, domains): super(VirtualHosts, self).__init__() self.domains = domains @handler("request", priority=1.0) def _on_request(self, event, request, response): path = request.path.strip("/") header = request.headers.get domain = header("X-Forwarded-Host", header("Host", "")) prefix = self.domains.get(domain, "") if prefix: path = urljoin("/%s/" % prefix, path) request.path = path circuits-3.1.0/circuits/web/dispatchers/static.py0000644000014400001440000001153512402037676023121 0ustar prologicusers00000000000000# Module: static # Date: 13th September 2007 # Author: James Mills, prologic at shortcircuit dot net dot au """Static This modStatic implements a Static dispatcher used to serve up static resources and an optional apache-style directory listing. """ import os from string import Template try: from urllib import quote, unquote except ImportError: from urllib.parse import quote, unquote # NOQA from circuits import handler, BaseComponent from circuits.web.tools import serve_file DEFAULT_DIRECTORY_INDEX_TEMPLATE = """ Index of $directory

Index of $directory

    $url_up $listing
""" _dirlisting_template = Template(DEFAULT_DIRECTORY_INDEX_TEMPLATE) class Static(BaseComponent): channel = "web" def __init__(self, path=None, docroot=None, defaults=("index.html", "index.xhtml",), dirlisting=False): super(Static, self).__init__() self.path = path self.docroot = os.path.abspath(docroot) if docroot is not None else os.path.abspath(os.getcwd()) self.defaults = defaults self.dirlisting = dirlisting @handler("request", priority=0.9) def _on_request(self, event, request, response): if self.path is not None and not request.path.startswith(self.path): return path = request.path if self.path is not None: path = path[len(self.path):] path = unquote(path.strip("/")) if path: location = os.path.abspath(os.path.join(self.docroot, path)) else: location = os.path.abspath(os.path.join(self.docroot, ".")) if not os.path.exists(location): return if not location.startswith(os.path.dirname(self.docroot)): return # hacking attemp e.g. /foo/../../../../../etc/shadow # Is it a file we can serve directly? if os.path.isfile(location): # Don't set cookies for static content response.cookie.clear() try: return serve_file(request, response, location) finally: event.stop() # Is it a directory? elif os.path.isdir(location): # Try to serve one of default files first.. for default in self.defaults: location = os.path.abspath( os.path.join(self.docroot, path, default) ) if os.path.exists(location): # Don't set cookies for static content response.cookie.clear() try: return serve_file(request, response, location) finally: event.stop() # .. serve a directory listing if allowed to. if self.dirlisting: directory = os.path.abspath(os.path.join(self.docroot, path)) cur_dir = os.path.join(self.path, path) if self.path else "" if not path: url_up = "" else: if self.path is None: url_up = os.path.join("/", os.path.split(path)[0]) else: url_up = os.path.join(cur_dir, "..") url_up = '
  • %s
  • ' % (url_up, "..") listing = [] for item in os.listdir(directory): if not item.startswith("."): url = os.path.join("/", path, cur_dir, item) location = os.path.abspath( os.path.join(self.docroot, path, item) ) if os.path.isdir(location): li = '
  • %s/
  • ' % ( quote(url), item ) else: li = '
  • %s
  • ' % ( quote(url), item ) listing.append(li) ctx = {} ctx["directory"] = cur_dir or os.path.join("/", cur_dir, path) ctx["url_up"] = url_up ctx["listing"] = "\n".join(listing) try: return _dirlisting_template.safe_substitute(ctx) finally: event.stop() circuits-3.1.0/circuits/web/dispatchers/dispatcher.py0000644000014400001440000001032512420426656023754 0ustar prologicusers00000000000000# Module: dispatcher # Date: 13th September 2007 # Author: James Mills, prologic at shortcircuit dot net dot au """Dispatcher This module implements a basic URL to Channel dispatcher. This is the default dispatcher used by circuits.web """ try: from urllib import quote, unquote except ImportError: from urllib.parse import quote, unquote # NOQA from circuits.six import text_type from circuits import handler, BaseComponent, Event from circuits.web.utils import parse_qs from circuits.web.events import response from circuits.web.errors import httperror from circuits.web.processors import process from circuits.web.controllers import BaseController def resolve_path(paths, parts): def rebuild_path(url_parts): return '/%s' % '/'.join(url_parts) left_over = [] while parts: if rebuild_path(parts) in paths: yield rebuild_path(parts), left_over left_over.insert(0, parts.pop()) if '/' in paths: yield '/', left_over def resolve_methods(parts): if parts: method = parts[0] vpath = parts[1:] yield method, vpath yield 'index', parts def find_handlers(req, paths): def get_handlers(path, method): component = paths[path] return component._handlers.get(method, None) def accepts_vpath(handlers, vpath): args_no = len(vpath) return all( len(h.args) == args_no or h.varargs or ( h.defaults is not None and args_no <= len(h.defaults) ) for h in handlers ) # Split /hello/world to ['hello', 'world'] starting_parts = [x for x in req.path.strip("/").split("/") if x] for path, parts in resolve_path(paths, starting_parts): handlers = get_handlers(path, req.method) if handlers: return handlers, req.method, path, parts for method, vpath in resolve_methods(parts): handlers = get_handlers(path, method) if handlers and (not vpath or accepts_vpath(handlers, vpath)): req.index = (method == 'index') return handlers, method, path, vpath else: method, vpath = "index", [method] + vpath handlers = get_handlers(path, method) if handlers and (not vpath or accepts_vpath(handlers, vpath)): req.index = True return handlers, method, path, vpath return [], None, None, None class Dispatcher(BaseComponent): channel = "web" def __init__(self, **kwargs): super(Dispatcher, self).__init__(**kwargs) self.paths = dict() @handler("registered", channel="*") def _on_registered(self, component, manager): if (isinstance(component, BaseController) and component.channel not in self.paths): self.paths[component.channel] = component @handler("unregistered", channel="*") def _on_unregistered(self, component, manager): if (isinstance(component, BaseController) and component.channel in self.paths): del self.paths[component.channel] @handler("request", priority=0.1) def _on_request(self, event, req, res, peer_cert=None): if peer_cert: event.peer_cert = peer_cert handlers, name, channel, vpath = find_handlers(req, self.paths) if name is not None and channel is not None: event.kwargs = parse_qs(req.qs) process(req, event.kwargs) if vpath: event.args += tuple(vpath) if isinstance(name, text_type): name = str(name) return self.fire( Event.create( name, *event.args, **event.kwargs ), channel ) @handler("request_value_changed") def _on_request_value_changed(self, value): if value.handled: return req, res = value.event.args[:2] if value.result and not value.errors: res.body = value.value self.fire(response(res)) elif value.promise: value.event.notify = True else: # Errors are handled by the ``HTTP`` Protocol Component return circuits-3.1.0/circuits/web/dispatchers/jsonrpc.py0000644000014400001440000000472112402037676023307 0ustar prologicusers00000000000000# Module: jsonrpc # Date: 13th September 2007 # Author: James Mills, prologic at shortcircuit dot net dot au """JSON RPC This module implements a JSON RPC dispatcher that translates incoming RPC calls over JSON into RPC events. """ from circuits.tools import tryimport json = tryimport(("json", "simplejson")) from circuits.six import binary_type from circuits import handler, Event, BaseComponent class rpc(Event): """RPC Event""" class JSONRPC(BaseComponent): channel = "web" def __init__(self, path=None, encoding="utf-8", rpc_channel="*"): super(JSONRPC, self).__init__() if json is None: raise RuntimeError("No json support available") self.path = path self.encoding = encoding self.rpc_channel = rpc_channel @handler("request", priority=0.2) def _on_request(self, event, req, res): if self.path is not None and self.path != req.path.rstrip("/"): return res.headers["Content-Type"] = "application/json" try: data = req.body.read().decode(self.encoding) o = json.loads(data) id, method, params = o["id"], o["method"], o["params"] if isinstance(params, dict): params = dict([(str(k), v) for k, v in params.iteritems()]) if "." in method: channel, name = method.split(".", 1) else: channel, name = self.rpc_channel, method name = str(name) if not isinstance(name, binary_type) else name if isinstance(params, dict): value = yield self.call(rpc.create(name, **params), channel) else: value = yield self.call(rpc.create(name, *params), channel) yield self._response(id, value.value) except Exception as e: yield self._error(-1, 100, "%s: %s" % (e.__class__.__name__, e)) finally: event.stop() def _response(self, id, result): data = { "id": id, "version": "1.1", "result": result, "error": None } return json.dumps(data).encode(self.encoding) def _error(self, id, code, message): data = { "id": id, "version": "1.1", "error": { "name": "JSONRPCError", "code": code, "message": message } } return json.dumps(data).encode(self.encoding) circuits-3.1.0/circuits/web/dispatchers/xmlrpc.py0000644000014400001440000000342012402037676023131 0ustar prologicusers00000000000000# Module: xmlrpc # Date: 13th September 2007 # Author: James Mills, prologic at shortcircuit dot net dot au """XML RPC This module implements a XML RPC dispatcher that translates incoming RPC calls over XML into RPC events. """ try: from xmlrpc.client import dumps, loads, Fault except ImportError: from xmlrpclib import dumps, loads, Fault # NOQA from circuits.six import binary_type from circuits import handler, Event, BaseComponent class rpc(Event): """rpc Event""" class XMLRPC(BaseComponent): channel = "web" def __init__(self, path=None, encoding="utf-8", rpc_channel="*"): super(XMLRPC, self).__init__() self.path = path self.encoding = encoding self.rpc_channel = rpc_channel @handler("request", priority=0.2) def _on_request(self, event, req, res): if self.path is not None and self.path != req.path.rstrip("/"): return res.headers["Content-Type"] = "text/xml" try: data = req.body.read() params, method = loads(data) if "." in method: channel, name = method.split(".", 1) else: channel, name = self.rpc_channel, method name = str(name) if not isinstance(name, binary_type) else name value = yield self.call(rpc.create(name, *params), channel) yield self._response(value.value) except Exception as e: yield self._error(1, "%s: %s" % (type(e), e)) finally: event.stop() def _response(self, result): return dumps((result,), encoding=self.encoding, allow_none=True) def _error(self, code, message): fault = Fault(code, message) return dumps(fault, encoding=self.encoding, allow_none=True) circuits-3.1.0/circuits/web/processors.py0000644000014400001440000000341112402037676021515 0ustar prologicusers00000000000000import re from cgi import parse_header from .headers import HeaderElement from .parsers import MultipartParser from .parsers import QueryStringParser def process_multipart(request, params): headers = request.headers ctype = headers.elements("Content-Type") if ctype: ctype = ctype[0] else: ctype = HeaderElement.from_str("application/x-www-form-urlencoded") ib = "" if "boundary" in ctype.params: # http://tools.ietf.org/html/rfc2046#section-5.1.1 # "The grammar for parameters on the Content-type field is such that it # is often necessary to enclose the boundary parameter values in quotes # on the Content-type line" ib = ctype.params["boundary"].strip("\"") if not re.match("^[ -~]{0,200}[!-~]$", ib): raise ValueError("Invalid boundary in multipart form: %r" % (ib,)) parser = MultipartParser(request.body, ib) for part in parser: if part.filename or not part.is_buffered(): params[part.name] = part else: params[part.name] = part.value def process_urlencoded(request, params, encoding="utf-8"): params.update(QueryStringParser(request.qs).result) body = request.body.getvalue().decode(encoding) params.update(QueryStringParser(body).result) def process(request, params): ctype = request.headers.get("Content-Type") if not ctype: return mtype, mencoding = ctype.split("/", 1) if "/" in ctype else (ctype, None) mencoding, extra = parse_header(mencoding) charset = extra.get("charset", "utf-8") if mtype == "multipart": process_multipart(request, params) elif mtype == "application" and mencoding == "x-www-form-urlencoded": process_urlencoded(request, params, encoding=charset) circuits-3.1.0/circuits/web/exceptions.py0000644000014400001440000002100112402037676021467 0ustar prologicusers00000000000000# Module: exceptions # Date: 10th July 2010 # Author: James Mills, prologic at shortcircuit dot net dot au """Exceptions This module implements a set of standard HTTP Errors as Python Exceptions. Note: This code is mostly borrowed from werkzeug and adapted for circuits.web """ from inspect import isclass from .constants import HTTP_STATUS_CODES class HTTPException(Exception): """ Baseclass for all HTTP exceptions. This exception can be called by WSGI applications to render a default error page or you can catch the subclasses of it independently and render nicer error messages. """ code = None traceback = True description = None def __init__(self, description=None, traceback=None): super(HTTPException, self).__init__("%d %s" % (self.code, self.name)) if description is not None: self.description = description if traceback is not None: self.traceback = traceback @property def name(self): """The status name.""" return HTTP_STATUS_CODES.get(self.code, '') def __repr__(self): return '<%s \'%s\'>' % (self.__class__.__name__, self) class BadRequest(HTTPException): """*400* `Bad Request` Raise if the browser sends something to the application the application or server cannot handle. """ code = 400 description = ( '

    The browser (or proxy) sent a request that this server could ' 'not understand.

    ' ) class UnicodeError(HTTPException): """ raised by the request functions if they were unable to decode the incoming data properly. """ class Unauthorized(HTTPException): """*401* `Unauthorized` Raise if the user is not authorized. Also used if you want to use HTTP basic auth. """ code = 401 description = ( '

    The server could not verify that you are authorized to access ' 'the URL requested. You either supplied the wrong credentials (e.g. ' 'a bad password), or your browser doesn\'t understand how to supply ' 'the credentials required.

    In case you are allowed to request ' 'the document, please check your user-id and password and try ' 'again.

    ' ) class Forbidden(HTTPException): """*403* `Forbidden` Raise if the user doesn't have the permission for the requested resource but was authenticated. """ code = 403 description = ( '

    You don\'t have the permission to access the requested resource. ' 'It is either read-protected or not readable by the server.

    ' ) class NotFound(HTTPException): """*404* `Not Found` Raise if a resource does not exist and never existed. """ code = 404 description = ( '

    The requested URL was not found on the server.

    ' '

    If you entered the URL manually please check your spelling and ' 'try again.

    ' ) class MethodNotAllowed(HTTPException): """*405* `Method Not Allowed` Raise if the server used a method the resource does not handle. For example `POST` if the resource is view only. Especially useful for REST. The first argument for this exception should be a list of allowed methods. Strictly speaking the response would be invalid if you don't provide valid methods in the header which you can do with that list. """ code = 405 def __init__(self, method, description=None): HTTPException.__init__(self, description) if description is None: self.description = ( '

    The method %s is not allowed ' 'for the requested URL.

    ' ) % method class NotAcceptable(HTTPException): """*406* `Not Acceptable` Raise if the server can't return any content conforming to the `Accept` headers of the client. """ code = 406 description = ( '

    The resource identified by the request is only capable of ' 'generating response entities which have content characteristics ' 'not acceptable according to the accept headers sent in the ' 'request.

    ' ) class RequestTimeout(HTTPException): """*408* `Request Timeout` Raise to signalize a timeout. """ code = 408 description = ( '

    The server closed the network connection because the browser ' 'didn\'t finish the request within the specified time.

    ' ) class Gone(HTTPException): """*410* `Gone` Raise if a resource existed previously and went away without new location. """ code = 410 description = ( '

    The requested URL is no longer available on this server and ' 'there is no forwarding address.

    If you followed a link ' 'from a foreign page, please contact the author of this page.' ) class LengthRequired(HTTPException): """*411* `Length Required` Raise if the browser submitted data but no ``Content-Length`` header which is required for the kind of processing the server does. """ code = 411 description = ( '

    A request with this method requires a valid Content-' 'Length header.

    ' ) class PreconditionFailed(HTTPException): """*412* `Precondition Failed` Status code used in combination with ``If-Match``, ``If-None-Match``, or ``If-Unmodified-Since``. """ code = 412 description = ( '

    The precondition on the request for the URL failed positive ' 'evaluation.

    ' ) class RequestEntityTooLarge(HTTPException): """*413* `Request Entity Too Large` The status code one should return if the data submitted exceeded a given limit. """ code = 413 description = ( '

    The data value transmitted exceeds the capacity limit.

    ' ) class RequestURITooLarge(HTTPException): """*414* `Request URI Too Large` Like *413* but for too long URLs. """ code = 414 description = ( '

    The length of the requested URL exceeds the capacity limit ' 'for this server. The request cannot be processed.

    ' ) class UnsupportedMediaType(HTTPException): """*415* `Unsupported Media Type` The status code returned if the server is unable to handle the media type the client transmitted. """ code = 415 description = ( '

    The server does not support the media type transmitted in ' 'the request.

    ' ) class RangeUnsatisfiable(HTTPException): """*416* `Range Unsatisfiable` The status code returned if the server is unable to satisfy the request range """ code = 416 description = ( '

    The server cannot satisfy the request range(s).

    ' ) class InternalServerError(HTTPException): """*500* `Internal Server Error` Raise if an internal server error occurred. This is a good fallback if an unknown error occurred in the dispatcher. """ code = 500 description = ( '

    The server encountered an internal error and was unable to ' 'complete your request. Either the server is overloaded or there ' 'is an error in the application.

    ' ) class NotImplemented(HTTPException): """*501* `Not Implemented` Raise if the application does not support the action requested by the browser. """ code = 501 description = ( '

    The server does not support the action requested by the ' 'browser.

    ' ) class BadGateway(HTTPException): """*502* `Bad Gateway` If you do proxying in your application you should return this status code if you received an invalid response from the upstream server it accessed in attempting to fulfill the request. """ code = 502 description = ( '

    The proxy server received an invalid response from an upstream ' 'server.

    ' ) class ServiceUnavailable(HTTPException): """*503* `Service Unavailable` Status code you should return if a service is temporarily unavailable. """ code = 503 description = ( '

    The server is temporarily unable to service your request due to ' 'maintenance downtime or capacity problems. Please try again ' 'later.

    ' ) class Redirect(HTTPException): code = 303 def __init__(self, urls, status=None): super(Redirect, self).__init__() if isinstance(urls, str): self.urls = [urls] else: self.urls = urls self.status = status __all__ = [ x[0] for x in list(globals().items()) if isclass(x[1]) and issubclass(x[1], HTTPException) ] circuits-3.1.0/circuits/web/wrappers.py0000644000014400001440000002437612402037676021173 0ustar prologicusers00000000000000# Module: wrappers # Date: 13th September 2007 # Author: James Mills, prologic at shortcircuit dot net dot au """Request/Response Wrappers This module implements the Request and Response objects. """ from time import time from io import BytesIO from functools import partial try: from Cookie import SimpleCookie except ImportError: from http.cookies import SimpleCookie # NOQA from .url import parse_url from .headers import Headers from ..six import binary_type from .errors import httperror from circuits.net.sockets import BUFSIZE from .constants import HTTP_STATUS_CODES, SERVER_VERSION try: unicode except NameError: unicode = str try: from email.utils import formatdate formatdate = partial(formatdate, usegmt=True) except ImportError: from rfc822 import formatdate as HTTPDate # NOQA def file_generator(input, chunkSize=BUFSIZE): chunk = input.read(chunkSize) while chunk: yield chunk chunk = input.read(chunkSize) input.close() class Host(object): """An internet address. name should be the client's host name. If not available (because no DNS lookup is performed), the IP address should be used instead. """ ip = "0.0.0.0" port = 80 name = "unknown.tld" def __init__(self, ip, port, name=None): self.ip = ip self.port = port if name is None: name = ip self.name = name def __repr__(self): return "Host(%r, %r, %r)" % (self.ip, self.port, self.name) class HTTPStatus(object): __slots__ = ("_reason", "_status",) def __init__(self, status=200, reason=None): self._status = status self._reason = reason or HTTP_STATUS_CODES.get(status, "") def __int__(self): return self._status def __lt__(self, other): if isinstance(other, int): return self._status < other return super(HTTPStatus, self).__lt__(other) def __gt__(self, other): if isinstance(other, int): return self._status > other return super(HTTPStatus, self).__gt__(other) def __le__(self, other): if isinstance(other, int): return self._status <= other return super(HTTPStatus, self).__le__(other) def __ge__(self, other): if isinstance(other, int): return self._status >= other return super(HTTPStatus, self).__ge__(other) def __eq__(self, other): if isinstance(other, int): return self._status == other return super(HTTPStatus, self).__eq__(other) def __str__(self): return "{0:d} {1:s}".format(self._status, self._reason) def __repr__(self): return "".format( self._status, self._reason ) def __format__(self, format_spec): return format(str(self), format_spec) @property def status(self): return self._status @property def reason(self): return self._reason class Request(object): """Creates a new Request object to hold information about a request. :param sock: The socket object of the request. :type sock: socket.socket :param method: The requested method. :type method: str :param scheme: The requested scheme. :type scheme: str :param path: The requested path. :type path: str :param protocol: The requested protocol. :type protocol: str :param qs: The query string of the request. :type qs: str """ server = None """:cvar: A reference to the underlying server""" scheme = "http" protocol = (1, 1) host = "" local = Host("127.0.0.1", 80) remote = Host("", 0) index = None script_name = "" login = None handled = False def __init__(self, sock, method="GET", scheme="http", path="/", protocol=(1, 1), qs="", headers=None, server=None): "initializes x; see x.__class__.__doc__ for signature" self.sock = sock self.method = method self.scheme = scheme or Request.scheme self.path = path self.protocol = protocol self.qs = qs self.headers = headers or Headers() self.server = server self.cookie = SimpleCookie() if sock is not None: name = sock.getpeername() if name is not None: self.remote = Host(*name) else: name = sock.getsockname() self.remote = Host(name, "", name) cookie = self.headers.get("Cookie") if cookie is not None: self.cookie.load(cookie) self.body = BytesIO() if self.server is not None: self.local = Host(self.server.host, self.server.port) try: host = self.headers["Host"] if ":" in host: parts = host.split(":", 1) host = parts[0] port = int(parts[1]) else: port = 443 if self.scheme == "https" else 80 except KeyError: host = self.local.name or self.local.ip port = getattr(self.server, "port") self.host = host self.port = port base = "{0:s}://{1:s}{2:s}/".format( self.scheme, self.host, ":{0:d}".format(self.port) if self.port not in (80, 443) else "" ) self.base = parse_url(base) url = "{0:s}{1:s}{2:s}".format( base, self.path, "?{0:s}".format(self.qs) if self.qs else "" ) self.uri = parse_url(url) self.uri.sanitize() def __repr__(self): protocol = "HTTP/%d.%d" % self.protocol return "" % (self.method, self.path, protocol) class Body(object): """Response Body""" def __get__(self, response, cls=None): if response is None: return self else: return response._body def __set__(self, response, value): if response == value: return if isinstance(value, binary_type): if value: value = [value] else: value = [] elif hasattr(value, "read"): response.stream = True value = file_generator(value) elif isinstance(value, httperror): value = [str(value)] elif value is None: value = [] response._body = value class Status(object): """Response Status""" def __get__(self, response, cls=None): if response is None: return self else: return response._status def __set__(self, response, value): value = HTTPStatus(value) if isinstance(value, int) else value response._status = value class Response(object): """Response(sock, request) -> new Response object A Response object that holds the response to send back to the client. This ensure that the correct data is sent in the correct order. """ body = Body() status = Status() done = False close = False stream = False chunked = False def __init__(self, request, encoding='utf-8', status=None): "initializes x; see x.__class__.__doc__ for signature" self.request = request self.encoding = encoding self._body = [] self._status = HTTPStatus(status if status is not None else 200) self.time = time() self.headers = Headers() self.headers["Date"] = formatdate() if self.request.server is not None: self.headers.add_header("Server", self.request.server.http.version) else: self.headers.add_header("X-Powered-By", SERVER_VERSION) self.cookie = self.request.cookie self.protocol = "HTTP/%d.%d" % self.request.protocol def __repr__(self): return "" % ( self.status, self.headers.get("Content-Type"), (len(self.body) if isinstance(self.body, str) else 0) ) def __str__(self): self.prepare() protocol = self.protocol status = "{0:s}".format(self.status) return "{0:s} {1:s}\r\n".format(protocol, status) def __bytes__(self): return str(self).encode(self.encoding) def prepare(self): # Set a default content-Type if we don't have one. self.headers.setdefault( "Content-Type", "text/html; charset={0:s}".format(self.encoding) ) cLength = None if self.body is not None: if isinstance(self.body, bytes): cLength = len(self.body) elif isinstance(self.body, unicode): cLength = len(self.body.encode(self.encoding)) elif isinstance(self.body, list): cLength = sum( [ len(s.encode(self.encoding)) if not isinstance(s, bytes) else len(s) for s in self.body if s is not None ] ) if cLength is not None: self.headers["Content-Length"] = str(cLength) for k, v in self.cookie.items(): self.headers.add_header("Set-Cookie", v.OutputString()) status = self.status if status == 413: self.close = True elif "Content-Length" not in self.headers: if status < 200 or status in (204, 205, 304): pass else: if self.protocol == "HTTP/1.1" \ and self.request.method != "HEAD" \ and self.request.server is not None \ and not cLength == 0: self.chunked = True self.headers.add_header("Transfer-Encoding", "chunked") else: self.close = True if (self.request.server is not None and "Connection" not in self.headers): if self.protocol == "HTTP/1.1": if self.close: self.headers.add_header("Connection", "close") else: if not self.close: self.headers.add_header("Connection", "Keep-Alive") if self.headers.get("Transfer-Encoding", "") == "chunked": self.chunked = True circuits-3.1.0/circuits/web/_httpauth.py0000755000014400001440000003201512402037676021320 0ustar prologicusers00000000000000""" httpauth modules defines functions to implement HTTP Digest Authentication (RFC 2617). This has full compliance with 'Digest' and 'Basic' authentication methods. In 'Digest' it supports both MD5 and MD5-sess algorithms. Usage: First use 'doAuth' to request the client authentication for a certain resource. You should send an httplib.UNAUTHORIZED response to the client so he knows he has to authenticate itself. Then use 'parseAuthorization' to retrieve the 'auth_map' used in 'checkResponse'. To use 'checkResponse' you must have already verified the password associated with the 'username' key in 'auth_map' dict. Then you use the 'checkResponse' function to verify if the password matches the one sent by the client. SUPPORTED_ALGORITHM - list of supported 'Digest' algorithms SUPPORTED_QOP - list of supported 'Digest' 'qop'. """ __version__ = 1, 0, 1 __author__ = "Tiago Cogumbreiro " __credits__ = """ Peter van Kampen for its recipe which implement most of Digest authentication: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/302378 """ __license__ = """ Copyright (c) 2005, Tiago Cogumbreiro All rights reserved. Redistribution and use in source and binary forms, with or without modification are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Sylvain Hellegouarch nor the names of his contributor may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ __all__ = ("digestAuth", "basicAuth", "doAuth", "checkResponse", "parseAuthorization", "SUPPORTED_ALGORITHM", "md5SessionKey", "calculateNonce", "SUPPORTED_QOP") ############################################################################### import time try: from base64 import decodebytes as base64_decodebytes except ImportError: from base64 import b64decode as base64_decodebytes # NOQA try: from urllib.request import parse_http_list, parse_keqv_list except ImportError: from urllib2 import parse_http_list, parse_keqv_list # NOQA from hashlib import md5 MD5 = "MD5" MD5_SESS = "MD5-sess" AUTH = "auth" AUTH_INT = "auth-int" SUPPORTED_ALGORITHM = (MD5, MD5_SESS) SUPPORTED_QOP = (AUTH, AUTH_INT) ############################################################################### # doAuth # DIGEST_AUTH_ENCODERS = { MD5: lambda val: md5(val).hexdigest(), MD5_SESS: lambda val: md5(val).hexdigest(), # SHA: lambda val: sha.new (val).hexdigest (), } def calculateNonce(realm, algorithm=MD5): """This is an auxaliary function that calculates 'nonce' value. It is used to handle sessions.""" global SUPPORTED_ALGORITHM, DIGEST_AUTH_ENCODERS assert algorithm in SUPPORTED_ALGORITHM try: encoder = DIGEST_AUTH_ENCODERS[algorithm] except KeyError: raise NotImplementedError( "The chosen algorithm (%s) does not have " "an implementation yet" % algorithm ) s = "%d:%s" % (time.time(), realm) return encoder(s.encode("utf-8")) def digestAuth(realm, algorithm=MD5, nonce=None, qop=AUTH): """Challenges the client for a Digest authentication.""" global SUPPORTED_ALGORITHM, DIGEST_AUTH_ENCODERS, SUPPORTED_QOP assert algorithm in SUPPORTED_ALGORITHM assert qop in SUPPORTED_QOP if nonce is None: nonce = calculateNonce(realm, algorithm) return 'Digest realm="%s", nonce="%s", algorithm="%s", qop="%s"' % ( realm, nonce, algorithm, qop ) def basicAuth(realm): """Challengenes the client for a Basic authentication.""" assert '"' not in realm, "Realms cannot contain the \" (quote) character." return 'Basic realm="%s"' % realm def doAuth(realm): """'doAuth' function returns the challenge string b giving priority over Digest and fallback to Basic authentication when the browser doesn't support the first one. This should be set in the HTTP header under the key 'WWW-Authenticate'.""" return digestAuth(realm) + " " + basicAuth(realm) ############################################################################### # Parse authorization parameters # def _parseDigestAuthorization(auth_params): # Convert the auth params to a dict items = parse_http_list(auth_params) params = parse_keqv_list(items) # Now validate the params # Check for required parameters required = ["username", "realm", "nonce", "uri", "response"] for k in required: if k not in params: return None # If qop is sent then cnonce and nc MUST be present if "qop" in params and not ("cnonce" in params and "nc" in params): return None # If qop is not sent, neither cnonce nor nc can be present if ("cnonce" in params or "nc" in params) and "qop" not in params: return None return params def _parseBasicAuthorization(auth_params): auth_params = auth_params.encode("utf-8") username, password = base64_decodebytes(auth_params).split(b":", 1) username = username.decode("utf-8") password = password.decode("utf-8") return {"username": username, "password": password} AUTH_SCHEMES = { "basic": _parseBasicAuthorization, "digest": _parseDigestAuthorization, } def parseAuthorization(credentials): """parseAuthorization will convert the value of the 'Authorization' key in the HTTP header to a map itself. If the parsing fails 'None' is returned. """ global AUTH_SCHEMES auth_scheme, auth_params = credentials.split(" ", 1) auth_scheme = auth_scheme.lower() parser = AUTH_SCHEMES[auth_scheme] params = parser(auth_params) if params is None: return assert "auth_scheme" not in params params["auth_scheme"] = auth_scheme return params ############################################################################### # Check provided response for a valid password # def md5SessionKey(params, password): """ If the "algorithm" directive's value is "MD5-sess", then A1 [the session key] is calculated only once - on the first request by the client following receipt of a WWW-Authenticate challenge from the server. This creates a 'session key' for the authentication of subsequent requests and responses which is different for each "authentication session", thus limiting the amount of material hashed with any one key. Because the server need only use the hash of the user credentials in order to create the A1 value, this construction could be used in conjunction with a third party authentication service so that the web server would not need the actual password value. The specification of such a protocol is beyond the scope of this specification. """ keys = ("username", "realm", "nonce", "cnonce") params_copy = {} for key in keys: params_copy[key] = params[key] params_copy["algorithm"] = MD5_SESS return _A1(params_copy, password) def _A1(params, password): algorithm = params.get("algorithm", MD5) H = DIGEST_AUTH_ENCODERS[algorithm] if algorithm == MD5: # If the "algorithm" directive's value is "MD5" or is # unspecified, then A1 is: # A1 = unq(username-value) ":" unq(realm-value) ":" passwd return "%s:%s:%s" % (params["username"], params["realm"], password) elif algorithm == MD5_SESS: # This is A1 if qop is set # A1 = H( unq(username-value) ":" unq(realm-value) ":" passwd ) # ":" unq(nonce-value) ":" unq(cnonce-value) s = "%s:%s:%s" % (params["username"], params["realm"], password) h_a1 = H(s.encode("utf-8")) return "%s:%s:%s" % (h_a1, params["nonce"], params["cnonce"]) def _A2(params, method, kwargs): # If the "qop" directive's value is "auth" or is unspecified, then A2 is: # A2 = Method ":" digest-uri-value qop = params.get("qop", "auth") if qop == "auth": return method + ":" + params["uri"] elif qop == "auth-int": # If the "qop" value is "auth-int", then A2 is: # A2 = Method ":" digest-uri-value ":" H(entity-body) entity_body = kwargs.get("entity_body", "") H = kwargs["H"] return "%s:%s:%s" % ( method, params["uri"], H(entity_body) ) else: raise NotImplementedError("The 'qop' method is unknown: %s" % qop) def _computeDigestResponse(auth_map, password, method="GET", A1=None, **kwargs): """ Generates a response respecting the algorithm defined in RFC 2617 """ params = auth_map algorithm = params.get("algorithm", MD5) H = DIGEST_AUTH_ENCODERS[algorithm] def KD(secret, data): s = secret + ":" + data return H(s.encode("utf-8")) qop = params.get("qop", None) s = _A2(params, method, kwargs) H_A2 = H(s.encode("utf-8")) if algorithm == MD5_SESS and A1 is not None: H_A1 = H(A1.encode("utf-8")) else: s = _A1(params, password) H_A1 = H(s.encode("utf-8")) if qop in ("auth", "auth-int"): # If the "qop" value is "auth" or "auth-int": # request-digest = <"> < KD ( H(A1), unq(nonce-value) # ":" nc-value # ":" unq(cnonce-value) # ":" unq(qop-value) # ":" H(A2) # ) <"> request = "%s:%s:%s:%s:%s" % ( params["nonce"], params["nc"], params["cnonce"], params["qop"], H_A2, ) elif qop is None: # If the "qop" directive is not present (this construction is # for compatibility with RFC 2069): # request-digest = # <"> < KD ( H(A1), unq(nonce-value) ":" H(A2) ) > <"> request = "%s:%s" % (params["nonce"], H_A2) return KD(H_A1, request) def _checkDigestResponse(auth_map, password, method="GET", A1=None, **kwargs): """This function is used to verify the response given by the client when he tries to authenticate. Optional arguments: entity_body - when 'qop' is set to 'auth-int' you MUST provide the raw data you are going to send to the client (usually the HTML page. request_uri - the uri from the request line compared with the 'uri' directive of the authorization map. They must represent the same resource (unused at this time). """ if auth_map['realm'] != kwargs.get('realm', None): return False response = _computeDigestResponse(auth_map, password, method, A1, **kwargs) return response == auth_map["response"] def _checkBasicResponse(auth_map, password, method='GET', encrypt=None, **kwargs): # Note that the Basic response doesn't provide the realm value so we cannot # test it try: return encrypt(auth_map["password"], auth_map["username"]) == password except TypeError: return encrypt(auth_map["password"]) == password AUTH_RESPONSES = { "basic": _checkBasicResponse, "digest": _checkDigestResponse, } def checkResponse(auth_map, password, method="GET", encrypt=None, **kwargs): """'checkResponse' compares the auth_map with the password and optionally other arguments that each implementation might need. If the response is of type 'Basic' then the function has the following signature: checkBasicResponse (auth_map, password) -> bool If the response is of type 'Digest' then the function has the following signature: checkDigestResponse (auth_map, password, method = 'GET', A1 = None) -> bool The 'A1' argument is only used in MD5_SESS algorithm based responses. Check md5SessionKey() for more info. """ global AUTH_RESPONSES checker = AUTH_RESPONSES[auth_map["auth_scheme"]] return checker( auth_map, password, method=method, encrypt=encrypt, **kwargs ) circuits-3.1.0/circuits/web/loggers.py0000644000014400001440000000526012402037676020761 0ustar prologicusers00000000000000# Module: loggers # Date: 6th November 2008 # Author: James Mills, prologic at shortcircuit dot net dot au """Logger Component This module implements Logger Components. """ import os import sys import datetime from io import IOBase from email._parseaddr import _monthnames from circuits.six import string_types from circuits.core import handler, BaseComponent def formattime(): now = datetime.datetime.now() month = _monthnames[now.month - 1].capitalize() return ("[%02d/%s/%04d:%02d:%02d:%02d]" % (now.day, month, now.year, now.hour, now.minute, now.second)) class Logger(BaseComponent): channel = "web" format = "%(h)s %(l)s %(u)s %(t)s " \ "\"%(r)s\" %(s)s %(b)s \"%(f)s\" \"%(a)s\"" def __init__(self, file=None, logger=None, **kwargs): super(Logger, self).__init__(**kwargs) if isinstance(file, string_types): self.file = open(os.path.abspath(os.path.expanduser(file)), "a") elif isinstance(file, IOBase) or hasattr(file, "write"): self.file = file else: self.file = sys.stdout self.logger = logger @handler("response_success") def log_response(self, response_event, value): response = response_event.args[0] self.log(response) def log(self, response): request = response.request remote = request.remote outheaders = response.headers inheaders = request.headers or {} protocol = "HTTP/%d.%d" % request.protocol host = inheaders.get("X-Forwarded-For", (remote.name or remote.ip)) atoms = {"h": host, "l": "-", "u": getattr(request, "login", None) or "-", "t": formattime(), "r": "%s %s %s" % (request.method, request.path, protocol), "s": int(response.status), "b": outheaders.get("Content-Length", "") or "-", "f": inheaders.get("Referer", ""), "a": inheaders.get("User-Agent", ""), } for k, v in list(atoms.items()): if isinstance(v, str): v = v.encode("utf8") elif not isinstance(v, str): v = str(v) # Fortunately, repr(str) escapes unprintable chars, \n, \t, etc # and backslash for us. All we have to do is strip the quotes. v = repr(v)[1:-1] # Escape double-quote. atoms[k] = v.replace("\"", "\\\"") if self.logger is not None: self.logger.info(self.format % atoms) else: self.file.write(self.format % atoms) self.file.write("\n") self.file.flush() circuits-3.1.0/circuits/web/url.py0000755000014400001440000002354212402037676020127 0ustar prologicusers00000000000000#!/usr/bin/env python # # Copyright (c) 2012 SEOmoz # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. '''This is a module for dealing with urls. In particular, sanitizing them.''' import re import codecs try: from urllib.parse import quote, unquote from urllib.parse import urljoin, urlparse, urlunparse except ImportError: from urllib import quote, unquote # NOQA from urlparse import urljoin, urlparse, urlunparse # NOQA from circuits.six import b, string_types, text_type # Come codes that we'll need IDNA = codecs.lookup('idna') UTF8 = codecs.lookup('utf-8') ASCII = codecs.lookup('ascii') W1252 = codecs.lookup('windows-1252') # The default ports associated with each scheme PORTS = { 'http': 80, 'https': 443 } def parse_url(url, encoding='utf-8'): '''Parse the provided url string and return an URL object''' return URL.parse(url, encoding) class URL(object): ''' For more information on how and what we parse / sanitize: http://tools.ietf.org/html/rfc1808.html The more up-to-date RFC is this one: http://www.ietf.org/rfc/rfc3986.txt ''' @classmethod def parse(cls, url, encoding): '''Parse the provided url, and return a URL instance''' if isinstance(url, text_type): parsed = urlparse(url.encode('utf-8')) else: parsed = urlparse(url.decode(encoding).encode('utf-8')) try: port = str(parsed.port).encode("utf-8") except ValueError: port = None return cls( parsed.scheme, parsed.hostname, port, parsed.path, parsed.params, parsed.query, parsed.fragment ) def __init__(self, scheme, host, port, path, params=b"", query=b"", fragment=b""): assert not type(port) is int self._scheme = scheme self._host = host self._port = port self._path = path or b('/') self._params = re.sub(b('^;+'), b(''), params) self._params = re.sub( b('^;|;$'), b(''), re.sub(b(';{2,}'), b(';'), self._params) ) # Strip off extra leading ?'s self._query = query.lstrip(b('?')) self._query = re.sub( b('^&|&$'), b(''), re.sub(b('&{2,}'), b('&'), self._query) ) self._fragment = fragment def __call__(self, path, encoding="utf-8"): return self.relative(path, encoding=encoding).unicode() def equiv(self, other): '''Return true if this url is equivalent to another''' if isinstance(other, string_types[0]): _other = self.parse(other, 'utf-8') else: _other = self.parse(other.utf8(), 'utf-8') _self = self.parse(self.utf8(), 'utf-8') _self.lower().canonical().defrag().abspath().escape().punycode() _other.lower().canonical().defrag().abspath().escape().punycode() result = ( _self._scheme == _other._scheme and _self._host == _other._host and _self._path == _other._path and _self._params == _other._params and _self._query == _other._query) if result: if _self._port and not _other._port: # Make sure _self._port is the default for the scheme return _self._port == PORTS.get(_self._scheme, None) elif _other._port and not _self._port: # Make sure _other._port is the default for the scheme return _other._port == PORTS.get(_other._scheme, None) else: return _self._port == _other._port else: return False def __eq__(self, other): '''Return true if this url is /exactly/ equal to another''' if isinstance(other, basestring): return self.__eq__(self.parse(other, 'utf-8')) return ( self._scheme == other._scheme and self._host == other._host and self._path == other._path and self._port == other._port and self._params == other._params and self._query == other._query and self._fragment == other._fragment) def __ne__(self, other): return not self.__eq__(other) def __str__(self): return self.utf8() def __repr__(self): return '' % self.utf8() def canonical(self): '''Canonicalize this url. This includes reordering parameters and args to have a consistent ordering''' self._query = b('&').join( sorted([q for q in self._query.split(b('&'))]) ) self._params = b(';').join( sorted([q for q in self._params.split(b(';'))]) ) return self def defrag(self): '''Remove the fragment from this url''' self._fragment = None return self def deparam(self, params=None): '''Strip any of the provided parameters out of the url''' # And remove all the black-listed query parameters self._query = '&'.join(q for q in self._query.split('&') if q.partition('=')[0].lower() not in params) # And remove all the black-listed param parameters self._params = ';'.join(q for q in self._params.split(';') if q.partition('=')[0].lower() not in params) return self def abspath(self): '''Clear out any '..' and excessive slashes from the path''' # Remove double forward-slashes from the path path = re.sub(b('\/{2,}'), b('/'), self._path) # With that done, go through and remove all the relative references unsplit = [] for part in path.split(b('/')): # If we encounter the parent directory, and there's # a segment to pop off, then we should pop it off. if part == b('..') and (not unsplit or unsplit.pop() is not None): pass elif part != b('.'): unsplit.append(part) # With all these pieces, assemble! if self._path.endswith(b('.')): # If the path ends with a period, then it refers to a directory, # not a file path self._path = b('/').join(unsplit) + b('/') else: self._path = b('/').join(unsplit) return self def lower(self): '''Lowercase the hostname''' self._host = self._host.lower() return self def sanitize(self): '''A shortcut to abspath, escape and lowercase''' return self.abspath().escape().lower() def escape(self): '''Make sure that the path is correctly escaped''' self._path = quote(unquote(self._path.decode("utf-8"))).encode("utf-8") return self def unescape(self): '''Unescape the path''' self._path = unquote(self._path) return self def encode(self, encoding): '''Return the url in an arbitrary encoding''' netloc = self._host if self._port: netloc += (b(':') + bytes(self._port)) result = urlunparse(( self._scheme, netloc, self._path, self._params, self._query, self._fragment )) return result.decode('utf-8').encode(encoding) def relative(self, path, encoding='utf-8'): '''Evaluate the new path relative to the current url''' if isinstance(path, text_type): newurl = urljoin(self.utf8(), path.encode('utf-8')) else: newurl = urljoin( self.utf8(), path.decode(encoding).encode('utf-8') ) return URL.parse(newurl, 'utf-8') def punycode(self): '''Convert to punycode hostname''' if self._host: self._host = IDNA.encode(self._host.decode('utf-8'))[0] return self raise TypeError('Cannot punycode a relative url') def unpunycode(self): '''Convert to an unpunycoded hostname''' if self._host: self._host = IDNA.decode( self._host.decode('utf-8'))[0].encode('utf-8') return self raise TypeError('Cannot unpunycode a relative url') ########################################################################### # Information about the type of url it is ########################################################################### def absolute(self): '''Return True if this is a fully-qualified URL with a hostname and everything''' return bool(self._host) ########################################################################### # Get a string representation. These methods can't be chained, as they # return strings ########################################################################### def unicode(self): '''Return a unicode version of this url''' return self.encode('utf-8').decode('utf-8') def utf8(self): '''Return a utf-8 version of this url''' return self.encode('utf-8') circuits-3.1.0/circuits/web/events.py0000644000014400001440000000134512402037676020623 0ustar prologicusers00000000000000# Module: events # Date: 3rd February 2009 # Author: James Mills, prologic at shortcircuit dot net dot au """Events This module implements the necessary Events needed. """ from circuits import Event class request(Event): """request(Event) -> request Event args: request, response """ success = True failure = True complete = True class response(Event): """response(Event) -> response Event args: request, response """ success = True failure = True complete = True class stream(Event): """stream(Event) -> stream Event args: request, response """ success = True failure = True complete = True class terminate(Event): """terminate Event""" circuits-3.1.0/circuits/web/constants.py0000644000014400001440000000461312402037676021334 0ustar prologicusers00000000000000# Module: constants # Date: 4th February 2009 # Author: James Mills, prologic at shortcircuit dot net dot au """Global Constants This module implements required shared global constants. """ from circuits import __version__ SERVER_PROTOCOL = (1, 1) SERVER_VERSION = "circuits.web/%s" % __version__ SERVER_URL = "http://circuitsweb.com/" DEFAULT_ERROR_MESSAGE = """\ %(code)d %(name)s

    %(name)s

    %(description)s
    %(traceback)s
    Powered by %(version)s
    """ HTTP_STATUS_CODES = { 100: "Continue", 101: "Switching Protocols", 102: "Processing", 200: "OK", 201: "Created", 202: "Accepted", 203: "Non Authoritative Information", 204: "No Content", 205: "Reset Content", 206: "Partial Content", 207: "Multi Status", 226: "IM Used", 300: "Multiple Choices", 301: "Moved Permanently", 302: "Found", 303: "See Other", 304: "Not Modified", 305: "Use Proxy", 307: "Temporary Redirect", 400: "Bad Request", 401: "Unauthorized", 402: "Payment Required", 403: "Forbidden", 404: "Not Found", 405: "Method Not Allowed", 406: "Not Acceptable", 407: "Proxy Authentication Required", 408: "Request Timeout", 409: "Conflict", 410: "Gone", 411: "Length Required", 412: "Precondition Failed", 413: "Request Entity Too Large", 414: "Request URI Too Long", 415: "Unsupported Media Type", 416: "Requested Range Not Satisfiable", 417: "Expectation Failed", 418: "I\"m a teapot", 422: "Unprocessable Entity", 423: "Locked", 424: "Failed Dependency", 426: "Upgrade Required", 449: "Retry With", 500: "Internal Server Error", 501: "Not Implemented", 502: "Bad Gateway", 503: "Service Unavailable", 504: "Gateway Timeout", 505: "HTTP Version Not Supported", 507: "Insufficient Storage", 510: "Not Extended" } circuits-3.1.0/circuits/web/tools.py0000644000014400001440000004053712402037676020465 0ustar prologicusers00000000000000# Module: tools # Date: 16th February 2009 # Author: James Mills, prologic at shortcircuit dot net dot au """Tools This module implements tools used throughout circuits.web. These tools can also be used within Controlelrs and request handlers. """ import os import stat import hashlib import mimetypes import collections from time import mktime from email.utils import formatdate from datetime import datetime, timedelta from email.generator import _make_boundary mimetypes.init() mimetypes.add_type("image/x-dwg", ".dwg") mimetypes.add_type("image/x-icon", ".ico") mimetypes.add_type("text/javascript", ".js") mimetypes.add_type("application/xhtml+xml", ".xhtml") from . import _httpauth from .utils import get_ranges, compress from .errors import httperror, notfound, redirect, unauthorized def expires(request, response, secs=0, force=False): """Tool for influencing cache mechanisms using the 'Expires' header. 'secs' must be either an int or a datetime.timedelta, and indicates the number of seconds between response.time and when the response should expire. The 'Expires' header will be set to (response.time + secs). If 'secs' is zero, the 'Expires' header is set one year in the past, and the following "cache prevention" headers are also set: - 'Pragma': 'no-cache' - 'Cache-Control': 'no-cache, must-revalidate' If 'force' is False (the default), the following headers are checked: 'Etag', 'Last-Modified', 'Age', 'Expires'. If any are already present, none of the above response headers are set. """ headers = response.headers cacheable = False if not force: # some header names that indicate that the response can be cached for indicator in ('Etag', 'Last-Modified', 'Age', 'Expires'): if indicator in headers: cacheable = True break if not cacheable: if isinstance(secs, timedelta): secs = (86400 * secs.days) + secs.seconds if secs == 0: if force or "Pragma" not in headers: headers["Pragma"] = "no-cache" if request.protocol >= (1, 1): if force or "Cache-Control" not in headers: headers["Cache-Control"] = "no-cache, must-revalidate" # Set an explicit Expires date in the past. now = datetime.now() lastyear = now.replace(year=now.year - 1) expiry = formatdate( mktime(lastyear.timetuple()), usegmt=True ) else: expiry = formatdate(response.time + secs, usegmt=True) if force or "Expires" not in headers: headers["Expires"] = expiry def serve_file(request, response, path, type=None, disposition=None, name=None): """Set status, headers, and body in order to serve the given file. The Content-Type header will be set to the type arg, if provided. If not provided, the Content-Type will be guessed by the file extension of the 'path' argument. If disposition is not None, the Content-Disposition header will be set to "; filename=". If name is None, it will be set to the basename of path. If disposition is None, no Content-Disposition header will be written. """ if not os.path.isabs(path): raise ValueError("'%s' is not an absolute path." % path) try: st = os.stat(path) except OSError: return notfound(request, response) # Check if path is a directory. if stat.S_ISDIR(st.st_mode): # Let the caller deal with it as they like. return notfound(request, response) # Set the Last-Modified response header, so that # modified-since validation code can work. response.headers['Last-Modified'] = formatdate( st.st_mtime, usegmt=True ) result = validate_since(request, response) if result is not None: return result if type is None: # Set content-type based on filename extension ext = "" i = path.rfind('.') if i != -1: ext = path[i:].lower() type = mimetypes.types_map.get(ext, "text/plain") response.headers['Content-Type'] = type if disposition is not None: if name is None: name = os.path.basename(path) cd = '%s; filename="%s"' % (disposition, name) response.headers["Content-Disposition"] = cd # Set Content-Length and use an iterable (file object) # this way CP won't load the whole file in memory c_len = st.st_size bodyfile = open(path, 'rb') # HTTP/1.0 didn't have Range/Accept-Ranges headers, or the 206 code if request.protocol >= (1, 1): response.headers["Accept-Ranges"] = "bytes" r = get_ranges(request.headers.get('Range'), c_len) if r == []: response.headers['Content-Range'] = "bytes */%s" % c_len return httperror(request, response, 416) if r: if len(r) == 1: # Return a single-part response. start, stop = r[0] r_len = stop - start response.status = 206 response.headers['Content-Range'] = ( "bytes %s-%s/%s" % (start, stop - 1, c_len) ) response.headers['Content-Length'] = r_len bodyfile.seek(start) response.body = bodyfile.read(r_len) else: # Return a multipart/byteranges response. response.status = 206 boundary = _make_boundary() ct = "multipart/byteranges; boundary=%s" % boundary response.headers['Content-Type'] = ct if "Content-Length" in response.headers: # Delete Content-Length header so finalize() recalcs it. del response.headers["Content-Length"] def file_ranges(): # Apache compatibility: yield "\r\n" for start, stop in r: yield "--" + boundary yield "\r\nContent-type: %s" % type yield ("\r\nContent-range: bytes %s-%s/%s\r\n\r\n" % (start, stop - 1, c_len)) bodyfile.seek(start) yield bodyfile.read(stop - start) yield "\r\n" # Final boundary yield "--" + boundary + "--" # Apache compatibility: yield "\r\n" response.body = file_ranges() else: response.headers['Content-Length'] = c_len response.body = bodyfile else: response.headers['Content-Length'] = c_len response.body = bodyfile return response def serve_download(request, response, path, name=None): """Serve 'path' as an application/x-download attachment.""" type = "application/x-download" disposition = "attachment" return serve_file(request, response, path, type, disposition, name) def validate_etags(request, response, autotags=False): """Validate the current ETag against If-Match, If-None-Match headers. If autotags is True, an ETag response-header value will be provided from an MD5 hash of the response body (unless some other code has already provided an ETag header). If False (the default), the ETag will not be automatic. WARNING: the autotags feature is not designed for URL's which allow methods other than GET. For example, if a POST to the same URL returns no content, the automatic ETag will be incorrect, breaking a fundamental use for entity tags in a possibly destructive fashion. Likewise, if you raise 304 Not Modified, the response body will be empty, the ETag hash will be incorrect, and your application will break. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.24 """ # Guard against being run twice. if hasattr(response, "ETag"): return status = response.status etag = response.headers.get('ETag') # Automatic ETag generation. See warning in docstring. if (not etag) and autotags: if status == 200: etag = response.collapse_body() etag = '"%s"' % hashlib.md5.new(etag).hexdigest() response.headers['ETag'] = etag response.ETag = etag # "If the request would, without the If-Match header field, result in # anything other than a 2xx or 412 status, then the If-Match header # MUST be ignored." if status >= 200 and status <= 299: conditions = request.headers.elements('If-Match') or [] conditions = [str(x) for x in conditions] if conditions and not (conditions == ["*"] or etag in conditions): return httperror( request, response, 412, description="If-Match failed: ETag %r did not match %r" % ( etag, conditions ) ) conditions = request.headers.elements('If-None-Match') or [] conditions = [str(x) for x in conditions] if conditions == ["*"] or etag in conditions: if request.method in ("GET", "HEAD"): return redirect(request, response, [], code=304) else: return httperror( request, response, 412, description=( "If-None-Match failed: ETag %r matched %r" % ( etag, conditions ) ) ) def validate_since(request, response): """Validate the current Last-Modified against If-Modified-Since headers. If no code has set the Last-Modified response header, then no validation will be performed. """ lastmod = response.headers.get('Last-Modified') if lastmod: status = response.status since = request.headers.get('If-Unmodified-Since') if since and since != lastmod: if (status >= 200 and status <= 299) or status == 412: return httperror(request, response, 412) since = request.headers.get('If-Modified-Since') if since and since == lastmod: if (status >= 200 and status <= 299) or status == 304: if request.method in ("GET", "HEAD"): return redirect(request, response, [], code=304) else: return httperror(request, response, 412) def check_auth(request, response, realm, users, encrypt=None): """Check Authentication If an Authorization header contains credentials, return True, else False. :param realm: The authentication realm. :type realm: str :param users: A dict of the form: {username: password} or a callable returning a dict. :type users: dict or callable :param encrypt: Callable used to encrypt the password returned from the user-agent. if None it defaults to a md5 encryption. :type encrypt: callable """ if "Authorization" in request.headers: # make sure the provided credentials are correctly set ah = _httpauth.parseAuthorization(request.headers.get("Authorization")) if ah is None: return httperror(request, response, 400) if not encrypt: encrypt = _httpauth.DIGEST_AUTH_ENCODERS[_httpauth.MD5] if isinstance(users, collections.Callable): try: # backward compatibility users = users() # expect it to return a dictionary if not isinstance(users, dict): raise ValueError("Authentication users must be a dict") # fetch the user password password = users.get(ah["username"], None) except TypeError: # returns a password (encrypted or clear text) password = users(ah["username"]) else: if not isinstance(users, dict): raise ValueError("Authentication users must be a dict") # fetch the user password password = users.get(ah["username"], None) # validate the Authorization by re-computing it here # and compare it with what the user-agent provided if _httpauth.checkResponse(ah, password, method=request.method, encrypt=encrypt, realm=realm): request.login = ah["username"] return True request.login = False return False def basic_auth(request, response, realm, users, encrypt=None): """Perform Basic Authentication If auth fails, returns an Unauthorized error with a basic authentication header. :param realm: The authentication realm. :type realm: str :param users: A dict of the form: {username: password} or a callable returning a dict. :type users: dict or callable :param encrypt: Callable used to encrypt the password returned from the user-agent. if None it defaults to a md5 encryption. :type encrypt: callable """ if check_auth(request, response, realm, users, encrypt): return # inform the user-agent this path is protected response.headers["WWW-Authenticate"] = _httpauth.basicAuth(realm) return unauthorized(request, response) def digest_auth(request, response, realm, users): """Perform Digest Authentication If auth fails, raise 401 with a digest authentication header. :param realm: The authentication realm. :type realm: str :param users: A dict of the form: {username: password} or a callable returning a dict. :type users: dict or callable """ if check_auth(request, response, realm, users): return # inform the user-agent this path is protected response.headers["WWW-Authenticate"] = _httpauth.digestAuth(realm) return unauthorized(request, response) def gzip(response, level=4, mime_types=['text/html', 'text/plain']): """Try to gzip the response body if Content-Type in mime_types. response.headers['Content-Type'] must be set to one of the values in the mime_types arg before calling this function. No compression is performed if any of the following hold: * The client sends no Accept-Encoding request header * No 'gzip' or 'x-gzip' is present in the Accept-Encoding header * No 'gzip' or 'x-gzip' with a qvalue > 0 is present * The 'identity' value is given with a qvalue > 0. """ if not response.body: # Response body is empty (might be a 304 for instance) return response # If returning cached content (which should already have been gzipped), # don't re-zip. if getattr(response.request, "cached", False): return response acceptable = response.request.headers.elements('Accept-Encoding') if not acceptable: # If no Accept-Encoding field is present in a request, # the server MAY assume that the client will accept any # content coding. In this case, if "identity" is one of # the available content-codings, then the server SHOULD use # the "identity" content-coding, unless it has additional # information that a different content-coding is meaningful # to the client. return response ct = response.headers.get('Content-Type', 'text/html').split(';')[0] for coding in acceptable: if coding.value == 'identity' and coding.qvalue != 0: return response if coding.value in ('gzip', 'x-gzip'): if coding.qvalue == 0: return response if ct in mime_types: # Return a generator that compresses the page varies = response.headers.get("Vary", "") varies = [x.strip() for x in varies.split(",") if x.strip()] if "Accept-Encoding" not in varies: varies.append("Accept-Encoding") response.headers['Vary'] = ", ".join(varies) response.headers['Content-Encoding'] = 'gzip' response.body = compress(response.body, level) if "Content-Length" in response.headers: # Delete Content-Length header so finalize() recalcs it. del response.headers["Content-Length"] return response return httperror( response.request, response, 406, description="identity, gzip" ) circuits-3.1.0/circuits/web/sessions.py0000644000014400001440000000406612402037676021170 0ustar prologicusers00000000000000# Module: sessions # Date: 22nd February 2009 # Author: James Mills, prologic at shortcircuit dot net dot au """Session Components This module implements Session Components that can be used to store and access persistent information. """ from uuid import uuid4 as uuid from hashlib import sha1 as sha from collections import defaultdict from circuits import handler, Component def who(request, encoding="utf-8"): """Create a SHA1 Hash of the User's IP Address and User-Agent""" ip = request.remote.ip agent = request.headers.get("User-Agent", "") return sha("{0:s}{1:s}".format(ip, agent).encode(encoding)).hexdigest() def create_session(request): """Create a unique session id from the request Returns a unique session using ``uuid4()`` and a ``sha1()`` hash of the users IP Address and User Agent in the form of ``sid/who``. """ return "{0:s}/{1:s}".format(uuid().hex, who(request)) def verify_session(request, sid): """Verify a User's Session This verifies the User's Session by verifying the SHA1 Hash of the User's IP Address and User-Agent match the provided Session ID. """ if "/" not in sid: return create_session(request) user = sid.split("/", 1)[1] if user != who(request): return create_session(request) return sid class Sessions(Component): channel = "web" def __init__(self, name="circuits.session", channel=channel): super(Sessions, self).__init__(channel=channel) self._name = name self._data = defaultdict(dict) def load(self, sid): return self._data[sid] def save(self, sid, data): """Save User Session Data for sid""" @handler("request", priority=10) def request(self, request, response): if self._name in request.cookie: sid = request.cookie[self._name].value sid = verify_session(request, sid) else: sid = create_session(request) request.sid = sid request.session = self.load(sid) response.cookie[self._name] = sid circuits-3.1.0/circuits/web/wsgi.py0000644000014400001440000001447512402037676020300 0ustar prologicusers00000000000000# Module: wsgi # Date: 6th November 2008 # Author: James Mills, prologic at shortcircuit dot net dot au """WSGI Components This module implements WSGI Components. """ try: from urllib.parse import unquote except ImportError: from urllib import unquote # NOQA from operator import itemgetter from traceback import format_tb from types import GeneratorType from sys import exc_info as _exc_info from circuits.tools import tryimport from circuits.core import handler, BaseComponent StringIO = tryimport(("cStringIO", "StringIO", "io"), "StringIO") from .http import HTTP from .events import request from .headers import Headers from .errors import httperror from circuits.web import wrappers from .dispatchers import Dispatcher def create_environ(errors, path, req): environ = {} env = environ.__setitem__ env("REQUEST_METHOD", req.method) env("SERVER_NAME", req.host.split(":", 1)[0]) env("SERVER_PORT", "%i" % (req.server.port or 0)) env("SERVER_PROTOCOL", "HTTP/%d.%d" % req.server.http.protocol) env("QUERY_STRING", req.qs) env("SCRIPT_NAME", req.script_name) env("CONTENT_TYPE", req.headers.get("Content-Type", "")) env("CONTENT_LENGTH", req.headers.get("Content-Length", "")) env("REMOTE_ADDR", req.remote.ip) env("REMOTE_PORT", "%i" % (req.remote.port or 0)) env("wsgi.version", (1, 0)) env("wsgi.input", req.body) env("wsgi.errors", errors) env("wsgi.multithread", False) env("wsgi.multiprocess", False) env("wsgi.run_once", False) env("wsgi.url_scheme", req.scheme) if req.path: req.script_name = req.path[:len(path)] req.path = req.path[len(path):] env("SCRIPT_NAME", req.script_name) env("PATH_INFO", req.path) for k, v in list(req.headers.items()): env("HTTP_%s" % k.upper().replace("-", "_"), v) return environ class Application(BaseComponent): channel = "web" headerNames = { "HTTP_CGI_AUTHORIZATION": "Authorization", "CONTENT_LENGTH": "Content-Length", "CONTENT_TYPE": "Content-Type", "REMOTE_HOST": "Remote-Host", "REMOTE_ADDR": "Remote-Addr", } def init(self): self._finished = False HTTP(self).register(self) Dispatcher().register(self) def translateHeaders(self, environ): for cgiName in environ: # We assume all incoming header keys are uppercase already. if cgiName in self.headerNames: yield self.headerNames[cgiName], environ[cgiName] elif cgiName[:5] == "HTTP_": # Hackish attempt at recovering original header names. translatedHeader = cgiName[5:].replace("_", "-") yield translatedHeader, environ[cgiName] def getRequestResponse(self, environ): env = environ.get headers = Headers(list(self.translateHeaders(environ))) protocol = tuple(map(int, env("SERVER_PROTOCOL")[5:].split("."))) req = wrappers.Request( None, env("REQUEST_METHOD"), env("wsgi.url_scheme"), env("PATH_INFO", ""), protocol, env("QUERY_STRING", ""), headers=headers ) req.remote = wrappers.Host(env("REMOTE_ADDR"), env("REMTOE_PORT")) req.script_name = env("SCRIPT_NAME") req.wsgi_environ = environ try: cl = int(headers.get("Content-Length", "0")) except: cl = 0 req.body.write(env("wsgi.input").read(cl)) req.body.seek(0) res = wrappers.Response(req) res.gzip = "gzip" in req.headers.get("Accept-Encoding", "") return req, res def __call__(self, environ, start_response, exc_info=None): self.request, self.response = self.getRequestResponse(environ) self.fire(request(self.request, self.response)) self._finished = False while self or not self._finished: self.tick() self.response.prepare() body = self.response.body status = self.response.status headers = list(self.response.headers.items()) start_response(str(status), headers, exc_info) return body @handler("response", channel="web") def response(self, event, response): self._finished = True event.stop() @property def host(self): return "" @property def port(self): return 0 @property def secure(self): return False class _Empty(str): def __bool__(self): return True __nonzero__ = __bool__ empty = _Empty() del _Empty class Gateway(BaseComponent): channel = "web" def init(self, apps): self.apps = apps self.errors = dict((k, StringIO()) for k in self.apps.keys()) @handler("request", priority=0.2) def _on_request(self, event, req, res): if not self.apps: return parts = req.path.split("/") candidates = [] for i in range(len(parts)): k = "/".join(parts[:(i + 1)]) or "/" if k in self.apps: candidates.append((k, self.apps[k])) candidates = sorted(candidates, key=itemgetter(0), reverse=True) if not candidates: return path, app = candidates[0] buffer = StringIO() def start_response(status, headers, exc_info=None): res.status = int(status.split(" ", 1)[0]) for header in headers: res.headers.add_header(*header) return buffer.write errors = self.errors[path] environ = create_environ(errors, path, req) try: body = app(environ, start_response) if isinstance(body, list): body = "".join(body) elif isinstance(body, GeneratorType): res.body = body res.stream = True return res if not body: if not buffer.tell(): return empty else: buffer.seek(0) return buffer else: return body except Exception as error: etype, evalue, etraceback = _exc_info() error = (etype, evalue, format_tb(etraceback)) return httperror(req, res, 500, error=error) finally: event.stop() circuits-3.1.0/circuits/web/main.py0000755000014400001440000001320312402037676020242 0ustar prologicusers00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- """Main circutis.web Web Server and Testing Tool. """ import os from sys import stderr from hashlib import md5 from optparse import OptionParser from wsgiref.validate import validator from wsgiref.simple_server import make_server try: import hotshot import hotshot.stats except ImportError: hostshot = None import circuits from circuits import handler, Component, Manager, Debugger from circuits.core.pollers import Select from circuits.tools import inspect, graph from circuits.web.wsgi import Application from circuits.web.tools import check_auth, digest_auth from circuits.web import BaseServer, Controller, Logger, Server, Static try: from circuits.core.pollers import Poll except ImportError: Poll = None # NOQA try: from circuits.core.pollers import EPoll except ImportError: EPoll = None # NOQA USAGE = "%prog [options] [docroot]" VERSION = "%prog v" + circuits.__version__ def parse_options(): parser = OptionParser(usage=USAGE, version=VERSION) parser.add_option( "-b", "--bind", action="store", type="string", default="0.0.0.0:8000", dest="bind", help="Bind to address:[port]" ) parser.add_option( "-l", "--logging", action="store_true", default=False, dest="logging", help="Enable logging of requests" ) parser.add_option( "-p", "--passwd", action="store", default=None, dest="passwd", help="Location to passwd file for Digest Auth" ) parser.add_option( "-j", "--jobs", action="store", type="int", default=0, dest="jobs", help="Specify no. of jobs/processes to start" ) parser.add_option( "", "--poller", action="store", type="string", default="select", dest="poller", help="Specify type of poller to use" ) parser.add_option( "", "--server", action="store", type="string", default="server", dest="server", help="Specify server to use" ) parser.add_option( "", "--profile", action="store_true", default=False, dest="profile", help="Enable execution profiling support" ) parser.add_option( "", "--debug", action="store_true", default=False, dest="debug", help="Enable debug mode" ) parser.add_option( "", "--validate", action="store_true", default=False, dest="validate", help="Enable WSGI validation mode" ) opts, args = parser.parse_args() return opts, args class Authentication(Component): channel = "web" realm = "Secure Area" users = {"admin": md5("admin").hexdigest()} def __init__(self, channel=channel, realm=None, passwd=None): super(Authentication, self).__init__(self, channel=channel) if realm is not None: self.realm = realm if passwd is not None: with open(passwd, "r") as f: lines = (line.strip() for line in f) self.users = dict((line.split(":", 1) for line in lines)) @handler("request", priority=10) def request(self, event, request, response): if not check_auth(request, response, self.realm, self.users): event.stop() return digest_auth(request, response, self.realm, self.users) class HelloWorld(Component): channel = "web" def request(self, request, response): return "Hello World!" class Root(Controller): def hello(self): return "Hello World!" def select_poller(poller): if poller == "poll": if Poll is None: stderr.write( "No poll support available - defaulting to Select..." ) Poller = Select else: Poller = Poll elif poller == "epoll": if EPoll is None: stderr.write( "No epoll support available - defaulting to Select..." ) Poller = Select else: Poller = EPoll else: Poller = Select return Poller def parse_bind(bind): if ":" in bind: address, port = bind.split(":") port = int(port) else: address, port = bind, 8000 return (address, port) def main(): opts, args = parse_options() bind = parse_bind(opts.bind) if opts.validate: application = (Application() + Root()) app = validator(application) httpd = make_server(bind[0], bind[1], app) httpd.serve_forever() raise SystemExit(0) manager = Manager() opts.debug and Debugger().register(manager) Poller = select_poller(opts.poller.lower()) Poller().register(manager) if opts.server.lower() == "base": BaseServer(bind).register(manager) HelloWorld().register(manager) else: Server(bind).register(manager) Root().register(manager) docroot = os.getcwd() if not args else args[0] Static(docroot=docroot, dirlisting=True).register(manager) opts.passwd and Authentication(passwd=opts.passwd).register(manager) opts.logging and Logger().register(manager) if opts.profile and hotshot: profiler = hotshot.Profile(".profile") profiler.start() if opts.debug: print(graph(manager, name="circuits.web")) print() print(inspect(manager)) for i in range(opts.jobs): manager.start(process=True) manager.run() if opts.profile and hotshot: profiler.stop() profiler.close() stats = hotshot.stats.load(".profile") stats.strip_dirs() stats.sort_stats("time", "calls") stats.print_stats(20) if __name__ == "__main__": main() circuits-3.1.0/circuits/web/utils.py0000644000014400001440000003016612402037676020462 0ustar prologicusers00000000000000# Module: utils # Date: 13th September 2007 # Author: James Mills, prologic at shortcircuit dot net dot au """Utilities This module implements utility functions. """ import re import zlib import time import struct from math import sqrt from io import TextIOWrapper from cgi import FieldStorage from collections import MutableMapping try: from urllib.parse import urljoin as _urljoin except ImportError: from urlparse import urljoin as _urljoin # NOQA try: from urllib.parse import parse_qs as _parse_qs except ImportError: from cgi import parse_qs as _parse_qs # NOQA from circuits.six import iterbytes from .exceptions import RangeUnsatisfiable, RequestEntityTooLarge quoted_slash = re.compile("(?i)%2F") image_map_pattern = re.compile("^[0-9]+,[0-9]+$") def average(xs): return sum(xs) * 1.0 / len(xs) def variance(xs): avg = average(xs) return list(map(lambda x: (x - avg)**2, xs)) def stddev(xs): return sqrt(average(variance(xs))) def parse_body(request, response, params): if "Content-Type" not in request.headers: request.headers["Content-Type"] = "" try: form = FieldStorage( environ={"REQUEST_METHOD": "POST"}, fp=TextIOWrapper(request.body), headers=request.headers, keep_blank_values=True ) except Exception as e: if e.__class__.__name__ == 'MaxSizeExceeded': # Post data is too big raise RequestEntityTooLarge() raise if form.file: request.body = form.file else: params.update(dictform(form)) def parse_qs(query_string, keep_blank_values=True): """parse_qs(query_string) -> dict Build a params dictionary from a query_string. If keep_blank_values is True (the default), keep values that are blank. """ if image_map_pattern.match(query_string): # Server-side image map. Map the coords to "x" and "y" # (like CGI::Request does). pm = query_string.split(",") return {"x": int(pm[0]), "y": int(pm[1])} else: pm = _parse_qs(query_string, keep_blank_values) return dict((k, v[0]) for k, v in pm.items() if v) def dictform(form): d = {} for key in list(form.keys()): values = form[key] if isinstance(values, list): d[key] = [] for item in values: if item.filename is not None: value = item # It's a file upload else: value = item.value # It's a regular field d[key].append(value) else: if values.filename is not None: value = values # It's a file upload else: value = values.value # It's a regular field d[key] = value return d def compress(body, compress_level): """Compress 'body' at the given compress_level.""" # Header yield b"\037\213\010\0" \ + struct.pack("= content_length: # From rfc 2616 sec 14.16: # "If the server receives a request (other than one # including an If-Range request-header field) with an # unsatisfiable Range request-header field (that is, # all of whose byte-range-spec values have a first-byte-pos # value greater than the current length of the selected # resource), it SHOULD return a response code of 416 # (Requested range not satisfiable)." continue if stop < start: # From rfc 2616 sec 14.16: # "If the server ignores a byte-range-spec because it # is syntactically invalid, the server SHOULD treat # the request as if the invalid Range header field # did not exist. (Normally, this means return a 200 # response containing the full entity)." return None # Prevent duplicate ranges. See Issue #59 if (start, stop + 1) not in result: result.append((start, stop + 1)) else: if not stop: # See rfc quote above. return None # Negative subscript (last N bytes) # Prevent duplicate ranges. See Issue #59 if (content_length - int(stop), content_length) not in result: result.append((content_length - int(stop), content_length)) # Can we satisfy the requested Range? # If we have an exceedingly high standard deviation # of Range(s) we reject the request. # See Issue #59 if len(result) > 1 and stddev([x[1] - x[0] for x in result]) > 2.0: raise RangeUnsatisfiable() return result class IOrderedDict(dict, MutableMapping): 'Dictionary that remembers insertion order with insensitive key' # An inherited dict maps keys to values. # The inherited dict provides __getitem__, __len__, __contains__, and get. # The remaining methods are order-aware. # Big-O running times for all methods are the same as for regular dictionaries. # The internal self.__map dictionary maps keys to links in a doubly linked list. # The circular doubly linked list starts and ends with a sentinel element. # The sentinel element never gets deleted (this simplifies the algorithm). # Each link is stored as a list of length three: [PREV, NEXT, KEY]. def __init__(self, *args, **kwds): '''Initialize an ordered dictionary. Signature is the same as for regular dictionaries, but keyword arguments are not recommended because their insertion order is arbitrary. ''' if len(args) > 1: raise TypeError('expected at most 1 arguments, got %d' % len(args)) try: self.__root except AttributeError: self.__root = root = [None, None, None] # sentinel node PREV = 0 NEXT = 1 root[PREV] = root[NEXT] = root self.__map = {} self.__lower = {} self.update(*args, **kwds) def __setitem__(self, key, value, PREV=0, NEXT=1, dict_setitem=dict.__setitem__): 'od.__setitem__(i, y) <==> od[i]=y' # Setting a new item creates a new link which goes at the end of the linked # list, and the inherited dictionary is updated with the new key/value pair. if key not in self: root = self.__root last = root[PREV] last[NEXT] = root[PREV] = self.__map[key] = [last, root, key] self.__lower[key.lower()] = key key = self.__lower[key.lower()] dict_setitem(self, key, value) def __delitem__(self, key, PREV=0, NEXT=1, dict_delitem=dict.__delitem__): 'od.__delitem__(y) <==> del od[y]' # Deleting an existing item uses self.__map to find the link which is # then removed by updating the links in the predecessor and successor nodes. if key in self: key = self.__lower.pop(key.lower()) dict_delitem(self, key) link = self.__map.pop(key) link_prev = link[PREV] link_next = link[NEXT] link_prev[NEXT] = link_next link_next[PREV] = link_prev def __getitem__(self, key, dict_getitem=dict.__getitem__): if key in self: key = self.__lower.get(key.lower()) return dict_getitem(self, key) def __contains__(self, key): return key.lower() in self.__lower def __iter__(self, NEXT=1, KEY=2): 'od.__iter__() <==> iter(od)' # Traverse the linked list in order. root = self.__root curr = root[NEXT] while curr is not root: yield curr[KEY] curr = curr[NEXT] def __reversed__(self, PREV=0, KEY=2): 'od.__reversed__() <==> reversed(od)' # Traverse the linked list in reverse order. root = self.__root curr = root[PREV] while curr is not root: yield curr[KEY] curr = curr[PREV] def __reduce__(self): 'Return state information for pickling' items = [[k, self[k]] for k in self] tmp = self.__map, self.__root del self.__map, self.__root inst_dict = vars(self).copy() self.__map, self.__root = tmp if inst_dict: return (self.__class__, (items,), inst_dict) return self.__class__, (items,) def clear(self): 'od.clear() -> None. Remove all items from od.' try: for node in self.__map.values(): del node[:] self.__root[:] = [self.__root, self.__root, None] self.__map.clear() except AttributeError: pass dict.clear(self) def get(self, key, default=None): if key in self: return self[key] return default setdefault = MutableMapping.setdefault update = MutableMapping.update pop = MutableMapping.pop keys = MutableMapping.keys values = MutableMapping.values items = MutableMapping.items __ne__ = MutableMapping.__ne__ def popitem(self, last=True): '''od.popitem() -> (k, v), return and remove a (key, value) pair. Pairs are returned in LIFO order if last is true or FIFO order if false. ''' if not self: raise KeyError('dictionary is empty') key = next(reversed(self) if last else iter(self)) value = self.pop(key) return key, value def __repr__(self): 'od.__repr__() <==> repr(od)' if not self: return '%s()' % (self.__class__.__name__,) return '%s(%r)' % (self.__class__.__name__, list(self.items())) def copy(self): 'od.copy() -> a shallow copy of od' return self.__class__(self) @classmethod def fromkeys(cls, iterable, value=None): '''OD.fromkeys(S[, v]) -> New ordered dictionary with keys from S and values equal to v (which defaults to None). ''' d = cls() for key in iterable: d[key] = value return d def __eq__(self, other): '''od.__eq__(y) <==> od==y. Comparison to another OD is order-sensitive while comparison to a regular mapping is order-insensitive. ''' if isinstance(other, IOrderedDict): return ( len(self) == len(other) and set(self.items()) == set(other.items()) ) return dict.__eq__(self, other) def __del__(self): self.clear() # eliminate cyclical references def is_ssl_handshake(buf): """Detect an SSLv2 or SSLv3 handshake""" # SSLv3 v = buf[:3] if v in ["\x16\x03\x00", "\x16\x03\x01", "\x16\x03\x02"]: return True # SSLv2 v = list(iterbytes(buf))[:2] if (v[0] & 0x80 == 0x80) and ((v[0] & 0x7f) << 8 | v[1]) > 9: return True circuits-3.1.0/circuits/web/client.py0000644000014400001440000000700112402037676020570 0ustar prologicusers00000000000000 try: from urllib.parse import urlparse except ImportError: from urlparse import urlparse # NOQA from circuits.protocols.http import HTTP from circuits.web.headers import Headers from circuits.net.sockets import TCPClient from circuits.net.events import close, connect, write from circuits.core import handler, BaseComponent, Event def parse_url(url): p = urlparse(url) if p.hostname: host = p.hostname else: raise ValueError("URL must be absolute") if p.scheme == "http": secure = False port = p.port or 80 elif p.scheme == "https": secure = True port = p.port or 443 else: raise ValueError("Invalid URL scheme") path = p.path or "/" if p.query: path += "?" + p.query return (host, port, path, secure) class HTTPException(Exception): pass class NotConnected(HTTPException): pass class request(Event): """request Event This Event is used to initiate a new request. :param method: HTTP Method (PUT, GET, POST, DELETE) :type method: str :param url: Request URL :type url: str """ def __init__(self, method, path, body=None, headers={}): "x.__init__(...) initializes x; see x.__class__.__doc__ for signature" super(request, self).__init__(method, path, body, headers) class Client(BaseComponent): channel = "client" def __init__(self, channel=channel): super(Client, self).__init__(channel=channel) self._response = None self._transport = TCPClient(channel=channel).register(self) HTTP(channel=channel).register(self._transport) @handler("write") def write(self, data): if self._transport.connected: self.fire(write(data), self._transport) @handler("close") def close(self): if self._transport.connected: self.fire(close(), self._transport) @handler("connect", priority=1) def connect(self, event, host=None, port=None, secure=None): if not self._transport.connected: self.fire(connect(host, port, secure), self._transport) event.stop() @handler("request") def request(self, method, url, body=None, headers={}): host, port, path, secure = parse_url(url) if not self._transport.connected: self.fire(connect(host, port, secure)) yield self.wait("connected", self._transport.channel) headers = Headers([(k, v) for k, v in headers.items()]) # Clients MUST include Host header in HTTP/1.1 requests (RFC 2616) if "Host" not in headers: headers["Host"] = "{0:s}{1:s}".format( host, "" if port in (80, 443) else ":{0:d}".format(port) ) if body is not None: headers["Content-Length"] = len(body) command = "%s %s HTTP/1.1" % (method, path) message = "%s\r\n%s" % (command, headers) self.fire(write(message.encode('utf-8')), self._transport) if body is not None: self.fire(write(body), self._transport) yield (yield self.wait("response")) @handler("response") def _on_response(self, response): self._response = response if response.headers.get("Connection") == "close": self.fire(close(), self._transport) return response @property def connected(self): if hasattr(self, "_transport"): return self._transport.connected @property def response(self): return getattr(self, "_response", None) circuits-3.1.0/circuits/web/controllers.py0000644000014400001440000001305412402037676021665 0ustar prologicusers00000000000000# Module: controllers # Date: 6th November 2008 # Author: James Mills, prologic at shortcircuit dot net dot au """Controllers This module implements ... """ import json from inspect import getargspec from collections import Callable from functools import update_wrapper from circuits.core import handler, BaseComponent from . import tools from .wrappers import Response from .errors import forbidden, httperror, notfound, redirect def expose(*channels, **config): def decorate(f): @handler(*channels, **config) def wrapper(self, event, *args, **kwargs): try: if not hasattr(self, "request"): (self.request, self.response), args = args[:2], args[2:] self.request.args = args self.request.kwargs = kwargs self.cookie = self.request.cookie if hasattr(self.request, "session"): self.session = self.request.session if not getattr(f, "event", False): return f(self, *args, **kwargs) else: return f(self, event, *args, **kwargs) finally: if hasattr(self, "request"): del self.request del self.response del self.cookie if hasattr(self, "session"): del self.session wrapper.args, wrapper.varargs, wrapper.varkw, wrapper.defaults = \ getargspec(f) if wrapper.args and wrapper.args[0] == "self": del wrapper.args[0] if wrapper.args and wrapper.args[0] == "event": f.event = True del wrapper.args[0] wrapper.event = True return update_wrapper(wrapper, f) return decorate class ExposeMetaClass(type): def __init__(cls, name, bases, dct): super(ExposeMetaClass, cls).__init__(name, bases, dct) for k, v in dct.items(): if isinstance(v, Callable) \ and not (k[0] == "_" or hasattr(v, "handler")): setattr(cls, k, expose(k)(v)) class BaseController(BaseComponent): channel = "/" @property def uri(self): """Return the current Request URI .. seealso:: :py:class:`circuits.web.url.URL` """ if hasattr(self, "request"): return self.request.uri def forbidden(self, description=None): """Return a 403 (Forbidden) response :param description: Message to display :type description: str """ return forbidden(self.request, self.response, description=description) def notfound(self, description=None): """Return a 404 (Not Found) response :param description: Message to display :type description: str """ return notfound(self.request, self.response, description=description) def redirect(self, urls, code=None): """Return a 30x (Redirect) response Redirect to another location specified by urls with an optional custom response code. :param urls: A single URL or list of URLs :type urls: str or list :param code: HTTP Redirect code :type code: int """ return redirect(self.request, self.response, urls, code=code) def serve_file(self, path, type=None, disposition=None, name=None): return tools.serve_file( self.request, self.response, path, type, disposition, name ) def serve_download(self, path, name=None): return tools.serve_download( self.request, self.response, path, name ) def expires(self, secs=0, force=False): tools.expires(self.request, self.response, secs, force) Controller = ExposeMetaClass("Controller", (BaseController,), {}) def exposeJSON(*channels, **config): def decorate(f): @handler(*channels, **config) def wrapper(self, *args, **kwargs): try: if not hasattr(self, "request"): self.request, self.response = args[:2] args = args[2:] self.cookie = self.request.cookie if hasattr(self.request, "session"): self.session = self.request.session result = f(self, *args, **kwargs) if (isinstance(result, httperror) or isinstance(result, Response)): return result else: self.response.headers["Content-Type"] = ( "application/json" ) return json.dumps(result) finally: if hasattr(self, "request"): del self.request del self.response del self.cookie if hasattr(self, "session"): del self.session wrapper.args, wrapper.varargs, wrapper.varkw, wrapper.defaults = \ getargspec(f) if wrapper.args and wrapper.args[0] == "self": del wrapper.args[0] return update_wrapper(wrapper, f) return decorate class ExposeJSONMetaClass(type): def __init__(cls, name, bases, dct): super(ExposeJSONMetaClass, cls).__init__(name, bases, dct) for k, v in dct.items(): if isinstance(v, Callable) \ and not (k[0] == "_" or hasattr(v, "handler")): setattr(cls, k, exposeJSON(k)(v)) JSONController = ExposeJSONMetaClass("JSONController", (BaseController,), {}) circuits-3.1.0/circuits/web/http.py0000644000014400001440000004156412414350516020277 0ustar prologicusers00000000000000# Module: http # Date: 13th September 2007 # Author: James Mills, prologic at shortcircuit dot net dot au """Hyper Text Transfer Protocol This module implements the server side Hyper Text Transfer Protocol or commonly known as HTTP. """ from io import BytesIO try: from urllib.parse import quote from urllib.parse import urlparse, urlunparse except ImportError: from urllib import quote # NOQA from urlparse import urlparse, urlunparse # NOQA from circuits.six import text_type from circuits.net.events import close, write from circuits.core import handler, BaseComponent, Value from . import wrappers from .url import parse_url from .utils import is_ssl_handshake from .exceptions import HTTPException from .events import request, response, stream from .parsers import HttpParser, BAD_FIRST_LINE from .errors import httperror, notfound, redirect from .exceptions import Redirect as RedirectException from .constants import SERVER_VERSION, SERVER_PROTOCOL MAX_HEADER_FRAGENTS = 20 HTTP_ENCODING = 'utf-8' try: unicode except NameError: unicode = str class HTTP(BaseComponent): """HTTP Protocol Component Implements the HTTP server protocol and parses and processes incoming HTTP messages, creating and sending an appropriate response. The component handles :class:`~circuits.net.sockets.Read` events on its channel and collects the associated data until a complete HTTP request has been received. It parses the request's content and puts it in a :class:`~circuits.web.wrappers.Request` object and creates a corresponding :class:`~circuits.web.wrappers.Response` object. Then it emits a :class:`~circuits.web.events.Request` event with these objects as arguments. The component defines several handlers that send a response back to the client. """ channel = "web" def __init__(self, server, encoding=HTTP_ENCODING, channel=channel): super(HTTP, self).__init__(channel=channel) self._server = server self._encoding = encoding url = "{0:s}://{1:s}{2:s}".format( (server.secure and "https") or "http", server.host or "0.0.0.0", ":{0:d}".format(server.port or 80) if server.port not in (80, 443) else "" ) self.uri = parse_url(url) self._clients = {} self._buffers = {} @property def version(self): return SERVER_VERSION @property def protocol(self): return SERVER_PROTOCOL @property def scheme(self): if not hasattr(self, "_server"): return return "https" if self._server.secure else "http" @property def base(self): if not hasattr(self, "uri"): return return self.uri.utf8().rstrip(b"/").decode(self._encoding) @handler("stream") # noqa def _on_stream(self, res, data): sock = res.request.sock if data is not None: if isinstance(data, text_type): data = data.encode(self._encoding) if res.chunked: buf = [ hex(len(data))[2:].encode(self._encoding), b"\r\n", data, b"\r\n" ] data = b"".join(buf) self.fire(write(sock, data)) if res.body and not res.done: try: data = next(res.body) while not data: # Skip over any null byte sequences data = next(res.body) except StopIteration: data = None self.fire(stream(res, data)) else: if res.body: res.body.close() if res.chunked: self.fire(write(sock, b"0\r\n\r\n")) if res.close: self.fire(close(sock)) if sock in self._clients: del self._clients[sock] res.done = True @handler("response") # noqa def _on_response(self, res): """``Response`` Event Handler :param response: the ``Response`` object created when the HTTP request was initially received. :type response: :class:`~circuits.web.wrappers.Response` This handler builds an HTTP response data stream from the information contained in the *response* object and sends it to the client (firing ``write`` events). """ # send HTTP response status line and headers req = res.request headers = res.headers sock = req.sock if req.method == "HEAD": self.fire(write(sock, bytes(res))) self.fire(write(sock, bytes(headers))) elif res.stream and res.body: try: data = next(res.body) except StopIteration: data = None self.fire(write(sock, bytes(res))) self.fire(write(sock, bytes(headers))) self.fire(stream(res, data)) else: self.fire(write(sock, bytes(res))) self.fire(write(sock, bytes(headers))) if isinstance(res.body, bytes): body = res.body elif isinstance(res.body, text_type): body = res.body.encode(self._encoding) else: parts = ( s if isinstance(s, bytes) else s.encode(self._encoding) for s in res.body if s is not None ) body = b"".join(parts) if body: if res.chunked: buf = [ hex(len(body))[2:].encode(self._encoding), b"\r\n", body, b"\r\n" ] body = b"".join(buf) self.fire(write(sock, body)) if res.chunked: self.fire(write(sock, b"0\r\n\r\n")) if not res.stream: if res.close: self.fire(close(sock)) # Delete the request/response objects if present if sock in self._clients: del self._clients[sock] res.done = True @handler("disconnect") def _on_disconnect(self, sock): if sock in self._clients: del self._clients[sock] @handler("read") # noqa def _on_read(self, sock, data): """Read Event Handler Process any incoming data appending it to an internal buffer. Split the buffer by the standard HTTP delimiter CRLF and create Raw Event per line. Any unfinished lines of text, leave in the buffer. """ if sock in self._buffers: parser = self._buffers[sock] else: self._buffers[sock] = parser = HttpParser(0, True) # If we receive an SSL handshake at the start of a request # and we're not a secure server, then immediately close the # client connection since we can't respond to it anyway. if is_ssl_handshake(data) and not self._server.secure: if sock in self._buffers: del self._buffers[sock] if sock in self._clients: del self._clients[sock] return self.fire(close(sock)) _scheme = "https" if self._server.secure else "http" parser.execute(data, len(data)) if not parser.is_headers_complete(): if parser.errno is not None: if parser.errno == BAD_FIRST_LINE: req = wrappers.Request(sock, server=self._server) else: req = wrappers.Request( sock, parser.get_method(), parser.get_scheme() or _scheme, parser.get_path(), parser.get_version(), parser.get_query_string(), server=self._server ) req.server = self._server res = wrappers.Response(req, encoding=self._encoding) del self._buffers[sock] return self.fire(httperror(req, res, 400)) return if sock in self._clients: req, res = self._clients[sock] else: method = parser.get_method() scheme = parser.get_scheme() or _scheme path = parser.get_path() version = parser.get_version() query_string = parser.get_query_string() req = wrappers.Request( sock, method, scheme, path, version, query_string, headers=parser.get_headers(), server=self._server ) res = wrappers.Response(req, encoding=self._encoding) self._clients[sock] = (req, res) rp = req.protocol sp = self.protocol if rp[0] != sp[0]: # the major HTTP version differs return self.fire(httperror(req, res, 505)) res.protocol = "HTTP/{0:d}.{1:d}".format(*min(rp, sp)) res.close = not parser.should_keep_alive() clen = int(req.headers.get("Content-Length", "0")) if clen and not parser.is_message_complete(): return if hasattr(sock, "getpeercert"): peer_cert = sock.getpeercert() if peer_cert: e = request(req, res, peer_cert) else: e = request(req, res) else: e = request(req, res) # Guard against unwanted request paths (SECURITY). path = req.path _path = req.uri._path if (path.encode(self._encoding) != _path) and ( quote(path).encode(self._encoding) != _path): return self.fire( redirect(req, res, [req.uri.utf8()], 301) ) req.body = BytesIO(parser.recv_body()) del self._buffers[sock] self.fire(e) @handler("httperror") def _on_httperror(self, event, req, res, code, **kwargs): """Default HTTP Error Handler Default Error Handler that by default just fires a ``Response`` event with the *response* as argument. The *response* is normally modified by a :class:`~circuits.web.errors.HTTPError` instance or a subclass thereof. """ res.body = str(event) self.fire(response(res)) @handler("request_success") # noqa def _on_request_success(self, e, value): """ Handler for the ``RequestSuccess`` event that is automatically generated after all handlers for a :class:`~circuits.web.events.Request` event have been invoked successfully. :param e: the successfully handled ``Request`` event (having as attributes the associated :class:`~circuits.web.wrappers.Request` and :class:`~circuits.web.wrappers.Response` objects). :param value: the value(s) returned by the invoked handler(s). This handler converts the value(s) returned by the (successfully invoked) handlers for the initial ``Request`` event to a body and assigns it to the ``Response`` object's ``body`` attribute. It then fires a :class:`~circuits.web.events.Response` event with the ``Response`` object as argument. """ # We only want the non-recursive value at this point. # If the value is an instance of Value we will set # the .notify flag and be notified of changes to the value. value = e.value.getValue(recursive=False) if isinstance(value, Value) and not value.promise: value = value.getValue(recursive=False) req, res = e.args[:2] if value is None: self.fire(notfound(req, res)) elif isinstance(value, httperror): res.body = str(value) self.fire(response(res)) elif isinstance(value, wrappers.Response): self.fire(response(value)) elif isinstance(value, Value): if value.result and not value.errors: res.body = value.value self.fire(response(res)) elif value.errors: error = value.value etype, evalue, traceback = error if isinstance(evalue, RedirectException): self.fire( redirect(req, res, evalue.urls, evalue.code) ) elif isinstance(evalue, HTTPException): if evalue.traceback: self.fire( httperror( req, res, evalue.code, description=evalue.description, error=error ) ) else: self.fire( httperror( req, res, evalue.code, description=evalue.description ) ) else: self.fire(httperror(req, res, error=error)) else: # We want to be notified of changes to the value value = e.value.getValue(recursive=False) value.event = e value.notify = True elif isinstance(value, tuple): etype, evalue, traceback = error = value if isinstance(evalue, RedirectException): self.fire( redirect(req, res, evalue.urls, evalue.code) ) elif isinstance(evalue, HTTPException): if evalue.traceback: self.fire( httperror( req, res, evalue.code, description=evalue.description, error=error ) ) else: self.fire( httperror( req, res, evalue.code, description=evalue.description ) ) else: self.fire(httperror(req, res, error=error)) elif not isinstance(value, bool): res.body = value self.fire(response(res)) @handler("exception") def _on_exception(self, *args, **kwargs): if not len(args) == 3: return etype, evalue, etraceback = args fevent = kwargs["fevent"] if isinstance(fevent, response): res = fevent.args[0] req = res.request elif isinstance(fevent.value.parent.event, request): req, res = fevent.value.parent.event.args[:2] else: req, res = fevent.args[2:] if isinstance(evalue, HTTPException): code = evalue.code else: code = None self.fire( httperror( req, res, code=code, error=(etype, evalue, etraceback) ) ) @handler("request_failure") def _on_request_failure(self, erequest, error): req, res = erequest.args # Ignore filtered requests already handled (eg: HTTPException(s)). if req.handled: return req.handled = True etype, evalue, traceback = error if isinstance(evalue, RedirectException): self.fire( redirect(req, res, evalue.urls, evalue.code) ) elif isinstance(evalue, HTTPException): self.fire( httperror( req, res, evalue.code, description=evalue.description, error=error ) ) else: self.fire(httperror(req, res, error=error)) @handler("response_failure") def _on_response_failure(self, eresponse, error): res = eresponse.args[0] req = res.request # Ignore failed "response" handlers (eg: Loggers or Tools) if res.done: return res = wrappers.Response(req, self._encoding, 500) self.fire(httperror(req, res, error=error)) @handler("request_complete") def _on_request_complete(self, *args, **kwargs): """Dummy Event Handler for request events - request_complete """ @handler("response_success", "response_complete") def _on_response_feedback(self, *args, **kwargs): """Dummy Event Handler for response events - response_success - response_complete """ @handler("stream_success", "stream_failure", "stream_complete") def _on_stream_feedback(self, *args, **kwargs): """Dummy Event Handler for stream events - stream_success - stream_failure - stream_complete """ circuits-3.1.0/circuits/web/errors.py0000644000014400001440000001572312402037676020640 0ustar prologicusers00000000000000# Module: errors # Date: 11th February 2009 # Author: James Mills, prologic at shortcircuit dot net dot au """Errors This module implements a set of standard HTTP Errors. """ from cgi import escape try: from urllib.parse import urljoin as _urljoin except ImportError: from urlparse import urljoin as _urljoin # NOQA from circuits import Event from ..six import string_types from .constants import SERVER_URL, SERVER_VERSION from .constants import DEFAULT_ERROR_MESSAGE, HTTP_STATUS_CODES class httperror(Event): """An event for signaling an HTTP error""" code = 500 description = "" contenttype = "text/html" def __init__(self, request, response, code=None, **kwargs): """ The constructor creates a new instance and modifies the *response* argument to reflect the error. """ super(httperror, self).__init__(request, response, code, **kwargs) # Override HTTPError subclasses self.name = "httperror" self.request = request self.response = response if code is not None: self.code = code self.error = kwargs.get("error", None) self.description = kwargs.get( "description", getattr(self.__class__, "description", "") ) if self.error is not None: self.traceback = "ERROR: (%s) %s\n%s" % ( self.error[0], self.error[1], "".join(self.error[2]) ) else: self.traceback = "" self.response.close = True self.response.status = self.code self.response.headers["Content-Type"] = self.contenttype self.data = { "code": self.code, "name": HTTP_STATUS_CODES.get(self.code, "???"), "description": self.description, "traceback": escape(self.traceback), "url": SERVER_URL, "version": SERVER_VERSION } def sanitize(self): if self.code != 201 and not (299 < self.code < 400): if "Location" in self.response.headers: del self.response.headers["Location"] def __str__(self): self.sanitize() return DEFAULT_ERROR_MESSAGE % self.data def __repr__(self): return "<%s %d %s>" % ( self.__class__.__name__, self.code, HTTP_STATUS_CODES.get( self.code, "???" ) ) class forbidden(httperror): """An event for signaling the HTTP Forbidden error""" code = 403 class unauthorized(httperror): """An event for signaling the HTTP Unauthorized error""" code = 401 class notfound(httperror): """An event for signaling the HTTP Not Fouond error""" code = 404 class redirect(httperror): """An event for signaling the HTTP Redirect response""" def __init__(self, request, response, urls, code=None): """ The constructor creates a new instance and modifies the *response* argument to reflect a redirect response to the given *url*. """ if isinstance(urls, string_types): urls = [urls] abs_urls = [] for url in urls: # Note that urljoin will "do the right thing" whether url is: # 1. a complete URL with host (e.g. "http://www.example.com/test") # 2. a URL relative to root (e.g. "/dummy") # 3. a URL relative to the current path # Note that any query string in request is discarded. url = request.uri.relative(url).unicode() abs_urls.append(url) self.urls = urls = abs_urls # RFC 2616 indicates a 301 response code fits our goal; however, # browser support for 301 is quite messy. Do 302/303 instead. See # http://ppewww.ph.gla.ac.uk/~flavell/www/post-redirect.html if code is None: if request.protocol >= (1, 1): code = 303 else: code = 302 else: if code < 300 or code > 399: raise ValueError("status code must be between 300 and 399.") super(redirect, self).__init__(request, response, code) if code in (300, 301, 302, 303, 307): response.headers["Content-Type"] = "text/html" # "The ... URI SHOULD be given by the Location field # in the response." response.headers["Location"] = urls[0] # "Unless the request method was HEAD, the entity of the response # SHOULD contain a short hypertext note with a hyperlink to the # new URI(s)." msg = {300: "This resource can be found at %s.", 301: ("This resource has permanently moved to " "%s."), 302: ("This resource resides temporarily at " "%s."), 303: ("This resource can be found at " "%s."), 307: ("This resource has moved temporarily to " "%s."), }[code] response.body = "
    \n".join([msg % (u, u) for u in urls]) # Previous code may have set C-L, so we have to reset it # (allow finalize to set it). response.headers.pop("Content-Length", None) elif code == 304: # Not Modified. # "The response MUST include the following header fields: # Date, unless its omission is required by section 14.18.1" # The "Date" header should have been set in Response.__init__ # "...the response SHOULD NOT include other entity-headers." for key in ("Allow", "Content-Encoding", "Content-Language", "Content-Length", "Content-Location", "Content-MD5", "Content-Range", "Content-Type", "Expires", "Last-Modified"): if key in response.headers: del response.headers[key] # "The 304 response MUST NOT contain a message-body." response.body = None # Previous code may have set C-L, so we have to reset it. response.headers.pop("Content-Length", None) elif code == 305: # Use Proxy. # urls[0] should be the URI of the proxy. response.headers["Location"] = urls[0] response.body = None # Previous code may have set C-L, so we have to reset it. response.headers.pop("Content-Length", None) else: raise ValueError("The %s status code is unknown." % code) def __repr__(self): if len(self.channels) > 1: channels = repr(self.channels) elif len(self.channels) == 1: channels = str(self.channels[0]) else: channels = "" return "<%s %d[%s.%s] %s>" % ( self.__class__.__name__, self.code, channels, self.name, " ".join(self.urls) ) circuits-3.1.0/circuits/web/headers.py0000644000014400001440000001743112402037676020735 0ustar prologicusers00000000000000# Module: headers # Date: 1st February 2009 November 2008 # Author: James Mills, prologic at shortcircuit dot net dot au """Headers Support This module implements support for parsing and handling headers. """ import re from circuits.six import iteritems, u, b # Regular expression that matches `special' characters in parameters, the # existance of which force quoting of the parameter value. tspecials = re.compile(r'[ \(\)<>@,;:\\"/\[\]\?=]') q_separator = re.compile(r'; *q *=') def _formatparam(param, value=None, quote=1): """Convenience function to format and return a key=value pair. This will quote the value if needed or if quote is true. """ if value is not None and len(value) > 0: if quote or tspecials.search(value): value = value.replace('\\', '\\\\').replace('"', r'\"') return '%s="%s"' % (param, value) else: return '%s=%s' % (param, value) else: return param def header_elements(fieldname, fieldvalue): """Return a sorted HeaderElement list. Returns a sorted HeaderElement list from a comma-separated header string. """ if not fieldvalue: return [] result = [] for element in fieldvalue.split(","): if fieldname.startswith("Accept") or fieldname == 'TE': hv = AcceptElement.from_str(element) else: hv = HeaderElement.from_str(element) result.append(hv) return list(reversed(sorted(result))) class HeaderElement(object): """An element (with parameters) from an HTTP header's element list.""" def __init__(self, value, params=None): self.value = value if params is None: params = {} self.params = params def __eq__(self, other): return self.value == other.value def __lt__(self, other): return self.value < other.value def __str__(self): p = [";%s=%s" % (k, v) for k, v in iteritems(self.params)] return "%s%s" % (self.value, "".join(p)) def __bytes__(self): return b(self.__str__()) def __unicode__(self): return u(self.__str__()) def parse(elementstr): """Transform 'token;key=val' to ('token', {'key': 'val'}).""" # Split the element into a value and parameters. The 'value' may # be of the form, "token=token", but we don't split that here. atoms = [x.strip() for x in elementstr.split(";") if x.strip()] if not atoms: initial_value = '' else: initial_value = atoms.pop(0).strip() params = {} for atom in atoms: atom = [x.strip() for x in atom.split("=", 1) if x.strip()] key = atom.pop(0) if atom: val = atom[0] else: val = "" params[key] = val return initial_value, params parse = staticmethod(parse) @classmethod def from_str(cls, elementstr): """Construct an instance from a string of the form 'token;key=val'.""" ival, params = cls.parse(elementstr) return cls(ival, params) class AcceptElement(HeaderElement): """An element (with parameters) from an Accept* header's element list. AcceptElement objects are comparable; the more-preferred object will be "less than" the less-preferred object. They are also therefore sortable; if you sort a list of AcceptElement objects, they will be listed in priority order; the most preferred value will be first. Yes, it should have been the other way around, but it's too late to fix now. """ @classmethod def from_str(cls, elementstr): qvalue = None # The first "q" parameter (if any) separates the initial # media-range parameter(s) (if any) from the accept-params. atoms = q_separator.split(elementstr, 1) media_range = atoms.pop(0).strip() if atoms: # The qvalue for an Accept header can have extensions. The other # headers cannot, but it's easier to parse them as if they did. qvalue = HeaderElement.from_str(atoms[0].strip()) media_type, params = cls.parse(media_range) if qvalue is not None: params["q"] = qvalue return cls(media_type, params) def qvalue(self): val = self.params.get("q", "1") if isinstance(val, HeaderElement): val = val.value return float(val) qvalue = property(qvalue, doc="The qvalue, or priority, of this value.") def __eq__(self, other): return self.qvalue == other.qvalue def __lt__(self, other): if self.qvalue == other.qvalue: return str(self) < str(other) else: return self.qvalue < other.qvalue class CaseInsensitiveDict(dict): """A case-insensitive dict subclass. Each key is changed on entry to str(key).title(). """ def __init__(self, *args, **kwargs): d = dict(*args, **kwargs) for key, value in iteritems(d): dict.__setitem__(self, str(key).title(), value) dict.__init__(self) def __getitem__(self, key): return dict.__getitem__(self, str(key).title()) def __setitem__(self, key, value): dict.__setitem__(self, str(key).title(), value) def __delitem__(self, key): dict.__delitem__(self, str(key).title()) def __contains__(self, key): return dict.__contains__(self, str(key).title()) def get(self, key, default=None): return dict.get(self, str(key).title(), default) def update(self, E): for k in E.keys(): self[str(k).title()] = E[k] @classmethod def fromkeys(cls, seq, value=None): newdict = cls() for k in seq: newdict[k] = value return newdict def setdefault(self, key, x=None): key = str(key).title() try: return dict.__getitem__(self, key) except KeyError: self[key] = x return x def pop(self, key, default=None): return dict.pop(self, str(key).title(), default) class Headers(CaseInsensitiveDict): def elements(self, key): """Return a sorted list of HeaderElements for the given header.""" return header_elements(key, self.get(key)) def get_all(self, name): """Return a list of all the values for the named field.""" return [val.strip() for val in self.get(name, '').split(',')] def __repr__(self): return "Headers(%s)" % repr(list(self.items())) def __str__(self): headers = ["%s: %s\r\n" % (k, v) for k, v in self.items()] return "".join(headers) + '\r\n' def __bytes__(self): return str(self).encode("latin1") def append(self, key, value): if not key in self: self[key] = value else: self[key] = ", ".join([self[key], value]) def add_header(self, _name, _value, **_params): """Extended header setting. _name is the header field to add. keyword arguments can be used to set additional parameters for the header field, with underscores converted to dashes. Normally the parameter will be added as key="value" unless value is None, in which case only the key will be added. Example: h.add_header('content-disposition', 'attachment', filename='bud.gif') Note that unlike the corresponding 'email.Message' method, this does *not* handle '(charset, language, value)' tuples: all values must be strings or None. """ parts = [] if _value is not None: parts.append(_value) for k, v in list(_params.items()): k = k.replace('_', '-') if v is None: parts.append(k) else: parts.append(_formatparam(k, v)) self.append(_name, "; ".join(parts)) circuits-3.1.0/circuits/tools/0000755000014400001440000000000012425013643017316 5ustar prologicusers00000000000000circuits-3.1.0/circuits/tools/__init__.py0000644000014400001440000001022612402037676021437 0ustar prologicusers00000000000000# Module: __init__ # Date: 8th November 2008 # Author: James Mills, prologic at shortcircuit dot net dot au """Circuits Tools circuits.tools contains a standard set of tools for circuits. These tools are installed as executables with a prefix of "circuits." """ from functools import wraps from warnings import warn, warn_explicit from circuits.six import _func_code def tryimport(modules, obj=None, message=None): modules = (modules,) if isinstance(modules, str) else modules for module in modules: try: m = __import__(module, globals(), locals()) return getattr(m, obj) if obj is not None else m except: pass if message is not None: warn(message) def walk(x, f, d=0, v=None): if not v: v = set() yield f(d, x) for c in x.components.copy(): if c not in v: v.add(c) for r in walk(c, f, d + 1, v): yield r def edges(x, e=None, v=None, d=0): if not e: e = set() if not v: v = [] d += 1 for c in x.components.copy(): e.add((x, c, d)) edges(c, e, v, d) return e def findroot(x): if x.parent == x: return x else: return findroot(x.parent) def kill(x): for c in x.components.copy(): kill(c) if x.parent is not x: x.unregister() def graph(x, name=None): """Display a directed graph of the Component structure of x :param x: A Component or Manager to graph :type x: Component or Manager :param name: A name for the graph (defaults to x's name) :type name: str @return: A directed graph representing x's Component structure. @rtype: str """ networkx = tryimport("networkx") pygraphviz = tryimport("pygraphviz") plt = tryimport("matplotlib.pyplot", "pyplot") if networkx is not None and pygraphviz is not None and plt is not None: graph_edges = [] for (u, v, d) in edges(x): graph_edges.append((u.name, v.name, float(d))) g = networkx.DiGraph() g.add_weighted_edges_from(graph_edges) elarge = [(u, v) for (u, v, d) in g.edges(data=True) if d["weight"] > 3.0] esmall = [(u, v) for (u, v, d) in g.edges(data=True) if d["weight"] <= 3.0] pos = networkx.spring_layout(g) # positions for all nodes # nodes networkx.draw_networkx_nodes(g, pos, node_size=700) # edges networkx.draw_networkx_edges(g, pos, edgelist=elarge, width=1) networkx.draw_networkx_edges( g, pos, edgelist=esmall, width=1, alpha=0.5, edge_color="b", style="dashed" ) # labels networkx.draw_networkx_labels( g, pos, font_size=10, font_family="sans-serif" ) plt.axis("off") plt.savefig("{0:s}.png".format(name or x.name)) networkx.write_dot(g, "{0:s}.dot".format(name or x.name)) plt.clf() def printer(d, x): return "%s* %s" % (" " * d, x) return "\n".join(walk(x, printer)) def inspect(x): """Display an inspection report of the Component or Manager x :param x: A Component or Manager to graph :type x: Component or Manager @return: A detailed inspection report of x @rtype: str """ s = [] write = s.append write(" Components: %d\n" % len(x.components)) for component in x.components: write(" %s\n" % component) write("\n") from circuits import reprhandler write(" Event Handlers: %d\n" % len(x._handlers.values())) for event, handlers in x._handlers.items(): write(" %s; %d\n" % (event, len(x._handlers[event]))) for handler in x._handlers[event]: write(" %s\n" % reprhandler(handler)) return "".join(s) def deprecated(f): @wraps(f) def wrapper(*args, **kwargs): warn_explicit( "Call to deprecated function {0:s}".format(f.__name__), category=DeprecationWarning, filename=getattr(f, _func_code).co_filename, lineno=getattr(f, _func_code).co_firstlineno + 1 ) return f(*args, **kwargs) return wrapper circuits-3.1.0/circuits/core/0000755000014400001440000000000012425013643017106 5ustar prologicusers00000000000000circuits-3.1.0/circuits/core/debugger.py0000644000014400001440000000715312402037676021261 0ustar prologicusers00000000000000# Module: debugger # Date: 2nd April 2006 # Author: James Mills, prologic at shortcircuit dot net dot au """ Debugger component used to debug each event in a system by printing each event to sys.stderr or to a Logger Component instance. """ import os import sys from traceback import format_exc from signal import SIGINT, SIGTERM from .components import BaseComponent from .handlers import handler, reprhandler class Debugger(BaseComponent): """Create a new Debugger Component Creates a new Debugger Component that listens to all events in the system printing each event to sys.stderr or a Logger Component. :var IgnoreEvents: list of events (str) to ignore :var IgnoreChannels: list of channels (str) to ignore :var enabled: Enabled/Disabled flag :param log: Logger Component instance or None (*default*) """ IgnoreEvents = ["generate_events"] IgnoreChannels = [] def __init__(self, errors=True, events=True, file=None, logger=None, prefix=None, trim=None, **kwargs): "initializes x; see x.__class__.__doc__ for signature" super(Debugger, self).__init__() self._errors = errors self._events = events if isinstance(file, str): self.file = open(os.path.abspath(os.path.expanduser(file)), "a") elif hasattr(file, "write"): self.file = file else: self.file = sys.stderr self.logger = logger self.prefix = prefix self.trim = trim self.IgnoreEvents.extend(kwargs.get("IgnoreEvents", [])) self.IgnoreChannels.extend(kwargs.get("IgnoreChannels", [])) @handler("signal", channel="*") def _on_signal(self, signo, stack): if signo in [SIGINT, SIGTERM]: raise SystemExit(0) @handler("exception", channel="*", priority=100.0) def _on_exception(self, error_type, value, traceback, handler=None, fevent=None): if not self._errors: return s = [] if handler is None: handler = "" else: handler = reprhandler(handler) msg = "ERROR {0:s} ({1:s}) ({2:s}): {3:s}\n".format( handler, repr(fevent), repr(error_type), repr(value) ) s.append(msg) s.extend(traceback) s.append("\n") if self.logger is not None: self.logger.error("".join(s)) else: try: self.file.write("".join(s)) self.file.flush() except IOError: pass @handler(priority=101.0) def _on_event(self, event, *args, **kwargs): """Global Event Handler Event handler to listen to all events printing each event to self.file or a Logger Component instance by calling self.logger.debug """ try: if not self._events: return channels = event.channels if event.name in self.IgnoreEvents: return if all(channel in self.IgnoreChannels for channel in channels): return s = repr(event) if self.prefix: s = "%s: %s" % (self.prefix, s) if self.trim: s = "%s ...>" % s[:self.trim] if self.logger is not None: self.logger.debug(s) else: self.file.write(s) self.file.write("\n") self.file.flush() except Exception as e: sys.stderr.write("ERROR (Debugger): {}".format(e)) sys.stderr.write("{}".format(format_exc())) circuits-3.1.0/circuits/core/__init__.py0000644000014400001440000000127412402037676021232 0ustar prologicusers00000000000000# Package: core # Date: 2nd April 2006 # Author: James Mills, prologic at shortcircuit dot net dot au """Core This package contains the essential core parts of the circuits framework. """ from .events import Event from .bridge import Bridge from .loader import Loader from .manager import Manager, TimeoutError from .handlers import handler, reprhandler from .components import BaseComponent, Component from .values import Value from .timers import Timer from .workers import task, Worker from .debugger import Debugger __all__ = ( "handler", "BaseComponent", "Component", "Event", "task", "Worker", "Bridge", "Debugger", "Timer", "Manager", "TimeoutError", ) # flake8: noqa circuits-3.1.0/circuits/core/timers.py0000644000014400001440000000510512402037676020773 0ustar prologicusers00000000000000# Module: timers # Date: 04th August 2004 # Author: James Mills """Timer component to facilitate timed events.""" from circuits.core.handlers import handler from time import time, mktime from datetime import datetime from .components import BaseComponent class Timer(BaseComponent): """Timer Component A timer is a component that fires an event once after a certain delay or periodically at a regular interval. """ def __init__(self, interval, event, *channels, **kwargs): """ :param interval: the delay or interval to wait for until the event is fired. If interval is specified as datetime, the interval is recalculated as the time span from now to the given datetime. :type interval: ``datetime`` or number of seconds as a ``float`` :param event: the event to fire. :type event: :class:`~.events.Event` :param persist: An optional keyword argument which if ``True`` will cause the event to be fired repeatedly once per configured interval until the timer is unregistered. **Default:** ``False`` :type persist: ``bool`` """ super(Timer, self).__init__() self.expiry = None self.interval = None self.event = event self.channels = channels self.persist = kwargs.get("persist", False) self.reset(interval) @handler("generate_events") def _on_generate_events(self, event): if self.expiry is None: return now = time() if now >= self.expiry: if self.unregister_pending: return self.fire(self.event, *self.channels) if self.persist: self.reset() else: self.unregister() event.reduce_time_left(0) else: event.reduce_time_left(self.expiry - now) def reset(self, interval=None): """ Reset the timer, i.e. clear the amount of time already waited for. """ if interval is not None and isinstance(interval, datetime): self.interval = mktime(interval.timetuple()) - time() elif interval is not None: self.interval = interval self.expiry = time() + self.interval @property def expiry(self): return getattr(self, "_expiry", None) @expiry.setter def expiry(self, seconds): self._expiry = seconds circuits-3.1.0/circuits/core/loader.py0000644000014400001440000000350712402037676020742 0ustar prologicusers00000000000000# Package: loader # Date: 16th March 2011 # Author: James Mills, jamesmills at comops dot com dot au """ This module implements a generic Loader suitable for dynamically loading components from other modules. This supports loading from local paths, eggs and zip archives. Both setuptools and distribute are fully supported. """ import sys from inspect import getmembers, getmodule, isclass from .handlers import handler from .utils import safeimport from .components import BaseComponent class Loader(BaseComponent): """Create a new Loader Component Creates a new Loader Component that enables dynamic loading of components from modules either in local paths, eggs or zip archives. """ channel = "loader" def __init__(self, auto_register=True, init_args=None, init_kwargs=None, paths=None, channel=channel): "initializes x; see x.__class__.__doc__ for signature" super(Loader, self).__init__(channel=channel) self._auto_register = auto_register self._init_args = init_args or tuple() self._init_kwargs = init_kwargs or dict() if paths: for path in paths: sys.path.insert(0, path) @handler("load") def load(self, name): module = safeimport(name) if module is not None: test = lambda x: isclass(x) \ and issubclass(x, BaseComponent) \ and getmodule(x) is module components = [x[1] for x in getmembers(module, test)] if components: TheComponent = components[0] component = TheComponent( *self._init_args, **self._init_kwargs ) if self._auto_register: component.register(self) return component circuits-3.1.0/circuits/core/workers.py0000644000014400001440000000515112402037676021165 0ustar prologicusers00000000000000# Module: workers # Date: 6th February 2011 # Author: James Mills, prologic at shortcircuit dot net dot au """Workers Worker components used to perform "work" in independent threads or processes. Worker(s) are typically used by a Pool (circuits.core.pools) to create a pool of workers. Worker(s) are not registered with a Manager or another Component - instead they are managed by the Pool. If a Worker is used independently it should not be registered as it causes its main event handler ``_on_task`` to execute in the other thread blocking it. """ from threading import current_thread from weakref import WeakKeyDictionary from multiprocessing import cpu_count from multiprocessing.pool import ThreadPool from multiprocessing import Pool as ProcessPool from .events import Event from .handlers import handler from .components import BaseComponent DEFAULT_WORKERS = 10 class task(Event): """task Event This Event is used to initiate a new task to be performed by a Worker or a Pool of Worker(s). :param f: The function to be executed. :type f: function :param args: Arguments to pass to the function :type args: tuple :param kwargs: Keyword Arguments to pass to the function :type kwargs: dict """ success = True failure = True def __init__(self, f, *args, **kwargs): "x.__init__(...) initializes x; see x.__class__.__doc__ for signature" super(task, self).__init__(f, *args, **kwargs) class Worker(BaseComponent): """A thread/process Worker Component This Component creates a Worker (either a thread or process) which when given a ``Task``, will execute the given function in the task in the background in its thread/process. :param process: True to start this Worker as a process (Thread otherwise) :type process: bool """ channel = "worker" def init(self, process=False, workers=None, channel=channel): if not hasattr(current_thread(), "_children"): current_thread()._children = WeakKeyDictionary() self.workers = workers or (cpu_count() if process else DEFAULT_WORKERS) Pool = ProcessPool if process else ThreadPool self.pool = Pool(self.workers) @handler("stopped", "unregistered", channel="*") def _on_stopped(self, event, *args): if event.name == "unregistered" and args[0] is not self: return self.pool.close() self.pool.join() @handler("task") def _on_task(self, f, *args, **kwargs): result = self.pool.apply_async(f, args, kwargs) while not result.ready(): yield yield result.get() circuits-3.1.0/circuits/core/manager.py0000644000014400001440000007620512414162374021110 0ustar prologicusers00000000000000# Package: manager # Date: 11th April 2010 # Author: James Mills, prologic at shortcircuit dot net dot au """ This module defines the Manager class. """ import atexit from os import getpid, kill from inspect import isfunction from uuid import uuid4 as uuid from operator import attrgetter from types import GeneratorType from itertools import chain, count from signal import SIGINT, SIGTERM from heapq import heappush, heappop from weakref import WeakValueDictionary from traceback import format_exc, format_tb from sys import exc_info as _exc_info, stderr from signal import signal as set_signal_handler from threading import current_thread, Thread, RLock from multiprocessing import current_process, Process try: from signal import SIGKILL except ImportError: SIGKILL = SIGTERM from .values import Value from ..tools import tryimport from .handlers import handler from ..six import create_bound_method, next from .events import exception, generate_events, signal, started, stopped, Event thread = tryimport(("thread", "_thread")) TIMEOUT = 0.1 # 100ms timeout when idle class UnregistrableError(Exception): """Raised if a component cannot be registered as child.""" class TimeoutError(Exception): """Raised if wait event timeout occurred""" class CallValue(object): def __init__(self, value): self.value = value class ExceptionWrapper(object): def __init__(self, exception): self.exception = exception def extract(self): return self.exception class Dummy(object): channel = None _dummy = Dummy() del Dummy class Manager(object): """ The manager class has two roles. As a base class for component implementation, it provides methods for event and handler management. The method :meth:`.fireEvent` appends a new event at the end of the event queue for later execution. :meth:`.waitEvent` suspends the execution of a handler until all handlers for a given event have been invoked. :meth:`.callEvent` combines the last two methods in a single method. The methods :meth:`.addHandler` and :meth:`.removeHandler` allow handlers for events to be added and removed dynamically. (The more common way to register a handler is to use the :func:`~.handlers.handler` decorator or derive the class from :class:`~.components.Component`.) In its second role, the :class:`.Manager` takes the role of the event executor. Every component hierarchy has a root component that maintains a queue of events. Firing an event effectively means appending it to the event queue maintained by the root manager. The :meth:`.flush` method removes all pending events from the queue and, for each event, invokes all the handlers. Usually, :meth:`.flush` is indirectly invoked by :meth:`run`. The manager optionally provides information about the execution of events as automatically generated events. If an :class:`~.events.Event` has its :attr:`success` attribute set to True, the manager fires a :class:`~.events.Success` event if all handlers have been executed without error. Note that this event will be enqueued (and dispatched) immediately after the events that have been fired by the event's handlers. So the success event indicates both the successful invocation of all handlers for the event and the processing of the immediate follow-up events fired by those handlers. Sometimes it is not sufficient to know that an event and its immediate follow-up events have been processed. Rather, it is important to know when all state changes triggered by an event, directly or indirectly, have been performed. This also includes the processing of events that have been fired when invoking the handlers for the follow-up events and the processing of events that have again been fired by those handlers and so on. The completion of the processing of an event and all its direct or indirect follow-up events may be indicated by a :class:`~.events.Complete` event. This event is generated by the manager if :class:`~.events.Event` has its :attr:`complete` attribute set to True. Apart from the event queue, the root manager also maintains a list of tasks, actually Python generators, that are updated when the event queue has been flushed. """ _currently_handling = None """ The event currently being handled. """ def __init__(self, *args, **kwargs): "initializes x; see x.__class__.__doc__ for signature" self._queue = [] self._counter = count() self._tasks = set() self._cache = dict() self._globals = set() self._handlers = dict() self._flush_batch = 0 self._cache_needs_refresh = False self._values = WeakValueDictionary() self._executing_thread = None self._flushing_thread = None self._running = False self.__thread = None self.__process = None self._lock = RLock() self.root = self.parent = self self.components = set() def __repr__(self): "x.__repr__() <==> repr(x)" name = self.__class__.__name__ channel = "/{0:s}".format(str(getattr(self, "channel", ""))) q = len(self._queue) state = "R" if self.running else "S" pid = current_process().pid if pid: id = "%s:%s" % (pid, current_thread().getName()) else: id = current_thread().getName() format = "<%s%s %s (queued=%d) [%s]>" return format % (name, channel, id, q, state) def __contains__(self, y): """x.__contains__(y) <==> y in x Return True if the Component y is registered. """ components = self.components.copy() return y in components or y in [c.__class__ for c in components] def __len__(self): """x.__len__() <==> len(x) Returns the number of events in the Event Queue. """ return len(self._queue) def __add__(self, y): """x.__add__(y) <==> x+y (Optional) Convenience operator to register y with x Equivalent to: y.register(x) @return: x @rtype Component or Manager """ y.register(self) return self def __iadd__(self, y): """x.__iadd__(y) <==> x += y (Optional) Convenience operator to register y with x Equivalent to: y.register(x) @return: x @rtype Component or Manager """ y.register(self) return self def __sub__(self, y): """x.__sub__(y) <==> x-y (Optional) Convenience operator to unregister y from x.manager Equivalent to: y.unregister() @return: x @rtype Component or Manager """ if y.manager is not y: y.unregister() return self def __isub__(self, y): """x.__sub__(y) <==> x -= y (Optional) Convenience operator to unregister y from x Equivalent to: y.unregister() @return: x @rtype Component or Manager """ if y.manager is not y: y.unregister() return self @property def name(self): """Return the name of this Component/Manager""" return self.__class__.__name__ @property def running(self): """Return the running state of this Component/Manager""" return self._running @property def pid(self): """Return the process id of this Component/Manager""" return getpid() if self.__process is None else self.__process.pid def getHandlers(self, event, channel, **kwargs): name = event.name handlers = set() _handlers = set() _handlers.update(self._handlers.get("*", [])) _handlers.update(self._handlers.get(name, [])) for _handler in _handlers: handler_channel = _handler.channel if handler_channel is None: # XXX: Why do we care about the event handler's channel? # This probably costs us performance for what? # I've not ever had to rely on this in practice... handler_channel = getattr( getattr( _handler, "im_self", getattr( _handler, "__self__", _dummy ) ), "channel", None ) if channel == "*" or handler_channel in ("*", channel,) \ or channel is self: handlers.add(_handler) if not kwargs.get("exclude_globals", False): handlers.update(self._globals) for c in self.components.copy(): handlers.update(c.getHandlers(event, channel, **kwargs)) return handlers def addHandler(self, f): method = create_bound_method(f, self) if isfunction(f) else f setattr(self, method.__name__, method) if not method.names and method.channel == "*": self._globals.add(method) elif not method.names: self._handlers.setdefault("*", set()).add(method) else: for name in method.names: self._handlers.setdefault(name, set()).add(method) self.root._cache_needs_refresh = True return method def removeHandler(self, method, event=None): if event is None: names = method.names else: names = [event] for name in names: self._handlers[name].remove(method) if not self._handlers[name]: del self._handlers[name] try: delattr(self, method.__name__) except AttributeError: # Handler was never part of self pass self.root._cache_needs_refresh = True def registerChild(self, component): if component._executing_thread is not None: if self.root._executing_thread is not None: raise UnregistrableError() self.root._executing_thread = component._executing_thread component._executing_thread = None self.components.add(component) self.root._queue.extend(list(component._queue)) component._queue = [] self.root._cache_needs_refresh = True def unregisterChild(self, component): self.components.remove(component) self.root._cache_needs_refresh = True def _fire(self, event, channel, priority=0): # check if event is fired while handling an event if thread.get_ident() == (self._executing_thread or \ self._flushing_thread) and not isinstance(event, signal): if self._currently_handling is not None and \ getattr(self._currently_handling, "cause", None): # if the currently handled event wants to track the # events generated by it, do the tracking now event.cause = self._currently_handling event.effects = 1 self._currently_handling.effects += 1 heappush( self._queue, ( priority, next(self._counter), (event, channel) ) ) # the event comes from another thread else: # Another thread has provided us with something to do. # If the component is running, we must make sure that # any pending generate event waits no longer, as there # is something to do now. with self._lock: # Modifications of attribute self._currently_handling # (in _dispatch()), calling reduce_time_left(0). and adding an # event to the (empty) event queue must be atomic, so we have # to lock. We can save the locking around # self._currently_handling = None though, but then need to copy # it to a local variable here before performing a sequence of # operations that assume its value to remain unchanged. handling = self._currently_handling if isinstance(handling, generate_events): heappush( self._queue, ( priority, next(self._counter), (event, channel) ) ) handling.reduce_time_left(0) else: heappush( self._queue, ( priority, next(self._counter), (event, channel) ) ) def fireEvent(self, event, *channels, **kwargs): """Fire an event into the system. :param event: The event that is to be fired. :param channels: The channels that this event is delivered on. If no channels are specified, the event is delivered to the channels found in the event's :attr:`channel` attribute. If this attribute is not set, the event is delivered to the firing component's channel. And eventually, when set neither, the event is delivered on all channels ("*"). """ if not channels: channels = event.channels \ or (getattr(self, "channel", "*"),) \ or ("*",) event.channels = channels event.value = Value(event, self) self.root._fire(event, channels, **kwargs) return event.value fire = fireEvent def registerTask(self, g): self.root._tasks.add(g) def unregisterTask(self, g): if g in self.root._tasks: self.root._tasks.remove(g) def waitEvent(self, event, *channels, **kwargs): if isinstance(event, Event): event_object = event event_name = event.name else: event_object = None event_name = event state = { 'run': False, 'flag': False, 'event': None, 'timeout': kwargs.get("timeout", -1) } def _on_event(self, event, *args, **kwargs): if not state['run'] and ( event_object is None or event is event_object ): self.removeHandler(_on_event_handler, event_name) event.alert_done = True state['run'] = True state['event'] = event def _on_done(self, event, *args, **kwargs): if state['event'] == event.parent: state['flag'] = True self.registerTask((state['task_event'], state['task'], state['parent'])) if state['timeout'] > 0: self.removeHandler( state['tick_handler'], "generate_events" ) def _on_tick(self): if state['timeout'] == 0: self.registerTask( ( state['task_event'], (e for e in (ExceptionWrapper(TimeoutError()),)), state['parent'] ) ) self.removeHandler(_on_done_handler, "%s_done" % event_name) self.removeHandler(_on_tick_handler, "generate_events") elif state['timeout'] > 0: state['timeout'] -= 1 if not channels: channels = (None,) for channel in channels: _on_event_handler = self.addHandler( handler(event_name, channel=channel)(_on_event)) _on_done_handler = self.addHandler( handler("%s_done" % event_name, channel=channel)(_on_done)) if state['timeout'] >= 0: _on_tick_handler = state['tick_handler'] = self.addHandler( handler("generate_events", channel=channel)(_on_tick)) yield state if not state['timeout']: self.removeHandler(_on_done_handler, "%s_done" % event_name) if state["event"] is not None: yield CallValue(state["event"].value) wait = waitEvent def callEvent(self, event, *channels, **kwargs): """ Fire the given event to the specified channels and suspend execution until it has been dispatched. This method may only be invoked as argument to a ``yield`` on the top execution level of a handler (e.g. "``yield self.callEvent(event)``"). It effectively creates and returns a generator that will be invoked by the main loop until the event has been dispatched (see :func:`circuits.core.handlers.handler`). """ value = self.fire(event, *channels) for r in self.waitEvent(event, *event.channels, **kwargs): yield r yield CallValue(value) call = callEvent def _flush(self): # Handle events currently on queue, but none of the newly generated # events. Note that _flush can be called recursively. old_flushing = self._flushing_thread try: self._flushing_thread = thread.get_ident() if self._flush_batch == 0: self._flush_batch = len(self._queue) while self._flush_batch > 0: self._flush_batch -= 1 # Decrement first! priority, count, (event, channels) = heappop(self._queue) self._dispatcher(event, channels, self._flush_batch) finally: self._flushing_thread = old_flushing def flushEvents(self): """ Flush all Events in the Event Queue. If called on a manager that is not the root of an object hierarchy, the invocation is delegated to the root manager. """ self.root._flush() flush = flushEvents def _dispatcher(self, event, channels, remaining): if event.cancelled: return if event.complete: if not getattr(event, "cause", None): event.cause = event event.effects = 1 # event itself counts (must be done) eargs = event.args ekwargs = event.kwargs if self._cache_needs_refresh: # Don't call self._cache.clear() from other threads, # this may interfere with cache rebuild. self._cache.clear() self._cache_needs_refresh = False try: # try/except is fastest if successful in most cases handlers = self._cache[(event.name, channels)] except KeyError: h = (self.getHandlers(event, channel) for channel in channels) handlers = sorted( chain(*h), key=attrgetter("priority"), reverse=True ) if isinstance(event, generate_events): from .helpers import FallBackGenerator handlers.append(FallBackGenerator()._on_generate_events) elif isinstance(event, exception) and len(handlers) == 0: from .helpers import FallBackExceptionHandler handlers.append(FallBackExceptionHandler()._on_exception) elif isinstance(event, signal) and len(handlers) == 0: from .helpers import FallBackSignalHandler handlers.append(FallBackSignalHandler()._on_signal) self._cache[(event.name, channels)] = handlers if isinstance(event, generate_events): with self._lock: self._currently_handling = event if remaining > 0 or len(self._queue) or not self._running: event.reduce_time_left(0) elif self._tasks: event.reduce_time_left(TIMEOUT) # From now on, firing an event will reduce time left # to 0, which prevents handlers from waiting (or wakes # them up with resume if they should be waiting already) else: self._currently_handling = event value = None err = None for handler in handlers: event.handler = handler try: if handler.event: value = handler(event, *eargs, **ekwargs) else: value = handler(*eargs, **ekwargs) except (KeyboardInterrupt, SystemExit): self.stop() except: etype, evalue, etraceback = _exc_info() traceback = format_tb(etraceback) err = (etype, evalue, traceback) event.value.errors = True value = err if event.failure: self.fire( event.child("failure", event, err), *event.channels ) self.fire( exception( etype, evalue, traceback, handler=handler, fevent=event ) ) if value is not None: if isinstance(value, GeneratorType): event.waitingHandlers += 1 event.value.promise = True self.registerTask((event, value, None)) else: event.value.value = value # it is kind of a temporal hack to allow processing # of tasks, added in one of handlers here if isinstance(event, generate_events) and self._tasks: event.reduce_time_left(TIMEOUT) if event.stopped: break # Stop further event processing self._currently_handling = None self._eventDone(event, err) def _eventDone(self, event, err=None): if event.waitingHandlers: return # The "%s_Done" event is for internal use by waitEvent only. # Use the "%s_Success" event in you application if you are # interested in being notified about the last handler for # an event having been invoked. if event.alert_done: self.fire(event.child("done", event.value.value), *event.channels) if err is None and event.success: channels = getattr(event, "success_channels", event.channels) self.fire( event.child("success", event, event.value.value), *channels ) while True: # cause attributes indicates interest in completion event cause = getattr(event, "cause", None) if not cause: break # event takes part in complete detection (as nested or root event) event.effects -= 1 if event.effects > 0: break # some nested events remain to be completed if event.complete: # does this event want signaling? self.fire( event.child("complete", event, event.value.value), *getattr(event, "complete_channels", event.channels) ) # this event and nested events are done now delattr(event, "cause") delattr(event, "effects") # cause has one of its nested events done, decrement and check event = cause def _signal_handler(self, signo, stack): self.fire(signal(signo, stack)) def start(self, process=False, link=None): """ Start a new thread or process that invokes this manager's ``run()`` method. The invocation of this method returns immediately after the task or process has been started. """ if process: # Parent<->Child Bridge if link is not None: from circuits.net.sockets import Pipe from circuits.core.bridge import Bridge channels = (uuid(),) * 2 parent, child = Pipe(*channels) bridge = Bridge(parent, channel=channels[0]).register(link) args = (child,) else: args = () bridge = None self.__process = Process( target=self.run, args=args, name=self.name ) self.__process.daemon = True self.__process.start() return self.__process, bridge else: self.__thread = Thread(target=self.run, name=self.name) self.__thread.daemon = True self.__thread.start() return self.__thread, None def join(self): if getattr(self, "_thread", None) is not None: return self.__thread.join() if getattr(self, "_process", None) is not None: return self.__process.join() def stop(self): """ Stop this manager. Invoking this method causes an invocation of ``run()`` to return. """ if self.__process is not None and self.__process.is_alive(): self.__process.terminate() self.__process.join(TIMEOUT) if self.__process.is_alive(): kill(self.__process.pid, SIGKILL) if not self.running: return self._running = False self.fire(stopped(self)) if self.root._executing_thread is None: for _ in range(3): self.tick() def processTask(self, event, task, parent=None): value = None try: value = next(task) if isinstance(value, CallValue): # Done here, next() will StopIteration anyway self.unregisterTask((event, task, parent)) # We are in a callEvent value = parent.send(value.value) if isinstance(value, GeneratorType): # We loose a yield but we gain one, # we don't need to change # event.waitingHandlers # The below code is delegated to handlers # in the waitEvent generator # self.registerTask((event, value, parent)) task_state = next(value) task_state['task_event'] = event task_state['task'] = value task_state['parent'] = parent else: event.waitingHandlers -= 1 if value is not None: event.value.value = value self.registerTask((event, parent, None)) elif isinstance(value, GeneratorType): event.waitingHandlers += 1 self.unregisterTask((event, task, None)) # First yielded value is always the task state task_state = next(value) task_state['task_event'] = event task_state['task'] = value task_state['parent'] = task # The below code is delegated to handlers # in the waitEvent generator # self.registerTask((event, value, task)) # XXX: ^^^ Why is this commented out anyway? elif isinstance(value, ExceptionWrapper): self.unregisterTask((event, task, parent)) if parent: value = parent.throw(value.extract()) if value is not None: value_generator = (val for val in (value,)) self.registerTask((event, value_generator, parent)) else: raise value.extract() elif value is not None: event.value.value = value except StopIteration: event.waitingHandlers -= 1 self.unregisterTask((event, task, parent)) if parent: self.registerTask((event, parent, None)) elif event.waitingHandlers == 0: event.value.inform(True) self._eventDone(event) except (KeyboardInterrupt, SystemExit): self.stop() except: self.unregisterTask((event, task, parent)) etype, evalue, etraceback = _exc_info() traceback = format_tb(etraceback) err = (etype, evalue, etraceback) event.value.value = err event.value.errors = True event.value.inform(True) if event.failure: self.fire(event.child("failure", event, err), *event.channels) self.fire( exception( etype, evalue, traceback, handler=None, fevent=event ) ) def tick(self, timeout=-1): """ Execute all possible actions once. Process all registered tasks and flush the event queue. If the application is running fire a GenerateEvents to get new events from sources. This method is usually invoked from :meth:`~.run`. It may also be used to build an application specific main loop. :param timeout: the maximum waiting time spent in this method. If negative, the method may block until at least one action has been taken. :type timeout: float, measuring seconds """ # process tasks if self._tasks: for task in self._tasks.copy(): self.processTask(*task) if self._running: self.fire(generate_events(self._lock, timeout), "*") self._queue and self.flush() def run(self, socket=None): """ Run this manager. The method fires the :class:`~.events.Started` event and then continuously calls :meth:`~.tick`. The method returns when the manager's :meth:`~.stop` method is invoked. If invoked by a programs main thread, a signal handler for the ``INT`` and ``TERM`` signals is installed. This handler fires the corresponding :class:`~.events.Signal` events and then calls :meth:`~.stop` for the manager. """ atexit.register(self.stop) if current_thread().getName() == "MainThread": try: set_signal_handler(SIGINT, self._signal_handler) set_signal_handler(SIGTERM, self._signal_handler) except ValueError: # Ignore if we can't install signal handlers pass self._running = True self.root._executing_thread = current_thread() # Setup Communications Bridge if socket is not None: from circuits.core.bridge import Bridge Bridge(socket, channel=socket.channel).register(self) self.fire(started(self)) try: while self.running or len(self._queue): self.tick() # Fading out, handle remaining work from stop event for _ in range(3): self.tick() except Exception as e: stderr.write("Unhandled ERROR: {0:s}\n".format(str(e))) stderr.write(format_exc()) finally: try: self.tick() except: pass self.root._executing_thread = None self.__thread = None self.__process = None circuits-3.1.0/circuits/core/events.py0000644000014400001440000002622312410511275020767 0ustar prologicusers00000000000000# Package: events # Date: 11th April 2010 # Author: James Mills, prologic at shortcircuit dot net dot au """ This module defines the basic event class and common events. """ from inspect import ismethod class EventType(type): __cache__ = {} def __new__(cls, name, bases, ns): key = (cls, name, bases) try: return cls.__cache__[key] except KeyError: cls = type.__new__(cls, name, bases, ns) setattr(cls, "name", ns.get("name", cls.__name__)) return cls class Event(object): __metaclass__ = EventType channels = () "The channels this message is sent to." parent = None notify = False success = False failure = False complete = False alert_done = False waitingHandlers = 0 @classmethod def create(cls, name, *args, **kwargs): return type(cls)(name, (cls,), {})(*args, **kwargs) def child(self, name, *args, **kwargs): e = Event.create( "{0:s}_{1:s}".format(self.name, name), *args, **kwargs ) e.parent = self return e def __init__(self, *args, **kwargs): """An event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type. All normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event. Every event has a :attr:`name` attribute that is used for matching the event with the handlers. :cvar channels: an optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel. When an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler. :ivar value: this is a :class:`circuits.core.values.Value` object that holds the results returned by the handlers invoked for the event. :var success: if this optional attribute is set to ``True``, an associated event ``success`` (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully. :var success_channels: the success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute. :var complete: if this optional attribute is set to ``True``, an associated event ``complete`` (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully. :var complete_channels: the complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute. """ self.args = list(args) self.kwargs = kwargs self.uid = None self.value = None self.handler = None self.stopped = False self.cancelled = False if not hasattr(self, 'name'): self.name = self.__class__.__name__ def __getstate__(self): odict = self.__dict__.copy() del odict["handler"] return odict def __setstate__(self, dict): self.__dict__.update(dict) def __le__(self, other): return False def __gt__(self, other): return False def __repr__(self): "x.__repr__() <==> repr(x)" if len(self.channels) > 1: channels = repr(self.channels) elif len(self.channels) == 1: channels = str(self.channels[0]) else: channels = "" data = "%s %s" % ( ", ".join(repr(arg) for arg in self.args), ", ".join("%s=%s" % (k, repr(v)) for k, v in self.kwargs.items()) ) return "<%s[%s] (%s)>" % (self.name, channels, data) def __getitem__(self, x): """x.__getitem__(y) <==> x[y] Get and return data from the event object requested by "x". If an int is passed to x, the requested argument from self.args is returned index by x. If a str is passed to x, the requested keyword argument from self.kwargs is returned keyed by x. Otherwise a TypeError is raised as nothing else is valid. """ if isinstance(x, int): return self.args[x] elif isinstance(x, str): return self.kwargs[x] else: raise TypeError("Expected int or str, got %r" % type(x)) def __setitem__(self, i, y): """x.__setitem__(i, y) <==> x[i] = y Modify the data in the event object requested by "x". If i is an int, the ith requested argument from self.args shall be changed to y. If i is a str, the requested value keyed by i from self.kwargs, shall by changed to y. Otherwise a TypeError is raised as nothing else is valid. """ if isinstance(i, int): self.args[i] = y elif isinstance(i, str): self.kwargs[i] = y else: raise TypeError("Expected int or str, got %r" % type(i)) def cancel(self): """Cancel the event from being processed (if not already)""" self.cancelled = True def stop(self): """Stop further processing of this event""" self.stopped = True class exception(Event): """exception Event This event is sent for any exceptions that occur during the execution of an event Handler that is not SystemExit or KeyboardInterrupt. :param type: type of exception :type type: type :param value: exception object :type value: exceptions.TypeError :param traceback: traceback of exception :type traceback: traceback :param handler: handler that raised the exception :type handler: @handler() :param fevent: event that failed :type fevent: event """ def __init__(self, type, value, traceback, handler=None, fevent=None): super(exception, self).__init__(type, value, traceback, handler=handler, fevent=fevent) class started(Event): """started Event This Event is sent when a Component or Manager has started running. :param manager: The component or manager that was started :type manager: Component or Manager """ def __init__(self, manager): super(started, self).__init__(manager) class stopped(Event): """stopped Event This Event is sent when a Component or Manager has stopped running. :param manager: The component or manager that has stopped :type manager: Component or Manager """ def __init__(self, manager): super(stopped, self).__init__(manager) class signal(Event): """signal Event This Event is sent when a Component receives a signal. :param signo: The signal number received. :type int: An int value for the signal :param stack: The interrupted stack frame. :type object: A stack frame """ def __init__(self, signo, stack): super(signal, self).__init__(signo, stack) class registered(Event): """registered Event This Event is sent when a Component has registered with another Component or Manager. This Event is only sent if the Component or Manager being registered which is not itself. :param component: The Component being registered :type component: Component :param manager: The Component or Manager being registered with :type manager: Component or Manager """ def __init__(self, component, manager): super(registered, self).__init__(component, manager) class unregistered(Event): """unregistered Event This Event is sent when a Component has been unregistered from its Component or Manager. """ class generate_events(Event): """generate_events Event This Event is sent by the circuits core. All components that generate timed events or events from external sources (e.g. data becoming available) should fire any pending events in their "generate_events" handler. The handler must either call :meth:`~stop` (*preventing other handlers from being called in the same iteration) or must invoke :meth:`~.reduce_time_left` with parameter 0. :param max_wait: maximum time available for generating events. :type time_left: float Components that actually consume time waiting for events to be generated, thus suspending normal execution, must provide a method ``resume`` that interrupts waiting for events. """ def __init__(self, lock, max_wait): super(generate_events, self).__init__() self._time_left = max_wait self._lock = lock @property def time_left(self): """ The time left for generating events. A value less than 0 indicates unlimited time. You should have only one component in your system (usually a poller component) that spends up to "time left" until it generates an event. """ return self._time_left def reduce_time_left(self, time_left): """ Update the time left for generating events. This is typically used by event generators that currently don't want to generate an event but know that they will within a certain time. By reducing the time left, they make sure that they are reinvoked when the time for generating the event has come (at the latest). This method can only be used to reduce the time left. If the parameter is larger than the current value of time left, it is ignored. If the time left is reduced to 0 and the event is currently being handled, the handler's *resume* method is invoked. """ with self._lock: if time_left >= 0 and (self._time_left < 0 or self._time_left > time_left): self._time_left = time_left if self._time_left == 0 and self.handler is not None: m = getattr( getattr( self.handler, "im_self", getattr( self.handler, "__self__" ) ), "resume", None ) if m is not None and ismethod(m): m() @property def lock(self): return self._lock circuits-3.1.0/circuits/core/helpers.py0000644000014400001440000000666312414125630021133 0ustar prologicusers00000000000000""" .. codeauthor: mnl """ from sys import stderr from threading import Event from signal import SIGINT, SIGTERM from .handlers import handler from .components import BaseComponent from circuits.core.handlers import reprhandler class FallBackGenerator(BaseComponent): def __init__(self, *args, **kwargs): super(FallBackGenerator, self).__init__(*args, **kwargs) self._continue = Event() @handler("generate_events", priority=-100) def _on_generate_events(self, event): """ Fall back handler for the :class:`~.events.GenerateEvents` event. When the queue is empty a GenerateEvents event is fired, here we sleep for as long as possible to avoid using extra cpu cycles. A poller would override this with a higher priority handler. e.g: ``@handler("generate_events", priority=0)`` and provide a different way to idle when the queue is empty. """ with event.lock: if event.time_left == 0: event.stop() self._continue.clear() if event.time_left > 0: # If we get here, there is no component with work to be # done and no new event. But some component has requested # to be checked again after a certain timeout. self._continue.wait(event.time_left) # Either time is over or _continue has been set, which # implies resume has been called, which means that # reduce_time_left(0) has been called. So calling this # here is OK in any case. event.reduce_time_left(0) event.stop() while event.time_left < 0: # If we get here, there was no work left to do when creating # the GenerateEvents event and there is no other handler that # is prepared to supply new events within a limited time. The # application will continue only if some other Thread fires # an event. # # Python ignores signals when waiting without timeout. self._continue.wait(10000) event.stop() def resume(self): """ Implements the resume method as required from components that handle :class:`~.events.GenerateEvents`. """ self._continue.set() class FallBackExceptionHandler(BaseComponent): """ If there is no handler for error events in the component hierarchy, this component's handler is added automatically. It simply prints the error information on stderr. """ @handler("exception", channel="*") def _on_exception(self, error_type, value, traceback, handler=None, fevent=None): s = [] if handler is None: handler = "" else: handler = reprhandler(handler) msg = "ERROR {0:s} ({1:s}) ({2:s}): {3:s}\n".format( handler, repr(fevent), repr(error_type), repr(value) ) s.append(msg) s.extend(traceback) s.append("\n") stderr.write("".join(s)) class FallBackSignalHandler(BaseComponent): """ If there is no handler for signal events in the component hierarchy, this component's handler is added automatically. It simply terminates the system if the signal is SIGINT or SIGTERM. """ @handler("signal", channel="*") def _on_signal(self, signo, stack): if signo in [SIGINT, SIGTERM]: raise SystemExit(0) circuits-3.1.0/circuits/core/handlers.py0000644000014400001440000001077712402037676021303 0ustar prologicusers00000000000000# Package: handlers # Date: 11th April 2010 # Author: James Mills, prologic at shortcircuit dot net dot au """ This module define the @handler decorator/function and the HandlesType type. """ from inspect import getargspec from collections import Callable def handler(*names, **kwargs): """Creates an Event Handler This decorator can be applied to methods of classes derived from :class:`circuits.core.components.BaseComponent`. It marks the method as a handler for the events passed as arguments to the ``@handler`` decorator. The events are specified by their name. The decorated method's arguments must match the arguments passed to the :class:`circuits.core.events.Event` on creation. Optionally, the method may have an additional first argument named *event*. If declared, the event object that caused the handler to be invoked is assigned to it. By default, the handler is invoked by the component's root :class:`~.manager.Manager` for events that are propagated on the channel determined by the BaseComponent's *channel* attribute. This may be overridden by specifying a different channel as a keyword parameter of the decorator (``channel=...``). Keyword argument ``priority`` influences the order in which handlers for a specific event are invoked. The higher the priority, the earlier the handler is executed. If you want to override a handler defined in a base class of your component, you must specify ``override=True``, else your method becomes an additional handler for the event. **Return value** Normally, the results returned by the handlers for an event are simply collected in the :class:`circuits.core.events.Event`'s :attr:`value` attribute. As a special case, a handler may return a :class:`types.GeneratorType`. This signals to the dispatcher that the handler isn't ready to deliver a result yet. Rather, it has interrupted it's execution with a ``yield None`` statement, thus preserving its current execution state. The dispatcher saves the returned generator object as a task. All tasks are reexamined (i.e. their :meth:`next()` method is invoked) when the pending events have been executed. This feature avoids an unnecessarily complicated chaining of event handlers. Imagine a handler A that needs the results from firing an event E in order to complete. Then without this feature, the final action of A would be to fire event E, and another handler for an event ``SuccessE`` would be required to complete handler A's operation, now having the result from invoking E available (actually it's even a bit more complicated). Using this "suspend" feature, the handler simply fires event E and then yields ``None`` until e.g. it finds a result in E's :attr:`value` attribute. For the simplest scenario, there even is a utility method :meth:`circuits.core.manager.Manager.callEvent` that combines firing and waiting. """ def wrapper(f): if names and isinstance(names[0], bool) and not names[0]: f.handler = False return f f.handler = True f.names = names f.priority = kwargs.get("priority", 0) f.channel = kwargs.get("channel", None) f.override = kwargs.get("override", False) args = getargspec(f)[0] if args and args[0] == "self": del args[0] f.event = getattr(f, "event", bool(args and args[0] == "event")) return f return wrapper class Unknown(object): """Unknown Dummy Component""" def reprhandler(handler): format = "" channel = getattr(handler, "channel", "*") if channel is None: channel = "*" from circuits.core.manager import Manager if isinstance(channel, Manager): channel = "" names = ".".join(handler.names) instance = getattr( handler, "im_self", getattr( handler, "__self__", Unknown() ) ).__class__.__name__ method = handler.__name__ return format % (channel, names, instance, method) class HandlerMetaClass(type): def __init__(cls, name, bases, ns): super(HandlerMetaClass, cls).__init__(name, bases, ns) callables = (x for x in ns.items() if isinstance(x[1], Callable)) for name, callable in callables: if not (name.startswith("_") or hasattr(callable, "handler")): setattr(cls, name, handler(name)(callable)) circuits-3.1.0/circuits/core/values.py0000644000014400001440000000707212402037676020774 0ustar prologicusers00000000000000# Package: values # Date: 11th April 2010 # Author: James Mills, prologic at shortcircuit dot net dot au """ This defines the Value object used by components and events. """ from .events import Event from ..six import string_types class Value(object): """Create a new future Value Object Creates a new future Value Object which is used by Event Objects and the Manager to store the result(s) of an Event Handler's exeuction of some Event in the system. :param event: The Event this Value is associated with. :type event: Event instance :param manager: The Manager/Component used to trigger notifications. :type manager: A Manager/Component instance. :ivar result: True if this value has been changed. :ivar errors: True if while setting this value an exception occured. :ivar notify: True or an event name to notify of changes to this value This is a Future/Promise implementation. """ def __init__(self, event=None, manager=None): self.event = event self.manager = manager self.notify = False self.promise = False self.result = False self.errors = False self.parent = self self.handled = False self._value = None def __getstate__(self): odict = self.__dict__.copy() del odict["manager"] return odict def __contains__(self, y): value = self.value return y in value if isinstance(value, list) else y == value def __getitem__(self, y): v = self.value[y] if isinstance(v, Value): return v.value else: return v def __iter__(self): return iter(map(lambda v: v.value if isinstance(v, Value) else v, self.value)) def __repr__(self): "x.__repr__() <==> repr(x)" value = "" if self.result: value = repr(self.value) format = " str(x)" return str(self.value) def inform(self, force=False): if self.promise and not force: return notify = getattr(self.event, "notify", False) or self.notify if self.manager is not None and notify: if isinstance(notify, string_types): e = Event.create(notify, self) else: e = self.event.child("value_changed", self) self.manager.fire(e, self.manager) def getValue(self, recursive=True): value = self._value if not recursive: return value while isinstance(value, Value): value = value._value return value def setValue(self, value): if isinstance(value, Value): value.parent = self if self.result and isinstance(self._value, list): self._value.append(value) elif self.result: self._value = [self._value] self._value.append(value) else: self._value = value def update(o, v): if isinstance(v, Value): o.errors = v.errors o.result = v.result elif v is not None: o.result = True o.inform() if o.parent is not o: o.parent.errors = o.errors o.parent.result = o.result update(o.parent, v) update(self, value) value = property(getValue, setValue, None, "Value of this Value") circuits-3.1.0/circuits/core/pollers.py0000644000014400001440000003752412402037676021162 0ustar prologicusers00000000000000# Module: pollers # Date: 15th September 2008 # Author: James Mills """Poller Components for asynchronous file and socket I/O. This module contains Poller components that enable polling of file or socket descriptors for read/write events. Pollers: - Select - Poll - EPoll """ import os import select import platform from errno import EBADF, EINTR from select import error as SelectError from socket import error as SocketError, create_connection, \ socket as create_socket, AF_INET, SOCK_STREAM, socket from threading import Thread from circuits.core.handlers import handler from .events import Event from .components import BaseComponent class _read(Event): """_read Event""" class _write(Event): """_write Event""" class _error(Event): """_error Event""" class _disconnect(Event): """_disconnect Event""" class BasePoller(BaseComponent): channel = None def __init__(self, channel=channel): super(BasePoller, self).__init__(channel=channel) self._read = [] self._write = [] self._targets = {} self._ctrl_recv, self._ctrl_send = self._create_control_con() def _create_control_con(self): if platform.system() == "Linux": return os.pipe() server = create_socket(AF_INET, SOCK_STREAM) server.bind(("localhost", 0)) server.listen(1) res_list = [] def accept(): sock, _ = server.accept() sock.setblocking(False) res_list.append(sock) at = Thread(target=accept) at.start() clnt_sock = create_connection(server.getsockname()) at.join() return (res_list[0], clnt_sock) @handler("generate_events", priority=-9) def _on_generate_events(self, event): """ Pollers have slightly higher priority than the default handler from Manager to ensure that they are invoked before the default handler. They act as event filters to avoid the additional invocation of the default handler which would be unnecessary overhead. """ event.stop() self._generate_events(event) def resume(self): if isinstance(self._ctrl_send, socket): self._ctrl_send.send(b"\0") else: os.write(self._ctrl_send, b"\0") def _read_ctrl(self): try: if isinstance(self._ctrl_recv, socket): return self._ctrl_recv.recv(1) else: return os.read(self._ctrl_recv, 1) except: return b"\0" def addReader(self, source, fd): channel = getattr(source, "channel", "*") self._read.append(fd) self._targets[fd] = channel def addWriter(self, source, fd): channel = getattr(source, "channel", "*") self._write.append(fd) self._targets[fd] = channel def removeReader(self, fd): if fd in self._read: self._read.remove(fd) if not (fd in self._read or fd in self._write) and fd in self._targets: del self._targets[fd] def removeWriter(self, fd): if fd in self._write: self._write.remove(fd) if not (fd in self._read or fd in self._write) and fd in self._targets: del self._targets[fd] def isReading(self, fd): return fd in self._read def isWriting(self, fd): return fd in self._write def discard(self, fd): if fd in self._read: self._read.remove(fd) if fd in self._write: self._write.remove(fd) if fd in self._targets: del self._targets[fd] def getTarget(self, fd): return self._targets.get(fd, self.parent) class Select(BasePoller): """Select(...) -> new Select Poller Component Creates a new Select Poller Component that uses the select poller implementation. This poller is not recommended but is available for legacy reasons as most systems implement select-based polling for backwards compatibility. """ channel = "select" def __init__(self, channel=channel): super(Select, self).__init__(channel=channel) self._read.append(self._ctrl_recv) def _preenDescriptors(self): for socks in (self._read[:], self._write[:]): for sock in socks: try: select.select([sock], [sock], [sock], 0) except Exception: self.discard(sock) def _generate_events(self, event): try: if not any([self._read, self._write]): return timeout = event.time_left if timeout < 0: r, w, _ = select.select(self._read, self._write, []) else: r, w, _ = select.select(self._read, self._write, [], timeout) except ValueError as e: # Possibly a file descriptor has gone negative? return self._preenDescriptors() except TypeError as e: # Something *totally* invalid (object w/o fileno, non-integral # result) was passed return self._preenDescriptors() except (SelectError, SocketError, IOError) as e: # select(2) encountered an error if e.args[0] in (0, 2): # windows does this if it got an empty list if (not self._read) and (not self._write): return else: raise elif e.args[0] == EINTR: return elif e.args[0] == EBADF: return self._preenDescriptors() else: # OK, I really don't know what's going on. Blow up. raise for sock in w: if self.isWriting(sock): self.fire(_write(sock), self.getTarget(sock)) for sock in r: if sock == self._ctrl_recv: self._read_ctrl() continue if self.isReading(sock): self.fire(_read(sock), self.getTarget(sock)) class Poll(BasePoller): """Poll(...) -> new Poll Poller Component Creates a new Poll Poller Component that uses the poll poller implementation. """ channel = "poll" def __init__(self, channel=channel): super(Poll, self).__init__(channel=channel) self._map = {} self._poller = select.poll() self._disconnected_flag = ( select.POLLHUP | select.POLLERR | select.POLLNVAL ) self._read.append(self._ctrl_recv) self._updateRegistration(self._ctrl_recv) def _updateRegistration(self, fd): fileno = fd.fileno() if not isinstance(fd, int) else fd try: self._poller.unregister(fileno) except (KeyError, ValueError): pass mask = 0 if fd in self._read: mask = mask | select.POLLIN if fd in self._write: mask = mask | select.POLLOUT if mask: self._poller.register(fd, mask) self._map[fileno] = fd else: super(Poll, self).discard(fd) try: del self._map[fileno] except KeyError: pass def addReader(self, source, fd): super(Poll, self).addReader(source, fd) self._updateRegistration(fd) def addWriter(self, source, fd): super(Poll, self).addWriter(source, fd) self._updateRegistration(fd) def removeReader(self, fd): super(Poll, self).removeReader(fd) self._updateRegistration(fd) def removeWriter(self, fd): super(Poll, self).removeWriter(fd) self._updateRegistration(fd) def discard(self, fd): super(Poll, self).discard(fd) self._updateRegistration(fd) def _generate_events(self, event): try: timeout = event.time_left if timeout < 0: l = self._poller.poll() else: l = self._poller.poll(1000 * timeout) except SelectError as e: if e.args[0] == EINTR: return else: raise for fileno, event in l: self._process(fileno, event) def _process(self, fileno, event): if fileno not in self._map: return fd = self._map[fileno] if fd == self._ctrl_recv: self._read_ctrl() return if event & self._disconnected_flag and not (event & select.POLLIN): self.fire(_disconnect(fd), self.getTarget(fd)) self._poller.unregister(fileno) super(Poll, self).discard(fd) del self._map[fileno] else: try: if event & select.POLLIN: self.fire(_read(fd), self.getTarget(fd)) if event & select.POLLOUT: self.fire(_write(fd), self.getTarget(fd)) except Exception as e: self.fire(_error(fd, e), self.getTarget(fd)) self.fire(_disconnect(fd), self.getTarget(fd)) self._poller.unregister(fileno) super(Poll, self).discard(fd) del self._map[fileno] class EPoll(BasePoller): """EPoll(...) -> new EPoll Poller Component Creates a new EPoll Poller Component that uses the epoll poller implementation. """ channel = "epoll" def __init__(self, channel=channel): super(EPoll, self).__init__(channel=channel) self._map = {} self._poller = select.epoll() self._disconnected_flag = (select.EPOLLHUP | select.EPOLLERR) self._read.append(self._ctrl_recv) self._updateRegistration(self._ctrl_recv) def _updateRegistration(self, fd): try: fileno = fd.fileno() if not isinstance(fd, int) else fd self._poller.unregister(fileno) except (SocketError, IOError, ValueError) as e: if e.args[0] == EBADF: keys = [k for k, v in list(self._map.items()) if v == fd] for key in keys: del self._map[key] mask = 0 if fd in self._read: mask = mask | select.EPOLLIN if fd in self._write: mask = mask | select.EPOLLOUT if mask: self._poller.register(fd, mask) self._map[fileno] = fd else: super(EPoll, self).discard(fd) def addReader(self, source, fd): super(EPoll, self).addReader(source, fd) self._updateRegistration(fd) def addWriter(self, source, fd): super(EPoll, self).addWriter(source, fd) self._updateRegistration(fd) def removeReader(self, fd): super(EPoll, self).removeReader(fd) self._updateRegistration(fd) def removeWriter(self, fd): super(EPoll, self).removeWriter(fd) self._updateRegistration(fd) def discard(self, fd): super(EPoll, self).discard(fd) self._updateRegistration(fd) def _generate_events(self, event): try: timeout = event.time_left if timeout < 0: l = self._poller.poll() else: l = self._poller.poll(timeout) except IOError as e: if e.args[0] == EINTR: return except SelectError as e: if e.args[0] == EINTR: return else: raise for fileno, event in l: self._process(fileno, event) def _process(self, fileno, event): if fileno not in self._map: return fd = self._map[fileno] if fd == self._ctrl_recv: self._read_ctrl() return if event & self._disconnected_flag and not (event & select.POLLIN): self.fire(_disconnect(fd), self.getTarget(fd)) self._poller.unregister(fileno) super(EPoll, self).discard(fd) del self._map[fileno] else: try: if event & select.EPOLLIN: self.fire(_read(fd), self.getTarget(fd)) if event & select.EPOLLOUT: self.fire(_write(fd), self.getTarget(fd)) except Exception as e: self.fire(_error(fd, e), self.getTarget(fd)) self.fire(_disconnect(fd), self.getTarget(fd)) self._poller.unregister(fileno) super(EPoll, self).discard(fd) del self._map[fileno] class KQueue(BasePoller): """KQueue(...) -> new KQueue Poller Component Creates a new KQueue Poller Component that uses the kqueue poller implementation. """ channel = "kqueue" def __init__(self, channel=channel): super(KQueue, self).__init__(channel=channel) self._map = {} self._poller = select.kqueue() self._read.append(self._ctrl_recv) self._map[self._ctrl_recv.fileno()] = self._ctrl_recv self._poller.control( [ select.kevent( self._ctrl_recv, select.KQ_FILTER_READ, select.KQ_EV_ADD ) ], 0 ) def addReader(self, source, sock): super(KQueue, self).addReader(source, sock) self._map[sock.fileno()] = sock self._poller.control( [select.kevent(sock, select.KQ_FILTER_READ, select.KQ_EV_ADD)], 0 ) def addWriter(self, source, sock): super(KQueue, self).addWriter(source, sock) self._map[sock.fileno()] = sock self._poller.control( [select.kevent(sock, select.KQ_FILTER_WRITE, select.KQ_EV_ADD)], 0 ) def removeReader(self, sock): super(KQueue, self).removeReader(sock) self._poller.control( [ select.kevent(sock, select.KQ_FILTER_READ, select.KQ_EV_DELETE) ], 0 ) def removeWriter(self, sock): super(KQueue, self).removeWriter(sock) self._poller.control( [select.kevent(sock, select.KQ_FILTER_WRITE, select.KQ_EV_DELETE)], 0 ) def discard(self, sock): super(KQueue, self).discard(sock) del self._map[sock.fileno()] self._poller.control( [ select.kevent( sock, select.KQ_FILTER_WRITE | select.KQ_FILTER_READ, select.KQ_EV_DELETE ) ], 0 ) def _generate_events(self, event): try: timeout = event.time_left if timeout < 0: l = self._poller.control(None, 1000) else: l = self._poller.control(None, 1000, timeout) except SelectError as e: if e[0] == EINTR: return else: raise for event in l: self._process(event) def _process(self, event): if event.ident not in self._map: # shouldn't happen ? # we unregister the socket since we don't care about it anymore self._poller.control( [ select.kevent( event.ident, event.filter, select.KQ_EV_DELETE ) ], 0 ) return sock = self._map[event.ident] if sock == self._ctrl_recv: self._read_ctrl() return if event.flags & select.KQ_EV_ERROR: self.fire(_error(sock, "error"), self.getTarget(sock)) elif event.flags & select.KQ_EV_EOF: self.fire(_disconnect(sock), self.getTarget(sock)) elif event.filter == select.KQ_FILTER_WRITE: self.fire(_write(sock), self.getTarget(sock)) elif event.filter == select.KQ_FILTER_READ: self.fire(_read(sock), self.getTarget(sock)) Poller = Select __all__ = ("BasePoller", "Poller", "Select", "Poll", "EPoll", "KQueue") circuits-3.1.0/circuits/core/utils.py0000644000014400001440000000266212402037676020635 0ustar prologicusers00000000000000# Module: utils # Date: 11th April 2010 # Author: James Mills, prologic at shortcircuit dot net dot au """Utils This module defines utilities used by circuits. """ import sys from imp import reload def flatten(root, visited=None): if not visited: visited = set() yield root for component in root.components.copy(): if component not in visited: visited.add(component) for child in flatten(component, visited): yield child def findchannel(root, channel, all=False): components = [x for x in flatten(root) if x.channel == channel] if all: return components if components: return components[0] def findtype(root, component, all=False): components = [x for x in flatten(root) if issubclass(type(x), component)] if all: return components if components: return components[0] findcmp = findtype def findroot(component): if component.parent == component: return component else: return findroot(component.parent) def safeimport(name): modules = sys.modules.copy() try: if name in sys.modules: return reload(sys.modules[name]) else: return __import__(name, globals(), locals(), [""]) except: for name in sys.modules.copy(): if not name in modules: del sys.modules[name] circuits-3.1.0/circuits/core/bridge.py0000644000014400001440000000655412421666335020736 0ustar prologicusers00000000000000# Module: bridge # Date: 2nd April 2006 # Author: James Mills, prologic at shortcircuit dot net dot au """Bridge The Bridge Component is used for inter-process communications between processes. Bridge is used internally when a Component is started in "process mode" via :meth:`circuits.core.manager.start`. Typically a Pipe is used as the socket transport between two sides of a Bridge (*there must be a :class:`~Bridge` instnace on both sides*). """ import traceback try: from cPickle import dumps, loads except ImportError: from pickle import dumps, loads # NOQA from .values import Value from .events import Event, exception from .handlers import handler from .components import BaseComponent from ..six import b _sentinel = b('~~~') class Bridge(BaseComponent): channel = "bridge" ignore = [ "registered", "unregistered", "started", "stopped", "error", "value_changed", "generate_events", "read", "write", "close", "connected", "connect", "disconnect", "disconnected", "_read", "_write", "ready", "read_value_changed", "prepare_unregister" ] def init(self, socket, channel=channel): self._socket = socket self._values = dict() if self._socket is not None: self._socket.register(self) def _process_packet(self, eid, obj): if isinstance(obj, Event): obj.remote = True obj.notify = "value_changed" obj.waitingHandlers = 0 value = self.fire(obj) self._values[value] = eid elif isinstance(obj, Value): if obj.result: if isinstance(obj.value, list): for item in obj.value: self._values[eid].value = item else: self._values[eid].value = obj.value event = Event.create(Bridge.__waiting_event(eid)) event.remote = True self.fire(event, self.channel) @handler("value_changed", channel="*") def _on_value_changed(self, value): try: eid = self._values[value] self.__write(eid, value) except: pass @handler("read") def _on_read(self, data): data = data.split(_sentinel) for item in data[:-1]: self._process_packet(*loads(item)) def send(self, eid, event): try: if isinstance(event, exception): Bridge.__adapt_exception(event) self._values[eid] = event.value self.__write(eid, event) except: pass def __write(self, eid, data): self._socket.write(dumps((eid, data))+_sentinel) @handler(channel="*", priority=100.0) def _on_event(self, event, *args, **kwargs): if event.name in self.ignore or getattr(event, "remote", False) \ or event.name.endswith('_done') \ or event.name.endswith('_success') \ or event.name.endswith('_complete'): return eid = hash(event) self.send(eid, event) yield self.wait(Bridge.__waiting_event(eid)) @staticmethod def __waiting_event(eid): return '%s_done' % eid @staticmethod def __adapt_exception(ex): fevent_value = ex.kwargs['fevent'].value fevent_value._value = (fevent_value[0], fevent_value[1], traceback.extract_tb(fevent_value[2])) circuits-3.1.0/circuits/core/components.py0000644000014400001440000002116012402037676021654 0ustar prologicusers00000000000000# Package: components # Date: 11th April 2010 # Author: James Mills, prologic at shortcircuit dot net dot au """ This module defines the BaseComponent and its subclass Component. """ from itertools import chain from types import MethodType from inspect import getmembers from collections import Callable from .manager import Manager from .handlers import handler, HandlerMetaClass from .events import Event, registered, unregistered class prepare_unregister(Event): """ This event is fired when a component is about to be unregistered from the component tree. Unregistering a component actually detaches the complete subtree that the unregistered component is the root of. Components that need to know if they are removed from the main tree (e.g. because they maintain relationships to other components in the tree) handle this event, check if the component being unregistered is one of their ancestors and act accordingly. :param component: the component that will be unregistered :type type: :class:`~.BaseComponent` """ complete = True def __init__(self, *args, **kwargs): super(prepare_unregister, self).__init__(*args, **kwargs) def in_subtree(self, component): """ Convenience method that checks if the given *component* is in the subtree that is about to be detached. """ while True: if component == self.args[0]: return True if component == component.root: return False component = component.parent class BaseComponent(Manager): """ This is the base class for all components in a circuits based application. Components can (and should, except for root components) be registered with a parent component. BaseComponents can declare methods as event handlers using the handler decoration (see :func:`circuits.core.handlers.handler`). The handlers are invoked for matching events from the component's channel (specified as the component's ``channel`` attribute). BaseComponents inherit from :class:`circuits.core.manager.Manager`. This provides components with the :func:`circuits.core.manager.Manager.fireEvent` method that can be used to fire events as the result of some computation. Apart from the ``fireEvent()`` method, the Manager nature is important for root components that are started or run. :ivar channel: a component can be associated with a specific channel by setting this attribute. This should either be done by specifying a class attribute *channel* in the derived class or by passing a keyword parameter *channel="..."* to *__init__*. If specified, the component's handlers receive events on the specified channel only, and events fired by the component will be sent on the specified channel (this behavior may be overridden, see :class:`~circuits.core.events.Event`, :meth:`~.fireEvent` and :func:`~circuits.core.handlers.handler`). By default, the channel attribute is set to "*", meaning that events are fired on all channels and received from all channels. """ channel = "*" def __new__(cls, *args, **kwargs): self = super(BaseComponent, cls).__new__(cls) handlers = dict( [(k, v) for k, v in list(cls.__dict__.items()) if getattr(v, "handler", False)] ) overridden = lambda x: x in handlers and handlers[x].override for base in cls.__bases__: if issubclass(cls, base): for k, v in list(base.__dict__.items()): p1 = isinstance(v, Callable) p2 = getattr(v, "handler", False) p3 = overridden(k) if p1 and p2 and not p3: name = "%s_%s" % (base.__name__, k) method = MethodType(v, self) setattr(self, name, method) return self def __init__(self, *args, **kwargs): "initializes x; see x.__class__.__doc__ for signature" super(BaseComponent, self).__init__(*args, **kwargs) self.channel = kwargs.get("channel", self.channel) or "*" for k, v in getmembers(self): if getattr(v, "handler", False) is True: self.addHandler(v) # TODO: Document this feature. See Issue #88 if v is not self and isinstance(v, BaseComponent) \ and v not in ('parent', 'root'): v.register(self) if hasattr(self, "init") and isinstance(self.init, Callable): self.init(*args, **kwargs) @handler("prepare_unregister_complete", channel=self) def _on_prepare_unregister_complete(self, event, e, value): self._do_prepare_unregister_complete(event.parent, value) self.addHandler(_on_prepare_unregister_complete) def register(self, parent): """ Inserts this component in the component tree as a child of the given *parent* node. :param parent: the parent component after registration has completed. :type parent: :class:`~.manager.Manager` This method fires a :class:`~.events.Registered` event to inform other components in the tree about the new member. """ self.parent = parent self.root = parent.root # Make sure that structure is consistent before firing event # because event may be handled in a concurrent thread. if parent is not self: parent.registerChild(self) self._updateRoot(parent.root) self.fire(registered(self, self.parent)) else: self._updateRoot(parent.root) return self def unregister(self): """ Removes this component from the component tree. Removing a component from the component tree is a two stage process. First, the component is marked as to be removed, which prevents it from receiving further events, and a :class:`~.components.prepare_unregister` event is fired. This allows other components to e.g. release references to the component to be removed before it is actually removed from the component tree. After the processing of the ``prepare_unregister`` event has completed, the component is removed from the tree and an :class:`~.events.unregistered` event is fired. """ if self.unregister_pending or self.parent == self: return self # tick shouldn't be called anymore, although component is still in tree self._unregister_pending = True self.root._cache_needs_refresh = True # Give components a chance to prepare for unregister evt = prepare_unregister(self) evt.complete_channels = (self,) self.fire(evt) return self @property def unregister_pending(self): return getattr(self, "_unregister_pending", False) def _do_prepare_unregister_complete(self, e, value): # Remove component from tree now delattr(self, "_unregister_pending") self.fire(unregistered(self, self.parent)) if self.parent is not self: self.parent.unregisterChild(self) self.parent = self self._updateRoot(self) return self def _updateRoot(self, root): self.root = root for c in self.components: c._updateRoot(root) @classmethod def handlers(cls): """Returns a list of all event handlers for this Component""" return list(set( getattr(cls, k) for k in dir(cls) if getattr(getattr(cls, k), "handler", False) )) @classmethod def events(cls): """Returns a list of all events this Component listens to""" handlers = ( getattr(cls, k).names for k in dir(cls) if getattr(getattr(cls, k), "handler", False) ) return list(set( name for name in chain(*handlers) if not name.startswith("_") )) @classmethod def handles(cls, *names): """Returns True if all names are event handlers of this Component""" return all(name in cls.events() for name in names) Component = HandlerMetaClass("Component", (BaseComponent,), {}) """ If you use Component instead of BaseComponent as base class for your own component class, then all methods that are not marked as private (i.e: start with an underscore) are automatically decorated as handlers. The methods are invoked for all events from the component's channel where the event's name matches the method's name. """ circuits-3.1.0/circuits/app/0000755000014400001440000000000012425013643016736 5ustar prologicusers00000000000000circuits-3.1.0/circuits/app/daemon.py0000644000014400001440000000630712402037676020570 0ustar prologicusers00000000000000# Module: daemon # Date: 20th June 2009 # Author: James Mills, prologic at shortcircuit dot net dot au """Daemon Component Component to daemonize a system into the background and detach it from its controlling PTY. Supports PID file writing, logging stdin, stdout and stderr and changing the current working directory. """ from os.path import isabs from sys import stderr, stdin, stdout from os import _exit, chdir, dup2, setsid, fork, getpid, remove, umask from circuits.core import handler, Component, Event class daemonize(Event): """daemonize Event""" class deletepid(Event): """"deletepid Event""" class writepid(Event): """"writepid Event""" class Daemon(Component): """Daemon Component :param pidfile: .pid filename :type pidfile: str or unicode :param stdin: filename to log stdin :type stdin: str or unicode :param stdout: filename to log stdout :type stdout: str or unicode :param stderr: filename to log stderr :type stderr: str or unicode """ channel = "daemon" def init(self, pidfile, path="/", stdin=None, stdout=None, stderr=None, channel=channel): assert isabs(path), "path must be absolute" self.pidfile = pidfile self.path = path self.stdin = ( stdin if stdin is not None and isabs(stdin) else "/dev/null" ) self.stdout = ( stdout if stdout is not None and isabs(stdout) else "/dev/null" ) self.stderr = ( stderr if stderr is not None and isabs(stderr) else "/dev/null" ) def deletepid(self): remove(self.pidfile) def writepid(self): with open(self.pidfile, "w") as fd: fd.write(str(getpid())) def daemonize(self): try: pid = fork() if pid > 0: # exit first parent _exit(0) except OSError as e: stderr.write( "fork #1 failed: {0:d} ({0:s})\n".format( e.errno, str(e) ) ) raise SystemExit(1) # decouple from parent environment chdir(self.path) setsid() umask(0) # do second fork try: pid = fork() if pid > 0: # exit from second parent _exit(0) except OSError as e: stderr.write( "fork #2 failed: {0:d} ({0:s})\n".format( e.errno, str(e) ) ) raise SystemExit(1) # redirect standard file descriptors stdout.flush() stderr.flush() si = open(self.stdin, "r") so = open(self.stdout, "a+") se = open(self.stderr, "a+") dup2(si.fileno(), stdin.fileno()) dup2(so.fileno(), stdout.fileno()) dup2(se.fileno(), stderr.fileno()) self.fire(writepid()) def registered(self, component, manager): if component == self and manager.root.running: self.fire(daemonize()) @handler("started", priority=100.0, channel="*") def on_started(self, component): if component is not self: self.fire(daemonize()) circuits-3.1.0/circuits/app/__init__.py0000644000014400001440000000060112402037676021053 0ustar prologicusers00000000000000# Package: app # Date: 20th June 2009 # Author: James Mills, prologic at shortcircuit dot net dot au """Application Components Contains various components useful for application development and tasks common to applications. :copyright: CopyRight (C) 2004-2013 by James Mills :license: MIT (See: LICENSE) """ from .daemon import Daemon __all__ = ("Daemon",) # flake8: noqa circuits-3.1.0/LICENSE0000644000014400001440000000211612402037676015345 0ustar prologicusers00000000000000Copyright (C) 2004-2013 James Mills Circuits is covered by the MIT license:: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. circuits-3.1.0/requirements-dev.txt0000644000014400001440000000044612407376110020376 0ustar prologicusers00000000000000# Convenient Development Tasks Fabric==1.8.3 # Debugging pudb==2014.1 # Running Tests tox==1.7.1 pytest==2.5.2 pytest-cov==1.6 # Generating Documentation Sphinx==1.2.2 Sphinx-PyPI-upload==0.2.1 sphinxcontrib-bitbucket==1.0 sphinxcontrib-googleanalytics==0.1 sphinxcontrib-programoutput==0.8 circuits-3.1.0/examples/0000755000014400001440000000000012425013643016147 5ustar prologicusers00000000000000circuits-3.1.0/examples/signals.py0000755000014400001440000000167212402037676020201 0ustar prologicusers00000000000000#!/usr/bin/env python """circuits Signal Handling A modified version of the circuits Hello World example to demonstrate how to customize signal handling and cause a delayed system terminate. """ from __future__ import print_function from circuits import Component, Debugger, Event, Timer class hello(Event): """hello Event""" class App(Component): def hello(self): """Hello Event Handler""" print("Hello World!") def signal(self, event, signo, stack): Timer(3, Event.create("terminate")).register(self) print("Terminating in 3 seconds...") def terminate(self): self.stop() def started(self, component): """Started Event Handler This is fired internally when your application starts up and can be used to trigger events that only occur once during startup. """ self.fire(hello()) # Fire hello Event (App() + Debugger()).run() circuits-3.1.0/examples/telnet.py0000755000014400001440000001011612402037676020025 0ustar prologicusers00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- """Telnet Example A basic telnet-like clone that connects to remote hosts via tcp and allows the user to send data to the remote server. This example demonstrates: * Basic Component creation. * Basic Event handling. * Basiv Networking * Basic Request/Response Networking This example makes use of: * Component * Event * net.sockets.TCPClient """ from __future__ import print_function import os from optparse import OptionParser import circuits from circuits.io import stdin from circuits.tools import graph from circuits import handler, Component from circuits.net.events import connect, write from circuits.net.sockets import TCPClient, UNIXClient, UDPClient USAGE = "%prog [options] host [port]" VERSION = "%prog v" + circuits.__version__ def parse_options(): parser = OptionParser(usage=USAGE, version=VERSION) parser.add_option( "-u", "--udp", action="store_true", default=False, dest="udp", help="Use UDP transport", ) parser.add_option( "-v", "--verbose", action="store_true", default=False, dest="verbose", help="Enable verbose debugging", ) opts, args = parser.parse_args() if len(args) < 1: parser.print_help() raise SystemExit(1) return opts, args class Telnet(Component): # Define a separate channel for this component so we don't clash with # the ``read`` event of the ``stdin`` component. channel = "telnet" def __init__(self, *args, **opts): super(Telnet, self).__init__() self.args = args self.opts = opts if len(args) == 1: if os.path.exists(args[0]): UNIXClient(channel=self.channel).register(self) host = dest = port = args[0] dest = (dest,) else: raise OSError("Path %s not found" % args[0]) else: if not opts["udp"]: TCPClient(channel=self.channel).register(self) else: UDPClient(0, channel=self.channel).register(self) host, port = args port = int(port) dest = host, port self.host = host self.port = port print("Trying %s ..." % host) if not opts["udp"]: self.fire(connect(*dest)) else: self.fire(write((host, port), b"\x00")) def ready(self, *args): graph(self.root) def connected(self, host, port=None): """connected Event Handler This event is fired by the TCPClient Componentt to indicate a successful connection. """ print("connected to {0}".format(host)) def error(self, *args, **kwargs): """error Event Handler If any exception/error occurs in the system this event is triggered. """ if len(args) == 3: print("ERROR: {0}".format(args[1])) else: print("ERROR: {0}".format(args[0])) def read(self, *args): """read Event Handler This event is fired by the underlying TCPClient Component when there is data to be read from the connection. """ if len(args) == 1: data = args[0] else: peer, data = args data = data.strip().decode("utf-8") print(data) # Setup an Event Handler for "read" events on the "stdin" channel. @handler("read", channel="stdin") def _on_stdin_read(self, data): """read Event Handler for stdin This event is triggered by the connected ``stdin`` component when there is new data to be read in from standard input. """ if not self.opts["udp"]: self.fire(write(data)) else: self.fire(write((self.host, self.port), data)) def main(): opts, args = parse_options() # Configure and "run" the System. app = Telnet(*args, **opts.__dict__) if opts.verbose: from circuits import Debugger Debugger().register(app) stdin.register(app) app.run() if __name__ == "__main__": main() circuits-3.1.0/examples/factorial.py0000755000014400001440000000131312402037676020475 0ustar prologicusers00000000000000#!/usr/bin/env python from __future__ import print_function from time import sleep from circuits import task, Worker from circuits import Component, Debugger, Event, Timer def factorial(n): x = 1 for i in range(1, (n + 1)): x = x * (i + 1) sleep(1) # deliberate! return x class App(Component): def init(self, *args, **kwargs): Worker(process=True).register(self) def foo(self): print("Foo!") def started(self, component): Timer(1, Event.create("foo"), persist=True).register(self) x = yield self.call(task(factorial, 10)) print("{0:d}".format(x.value)) self.stop() app = App() Debugger().register(app) app.run() circuits-3.1.0/examples/timers.py0000755000014400001440000000201712402037676020036 0ustar prologicusers00000000000000#!/usr/bin/env python """Simple Timers A trivial simple example of using circuits and timers. """ from circuits import Event, Component, Timer class App(Component): def hello(self): """hello Event handler Fired once in 5 seconds. """ print("Hello World") def foo(self): """foo Event handler Fired every 1 seconds. """ print("Foo") def bar(self): """bar Event handler Fired every 3 seconds. """ print("Bar") def started(self, component): """started Event handler Setup 3 timers at 5, 1 and 3 seconds. The 2nd two timers are persitent meaning that they are fired repeatedly every 1 and 3 seconds respectively. """ # Timer(seconds, event, persist=False) Timer(5, Event.create("hello")).register(self) Timer(1, Event.create("foo"), persist=True).register(self) Timer(3, Event.create("bar"), persist=True).register(self) App().run() circuits-3.1.0/examples/portforward.py0000755000014400001440000001214212402037676021104 0ustar prologicusers00000000000000#!/usr/bin/env python """A Port Forwarding Example This example demonstrates slightly more complex features and behaviors implementing a TCP/UDP Port Forwarder of network traffic. This can be used as a simple tool to forward traffic from one port to another. Example: ./portforward.py 0.0.0.0:2222 127.0.0.1:22 This example also has support for daemonizing the process into the background. """ from uuid import uuid4 as uuid from optparse import OptionParser from circuits.app import Daemon from circuits import handler, Component, Debugger from circuits.net.events import close, Connect, write from circuits.net.sockets import TCPClient, TCPServer __version__ = "0.2" USAGE = "%prog [options] " VERSION = "%prog v" + __version__ def parse_options(): parser = OptionParser(usage=USAGE, version=VERSION) parser.add_option( "-d", "--daemon", action="store_true", default=False, dest="daemon", help="Enable daemon mode (fork into the background)" ) parser.add_option( "", "--debug", action="store_true", default=False, dest="debug", help="Enable debug mode (verbose event output)" ) opts, args = parser.parse_args() if len(args) < 2: parser.print_help() raise SystemExit(1) return opts, args def _on_target_disconnected(self, event): """Disconnected Event Handler This unbound function will be later added as an event handler to a dynamically created and registered client instance and used to process Disconnected events of a connected client. """ channel = event.channels[0] sock = self._sockets[channel] self.fire(close(sock), "source") del self._sockets[channel] del self._clients[sock] def _on_target_ready(self, component): """Ready Event Handler This unbound function will be later added as an event handler to a dynamically created and registered client instance and used to process Ready events of a registered client. """ self.fire(connect(*self._target, secure=self._secure), component.channel) def _on_target_read(self, event, data): """Read Event Handler This unbound function will be later added as an event handler to a dynamically created and registered client instance and used to process Read events of a connected client. """ sock = self._sockets[event.channels[0]] self.fire(write(sock, data), "source") class PortForwarder(Component): def init(self, source, target, secure=False): self._source = source self._target = target self._secure = secure self._clients = dict() self._sockets = dict() # Setup our components and register them. server = TCPServer(self._source, secure=self._secure, channel="source") server.register(self) @handler("connect", channel="source") def _on_source_connect(self, sock, host, port): """Explicitly defined connect Event Handler This evens is triggered by the underlying TCPServer Component when a new client connection has been made. Here we dynamically create a Client instance, registere it and add custom event handlers to handle the events of the newly created client. The client is registered with a unique channel per connection. """ bind = 0 channel = uuid() client = TCPClient(bind, channel=channel) client.register(self) self.addHandler( handler("disconnected", channel=channel)(_on_target_disconnected) ) self.addHandler( handler("ready", channel=channel)(_on_target_ready) ) self.addHandler( handler("read", channel=channel)(_on_target_read) ) self._clients[sock] = client self._sockets[client.channel] = sock @handler("read", channel="source") def _on_source_read(self, sock, data): """Explicitly defined Read Event Handler This evens is triggered by the underlying TCPServer Component when a connected client has some data ready to be processed. Here we simply fire a cooresponding write event to the cooresponding matching client which we lookup using the socket object as the key to determinte the unique id. """ client = self._clients[sock] self.fire(write(data), client.channel) def sanitize(s): if ":" in s: address, port = s.split(":") port = int(port) return address, port return s def main(): opts, args = parse_options() source = sanitize(args[0]) target = sanitize(args[1]) if type(source) is not tuple: print("ERROR: source address must specify port (address:port)") raise SystemExit(-1) if type(target) is not tuple: print("ERROR: target address must specify port (address:port)") raise SystemExit(-1) system = PortForwarder(source, target) if opts.daemon: Daemon("portforward.pid").register(system) if opts.debug: Debugger().register(system) system.run() if __name__ == "__main__": main() circuits-3.1.0/examples/99bottles.py0000755000014400001440000000242112402037676020370 0ustar prologicusers00000000000000#!/usr/bin/env python """An implementation of the Python Concurrency Problem of 99 Bottles of Beer See: http://wiki.python.org/moin/Concurrency/99Bottles """ from __future__ import print_function import sys from circuits.io import File from circuits import Component from circuits.protocols import Line class Tail(Component): """A complex component which combines the ``File`` and ``LP`` (Line Protoco) components together to implement similar functionality to the UNIX ``tail`` command. """ def init(self, filename): """Initialize the Component. NB: This is automatically called after ``__new__`` and ``__init__``. """ (File(filename, "r") + Line()).register(self) class Grep(Component): """A simple component that simply listens for ``line`` events from the ``Tail`` component and performs a regular expression match against each line. If the line matches it is printed to standard output. """ def init(self, pattern): self.pattern = pattern def line(self, line): """Line Event Handler""" line = line.decode("utf-8") if self.pattern in line: print(line) # Configure and "run" the System. app = Tail(sys.argv[1]) Grep(sys.argv[2]).register(app) app.run() circuits-3.1.0/examples/ircd.py0000755000014400001440000002347112402037676017463 0ustar prologicusers00000000000000#!/usr/bin/env python """Example IRC Server .. note:: This is an example only and is feature incomplete. Implements commands:: USER NICK JOIN PART NICK WHO QUIT """ import logging from logging import getLogger from time import time from sys import stderr from itertools import chain from operator import attrgetter from collections import defaultdict from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser from circuits import handler, Component, Debugger from circuits.net.sockets import TCPServer from circuits.net.events import close, write from circuits.protocols.irc import joinprefix, reply, response, IRC, Message from circuits.protocols.irc.replies import ( ERR_NOMOTD, ERR_NOSUCHNICK, ERR_NOSUCHCHANNEL, ERR_UNKNOWNCOMMAND, RPL_WELCOME, RPL_YOURHOST, RPL_WHOREPLY, RPL_ENDOFWHO, RPL_NOTOPIC, RPL_NAMEREPLY, RPL_ENDOFNAMES, ERR_NICKNAMEINUSE, ) __version__ = "0.0.1" def parse_args(): parser = ArgumentParser( description=__doc__, formatter_class=ArgumentDefaultsHelpFormatter ) parser.add_argument( "-v", "--version", action="version", version="%(prog)s {version}".format(version=__version__) ) parser.add_argument( "-b", "--bind", action="store", type=str, default="0.0.0.0:6667", dest="bind", help="Bind to address:[port]" ) parser.add_argument( "--debug", action="store_true", default=False, dest="debug", help="Enable debug mode" ) return parser.parse_args() class Channel(object): def __init__(self, name): self.name = name self.users = [] class User(object): def __init__(self, sock, host, port): self.sock = sock self.host = host self.port = port self.nick = None self.away = False self.channels = [] self.signon = None self.registered = False self.userinfo = UserInfo() @property def prefix(self): userinfo = self.userinfo return joinprefix(self.nick, userinfo.user, userinfo.host) class UserInfo(object): def __init__(self, user=None, host=None, name=None): self.user = user self.host = host self.name = name class Server(Component): channel = "server" network = "Test" host = "localhost" version = "ircd v{0:s}".format(__version__) def init(self, args, logger=None): self.args = args self.logger = logger or getLogger(__name__) self.buffers = defaultdict(bytes) self.nicks = {} self.users = {} self.channels = {} Debugger(events=args.debug, logger=self.logger).register(self) if ":" in args.bind: address, port = args.bind.split(":") port = int(port) else: address, port = args.bind, 6667 bind = (address, port) self.transport = TCPServer( bind, channel=self.channel ).register(self) self.protocol = IRC( channel=self.channel, getBuffer=self.buffers.__getitem__, updateBuffer=self.buffers.__setitem__ ).register(self) def _notify(self, users, message, exclude=None): for user in users: if exclude is not None and user is exclude: continue self.fire(reply(user.sock, message)) def read(self, sock, data): user = self.users[sock] host, port = user.host, user.port self.logger.info( "I: [{0:s}:{1:d}] {2:s}".format(host, port, repr(data)) ) def write(self, sock, data): user = self.users[sock] host, port = user.host, user.port self.logger.info( "O: [{0:s}:{1:d}] {2:s}".format(host, port, repr(data)) ) def ready(self, server, bind): stderr.write( "ircd v{0:s} ready! Listening on: {1:s}\n".format( __version__, "{0:s}:{1:d}".format(*bind) ) ) def connect(self, sock, host, port): self.users[sock] = User(sock, host, port) self.logger.info("C: [{0:s}:{1:d}]".format(host, port)) def disconnect(self, sock): if sock not in self.users: return user = self.users[sock] self.logger.info("D: [{0:s}:{1:d}]".format(user.host, user.port)) nick = user.nick user, host = user.userinfo.user, user.userinfo.host yield self.call( response.create("quit", sock, (nick, user, host), "Leavling") ) del self.users[sock] if nick in self.nicks: del self.nicks[nick] def quit(self, sock, source, reason="Leaving"): user = self.users[sock] channels = [self.channels[channel] for channel in user.channels] for channel in channels: channel.users.remove(user) if not channel.users: del self.channels[channel.name] users = chain(*map(attrgetter("users"), channels)) self.fire(close(sock)) self._notify( users, Message("QUIT", reason, prefix=user.prefix), user ) def nick(self, sock, source, nick): user = self.users[sock] if nick in self.nicks: return self.fire(reply(sock, ERR_NICKNAMEINUSE(nick))) if not user.registered: user.registered = True self.fire(response.create("signon", sock, user)) user.nick = nick self.nicks[nick] = user def user(self, sock, source, nick, user, host, name): _user = self.users[sock] _user.userinfo.user = user _user.userinfo.host = host _user.userinfo.name = name if _user.nick is not None: _user.registered = True self.fire(response.create("signon", sock, source)) def signon(self, sock, source): user = self.users[sock] if user.signon: return user.signon = time() self.fire(reply(sock, RPL_WELCOME(self.network))) self.fire(reply(sock, RPL_YOURHOST(self.host, self.version))) self.fire(reply(sock, ERR_NOMOTD())) # Force users to join #circuits self.fire(response.create("join", sock, source, "#circuits")) def join(self, sock, source, name): user = self.users[sock] if name not in self.channels: channel = self.channels[name] = Channel(name) else: channel = self.channels[name] if user in channel.users: return user.channels.append(name) channel.users.append(user) self._notify( channel.users, Message("JOIN", name, prefix=user.prefix) ) self.fire(reply(sock, RPL_NOTOPIC(name))) self.fire(reply(sock, RPL_NAMEREPLY(channel))) self.fire(reply(sock, RPL_ENDOFNAMES())) def part(self, sock, source, name, reason="Leaving"): user = self.users[sock] channel = self.channels[name] self._notify( channel.users, Message("PART", name, reason, prefix=user.prefix) ) user.channels.remove(name) channel.users.remove(user) if not channel.users: del self.channels[name] def privmsg(self, sock, source, target, message): user = self.users[sock] if target.startswith("#"): if target not in self.channels: return self.fire(reply(sock, ERR_NOSUCHCHANNEL(target))) channel = self.channels[target] self._notify( channel.users, Message("PRIVMSG", target, message, prefix=user.prefix), user ) else: if target not in self.nicks: return self.fire(reply(sock, ERR_NOSUCHNICK(target))) self.fire( reply( self.nicks[target].sock, Message("PRIVMSG", target, message, prefix=user.prefix) ) ) def who(self, sock, source, mask): if mask.startswith("#"): if mask not in self.channels: return self.fire(reply(sock, ERR_NOSUCHCHANNEL(mask))) channel = self.channels[mask] for user in channel.users: self.fire(reply(sock, RPL_WHOREPLY(user, mask, self.host))) self.fire(reply(sock, RPL_ENDOFWHO(mask))) else: if mask not in self.nicks: return self.fire(reply(sock, ERR_NOSUCHNICK(mask))) user = self.nicks[mask] self.fire(reply(sock, RPL_WHOREPLY(user, mask, self.host))) self.fire(reply(sock, RPL_ENDOFWHO(mask))) def ping(self, event, sock, source, server): event.stop() self.fire(reply(sock, Message("PONG", server))) def reply(self, target, message): user = self.users[target] if message.add_nick: message.args.insert(0, user.nick or "") if message.prefix is None: message.prefix = self.host self.fire(write(target, bytes(message))) @property def commands(self): exclude = {"ready", "connect", "disconnect", "read", "write"} return list(set(self.events()) - exclude) @handler() def _on_event(self, event, *args, **kwargs): if event.name.endswith("_done"): return if isinstance(event, response): if event.name not in self.commands: event.stop() self.fire(reply(args[0], ERR_UNKNOWNCOMMAND(event.name))) def main(): args = parse_args() logging.basicConfig( format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", stream=stderr, level=logging.DEBUG if args.debug else logging.INFO ) logger = getLogger(__name__) Server(args, logger=logger).run() if __name__ == "__main__": main() circuits-3.1.0/examples/hello_bridge.py0000755000014400001440000000125312402037676021153 0ustar prologicusers00000000000000#!/usr/bin/python -i """Bridge Example To use this example run it interactively through the Python interactive shell using the -i option as per the shebang line above. i.e: python -i hello_bridge.py At the python prompt: >>> x = m.fire(Hello()) . . . >>> x """ # noqa from os import getpid from circuits import Component, Debugger, Event, Manager class hello(Event): """hello Event""" class App(Component): def hello(self): return "Hello World! ({0:d})".format(getpid()) m = Manager() + Debugger() m.start() App().start(process=True, link=m) circuits-3.1.0/examples/wget.py0000755000014400001440000000151612410511253017467 0ustar prologicusers00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- """wget Example A basic wget-like clone that asynchronously connections a remote web server requesting a given resource. """ from __future__ import print_function import sys from circuits import Component from circuits.web.client import Client, request class WebClient(Component): def init(self, url): self.url = url Client().register(self) def ready(self, *args): self.fire(request("GET", self.url)) def response(self, response): print("{0:d} {1:s}".format(response.status, response.reason)) print( "\n".join( "{0:s}: {1:s}".format(k, v) for k, v in response.headers.items() ) ) print(response.read()) raise SystemExit(0) WebClient(sys.argv[1]).run() circuits-3.1.0/examples/hello.py0000755000014400001440000000117612402037676017643 0ustar prologicusers00000000000000#!/usr/bin/env python """circuits Hello World""" from __future__ import print_function from circuits import Component, Event class hello(Event): """hello Event""" class App(Component): def hello(self): """Hello Event Handler""" print("Hello World!") def started(self, component): """Started Event Handler This is fired internally when your application starts up and can be used to trigger events that only occur once during startup. """ self.fire(hello()) # Fire hello Event raise SystemExit(0) # Terminate the Application App().run() circuits-3.1.0/examples/cat.py0000755000014400001440000000154112402037676017303 0ustar prologicusers00000000000000#!/usr/bin/env python """Clone of the standard UNIX "cat" command. This example shows how you can utilize some of the buitlin I/O components in circuits to write a very simple clone of the standard UNIX "cat" command. """ import sys from circuits.io import stdout, File, write class Cat(File): # This adds the already instantiated stdout instnace stdout = stdout def read(self, data): """Read Event Handler This is fired by the File Component when there is data to be read from the underlying file that was opened. """ self.fire(write(data), stdout) def eof(self): """End Of File Event This is fired by the File Component when the underlying input file has been exhcuasted. """ raise SystemExit(0) # Start and "run" the system. Cat(sys.argv[1]).run() circuits-3.1.0/examples/filter.py0000755000014400001440000000231612402037676020022 0ustar prologicusers00000000000000#!/usr/bin/env python """Simple Event Filtering This example shows how you can filter events by using the ``Event.stop()`` method which prevents other event handlers listening to the event from running. When this example is run you should only get a single line of output "Hello World!". .. code-block:: sh $ ./filter.py Hello World! """ from __future__ import print_function from circuits import Component, Event class hello(Event): """hello Event""" class App(Component): def hello(self, event): """Hello Event Handler""" event.stop() # Stop further event processing print("Hello World!") def started(self, event, component): """Started Event Handler This is fired internally when your application starts up and can be used to trigger events that only occur once during startup. """ event.stop() # Stop further event processing self.fire(hello()) # Fire a Hello event raise SystemExit(0) # Terminate the application # Start and "run" the system. # We're deliberately creating two instances of ``App`` # so we can demonstrate event filtering. app = App() App().register(app) # 2nd App app.run() circuits-3.1.0/examples/node/0000755000014400001440000000000012425013643017074 5ustar prologicusers00000000000000circuits-3.1.0/examples/node/increment/0000755000014400001440000000000012425013643021060 5ustar prologicusers00000000000000circuits-3.1.0/examples/node/increment/server.py0000644000014400001440000000311312410512343022731 0ustar prologicusers00000000000000#!/usr/bin/env python from optparse import OptionParser from circuits.node import Node from circuits import Component, Debugger, handler __version__ = "0.0.1" USAGE = "%prog [options]" VERSION = "%prog v" + __version__ def parse_options(): parser = OptionParser(usage=USAGE, version=VERSION) parser.add_option( "-b", "--bind", action="store", type="string", default="0.0.0.0:8000", dest="bind", help="Bind to address:[port]" ) parser.add_option( "-d", "--debug", action="store_true", default=False, dest="debug", help="Enable debug mode" ) opts, args = parser.parse_args() return opts, args class NodeServer(Component): def init(self, args, opts): if opts.debug: Debugger().register(self) if ":" in opts.bind: address, port = opts.bind.split(":") port = int(port) else: address, port = opts.bind, 8000 bind = (address, port) Node(bind).register(self) def connect(self, sock, host, port): print('Peer connected: %s:%d' % (host, port)) def disconnect(self, sock): print('Peer disconnected: %s' % sock) def ready(self, server, bind): print('Server ready: %s:%d' % bind) @handler('increment') def increment(self, value): print('Execute increment event (value: %d)' % value) return value + 1 def main(): opts, args = parse_options() # Configure and "run" the System. NodeServer(args, opts).run() if __name__ == "__main__": main() circuits-3.1.0/examples/node/increment/client.py0000644000014400001440000000272712410512343022713 0ustar prologicusers00000000000000#!/usr/bin/env python from optparse import OptionParser from circuits.node import Node, remote from circuits import Component, Debugger, handler, Event __version__ = "0.0.1" USAGE = "%prog [options]" VERSION = "%prog v" + __version__ class increment(Event): def __init__(self, value): Event.__init__(self, value) def parse_options(): parser = OptionParser(usage=USAGE, version=VERSION) parser.add_option( "-i", "--ip", action="store", type="string", default="127.0.0.1:8000", dest="bind", help="Bind to address:[port]" ) parser.add_option( "-d", "--debug", action="store_true", default=False, dest="debug", help="Enable debug mode" ) opts, args = parser.parse_args() return opts, args class NodeClient(Component): def init(self, args, opts): if opts.debug: Debugger().register(self) if ":" in opts.bind: address, port = opts.bind.split(":") port = int(port) else: address, port = opts.bind, 8000 node = Node().register(self) node.add('peer_name', address, port) def ready(self, client): i = 0 while True: print(i) i = (yield self.call(remote(increment(i), 'peer_name'))).value def main(): opts, args = parse_options() # Configure and "run" the System. NodeClient(args, opts).run() if __name__ == "__main__": main() circuits-3.1.0/examples/node/nodeserver.py0000755000014400001440000000460512410512343021625 0ustar prologicusers00000000000000#!/usr/bin/env python """Node Server Example This example demonstrates how to create a very simple node server that supports bi-diractional messaging between server and connected clients forming a cluster of nodes. """ from __future__ import print_function from os import getpid from optparse import OptionParser from circuits.node import Node from circuits import Component, Debugger __version__ = "0.0.1" USAGE = "%prog [options]" VERSION = "%prog v" + __version__ def parse_options(): parser = OptionParser(usage=USAGE, version=VERSION) parser.add_option( "-b", "--bind", action="store", type="string", default="0.0.0.0:8000", dest="bind", help="Bind to address:[port]" ) parser.add_option( "-d", "--debug", action="store_true", default=False, dest="debug", help="Enable debug mode" ) opts, args = parser.parse_args() return opts, args class NodeServer(Component): def init(self, args, opts): """Initialize our ``ChatServer`` Component. This uses the convenience ``init`` method which is called after the component is proeprly constructed and initialized and passed the same args and kwargs that were passed during construction. """ self.args = args self.opts = opts self.clients = {} if opts.debug: Debugger().register(self) if ":" in opts.bind: address, port = opts.bind.split(":") port = int(port) else: address, port = opts.bind, 8000 bind = (address, port) Node(bind).register(self) def connect(self, sock, host, port): """Connect Event -- Triggered for new connecting clients""" self.clients[sock] = { "host": sock, "port": port, } def disconnect(self, sock): """Disconnect Event -- Triggered for disconnecting clients""" if sock not in self.clients: return del self.clients[sock] def ready(self, server, bind): print("Ready! Listening on {}:{}".format(*bind)) print("Waiting for remote events...") def hello(self): return "Hello World! ({0:d})".format(getpid()) def main(): opts, args = parse_options() # Configure and "run" the System. NodeServer(args, opts).run() if __name__ == "__main__": main() circuits-3.1.0/examples/node/hello_node.py0000755000014400001440000000261312410512343021556 0ustar prologicusers00000000000000#!/usr/bin/python -i """Node Example To use this example run it interactively through the Python interactive shell using the -i option as per the shebang line above. i.e: python -i hello_node.py host port At the python prompt: >>> x = app.fire(hello()) >>> >>> x >>> y = app.fire(remote(hello(), "test")) . . . >>> y , 'app2' channel=None)> """ # noqa from __future__ import print_function import sys from os import getpid from circuits import Component, Event from circuits.node import Node, remote # noqa class hello(Event): """hello Event""" class App(Component): def ready(self, client): print("Ready!") def connected(self, host, port): print("Connected to {}:{}".format(host, port)) print("Try: x = app.fire(hello())") def hello(self): print("Now try: y = app.fire(remote(hello(), \"test\"))") return "Hello World! ({0:d})".format(getpid()) # Setup app1 with a debugger app = App() node = Node().register(app) host = sys.argv[1] port = int(sys.argv[2]) bind = (host, port) # Add an address of a node to talk to called "test" node.add("test", *bind) # Start app as a thread app.start() circuits-3.1.0/examples/dirwatch.py0000755000014400001440000000145112402037676020341 0ustar prologicusers00000000000000#!/usr/bin/env python """Directory Watch Example This example demonstrates the inotify I/O Component ``Notify`` which can be used for real-time monitoring of file system events. The example simply takes a path to watch as the first Command Line Argument and prints to stdour every file system event it sees. """ import sys from circuits import Component from circuits.io import Notify class FileWatcher(Component): channel = "notify" def opened(self, filename, path, fullpath, isdir): print("File {0:s} opened".format(filename)) def closed(self, filename, path, fullpath, isdir): print("File {0:s} closed".format(filename)) # Configure the system app = Notify() FileWatcher().register(app) # Add the path to watch app.add_path(sys.argv[1]) # Run the system app.run() circuits-3.1.0/examples/index.rst0000644000014400001440000000512012402037676020015 0ustar prologicusers00000000000000Hello ..... .. code:: python #!/usr/bin/env python """circuits Hello World""" from circuits import Component, Event class hello(Event): """hello Event""" class App(Component): def hello(self): """Hello Event Handler""" print("Hello World!") def started(self, component): """Started Event Handler This is fired internally when your application starts up and can be used to trigger events that only occur once during startup. """ self.fire(hello()) # Fire hello Event raise SystemExit(0) # Terminate the Application App().run() Echo Server ........... .. code:: python #!/usr/bin/env python """Simple TCP Echo Server This example shows how you can create a simple TCP Server (an Echo Service) utilizing the builtin Socket Components that the circuits library ships with. """ from circuits import handler, Debugger from circuits.net.sockets import TCPServer class EchoServer(TCPServer): @handler("read") def on_read(self, sock, data): """Read Event Handler This is fired by the underlying Socket Component when there has been new data read from the connected client. ..note :: By simply returning, client/server socket components listen to ValueChagned events (feedback) to determine if a handler returned some data and fires a subsequent Write event with the value returned. """ return data # Start and "run" the system. # Bind to port 0.0.0.0:9000 app = EchoServer(9000) Debugger().register(app) app.run() Hello Web ......... .. code:: python #!/usr/bin/env python from circuits.web import Server, Controller class Root(Controller): def index(self): """Index Request Handler Controller(s) expose implicitly methods as request handlers. Request Handlers can still be customized by using the ``@expose`` decorator. For example exposing as a different path. """ return "Hello World!" app = Server(("0.0.0.0", 9000)) Root().register(app) app.run() More `examples `_... circuits-3.1.0/examples/proxy.py0000755000014400001440000000301212402037676017710 0ustar prologicusers00000000000000#!/usr/bin/env python from uuid import uuid4 as uuid from circuits import Component from circuits.net.events import close, connect, write from circuits.net.sockets import TCPClient, TCPServer class Client(Component): channel = "client" def init(self, sock, host, port, channel=channel): self.sock = sock self.host = host self.port = port TCPClient(channel=self.channel).register(self) def ready(self, *args): self.fire(connect(self.host, self.port)) def disconnect(self, *args): self.fire(close(self.sock), self.parent.channel) def read(self, data): self.fire(write(self.sock, data), self.parent.channel) class Proxy(Component): channel = "server" def init(self, bind, host, port): self.bind = bind self.host = host self.port = port self.clients = dict() TCPServer(self.bind).register(self) def connect(self, sock, host, port): channel = uuid() client = Client( sock, self.host, self.port, channel=channel ).register(self) self.clients[sock] = client def disconnect(self, sock): client = self.clients.get(sock) if client is not None: client.unregister() del self.clients[sock] def read(self, sock, data): client = self.clients[sock] self.fire(write(data), client.channel) app = Proxy(("0.0.0.0", 3333), "127.0.0.1", 22) from circuits import Debugger Debugger().register(app) app.run() circuits-3.1.0/examples/ircbot.py0000755000014400001440000000537612402037676020030 0ustar prologicusers00000000000000#!/usr/bin/env python """IRC Bot Example This example shows how to use several components in circuits as well as one of the builtin networking protocols. This IRC Bot simply connects to the FreeNode IRC Network and joins the #circuits channel. It will also echo anything privately messages to it in response. """ import sys from circuits import Component from circuits.net.sockets import TCPClient, connect from circuits.protocols.irc import IRC, PRIVMSG, USER, NICK, JOIN from circuits.protocols.irc import ERR_NICKNAMEINUSE from circuits.protocols.irc import RPL_ENDOFMOTD, ERR_NOMOTD class Bot(Component): # Define a separate channel so we can create many instances of ``Bot`` channel = "ircbot" def init(self, host="irc.freenode.net", port="6667", channel=channel): self.host = host self.port = int(port) # Add TCPClient and IRC to the system. TCPClient(channel=self.channel).register(self) IRC(channel=self.channel).register(self) def ready(self, component): """Ready Event This event is triggered by the underlying ``TCPClient`` Component when it is ready to start making a new connection. """ self.fire(connect(self.host, self.port)) def connected(self, host, port): """connected Event This event is triggered by the underlying ``TCPClient`` Component when a successfully connection has been made. """ self.fire(NICK("circuits")) self.fire(USER("circuits", "circuits", host, "Test circuits IRC Bot")) def disconnected(self): """disconnected Event This event is triggered by the underlying ``TCPClient`` Component when the connection is lost. """ raise SystemExit(0) def numeric(self, source, numeric, *args): """Numeric Event This event is triggered by the ``IRC`` Protocol Component when we have received an IRC Numberic Event from server we are connected to. """ if numeric == ERR_NICKNAMEINUSE: self.fire(NICK("{0:s}_".format(args[0]))) elif numeric in (RPL_ENDOFMOTD, ERR_NOMOTD): self.fire(JOIN("#circuits")) def privmsg(self, source, target, message): """Message Event This event is triggered by the ``IRC`` Protocol Component for each message we receieve from the server. """ if target.startswith("#"): self.fire(PRIVMSG(target, message)) else: self.fire(PRIVMSG(source[0], message)) # Configure and run the system bot = Bot(*sys.argv[1:]) from circuits import Debugger Debugger().register(bot) # To register a 2nd ``Bot`` instance. Simply use a separate channel. # Bot(*sys.argv[1:], channel="foo").register(bot) bot.run() circuits-3.1.0/examples/ping.py0000755000014400001440000000203412402037676017467 0ustar prologicusers00000000000000#!/usr/bin/env python """Clone of the standard UNIX "ping" command. This example shows how you can utilize some of the buitlin I/O components in circuits to write a very simple clone of the standard UNIX "ping" command. This example merely wraps the standard UNIX "/usr/bin/ping" command in a subprocess using the ``circuits.io.Process`` Component for Asyncchronous I/O communications with the process. """ import sys from circuits import Component, Debugger from circuits.io import stdout, Process, write class Ping(Component): # This adds the already instantiated stdout instnace stdout = stdout def init(self, host): self.p = Process(["/bin/ping", host]).register(self) self.p.start() def read(self, data): """read Event Handler This is fired by the File Component when there is data to be read from the underlying file that was opened. """ self.fire(write(data), stdout) # Start and "run" the system. app = Ping(sys.argv[1]) Debugger().register(app) app.run() circuits-3.1.0/examples/echoserverunix.py0000755000014400001440000000173712402037676021614 0ustar prologicusers00000000000000#!/usr/bin/env python """Simple UNIX Echo Server This example shows how you can create a simple UNIX Server (an Echo Service) utilizing the builtin Socket Components that the circuits library ships with. """ from circuits import handler, Debugger from circuits.net.sockets import UNIXServer class EchoServer(UNIXServer): @handler("read") def on_read(self, sock, data): """Read Event Handler This is fired by the underlying Socket Component when there has been new data read from the connected client. ..note :: By simply returning, client/server socket components listen to ValueChagned events (feedback) to determine if a handler returned some data and fires a subsequent Write event with the value returned. """ return data # Start and "run" the system. # Bind to a UNIX Socket at /tmp/test.sock app = EchoServer("/tmp/test.sock") Debugger().register(app) app.run() circuits-3.1.0/examples/ircclient.py0000755000014400001440000001105512402037676020511 0ustar prologicusers00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- """Example IRC Client A basic IRC client with a very basic console interface. For usage type: ./ircclient.py --help """ from __future__ import print_function import os from socket import gethostname from optparse import OptionParser from circuits import handler, Component from circuits import __version__ as systemVersion from circuits.io import stdin from circuits.net.events import connect from circuits.net.sockets import TCPClient from circuits.protocols.irc import IRC, PRIVMSG, USER, NICK, JOIN USAGE = "%prog [options] host [port]" VERSION = "%prog v" + systemVersion def parse_options(): parser = OptionParser(usage=USAGE, version=VERSION) parser.add_option( "-n", "--nick", action="store", default=os.environ["USER"], dest="nick", help="Nickname to use" ) parser.add_option( "-c", "--channel", action="store", default="#circuits", dest="channel", help="Channel to join" ) opts, args = parser.parse_args() if len(args) < 1: parser.print_help() raise SystemExit(1) return opts, args class Client(Component): # Set a separate channel in case we want multiple ``Client`` instances. channel = "ircclient" def init(self, host, port=6667, opts=None): self.host = host self.port = port self.opts = opts self.hostname = gethostname() self.nick = opts.nick self.ircchannel = opts.channel # Add TCPClient and IRC to the system. TCPClient(channel=self.channel).register(self) IRC(channel=self.channel).register(self) def ready(self, component): """ready Event This event is triggered by the underlying ``TCPClient`` Component when it is ready to start making a new connection. """ self.fire(connect(self.host, self.port)) def connected(self, host, port): """connected Event This event is triggered by the underlying ``TCPClient`` Component when a successfully connection has been made. """ print("Connected to %s:%d" % (host, port)) nick = self.nick hostname = self.hostname name = "%s on %s using circuits/%s" % (nick, hostname, systemVersion) self.fire(NICK(nick)) self.fire(USER(nick, nick, self.hostname, name)) def numeric(self, source, numeric, *args): """numeric Event This event is triggered by the ``IRC`` Protocol Component when we have received an IRC Numberic Event from server we are connected to. """ if numeric == 1: self.fire(JOIN(self.ircchannel)) elif numeric == 433: self.nick = newnick = "%s_" % self.nick self.fire(NICK(newnick)) def join(self, source, channel): """join Event This event is triggered by the ``IRC`` Protocol Component when a user has joined a channel. """ if source[0].lower() == self.nick.lower(): print("Joined %s" % channel) else: print( "--> %s (%s) has joined %s" % ( source[0], "@".join(source[1:]), channel ) ) def notice(self, source, target, message): """notice Event This event is triggered by the ``IRC`` Protocol Component for each notice we receieve from the server. """ print("-%s- %s" % (source[0], message)) def privmsg(self, source, target, message): """privmsg Event This event is triggered by the ``IRC`` Protocol Component for each message we receieve from the server. """ if target[0] == "#": print("<%s> %s" % (source[0], message)) else: print("-%s- %s" % (source[0], message)) @handler("read", channel="stdin") def stdin_read(self, data): """read Event (on channel ``stdin``) This is the event handler for ``read`` events specifically from the ``stdin`` channel. This is triggered each time stdin has data that it has read. """ data = data.strip().decode("utf-8") print("<{0:s}> {1:s}".format(self.nick, data)) self.fire(PRIVMSG(self.ircchannel, data)) def main(): opts, args = parse_options() host = args[0] if len(args) > 1: port = int(args[1]) else: port = 6667 # Configure and run the system. client = Client(host, port, opts=opts) stdin.register(client) client.run() if __name__ == "__main__": main() circuits-3.1.0/examples/echoserver.py0000755000014400001440000000171612402037676020705 0ustar prologicusers00000000000000#!/usr/bin/env python """Simple TCP Echo Server This example shows how you can create a simple TCP Server (an Echo Service) utilizing the builtin Socket Components that the circuits library ships with. """ from circuits import handler, Debugger from circuits.net.sockets import TCPServer class EchoServer(TCPServer): @handler("read") def on_read(self, sock, data): """Read Event Handler This is fired by the underlying Socket Component when there has been new data read from the connected client. ..note :: By simply returning, client/server socket components listen to ValueChagned events (feedback) to determine if a handler returned some data and fires a subsequent Write event with the value returned. """ return data # Start and "run" the system. # Bind to port 0.0.0.0:8000 app = EchoServer(("0.0.0.0", 8000)) Debugger().register(app) app.run() circuits-3.1.0/examples/circ.py0000755000014400001440000002271312402037676017460 0ustar prologicusers00000000000000#!/usr/bin/env python """Circuits IRC Client A circuits based IRC Client demonstrating integration with urwid - a curses application development library and interacting with and processing irc events from an IRC server. NB: This is not a full featured client. For usage type: ./circ.py --help """ import os import sys from select import select from inspect import getargspec from socket import gethostname from optparse import OptionParser from re import compile as compile_regex from circuits import handler, Component from circuits import __version__ as systemVersion from circuits.net.sockets import TCPClient, connect from circuits.protocols.irc import ( request, Message, IRC, RPL_ENDOFMOTD, ERR_NICKNAMEINUSE, ERR_NOMOTD, QUIT, PART, PRIVMSG, USER, NICK, JOIN ) from urwid.raw_display import Screen from urwid import AttrWrap, Edit, Frame, ListBox, Pile, SimpleListWalker, Text USAGE = "%prog [options] host [port]" VERSION = "%prog v" + systemVersion MAIN_TITLE = "cIRC - {0:s}".format(systemVersion) HELP_STRINGS = { "main": "For help, type: /help" } CMD_REGEX = compile_regex( "\/(?P[a-z]+) ?" "(?P.*)(?iu)" ) def back_merge(l, n, t=" "): return l[:-n].extend([t.join(l[-n:])]) def parse_options(): parser = OptionParser(usage=USAGE, version=VERSION) parser.add_option( "-c", "--channel", action="store", default="#circuits", dest="channel", help="Channel to join" ) parser.add_option( "", "--debug", action="store_true", default=False, dest="debug", help="Enable debug mode" ) parser.add_option( "-n", "--nick", action="store", default=os.environ["USER"], dest="nick", help="Nickname to use" ) opts, args = parser.parse_args() if len(args) < 1: parser.print_help() raise SystemExit(1) return opts, args class Client(Component): channel = "client" def init(self, host, port=6667, opts=None): self.host = host self.port = port self.opts = opts self.hostname = gethostname() self.nick = opts.nick self.ircchannel = opts.channel # Add TCPClient and IRC to the system. TCPClient(channel=self.channel).register(self) IRC(channel=self.channel).register(self) self.create_interface() def create_interface(self): self.screen = Screen() self.screen.start() self.screen.register_palette([ ("title", "white", "dark blue", "standout"), ("line", "light gray", "black"), ("help", "white", "dark blue")] ) self.body = ListBox(SimpleListWalker([])) self.lines = self.body.body self.title = Text(MAIN_TITLE) self.header = AttrWrap(self.title, "title") self.help = AttrWrap( Text(HELP_STRINGS["main"]), "help" ) self.input = Edit(caption="%s> " % self.ircchannel) self.footer = Pile([self.help, self.input]) self.top = Frame(self.body, self.header, self.footer) def ready(self, component): """Ready Event This event is triggered by the underlying ``TCPClient`` Component when it is ready to start making a new connection. """ self.fire(connect(self.host, self.port)) def connected(self, host, port): """connected Event This event is triggered by the underlying ``TCPClient`` Component when a successfully connection has been made. """ nick = self.nick hostname = self.hostname name = "%s on %s using circuits/%s" % (nick, hostname, systemVersion) self.fire(NICK(nick)) self.fire(USER(nick, hostname, host, name)) def numeric(self, source, numeric, *args): """Numeric Event This event is triggered by the ``IRC`` Protocol Component when we have received an IRC Numberic Event from server we are connected to. """ if numeric == ERR_NICKNAMEINUSE: self.fire(NICK("{0:s}_".format(args[0]))) elif numeric in (RPL_ENDOFMOTD, ERR_NOMOTD): self.fire(JOIN(self.ircchannel)) @handler("stopped", channel="*") def _on_stopped(self, component): self.screen.stop() @handler("generate_events") def _on_generate_events(self, event): event.reduce_time_left(0) size = self.screen.get_cols_rows() if not select( self.screen.get_input_descriptors(), [], [], 0.1)[0] == []: timeout, keys, raw = self.screen.get_input_nonblocking() for k in keys: if k == "window resize": size = self.screen.get_cols_rows() continue elif k == "enter": self.processCommand(self.input.get_edit_text()) self.input.set_edit_text("") continue self.top.keypress(size, k) self.input.set_edit_text(self.input.get_edit_text() + k) self.update_screen(size) def unknownCommand(self, command): self.lines.append(Text("Unknown command: %s" % command)) def syntaxError(self, command, args, expected): self.lines.append( Text("Syntax error ({0:s}): {1:s} Expected: {2:s}".format( command, args, expected) ) ) def processCommand(self, s): # noqa match = CMD_REGEX.match(s) if match is not None: command = match.groupdict()["command"] if not match.groupdict()["args"] == "": tokens = match.groupdict()["args"].split(" ") else: tokens = [] fn = "cmd" + command.upper() if hasattr(self, fn): f = getattr(self, fn) if callable(f): args, vargs, kwargs, default = getargspec(f) args.remove("self") if len(args) == len(tokens): if len(args) == 0: f() else: f(*tokens) else: if len(tokens) > len(args): if vargs is None: if len(args) > 0: factor = len(tokens) - len(args) + 1 f(*back_merge(tokens, factor)) else: self.syntaxError( command, " ".join(tokens), " ".join( x for x in args + [vargs] if x is not None ) ) else: f(*tokens) elif default is not None and \ len(args) == ( len(tokens) + len(default)): f(*(tokens + list(default))) else: self.syntaxError( command, " ".join(tokens), " ".join( x for x in args + [vargs] if x is not None ) ) else: if self.ircchannel is not None: self.lines.append(Text("<%s> %s" % (self.nick, s))) self.fire(PRIVMSG(self.ircchannel, s)) else: self.lines.append(Text( "No channel joined. Try /join #")) def cmdEXIT(self, message=""): self.fire(QUIT(message)) raise SystemExit(0) def cmdSERVER(self, host, port=6667): self.fire(connect(host, port)) def cmdSSLSERVER(self, host, port=6697): self.fire(connect(host, port, secure=True)) def cmdJOIN(self, channel): if self.ircchannel is not None: self.cmdPART(self.ircchannel, "Joining %s" % channel) self.fire(JOIN(channel)) self.ircchannel = channel def cmdPART(self, channel=None, message="Leaving"): if channel is None: channel = self.ircchannel if channel is not None: self.fire(PART(channel, message)) self.ircchannel = None def cmdQUOTE(self, message): self.fire(request(Message(message))) def cmdQUIT(self, message="Bye"): self.fire(QUIT(message)) def update_screen(self, size): canvas = self.top.render(size, focus=True) self.screen.draw_screen(size, canvas) @handler("notice", "privmsg") def _on_notice_or_privmsg(self, event, source, target, message): nick, ident, host = source if event.name == "notice": self.lines.append(Text("-%s- %s" % (nick, message))) else: self.lines.append(Text("<%s> %s" % (nick, message))) def main(): opts, args = parse_options() host = args[0] if len(args) > 1: port = int(args[1]) else: port = 6667 # Configure and run the system. client = Client(host, port, opts=opts) if opts.debug: from circuits import Debugger Debugger(file=sys.stderr).register(client) client.run() if __name__ == "__main__": main() circuits-3.1.0/examples/dnsserver.py0000755000014400001440000000435312402037676020553 0ustar prologicusers00000000000000#!/usr/bin/env python """DNS Server Example A simple little DNS Server example using `dnslib `_ to handle the DNS protocol parsing and packet construction (*a really nice library btw with great integration into circuits*). Answers ``A 127.0.0.1`` for any query of any type! To run this example:: pip install dnslib ./dnsserver.py Usage (*using dig*):: dig @localhost -p 1053 test.com """ from __future__ import print_function import sys from dnslib import A, RR from dnslib import DNSHeader, DNSRecord, QTYPE from circuits.net.events import write from circuits.net.sockets import UDPServer from circuits import Event, Component, Debugger class query(Event): """query Event""" class DNS(Component): """DNS Protocol Handling""" def read(self, peer, data): self.fire(query(peer, DNSRecord.parse(data))) class Dummy(Component): """A Dummy DNS Handler This just returns an A record response of 127.0.0.1 for any query of any type! """ def query(self, peer, request): id = request.header.id qname = request.q.qname print( "DNS Request for qname({0:s})".format(str(qname)), file=sys.stderr ) reply = DNSRecord( DNSHeader(id=id, qr=1, aa=1, ra=1), q=request.q ) # Add A Record reply.add_answer(RR(qname, QTYPE.A, rdata=A("127.0.0.1"))) # Send To Client self.fire(write(peer, reply.pack())) class DNSServer(Component): """DNS Server This ties everything together in a nice configurable way with protocol, transport and dummy handler as well as optional debugger. """ def init(self, bind=None, verbose=False): self.bind = bind or ("0.0.0.0", 53) if verbose: Debugger().register(self) self.transport = UDPServer(self.bind).register(self) self.protocol = DNS().register(self) self.dummy = Dummy().register(self) def started(self, manager): print("DNS Server Started!", file=sys.stderr) def ready(self, server, bind): print("Ready! Listening on {0:s}:{1:d}".format(*bind), file=sys.stderr) DNSServer(("0.0.0.0", 1053), verbose=True).run() circuits-3.1.0/examples/web/0000755000014400001440000000000012425013643016724 5ustar prologicusers00000000000000circuits-3.1.0/examples/web/httpauth.py0000755000014400001440000000100712402037676021147 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Server, Controller from circuits.web.tools import check_auth, basic_auth class Root(Controller): def index(self): realm = "Test" users = {"admin": "admin"} encrypt = str if check_auth(self.request, self.response, realm, users, encrypt): return "Hello %s" % self.request.login return basic_auth(self.request, self.response, realm, users, encrypt) app = Server(("0.0.0.0", 8000)) Root().register(app) app.run() circuits-3.1.0/examples/web/shadowauth.py0000755000014400001440000000354612402037676021467 0ustar prologicusers00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- """Shadow Auth Demo An example of a Circuits Component that requires users authenticate against /etc/passwd or /etc/shadow before letting them into the web site. """ from os import path from crypt import crypt from socket import gethostname from re import compile as compile_regex from circuits import handler, Component from circuits.web import _httpauth, Server, Controller from circuits.web.errors import HTTPError, Unauthorized def check_auth(user, password): salt_pattern = compile_regex(r"\$.*\$.*\$") passwd = "/etc/shadow" if path.exists("/etc/shadow") else "/etc/passwd" with open(passwd, "r") as f: rows = (line.strip().split(":") for line in f) records = [row for row in rows if row[0] == user] hash = records and records[0][1] salt = salt_pattern.match(hash).group() return crypt(password, salt) == hash class PasswdAuth(Component): channel = "web" def init(self, realm=None): self.realm = realm or gethostname() @handler("request", priority=1.0) def _on_request(self, event, request, response): if "authorization" in request.headers: ah = _httpauth.parseAuthorization(request.headers["authorization"]) if ah is None: event.stop() return HTTPError(request, response, 400) username, password = ah["username"], ah["password"] if check_auth(username, password): request.login = username return response.headers["WWW-Authenticate"] = _httpauth.basicAuth(self.realm) event.stop() return Unauthorized(request, response) class Root(Controller): def index(self): return "Hello, {0:s}".format(self.request.login) app = Server(("0.0.0.0", 8000)) PasswdAuth().register(app) Root().register(app) app.run() circuits-3.1.0/examples/web/baseservers.py0000755000014400001440000000100512402037676021630 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import Component from circuits.web import BaseServer class Root(Component): def request(self, request, response): """Request Handler Using ``BaseServer`` provides no URL dispatching of any kind. Requests are handled by any event handler listening to ``Request`` events and must accept a (request, response) as arguments. """ return "Hello World!" app = BaseServer(("0.0.0.0", 8000)) Root().register(app) app.run() circuits-3.1.0/examples/web/filtering.py0000755000014400001440000000235312402037676021276 0ustar prologicusers00000000000000#!/usr/bin/env python """Filtering A simple example showing how to intercept and potentially filter requests. This example demonstrates how you could intercept the response before it goes out changing the response's content into ALL UPPER CASE! """ from circuits import handler, Component from circuits.web import Server, Controller class Upper(Component): channel = "web" # By default all web related events # go to the "web" channel. @handler("response", priority=1.0) def _on_response(self, response): """Response Handler Here we set the priority slightly higher than the default response handler in circutis.web (0.0) so that can we do something about the response before it finally goes out to the client. Here's we're simply modifying the response body by changing the content into ALL UPPERCASE! """ response.body = "".join(response.body).upper() class Root(Controller): def index(self): """Request Handler Our normal request handler simply returning "Hello World!" as the response. """ return "Hello World!" app = Server(("0.0.0.0", 8000)) Upper().register(app) Root().register(app) app.run() circuits-3.1.0/examples/web/terminal/0000755000014400001440000000000012425013643020537 5ustar prologicusers00000000000000circuits-3.1.0/examples/web/terminal/terminal.py0000755000014400001440000000725612402037676022750 0ustar prologicusers00000000000000#!/usr/bin/env python import os import signal from StringIO import StringIO from subprocess import Popen, PIPE from circuits.io import File from circuits.tools import inspect from circuits.net.events import write from circuits.web.events import stream from circuits import handler, Event, Component from circuits.web import Server, Controller, Logger, Static, Sessions BUFFERING = 1 STREAMING = 2 class kill(Event): """kill Event""" class input(Event): """input Event""" class Command(Component): channel = "cmd" def __init__(self, request, response, command, channel=channel): super(Command, self).__init__(channel=channel) self._request = request self._response = response self._command = command self._state = BUFFERING self._buffer = None self._p = Popen( command, shell=True, stdout=PIPE, stderr=PIPE, close_fds=True, preexec_fn=os.setsid ) self._stdin = None if self._p.stdin is not None: self._stdin = File(self._p.stdin, channel="%s.stdin" % channel) self._stdin.register(self) self._stdout = File(self._p.stdout, channel="%s.stdout" % channel) self.addHandler( handler("eof", channel="%s.stdout" % channel)(self._on_stdout_eof) ) self.addHandler( handler("read", channel="%s.stdout" % channel)( self._on_stdout_read ) ) self._stdout.register(self) @handler("disconnect", channel="web") def disconnect(self, sock): if sock == self._request.sock: self.fire(kill(), self) @handler("response", channel="web", priority=-1) def response(self, response): if response == self._response: self._state = STREAMING def kill(self): os.killpg(self._p.pid, signal.SIGINT) self.unregister() def input(self, data): if self._stdin is not None: self.fire(write(data), self._stdin) @staticmethod def _on_stdout_eof(self): if self._buffer is not None: self._buffer.flush() data = self._buffer.getvalue() self.fire(stream(self._response, data), "web") self.fire(stream(self._response, None), "web") self.fire(kill()) @staticmethod def _on_stdout_read(self, data): if self._state == BUFFERING: if self._buffer is None: self._buffer = StringIO() self._buffer.write(data) elif self._state == STREAMING: if self._buffer is not None: self._buffer.write(data) self._buffer.flush() data = self._buffer.getvalue() self._buffer = None self.fire(stream(self._response, data), "web") else: self.fire(stream(self._response, data), "web") class Root(Controller): def GET(self, *args, **kwargs): self.expires(60 * 60 * 24 * 30) return self.serve_file(os.path.abspath("static/index.xhtml")) def POST(self, input=None): if not input: return "" self.response.headers["Content-Type"] = "text/plain" if input.strip() == "inspect": return inspect(self) self.response.stream = True sid = self.request.sid self += Command(self.request, self.response, input, channel=sid) return self.response from circuits import Debugger app = Server(("0.0.0.0", 8000)) Debugger().register(app) Static("/js", docroot="static/js").register(app) Static("/css", docroot="static/css").register(app) Sessions().register(app) Logger().register(app) Root().register(app) app.run() circuits-3.1.0/examples/web/terminal/static/0000755000014400001440000000000012425013643022026 5ustar prologicusers00000000000000circuits-3.1.0/examples/web/terminal/static/css/0000755000014400001440000000000012425013643022616 5ustar prologicusers00000000000000circuits-3.1.0/examples/web/terminal/static/css/base.css0000644000014400001440000000006212174742426024251 0ustar prologicusers00000000000000body { margin: 0; white-space: pre; } circuits-3.1.0/examples/web/terminal/static/js/0000755000014400001440000000000012425013643022442 5ustar prologicusers00000000000000circuits-3.1.0/examples/web/terminal/static/js/main.js0000644000014400001440000000034412174742426023736 0ustar prologicusers00000000000000var options = { custom_prompt: ">>> ", hello_message: "Welcome! Type \'help\' for, well, help." } function main() { $("#terminal").height($(document).height()); $("#terminal").terminal("/", options); } circuits-3.1.0/examples/web/terminal/static/js/jquery.js0000644000014400001440000035367312174742426024351 0ustar prologicusers00000000000000/*! * jQuery JavaScript Library v1.3.2 * http://jquery.com/ * * Copyright (c) 2009 John Resig * Dual licensed under the MIT and GPL licenses. * http://docs.jquery.com/License * * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) * Revision: 6246 */ (function(){ var // Will speed up references to window, and allows munging its name. window = this, // Will speed up references to undefined, and allows munging its name. undefined, // Map over jQuery in case of overwrite _jQuery = window.jQuery, // Map over the $ in case of overwrite _$ = window.$, jQuery = window.jQuery = window.$ = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' return new jQuery.fn.init( selector, context ); }, // A simple way to check for HTML strings or ID strings // (both of which we optimize for) quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/, // Is it a simple selector isSimple = /^.[^:#\[\.,]*$/; jQuery.fn = jQuery.prototype = { init: function( selector, context ) { // Make sure that a selection was provided selector = selector || document; // Handle $(DOMElement) if ( selector.nodeType ) { this[0] = selector; this.length = 1; this.context = selector; return this; } // Handle HTML strings if ( typeof selector === "string" ) { // Are we dealing with HTML string or an ID? var match = quickExpr.exec( selector ); // Verify a match, and that no context was specified for #id if ( match && (match[1] || !context) ) { // HANDLE: $(html) -> $(array) if ( match[1] ) selector = jQuery.clean( [ match[1] ], context ); // HANDLE: $("#id") else { var elem = document.getElementById( match[3] ); // Handle the case where IE and Opera return items // by name instead of ID if ( elem && elem.id != match[3] ) return jQuery().find( selector ); // Otherwise, we inject the element directly into the jQuery object var ret = jQuery( elem || [] ); ret.context = document; ret.selector = selector; return ret; } // HANDLE: $(expr, [context]) // (which is just equivalent to: $(content).find(expr) } else return jQuery( context ).find( selector ); // HANDLE: $(function) // Shortcut for document ready } else if ( jQuery.isFunction( selector ) ) return jQuery( document ).ready( selector ); // Make sure that old selector state is passed along if ( selector.selector && selector.context ) { this.selector = selector.selector; this.context = selector.context; } return this.setArray(jQuery.isArray( selector ) ? selector : jQuery.makeArray(selector)); }, // Start with an empty selector selector: "", // The current version of jQuery being used jquery: "1.3.2", // The number of elements contained in the matched element set size: function() { return this.length; }, // Get the Nth element in the matched element set OR // Get the whole matched element set as a clean array get: function( num ) { return num === undefined ? // Return a 'clean' array Array.prototype.slice.call( this ) : // Return just the object this[ num ]; }, // Take an array of elements and push it onto the stack // (returning the new matched element set) pushStack: function( elems, name, selector ) { // Build a new jQuery matched element set var ret = jQuery( elems ); // Add the old object onto the stack (as a reference) ret.prevObject = this; ret.context = this.context; if ( name === "find" ) ret.selector = this.selector + (this.selector ? " " : "") + selector; else if ( name ) ret.selector = this.selector + "." + name + "(" + selector + ")"; // Return the newly-formed element set return ret; }, // Force the current matched set of elements to become // the specified array of elements (destroying the stack in the process) // You should use pushStack() in order to do this, but maintain the stack setArray: function( elems ) { // Resetting the length to 0, then using the native Array push // is a super-fast way to populate an object with array-like properties this.length = 0; Array.prototype.push.apply( this, elems ); return this; }, // Execute a callback for every element in the matched set. // (You can seed the arguments with an array of args, but this is // only used internally.) each: function( callback, args ) { return jQuery.each( this, callback, args ); }, // Determine the position of an element within // the matched set of elements index: function( elem ) { // Locate the position of the desired element return jQuery.inArray( // If it receives a jQuery object, the first element is used elem && elem.jquery ? elem[0] : elem , this ); }, attr: function( name, value, type ) { var options = name; // Look for the case where we're accessing a style value if ( typeof name === "string" ) if ( value === undefined ) return this[0] && jQuery[ type || "attr" ]( this[0], name ); else { options = {}; options[ name ] = value; } // Check to see if we're setting style values return this.each(function(i){ // Set all the styles for ( name in options ) jQuery.attr( type ? this.style : this, name, jQuery.prop( this, options[ name ], type, i, name ) ); }); }, css: function( key, value ) { // ignore negative width and height values if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 ) value = undefined; return this.attr( key, value, "curCSS" ); }, text: function( text ) { if ( typeof text !== "object" && text != null ) return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); var ret = ""; jQuery.each( text || this, function(){ jQuery.each( this.childNodes, function(){ if ( this.nodeType != 8 ) ret += this.nodeType != 1 ? this.nodeValue : jQuery.fn.text( [ this ] ); }); }); return ret; }, wrapAll: function( html ) { if ( this[0] ) { // The elements to wrap the target around var wrap = jQuery( html, this[0].ownerDocument ).clone(); if ( this[0].parentNode ) wrap.insertBefore( this[0] ); wrap.map(function(){ var elem = this; while ( elem.firstChild ) elem = elem.firstChild; return elem; }).append(this); } return this; }, wrapInner: function( html ) { return this.each(function(){ jQuery( this ).contents().wrapAll( html ); }); }, wrap: function( html ) { return this.each(function(){ jQuery( this ).wrapAll( html ); }); }, append: function() { return this.domManip(arguments, true, function(elem){ if (this.nodeType == 1) this.appendChild( elem ); }); }, prepend: function() { return this.domManip(arguments, true, function(elem){ if (this.nodeType == 1) this.insertBefore( elem, this.firstChild ); }); }, before: function() { return this.domManip(arguments, false, function(elem){ this.parentNode.insertBefore( elem, this ); }); }, after: function() { return this.domManip(arguments, false, function(elem){ this.parentNode.insertBefore( elem, this.nextSibling ); }); }, end: function() { return this.prevObject || jQuery( [] ); }, // For internal use only. // Behaves like an Array's method, not like a jQuery method. push: [].push, sort: [].sort, splice: [].splice, find: function( selector ) { if ( this.length === 1 ) { var ret = this.pushStack( [], "find", selector ); ret.length = 0; jQuery.find( selector, this[0], ret ); return ret; } else { return this.pushStack( jQuery.unique(jQuery.map(this, function(elem){ return jQuery.find( selector, elem ); })), "find", selector ); } }, clone: function( events ) { // Do the clone var ret = this.map(function(){ if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) { // IE copies events bound via attachEvent when // using cloneNode. Calling detachEvent on the // clone will also remove the events from the orignal // In order to get around this, we use innerHTML. // Unfortunately, this means some modifications to // attributes in IE that are actually only stored // as properties will not be copied (such as the // the name attribute on an input). var html = this.outerHTML; if ( !html ) { var div = this.ownerDocument.createElement("div"); div.appendChild( this.cloneNode(true) ); html = div.innerHTML; } return jQuery.clean([html.replace(/ jQuery\d+="(?:\d+|null)"/g, "").replace(/^\s*/, "")])[0]; } else return this.cloneNode(true); }); // Copy the events from the original to the clone if ( events === true ) { var orig = this.find("*").andSelf(), i = 0; ret.find("*").andSelf().each(function(){ if ( this.nodeName !== orig[i].nodeName ) return; var events = jQuery.data( orig[i], "events" ); for ( var type in events ) { for ( var handler in events[ type ] ) { jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data ); } } i++; }); } // Return the cloned set return ret; }, filter: function( selector ) { return this.pushStack( jQuery.isFunction( selector ) && jQuery.grep(this, function(elem, i){ return selector.call( elem, i ); }) || jQuery.multiFilter( selector, jQuery.grep(this, function(elem){ return elem.nodeType === 1; }) ), "filter", selector ); }, closest: function( selector ) { var pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null, closer = 0; return this.map(function(){ var cur = this; while ( cur && cur.ownerDocument ) { if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) { jQuery.data(cur, "closest", closer); return cur; } cur = cur.parentNode; closer++; } }); }, not: function( selector ) { if ( typeof selector === "string" ) // test special case where just one selector is passed in if ( isSimple.test( selector ) ) return this.pushStack( jQuery.multiFilter( selector, this, true ), "not", selector ); else selector = jQuery.multiFilter( selector, this ); var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType; return this.filter(function() { return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector; }); }, add: function( selector ) { return this.pushStack( jQuery.unique( jQuery.merge( this.get(), typeof selector === "string" ? jQuery( selector ) : jQuery.makeArray( selector ) ))); }, is: function( selector ) { return !!selector && jQuery.multiFilter( selector, this ).length > 0; }, hasClass: function( selector ) { return !!selector && this.is( "." + selector ); }, val: function( value ) { if ( value === undefined ) { var elem = this[0]; if ( elem ) { if( jQuery.nodeName( elem, 'option' ) ) return (elem.attributes.value || {}).specified ? elem.value : elem.text; // We need to handle select boxes special if ( jQuery.nodeName( elem, "select" ) ) { var index = elem.selectedIndex, values = [], options = elem.options, one = elem.type == "select-one"; // Nothing was selected if ( index < 0 ) return null; // Loop through all the selected options for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { var option = options[ i ]; if ( option.selected ) { // Get the specifc value for the option value = jQuery(option).val(); // We don't need an array for one selects if ( one ) return value; // Multi-Selects return an array values.push( value ); } } return values; } // Everything else, we just grab the value return (elem.value || "").replace(/\r/g, ""); } return undefined; } if ( typeof value === "number" ) value += ''; return this.each(function(){ if ( this.nodeType != 1 ) return; if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) ) this.checked = (jQuery.inArray(this.value, value) >= 0 || jQuery.inArray(this.name, value) >= 0); else if ( jQuery.nodeName( this, "select" ) ) { var values = jQuery.makeArray(value); jQuery( "option", this ).each(function(){ this.selected = (jQuery.inArray( this.value, values ) >= 0 || jQuery.inArray( this.text, values ) >= 0); }); if ( !values.length ) this.selectedIndex = -1; } else this.value = value; }); }, html: function( value ) { return value === undefined ? (this[0] ? this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g, "") : null) : this.empty().append( value ); }, replaceWith: function( value ) { return this.after( value ).remove(); }, eq: function( i ) { return this.slice( i, +i + 1 ); }, slice: function() { return this.pushStack( Array.prototype.slice.apply( this, arguments ), "slice", Array.prototype.slice.call(arguments).join(",") ); }, map: function( callback ) { return this.pushStack( jQuery.map(this, function(elem, i){ return callback.call( elem, i, elem ); })); }, andSelf: function() { return this.add( this.prevObject ); }, domManip: function( args, table, callback ) { if ( this[0] ) { var fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(), scripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ), first = fragment.firstChild; if ( first ) for ( var i = 0, l = this.length; i < l; i++ ) callback.call( root(this[i], first), this.length > 1 || i > 0 ? fragment.cloneNode(true) : fragment ); if ( scripts ) jQuery.each( scripts, evalScript ); } return this; function root( elem, cur ) { return table && jQuery.nodeName(elem, "table") && jQuery.nodeName(cur, "tr") ? (elem.getElementsByTagName("tbody")[0] || elem.appendChild(elem.ownerDocument.createElement("tbody"))) : elem; } } }; // Give the init function the jQuery prototype for later instantiation jQuery.fn.init.prototype = jQuery.fn; function evalScript( i, elem ) { if ( elem.src ) jQuery.ajax({ url: elem.src, async: false, dataType: "script" }); else jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); if ( elem.parentNode ) elem.parentNode.removeChild( elem ); } function now(){ return +new Date; } jQuery.extend = jQuery.fn.extend = function() { // copy reference to target object var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; // Handle a deep copy situation if ( typeof target === "boolean" ) { deep = target; target = arguments[1] || {}; // skip the boolean and the target i = 2; } // Handle case when target is a string or something (possible in deep copy) if ( typeof target !== "object" && !jQuery.isFunction(target) ) target = {}; // extend jQuery itself if only one argument is passed if ( length == i ) { target = this; --i; } for ( ; i < length; i++ ) // Only deal with non-null/undefined values if ( (options = arguments[ i ]) != null ) // Extend the base object for ( var name in options ) { var src = target[ name ], copy = options[ name ]; // Prevent never-ending loop if ( target === copy ) continue; // Recurse if we're merging object values if ( deep && copy && typeof copy === "object" && !copy.nodeType ) target[ name ] = jQuery.extend( deep, // Never move original objects, clone them src || ( copy.length != null ? [ ] : { } ) , copy ); // Don't bring in undefined values else if ( copy !== undefined ) target[ name ] = copy; } // Return the modified object return target; }; // exclude the following css properties to add px var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i, // cache defaultView defaultView = document.defaultView || {}, toString = Object.prototype.toString; jQuery.extend({ noConflict: function( deep ) { window.$ = _$; if ( deep ) window.jQuery = _jQuery; return jQuery; }, // See test/unit/core.js for details concerning isFunction. // Since version 1.3, DOM methods and functions like alert // aren't supported. They return false on IE (#2968). isFunction: function( obj ) { return toString.call(obj) === "[object Function]"; }, isArray: function( obj ) { return toString.call(obj) === "[object Array]"; }, // check if an element is in a (or is an) XML document isXMLDoc: function( elem ) { return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || !!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument ); }, // Evalulates a script in a global context globalEval: function( data ) { if ( data && /\S/.test(data) ) { // Inspired by code by Andrea Giammarchi // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html var head = document.getElementsByTagName("head")[0] || document.documentElement, script = document.createElement("script"); script.type = "text/javascript"; if ( jQuery.support.scriptEval ) script.appendChild( document.createTextNode( data ) ); else script.text = data; // Use insertBefore instead of appendChild to circumvent an IE6 bug. // This arises when a base node is used (#2709). head.insertBefore( script, head.firstChild ); head.removeChild( script ); } }, nodeName: function( elem, name ) { return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); }, // args is for internal usage only each: function( object, callback, args ) { var name, i = 0, length = object.length; if ( args ) { if ( length === undefined ) { for ( name in object ) if ( callback.apply( object[ name ], args ) === false ) break; } else for ( ; i < length; ) if ( callback.apply( object[ i++ ], args ) === false ) break; // A special, fast, case for the most common use of each } else { if ( length === undefined ) { for ( name in object ) if ( callback.call( object[ name ], name, object[ name ] ) === false ) break; } else for ( var value = object[0]; i < length && callback.call( value, i, value ) !== false; value = object[++i] ){} } return object; }, prop: function( elem, value, type, i, name ) { // Handle executable functions if ( jQuery.isFunction( value ) ) value = value.call( elem, i ); // Handle passing in a number to a CSS property return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ? value + "px" : value; }, className: { // internal only, use addClass("class") add: function( elem, classNames ) { jQuery.each((classNames || "").split(/\s+/), function(i, className){ if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) ) elem.className += (elem.className ? " " : "") + className; }); }, // internal only, use removeClass("class") remove: function( elem, classNames ) { if (elem.nodeType == 1) elem.className = classNames !== undefined ? jQuery.grep(elem.className.split(/\s+/), function(className){ return !jQuery.className.has( classNames, className ); }).join(" ") : ""; }, // internal only, use hasClass("class") has: function( elem, className ) { return elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1; } }, // A method for quickly swapping in/out CSS properties to get correct calculations swap: function( elem, options, callback ) { var old = {}; // Remember the old values, and insert the new ones for ( var name in options ) { old[ name ] = elem.style[ name ]; elem.style[ name ] = options[ name ]; } callback.call( elem ); // Revert the old values for ( var name in options ) elem.style[ name ] = old[ name ]; }, css: function( elem, name, force, extra ) { if ( name == "width" || name == "height" ) { var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ]; function getWH() { val = name == "width" ? elem.offsetWidth : elem.offsetHeight; if ( extra === "border" ) return; jQuery.each( which, function() { if ( !extra ) val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0; if ( extra === "margin" ) val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0; else val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0; }); } if ( elem.offsetWidth !== 0 ) getWH(); else jQuery.swap( elem, props, getWH ); return Math.max(0, Math.round(val)); } return jQuery.curCSS( elem, name, force ); }, curCSS: function( elem, name, force ) { var ret, style = elem.style; // We need to handle opacity special in IE if ( name == "opacity" && !jQuery.support.opacity ) { ret = jQuery.attr( style, "opacity" ); return ret == "" ? "1" : ret; } // Make sure we're using the right name for getting the float value if ( name.match( /float/i ) ) name = styleFloat; if ( !force && style && style[ name ] ) ret = style[ name ]; else if ( defaultView.getComputedStyle ) { // Only "float" is needed here if ( name.match( /float/i ) ) name = "float"; name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase(); var computedStyle = defaultView.getComputedStyle( elem, null ); if ( computedStyle ) ret = computedStyle.getPropertyValue( name ); // We should always get a number back from opacity if ( name == "opacity" && ret == "" ) ret = "1"; } else if ( elem.currentStyle ) { var camelCase = name.replace(/\-(\w)/g, function(all, letter){ return letter.toUpperCase(); }); ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ]; // From the awesome hack by Dean Edwards // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 // If we're not dealing with a regular pixel number // but a number that has a weird ending, we need to convert it to pixels if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) { // Remember the original values var left = style.left, rsLeft = elem.runtimeStyle.left; // Put in the new values to get a computed value out elem.runtimeStyle.left = elem.currentStyle.left; style.left = ret || 0; ret = style.pixelLeft + "px"; // Revert the changed values style.left = left; elem.runtimeStyle.left = rsLeft; } } return ret; }, clean: function( elems, context, fragment ) { context = context || document; // !context.createElement fails in IE with an error but returns typeof 'object' if ( typeof context.createElement === "undefined" ) context = context.ownerDocument || context[0] && context[0].ownerDocument || document; // If a single string is passed in and it's a single tag // just do a createElement and skip the rest if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) { var match = /^<(\w+)\s*\/?>$/.exec(elems[0]); if ( match ) return [ context.createElement( match[1] ) ]; } var ret = [], scripts = [], div = context.createElement("div"); jQuery.each(elems, function(i, elem){ if ( typeof elem === "number" ) elem += ''; if ( !elem ) return; // Convert html string into DOM nodes if ( typeof elem === "string" ) { // Fix "XHTML"-style tags in all browsers elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){ return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? all : front + ">"; }); // Trim whitespace, otherwise indexOf won't work as expected var tags = elem.replace(/^\s+/, "").substring(0, 10).toLowerCase(); var wrap = // option or optgroup !tags.indexOf("", "" ] || !tags.indexOf("", "" ] || tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && [ 1, "", "
    " ] || !tags.indexOf("", "" ] || // matched above (!tags.indexOf("", "" ] || !tags.indexOf("", "" ] || // IE can't serialize and
    circuits-3.1.0/examples/web/singleclickandrun.py0000755000014400001440000000101412402037676023003 0ustar prologicusers00000000000000#!/usr/bin/env python import webbrowser from circuits.web import Server, Controller HTML = """\ An example application

    This is my sample application

    Put the content here...
    Quit """ class Root(Controller): def index(self): return HTML def exit(self): raise SystemExit(0) app = Server(("0.0.0.0", 8000)) Root().register(app) app.start() webbrowser.open("http://127.0.0.1:8000/") app.join() circuits-3.1.0/examples/web/websocket.html0000644000014400001440000000176012402037676021613 0ustar prologicusers00000000000000 circuits-3.1.0/examples/web/sslserver.py0000755000014400001440000000036412402037676021343 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Server, Controller class Root(Controller): def index(self): return "Hello World!" app = Server(("0.0.0.0", 8443), secure=True, certfile="cert.pem") Root().register(app) app.run() circuits-3.1.0/examples/web/websockets.py0000755000014400001440000000120412402037676021456 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.net.events import write from circuits import Component, Debugger from circuits.web.dispatchers import WebSocketsDispatcher from circuits.web import Controller, Logger, Server, Static class Echo(Component): channel = "wsserver" def read(self, sock, data): self.fireEvent(write(sock, "Received: " + data)) class Root(Controller): def index(self): return "Hello World!" app = Server(("0.0.0.0", 8000)) Debugger().register(app) Static().register(app) Echo().register(app) Root().register(app) Logger().register(app) WebSocketsDispatcher("/websocket").register(app) app.run() circuits-3.1.0/examples/web/server-cert.pem0000644000014400001440000000226412174742426021705 0ustar prologicusers00000000000000-----BEGIN CERTIFICATE----- MIIDSzCCAjMCAxAAGzANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzERMA8G A1UECBMITXkgU3RhdGUxEzARBgNVBAoTCk15IENvbXBhbnkxEDAOBgNVBAsTB015 IFVuaXQxGjAYBgNVBAMTEVNBTVBMRSBTaWduaW5nIENBMB4XDTEwMDkxNDE5NDgy MVoXDTIwMDkxMTE5NDgyMVowcjELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE15IFN0 YXRlMRAwDgYDVQQHEwdNeSBUb3duMRMwEQYDVQQKEwpNeSBDb21wYW55MRAwDgYD VQQLEwdNeSBVbml0MRcwFQYDVQQDEw5NeVNhbXBsZVNlcnZlcjCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBAJsQvrygLjZfFwU4Th8bjyGcOLXg0AQaynaa ZTcXojHAhapmt8AxeeoA4a+bN7tD1BUg25gh5iFs7sdJ26E1FeZsOlp5z4xWuSja Jy3PQ9SZd0hB+foZvAhBms8t5+BV6dS8aYXhYl90lQgB1dx/dapdkRbt3k7Iz1zp Q2/Oxs1Y0UMb8LbVHczXRLzcDJwSi0Syc3oc5vUIVsvaYnLW2lqINzi7rsJ0N7Pk rt4oscyebMrBde780U1sAbSf7rj0JSWzhqtfiJ8NQgMxxaJCRvgtEhXORT/wvEIe pu/32YtbqBwl7YO+S/SD5NN3zrr0iwk/GOzK2Ljd/FDNtA+ibAcCAwEAATANBgkq hkiG9w0BAQUFAAOCAQEAKURnSJwOP7DdZZWjCeFY2rURWW3gdP4zopvKRDIbEj0v egjQjfHMSmKloE4ifu9HbTIecZ3ojUxXNHIJoG0eKTFnLN4rdE7TyLMkdkTCe07Y ydh1uv4GadbCH0wf9JAaRD5EDSsYvBxn0x7s6SNk7fDLOdprkcuAetKG7pvKxckZ HRU7hH4L06Lb50yol1AswrDuB5avBosNx/aoZFtOPv7SXK5wlvAU3T8yNLK0o5M3 ViM9nYCo41BP5JcrDyUFYd4ih8opwMgx/1lL+NgZZLvv9gImHodxS3KOjdDBpjwL TLJxThm42HbbSgn3ZoS01+as0+nQZ5L4s0THkOEIXg== -----END CERTIFICATE----- circuits-3.1.0/examples/web/xmlrpc_demo.py0000755000014400001440000000044112402037676021620 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import Component from circuits.web import Server, Logger, XMLRPC class Test(Component): def foo(self, a, b, c): return a, b, c app = Server(("0.0.0.0", 8000)) Logger().register(app) XMLRPC().register(app) Test().register(app) app.run() circuits-3.1.0/examples/web/cert.pem0000644000014400001440000000420512174742426020376 0ustar prologicusers00000000000000-----BEGIN RSA PRIVATE KEY----- MIICWwIBAAKBgQC9B7hV67bzhLA//STrZUIi0iHD4WFtftOhvj+xiHRNnYw0+r+4 WdQv1YiL+ab03pn/J9R1SQuOGwYDVPQvYX+qEFVRUFP9yvXIQl7PG40HQzfs8lJz hnmI+64HJT//oJ9e7PiyDHLfFH1FuCqSy9RlvzOd4hmydX9J3VxFFzrpJQIDAQAB AoGAHhGxT/Gb+6a6xqMFEXDdEV7twhQDBIDtN0hlJ192aLZMDE1q2+9mImnMO7/t v/v88Sqr0DBbZzKDRVppMXRH80ZtnmMu3/3kUCtA3WAbKxyFpIiXGv/NAUHZe5Gz rua+z3lUvmt6CmwMm2ReB70Q61zxr9q4HjrjYI82dtJ4M40CQQDnGujxdBdbPmiR oc8mcShfmPNP7igQrUkf/DpB0GWnLWdA97mmXLw4jHXpHy9gm3wGc+9uOi0Ex8Ml 1t9xAGFjAkEA0WSGwG45d5dmYV8Oa/9UsY5/F6hAlYAAI1TxRsKcl2YTqaQastac glV1GSUrgGw/8UBvdKKS2REF7cpAkiQV1wJAPtQhCiuOgf7YfOcpowDWgg7Z7xwH Bmml3K08xVG7oRSF4rK2ZRUHErSVBbi1r6T1tedk62mjfY41bp8ZBeadkwJAD7AG YHhhmdIf+3+Rpwm0ILFaWD1kyU6TtBHzGagO71DYfEctMOTfSOx6H24nejGiAMMh Fo3vjo+18ADNIaXOdQJAYdm+dUdyVaW2IDUi7ew0shyKTC4OaEZtXIwwINvrqUsX //6z8mw/S5rXGlfKadiz4uwzcXlSvg727O1efpibvA== -----END RSA PRIVATE KEY----- -----BEGIN CERTIFICATE----- MIIDjTCCAvagAwIBAgIJAN0msyL5El/jMA0GCSqGSIb3DQEBBQUAMIGMMQswCQYD VQQGEwJBVTETMBEGA1UECBMKUXVlZW5zbGFuZDERMA8GA1UEBxMIQnJpc2JhbmUx FTATBgNVBAoTDFNob3J0Q2lyY3VpdDEUMBIGA1UEAxMLSmFtZXMgTWlsbHMxKDAm BgkqhkiG9w0BCQEWGWFkbWluQHNob3J0Y2lyY3VpdC5uZXQuYXUwHhcNMTAwMTEz MDczOTAwWhcNMTEwMTEzMDczOTAwWjCBjDELMAkGA1UEBhMCQVUxEzARBgNVBAgT ClF1ZWVuc2xhbmQxETAPBgNVBAcTCEJyaXNiYW5lMRUwEwYDVQQKEwxTaG9ydENp cmN1aXQxFDASBgNVBAMTC0phbWVzIE1pbGxzMSgwJgYJKoZIhvcNAQkBFhlhZG1p bkBzaG9ydGNpcmN1aXQubmV0LmF1MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB gQC9B7hV67bzhLA//STrZUIi0iHD4WFtftOhvj+xiHRNnYw0+r+4WdQv1YiL+ab0 3pn/J9R1SQuOGwYDVPQvYX+qEFVRUFP9yvXIQl7PG40HQzfs8lJzhnmI+64HJT// oJ9e7PiyDHLfFH1FuCqSy9RlvzOd4hmydX9J3VxFFzrpJQIDAQABo4H0MIHxMB0G A1UdDgQWBBSq+tU5ZDymUuMcgZ83gxk1PTN89zCBwQYDVR0jBIG5MIG2gBSq+tU5 ZDymUuMcgZ83gxk1PTN896GBkqSBjzCBjDELMAkGA1UEBhMCQVUxEzARBgNVBAgT ClF1ZWVuc2xhbmQxETAPBgNVBAcTCEJyaXNiYW5lMRUwEwYDVQQKEwxTaG9ydENp cmN1aXQxFDASBgNVBAMTC0phbWVzIE1pbGxzMSgwJgYJKoZIhvcNAQkBFhlhZG1p bkBzaG9ydGNpcmN1aXQubmV0LmF1ggkA3SazIvkSX+MwDAYDVR0TBAUwAwEB/zAN BgkqhkiG9w0BAQUFAAOBgQAokSGDpbFV2osC8nM8K12vheeDBVDHGxOaENXGVIm8 SWPXsaIUsm6JQx0wm/eouWRPbNJkOBwBrNCls1oMmdxdxG8mBh+kAMWUkdVeuT2H lCo9BRJnhUr4L6poJ7ORzL2oUilGZNwONpHGY0cWzFG8/tOoRJsfKZm23bwXbIxv Hw== -----END CERTIFICATE----- circuits-3.1.0/examples/web/ca-chain.pem0000644000014400001440000001314512174742426021107 0ustar prologicusers00000000000000-----BEGIN CERTIFICATE----- MIIDtzCCAp+gAwIBAgIJAMnzwJQDL4VeMA0GCSqGSIb3DQEBBAUAMHIxEzARBgNV BAoTCk15IENvbXBhbnkxEDAOBgNVBAsTB015IFVuaXQxEDAOBgNVBAcTB015IFRv d24xETAPBgNVBAgTCE15IFN0YXRlMQswCQYDVQQGEwJVUzEXMBUGA1UEAxMOU0FN UExFIFJvb3QgQ0EwHhcNMTAwOTE0MTkwOTEwWhcNMjAwOTExMTkwOTEwWjByMRMw EQYDVQQKEwpNeSBDb21wYW55MRAwDgYDVQQLEwdNeSBVbml0MRAwDgYDVQQHEwdN eSBUb3duMREwDwYDVQQIEwhNeSBTdGF0ZTELMAkGA1UEBhMCVVMxFzAVBgNVBAMT DlNBTVBMRSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA vtsgzTwqnpHKblC8uHi+L+98q1FhB0hFNHfBTri7BFhOjsvJnOk/T8y2f6o8tpfS 8q0fUtzxOQbgsSekLBdgHGDMdVcEgCM5+zNW4Rvm62pXAi2yo4y4b9/Xl1GZQp1O cCG5jz1s9FbeCYlrfRDPbSDCcxbtK0umnk6XmVYT47JXK8pieSlLidveMkhrrhlv fg8KjQjljihZRQBeR4OQ/EbCKbLYTQWpGJCle/JZe/N0nm0iYKgehBjKZreCM9oS fVUpp3ID46VQ3S9J3x1PbHiv75EBRMltY6kCZSllxT9TmifVSO2BWRJB0H5g7hR1 xSY/PegUj09clRIyKVhu6QIDAQABo1AwTjAMBgNVHRMEBTADAQH/MB0GA1UdDgQW BBSXjmOlgHIg/X32Gf6byJzr6ME2QDAfBgNVHSMEGDAWgBSXjmOlgHIg/X32Gf6b yJzr6ME2QDANBgkqhkiG9w0BAQQFAAOCAQEArXdsXg/nUeJk3Usslm1PDeHztiGQ GH2yNdAjRVL0yV1z087Ikn9S0MCrqFsvc0b1LdlpfOWrzn5Kg7JvkhfqYvIHfmv1 bwtSXfKh1/Sbd2mZzdFzRzcZPYQSab0+IiT4/M1+IGwPnMMnBuAcQE7rUQScy2/4 pRYR4tP8VDC3XIxrLfZ5oSZB16IPrBvMIKSMb4Rgi9LRamo20UbSfy3WMjYpSL17 01f/ix/lMm3UwNsia4N9p4EVoOcs+f09mw9f1a19oj8x/jVdseMXs+LGJ7i8VTCo tItbnFb2Oy71LwBpTZibQ3YBe3rMcKkLDgvJCroq3D9BQW12yR7m8d2REg== -----END CERTIFICATE----- Certificate: Data: Version: 3 (0x2) Serial Number: 1048595 (0x100013) Signature Algorithm: md5WithRSAEncryption Issuer: O=My Company, OU=My Unit, L=My Town, ST=My State, C=US, CN=SAMPLE Root CA Validity Not Before: Sep 14 19:19:53 2010 GMT Not After : Sep 11 19:19:53 2020 GMT Subject: C=US, ST=My State, O=My Company, OU=My Unit, CN=SAMPLE Signing CA Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit) Modulus (2048 bit): 00:ce:79:81:1f:b5:38:62:a9:9a:8b:80:26:ec:66: f2:86:13:32:53:12:16:c7:d5:38:c0:e4:ee:1d:11: bd:fc:8c:5b:f5:59:b5:a4:18:77:04:54:4c:57:8c: 85:0a:9e:02:b2:f6:f4:d5:d5:a6:cc:eb:91:d7:17: ec:75:86:30:c9:60:79:40:69:13:7e:65:d5:e5:f8: 89:7e:de:9b:c9:c1:19:74:ae:d9:d7:e1:86:c0:1e: 2e:be:44:73:45:d9:3c:06:1a:4a:4d:f1:86:79:f8: 68:e6:24:d0:7a:5d:92:8e:76:62:63:9a:bd:b7:43: 52:a9:be:ad:3b:43:92:99:43:18:80:09:e9:9e:65: d4:02:1d:97:c4:e4:6a:d9:9f:23:3d:66:2a:64:0c: ad:41:48:ca:16:bf:82:34:32:ec:c2:09:5a:dd:0c: a7:cc:99:a0:a5:5f:6a:e4:42:01:13:a9:e4:f7:ad: e7:f0:78:51:9f:f0:7e:21:94:ff:0b:12:ce:19:a3: 51:a6:a3:53:3c:65:3f:26:3e:31:b4:f3:98:82:4e: 81:a3:14:aa:a4:63:6a:7e:6c:50:dd:86:74:cb:33: f5:67:c7:29:24:d5:e9:86:9d:82:55:e3:d2:c2:4e: 85:3f:0d:03:fc:5a:15:29:cf:94:d8:e6:59:8c:d4: 13:25 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:TRUE X509v3 Subject Key Identifier: FE:24:B7:46:DF:51:66:99:27:F6:68:02:F8:F2:9C:21:13:5E:5D:C1 X509v3 Authority Key Identifier: keyid:97:8E:63:A5:80:72:20:FD:7D:F6:19:FE:9B:C8:9C:EB:E8:C1:36:40 Signature Algorithm: md5WithRSAEncryption 3b:ea:41:d7:02:49:79:41:fb:35:07:85:ae:ae:40:86:63:08: 82:52:4b:03:32:42:21:b9:f9:24:f9:ef:14:9c:e2:0f:99:42: 36:a3:cf:41:79:e7:0b:90:27:4b:85:d7:57:a0:6e:de:05:8c: 6e:27:f5:33:fe:d6:c5:fc:8a:39:2d:b3:4e:41:15:a3:71:1f: a2:75:4f:c7:aa:30:f4:1d:18:4b:44:a3:39:11:d2:05:c7:80: cd:76:59:79:67:25:25:e0:f2:5e:5d:14:3a:ec:71:eb:c8:d3: 12:20:8f:f7:99:96:28:c7:40:7d:0f:66:bb:1f:58:c1:df:7d: d3:31:cb:1e:f5:bc:67:23:f6:74:b7:9c:d9:7f:d9:9a:d2:fe: 71:05:8b:ba:05:51:a5:bc:e3:e8:db:b2:31:72:89:32:80:ff: 61:09:37:7b:57:c8:c6:6a:06:e2:9a:7c:73:22:43:d2:9a:d8: 9e:4b:3c:1c:50:38:40:84:da:b6:0a:a5:93:8c:21:1e:b7:4b: 6b:f7:88:34:c4:16:d5:72:ed:dd:01:5b:b7:a5:9c:a5:46:0c: e9:cd:36:04:30:4f:ab:4b:96:a7:0c:71:8e:89:3c:3e:37:6f: d4:1f:8f:9b:01:16:ca:4e:16:17:93:a4:60:6f:c6:a2:55:a1: f0:4e:1c:e2 -----BEGIN CERTIFICATE----- MIIDojCCAoqgAwIBAgIDEAATMA0GCSqGSIb3DQEBBAUAMHIxEzARBgNVBAoTCk15 IENvbXBhbnkxEDAOBgNVBAsTB015IFVuaXQxEDAOBgNVBAcTB015IFRvd24xETAP BgNVBAgTCE15IFN0YXRlMQswCQYDVQQGEwJVUzEXMBUGA1UEAxMOU0FNUExFIFJv b3QgQ0EwHhcNMTAwOTE0MTkxOTUzWhcNMjAwOTExMTkxOTUzWjBjMQswCQYDVQQG EwJVUzERMA8GA1UECBMITXkgU3RhdGUxEzARBgNVBAoTCk15IENvbXBhbnkxEDAO BgNVBAsTB015IFVuaXQxGjAYBgNVBAMTEVNBTVBMRSBTaWduaW5nIENBMIIBIjAN BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAznmBH7U4Yqmai4Am7GbyhhMyUxIW x9U4wOTuHRG9/Ixb9Vm1pBh3BFRMV4yFCp4Csvb01dWmzOuR1xfsdYYwyWB5QGkT fmXV5fiJft6bycEZdK7Z1+GGwB4uvkRzRdk8BhpKTfGGefho5iTQel2SjnZiY5q9 t0NSqb6tO0OSmUMYgAnpnmXUAh2XxORq2Z8jPWYqZAytQUjKFr+CNDLswgla3Qyn zJmgpV9q5EIBE6nk963n8HhRn/B+IZT/CxLOGaNRpqNTPGU/Jj4xtPOYgk6BoxSq pGNqfmxQ3YZ0yzP1Z8cpJNXphp2CVePSwk6FPw0D/FoVKc+U2OZZjNQTJQIDAQAB o1AwTjAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBT+JLdG31FmmSf2aAL48pwhE15d wTAfBgNVHSMEGDAWgBSXjmOlgHIg/X32Gf6byJzr6ME2QDANBgkqhkiG9w0BAQQF AAOCAQEAO+pB1wJJeUH7NQeFrq5AhmMIglJLAzJCIbn5JPnvFJziD5lCNqPPQXnn C5AnS4XXV6Bu3gWMbif1M/7WxfyKOS2zTkEVo3EfonVPx6ow9B0YS0SjORHSBceA zXZZeWclJeDyXl0UOuxx68jTEiCP95mWKMdAfQ9mux9Ywd990zHLHvW8ZyP2dLec 2X/ZmtL+cQWLugVRpbzj6NuyMXKJMoD/YQk3e1fIxmoG4pp8cyJD0prYnks8HFA4 QITatgqlk4whHrdLa/eINMQW1XLt3QFbt6WcpUYM6c02BDBPq0uWpwxxjok8Pjdv 1B+PmwEWyk4WF5OkYG/GolWh8E4c4g== -----END CERTIFICATE----- circuits-3.1.0/examples/web/tpl/0000755000014400001440000000000012425013643017523 5ustar prologicusers00000000000000circuits-3.1.0/examples/web/tpl/index.html0000644000014400001440000000117212402037676021530 0ustar prologicusers00000000000000<%inherit file="base.html"/>

    Example of using circuits and its Web Components to build a simple web application that handles some basic form data.

    % if message:
    ${message}
    % endif
    First Name:
    Last Name:
    circuits-3.1.0/examples/web/tpl/base.html0000644000014400001440000000176212174742426021342 0ustar prologicusers00000000000000 Basic Templating
    ${self.body()}
    circuits-3.1.0/examples/web/authdemo.py0000755000014400001440000000171012402037676021115 0ustar prologicusers00000000000000#!/usr/bin/env python from hashlib import md5 from circuits import handler, Component from circuits.web import Server, Controller from circuits.web.tools import check_auth, basic_auth class Auth(Component): realm = "Test" users = {"admin": md5("admin").hexdigest()} @handler("request", priority=1.0) def on_request(self, event, request, response): """Filter Requests applying Basic Authentication Filter any incoming requests at a higher priority than the default dispatcher and apply Basic Authentication returning a 403 Forbidden response if Authentication failed. """ if not check_auth(request, response, self.realm, self.users): event.stop() return basic_auth(request, response, self.realm, self.users) class Root(Controller): def index(self): return "Hello World!" app = Server(("0.0.0.0", 8000)) Auth().register(app) Root().register(app) app.run() circuits-3.1.0/examples/web/basecontrollers.py0000755000014400001440000000075512402037676022520 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Server from circuits.web.controllers import expose, BaseController class Root(BaseController): @expose("index") def index(self): """Index Request Handler BaseController(s) do not expose methods as request handlers. Request Handlers _must_ be exposed explicitly using the ``@expose`` decorator. """ return "Hello World!" app = Server(("0.0.0.0", 8000)) Root().register(app) app.run() circuits-3.1.0/examples/web/virtualhosts.py0000755000014400001440000000115312402037676022057 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Server, Controller from circuits.web.dispatchers import VirtualHosts class Root(Controller): def index(self): return "I am the main vhost" class Foo(Controller): channel = "/foo" def index(self): return "I am foo." class Bar(Controller): channel = "/bar" def index(self): return "I am bar." domains = { "foo.localdomain:8000": "foo", "bar.localdomain:8000": "bar", } app = Server(("0.0.0.0", 8000)) VirtualHosts(domains).register(app) Root().register(app) Foo().register(app) Bar().register(app) app.run() circuits-3.1.0/examples/web/server-key.pem0000644000014400001440000000321312174742426021533 0ustar prologicusers00000000000000-----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEAmxC+vKAuNl8XBThOHxuPIZw4teDQBBrKdpplNxeiMcCFqma3 wDF56gDhr5s3u0PUFSDbmCHmIWzux0nboTUV5mw6WnnPjFa5KNonLc9D1Jl3SEH5 +hm8CEGazy3n4FXp1LxpheFiX3SVCAHV3H91ql2RFu3eTsjPXOlDb87GzVjRQxvw ttUdzNdEvNwMnBKLRLJzehzm9QhWy9pictbaWog3OLuuwnQ3s+Su3iixzJ5sysF1 7vzRTWwBtJ/uuPQlJbOGq1+Inw1CAzHFokJG+C0SFc5FP/C8Qh6m7/fZi1uoHCXt g75L9IPk03fOuvSLCT8Y7MrYuN38UM20D6JsBwIDAQABAoIBABUtJj8wSN9YARbP Z6vL4bIfWYdNGltVJU0pLKVnbtkIh7iLqpBusU2JrUiEFApY6v+vqw2No5XxAHLq 3TmYvFLpeNaeR//MYCD6GduhsIu6IZYWnILRPOKLww6EIGR8lyBcUrTb4MlUbH3Z clFYfsMzX/sXpQJxXhA8Mt90B6ZHQm8ky4dNlQnX3oAB04m3fGpmxiEo+3p46cWo Q8hzxX6EfDtifuT9Zo3x+WoHa3momxvi2b0jt2xdwSxNT4/phGw1uBWrcrt9BtS5 l6EGaIFA6PsUrkie9vHelaaKhjF18uwpqjS9Zb7eNHQX9/hGtrNMhtJNBm8GrQex 86V/AlECgYEAyuu+bNifb/xPyYxittV+xqGpyX8QUSu3wo5ULRplvscuygGv29dc N0XnzLQizyz13oHmsP2NEumzXw25unsMJMsa3YFQgXQaJzgHFYiTKIR3DIhIzBL5 CiLwlHPAz8vDSwKi9Mn0zVSySMkLNPhO05MlmRrxZM3nG0rTojG2+jMCgYEAw6Bw t6Mj/gjouQiIyzvvo2cpXvwMDU6JuLjNu5bPVCUOLal++RcFIvGpm9tlqdgBNEjM a9C61wsTCP49crvYM+ep/GrjI5KddQQEoqObvUR5ms4stOtfey3z6B679ygblbsp NCbkQOQCtljmVa1ncqQsUR2JzNDKBv98AUrv2t0CgYBpgkI1Hj1oYOyrg08gecm9 RfmeR28YhX66rn6eJQeaNr7hUhc6W7QbGUH5cgBXcK020Jw+ktdzaghV+DEGAUzD JMgHPGG7rb6bfcpRK/44Jwgvf/05/vN2jcxBpB4w7WXR7sEEPq4GxW8d4Uruc92o rO3zucqh+12bF0ELKIZXeQKBgGGbHIJTkLLASTWBL5ePmRqDb13oDi9Zf1e+RVAS h/Go53Ea/7JSrQppX0HXbtsWXktzAyPMKlz/NoknKQuk89O6A9NglWH7Vjq7PYDU dvExSCdYNXAzfBlerTKkmw5PYawMjRtrSDmkSkInCw22jkXh6gay4T1i81oYgQu4 EwK1AoGBAMqAGXhtLRS8wmgM3riXcoGoq/34SHbnqf7mJ+25cIF5FAeOS7FtLMTA 9Fml25ZkB2vBHBxP6quvEehpPJ64cu5/GXDeatwOS+rhhIA7Q4kpM0uyjLBBlAZv PdtX16f32bb/fj9lLCp3FFBHZ7HMFdX2MjYC8RWaGb0T7PpM+z86 -----END RSA PRIVATE KEY----- circuits-3.1.0/examples/web/jsontool.py0000755000014400001440000000060112402037676021154 0ustar prologicusers00000000000000#!/usr/bin/env python from json import dumps from circuits.web import Server, Controller def json(f): def wrapper(self, *args, **kwargs): return dumps(f(self, *args, **kwargs)) return wrapper class Root(Controller): @json def getrange(self, limit=4): return list(range(int(limit))) app = Server(("0.0.0.0", 8000)) Root().register(app) app.run() circuits-3.1.0/examples/web/crud.py0000755000014400001440000000174512402037676020254 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Server, Controller, Logger class Root(Controller): def GET(self, *args, **kwargs): """GET Request Handler The default Dispatcher in circuits.web also looks for GET, POST, PUT, DELETE and HEAD Request handlers on registered Controller(s). These can be used to implement RESTful resources with CRUD operations. """ return "GET({0:s}, {1:s})".format(repr(args), repr(kwargs)) def POST(self, *args, **kwargs): return "POST({0:s}, {1:s})".format(repr(args), repr(kwargs)) def PUT(self, *args, **kwargs): return "PUT({0:s}, {1:s})".format(repr(args), repr(kwargs)) def DELETE(self, *args, **kwargs): return "DELETE({0:s}, {1:s})".format(repr(args), repr(kwargs)) def HEAD(self, *args, **kwargs): return "HEAD({0:s}, {1:s})".format(repr(args), repr(kwargs)) app = Server(("0.0.0.0", 8000)) Logger().register(app) Root().register(app) app.run() circuits-3.1.0/examples/web/sessions.py0000755000014400001440000000056512402037676021164 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Server, Controller, Sessions class Root(Controller): def index(self, name="World"): if "name" in self.session: name = self.session["name"] self.session["name"] = name return "Hello %s!" % name app = Server(("0.0.0.0", 8000)) Sessions().register(app) Root().register(app) app.run() circuits-3.1.0/examples/web/makotemplates.py0000755000014400001440000000152412402037676022160 0ustar prologicusers00000000000000#!/usr/bin/env python import os import mako from mako.lookup import TemplateLookup from circuits.web import Server, Controller, Static DEFAULTS = {} templates = TemplateLookup( directories=[os.path.join(os.path.dirname(__file__), "tpl")], module_directory="/tmp", output_encoding="utf-8" ) def render(name, **d): try: d.update(DEFAULTS) tpl = templates.get_template(name) return tpl.render(**d) except: return mako.exceptions.html_error_template().render() class Root(Controller): tpl = "index.html" def index(self): return render(self.tpl) def submit(self, firstName, lastName): msg = "Thank you %s %s" % (firstName, lastName) return render(self.tpl, message=msg) app = Server(("0.0.0.0", 8000)) Static().register(app) Root().register(app) app.run() circuits-3.1.0/examples/web/wsgi.py0000755000014400001440000000064712402037676020270 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web.wsgi import Gateway from circuits.web import Controller, Server def foo(environ, start_response): start_response("200 OK", [("Content-Type", "text/plain")]) return ["Foo!"] class Root(Controller): """App Rot""" def index(self): return "Hello World!" app = Server(("0.0.0.0", 10000)) Root().register(app) Gateway({"/foo": foo}).register(app) app.run() circuits-3.1.0/examples/web/static/0000755000014400001440000000000012425013643020213 5ustar prologicusers00000000000000circuits-3.1.0/examples/web/static/css/0000755000014400001440000000000012425013643021003 5ustar prologicusers00000000000000circuits-3.1.0/examples/web/static/css/base.css0000644000014400001440000000354012174742426022442 0ustar prologicusers00000000000000@import url(/css/ext/ext-all.css); @import url(/css/ext/xtheme-aero.css); /* Main Layout */ * { font-family: "Bitstream Vera Sans", "Verdana", sans-serif; font-size: 10pt; margin: 0; padding: 0; } body { background: none rgb(240, 255, 240); min-width: 600px; } h1 { font-size: 18pt; } h2 { font-size: 16pt; } h3 { font-size: 14pt; } h4 { font-size: 12pt; } h5 { font-size: 8pt; } a:link, a:visited { color: #888888; text-decoration: none; border-bottom: 1px dashed; } a:focus, a:hover, a:active { border-bottom: 1px solid; } #window { position: relative; width: 600px; top: 10px; margin: 0 auto; border: 2px solid rgb(100, 155, 100); background: none rgb(255, 255, 255); } #header, #footer { background: none rgb(34, 170, 34); color: rgb(255, 255, 255); } #header { padding: 20px 5px 5px 5px; } #header h1 { text-align: center; } #footer { padding: 5px 10px; } /* Content */ #main { margin: 0 auto; padding: 20px; height: 300px; border: none; background: none rgb(255, 255, 255); } .main h2 { padding: 6px 0; } .main dt { padding: 4px 0: } .main dd { padding: 0 20px; } /* Menu */ #menu { color: rgb(0, 0, 0); background-color: transparent; font-family: arial, helvetica, sans-serif; white-space: nowrap; list-style-type: none; margin-top: 20px; } #menu ul { background: none; } #menu li { display: inline; border: 1px solid rgb(70, 100, 70); background: none rgb(255, 255, 240); } #menu a { padding: 2px; margin: 0px; color: rgb(0, 0, 0); text-decoration: none; border: none; } #menu a:hover { background: rgb(100, 100, 100); } /* validate icons */ #icons { float: right; margin-top: 5px; } #icons img, a:link, a:active, a:focus, a:visited, a:hover { border: none; } circuits-3.1.0/examples/web/static/img/0000755000014400001440000000000012425013643020767 5ustar prologicusers00000000000000circuits-3.1.0/examples/web/static/img/valid-xhtml10.png0000644000014400001440000000455612174742426024112 0ustar prologicusers00000000000000PNG  IHDRX#DPLTE{9ތBBcZZބB{{ޥ{޵RssޭRZs{Rc19Jc猭RZ)J!{{{ZZJs9JZRJsssJk1!c1kkkBs9ƜJccck1c1kcRk99J֜kkƥZε9999R){9{c1s9111J!1{Jk1){)))ZֵBƽZ9))csZΥZkcRcR)cJ)9c1{9Zs1Z{skZB{BJJsBsBBJJ֌kB9skR)!sZ1kB1scRkZRB!ΥRkR)ZcsRcZZZZ9BJZ)ZJRRR!ZJ1kk)BJ{JJJ{ֵccZR֭cBBBޭc91c޵Z{sR1){J9{kR1!{ZJ!֭R)!sZ)ZZB!c֥R{RcckR!sZsZRJ!޽9sJRRJ9kRJJ!R޵cB?tRNSlIt y]Dq>`IDATxڕV_E˻aFڊQY DTrDiPP"|94B":$4G):[F~3w~=fs@Ŵ{"Ք5CYeF$WPVFt'1|NcDc>1Y Õ-{~BI`[%[#I$H%aD|D cO(Loau( )y*aҺ)}*`&lf0wvӿfXmM>Dزn9kZ2ps!acf&Ia:Tqsr=4On XL|Ԥjar|c9G+@yuJ\#1twA#G4H_5A =xb9*t5o{x5I,M*: AN(Y$Im9Hbmi feNBK~nfk~[pcD16)@hi)M?R&ȅHY)m4ZdTt#4~"T%.eVv%_ȥXd^.ЪhlzfRJdds*tYF\8LhX:֝U" _7e[ʆigJ;ܽqg7:AQOzr`7PaaaL፞g4@> n;4h[l``'N !Ҩ ύWO*oхG`f3 ;y_+'H6ssGAoѪh9A q>g1999 ÜN^f3a̙3JZޱX{sf( ffffffffffffffffffffffffffffffffffffffffffffff! Valid CSS!!,X$$%GF+%ĭʓ͟Ǵ՛А ب  <!xEI-&` PP၅&@B`M C H`ҁ 8DTIJ.L@${$po҃ #i9tp*|C1$(0)0pXd`A@:6@H.RIH7i,lxM7kGAZu;p8u )12701<c 6J>jXN逺+Q` 9Ǎ8t/ؿ@"x%K,e9.U"WR8%`5aA=&9ʀ%&@FlYFpw@dWwbenH`Z % pɋ"\"IY `m_W9 B(ESIq Ί9 T #@H'K s7M"C @[E(?!l⒰G, Wlg0Q! ,$     L~@,ny;Aj{r$DAgi[7Bs%e bi^;'Z*P?D$w+T#aDM r<7#P/D6Q<BD $oL{0 +XϠC;circuits-3.1.0/examples/web/static/img/rss.gif0000644000014400001440000000255712174742426022307 0ustar prologicusers00000000000000GIF89a$8HWT YZ V_^PX#cjc e`mmw|?(6"#)=#6I HJPYM$X8M R']8g?DINVVPKP WZ$V&^.T%[3W W([&\&]1bag?is6ɄVׇK݈GہLՆUԌZŃIĉfƑrՌbԓiޔgԕtENUSXmch`rS[yajbv~|`jmt}vyw{}ťϦܹۨ߰始ꪆꭑ봋쿨̸ƄȄǍɕțЅіŧĭʹԤ٢ڭױҼ߹ֹ!,$7[xӥM,a {[ְ`|f˖Yx;B^"iAsfM\y0l*L/_ZG I㓧HeP&2RDOSN)h .tDNݽfPpg/^=vVqfݽweIsh]9bO CFblkTQ :u]eNF)Ad> !+C &MhV^ PM9ܤR=~RB<}yUB9~`H2>$A>S H>cJWhpO@+fEx 0@0 `4<0@뀹0@;circuits-3.1.0/examples/web/jsonserializer.py0000755000014400001440000000120612402037676022352 0ustar prologicusers00000000000000#!/usr/bin/env python from json import dumps from circuits import handler, Component from circuits.web import Server, Controller, Logger class JSONSerializer(Component): channel = "web" @handler("response", priority=1.0) # 1 higher than the default response handler def serialize_response_body(self, response): response.headers["Content-Type"] = "application/json" response.body = dumps(response.body) class Root(Controller): def index(self): return {"message": "Hello World!"} app = Server(("0.0.0.0", 9000)) JSONSerializer().register(app) Logger().register(app) Root().register(app) app.run() circuits-3.1.0/examples/web/fileupload.py0000755000014400001440000000253612402037676021442 0ustar prologicusers00000000000000#!/usr/bin/env python """File Upload A simple example showing how to access an uploaded file. """ from circuits.web import Server, Controller UPLOAD_FORM = """ Upload Form

    Upload Form

    Description:
    """ UPLOADED_FILE = """ Uploaded File

    Uploaded File

    Filename: %s
    Description: %s

    File Contents:

      %s
      
    """ class Root(Controller): def index(self, file=None, desc=""): """Request Handler If we haven't received an uploaded file yet, repond with the UPLOAD_FORM template. Otherwise respond with the UPLOADED_FILE template. The file is accessed through the ``file`` keyword argument and the description via the ``desc`` keyword argument. These also happen to be the same fields used on the form. """ if file is None: return UPLOAD_FORM else: return UPLOADED_FILE % (file.filename, desc, file.value) app = Server(("0.0.0.0", 8000)) Root().register(app) app.run() circuits-3.1.0/examples/web/controllers.py0000755000014400001440000000104212402037676021653 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Server, Controller, Static class Root(Controller): def index(self): """Index Request Handler Controller(s) expose implicitly methods as request handlers. Request Handlers can still be customized by using the ``@expose`` decorator. For example exposing as a different path. """ return "Hello World!" app = Server(("0.0.0.0", 9000)) from circuits import Debugger Debugger().register(app) Static().register(app) Root().register(app) app.run() circuits-3.1.0/examples/web/wsgiapp.py0000755000014400001440000000035512402037676020765 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Controller from circuits.web.wsgi import Application class Root(Controller): def index(self): return "Hello World!" application = Application() Root().register(application) circuits-3.1.0/examples/web/forms.py0000755000014400001440000000315512402037676020442 0ustar prologicusers00000000000000#!/usr/bin/env python """Forms A simple example showing how to deal with data forms. """ from circuits.web import Server, Controller FORM = """ Basic Form Handling

    Basic Form Handling

    Example of using circuits and its Web Components to build a simple web application that handles some basic form data.

    First Name:
    Last Name:
    """ class Root(Controller): def index(self): """Request Handler Our index request handler which simply returns a response containing the contents of our form to display. """ return FORM def save(self, firstName, lastName): """Save Request Handler Our /save request handler (which our form above points to). This handler accepts the same arguments as the fields in the form either as positional arguments or keyword arguments. We will use the date to pretend we've saved the data and tell the user what was saved. """ return "Data Saved. firstName={0:s} lastName={1:s}".format( firstName, lastName ) app = Server(("0.0.0.0", 8000)) Root().register(app) app.run() circuits-3.1.0/examples/web/jsoncontroller.py0000755000014400001440000000036712402037676022373 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Server, JSONController class Root(JSONController): def index(self): return {"success": True, "message": "Hello World!"} app = Server(("0.0.0.0", 8000)) Root().register(app) app.run() circuits-3.1.0/examples/web/wiki.zip0000644000014400001440000004734612402037676020440 0ustar prologicusers00000000000000PK P>wiki/UT ZM kMux ddPK T=> wiki/tpl/UT ?CM kMux ddPKT=>Mwiki/tpl/edit.htmlUT ?CMiMux dd}Sn0 =7_ (apԬfKlCkmGfb!It(I5&H~-~?Yf?>}1 j&c%{Brb/]׍+.>3r3.(E]r"qeJ8ç/%Ȃg1*Ԑ ^u<$[ՠ2475B L \î3pGKc0_)ؽڽ>#ӪMg=8Z8ʦ*j},/uIzSz,;ip%r:N$'a"wt %[ GbP7L  aHx%U(` erj At{Nu 8N?GW>OsUr7e6zxIR0{Mh!rc>᫔˂%d@ymk:,5Yח!p 48Q;kMja*ug#uKΓwRE9U0^Ag_4PIM X,n0k5`x5ڬT.reV<ݛ,؀u4/Lc밿ޠ&KHGPKT=>Hjwiki/tpl/view.htmlUT ?CMiMux dd}R]0| cC(5ս#m%@wGAlNM{lg;Z~]+Rb B~.[KSpOfӷ;Z%#%DlnNݱ;Yi&iXDz)4n*-A~JQ&]ʆ@xEU *Ťj3p/D#vAi iՁNU4VRoD:@6ywԪ SW %1VW >Gdt*( i!Կ!2 ^~WySgҍ)(ZQPwPq-bgBEzh2ƲHxR MXTRC`?O'g n^cהq2㿶`%lm:PMwiki/defaultpages/UT ?CM kMux ddPKT=>Rx.4wiki/defaultpages/SiteMenuUT ?CMiMux ddRv++ HLOM :g&g@R+<PK T=>%>**wiki/defaultpages/RenderedPreUT ?CMiMux dd{{{ == [[Nowiki]]: //**don't format// }}} PKT=>j(wiki/defaultpages/MacrosUT ?CMiMux ddUML./VⲱPKT=> 8$(wiki/defaultpages/BulletListUT ?CMiMux ddRp*I-Q,.RNMKQ,IrK lPKT=>X$D< wiki/defaultpages/CheatSheetUT ?CMiMux ddAo0VOvVui*9xѦ3$4ΖCǟGn\=&Ţ[ ȿ>e 2G٨]mK<iMiQa!$c\Xct=ix+,a wiki/defaultpages/NoLineBreakUT ?CMiMux ddNo linebreak! Use empty row PKT=>`rPH-0wiki/defaultpages/MixedListUT ?CMiMux ddSVͬHMQ,.R.MRH*I-Q,IRV+MJ-*PK T=>Jeo wiki/defaultpages/HorizontalLineUT ?CMiMux ddHorizontal line: ---- PKT=>0 F*7wiki/defaultpages/HeadingsPageUT ?CMiMux ddUI,JOUHMLK粵UMM,U@*&UPK T=>O55wiki/defaultpages/IndentedUT ?CMiMux dd> Indented regions\\ > can include >> block elements PKT=>yfrwiki/defaultpages/SandBoxUT ?CMiMux dd10{> 4)D(NC M7+00v^Mg%aݴfizP]Hjj*D7PKT=>t!/wiki/defaultpages/RenderedTableUT ?CMiMux dd-ILIHMLI-IyI<PKT=>:wiki/defaultpages/FrontPageUT ?CMiMux ddTn0+.+e;BEՅةF8tRj4DZ.wet^?*0%OI3EӴVԮL:TP6xk2Au&E?ʞ;8&=;;#H~KoM|J8lÍ66r]8zk}o\MoS/ k ð.VG}ߗ퐴wzםrSZ[Lr D+T`o!r@Ti$8M, #_1\$+yf)ySs/Yi'P5I*u"?ʀfҦOf9&')'s]LA&]r2Ir]Sdte0$W{i 6Ȇ{v$#lm16  2c.!-mՈUrf Jt8+;,j K++tTHwX9,g]\fuٶMG%Hy䃆L79~f`K&ɲ؟ /~&*wiki/defaultpages/NumberedListUT ?CMiMux ddSV+MJ-JMQ,.RVNMKQ,IRrK lPKT=>^QJ_ wiki/defaultpages/DefinitionListUT ?CMiMux ddVpIM,S,.BPK T=> wiki/macros/UT ?CM kMux ddPKT=>#owiki/macros/include.pyUT ?CMiMux ddݔ=O0w " 0rKj5Csv>TR8:)壭Q#&xJ34%o׀ $8A腔R\-Z0`Qj4FBc3Ih$оr6OVX>;9l߲;>m,1 iV*Kl wiki/macros/html.pyUT ?CMiMux ddVQo0~ϯYHPj^'Z*MӪ>}&aIjv 8 !NC_ᄏs@} k)ޯPHK*"%hʒ g#Pu)qzŚr\Sa3 %[6 %!ExN.w捉CfokFY+N(ƞxbJD-]Ə'%fJ 0+ lЭq,dKAQa ,?jYT1L&R$ d]rjٯٍ\ T<j4t~^^^:xip0N)kAʂ YO#XvD Cb_cu~ i@ˉm9JM59ߋƴ/n{ַHfA{qYAIAJ웪hҺیc?r4ylP_ l|nKW>B83k~;!kwiki/macros/wiki.pyUT ?CMiMux dd-10 EqKC N 2~C CqxaKͼN$L@YWj*Ń%:+~/[~> )Y"L 0f 4T վZ܊7fӚ?PKT=>_swiki/macros/__init__.pyUT ?CMiMux ddTMk0WL vp ṟ-,B]5e$q(lKEf{le,ni.;负dho19cz&YzjW54*~n6yl#K)k$Wn?!3=h B1թУB^Q@㵂v۾"օ)WD \;WɲZjbH~oBh?Ni7AmbRe.>I5Ύk^1b'6Ù痜y`nX"keC Bebt'ZBoxz^O<"LQ7 `#hP ń8YNltSOt@IW\T3qHu6)HO>Xw!&پ+!one|p*3>(6`+,~eVmaؑ}JqPV L;<S*𯼼oBrL T}>Z*aPKT=>qGwiki/macros/utils.pyUT ?CMiMux dd=OA0 BKBOmno;Hj~ĭ. G)tŘEpD4z]>3e)_Վy77P"JV/PK T=> wiki/static/UT ?CM kMux ddPK T=>wiki/static/css/UT ?CM kMux ddPKT=>#7 wiki/static/css/pygments.cssUT ?CMiMux ddVMo0WD[Wh햪T۳ UǎlV`:@ذޛ73SƂAG"E "  `.Pz:3jyp' /BrmZ /%o 2%r G'$-> Mx泘ikgd,r& Ă[oFyœ3uIh,B1Ib *=p#`V2 $YvGxjTR&6Ȩ6f-` \Eڲlw +epw}/˥{1Z_kr>±R"ڃ>xIU̶!=ĒWEn7QC~’|XʃgY,uie K8a[-ei3,-6?r L4LIE85 XSiFK[cd^ HԹÎ"-E6s2XukF; wiki/static/css/screen.cssUT ?CMiMux ddVKo6>'@ #ض9vmkA E-;|I-w[Ԅ s8ϏÙuw{`U1h DbVH.$jB fҨRP'co+Uh:8U,BiYV=蒎*V:z>l7'p.94d&gߥ lwfM BEV}Yy ZYSŗ=cxRNKmK.eQL,BpǚsYKM,tpWL;duDqb14MV z#s3Ͷޒdvi(}rt*jPk-/ 2K1T 7IZYggֻ`e- 92kc$L`EnFb-m: 7#a %K|a5gspR둵>V$F2~@ⱆj@6@p&i6ҕ' hv7裒ƯR~ƿ~K_0R`t: `x#Y^@?ٛv@f єu(½v=YGsFPPqG D==4yr5ɒBHNsux|3M6ޒ>v!hC߱JcGIX'ʷ!MY+=:*mE(N-:yE6CSxi :[U ^T3]C8q&j$ ƙe#k9>ŘG ,^*s7ɴ0c7/(*.gy??*\Ӗ3X2p@!T7ӄ+M4;nmuJTq>\nC/4:A+:!R.Fm<7+ۨd5*B?PKT=>Cwiki/static/favicon.icoUT ?CMiMux dd] T]6 E&BH6"$-[2ɒ]ɾ 2Bcߗ>{.Dϗ{s=\=v2.2PXAD;lVVX[[ccc-vvvɓyboo#8::䄳3 `*T\]])\0E͍EP(pwwXb/^J(Aɒ%)U.]2ePlY(Wޔ/_AB TXJ*QreTBժUVիWFԬYZjQvmԩCݺuWקA(J6lHFhܸ1M4חMҬY3h޼9-Ze˖T*iժҺukڴiCPPm۶]voߞ`:t@HH;vSNtZM.]ڵ+ݺu{уPzI^ݻ7}o߾׏3`8p  B0x` СC6lÇ'<<#F0rHFѣ3f cǎeܸqDDDjL0'2i$&O̔)S:u*ӦMCә1c3gd֬YDGG3{l̙ܹs7og,\EŋYd K.eٲe,_^Oll,+V`ʕZիWf֮]˺uX~=6l`ƍlڴ͛7en݊` ..xmٱc;wd׮]޽={w^9pСC>|#G`49z(ǎ$$$p L&'O$11SNqiΜ9CRRfgr9Ο?υ x".]\rWr5_΍7y&nܹsdDQݻܻw>|ȣGx1)))Ɠ'Ox)Ϟ=#==y/_իW~7o[޽{GFF߿Ç|L>}ϟ˗/|o߾$Ors*(Iogd_NDŠQj$Y$Q)%˙ *UdΨՒd;,*Ag NTh,^a0kBM% ZtzsQ2JVjQԨ?0.f"OFDF&&RM$$OPKT=>6! wiki/static/Image.jpgUT ?CMiMux ddUw8]3Q=z޻%D$:yE JQHDe[h]xs9k_y}~Z7 #&!"HIP22b2R1JJ|ˈ4)P>>B H)))adwvdw {7P@0&@!'A@V>_ |JVe!T'Z%]8"`C޷7՝û" w! :=|7B㳊PR)Qaٍq #`!>eRAw saJUfڗ꫆ETsŢܔǽ%=0AtiӇ(4k|:vx;.0tP&Z x| F? <\Q#%KfBwdC}x}X|9ŞEbqrfU~,spcUoz2>1υ*#Ϸq,zQ\^1DPyΠV~6}]{^(3u?NأY0=Z綜'ݶ8oE_RߗQ}D^!|usmSa / >δ-p %wJJ進wYXYYdic} p=X{j-t^]4,i&3+B͛~oS 62˜KFijefʤ?a rPK5O3ʅHR'KJ\Qȏ^&OqD\I2ͱYI0^IQ/6i;%O(:n[^G=<}8>S)Q8cÿon7ڿtJU-=]Wk "pv Ӣ"(+%nx摧de5z7eJM˭|$kqBl@ ̀S>'ܿ|Toja)0`D T t1IU/*y?fLdznzHBWm^гкk$(jy=V#{2H0%<O?H IƯ屨tlj/u~YQJ*W~)\IOP#e{td(;jt='T)>5U#re5raZn!F\R-&F0S )x[0g53?sڭlJ~Asz OJjٓσgH ZueT>K bE)-Q8@tJ=ClN Ї^0@R>EBG z/]ys4q2sO#ekYOs&]&@I΃L>Զ&ҪM5EOVM鍛al;>Ϝ-B4ΉӑZ&SE?NzP{5jmW!|O7PXJG S`څbj֦˲:0à6 I6.99v()=R/;icN2m J~?ȊNbClJv#ÕֵuHKzczTiQ c m "_Ih߉*8f9^ϖ sgk*(s`LH67Nde@tWsWb* ,CjJsBܺhTc?f;Y7H?x[b |}Ȱ/jKtM#͖me8$R!oa%Zpu!Rfy\<Ry*%XCH)籘U3˳l)0O(gZhjQDZX-Z >)p{ d4UJQ^S`VĆZ2@nDSiT28 vsi$d_T/{0سNyn_Þ{$Ycý U=4-`kUp n~݉uǰ aNuئӧr)2 ) A ~);ޙv kKeL0vQ/KD o>*%▽R멄b6<ťxcHIaڐ-i d*`iQC@JxNt TAe#po!oϓDڅ{yVG3KҖ]DѲ0Ҩ˚ggnV )kδ\ޚL !#x?풗 r{I4[=(o}4rR BgrVS*X4gyJZ\p9榊h6: P a;MS|fu$H0!s TU*Cn #z 3E[~+GVᇑ{p'jM*l\+ķRq5c2fDFΏ0a|pgc8Gv㍂x`XUOjwEan;WYfXu,G{ΈLQ˧zcxJ1&unːŭ32OkC2 oFf66v.\|@ѵu *gt&@. DNiOc{/0Zʓ rh),rW/5c *GӃoFCl3!ÁC~)-,׌Kl/o-?J1ݑ@z׳O{El$+^gl*"b١AF AgA,0VH#+/qTnw6KL55ڀXԒX|gDUX/-DKb-[C]܆I?"__ԁ融PuLE=6R$jF~&a(r_1ّ#]Ͼfn) >d:V])97 ;ՇոR|JLV&ց8Qֵ,g%l2ܐ@ٓ8c4χ~te|!>\t+x܎7<ƈ:5o¤ќ11;$O&#aZmk匧Ւ\,D ,) 0 tkz33إ)(VI ϣPo8BP-.CMH@\{sp.9(i>'u:Ukv\8$Jݳ;~& 䨮pypU-d:UӼ2kĞ >HXe`\ '󐣢uRss|Mg-(Фr9b%e6ٌ5,Yzf|z $zbyY\?ʗ%Y8;}*hZz?ӲRmy& lӵiIWjBIC\,^:?s=!(k"7Lx$n{Q"߀5M0^ 6 {%-.Eawiki/static/images/UT ?CM kMux ddPK T=>(M#%% wiki/static/images/header_bg.pngUT ?CMiMux ddPNG  IHDRl(?gAMA7tEXtSoftwareAdobe ImageReadyqe<PLTE@{,U;q2`@zC=tB~.Y,U?x,VB~A|-W3b4e:pw>v>v1^9m-W8l0\A}B}?y-WA}=uA{w,V.Y5e?y:o3a0]-X1_7i0]9n>w/[YIDATx"Ce%;!3ى;ǶtƖ_L #J1fƧm?o=ׁ {6yUԆKYuT[5w'j ",ə4WW&[oZ4=+Iɦ  IENDB`PKT=>ߐՔ wiki/wiki.pyUT ?CMiMux ddVn8}W, ݗ"YiB%:aW"U{g(ZCmĹ93ḟIs}?KfS+I`t=&]]M.@c ? MCpOl$ΗOL||z-;Ua}\4ұInjPqzI03*t*֎7 xT+ٖF+C0 պ#Q儨Hj*IRz' }>N )2`t O٠X{AG5uOăxdX@Jy>msz..@D|64OO'D 2BzC][-~){}HSX0([@Zty(| <`KiO Z>act/8fWUUf_ZMq5\PK P>Awiki/UTZMux ddPK T=> A?wiki/tpl/UT?CMux ddPKT=>Mwiki/tpl/edit.htmlUT?CMux ddPKT=>Hjwiki/tpl/view.htmlUT?CMux ddPK T=>AWwiki/defaultpages/UT?CMux ddPKT=>Rx.4wiki/defaultpages/SiteMenuUT?CMux ddPK T=>%>**%wiki/defaultpages/RenderedPreUT?CMux ddPKT=>j(wiki/defaultpages/MacrosUT?CMux ddPKT=> 8$( wiki/defaultpages/BulletListUT?CMux ddPKT=>X$D< wiki/defaultpages/CheatSheetUT?CMux ddPK T=>! wiki/defaultpages/NoLineBreakUT?CMux ddPKT=>`rPH-0 wiki/defaultpages/MixedListUT?CMux ddPK T=>Jeo  wiki/defaultpages/HorizontalLineUT?CMux ddPKT=>0 F*7 wiki/defaultpages/HeadingsPageUT?CMux ddPK T=>O55 wiki/defaultpages/IndentedUT?CMux ddPKT=>yfr wiki/defaultpages/SandBoxUT?CMux ddPKT=>t!/K wiki/defaultpages/RenderedTableUT?CMux ddPKT=>: wiki/defaultpages/FrontPageUT?CMux ddPKT=>~&*wiki/defaultpages/NumberedListUT?CMux ddPKT=>^QJ_ Swiki/defaultpages/DefinitionListUT?CMux ddPK T=> Awiki/macros/UT?CMux ddPKT=>#o wiki/macros/include.pyUT?CMux ddPKT=>Kl wiki/macros/html.pyUT?CMux ddPKT=>;!kbwiki/macros/wiki.pyUT?CMux ddPKT=>_s4wiki/macros/__init__.pyUT?CMux ddPKT=>qGwiki/macros/utils.pyUT?CMux ddPK T=> Awiki/static/UT?CMux ddPK T=>AUwiki/static/css/UT?CMux ddPKT=>#7 wiki/static/css/pygments.cssUT?CMux ddPKT=>; , wiki/static/css/screen.cssUT?CMux ddPKT=>CE$wiki/static/favicon.icoUT?CMux ddPKT=>6! $)wiki/static/Image.jpgUT?CMux ddPK T=>A|;wiki/static/images/UT?CMux ddPK T=>(M#%% ;wiki/static/images/header_bg.pngUT?CMux ddPKT=>ߐՔ H>wiki/wiki.pyUT?CMux ddPK## "Bcircuits-3.1.0/examples/web/jsonrpc.py0000755000014400001440000000044312402037676020767 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import Component from circuits.web import Server, Logger, JSONRPC class Test(Component): def foo(self, a, b, c): return a, b, c app = Server(("0.0.0.0", 8000)) Logger().register(app) JSONRPC().register(app) Test().register(app) app.run() circuits-3.1.0/examples/web/wiki/0000755000014400001440000000000012425013643017667 5ustar prologicusers00000000000000circuits-3.1.0/examples/web/wiki/macros/0000755000014400001440000000000012425013643021153 5ustar prologicusers00000000000000circuits-3.1.0/examples/web/wiki/macros/__init__.py0000644000014400001440000000274412402037676023302 0ustar prologicusers00000000000000"""Macro Macro support and dispatcher """ import os from inspect import getmembers, getmodule, isfunction from creoleparser import parse_args class Macro(object): def __init__(self, name, arg_string, body, isblock): super(Macro, self).__init__() self.name = name self.arg_string = arg_string self.body = body self.isblock = isblock def dispatcher(name, arg_string, body, isblock, environ): if name in environ["macros"]: macro = Macro(name, arg_string, body, isblock) args, kwargs = parse_args(arg_string) try: return environ["macros"][name](macro, environ, *args, **kwargs) except Exception, e: return "ERROR: Error while executing macro %r (%s)" % (name, e) else: return "Macro not found!" def loadMacros(): path = os.path.abspath(os.path.dirname(__file__)) p = lambda x: os.path.splitext(x)[1] == ".py" modules = [x for x in os.listdir(path) if p(x) and not x == "__init__.py"] macros = {} for module in modules: name, _ = os.path.splitext(module) moduleName = "%s.%s" % (__package__, name) m = __import__(moduleName, globals(), locals(), __package__) p = lambda x: isfunction(x) and getmodule(x) is m for name, function in getmembers(m, p): name = name.replace("_", "-") try: macros[name] = function except Exception: continue return macros circuits-3.1.0/examples/web/wiki/macros/html.py0000644000014400001440000000521012402037676022476 0ustar prologicusers00000000000000"""HTML macros Macros for generating snippets of HTML. """ import genshi import pygments import pygments.util import pygments.lexers import pygments.formatters from genshi import builder from genshi.filters import HTMLSanitizer sanitizer = HTMLSanitizer() def pre(macro, environ, *args, **kwargs): """Return the raw text of body, rendered in a
     block.
    
        **Arguments:** //None//
    
        **Example:**
        {{{
        <
    >
        def hello():
            print "Hello World!"
    
        hello()
        <
    > }}} """ if macro.body is None: return None return builder.tag.pre(macro.body) def code(macro, environ, *args, **kwargs): """Render syntax highlighted code""" if not macro.body: return None lang = kwargs.get("lang", None) if lang is not None: if not macro.isblock: return None try: lexer = pygments.lexers.get_lexer_by_name(lang, stripall=True) except pygments.util.ClassNotFound: return None else: lexer = None if lexer: text = pygments.highlight( macro.body, lexer, pygments.formatters.HtmlFormatter() ) output = genshi.core.Markup(text) elif macro.isblock: output = genshi.builder.tag.pre(macro.body) else: output = genshi.builder.tag.code( macro.body, style="white-space:pre-wrap", class_="highlight" ) return output def source(macro, environ, *args, **kwargs): """Return the parsed text of body, rendered in a
     block."""
    
        if macro.body is None:
            return None
    
        return builder.tag.pre(environ["parser"].render(
            macro.body, environ=environ).decode("utf-8"))
    
    
    def div(macro, environ, cls=None, float=None, id=None, style=None,
            *args, **kwargs):
    
        if macro.body is None:
            return None
    
        if float and float in ("left", "right"):
            style = "float: %s; %s" % (float, style)
    
        if style:
            style = ";".join(sanitizer.sanitize_css(style))
    
        if macro.isblock:
            context = "block"
        else:
            context = "inline"
    
        contents = environ["parser"].generate(
            macro.body, environ=environ, context=context
        )
    
        return builder.tag.div(contents, id=id, class_=cls, style=style)
    
    
    def span(macro, environ, class_=None, id=None, style=None, *args, **kwargs):
        """..."""
    
        if macro.body is None:
            return None
    
        if style:
            style = ';'.join(sanitizer.sanitize_css(style))
    
        contents = environ['parser'].generate(
            macro.body, environ=environ, context='inline'
        )
    
        return builder.tag.span(contents, id=id, class_=class_, style=style)
    circuits-3.1.0/examples/web/wiki/macros/include.py0000644000014400001440000000240512402037676023160 0ustar  prologicusers00000000000000"""Include macros
    
    Macros for inclusion of other wiki pages
    """
    
    from genshi import builder
    
    
    def include(macro, environ, pagename=None, *args, **kwargs):
        """Return the parsed content of the page identified by arg_string"""
    
        if pagename is None:
            return None
    
        db = environ["db"]
        page = db.get(pagename, None)
    
        if page is not None:
            environ["page.name"] = pagename
    
            return environ["parser"].generate(page, environ=environ)
    
    
    def include_raw(macro, environ, pagename=None, *args, **kwargs):
        """Return the raw text of the page identified by arg_string, rendered
        in a 
     block.
        """
    
        if pagename is None:
            return None
    
        db = environ["db"]
        page = db.get(pagename, None)
    
        if page is not None:
            return builder.tag.pre(page, class_="plain")
    
    
    def include_source(macro, environ, pagename=None, *args, **kwargs):
        """Return the parsed text of the page identified by arg_string, rendered
        in a 
     block.
        """
    
        if pagename is None:
            return None
    
        db = environ["db"]
        page = db.get(pagename, None)
    
        if page is not None:
            environ["page.name"] = pagename
    
            return builder.tag.pre(environ["parser"].render(
                page,  environ=environ).decode("utf-8")
            )
    circuits-3.1.0/examples/web/wiki/macros/wiki.py0000644000014400001440000000027212402037676022500 0ustar  prologicusers00000000000000"""Wiki macros"""
    
    from genshi import builder
    
    
    def title(macro, environ, *args, **kwargs):
        """Return the title of the current page."""
    
        return builder.tag(environ["page.name"])
    circuits-3.1.0/examples/web/wiki/macros/utils.py0000644000014400001440000000051012402037676022670 0ustar  prologicusers00000000000000"""Utils macros
    
    Utility macros
    """
    
    from inspect import getdoc
    
    
    def macros(macro, environ, *args, **kwargs):
        """Return a list of available macros"""
    
        macros = environ["macros"].items()
        s = "\n".join(["== %s ==\n%s\n" % (k, getdoc(v)) for k, v in macros])
    
        return environ["parser"].generate(s, environ=environ)
    circuits-3.1.0/examples/web/wiki/tpl/0000755000014400001440000000000012425013643020466 5ustar  prologicusers00000000000000circuits-3.1.0/examples/web/wiki/tpl/edit.html0000644000014400001440000000222712402037676022313 0ustar  prologicusers00000000000000
    
    	
    		Editing %(title)s
    		
    		
    		
    		
    		
    	
    	
    		
    circuits-3.1.0/examples/web/wiki/tpl/view.html0000644000014400001440000000170112402037676022334 0ustar prologicusers00000000000000 %(title)s
    %(text)s
    Edit
    circuits-3.1.0/examples/web/wiki/defaultpages/0000755000014400001440000000000012425013643022333 5ustar prologicusers00000000000000circuits-3.1.0/examples/web/wiki/defaultpages/NoLineBreak0000644000014400001440000000003512174742426024416 0ustar prologicusers00000000000000No linebreak! Use empty row circuits-3.1.0/examples/web/wiki/defaultpages/CheatSheet0000644000014400001440000000447412174742426024315 0ustar prologicusers00000000000000= Cheat Sheet = |= Wiki |= Rendered |= Source |##{{{//italics//}}}## |//italics// |<>//italics//<> |##{{{**bold**}}}## |**bold** |<>**bold**<> |##{{{^^super^^script}}}## |^^super^^script |<>^^super^^script<> |##{{{,,sub,,script}}}## |,,sub,,script |<>,,sub,,script<> |##{{{##monospace##}}}## |##monospace## |<>##monospace##<> |<> |<> |<> |<> |<> |<> |<> |<> |<> |<> |<> |<> |##Link to ~[[WikiPage]]## |Link to [[WikiPage]] |<
    >

    Link to WikiPage

    <
    > |##{{{[[http://google.com|Google]]}}}## |[[http://google.com|Google]]|<>[[http://google.com|Google]]<> |<> |<> |<> |<> |<> |<> |##Force~\\linebreak## |Force\\linebreak |<>Force\\linebreak<> |<> |<> |<> |##{{{{{Image.jpg|Cod}}}}}## |{{Image.jpg|Cod}} |<>{{Image.jpg|Cod}}<> |<> |<> |<> |<> |<> |<> |<> |<> |<> |{{{use a tilde to ~**escape}}} |use a tilde to ~**escape |<>use a tilde to ~**escape<> |##{{{<>a //simple// macro<>}}}##|<>a //simple// macro<>|<
    >

    a simple macro

    <
    > circuits-3.1.0/examples/web/wiki/defaultpages/Indented0000644000014400001440000000006512174742426024022 0ustar prologicusers00000000000000> Indented regions\\ > can include >> block elements circuits-3.1.0/examples/web/wiki/defaultpages/SiteMenu0000644000014400001440000000006412174742426024020 0ustar prologicusers00000000000000* [[FrontPage|Home]] * [[CheatSheet]] * [[SandBox]] circuits-3.1.0/examples/web/wiki/defaultpages/FrontPage0000644000014400001440000000271412402037676024156 0ustar prologicusers00000000000000= Front Page = Welcome to the simple [[http://circuitsweb.com/|circuits.web]] wiki engine in < 100 lines of code!!!! This little demo wiki makes use of the following software/library: * [[http://www.python.org|Python]] D'uh :) * [[http://circuitsweb.com/|circuits.web]] -- web application framework * [[http://code.google.com/p/creoleparser/|creoleparser]] -- wiki parser * [[http://sqlite.org|SQLite]] -- wiki database * [[http://genshi.edgewall.org/|genshi]] -- used by creoleparser and macros * [[http://pygments.org/|pygments]] -- used by code macro for highlighting This is the simplest, most concise demonstration of quite a number of the features of the [[http://circuitsweb.com/|circuits.web]] web framework as well as the smallest (//without resorting to obfuscation//). This wiki engine also fully supports macros and a list of available macros can be found here: [[Macros]] For help with wiki syntax see the [[CheatSheet]] page. THe entire source code to this wiki can be found on the [[http://circuitsframework.com/|circuits]] project home page here: http://bitbucket.org/circuits/circuits/src/tip/examples/web/wiki/ Try the [[SandBox]] :) **NB**: This circuits.web wiki demo is not a complete wiki engine and lacks some rather basic wiki features such as history and recent changes. For a more complete wiki engine please see the [[http://sahriswiki.org/|sahriswiki]] project. Enjoy! --[[http://prologic.shortcircuit.net.au|JamesMills]] circuits-3.1.0/examples/web/wiki/defaultpages/HeadingsPage0000644000014400001440000000006712174742426024611 0ustar prologicusers00000000000000== Large heading === Medium Heading ==== Small heading circuits-3.1.0/examples/web/wiki/defaultpages/BulletList0000644000014400001440000000005012174742426024345 0ustar prologicusers00000000000000* Bullet list * Second item ** Sub item circuits-3.1.0/examples/web/wiki/defaultpages/RenderedPre0000644000014400001440000000005212174742426024463 0ustar prologicusers00000000000000{{{ == [[Nowiki]]: //**don't format// }}} circuits-3.1.0/examples/web/wiki/defaultpages/SandBox0000644000014400001440000000016212174742426023624 0ustar prologicusers00000000000000= The Sand Box = This is just a page to practice and learn [[WikiFormatting]]. Go ahead, edit it freely. ---- circuits-3.1.0/examples/web/wiki/defaultpages/HorizontalLine0000644000014400001440000000002612174742426025226 0ustar prologicusers00000000000000Horizontal line: ---- circuits-3.1.0/examples/web/wiki/defaultpages/MixedList0000644000014400001440000000006012174742426024165 0ustar prologicusers00000000000000# Mixed list ** Sub bullet item # Numbered item circuits-3.1.0/examples/web/wiki/defaultpages/DefinitionList0000644000014400001440000000003712174742426025213 0ustar prologicusers00000000000000; Definition List : Definition circuits-3.1.0/examples/web/wiki/defaultpages/Macros0000644000014400001440000000002712174742426023512 0ustar prologicusers00000000000000= Macros = <> circuits-3.1.0/examples/web/wiki/defaultpages/NumberedList0000644000014400001440000000005212174742426024661 0ustar prologicusers00000000000000# Numbered list # Second item ## Sub item circuits-3.1.0/examples/web/wiki/defaultpages/RenderedTable0000644000014400001440000000005712174742426024771 0ustar prologicusers00000000000000|=|=table|=header| |a|table|row| |b|table|row| circuits-3.1.0/examples/web/wiki/wiki.py0000755000014400001440000000455112402037676021223 0ustar prologicusers00000000000000#!/usr/bin/env python import os import sqlite3 from creoleparser import create_dialect, creole11_base, Parser import circuits from circuits.web import Server, Controller, Logger, Static import macros text2html = Parser( create_dialect(creole11_base, macro_func=macros.dispatcher), method="xhtml" ) class Wiki(object): def __init__(self, database): super(Wiki, self).__init__() create = not os.path.exists(database) self._cx = sqlite3.connect(database) self._cu = self._cx.cursor() if create: self._cu.execute("CREATE TABLE pages (name, text)") for defaultpage in os.listdir("defaultpages"): filename = os.path.join("defaultpages", defaultpage) self.save(defaultpage, open(filename, "r").read()) def save(self, name, text): self._cu.execute("SELECT COUNT() FROM pages WHERE name=?", (name,)) row = self._cu.fetchone() if row[0]: self._cu.execute( "UPDATE pages SET text=? WHERE name=?", (text, name,) ) else: self._cu.execute( "INSERT INTO pages (name, text) VALUES (?, ?)", (name, text,) ) self._cx.commit() def get(self, name, default=None): self._cu.execute("SELECT text FROM pages WHERE name=?", (name,)) row = self._cu.fetchone() return row[0] if row else default class Root(Controller): db = Wiki("wiki.db") environ = {"db": db, "macros": macros.loadMacros()} def GET(self, name="FrontPage", action="view"): environ = self.environ.copy() environ["page.name"] = name environ["parser"] = text2html d = {} d["title"] = name d["version"] = circuits.__version__ d["menu"] = text2html(self.db.get("SiteMenu", ""), environ=environ) text = self.db.get(name, "") s = open("tpl/%s.html" % action, "r").read() if action == "view": d["text"] = text2html(text, environ=environ) else: d["text"] = text return s % d def POST(self, name="FrontPage", **form): self.db.save(name, form.get("text", "")) return self.redirect(name) app = Server(("0.0.0.0", 9000)) Static(docroot="static").register(app) Root().register(app) Logger().register(app) app.run() circuits-3.1.0/examples/web/wiki/static/0000755000014400001440000000000012425013643021156 5ustar prologicusers00000000000000circuits-3.1.0/examples/web/wiki/static/css/0000755000014400001440000000000012425013643021746 5ustar prologicusers00000000000000circuits-3.1.0/examples/web/wiki/static/css/screen.css0000644000014400001440000000602612174742426023754 0ustar prologicusers00000000000000* { margin : 0; padding : 0; } a { color : #437fda; text-decoration : none; } a:visited { color : #437fda; text-decoration : none; } a:hover { color : #ba8f43; } h2 { color : #343434; font : italic 200% sans-serif; } h3 { color : #343434; font : italic 160% sans-serif; } h4 { color : #343434; font : bold italic 110% sans-serif; padding : 1em 1em 0 1em; } html { color : #565656; font : 70%/170% sans-serif; text-align : justify; } img { margin : 1em 1em 0 1em; } img.left { float : left; margin : 1em 1em 0 0; } img.right { float : right; margin : 1em 0 0 1em; } blockquote { font-style : italic; margin : 1em 1em 0 1em; padding : 0 0 1em 0; } blockquote span { font-size : 200%; line-height : 1%; margin : 0 0.15em; position : relative; top : 0.25em; } form button { background : #ffffff; border : 1px solid #cfcfcf; padding : 0.25em; margin : 0 0 0 0.75em; } form input { border : none; width : 100%; } form textarea { border : none; width : 100%; height : 100%; } form p.button { text-align : right; } form p.input, form p.text { background : #ffffff; border : 1px solid #cfcfcf; padding : 0.25em; margin : 0.25em 1em 0 1em; } p { padding : 1em 1em 0 1em; } ul, ol { padding : 1em 1em 0 3em; } code, pre { font-size: 90%; white-space: pre-wrap; line-height: 1.2; color: #666; font-family: Droid Mono, DejaVu Mono, Lucida Console, Lucida Typewriter, monospace; background: #f7f7f7; border: 1px solid #d7d7d7; margin: 1em 1.75em; padding: .25em; overflow: auto; } img.smiley { vertical-align: baseline; } .wiki table { border: 2px solid #ccc; border-collapse: collapse; border-spacing: 0; } #main { margin : auto; max-width : 65em; min-width : 40em; width : auto !important; width : 65em; } #header { background : #2b548c url('../images/header_bg.png') repeat-x bottom left; padding : 6em 4em 1em 4em; } #header h1 { color : #ffffff; font : italic 200% sans-serif; } #menu { background : #437fda; border-bottom : 1px solid #2b548c; font : 100% sans-serif; } #menu ul { padding : 0.75em 4em; } #menu li { display : inline; } #menu li a { color : #ffffff; padding : 0.75em 1.5em; } #menu li a:hover { background : #2b548c; } #menu li.selected a { background : #ffffff; border : 1px solid #2b548c; border-bottom : 1px solid #ffffff; color : #437fda; } #menu li.selected a:hover { background : #ffffff; color : #ba8f43; } #content { border-bottom : 1px solid #cfcfcf; height : auto !important; height : 1%; overflow : hidden; padding : 2em 0 0 0; } #content div { padding : 0 4em 2em 4em; } div.left { left : -1em; float : left; position : relative; width : 50%; } div.right { left : 1em; float : left; position : relative; width : 50%; } #footer { font-size : 85%; margin : auto; padding : 1em 0 3em 0; text-align : center; width : 65%; } circuits-3.1.0/examples/web/wiki/static/css/pygments.css0000644000014400001440000000623112174742426024341 0ustar prologicusers00000000000000.hll { background-color: #ffffcc } .c { color: #408090; font-style: italic } /* Comment */ .err { border: 1px solid #FF0000 } /* Error */ .k { color: #007020; font-weight: bold } /* Keyword */ .o { color: #666666 } /* Operator */ .cm { color: #408090; font-style: italic } /* Comment.Multiline */ .cp { color: #007020 } /* Comment.Preproc */ .c1 { color: #408090; font-style: italic } /* Comment.Single */ .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ .gd { color: #A00000 } /* Generic.Deleted */ .ge { font-style: italic } /* Generic.Emph */ .gr { color: #FF0000 } /* Generic.Error */ .gh { color: #000080; font-weight: bold } /* Generic.Heading */ .gi { color: #00A000 } /* Generic.Inserted */ .go { color: #303030 } /* Generic.Output */ .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ .gs { font-weight: bold } /* Generic.Strong */ .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ .gt { color: #0040D0 } /* Generic.Traceback */ .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ .kp { color: #007020 } /* Keyword.Pseudo */ .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ .kt { color: #902000 } /* Keyword.Type */ .m { color: #208050 } /* Literal.Number */ .s { color: #4070a0 } /* Literal.String */ .na { color: #4070a0 } /* Name.Attribute */ .nb { color: #007020 } /* Name.Builtin */ .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ .no { color: #60add5 } /* Name.Constant */ .nd { color: #555555; font-weight: bold } /* Name.Decorator */ .ni { color: #d55537; font-weight: bold } /* Name.Entity */ .ne { color: #007020 } /* Name.Exception */ .nf { color: #06287e } /* Name.Function */ .nl { color: #002070; font-weight: bold } /* Name.Label */ .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ .nt { color: #062873; font-weight: bold } /* Name.Tag */ .nv { color: #bb60d5 } /* Name.Variable */ .ow { color: #007020; font-weight: bold } /* Operator.Word */ .w { color: #bbbbbb } /* Text.Whitespace */ .mf { color: #208050 } /* Literal.Number.Float */ .mh { color: #208050 } /* Literal.Number.Hex */ .mi { color: #208050 } /* Literal.Number.Integer */ .mo { color: #208050 } /* Literal.Number.Oct */ .sb { color: #4070a0 } /* Literal.String.Backtick */ .sc { color: #4070a0 } /* Literal.String.Char */ .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ .s2 { color: #4070a0 } /* Literal.String.Double */ .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ .sh { color: #4070a0 } /* Literal.String.Heredoc */ .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ .sx { color: #c65d09 } /* Literal.String.Other */ .sr { color: #235388 } /* Literal.String.Regex */ .s1 { color: #4070a0 } /* Literal.String.Single */ .ss { color: #517918 } /* Literal.String.Symbol */ .bp { color: #007020 } /* Name.Builtin.Pseudo */ .vc { color: #bb60d5 } /* Name.Variable.Class */ .vg { color: #bb60d5 } /* Name.Variable.Global */ .vi { color: #bb60d5 } /* Name.Variable.Instance */ .il { color: #208050 } /* Literal.Number.Integer.Long */ circuits-3.1.0/examples/web/wiki/static/favicon.ico0000644000014400001440000000261612174742426023315 0ustar prologicusers00000000000000x(   !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~ٺGGj(((((;{{((Xj;j;(GG;G{X胺XG(jjj(G(胘jXGG{{XjXgC  @ @circuits-3.1.0/examples/web/wiki/static/Image.jpg0000644000014400001440000001102312174742426022710 0ustar prologicusers00000000000000JFIF                     `" C !1A"Q2aqB #3R$CSbrDT(!1AQ"a#R ?([+ĸg߽QHĸy=1r 8o>TϧiŒCw 8x8k*#!7c28A=1ob%8]P`cУr$619z,[J&p nL6Pv KO}! G|1jpZg)޸,9 +'1!8Et`APGkG&ΡcVtt2*:|q)q! DqG3_ *O;~$'C8 ؗԜ#3|=Xهbv MXo PE"<>yTOD&ύ gN$+b {`s%C^<~M5㭨W`+NENrG'pN x&GE LsfO<>ѧ-?ا d@KP5W4:^}XN)S`kl d_A=~XeO8sD\rImẂDZśW٩w ْ,k0u:y8(YdmvK3])@!y &4 "y96, aRe#7 +DCQ:Ag.IiLG)%Q&M\ eԀv  N΢ (h_JۖUHJ"@$sUc(1ߒW}<7ZVÖoLk|LIŇb eIG,6F+Mȣ關f65d \mLb[l~"Eq_fYyEfՃ!%ISjԤmaMǤ=2ED`b}q8$MV J3D]U:٣,JQ%$lX;'?I<ŵ^Gtn@sE'3Q^?ν6đ @JK bПC]Ђښ=1 33yAӿ+ ,6~j"?Kc^_/:15٭TXXt3B)=6Z '|w3'{GBX^hhr{Vꇙ3=f+'Ȁ~LUV`9e EG IE7@H;$(h}71jDXeT3[f _7l/]/շ`98Т3v'`ں=[C08MB!GDG.LqJB[$w# X8GvUSq+,3)K*RlaFsm^/#-²^'7IJ˕-ZfyX@bP[XٶMO/#"eL"Օ]+9=wXpsnOYaܫʖ h̛#Wm<Yn+5g@>b@5Q>k၉spS-4y$SzմyI6q[jedF--S[-9[Պ(ԡf,s2ȌnJEr[H֝܂>8Zv)2~lZpi[=fA&nH%fjyeQ$`m^,AjuS""O%cZt;7N/;[BG%XD؃g;7魱٢RIFvēHUEN0?8^&g(?:o^.,#}dIJeHޚF }t7d9V !UQf?d|~+fkd$=q4vаj>L&~ HuЧr]vљdb‚ %\M@Hhu)*| *PIXgqrீXU)}Һg et‹\eƶX-ŜvYAc=0Zc=HG$dgUQb6"y.vds .ܱF"FbYoTl7n$R5n#ӝEm{.r6_|l:413C>%>2I %yu5Y 9Ъ XD,PdeE儖lRG;E,|6^B: U\vGfyQ_+DrB ,@82I ( $ql7ßR0x`Ut(ڏ1fQӌk;ܙw-8tԺEZCm)G>q"tx$:6ს#r= *<]Li&Ñ"A+7lQK~!EיP>$~ʥjEVZ{cϹD9zA\ı6Z&՚ 4 Hx t= kJUV3fg\Ť iŔ:vbُ;Ve$|Ï. u&PHʆؿR.m}Ͱ&e̮\^WKCg$"5iUPsC;.$gW0UԥKz[w#Yk;eDid:#)rHg.59"RFZ ǩ9rԅBkx|C)i h<ǔYdCD#empּ̘x߯o %haL%R# %I+CS"“X]e2ň c_i';?ҋ&r~05,O&h.}3ВG}z`G0jXNfyFW[t t?v/8F h-fF )05I͠F9hU 3Z)a\ܲD a$]t6bC:; 'h%ifUU)@/?SNռOG,2:G49l1o=Dښ̲SVڣ &u ^IV4Q2eiKjFugu;Ė w^dG ܹwa5gH %rtE˽iq!hq,Ix:u23a¬e@"n:GZOIĹd}circuits-3.1.0/examples/web/wiki/static/images/0000755000014400001440000000000012425013643022423 5ustar prologicusers00000000000000circuits-3.1.0/examples/web/wiki/static/images/header_bg.png0000644000014400001440000000104512174742426025042 0ustar prologicusers00000000000000PNG  IHDRl(?gAMA7tEXtSoftwareAdobe ImageReadyqe<PLTE@{,U;q2`@zC=tB~.Y,U?x,VB~A|-W3b4e:pw>v>v1^9m-W8l0\A}B}?y-WA}=uA{w,V.Y5e?y:o3a0]-X1_7i0]9n>w/[YIDATx"Ce%;!3ى;ǶtƖ_L #J1fƧm?o=ׁ {6yUԆKYuT[5w'j ",ə4WW&[oZ4=+Iɦ  IENDB`circuits-3.1.0/examples/web/ssl-forward-cert.py0000755000014400001440000000061412402037676022507 0ustar prologicusers00000000000000#!/usr/bin/env python # stdlib import ssl from circuits.web import Server, Controller class Root(Controller): def GET(self, peer_cert=None): return "Here's your cert %s" % peer_cert app = Server( ("0.0.0.0", 8443), ssl=True, certfile="server-cert.pem", keyfile="server-key.pem", ca_certs="ca-chain.pem", cert_reqs=ssl.CERT_OPTIONAL ) Root().register(app) app.run() circuits-3.1.0/examples/web/acldemo.py0000755000014400001440000000156612402037676020724 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import handler, Component from circuits.web.errors import Forbidden from circuits.web import Server, Controller class ACL(Component): allowed = ["127.0.0.1"] @handler("request", priority=1.0) def on_request(self, event, request, response): """Filter Requests applying IP based Authorization Filter any incoming requests at a higher priority than the default dispatcher and apply IP based Authorization returning a 403 Forbidden response if the Remote IP Address does not match the allowed set. """ if not request.remote.ip in self.allowed: event.stop() return Forbidden(request, response) class Root(Controller): def index(self): return "Hello World!" app = Server(("0.0.0.0", 8000)) ACL().register(app) Root().register(app) app.run() circuits-3.1.0/examples/echoserial.py0000755000014400001440000000151512402037676020653 0ustar prologicusers00000000000000#!/usr/bin/env python """Simple Serial Example This example shows how to use the ``circuits.io.Serial`` Component to access serial data. This example simply echos back what it receives on the serial port. .. warning:: THis example is currently untested. """ from circuits.io import Serial from circuits.io.events import write from circuits import handler, Component, Debugger class EchoSerial(Component): def init(self, port): Serial(port).register(self) @handler("read") def on_read(self, data): """Read Event Handler This is fired by the underlying Serial Component when there has been new data read from the serial port. """ self.fire(write(data)) # Start and "run" the system. # Connect to /dev/ttyS0 app = EchoSerial("/dev/ttyS0") Debugger().register(app) app.run() circuits-3.1.0/examples/chatserver.py0000755000014400001440000000700012402037676020676 0ustar prologicusers00000000000000#!/usr/bin/env python """Chat Server Example This example demonstrates how to create a very simple telnet-style chat server that supports many connecting clients. """ from optparse import OptionParser from circuits.net.events import write from circuits import Component, Debugger from circuits.net.sockets import TCPServer __version__ = "0.0.1" USAGE = "%prog [options]" VERSION = "%prog v" + __version__ def parse_options(): parser = OptionParser(usage=USAGE, version=VERSION) parser.add_option( "-b", "--bind", action="store", type="string", default="0.0.0.0:8000", dest="bind", help="Bind to address:[port]" ) parser.add_option( "-d", "--debug", action="store_true", default=False, dest="debug", help="Enable debug mode" ) opts, args = parser.parse_args() return opts, args class ChatServer(Component): def init(self, args, opts): """Initialize our ``ChatServer`` Component. This uses the convenience ``init`` method which is called after the component is proeprly constructed and initialized and passed the same args and kwargs that were passed during construction. """ self.args = args self.opts = opts self.clients = {} if opts.debug: Debugger().register(self) if ":" in opts.bind: address, port = opts.bind.split(":") port = int(port) else: address, port = opts.bind, 8000 bind = (address, port) TCPServer(bind).register(self) def broadcast(self, data, exclude=None): exclude = exclude or [] targets = (sock for sock in self.clients.keys() if sock not in exclude) for target in targets: self.fire(write(target, data)) def connect(self, sock, host, port): """Connect Event -- Triggered for new connecting clients""" self.clients[sock] = { "host": sock, "port": port, "state": { "nickname": None, "registered": False } } self.fire(write(sock, b"Welcome to the circuits Chat Server!\n")) self.fire(write(sock, b"Please enter a desired nickname: ")) def disconnect(self, sock): """Disconnect Event -- Triggered for disconnecting clients""" if sock not in self.clients: return nickname = self.clients[sock]["state"]["nickname"] self.broadcast( "!!! {0:s} has left !!!\n".format(nickname).encode("utf-8"), exclude=[sock] ) del self.clients[sock] def read(self, sock, data): """Read Event -- Triggered for when client conenctions have data""" data = data.strip().decode("utf-8") if not self.clients[sock]["state"]["registered"]: nickname = data self.clients[sock]["state"]["registered"] = True self.clients[sock]["state"]["nickname"] = nickname self.broadcast( "!!! {0:s} has joined !!!\n".format(nickname).encode("utf-8"), exclude=[sock] ) else: nickname = self.clients[sock]["state"]["nickname"] self.broadcast( "<{0:s}> {1:s}\n".format(nickname, data).encode("utf-8"), exclude=[sock] ) def main(): opts, args = parse_options() # Configure and "run" the System. ChatServer(args, opts).run() if __name__ == "__main__": main() circuits-3.1.0/examples/primitives/0000755000014400001440000000000012425013643020342 5ustar prologicusers00000000000000circuits-3.1.0/examples/primitives/fire.py0000755000014400001440000000075212402037676021657 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import Component, Event class hello(Event): """hello Event""" class foo(Event): """foo Event""" class bar(Event): """bar Event""" class App(Component): def foo(self): print("Foo!") def bar(self): print("Bar!") def hello(self): self.fire(foo()) self.fire(bar()) print("Hello World!") def started(self, component): self.fire(hello()) self.stop() App().run() circuits-3.1.0/examples/primitives/call.py0000755000014400001440000000104712402037676021643 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import Component, Event class hello(Event): """hello Event""" class foo(Event): """foo Event""" class bar(Event): """bar Event""" class App(Component): def foo(self): return 1 def bar(self): return 2 def hello(self): x = yield self.call(foo()) y = yield self.call(bar()) yield x.value + y.value def started(self, component): x = yield self.call(hello()) print("{0:d}".format(x.value)) self.stop() App().run() circuits-3.1.0/examples/primitives/wait.py0000755000014400001440000000116612402037676021676 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import Component, Event class hello(Event): """hello Event""" class foo(Event): """foo Event""" class bar(Event): """bar Event""" class App(Component): def foo(self): return 1 def bar(self): return 2 def hello(self): x = self.fire(foo()) yield self.wait("foo") y = self.fire(bar()) yield self.wait("bar") yield x.value + y.value def started(self, component): x = self.fire(hello()) yield self.wait("hello") print("{0:d}".format(x.value)) self.stop() App().run() circuits-3.1.0/examples/dnsclient.py0000755000014400001440000000442112402037676020517 0ustar prologicusers00000000000000#!/usr/bin/env python """DNS Client Example A simple little DNS Client example using `dnslib `_ to handle the DNS protocol parsing and packet deconstruction (*a really nice library btw with great integration into circuits*). Specify the server, port and query as argumetns to perform a lookup against a server using UDP. To run this example:: pip install dnslib ./dnsclient.py 8.8.8.8 53 google.com """ from __future__ import print_function import sys from dnslib import DNSQuestion, DNSRecord from circuits.net.events import write from circuits.net.sockets import UDPClient from circuits import Event, Component, Debugger class reply(Event): """reply Event""" class DNS(Component): """DNS Protocol Handling""" def read(self, peer, data): self.fire(reply(peer, DNSRecord.parse(data))) class Dummy(Component): """A Dummy DNS Handler This just parses the reply packet and prints any RR records it finds. """ def reply(self, peer, response): id = response.header.id qname = response.q.qname print( "DNS Response from {0:s}:{1:d} id={2:d} qname={3:s}".format( peer[0], peer[1], id, str(qname) ), file=sys.stderr ) for rr in response.rr: print(" {0:s}".format(str(rr))) raise SystemExit(0) class DNSClient(Component): """DNS Client This ties everything together in a nice configurable way with protocol, transport and dummy handler as well as optional debugger. """ def init(self, server, port, query, verbose=False): self.server = server self.port = int(port) self.query = query if verbose: Debugger().register(self) self.transport = UDPClient(0).register(self) self.protocol = DNS().register(self) self.dummy = Dummy().register(self) def started(self, manager): print("DNS Client Started!", file=sys.stderr) def ready(self, client, bind): print("Ready! Bound to {0:s}:{1:d}".format(*bind), file=sys.stderr) request = DNSRecord(q=DNSQuestion(self.query)) self.fire(write((self.server, self.port), request.pack())) DNSClient(*sys.argv[1:], verbose=True).run() circuits-3.1.0/examples/testing/0000755000014400001440000000000012425013643017624 5ustar prologicusers00000000000000circuits-3.1.0/examples/testing/pytest/0000755000014400001440000000000012425013643021154 5ustar prologicusers00000000000000circuits-3.1.0/examples/testing/pytest/hello.py0000755000014400001440000000142312402037676022643 0ustar prologicusers00000000000000#!/usr/bin/env python """circuits Hello World""" from circuits import Component, Event class hello(Event): """hello Event""" class App(Component): def hello(self): """Hello Event Handler""" return "Hello World!" def started(self, component): """Started Event Handler This is fired internally when your application starts up and can be used to trigger events that only occur once during startup. """ x = self.fire(hello()) # Fire hello Event yield self.wait("hello") # Wait for Hello Event to fire print(x.value) # Print the value we got back from firing Hello raise SystemExit(0) # Terminate the Application def main(): App().run() if __name__ == "__main__": main() circuits-3.1.0/examples/testing/pytest/test_hello.py0000644000014400001440000000063112402037676023677 0ustar prologicusers00000000000000#!/usr/bin/env python import pytest from hello import Hello, App @pytest.fixture def app(request, manager, watcher): app = App().register(manager) watcher.wait("registered") def finalizer(): app.unregister() request.addfinalizer(finalizer) return app def test(app, watcher): x = app.fire(Hello()) assert watcher.wait("hello") assert x.value == "Hello World!" circuits-3.1.0/examples/testing/pytest/README.rst0000644000014400001440000000142112402037676022650 0ustar prologicusers00000000000000Hello World Example -- Test Driven Development ============================================== This is the classical "Hello World!" style application written in circuits using the `Test Driven Development (TDD) `_ software development process. This example serves as a useful basis for developing your own circuits components and applications that are developed using this process. Furthermore all unit tests in the circuits framework and library of components are all written this way in an almost identical fashion. This requires the use of: - `pytest `_ To install pytest: $ pip install pytest To run this example: $ ./hello.py To run the unit test: $ py.test test_hello.py circuits-3.1.0/examples/testing/pytest/conftest.py0000644000014400001440000000526612402037676023373 0ustar prologicusers00000000000000# Module: conftest # Date: 6th December 2010 # Author: James Mills, prologic at shortcircuit dot net dot au """py.test config""" import pytest import sys import threading from time import sleep from collections import deque from circuits.core.manager import TIMEOUT from circuits import handler, BaseComponent, Debugger, Manager class Watcher(BaseComponent): def init(self): self._lock = threading.Lock() self.events = deque() @handler(channel="*", priority=999.9) def _on_event(self, event, *args, **kwargs): with self._lock: self.events.append(event) def wait(self, name, channel=None, timeout=6.0): for i in range(int(timeout / TIMEOUT)): if channel is None: with self._lock: for event in self.events: if event.name == name: return True else: with self._lock: for event in self.events: if event.name == name and \ channel in event.channels: return True sleep(TIMEOUT) class Flag(object): status = False class WaitEvent(object): def __init__(self, manager, name, channel=None, timeout=6.0): if channel is None: channel = getattr(manager, "channel", None) self.timeout = timeout self.manager = manager flag = Flag() @handler(name, channel=channel) def on_event(self, *args, **kwargs): flag.status = True self.handler = self.manager.addHandler(on_event) self.flag = flag def wait(self): try: for i in range(int(self.timeout / TIMEOUT)): if self.flag.status: return True sleep(TIMEOUT) finally: self.manager.removeHandler(self.handler) @pytest.fixture(scope="session") def manager(request): manager = Manager() def finalizer(): manager.stop() request.addfinalizer(finalizer) waiter = WaitEvent(manager, "started") manager.start() assert waiter.wait() if request.config.option.verbose: Debugger().register(manager) return manager @pytest.fixture def watcher(request, manager): watcher = Watcher().register(manager) def finalizer(): waiter = WaitEvent(manager, "unregistered") watcher.unregister() waiter.wait() request.addfinalizer(finalizer) return watcher def pytest_namespace(): return dict(( ("WaitEvent", WaitEvent), ("PLATFORM", sys.platform), ("PYVER", sys.version_info[:3]), )) circuits-3.1.0/examples/tail.py0000755000014400001440000000240312402037676017463 0ustar prologicusers00000000000000#!/usr/bin/env python """Clone of the standard UNIX "tail" command. This example shows how you can utilize some of the buitlin I/O components in circuits to write a very simple clone of the standard UNIX "tail" command. """ import sys from circuits import Component, Debugger from circuits.io import stdout, File, Write class Tail(Component): # Shorthand for declaring a compoent to be a part of this component. stdout = stdout def init(self, filename): """Initialize Tail Component Using the convenience ``init`` method we simply register a ``File`` Component as part of our ``Tail`` Component and ask it to seek to the end of the file. """ File(filename, "r", autoclose=False).register(self).seek(0, 2) def read(self, data): """Read Event Handler This event is triggered by the underlying ``File`` Component for when there is data to be processed. Here we simply fire a ``Write`` event and target the ``stdout`` component instance that is a part of our system -- thus writing the contents of the file we read out to standard output. """ self.fire(Write(data), self.stdout) # Setup and run the system. (Tail(sys.argv[1]) + Debugger()).run() circuits-3.1.0/setup.cfg0000644000014400001440000000025112425013644016151 0ustar prologicusers00000000000000[build_sphinx] source-dir = docs/source build-dir = docs/build [upload_sphinx] upload-dir = docs/build/html [egg_info] tag_build = tag_date = 0 tag_svn_revision = 0 circuits-3.1.0/tox.ini0000644000014400001440000000115112402037676015651 0ustar prologicusers00000000000000# Tox (http://tox.testrun.org/) is a tool for running tests # in multiple virtualenvs. This configuration file will run the # test suite on all supported python versions. To use it, "pip install tox" # and then run "tox" from this directory. [tox] envlist = py26,py27,py32,py33,py34,pypy skip_missing_interpreters = True [testenv] commands=py.test --cov=circuits --cov-report=html --junitxml=circuits-{envname}.xml tests deps = pytest-cov pytest [testenv:docs] basepython=python changedir=docs deps= sphinx pytest commands=py.test --tb=line -v --junitxml=circuits-docs-{envname}.xml check_docs.py circuits-3.1.0/docs/0000755000014400001440000000000012425013643015261 5ustar prologicusers00000000000000circuits-3.1.0/docs/check_docs.py0000644000014400001440000000132412402037676017727 0ustar prologicusers00000000000000#!/usr/bin/env python from subprocess import Popen, PIPE, STDOUT def test_linkcheck(tmpdir): doctrees = tmpdir.join("doctrees") htmldir = tmpdir.join("html") p = Popen([ "sphinx-build", "-W", "-blinkcheck", "-d", str(doctrees), "source", str(htmldir) ], stdout=PIPE, stderr=STDOUT) stdout, _ = p.communicate() if not p.wait() == 0: print(stdout) def test_build_docs(tmpdir): doctrees = tmpdir.join("doctrees") htmldir = tmpdir.join("html") p = Popen([ "sphinx-build", "-W", "-bhtml", "-d", str(doctrees), "source", str(htmldir) ], stdout=PIPE, stderr=STDOUT) stdout, _ = p.communicate() if not p.wait() == 0: print(stdout) circuits-3.1.0/docs/build/0000755000014400001440000000000012425013643016360 5ustar prologicusers00000000000000circuits-3.1.0/docs/build/doctrees/0000755000014400001440000000000012425013643020170 5ustar prologicusers00000000000000circuits-3.1.0/docs/build/doctrees/man/0000755000014400001440000000000012425013643020743 5ustar prologicusers00000000000000circuits-3.1.0/docs/build/doctrees/man/values.doctree0000644000014400001440000004151712425011107023612 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xfutures and promisesqXvaluesqNuUsubstitution_defsq}q Uparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startqKUnameidsq}q(hUfutures-and-promisesqhUvaluesquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqX7/home/prologic/work/circuits/docs/source/man/values.rstqUtagnameqUsectionqU attributesq}q(Udupnamesq ]Uclassesq!]Ubackrefsq"]Uidsq#]q$(Xmodule-circuits.core.valuesq%heUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hXValuesq.hhhhhUtitleq/h}q0(h ]h!]h"]h#]h&]uh(Kh)hh]q1cdocutils.nodes Text q2XValuesq3q4}q5(hh.hh,ubaubcsphinx.addnodes index q6)q7}q8(hUhhhhhUindexq9h}q:(h#]h"]h ]h!]h&]Uentries]q;(Usingleq)q?}q@(hXThe :mod:`~circuits.core` :class:`~Value` class is an internal part of circuits' `Futures and Promises `_ used to fulfill promises of the return value of an event handler and any associated chains of events and event handlers.hhhhhU paragraphqAh}qB(h ]h!]h"]h#]h&]uh(Kh)hh]qC(h2XThe qDqE}qF(hXThe hh?ubcsphinx.addnodes pending_xref qG)qH}qI(hX:mod:`~circuits.core`qJhh?hhhU pending_xrefqKh}qL(UreftypeXmodUrefwarnqMU reftargetqNX circuits.coreU refdomainXpyqOh#]h"]U refexplicith ]h!]h&]UrefdocqPX man/valuesqQUpy:classqRNU py:moduleqSXcircuits.core.valuesqTuh(Kh]qUcdocutils.nodes literal qV)qW}qX(hhJh}qY(h ]h!]qZ(Uxrefq[hOXpy-modq\eh"]h#]h&]uhhHh]q]h2Xcoreq^q_}q`(hUhhWubahUliteralqaubaubh2X qb}qc(hX hh?ubhG)qd}qe(hX:class:`~Value`qfhh?hhhhKh}qg(UreftypeXclasshMhNXValueU refdomainXpyqhh#]h"]U refexplicith ]h!]h&]hPhQhRNhShTuh(Kh]qihV)qj}qk(hhfh}ql(h ]h!]qm(h[hhXpy-classqneh"]h#]h&]uhhdh]qoh2XValueqpqq}qr(hUhhjubahhaubaubh2X( class is an internal part of circuits' qsqt}qu(hX( class is an internal part of circuits' hh?ubcdocutils.nodes reference qv)qw}qx(hXK`Futures and Promises `_h}qy(UnameXFutures and PromisesUrefuriqzX1http://en.wikipedia.org/wiki/Futures_and_promisesq{h#]h"]h ]h!]h&]uhh?h]q|h2XFutures and Promisesq}q~}q(hUhhwubahU referencequbcdocutils.nodes target q)q}q(hX4 U referencedqKhh?hUtargetqh}q(Urefurih{h#]qhah"]h ]h!]h&]qhauh]ubh2Xy used to fulfill promises of the return value of an event handler and any associated chains of events and event handlers.qq}q(hXy used to fulfill promises of the return value of an event handler and any associated chains of events and event handlers.hh?ubeubh>)q}q(hX3Basically when you fire an event ``foo()`` such as:hhhhhhAh}q(h ]h!]h"]h#]h&]uh(Kh)hh]q(h2X!Basically when you fire an event qq}q(hX!Basically when you fire an event hhubhV)q}q(hX ``foo()``h}q(h ]h!]h"]h#]h&]uhhh]qh2Xfoo()qq}q(hUhhubahhaubh2X such as:qq}q(hX such as:hhubeubcdocutils.nodes literal_block q)q}q(hXx = self.fire(foo())hhhhhU literal_blockqh}q(UlinenosqUlanguageqXpythonU xml:spaceqUpreserveqh#]h"]h ]h!]h&]uh(Kh)hh]qh2Xx = self.fire(foo())qq}q(hUhhubaubh>)q}q(hX``x`` here is an instance of the :class:`~Value` class which will contain the value returned by the event handler for ``foo`` in the ``.value`` property.hhhhhhAh}q(h ]h!]h"]h#]h&]uh(Kh)hh]q(hV)q}q(hX``x``h}q(h ]h!]h"]h#]h&]uhhh]qh2Xxq}q(hUhhubahhaubh2X here is an instance of the qq}q(hX here is an instance of the hhubhG)q}q(hX:class:`~Value`qhhhhhhKh}q(UreftypeXclasshMhNXValueU refdomainXpyqh#]h"]U refexplicith ]h!]h&]hPhQhRNhShTuh(Kh]qhV)q}q(hhh}q(h ]h!]q(h[hXpy-classqeh"]h#]h&]uhhh]qh2XValueqÅq}q(hUhhubahhaubaubh2XF class which will contain the value returned by the event handler for qƅq}q(hXF class which will contain the value returned by the event handler for hhubhV)q}q(hX``foo``h}q(h ]h!]h"]h#]h&]uhhh]qh2Xfooqͅq}q(hUhhubahhaubh2X in the qЅq}q(hX in the hhubhV)q}q(hX ``.value``h}q(h ]h!]h"]h#]h&]uhhh]qh2X.valueqׅq}q(hUhhubahhaubh2X property.qڅq}q(hX property.hhubeubcdocutils.nodes note q)q}q(hXThere is also :meth:`~Value.getValue` which can be used to also retrieve the underlying value held in the instance of the :class:`~Value` class but you should not need to use this as the ``.value`` property takes care of this for you.hhhhhUnoteqh}q(h ]h!]h"]h#]h&]uh(Nh)hh]qh>)q}q(hXThere is also :meth:`~Value.getValue` which can be used to also retrieve the underlying value held in the instance of the :class:`~Value` class but you should not need to use this as the ``.value`` property takes care of this for you.hhhhhhAh}q(h ]h!]h"]h#]h&]uh(Kh]q(h2XThere is also q煁q}q(hXThere is also hhubhG)q}q(hX:meth:`~Value.getValue`qhhhhhhKh}q(UreftypeXmethhMhNXValue.getValueU refdomainXpyqh#]h"]U refexplicith ]h!]h&]hPhQhRNhShTuh(Kh]qhV)q}q(hhh}q(h ]h!]q(h[hXpy-methqeh"]h#]h&]uhhh]qh2X getValue()qq}q(hUhhubahhaubaubh2XU which can be used to also retrieve the underlying value held in the instance of the qq}q(hXU which can be used to also retrieve the underlying value held in the instance of the hhubhG)q}q(hX:class:`~Value`qhhhhhhKh}q(UreftypeXclasshMhNXValueU refdomainXpyrh#]h"]U refexplicith ]h!]h&]hPhQhRNhShTuh(Kh]rhV)r}r(hhh}r(h ]h!]r(h[jXpy-classreh"]h#]h&]uhhh]rh2XValuerr }r (hUhjubahhaubaubh2X2 class but you should not need to use this as the r r }r (hX2 class but you should not need to use this as the hhubhV)r}r(hX ``.value``h}r(h ]h!]h"]h#]h&]uhhh]rh2X.valuerr}r(hUhjubahhaubh2X% property takes care of this for you.rr}r(hX% property takes care of this for you.hhubeubaubh>)r}r(hXBThe only other API you may need in your application is the :py:attr:`~Value.notify` which can be used to trigger a ``value_changed`` event when the underlying :class:`~Value` of the event handler has changed. In this way you can do something asynchronously with the event handler's return value no matter when it finishes.hhhhhhAh}r(h ]h!]h"]h#]h&]uh(K$h)hh]r(h2X;The only other API you may need in your application is the rr}r(hX;The only other API you may need in your application is the hjubhG)r}r (hX:py:attr:`~Value.notify`r!hjhhhhKh}r"(UreftypeXattrhMhNX Value.notifyU refdomainXpyr#h#]h"]U refexplicith ]h!]h&]hPhQhRNhShTuh(K$h]r$hV)r%}r&(hj!h}r'(h ]h!]r((h[j#Xpy-attrr)eh"]h#]h&]uhjh]r*h2Xnotifyr+r,}r-(hUhj%ubahhaubaubh2X which can be used to trigger a r.r/}r0(hX which can be used to trigger a hjubhV)r1}r2(hX``value_changed``h}r3(h ]h!]h"]h#]h&]uhjh]r4h2X value_changedr5r6}r7(hUhj1ubahhaubh2X event when the underlying r8r9}r:(hX event when the underlying hjubhG)r;}r<(hX:class:`~Value`r=hjhhhhKh}r>(UreftypeXclasshMhNXValueU refdomainXpyr?h#]h"]U refexplicith ]h!]h&]hPhQhRNhShTuh(K$h]r@hV)rA}rB(hj=h}rC(h ]h!]rD(h[j?Xpy-classrEeh"]h#]h&]uhj;h]rFh2XValuerGrH}rI(hUhjAubahhaubaubh2X of the event handler has changed. In this way you can do something asynchronously with the event handler's return value no matter when it finishes.rJrK}rL(hX of the event handler has changed. In this way you can do something asynchronously with the event handler's return value no matter when it finishes.hjubeubh>)rM}rN(hX Example Code:rOhhhhhhAh}rP(h ]h!]h"]h#]h&]uh(K,h)hh]rQh2X Example Code:rRrS}rT(hjOhjMubaubh)rU}rV(hX#!/usr/bin/python -i from circuits import handler, Event, Component, Debugger class hello(Event): "hello Event" class test(Event): "test Event" class App(Component): def hello(self): return "Hello World!" def test(self): return self.fire(hello()) @handler("hello_value_changed") def _on_hello_value_changed(self, value): print("hello's return value was: {}".format(value)) app = App() Debugger().register(app)hhhhhhh}rW(hhXpythonhhh#]h"]h ]h!]h&]uh(K.h)hh]rXh2X#!/usr/bin/python -i from circuits import handler, Event, Component, Debugger class hello(Event): "hello Event" class test(Event): "test Event" class App(Component): def hello(self): return "Hello World!" def test(self): return self.fire(hello()) @handler("hello_value_changed") def _on_hello_value_changed(self, value): print("hello's return value was: {}".format(value)) app = App() Debugger().register(app)rYrZ}r[(hUhjUubaubh>)r\}r](hXExample Session:r^hhhhhhAh}r_(h ]h!]h"]h#]h&]uh(KOh)hh]r`h2XExample Session:rarb}rc(hj^hj\ubaubh)rd}re(hX$ python -i ../app.py >>> x = app.fire(test()) >>> x.notify = True >>> app.tick() , )> >>> app.tick() >>> app.tick() ] ( )> >>> app.tick() >>> x >>> x.value 'Hello World!' >>>hhhhhhh}rf(hhXpythonhhh#]h"]h ]h!]h&]uh(KQh)hh]rgh2X$ python -i ../app.py >>> x = app.fire(test()) >>> x.notify = True >>> app.tick() , )> >>> app.tick() >>> app.tick() ] ( )> >>> app.tick() >>> x >>> x.value 'Hello World!' >>>rhri}rj(hUhjdubaubh>)rk}rl(hXThe :py:attr:`Value.notify` attribute can also be set to the name of an event which should be used to fire the ``value_changed`` event to.hhhhhhAh}rm(h ]h!]h"]h#]h&]uh(Keh)hh]rn(h2XThe rorp}rq(hXThe hjkubhG)rr}rs(hX:py:attr:`Value.notify`rthjkhhhhKh}ru(UreftypeXattrhMhNX Value.notifyU refdomainXpyrvh#]h"]U refexplicith ]h!]h&]hPhQhRNhShTuh(Keh]rwhV)rx}ry(hjth}rz(h ]h!]r{(h[jvXpy-attrr|eh"]h#]h&]uhjrh]r}h2X Value.notifyr~r}r(hUhjxubahhaubaubh2XT attribute can also be set to the name of an event which should be used to fire the rr}r(hXT attribute can also be set to the name of an event which should be used to fire the hjkubhV)r}r(hX``value_changed``h}r(h ]h!]h"]h#]h&]uhjkh]rh2X value_changedrr}r(hUhjubahhaubh2X event to.rr}r(hX event to.hjkubeubh>)r}r(hXIf the form ``x.notify = True`` used then the event that gets fired is a concatenation of the original event and the ``value_changed`` event. e.g: ``foo_value_changed``.hhhhhhAh}r(h ]h!]h"]h#]h&]uh(Kih)hh]r(h2X If the form rr}r(hX If the form hjubhV)r}r(hX``x.notify = True``h}r(h ]h!]h"]h#]h&]uhjh]rh2Xx.notify = Truerr}r(hUhjubahhaubh2XV used then the event that gets fired is a concatenation of the original event and the rr}r(hXV used then the event that gets fired is a concatenation of the original event and the hjubhV)r}r(hX``value_changed``h}r(h ]h!]h"]h#]h&]uhjh]rh2X value_changedrr}r(hUhjubahhaubh2X event. e.g: rr}r(hX event. e.g: hjubhV)r}r(hX``foo_value_changed``h}r(h ]h!]h"]h#]h&]uhjh]rh2Xfoo_value_changedrr}r(hUhjubahhaubh2X.r}r(hX.hjubeubh)r}r(hX!This is a bit advanced and should only be used by experienced users of the circuits framework. If you simply want basic synchronization of event handlers it's recommended that you try the :meth:`circuits.Component.call` and :meth:`circuits.Component.wait` synchronization primitives first.hhhhhhh}r(h ]h!]h"]h#]h&]uh(Nh)hh]rh>)r}r(hX!This is a bit advanced and should only be used by experienced users of the circuits framework. If you simply want basic synchronization of event handlers it's recommended that you try the :meth:`circuits.Component.call` and :meth:`circuits.Component.wait` synchronization primitives first.hjhhhhAh}r(h ]h!]h"]h#]h&]uh(Kmh]r(h2XThis is a bit advanced and should only be used by experienced users of the circuits framework. If you simply want basic synchronization of event handlers it's recommended that you try the rr}r(hXThis is a bit advanced and should only be used by experienced users of the circuits framework. If you simply want basic synchronization of event handlers it's recommended that you try the hjubhG)r}r(hX:meth:`circuits.Component.call`rhjhhhhKh}r(UreftypeXmethhMhNXcircuits.Component.callU refdomainXpyrh#]h"]U refexplicith ]h!]h&]hPhQhRNhShTuh(Kmh]rhV)r}r(hjh}r(h ]h!]r(h[jXpy-methreh"]h#]h&]uhjh]rh2Xcircuits.Component.call()rr}r(hUhjubahhaubaubh2X and rr}r(hX and hjubhG)r}r(hX:meth:`circuits.Component.wait`rhjhhhhKh}r(UreftypeXmethhMhNXcircuits.Component.waitU refdomainXpyrh#]h"]U refexplicith ]h!]h&]hPhQhRNhShTuh(Kmh]rhV)r}r(hjh}r(h ]h!]r(h[jXpy-methreh"]h#]h&]uhjh]rh2Xcircuits.Component.wait()rr}r(hUhjubahhaubaubh2X" synchronization primitives first.rr}r(hX" synchronization primitives first.hjubeubaubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh)hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelr KU _destinationr NU halt_levelr KU strip_classesr Nh/NUerror_encoding_error_handlerr UbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsr NUsectsubtitle_xformr!U source_linkr"NUrfc_referencesr#NUoutput_encodingr$Uutf-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.hUgettext_compactr/U generatorr0NUdump_internalsr1NU smart_quotesr2U pep_base_urlr3Uhttp://www.python.org/dev/peps/r4Usyntax_highlightr5Ulongr6Uinput_encoding_error_handlerr7jUauto_id_prefixr8Uidr9Udoctitle_xformr:Ustrip_elements_with_classesr;NU _config_filesr<]r=Ufile_insertion_enabledr>U raw_enabledr?KU dump_settingsr@NubUsymbol_footnote_startrAKUidsrB}rC(h%h)rD}rE(hUhhhhhhh}rF(h ]h#]rGh%ah"]Uismodh!]h&]uh(Kh)hh]ubhhhhuUsubstitution_namesrH}rIhh)h}rJ(h ]h#]h"]Usourcehh!]h&]uU footnotesrK]rLUrefidsrM}rNub.circuits-3.1.0/docs/build/doctrees/man/handlers.doctree0000644000014400001440000011003612425011107024104 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Ximplicit event handlersqNXexplicit event handlersqNXhandlersqNuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hUimplicit-event-handlersqhUexplicit-event-handlersqhUhandlersquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqX9/home/prologic/work/circuits/docs/source/man/handlers.rstqUtagnameqUsectionqU attributesq }q!(Udupnamesq"]Uclassesq#]Ubackrefsq$]Uidsq%]q&haUnamesq']q(hauUlineq)KUdocumentq*hh]q+(cdocutils.nodes title q,)q-}q.(hXHandlersq/hhhhhUtitleq0h }q1(h"]h#]h$]h%]h']uh)Kh*hh]q2cdocutils.nodes Text q3XHandlersq4q5}q6(hh/hh-ubaubh)q7}q8(hUhhhhhhh }q9(h"]h#]h$]h%]q:hah']q;hauh)Kh*hh]q<(h,)q=}q>(hXExplicit Event Handlersq?hh7hhhh0h }q@(h"]h#]h$]h%]h']uh)Kh*hh]qAh3XExplicit Event HandlersqBqC}qD(hh?hh=ubaubcdocutils.nodes paragraph qE)qF}qG(hX(Event Handlers are methods of components that are invoked when a matching event is dispatched. These can be declared explicitly on a :class:`~circuits.core.components.BaseComponent` or :class:`~circuits.core.components.Component` or by using the :func:`~circuits.core.handlers.handler` decorator.hh7hhhU paragraphqHh }qI(h"]h#]h$]h%]h']uh)K h*hh]qJ(h3XEvent Handlers are methods of components that are invoked when a matching event is dispatched. These can be declared explicitly on a qKqL}qM(hXEvent Handlers are methods of components that are invoked when a matching event is dispatched. These can be declared explicitly on a hhFubcsphinx.addnodes pending_xref qN)qO}qP(hX0:class:`~circuits.core.components.BaseComponent`qQhhFhhhU pending_xrefqRh }qS(UreftypeXclassUrefwarnqTU reftargetqUX&circuits.core.components.BaseComponentU refdomainXpyqVh%]h$]U refexplicith"]h#]h']UrefdocqWX man/handlersqXUpy:classqYNU py:moduleqZNuh)K h]q[cdocutils.nodes literal q\)q]}q^(hhQh }q_(h"]h#]q`(UxrefqahVXpy-classqbeh$]h%]h']uhhOh]qch3X BaseComponentqdqe}qf(hUhh]ubahUliteralqgubaubh3X or qhqi}qj(hX or hhFubhN)qk}ql(hX,:class:`~circuits.core.components.Component`qmhhFhhhhRh }qn(UreftypeXclasshThUX"circuits.core.components.ComponentU refdomainXpyqoh%]h$]U refexplicith"]h#]h']hWhXhYNhZNuh)K h]qph\)qq}qr(hhmh }qs(h"]h#]qt(hahoXpy-classqueh$]h%]h']uhhkh]qvh3X Componentqwqx}qy(hUhhqubahhgubaubh3X or by using the qzq{}q|(hX or by using the hhFubhN)q}}q~(hX':func:`~circuits.core.handlers.handler`qhhFhhhhRh }q(UreftypeXfunchThUXcircuits.core.handlers.handlerU refdomainXpyqh%]h$]U refexplicith"]h#]h']hWhXhYNhZNuh)K h]qh\)q}q(hhh }q(h"]h#]q(hahXpy-funcqeh$]h%]h']uhh}h]qh3X handler()qq}q(hUhhubahhgubaubh3X decorator.qq}q(hX decorator.hhFubeubcdocutils.nodes literal_block q)q}q(hXb#!/usr/bin/env python from circuits import handler, BaseComponent, Debugger class MyComponent(BaseComponent): def __init__(self): super(MyComponent, self).__init__() Debugger().register(self) @handler("started", channel="*") def system_started(self, component): print "Start event detected" MyComponent().run() hh7hhhU literal_blockqh }q(UlinenosqUlanguageqcdocutils.nodes reprunicode qXpythonqq}qbh"]U xml:spaceqUpreserveqh%]h$]UsourceXK/home/prologic/work/circuits/docs/source/man/examples/handler_annotation.pyh#]h']uh)Kh*hh]qh3Xb#!/usr/bin/env python from circuits import handler, BaseComponent, Debugger class MyComponent(BaseComponent): def __init__(self): super(MyComponent, self).__init__() Debugger().register(self) @handler("started", channel="*") def system_started(self, component): print "Start event detected" MyComponent().run() qq}q(hUhhubaubhE)q}q(hXK:download:`Download handler_annotation.py `qhh7hhhhHh }q(h"]h#]h$]h%]h']uh)Kh*hh]qcsphinx.addnodes download_reference q)q}q(hhhhhhhUdownload_referenceqh }q(UreftypeXdownloadqhThUXexamples/handler_annotation.pyU refdomainUh%]h$]U refexplicith"]h#]h']hWhXUfilenameqXhandler_annotation.pyquh)Kh]qh\)q}q(hhh }q(h"]h#]q(haheh$]h%]h']uhhh]qh3XDownload handler_annotation.pyqq}q(hUhhubahhgubaubaubhE)q}q(hXvThe handler decorator on line 14 turned the method ``system_started`` into an event handler for the event ``started``.hh7hhhhHh }q(h"]h#]h$]h%]h']uh)Kh*hh]q(h3X3The handler decorator on line 14 turned the method qq}q(hX3The handler decorator on line 14 turned the method hhubh\)q}q(hX``system_started``h }q(h"]h#]h$]h%]h']uhhh]qh3Xsystem_startedqq}q(hUhhubahhgubh3X% into an event handler for the event qąq}q(hX% into an event handler for the event hhubh\)q}q(hX ``started``h }q(h"]h#]h$]h%]h']uhhh]qh3Xstartedq˅q}q(hUhhubahhgubh3X.q}q(hX.hhubeubhE)q}q(hXaWhen defining explicit event handlers in this way, it's convention to use the following pattern::hh7hhhhHh }q(h"]h#]h$]h%]h']uh)Kh*hh]qh3X`When defining explicit event handlers in this way, it's convention to use the following pattern:qԅq}q(hX`When defining explicit event handlers in this way, it's convention to use the following pattern:hhubaubh)q}q(hXA@handler("foo") def print_foobar(self, ...): print("FooBar!")hh7hhhhh }q(hhh%]h$]h"]h#]h']uh)Kh*hh]qh3XA@handler("foo") def print_foobar(self, ...): print("FooBar!")qۅq}q(hUhhubaubhE)q}q(hXThis makes reading code clear and concise and obvious to the reader that the method is not part of the class's public API (*leading underscore as per Python convention*) and that it is invoked for events of type ``SomeEvent``.hh7hhhhHh }q(h"]h#]h$]h%]h']uh)Kh*hh]q(h3X{This makes reading code clear and concise and obvious to the reader that the method is not part of the class's public API (q⅁q}q(hX{This makes reading code clear and concise and obvious to the reader that the method is not part of the class's public API (hhubcdocutils.nodes emphasis q)q}q(hX-*leading underscore as per Python convention*h }q(h"]h#]h$]h%]h']uhhh]qh3X+leading underscore as per Python conventionqꅁq}q(hUhhubahUemphasisqubh3X,) and that it is invoked for events of type qq}q(hX,) and that it is invoked for events of type hhubh\)q}q(hX ``SomeEvent``h }q(h"]h#]h$]h%]h']uhhh]qh3X SomeEventqq}q(hUhhubahhgubh3X.q}q(hX.hhubeubhE)q}q(hXThe optional keyword argument "``channel``" can be used to attach the handler to a different channel than the component's channel (*as specified by the component's channel attribute*).hh7hhhhHh }q(h"]h#]h$]h%]h']uh)K$h*hh]q(h3XThe optional keyword argument "qq}r(hXThe optional keyword argument "hhubh\)r}r(hX ``channel``h }r(h"]h#]h$]h%]h']uhhh]rh3Xchannelrr}r(hUhjubahhgubh3XY" can be used to attach the handler to a different channel than the component's channel (rr }r (hXY" can be used to attach the handler to a different channel than the component's channel (hhubh)r }r (hX3*as specified by the component's channel attribute*h }r (h"]h#]h$]h%]h']uhhh]rh3X1as specified by the component's channel attributerr}r(hUhj ubahhubh3X).rr}r(hX).hhubeubhE)r}r(hXjHandler methods must be declared with arguments and keyword arguments that match the arguments passed to the event upon its creation. Looking at the API for :class:`~circuits.core.events.started` you'll find that the component that has been started is passed as an argument to its constructor. Therefore, our handler method must declare one argument (*Line 14*).hh7hhhhHh }r(h"]h#]h$]h%]h']uh)K(h*hh]r(h3XHandler methods must be declared with arguments and keyword arguments that match the arguments passed to the event upon its creation. Looking at the API for rr}r(hXHandler methods must be declared with arguments and keyword arguments that match the arguments passed to the event upon its creation. Looking at the API for hjubhN)r}r(hX&:class:`~circuits.core.events.started`rhjhhhhRh }r(UreftypeXclasshThUXcircuits.core.events.startedU refdomainXpyr h%]h$]U refexplicith"]h#]h']hWhXhYNhZNuh)K(h]r!h\)r"}r#(hjh }r$(h"]h#]r%(haj Xpy-classr&eh$]h%]h']uhjh]r'h3Xstartedr(r)}r*(hUhj"ubahhgubaubh3X you'll find that the component that has been started is passed as an argument to its constructor. Therefore, our handler method must declare one argument (r+r,}r-(hX you'll find that the component that has been started is passed as an argument to its constructor. Therefore, our handler method must declare one argument (hjubh)r.}r/(hX *Line 14*h }r0(h"]h#]h$]h%]h']uhjh]r1h3XLine 14r2r3}r4(hUhj.ubahhubh3X).r5r6}r7(hX).hjubeubhE)r8}r9(hXThe :func:`~circuits.core.handlers.handler` decorator accepts other keyword arguments that influence the behavior of the event handler and its invocation. Details can be found in the API description of :func:`~circuits.core.handlers.handler`.hh7hhhhHh }r:(h"]h#]h$]h%]h']uh)K.h*hh]r;(h3XThe r<r=}r>(hXThe hj8ubhN)r?}r@(hX':func:`~circuits.core.handlers.handler`rAhj8hhhhRh }rB(UreftypeXfunchThUXcircuits.core.handlers.handlerU refdomainXpyrCh%]h$]U refexplicith"]h#]h']hWhXhYNhZNuh)K.h]rDh\)rE}rF(hjAh }rG(h"]h#]rH(hajCXpy-funcrIeh$]h%]h']uhj?h]rJh3X handler()rKrL}rM(hUhjEubahhgubaubh3X decorator accepts other keyword arguments that influence the behavior of the event handler and its invocation. Details can be found in the API description of rNrO}rP(hX decorator accepts other keyword arguments that influence the behavior of the event handler and its invocation. Details can be found in the API description of hj8ubhN)rQ}rR(hX':func:`~circuits.core.handlers.handler`rShj8hhhhRh }rT(UreftypeXfunchThUXcircuits.core.handlers.handlerU refdomainXpyrUh%]h$]U refexplicith"]h#]h']hWhXhYNhZNuh)K.h]rVh\)rW}rX(hjSh }rY(h"]h#]rZ(hajUXpy-funcr[eh$]h%]h']uhjQh]r\h3X handler()r]r^}r_(hUhjWubahhgubaubh3X.r`}ra(hX.hj8ubeubeubh)rb}rc(hUhhhhhhh }rd(h"]h#]h$]h%]rehah']rfhauh)K4h*hh]rg(h,)rh}ri(hXImplicit Event Handlersrjhjbhhhh0h }rk(h"]h#]h$]h%]h']uh)K4h*hh]rlh3XImplicit Event Handlersrmrn}ro(hjjhjhubaubhE)rp}rq(hXTo make things easier for the developer when creating many event handlers and thus save on some typing, the :class:`~circuits.core.components.Component` can be used and subclassed instead which provides an implicit mechanism for creating event handlers.hjbhhhhHh }rr(h"]h#]h$]h%]h']uh)K7h*hh]rs(h3XlTo make things easier for the developer when creating many event handlers and thus save on some typing, the rtru}rv(hXlTo make things easier for the developer when creating many event handlers and thus save on some typing, the hjpubhN)rw}rx(hX,:class:`~circuits.core.components.Component`ryhjphhhhRh }rz(UreftypeXclasshThUX"circuits.core.components.ComponentU refdomainXpyr{h%]h$]U refexplicith"]h#]h']hWhXhYNhZNuh)K7h]r|h\)r}}r~(hjyh }r(h"]h#]r(haj{Xpy-classreh$]h%]h']uhjwh]rh3X Componentrr}r(hUhj}ubahhgubaubh3Xe can be used and subclassed instead which provides an implicit mechanism for creating event handlers.rr}r(hXe can be used and subclassed instead which provides an implicit mechanism for creating event handlers.hjpubeubhE)r}r(hXBasically every method in the component is automatically and implicitly marked as an event handler with ``@handler()`` where ```` is the name of each method applied.hjbhhhhHh }r(h"]h#]h$]h%]h']uh)K)``h }r(h"]h#]h$]h%]h']uhjh]rh3X@handler()rr}r(hUhjubahhgubh3X where rr}r(hX where hjubh\)r}r(hX ````h }r(h"]h#]h$]h%]h']uhjh]rh3Xrr}r(hUhjubahhgubh3X$ is the name of each method applied.rr}r(hX$ is the name of each method applied.hjubeubhE)r}r(hXThe only exceptions are:rhjbhhhhHh }r(h"]h#]h$]h%]h']uh)K@h*hh]rh3XThe only exceptions are:rr}r(hjhjubaubcdocutils.nodes bullet_list r)r}r(hUhjbhhhU bullet_listrh }r(UbulletrX-h%]h$]h"]h#]h']uh)KBh*hh]r(cdocutils.nodes list_item r)r}r(hX,Methods that start with an underscore ``_``.rhjhhhU list_itemrh }r(h"]h#]h$]h%]h']uh)Nh*hh]rhE)r}r(hjhjhhhhHh }r(h"]h#]h$]h%]h']uh)KBh]r(h3X&Methods that start with an underscore rr}r(hX&Methods that start with an underscore hjubh\)r}r(hX``_``h }r(h"]h#]h$]h%]h']uhjh]rh3X_r}r(hUhjubahhgubh3X.r}r(hX.hjubeubaubj)r}r(hX^Methods already marked explicitly with the :func:`~circuits.core.handlers.handler` decorator. hjhhhjh }r(h"]h#]h$]h%]h']uh)Nh*hh]rhE)r}r(hX]Methods already marked explicitly with the :func:`~circuits.core.handlers.handler` decorator.hjhhhhHh }r(h"]h#]h$]h%]h']uh)KCh]r(h3X+Methods already marked explicitly with the rr}r(hX+Methods already marked explicitly with the hjubhN)r}r(hX':func:`~circuits.core.handlers.handler`rhjhhhhRh }r(UreftypeXfunchThUXcircuits.core.handlers.handlerU refdomainXpyrh%]h$]U refexplicith"]h#]h']hWhXhYNhZNuh)KCh]rh\)r}r(hjh }r(h"]h#]r(hajXpy-funcreh$]h%]h']uhjh]rh3X handler()rr}r(hUhjubahhgubaubh3X decorator.rr}r(hX decorator.hjubeubaubeubhE)r}r(hXExample:rhjbhhhhHh }r(h"]h#]h$]h%]h']uh)KEh*hh]rh3XExample:rr}r(hjhjubaubh)r}r(hX<#!/usr/bin/env python from circuits import handler, Component, Event class hello(Event): """hello Event""" class App(Component): def _say(self, message): """Print the given message This is a private method as denoted via the prefixed underscore. This will not be turned into an event handler. """ print(message) def started(self, manager): self._say("App Started!") self.fire(hello()) raise SystemExit(0) @handler("hello") def print_hello(self): """hello Event Handlers Print "Hello World!" when the ``hello`` Event is received. As this is already decorated with the ``@handler`` decorator, it will be left as it is and won't get touched by the implicit event handler creation mechanisms. """ print("Hello World!") @handler(False) def test(self, *args, **kwargs): """A simple test method that does nothing This will not be turned into an event handlers because of the ``False`` argument passed to the ``@handler`` decorator. This only makes sense when subclassing ``Component`` and you want to have fine grained control over what methods are not turned into event handlers. """ pass App().run()hjbhhhhh }r(hhh%]h$]h"]h#]r(UcoderXpythonreh']uh)Kh*hh]r(cdocutils.nodes inline r)r}r(hX#!/usr/bin/env pythonh }r(h"]h#]rUcommentrah$]h%]h']uhjh]rh3X#!/usr/bin/env pythonrr}r(hUhjubahUinlinerubh3X rr}r(hX hjubj)r}r(hXfromh }r(h"]h#]r(UkeywordrU namespacereh$]h%]h']uhjh]r h3Xfromr r }r (hUhjubahjubh3X r }r(hX hjubj)r}r(hXcircuitsh }r(h"]h#]r(UnamerU namespacereh$]h%]h']uhjh]rh3Xcircuitsrr}r(hUhjubahjubh3X r}r(hX hjubj)r}r(hXimporth }r(h"]h#]r(UkeywordrU namespacer eh$]h%]h']uhjh]r!h3Ximportr"r#}r$(hUhjubahjubh3X r%}r&(hX hjubj)r'}r((hXhandlerh }r)(h"]h#]r*Unamer+ah$]h%]h']uhjh]r,h3Xhandlerr-r.}r/(hUhj'ubahjubj)r0}r1(hX,h }r2(h"]h#]r3U punctuationr4ah$]h%]h']uhjh]r5h3X,r6}r7(hUhj0ubahjubh3X r8}r9(hX hjubj)r:}r;(hX Componenth }r<(h"]h#]r=Unamer>ah$]h%]h']uhjh]r?h3X Componentr@rA}rB(hUhj:ubahjubj)rC}rD(hX,h }rE(h"]h#]rFU punctuationrGah$]h%]h']uhjh]rHh3X,rI}rJ(hUhjCubahjubh3X rK}rL(hX hjubj)rM}rN(hXEventh }rO(h"]h#]rPUnamerQah$]h%]h']uhjh]rRh3XEventrSrT}rU(hUhjMubahjubh3X rVrW}rX(hX hjubj)rY}rZ(hXclassh }r[(h"]h#]r\Ukeywordr]ah$]h%]h']uhjh]r^h3Xclassr_r`}ra(hUhjYubahjubh3X rb}rc(hX hjubj)rd}re(hXhelloh }rf(h"]h#]rg(UnamerhUclassrieh$]h%]h']uhjh]rjh3Xhellorkrl}rm(hUhjdubahjubj)rn}ro(hX(h }rp(h"]h#]rqU punctuationrrah$]h%]h']uhjh]rsh3X(rt}ru(hUhjnubahjubj)rv}rw(hXEventh }rx(h"]h#]ryUnamerzah$]h%]h']uhjh]r{h3XEventr|r}}r~(hUhjvubahjubj)r}r(hX):h }r(h"]h#]rU punctuationrah$]h%]h']uhjh]rh3X):rr}r(hUhjubahjubh3X rr}r(hX hjubj)r}r(hX"""hello Event"""h }r(h"]h#]r(UliteralrUstringrUdocreh$]h%]h']uhjh]rh3X"""hello Event"""rr}r(hUhjubahjubh3X rr}r(hX hjubj)r}r(hXclassh }r(h"]h#]rUkeywordrah$]h%]h']uhjh]rh3Xclassrr}r(hUhjubahjubh3X r}r(hX hjubj)r}r(hXApph }r(h"]h#]r(UnamerUclassreh$]h%]h']uhjh]rh3XApprr}r(hUhjubahjubj)r}r(hX(h }r(h"]h#]rU punctuationrah$]h%]h']uhjh]rh3X(r}r(hUhjubahjubj)r}r(hX Componenth }r(h"]h#]rUnamerah$]h%]h']uhjh]rh3X Componentrr}r(hUhjubahjubj)r}r(hX):h }r(h"]h#]rU punctuationrah$]h%]h']uhjh]rh3X):rr}r(hUhjubahjubh3X rr}r(hX hjubj)r}r(hXdefh }r(h"]h#]rUkeywordrah$]h%]h']uhjh]rh3Xdefrr}r(hUhjubahjubh3X r}r(hX hjubj)r}r(hX_sayh }r(h"]h#]r(UnamerUfunctionreh$]h%]h']uhjh]rh3X_sayrr}r(hUhjubahjubj)r}r(hX(h }r(h"]h#]rU punctuationrah$]h%]h']uhjh]rh3X(r}r(hUhjubahjubj)r}r(hXselfh }r(h"]h#]r(UnamerUbuiltinrUpseudoreh$]h%]h']uhjh]rh3Xselfrr}r(hUhjubahjubj)r}r(hX,h }r(h"]h#]rU punctuationrah$]h%]h']uhjh]rh3X,r}r(hUhjubahjubh3X r}r(hX hjubj)r}r(hXmessageh }r(h"]h#]rUnamerah$]h%]h']uhjh]rh3Xmessagerr}r(hUhjubahjubj)r}r(hX):h }r(h"]h#]r U punctuationr ah$]h%]h']uhjh]r h3X):r r }r(hUhjubahjubh3X rr}r(hX hjubj)r}r(hX"""Print the given message This is a private method as denoted via the prefixed underscore. This will not be turned into an event handler. """h }r(h"]h#]r(UliteralrUstringrUdocreh$]h%]h']uhjh]rh3X"""Print the given message This is a private method as denoted via the prefixed underscore. This will not be turned into an event handler. """rr}r(hUhjubahjubh3X rr}r(hX hjubj)r }r!(hXprinth }r"(h"]h#]r#Ukeywordr$ah$]h%]h']uhjh]r%h3Xprintr&r'}r((hUhj ubahjubj)r)}r*(hX(h }r+(h"]h#]r,U punctuationr-ah$]h%]h']uhjh]r.h3X(r/}r0(hUhj)ubahjubj)r1}r2(hXmessageh }r3(h"]h#]r4Unamer5ah$]h%]h']uhjh]r6h3Xmessager7r8}r9(hUhj1ubahjubj)r:}r;(hX)h }r<(h"]h#]r=U punctuationr>ah$]h%]h']uhjh]r?h3X)r@}rA(hUhj:ubahjubh3X rBrC}rD(hX hjubj)rE}rF(hXdefh }rG(h"]h#]rHUkeywordrIah$]h%]h']uhjh]rJh3XdefrKrL}rM(hUhjEubahjubh3X rN}rO(hX hjubj)rP}rQ(hXstartedh }rR(h"]h#]rS(UnamerTUfunctionrUeh$]h%]h']uhjh]rVh3XstartedrWrX}rY(hUhjPubahjubj)rZ}r[(hX(h }r\(h"]h#]r]U punctuationr^ah$]h%]h']uhjh]r_h3X(r`}ra(hUhjZubahjubj)rb}rc(hXselfh }rd(h"]h#]re(UnamerfUbuiltinrgUpseudorheh$]h%]h']uhjh]rih3Xselfrjrk}rl(hUhjbubahjubj)rm}rn(hX,h }ro(h"]h#]rpU punctuationrqah$]h%]h']uhjh]rrh3X,rs}rt(hUhjmubahjubh3X ru}rv(hX hjubj)rw}rx(hXmanagerh }ry(h"]h#]rzUnamer{ah$]h%]h']uhjh]r|h3Xmanagerr}r~}r(hUhjwubahjubj)r}r(hX):h }r(h"]h#]rU punctuationrah$]h%]h']uhjh]rh3X):rr}r(hUhjubahjubh3X rr}r(hX hjubj)r}r(hXselfh }r(h"]h#]r(UnamerUbuiltinrUpseudoreh$]h%]h']uhjh]rh3Xselfrr}r(hUhjubahjubj)r}r(hX.h }r(h"]h#]rUoperatorrah$]h%]h']uhjh]rh3X.r}r(hUhjubahjubj)r}r(hX_sayh }r(h"]h#]rUnamerah$]h%]h']uhjh]rh3X_sayrr}r(hUhjubahjubj)r}r(hX(h }r(h"]h#]rU punctuationrah$]h%]h']uhjh]rh3X(r}r(hUhjubahjubj)r}r(hX"App Started!"h }r(h"]h#]r(UliteralrUstringreh$]h%]h']uhjh]rh3X"App Started!"rr}r(hUhjubahjubj)r}r(hX)h }r(h"]h#]rU punctuationrah$]h%]h']uhjh]rh3X)r}r(hUhjubahjubh3X rr}r(hX hjubj)r}r(hXselfh }r(h"]h#]r(UnamerUbuiltinrUpseudoreh$]h%]h']uhjh]rh3Xselfrr}r(hUhjubahjubj)r}r(hX.h }r(h"]h#]rUoperatorrah$]h%]h']uhjh]rh3X.r}r(hUhjubahjubj)r}r(hXfireh }r(h"]h#]rUnamerah$]h%]h']uhjh]rh3Xfirerr}r(hUhjubahjubj)r}r(hX(h }r(h"]h#]rU punctuationrah$]h%]h']uhjh]rh3X(r}r(hUhjubahjubj)r}r(hXhelloh }r(h"]h#]rUnamerah$]h%]h']uhjh]rh3Xhellorr}r(hUhjubahjubj)r}r(hX())h }r(h"]h#]rU punctuationrah$]h%]h']uhjh]rh3X())rr}r(hUhjubahjubh3X rr}r(hX hjubj)r}r(hXraiseh }r(h"]h#]rUkeywordrah$]h%]h']uhjh]rh3Xraiserr}r(hUhjubahjubh3X r}r(hX hjubj)r }r (hX SystemExith }r (h"]h#]r (Unamer U exceptionreh$]h%]h']uhjh]rh3X SystemExitrr}r(hUhj ubahjubj)r}r(hX(h }r(h"]h#]rU punctuationrah$]h%]h']uhjh]rh3X(r}r(hUhjubahjubj)r}r(hX0h }r(h"]h#]r(UliteralrUnumberr Uintegerr!eh$]h%]h']uhjh]r"h3X0r#}r$(hUhjubahjubj)r%}r&(hX)h }r'(h"]h#]r(U punctuationr)ah$]h%]h']uhjh]r*h3X)r+}r,(hUhj%ubahjubh3X r-r.}r/(hX hjubj)r0}r1(hX@handlerh }r2(h"]h#]r3(Unamer4U decoratorr5eh$]h%]h']uhjh]r6h3X@handlerr7r8}r9(hUhj0ubahjubj)r:}r;(hX(h }r<(h"]h#]r=U punctuationr>ah$]h%]h']uhjh]r?h3X(r@}rA(hUhj:ubahjubj)rB}rC(hX"hello"h }rD(h"]h#]rE(UliteralrFUstringrGeh$]h%]h']uhjh]rHh3X"hello"rIrJ}rK(hUhjBubahjubj)rL}rM(hX)h }rN(h"]h#]rOU punctuationrPah$]h%]h']uhjh]rQh3X)rR}rS(hUhjLubahjubh3X rTrU}rV(hX hjubj)rW}rX(hXdefh }rY(h"]h#]rZUkeywordr[ah$]h%]h']uhjh]r\h3Xdefr]r^}r_(hUhjWubahjubh3X r`}ra(hX hjubj)rb}rc(hX print_helloh }rd(h"]h#]re(UnamerfUfunctionrgeh$]h%]h']uhjh]rhh3X print_hellorirj}rk(hUhjbubahjubj)rl}rm(hX(h }rn(h"]h#]roU punctuationrpah$]h%]h']uhjh]rqh3X(rr}rs(hUhjlubahjubj)rt}ru(hXselfh }rv(h"]h#]rw(UnamerxUbuiltinryUpseudorzeh$]h%]h']uhjh]r{h3Xselfr|r}}r~(hUhjtubahjubj)r}r(hX):h }r(h"]h#]rU punctuationrah$]h%]h']uhjh]rh3X):rr}r(hUhjubahjubh3X rr}r(hX hjubj)r}r(hX("""hello Event Handlers Print "Hello World!" when the ``hello`` Event is received. As this is already decorated with the ``@handler`` decorator, it will be left as it is and won't get touched by the implicit event handler creation mechanisms. """h }r(h"]h#]r(UliteralrUstringrUdocreh$]h%]h']uhjh]rh3X("""hello Event Handlers Print "Hello World!" when the ``hello`` Event is received. As this is already decorated with the ``@handler`` decorator, it will be left as it is and won't get touched by the implicit event handler creation mechanisms. """rr}r(hUhjubahjubh3X rr}r(hX hjubj)r}r(hXprinth }r(h"]h#]rUkeywordrah$]h%]h']uhjh]rh3Xprintrr}r(hUhjubahjubj)r}r(hX(h }r(h"]h#]rU punctuationrah$]h%]h']uhjh]rh3X(r}r(hUhjubahjubj)r}r(hX"Hello World!"h }r(h"]h#]r(UliteralrUstringreh$]h%]h']uhjh]rh3X"Hello World!"rr}r(hUhjubahjubj)r}r(hX)h }r(h"]h#]rU punctuationrah$]h%]h']uhjh]rh3X)r}r(hUhjubahjubh3X rr}r(hX hjubj)r}r(hX@handlerh }r(h"]h#]r(UnamerU decoratorreh$]h%]h']uhjh]rh3X@handlerrr}r(hUhjubahjubj)r}r(hX(h }r(h"]h#]rU punctuationrah$]h%]h']uhjh]rh3X(r}r(hUhjubahjubj)r}r(hXFalseh }r(h"]h#]r(UnamerUbuiltinrUpseudoreh$]h%]h']uhjh]rh3XFalserr}r(hUhjubahjubj)r}r(hX)h }r(h"]h#]rU punctuationrah$]h%]h']uhjh]rh3X)r}r(hUhjubahjubh3X rr}r(hX hjubj)r}r(hXdefh }r(h"]h#]rUkeywordrah$]h%]h']uhjh]rh3Xdefrr}r(hUhjubahjubh3X r}r(hX hjubj)r}r(hXtesth }r(h"]h#]r(UnamerUfunctionreh$]h%]h']uhjh]rh3Xtestrr}r(hUhjubahjubj)r}r(hX(h }r(h"]h#]rU punctuationrah$]h%]h']uhjh]rh3X(r}r(hUhjubahjubj)r}r(hXselfh }r(h"]h#]r(UnamerUbuiltinr Upseudor eh$]h%]h']uhjh]r h3Xselfr r }r(hUhjubahjubj)r}r(hX,h }r(h"]h#]rU punctuationrah$]h%]h']uhjh]rh3X,r}r(hUhjubahjubh3X r}r(hX hjubj)r}r(hX*h }r(h"]h#]rUoperatorrah$]h%]h']uhjh]rh3X*r}r (hUhjubahjubj)r!}r"(hXargsh }r#(h"]h#]r$Unamer%ah$]h%]h']uhjh]r&h3Xargsr'r(}r)(hUhj!ubahjubj)r*}r+(hX,h }r,(h"]h#]r-U punctuationr.ah$]h%]h']uhjh]r/h3X,r0}r1(hUhj*ubahjubh3X r2}r3(hX hjubj)r4}r5(hX**h }r6(h"]h#]r7Uoperatorr8ah$]h%]h']uhjh]r9h3X**r:r;}r<(hUhj4ubahjubj)r=}r>(hXkwargsh }r?(h"]h#]r@UnamerAah$]h%]h']uhjh]rBh3XkwargsrCrD}rE(hUhj=ubahjubj)rF}rG(hX):h }rH(h"]h#]rIU punctuationrJah$]h%]h']uhjh]rKh3X):rLrM}rN(hUhjFubahjubh3X rOrP}rQ(hX hjubj)rR}rS(hXr"""A simple test method that does nothing This will not be turned into an event handlers because of the ``False`` argument passed to the ``@handler`` decorator. This only makes sense when subclassing ``Component`` and you want to have fine grained control over what methods are not turned into event handlers. """h }rT(h"]h#]rU(UliteralrVUstringrWUdocrXeh$]h%]h']uhjh]rYh3Xr"""A simple test method that does nothing This will not be turned into an event handlers because of the ``False`` argument passed to the ``@handler`` decorator. This only makes sense when subclassing ``Component`` and you want to have fine grained control over what methods are not turned into event handlers. """rZr[}r\(hUhjRubahjubh3X r]r^}r_(hX hjubj)r`}ra(hXpassh }rb(h"]h#]rcUkeywordrdah$]h%]h']uhjh]reh3Xpassrfrg}rh(hUhj`ubahjubh3X rirj}rk(hX hjubj)rl}rm(hXApph }rn(h"]h#]roUnamerpah$]h%]h']uhjh]rqh3XApprrrs}rt(hUhjlubahjubj)ru}rv(hX()h }rw(h"]h#]rxU punctuationryah$]h%]h']uhjh]rzh3X()r{r|}r}(hUhjuubahjubj)r~}r(hX.h }r(h"]h#]rUoperatorrah$]h%]h']uhjh]rh3X.r}r(hUhj~ubahjubj)r}r(hXrunh }r(h"]h#]rUnamerah$]h%]h']uhjh]rh3Xrunrr}r(hUhjubahjubj)r}r(hX()h }r(h"]h#]rU punctuationrah$]h%]h']uhjh]rh3X()rr}r(hUhjubahjubeubcdocutils.nodes note r)r}r(hXYou can specify that a method will not be marked as an event handler by passing ``False`` as the first argument to ``@handler()``.hjbhhhUnoterh }r(h"]h#]h$]h%]h']uh)Nh*hh]rhE)r}r(hXYou can specify that a method will not be marked as an event handler by passing ``False`` as the first argument to ``@handler()``.hjhhhhHh }r(h"]h#]h$]h%]h']uh)Kh]r(h3XPYou can specify that a method will not be marked as an event handler by passing rr}r(hXPYou can specify that a method will not be marked as an event handler by passing hjubh\)r}r(hX ``False``h }r(h"]h#]h$]h%]h']uhjh]rh3XFalserr}r(hUhjubahhgubh3X as the first argument to rr}r(hX as the first argument to hjubh\)r}r(hX``@handler()``h }r(h"]h#]h$]h%]h']uhjh]rh3X @handler()rr}r(hUhjubahhgubh3X.r}r(hX.hjubeubaubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh*hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh0NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesr U pep_base_urlr Uhttp://www.python.org/dev/peps/r Usyntax_highlightr Ulongr Uinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hjbhh7hhuUsubstitution_namesr}rhh*h }r(h"]h%]h$]Usourcehh#]h']uU footnotesr]rUrefidsr}r ub.circuits-3.1.0/docs/build/doctrees/man/debugger.doctree0000644000014400001440000002631312425011107024074 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(XusageqNXsample output(s)qNXdebuggerqNuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hUusageqhUsample-output-sqhUdebuggerquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqX9/home/prologic/work/circuits/docs/source/man/debugger.rstqUtagnameqUsectionqU attributesq }q!(Udupnamesq"]Uclassesq#]Ubackrefsq$]Uidsq%]q&(Xmodule-circuits.core.debuggerq'heUnamesq(]q)hauUlineq*KUdocumentq+hh]q,(cdocutils.nodes title q-)q.}q/(hXDebuggerq0hhhhhUtitleq1h }q2(h"]h#]h$]h%]h(]uh*Kh+hh]q3cdocutils.nodes Text q4XDebuggerq5q6}q7(hh0hh.ubaubcsphinx.addnodes index q8)q9}q:(hUhhhhhUindexq;h }q<(h%]h$]h"]h#]h(]Uentries]q=(Usingleq>Xcircuits.core.debugger (module)Xmodule-circuits.core.debuggerUtq?auh*Kh+hh]ubcdocutils.nodes paragraph q@)qA}qB(hXThe :mod:`~circuits.core` :class:`~Debugger` component is the standard way to debug your circuits applications. It services two purposes:hhhhhU paragraphqCh }qD(h"]h#]h$]h%]h(]uh*Kh+hh]qE(h4XThe qFqG}qH(hXThe hhAubcsphinx.addnodes pending_xref qI)qJ}qK(hX:mod:`~circuits.core`qLhhAhhhU pending_xrefqMh }qN(UreftypeXmodUrefwarnqOU reftargetqPX circuits.coreU refdomainXpyqQh%]h$]U refexplicith"]h#]h(]UrefdocqRX man/debuggerqSUpy:classqTNU py:moduleqUXcircuits.core.debuggerqVuh*Kh]qWcdocutils.nodes literal qX)qY}qZ(hhLh }q[(h"]h#]q\(Uxrefq]hQXpy-modq^eh$]h%]h(]uhhJh]q_h4Xcoreq`qa}qb(hUhhYubahUliteralqcubaubh4X qd}qe(hX hhAubhI)qf}qg(hX:class:`~Debugger`qhhhAhhhhMh }qi(UreftypeXclasshOhPXDebuggerU refdomainXpyqjh%]h$]U refexplicith"]h#]h(]hRhShTNhUhVuh*Kh]qkhX)ql}qm(hhhh }qn(h"]h#]qo(h]hjXpy-classqpeh$]h%]h(]uhhfh]qqh4XDebuggerqrqs}qt(hUhhlubahhcubaubh4X] component is the standard way to debug your circuits applications. It services two purposes:quqv}qw(hX] component is the standard way to debug your circuits applications. It services two purposes:hhAubeubcdocutils.nodes bullet_list qx)qy}qz(hUhhhhhU bullet_listq{h }q|(Ubulletq}X-h%]h$]h"]h#]h(]uh*K h+hh]q~(cdocutils.nodes list_item q)q}q(hX/Logging events as they flow through the system.qhhyhhhU list_itemqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qh@)q}q(hhhhhhhhCh }q(h"]h#]h$]h%]h(]uh*K h]qh4X/Logging events as they flow through the system.qq}q(hhhhubaubaubh)q}q(hX?Logging any exceptions that might occurs in your application. hhyhhhhh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qh@)q}q(hX=Logging any exceptions that might occurs in your application.qhhhhhhCh }q(h"]h#]h$]h%]h(]uh*K h]qh4X=Logging any exceptions that might occurs in your application.qq}q(hhhhubaubaubeubh)q}q(hUhhhhhhh }q(h"]h#]h$]h%]qhah(]qhauh*Kh+hh]q(h-)q}q(hXUsageqhhhhhh1h }q(h"]h#]h$]h%]h(]uh*Kh+hh]qh4XUsageqq}q(hhhhubaubh@)q}q(hXUsing the :class:`~Debugger` in your application is very straight forward just like any other component in the circuits component library. Simply add it to your application and register it somewhere (*it doesn't matter where*).hhhhhhCh }q(h"]h#]h$]h%]h(]uh*Kh+hh]q(h4X Using the qq}q(hX Using the hhubhI)q}q(hX:class:`~Debugger`qhhhhhhMh }q(UreftypeXclasshOhPXDebuggerU refdomainXpyqh%]h$]U refexplicith"]h#]h(]hRhShTNhUhVuh*Kh]qhX)q}q(hhh }q(h"]h#]q(h]hXpy-classqeh$]h%]h(]uhhh]qh4XDebuggerqq}q(hUhhubahhcubaubh4X in your application is very straight forward just like any other component in the circuits component library. Simply add it to your application and register it somewhere (qq}q(hX in your application is very straight forward just like any other component in the circuits component library. Simply add it to your application and register it somewhere (hhubcdocutils.nodes emphasis q)q}q(hX*it doesn't matter where*h }q(h"]h#]h$]h%]h(]uhhh]qh4Xit doesn't matter whereqŅq}q(hUhhubahUemphasisqubh4X).qɅq}q(hX).hhubeubh@)q}q(hXExample:qhhhhhhCh }q(h"]h#]h$]h%]h(]uh*Kh+hh]qh4XExample:qхq}q(hhhhubaubcdocutils.nodes literal_block q)q}q(hXfrom circuits import Component, Debugger class App(Component): """Your Application""" app = Appp() Debugger().register(app) app.run()hhhhhU literal_blockqh }q(UlinenosqوUlanguageqXpythonU xml:spaceqUpreserveqh%]h$]h"]h#]h(]uh*Kh+hh]qh4Xfrom circuits import Component, Debugger class App(Component): """Your Application""" app = Appp() Debugger().register(app) app.run()qޅq}q(hUhhubaubeubh)q}q(hUhhhhhhh }q(h"]h#]h$]h%]qhah(]qhauh*K-h+hh]q(h-)q}q(hXSample Output(s)qhhhhhh1h }q(h"]h#]h$]h%]h(]uh*K-h+hh]qh4XSample Output(s)q셁q}q(hhhhubaubh@)q}q(hX|Here are some example outputs that you should expect to see when using the :class:`~Debugger` component in your application.hhhhhhCh }q(h"]h#]h$]h%]h(]uh*K0h+hh]q(h4XKHere are some example outputs that you should expect to see when using the qq}q(hXKHere are some example outputs that you should expect to see when using the hhubhI)q}q(hX:class:`~Debugger`qhhhhhhMh }q(UreftypeXclasshOhPXDebuggerU refdomainXpyqh%]h$]U refexplicith"]h#]h(]hRhShTNhUhVuh*K0h]qhX)q}q(hhh }q(h"]h#]q(h]hXpy-classreh$]h%]h(]uhhh]rh4XDebuggerrr}r(hUhhubahhcubaubh4X component in your application.rr}r(hX component in your application.hhubeubh@)r}r (hX Example Code:r hhhhhhCh }r (h"]h#]h$]h%]h(]uh*K4h+hh]r h4X Example Code:r r}r(hj hjubaubh)r}r(hXfrom circuits import Event, Component, Debugger class foo(Event): """foo Event""" class App(Component): def foo(self, x, y): return x + y app = App() + Debugger() app.start()hhhhhhh }r(hوhXpythonhhh%]h$]h"]h#]h(]uh*K6h+hh]rh4Xfrom circuits import Event, Component, Debugger class foo(Event): """foo Event""" class App(Component): def foo(self, x, y): return x + y app = App() + Debugger() app.start()rr}r(hUhjubaubh@)r}r(hX Run with::rhhhhhhCh }r(h"]h#]h$]h%]h(]uh*KIh+hh]rh4X Run with:rr}r(hX Run with:hjubaubh)r}r (hXpython -i app.pyhhhhhhh }r!(hhh%]h$]h"]h#]h(]uh*KKh+hh]r"h4Xpython -i app.pyr#r$}r%(hUhjubaubh@)r&}r'(hXLogged Events::r(hhhhhhCh }r)(h"]h#]h$]h%]h(]uh*KMh+hh]r*h4XLogged Events:r+r,}r-(hXLogged Events:hj&ubaubh)r.}r/(hX, )> )> >>> app.fire(foo(1, 2)) >>> hhhhhhh }r0(hhh%]h$]h"]h#]h(]uh*KOh+hh]r1h4X, )> )> >>> app.fire(foo(1, 2)) >>> r2r3}r4(hUhj.ubaubh@)r5}r6(hXLogged Exceptions::r7hhhhhhCh }r8(h"]h#]h$]h%]h(]uh*KUh+hh]r9h4XLogged Exceptions:r:r;}r<(hXLogged Exceptions:hj5ubaubh)r=}r>(hX>>> app.fire(foo()) >>> , TypeError('foo() takes exactly 3 arguments (1 given)',), [' File "/home/prologic/work/circuits/circuits/core/manager.py", line 561, in _dispatcher\n value = handler(*eargs, **ekwargs)\n'] handler=>, fevent=)> ERROR () {}: foo() takes exactly 3 arguments (1 given) File "/home/prologic/work/circuits/circuits/core/manager.py", line 561, in _dispatcher value = handler(*eargs, **ekwargs)hhhhhhh }r?(hhh%]h$]h"]h#]h(]uh*KWh+hh]r@h4X>>> app.fire(foo()) >>> , TypeError('foo() takes exactly 3 arguments (1 given)',), [' File "/home/prologic/work/circuits/circuits/core/manager.py", line 561, in _dispatcher\n value = handler(*eargs, **ekwargs)\n'] handler=>, fevent=)> ERROR () {}: foo() takes exactly 3 arguments (1 given) File "/home/prologic/work/circuits/circuits/core/manager.py", line 561, in _dispatcher value = handler(*eargs, **ekwargs)rArB}rC(hUhj=ubaubeubeubahUU transformerrDNU footnote_refsrE}rFUrefnamesrG}rHUsymbol_footnotesrI]rJUautofootnote_refsrK]rLUsymbol_footnote_refsrM]rNU citationsrO]rPh+hU current_linerQNUtransform_messagesrR]rSUreporterrTNUid_startrUKU autofootnotesrV]rWU citation_refsrX}rYUindirect_targetsrZ]r[Usettingsr\(cdocutils.frontend Values r]or^}r_(Ufootnote_backlinksr`KUrecord_dependenciesraNU rfc_base_urlrbUhttp://tools.ietf.org/html/rcU tracebackrdUpep_referencesreNUstrip_commentsrfNU toc_backlinksrgUentryrhU language_coderiUenrjU datestamprkNU report_levelrlKU _destinationrmNU halt_levelrnKU strip_classesroNh1NUerror_encoding_error_handlerrpUbackslashreplacerqUdebugrrNUembed_stylesheetrsUoutput_encoding_error_handlerrtUstrictruU sectnum_xformrvKUdump_transformsrwNU docinfo_xformrxKUwarning_streamryNUpep_file_url_templaterzUpep-%04dr{Uexit_status_levelr|KUconfigr}NUstrict_visitorr~NUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjuUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhhhh'cdocutils.nodes target r)r}r(hUhhhhhUtargetrh }r(h"]h%]rh'ah$]Uismodh#]h(]uh*Kh+hh]ubhhuUsubstitution_namesr}rhh+h }r(h"]h%]h$]Usourcehh#]h(]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/man/components.doctree0000644000014400001440000006117312425011107024500 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X componentsqNXunregistering componentsqNXcomponent registrationqNXconvenient shorthand formq NX"implicit component registration(s)q NXtelnet exampleq uUsubstitution_defsq }q Uparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hU componentsqhUunregistering-componentsqhUcomponent-registrationqh Uconvenient-shorthand-formqh U!implicit-component-registration-sqh Utelnet-examplequUchildrenq]q(cdocutils.nodes target q)q}q(U rawsourceq UUparentq!hUsourceq"X;/home/prologic/work/circuits/docs/source/man/components.rstq#Utagnameq$Utargetq%U attributesq&}q'(Udupnamesq(]Uidsq)]q*Xmodule-circuits.core.componentsq+aUbackrefsq,]UismodUclassesq-]Unamesq.]uUlineq/KUdocumentq0hh]ubcsphinx.addnodes index q1)q2}q3(h Uh!hh"h#h$Uindexq4h&}q5(h)]h,]h(]h-]h.]Uentries]q6(Usingleq7X!circuits.core.components (module)Xmodule-circuits.core.componentsUtq8auh/Kh0hh]ubcdocutils.nodes section q9)q:}q;(h Uh!hh"h#h$Usectionqhah.]q?hauh/Kh0hh]q@(cdocutils.nodes title qA)qB}qC(h X ComponentsqDh!h:h"h#h$UtitleqEh&}qF(h(]h-]h,]h)]h.]uh/Kh0hh]qGcdocutils.nodes Text qHX ComponentsqIqJ}qK(h hDh!hBubaubcdocutils.nodes paragraph qL)qM}qN(h XThe architectural concept of circuits is to encapsulate system functionality into discrete manageable and reusable units, called *Components*, that interact by sending and handling events that flow throughout the system.h!h:h"h#h$U paragraphqOh&}qP(h(]h-]h,]h)]h.]uh/Kh0hh]qQ(hHXThe architectural concept of circuits is to encapsulate system functionality into discrete manageable and reusable units, called qRqS}qT(h XThe architectural concept of circuits is to encapsulate system functionality into discrete manageable and reusable units, called h!hMubcdocutils.nodes emphasis qU)qV}qW(h X *Components*h&}qX(h(]h-]h,]h)]h.]uh!hMh]qYhHX ComponentsqZq[}q\(h Uh!hVubah$Uemphasisq]ubhHXO, that interact by sending and handling events that flow throughout the system.q^q_}q`(h XO, that interact by sending and handling events that flow throughout the system.h!hMubeubhL)qa}qb(h X|Technically, a circuits *Component* is a Python class that inherits (*directly or indirectly*) from :class:`~BaseComponent`.h!h:h"h#h$hOh&}qc(h(]h-]h,]h)]h.]uh/K h0hh]qd(hHXTechnically, a circuits qeqf}qg(h XTechnically, a circuits h!haubhU)qh}qi(h X *Component*h&}qj(h(]h-]h,]h)]h.]uh!hah]qkhHX Componentqlqm}qn(h Uh!hhubah$h]ubhHX" is a Python class that inherits (qoqp}qq(h X" is a Python class that inherits (h!haubhU)qr}qs(h X*directly or indirectly*h&}qt(h(]h-]h,]h)]h.]uh!hah]quhHXdirectly or indirectlyqvqw}qx(h Uh!hrubah$h]ubhHX) from qyqz}q{(h X) from h!haubcsphinx.addnodes pending_xref q|)q}}q~(h X:class:`~BaseComponent`qh!hah"h#h$U pending_xrefqh&}q(UreftypeXclassUrefwarnqU reftargetqX BaseComponentU refdomainXpyqh)]h,]U refexplicith(]h-]h.]UrefdocqXman/componentsqUpy:classqNU py:moduleqXcircuits.core.componentsquh/K h]qcdocutils.nodes literal q)q}q(h hh&}q(h(]h-]q(UxrefqhXpy-classqeh,]h)]h.]uh!h}h]qhHX BaseComponentqq}q(h Uh!hubah$UliteralqubaubhHX.q}q(h X.h!haubeubhL)q}q(h XKComponents can be sub-classed like any other normal Python class, however components can also be composed of other components and it is natural to do so. These are called *Complex Components*. An example of a Complex Component within the circuits library is the :class:`circuits.web.servers.Server` Component which is comprised of:h!h:h"h#h$hOh&}q(h(]h-]h,]h)]h.]uh/Kh0hh]q(hHXComponents can be sub-classed like any other normal Python class, however components can also be composed of other components and it is natural to do so. These are called qq}q(h XComponents can be sub-classed like any other normal Python class, however components can also be composed of other components and it is natural to do so. These are called h!hubhU)q}q(h X*Complex Components*h&}q(h(]h-]h,]h)]h.]uh!hh]qhHXComplex Componentsqq}q(h Uh!hubah$h]ubhHXG. An example of a Complex Component within the circuits library is the qq}q(h XG. An example of a Complex Component within the circuits library is the h!hubh|)q}q(h X$:class:`circuits.web.servers.Server`qh!hh"h#h$hh&}q(UreftypeXclasshhXcircuits.web.servers.ServerU refdomainXpyqh)]h,]U refexplicith(]h-]h.]hhhNhhuh/Kh]qh)q}q(h hh&}q(h(]h-]q(hhXpy-classqeh,]h)]h.]uh!hh]qhHXcircuits.web.servers.Serverqq}q(h Uh!hubah$hubaubhHX! Component which is comprised of:qq}q(h X! Component which is comprised of:h!hubeubcdocutils.nodes bullet_list q)q}q(h Uh!h:h"h#h$U bullet_listqh&}q(UbulletqX-h)]h,]h(]h-]h.]uh/Kh0hh]q(cdocutils.nodes list_item q)q}q(h X':class:`circuits.net.sockets.TCPServer`qh!hh"h#h$U list_itemqh&}q(h(]h-]h,]h)]h.]uh/Nh0hh]qhL)q}q(h hh!hh"h#h$hOh&}q(h(]h-]h,]h)]h.]uh/Kh]qh|)q}q(h hh!hh"h#h$hh&}q(UreftypeXclasshhXcircuits.net.sockets.TCPServerU refdomainXpyqh)]h,]U refexplicith(]h-]h.]hhhNhhuh/Kh]qh)q}q(h hh&}q(h(]h-]q(hhXpy-classqeh,]h)]h.]uh!hh]qhHXcircuits.net.sockets.TCPServerqمq}q(h Uh!hubah$hubaubaubaubh)q}q(h X(:class:`circuits.web.servers.BaseServer`qh!hh"h#h$hh&}q(h(]h-]h,]h)]h.]uh/Nh0hh]qhL)q}q(h hh!hh"h#h$hOh&}q(h(]h-]h,]h)]h.]uh/Kh]qh|)q}q(h hh!hh"h#h$hh&}q(UreftypeXclasshhXcircuits.web.servers.BaseServerU refdomainXpyqh)]h,]U refexplicith(]h-]h.]hhhNhhuh/Kh]qh)q}q(h hh&}q(h(]h-]q(hhXpy-classqeh,]h)]h.]uh!hh]qhHXcircuits.web.servers.BaseServerqq}q(h Uh!hubah$hubaubaubaubh)q}q(h X:class:`circuits.web.http.HTTP`qh!hh"h#h$hh&}q(h(]h-]h,]h)]h.]uh/Nh0hh]qhL)q}q(h hh!hh"h#h$hOh&}q(h(]h-]h,]h)]h.]uh/Kh]qh|)q}q(h hh!hh"h#h$hh&}q(UreftypeXclasshhXcircuits.web.http.HTTPU refdomainXpyqh)]h,]U refexplicith(]h-]h.]hhhNhhuh/Kh]rh)r}r(h hh&}r(h(]h-]r(hhXpy-classreh,]h)]h.]uh!hh]rhHXcircuits.web.http.HTTPrr}r (h Uh!jubah$hubaubaubaubh)r }r (h X8:class:`circuits.web.dispatchers.dispatcher.Dispatcher` h!hh"h#h$hh&}r (h(]h-]h,]h)]h.]uh/Nh0hh]r hL)r}r(h X7:class:`circuits.web.dispatchers.dispatcher.Dispatcher`rh!j h"h#h$hOh&}r(h(]h-]h,]h)]h.]uh/Kh]rh|)r}r(h jh!jh"h#h$hh&}r(UreftypeXclasshhX.circuits.web.dispatchers.dispatcher.DispatcherU refdomainXpyrh)]h,]U refexplicith(]h-]h.]hhhNhhuh/Kh]rh)r}r(h jh&}r(h(]h-]r(hjXpy-classreh,]h)]h.]uh!jh]rhHX.circuits.web.dispatchers.dispatcher.Dispatcherrr}r (h Uh!jubah$hubaubaubaubeubcdocutils.nodes note r!)r"}r#(h X There is no class or other technical means to mark a component as a complex component. Rather, all component instances in a circuits based application belong to some component tree (there may be several), with Complex Components being a subtree within that structure.h!h:h"h#h$Unoter$h&}r%(h(]h-]h,]h)]h.]uh/Nh0hh]r&hL)r'}r((h X There is no class or other technical means to mark a component as a complex component. Rather, all component instances in a circuits based application belong to some component tree (there may be several), with Complex Components being a subtree within that structure.r)h!j"h"h#h$hOh&}r*(h(]h-]h,]h)]h.]uh/Kh]r+hHX There is no class or other technical means to mark a component as a complex component. Rather, all component instances in a circuits based application belong to some component tree (there may be several), with Complex Components being a subtree within that structure.r,r-}r.(h j)h!j'ubaubaubhL)r/}r0(h XuA Component is attached to the tree by registering with the parent and detached by unregistering itself. See methods:r1h!h:h"h#h$hOh&}r2(h(]h-]h,]h)]h.]uh/K h0hh]r3hHXuA Component is attached to the tree by registering with the parent and detached by unregistering itself. See methods:r4r5}r6(h j1h!j/ubaubh)r7}r8(h Uh!h:h"h#h$hh&}r9(hX-h)]h,]h(]h-]h.]uh/K#h0hh]r:(h)r;}r<(h X:meth:`~BaseComponent.register`r=h!j7h"h#h$hh&}r>(h(]h-]h,]h)]h.]uh/Nh0hh]r?hL)r@}rA(h j=h!j;h"h#h$hOh&}rB(h(]h-]h,]h)]h.]uh/K#h]rCh|)rD}rE(h j=h!j@h"h#h$hh&}rF(UreftypeXmethhhXBaseComponent.registerU refdomainXpyrGh)]h,]U refexplicith(]h-]h.]hhhNhhuh/K#h]rHh)rI}rJ(h j=h&}rK(h(]h-]rL(hjGXpy-methrMeh,]h)]h.]uh!jDh]rNhHX register()rOrP}rQ(h Uh!jIubah$hubaubaubaubh)rR}rS(h X#:meth:`~BaseComponent.unregister` h!j7h"h#h$hh&}rT(h(]h-]h,]h)]h.]uh/Nh0hh]rUhL)rV}rW(h X!:meth:`~BaseComponent.unregister`rXh!jRh"h#h$hOh&}rY(h(]h-]h,]h)]h.]uh/K$h]rZh|)r[}r\(h jXh!jVh"h#h$hh&}r](UreftypeXmethhhXBaseComponent.unregisterU refdomainXpyr^h)]h,]U refexplicith(]h-]h.]hhhNhhuh/K$h]r_h)r`}ra(h jXh&}rb(h(]h-]rc(hj^Xpy-methrdeh,]h)]h.]uh!j[h]rehHX unregister()rfrg}rh(h Uh!j`ubah$hubaubaubaubeubh9)ri}rj(h Uh!h:h"h#h$hr?}r@(h Uh!j:ubah$hubhHX, rArB}rC(h X, h!j3ubh)rD}rE(h X ``__iadd__``h&}rF(h(]h-]h,]h)]h.]uh!j3h]rGhHX__iadd__rHrI}rJ(h Uh!jDubah$hubhHX, rKrL}rM(h X, h!j3ubh)rN}rO(h X ``__sub__``h&}rP(h(]h-]h,]h)]h.]uh!j3h]rQhHX__sub__rRrS}rT(h Uh!jNubah$hubhHX and rUrV}rW(h X and h!j3ubh)rX}rY(h X ``__isub__``h&}rZ(h(]h-]h,]h)]h.]uh!j3h]r[hHX__isub__r\r]}r^(h Uh!jXubah$hubhHX.r_}r`(h X.h!j3ubeubhL)ra}rb(h XThe mapping is as follow:rch!jh"h#h$hOh&}rd(h(]h-]h,]h)]h.]uh/Keh0hh]rehHXThe mapping is as follow:rfrg}rh(h jch!jaubaubh)ri}rj(h Uh!jh"h#h$hh&}rk(hX-h)]h,]h(]h-]h.]uh/Kgh0hh]rl(h)rm}rn(h X3:meth:`~Component.register` map to ``+`` and ``+=``roh!jih"h#h$hh&}rp(h(]h-]h,]h)]h.]uh/Nh0hh]rqhL)rr}rs(h joh!jmh"h#h$hOh&}rt(h(]h-]h,]h)]h.]uh/Kgh]ru(h|)rv}rw(h X:meth:`~Component.register`rxh!jrh"h#h$hh&}ry(UreftypeXmethhhXComponent.registerU refdomainXpyrzh)]h,]U refexplicith(]h-]h.]hhhNhhuh/Kgh]r{h)r|}r}(h jxh&}r~(h(]h-]r(hjzXpy-methreh,]h)]h.]uh!jvh]rhHX register()rr}r(h Uh!j|ubah$hubaubhHX map to rr}r(h X map to h!jrubh)r}r(h X``+``h&}r(h(]h-]h,]h)]h.]uh!jrh]rhHX+r}r(h Uh!jubah$hubhHX and rr}r(h X and h!jrubh)r}r(h X``+=``h&}r(h(]h-]h,]h)]h.]uh!jrh]rhHX+=rr}r(h Uh!jubah$hubeubaubh)r}r(h X7:meth:`~Component.unregister` map to> ``-`` and ``-=`` h!jih"h#h$hh&}r(h(]h-]h,]h)]h.]uh/Nh0hh]rhL)r}r(h X6:meth:`~Component.unregister` map to> ``-`` and ``-=``rh!jh"h#h$hOh&}r(h(]h-]h,]h)]h.]uh/Khh]r(h|)r}r(h X:meth:`~Component.unregister`rh!jh"h#h$hh&}r(UreftypeXmethhhXComponent.unregisterU refdomainXpyrh)]h,]U refexplicith(]h-]h.]hhhNhhuh/Khh]rh)r}r(h jh&}r(h(]h-]r(hjXpy-methreh,]h)]h.]uh!jh]rhHX unregister()rr}r(h Uh!jubah$hubaubhHX map to> rr}r(h X map to> h!jubh)r}r(h X``-``h&}r(h(]h-]h,]h)]h.]uh!jh]rhHX-r}r(h Uh!jubah$hubhHX and rr}r(h X and h!jubh)r}r(h X``-=``h&}r(h(]h-]h,]h)]h.]uh!jh]rhHX-=rr}r(h Uh!jubah$hubeubaubeubhL)r}r(h X1For example the above could have been written as:rh!jh"h#h$hOh&}r(h(]h-]h,]h)]h.]uh/Kjh0hh]rhHX1For example the above could have been written as:rr}r(h jh!jubaubj)r}r(h Xfrom circuits import Component class Foo(Component): """Foo Component""" class App(Component): """App Component""" def init(self): self += Foo() (App() + Debugger()).run()h!jh"h#h$jh&}r(jjXpythonjjh)]h,]h(]h-]h.]uh/Klh0hh]rhHXfrom circuits import Component class Foo(Component): """Foo Component""" class App(Component): """App Component""" def init(self): self += Foo() (App() + Debugger()).run()rr}r(h Uh!jubaubeubh9)r}r(h Uh!h:h"h#h$h>> from circuits import Component >>> >>> class Foo(Component): ... """Foo Component""" ... >>> class App(Component): ... """App Component""" ... ... foo = Foo() ... >>> app = App() >>> app.components set([]) >>>h!jh"h#h$jh&}r(jjXpythonjjh)]h,]h(]h-]h.]uh/Kh0hh]rhHX>>> from circuits import Component >>> >>> class Foo(Component): ... """Foo Component""" ... >>> class App(Component): ... """App Component""" ... ... foo = Foo() ... >>> app = App() >>> app.components set([]) >>>rr}r(h Uh!jubaubhL)r}r(h XqThe `telnet Example `_ does this for example.h!jh"h#h$hOh&}r(h(]h-]h,]h)]h.]uh/Kh0hh]r(hHXThe rr}r(h XThe h!jubcdocutils.nodes reference r)r}r(h XV`telnet Example `_h&}r(UnameXtelnet ExampleUrefurirXBhttps://bitbucket.org/circuits/circuits/src/tip/examples/telnet.pyrh)]h,]h(]h-]h.]uh!jh]rhHXtelnet Examplerr}r(h Uh!jubah$U referencerubh)r }r (h XE U referencedr Kh!jh$h%h&}r (Urefurijh)]r hah,]h(]h-]h.]rh auh]ubhHX does this for example.rr}r(h X does this for example.h!jubeubeubeubeh UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh0hU current_linerNUtransform_messagesr ]r!cdocutils.nodes system_message r")r#}r$(h Uh&}r%(h(]UlevelKh)]h,]Usourceh#h-]h.]UlineKUtypeUINFOr&uh]r'hL)r(}r)(h Uh&}r*(h(]h-]h,]h)]h.]uh!j#h]r+hHXEHyperlink target "module-circuits.core.components" is not referenced.r,r-}r.(h Uh!j(ubah$hOubah$Usystem_messager/ubaUreporterr0NUid_startr1KU autofootnotesr2]r3U citation_refsr4}r5Uindirect_targetsr6]r7Usettingsr8(cdocutils.frontend Values r9or:}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_classesrKNhENUerror_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_internalsr_NUsectsubtitle_xformr`U source_linkraNUrfc_referencesrbNUoutput_encodingrcUutf-8rdU source_urlreNUinput_encodingrfU utf-8-sigrgU_disable_configrhNU id_prefixriUU tab_widthrjKUerror_encodingrkUUTF-8rlU_sourcermh#Ugettext_compactrnU generatorroNUdump_internalsrpNU smart_quotesrqU pep_base_urlrrUhttp://www.python.org/dev/peps/rsUsyntax_highlightrtUlongruUinput_encoding_error_handlerrvjQUauto_id_prefixrwUidrxUdoctitle_xformryUstrip_elements_with_classesrzNU _config_filesr{]Ufile_insertion_enabledr|U raw_enabledr}KU dump_settingsr~NubUsymbol_footnote_startrKUidsr}r(hj h+hhjhjihjhh:hjuUsubstitution_namesr}rh$h0h&}r(h(]h)]h,]Usourceh#h-]h.]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/man/manager.doctree0000644000014400001440000002340212425011107023716 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(XusageqNXmanagerqNuUsubstitution_defsq}q Uparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startqKUnameidsq}q(hUusageqhUmanagerquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqX8/home/prologic/work/circuits/docs/source/man/manager.rstqUtagnameqUsectionqU attributesq}q(Udupnamesq ]Uclassesq!]Ubackrefsq"]Uidsq#]q$(Xmodule-circuits.core.managerq%heUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hXManagerq.hhhhhUtitleq/h}q0(h ]h!]h"]h#]h&]uh(Kh)hh]q1cdocutils.nodes Text q2XManagerq3q4}q5(hh.hh,ubaubcsphinx.addnodes index q6)q7}q8(hUhhhhhUindexq9h}q:(h#]h"]h ]h!]h&]Uentries]q;(Usingleq)q?}q@(hXThe :mod:`~circuits.core` :class:`~Manager` class is the base class of all components in circuits. It is what defines the API(s) of all components and necessary machinery to run your application smoothly.hhhhhU paragraphqAh}qB(h ]h!]h"]h#]h&]uh(Kh)hh]qC(h2XThe qDqE}qF(hXThe hh?ubcsphinx.addnodes pending_xref qG)qH}qI(hX:mod:`~circuits.core`qJhh?hhhU pending_xrefqKh}qL(UreftypeXmodUrefwarnqMU reftargetqNX circuits.coreU refdomainXpyqOh#]h"]U refexplicith ]h!]h&]UrefdocqPX man/managerqQUpy:classqRNU py:moduleqSXcircuits.core.managerqTuh(Kh]qUcdocutils.nodes literal qV)qW}qX(hhJh}qY(h ]h!]qZ(Uxrefq[hOXpy-modq\eh"]h#]h&]uhhHh]q]h2Xcoreq^q_}q`(hUhhWubahUliteralqaubaubh2X qb}qc(hX hh?ubhG)qd}qe(hX:class:`~Manager`qfhh?hhhhKh}qg(UreftypeXclasshMhNXManagerU refdomainXpyqhh#]h"]U refexplicith ]h!]h&]hPhQhRNhShTuh(Kh]qihV)qj}qk(hhfh}ql(h ]h!]qm(h[hhXpy-classqneh"]h#]h&]uhhdh]qoh2XManagerqpqq}qr(hUhhjubahhaubaubh2X class is the base class of all components in circuits. It is what defines the API(s) of all components and necessary machinery to run your application smoothly.qsqt}qu(hX class is the base class of all components in circuits. It is what defines the API(s) of all components and necessary machinery to run your application smoothly.hh?ubeubcdocutils.nodes note qv)qw}qx(hXwIt is not recommended to actually use the :class:`~Manager` in your application code unless you know what you're doing.hhhhhUnoteqyh}qz(h ]h!]h"]h#]h&]uh(Nh)hh]q{h>)q|}q}(hXwIt is not recommended to actually use the :class:`~Manager` in your application code unless you know what you're doing.hhwhhhhAh}q~(h ]h!]h"]h#]h&]uh(Kh]q(h2X*It is not recommended to actually use the qq}q(hX*It is not recommended to actually use the hh|ubhG)q}q(hX:class:`~Manager`qhh|hhhhKh}q(UreftypeXclasshMhNXManagerU refdomainXpyqh#]h"]U refexplicith ]h!]h&]hPhQhRNhShTuh(Kh]qhV)q}q(hhh}q(h ]h!]q(h[hXpy-classqeh"]h#]h&]uhhh]qh2XManagerqq}q(hUhhubahhaubaubh2X< in your application code unless you know what you're doing.qq}q(hX< in your application code unless you know what you're doing.hh|ubeubaubcdocutils.nodes warning q)q}q(hXA :class:`~Manager` **does not** know how to register itself to other components! It is a manager, not a component, however it does form the basis of every component.hhhhhUwarningqh}q(h ]h!]h"]h#]h&]uh(Nh)hh]qh>)q}q(hXA :class:`~Manager` **does not** know how to register itself to other components! It is a manager, not a component, however it does form the basis of every component.hhhhhhAh}q(h ]h!]h"]h#]h&]uh(Kh]q(h2XA qq}q(hXA hhubhG)q}q(hX:class:`~Manager`qhhhhhhKh}q(UreftypeXclasshMhNXManagerU refdomainXpyqh#]h"]U refexplicith ]h!]h&]hPhQhRNhShTuh(Kh]qhV)q}q(hhh}q(h ]h!]q(h[hXpy-classqeh"]h#]h&]uhhh]qh2XManagerqq}q(hUhhubahhaubaubh2X q}q(hX hhubcdocutils.nodes strong q)q}q(hX **does not**h}q(h ]h!]h"]h#]h&]uhhh]qh2Xdoes notqq}q(hUhhubahUstrongqubh2X know how to register itself to other components! It is a manager, not a component, however it does form the basis of every component.qq}q(hX know how to register itself to other components! It is a manager, not a component, however it does form the basis of every component.hhubeubaubh)q}q(hUhhhhhhh}q(h ]h!]h"]h#]qhah&]qhauh(Kh)hh]q(h+)q}q(hXUsageqhhhhhh/h}q(h ]h!]h"]h#]h&]uh(Kh)hh]qh2XUsageqʅq}q(hhhhubaubh>)q}q(hXUsing the :class:`~Manager` in your application is not really recommended except in some special circumstances where you want to have a top-level object that you can register things to.hhhhhhAh}q(h ]h!]h"]h#]h&]uh(Kh)hh]q(h2X Using the qхq}q(hX Using the hhubhG)q}q(hX:class:`~Manager`qhhhhhhKh}q(UreftypeXclasshMhNXManagerU refdomainXpyqh#]h"]U refexplicith ]h!]h&]hPhQhRNhShTuh(Kh]qhV)q}q(hhh}q(h ]h!]q(h[hXpy-classqeh"]h#]h&]uhhh]qh2XManagerqq}q(hUhhubahhaubaubh2X in your application is not really recommended except in some special circumstances where you want to have a top-level object that you can register things to.qㅁq}q(hX in your application is not really recommended except in some special circumstances where you want to have a top-level object that you can register things to.hhubeubh>)q}q(hXExample:qhhhhhhAh}q(h ]h!]h"]h#]h&]uh(K!h)hh]qh2XExample:q녁q}q(hhhhubaubcdocutils.nodes literal_block q)q}q(hXfrom circuits import Component, Manager class App(Component): """Your Application""" manager = Manager() App().register(manager) manager.run()hhhhhU literal_blockqh}q(UlinenosqUlanguageqXpythonU xml:spaceqUpreserveqh#]h"]h ]h!]h&]uh(K#h)hh]qh2Xfrom circuits import Component, Manager class App(Component): """Your Application""" manager = Manager() App().register(manager) manager.run()qq}q(hUhhubaubhv)q}q(hXIf you *think* you need a :class:`~Manager` chances are you probably don't. Use a :class:`~circuits.core.components.Component` instead.hhhhhhyh}q(h ]h!]h"]h#]h&]uh(Nh)hh]qh>)q}r(hXIf you *think* you need a :class:`~Manager` chances are you probably don't. Use a :class:`~circuits.core.components.Component` instead.hhhhhhAh}r(h ]h!]h"]h#]h&]uh(K2h]r(h2XIf you rr}r(hXIf you hhubcdocutils.nodes emphasis r)r}r(hX*think*h}r (h ]h!]h"]h#]h&]uhhh]r h2Xthinkr r }r (hUhjubahUemphasisrubh2X you need a rr}r(hX you need a hhubhG)r}r(hX:class:`~Manager`rhhhhhhKh}r(UreftypeXclasshMhNXManagerU refdomainXpyrh#]h"]U refexplicith ]h!]h&]hPhQhRNhShTuh(K2h]rhV)r}r(hjh}r(h ]h!]r(h[jXpy-classreh"]h#]h&]uhjh]rh2XManagerrr}r (hUhjubahhaubaubh2X' chances are you probably don't. Use a r!r"}r#(hX' chances are you probably don't. Use a hhubhG)r$}r%(hX,:class:`~circuits.core.components.Component`r&hhhhhhKh}r'(UreftypeXclasshMhNX"circuits.core.components.ComponentU refdomainXpyr(h#]h"]U refexplicith ]h!]h&]hPhQhRNhShTuh(K2h]r)hV)r*}r+(hj&h}r,(h ]h!]r-(h[j(Xpy-classr.eh"]h#]h&]uhj$h]r/h2X Componentr0r1}r2(hUhj*ubahhaubaubh2X instead.r3r4}r5(hX instead.hhubeubaubeubeubahUU transformerr6NU footnote_refsr7}r8Urefnamesr9}r:Usymbol_footnotesr;]r<Uautofootnote_refsr=]r>Usymbol_footnote_refsr?]r@U citationsrA]rBh)hU current_linerCNUtransform_messagesrD]rEUreporterrFNUid_startrGKU autofootnotesrH]rIU citation_refsrJ}rKUindirect_targetsrL]rMUsettingsrN(cdocutils.frontend Values rOorP}rQ(Ufootnote_backlinksrRKUrecord_dependenciesrSNU rfc_base_urlrTUhttp://tools.ietf.org/html/rUU tracebackrVUpep_referencesrWNUstrip_commentsrXNU toc_backlinksrYUentryrZU language_coder[Uenr\U datestampr]NU report_levelr^KU _destinationr_NU halt_levelr`KU strip_classesraNh/NUerror_encoding_error_handlerrbUbackslashreplacercUdebugrdNUembed_stylesheetreUoutput_encoding_error_handlerrfUstrictrgU sectnum_xformrhKUdump_transformsriNU docinfo_xformrjKUwarning_streamrkNUpep_file_url_templaterlUpep-%04drmUexit_status_levelrnKUconfigroNUstrict_visitorrpNUcloak_email_addressesrqUtrim_footnote_reference_spacerrUenvrsNUdump_pseudo_xmlrtNUexpose_internalsruNUsectsubtitle_xformrvU source_linkrwNUrfc_referencesrxNUoutput_encodingryUutf-8rzU source_urlr{NUinput_encodingr|U utf-8-sigr}U_disable_configr~NU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjgUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhhhh%cdocutils.nodes target r)r}r(hUhhhhhUtargetrh}r(h ]h#]rh%ah"]Uismodh!]h&]uh(Kh)hh]ubuUsubstitution_namesr}rhh)h}r(h ]h#]h"]Usourcehh!]h&]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/man/index.doctree0000644000014400001440000001265212425013455023430 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits user manualqNX core libraryqNX miscellaneousqNuUsubstitution_defsq }q Uparse_messagesq ]q (cdocutils.nodes system_message q )q}q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhh)q}q(hUhhUsourceqX6/home/prologic/work/circuits/docs/source/man/index.rstqUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!Ucircuits-user-manualq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q((cdocutils.nodes title q))q*}q+(hXcircuits User Manualq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0Xcircuits User Manualq1q2}q3(hh,hh*ubaubhh)q4}q5(hUhhhhhhh}q6(h]h]h]h ]q7U miscellaneousq8ah#]q9hauh%Kh&hh']q:(h))q;}q<(hX Miscellaneousq=hh4hhhh-h}q>(h]h]h]h ]h#]uh%Kh&hh']q?h0X Miscellaneousq@qA}qB(hh=hh;ubaubcdocutils.nodes compound qC)qD}qE(hUhh4hhhUcompoundqFh}qG(h]h]qHUtoctree-wrapperqIah]h ]h#]uh%Nh&hh']qJcsphinx.addnodes toctree qK)qL}qM(hUhhDhhhUtoctreeqNh}qO(UnumberedqPKU includehiddenqQhX man/indexqRU titlesonlyqSUglobqTh ]h]h]h]h#]UentriesqU]qVNXman/misc/toolsqWqXaUhiddenqYU includefilesqZ]q[hWaUmaxdepthq\Kuh%K h']ubaubeubeubhhhhh}q](h]h]h]h ]q^U core-libraryq_ah#]q`hauh%Kh&hh']qa(h))qb}qc(hX Core Libraryqdhhhhhh-h}qe(h]h]h]h ]h#]uh%Kh&hh']qfh0X Core Libraryqgqh}qi(hhdhhbubaubhC)qj}qk(hUhhhhhhFh}ql(h]h]qmhIah]h ]h#]uh%Nh&hh']qnhK)qo}qp(hUhhjhhhhNh}qq(hPKhQhhRhShTh ]h]h]h]h#]hU]qr(NXman/componentsqsqtNX man/debuggerquqvNX man/eventsqwqxNX man/handlersqyqzNX man/managerq{q|NX man/valuesq}q~ehYhZ]q(hshuhwhyh{h}eh\Kuh%K h']ubaubeubhhhUsystem_messageqh}q(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGquh%Nh&hh']qcdocutils.nodes paragraph q)q}q(hUh}q(h]h]h]h ]h#]uhhh']qh0X@toctree contains reference to nonexisting document u'man/bridge'qq}q(hUhhubahU paragraphqubaubh )q}q(hUhhhhhhh}q(h]UlevelKh ]h]Usourcehh]h#]UlineK Utypehuh%Nh&hh']qh)q}q(hUh}q(h]h]h]h ]h#]uhhh']qh0XAtoctree contains reference to nonexisting document u'man/helpers'qq}q(hUhhubahhubaubh )q}q(hUhhhhhhh}q(h]UlevelKh ]h]Usourcehh]h#]UlineK Utypehuh%Nh&hh']qh)q}q(hUh}q(h]h]h]h ]h#]uhhh']qh0X@toctree contains reference to nonexisting document u'man/loader'qq}q(hUhhubahhubaubh )q}q(hUhhhhhhh}q(h]UlevelKh ]h]Usourcehh]h#]UlineK Utypehuh%Nh&hh']qh)q}q(hUh}q(h]h]h]h ]h#]uhhh']qh0XAtoctree contains reference to nonexisting document u'man/pollers'qq}q(hUhhubahhubaubh )q}q(hUhhhhhhh}q(h]UlevelKh ]h]Usourcehh]h#]UlineK Utypehuh%Nh&hh']qh)q}q(hUh}q(h]h]h]h ]h#]uhhh']qh0X@toctree contains reference to nonexisting document u'man/timers'qq}q(hUhhubahhubaubh )q}q(hUhhhhhhh}q(h]UlevelKh ]h]Usourcehh]h#]UlineK Utypehuh%Nh&hh']qh)q}q(hUh}q(h]h]h]h ]h#]uhhh']qh0X?toctree contains reference to nonexisting document u'man/utils'qq}q(hUhhubahhubaubh )q}q(hUhhhhhhh}q(h]UlevelKh ]h]Usourcehh]h#]UlineK Utypehuh%Nh&hh']qh)q}q(hUh}q(h]h]h]h ]h#]uhhh']qh0XAtoctree contains reference to nonexisting document u'man/workers'q̅q}q(hUhhubahhubaubeUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hh"hh_hh8uh']qhahUU 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_classesrNh-NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformr KUwarning_streamr NUpep_file_url_templater Upep-%04dr Uexit_status_levelr KUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingr UUTF-8r!U_sourcer"hUgettext_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_enabledr1U raw_enabledr2KU dump_settingsr3NubUsymbol_footnote_startr4KUidsr5}r6(h"hh8h4h_huUsubstitution_namesr7}r8hh&h}r9(h]h ]h]Usourcehh]h#]uU footnotesr:]r;Urefidsr<}r=ub.circuits-3.1.0/docs/build/doctrees/man/misc/0000755000014400001440000000000012425013643021676 5ustar prologicusers00000000000000circuits-3.1.0/docs/build/doctrees/man/misc/tools.doctree0000644000014400001440000011272412425011107024405 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X6displaying a visual representation of your applicationqNXtoolsqNX matplotlibqXintrospecting your applicationq NXnetworkxq Xtelnet exampleq X pygraphvizq uUsubstitution_defsq }qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hU6displaying-a-visual-representation-of-your-applicationqhUtoolsqhU matplotlibqh Uintrospecting-your-applicationqh Unetworkxqh Utelnet-exampleqh U pygraphvizquUchildrenq]qcdocutils.nodes section q)q }q!(U rawsourceq"UUparentq#hUsourceq$X;/home/prologic/work/circuits/docs/source/man/misc/tools.rstq%Utagnameq&Usectionq'U attributesq(}q)(Udupnamesq*]Uclassesq+]Ubackrefsq,]Uidsq-]q.haUnamesq/]q0hauUlineq1KUdocumentq2hh]q3(cdocutils.nodes title q4)q5}q6(h"XToolsq7h#h h$h%h&Utitleq8h(}q9(h*]h+]h,]h-]h/]uh1Kh2hh]q:cdocutils.nodes Text q;XToolsq(h"h7h#h5ubaubcdocutils.nodes paragraph q?)q@}qA(h"X<There are two main tools of interest in circuits. These are:qBh#h h$h%h&U paragraphqCh(}qD(h*]h+]h,]h-]h/]uh1Kh2hh]qEh;X<There are two main tools of interest in circuits. These are:qFqG}qH(h"hBh#h@ubaubcdocutils.nodes bullet_list qI)qJ}qK(h"Uh#h h$h%h&U bullet_listqLh(}qM(UbulletqNX-h-]h,]h*]h+]h/]uh1Kh2hh]qO(cdocutils.nodes list_item qP)qQ}qR(h"X!:py:func:`circuits.tools.inspect`qSh#hJh$h%h&U list_itemqTh(}qU(h*]h+]h,]h-]h/]uh1Nh2hh]qVh?)qW}qX(h"hSh#hQh$h%h&hCh(}qY(h*]h+]h,]h-]h/]uh1Kh]qZcsphinx.addnodes pending_xref q[)q\}q](h"hSh#hWh$h%h&U pending_xrefq^h(}q_(UreftypeXfuncUrefwarnq`U reftargetqaXcircuits.tools.inspectU refdomainXpyqbh-]h,]U refexplicith*]h+]h/]UrefdocqcXman/misc/toolsqdUpy:classqeNU py:moduleqfNuh1Kh]qgcdocutils.nodes literal qh)qi}qj(h"hSh(}qk(h*]h+]ql(UxrefqmhbXpy-funcqneh,]h-]h/]uh#h\h]qoh;Xcircuits.tools.inspect()qpqq}qr(h"Uh#hiubah&UliteralqsubaubaubaubhP)qt}qu(h"X!:py:func:`circuits.tools.graph` h#hJh$h%h&hTh(}qv(h*]h+]h,]h-]h/]uh1Nh2hh]qwh?)qx}qy(h"X:py:func:`circuits.tools.graph`qzh#hth$h%h&hCh(}q{(h*]h+]h,]h-]h/]uh1K h]q|h[)q}}q~(h"hzh#hxh$h%h&h^h(}q(UreftypeXfunch`haXcircuits.tools.graphU refdomainXpyqh-]h,]U refexplicith*]h+]h/]hchdheNhfNuh1K h]qhh)q}q(h"hzh(}q(h*]h+]q(hmhXpy-funcqeh,]h-]h/]uh#h}h]qh;Xcircuits.tools.graph()qq}q(h"Uh#hubah&hsubaubaubaubeubh?)q}q(h"X:These can be found in the :py:mod:`circuits.tools` module.qh#h h$h%h&hCh(}q(h*]h+]h,]h-]h/]uh1K h2hh]q(h;XThese can be found in the qq}q(h"XThese can be found in the h#hubh[)q}q(h"X:py:mod:`circuits.tools`qh#hh$h%h&h^h(}q(UreftypeXmodh`haXcircuits.toolsU refdomainXpyqh-]h,]U refexplicith*]h+]h/]hchdheNhfNuh1K h]qhh)q}q(h"hh(}q(h*]h+]q(hmhXpy-modqeh,]h-]h/]uh#hh]qh;Xcircuits.toolsqq}q(h"Uh#hubah&hsubaubh;X module.qq}q(h"X module.h#hubeubh)q}q(h"Uh#h h$h%h&h'h(}q(h*]h+]h,]h-]qhah/]qh auh1Kh2hh]q(h4)q}q(h"XIntrospecting your Applicationqh#hh$h%h&h8h(}q(h*]h+]h,]h-]h/]uh1Kh2hh]qh;XIntrospecting your Applicationqq}q(h"hh#hubaubh?)q}q(h"XThe :py:func:`~circuits.tools.inspect` function is used to help introspect your application by displaying all the channels and events handlers defined through the system including any additional meta data about them.h#hh$h%h&hCh(}q(h*]h+]h,]h-]h/]uh1Kh2hh]q(h;XThe qq}q(h"XThe h#hubh[)q}q(h"X":py:func:`~circuits.tools.inspect`qh#hh$h%h&h^h(}q(UreftypeXfunch`haXcircuits.tools.inspectU refdomainXpyqh-]h,]U refexplicith*]h+]h/]hchdheNhfNuh1Kh]qhh)q}q(h"hh(}q(h*]h+]q(hmhXpy-funcqeh,]h-]h/]uh#hh]qh;X inspect()qƅq}q(h"Uh#hubah&hsubaubh;X function is used to help introspect your application by displaying all the channels and events handlers defined through the system including any additional meta data about them.qɅq}q(h"X function is used to help introspect your application by displaying all the channels and events handlers defined through the system including any additional meta data about them.h#hubeubh?)q}q(h"XExample:qh#hh$h%h&hCh(}q(h*]h+]h,]h-]h/]uh1Kh2hh]qh;XExample:qхq}q(h"hh#hubaubcdocutils.nodes literal_block q)q}q(h"X>>> from circuits import Component >>> class App(Component): ... def foo(self): ... pass ... >>> app = App() >>> from circuits.tools import inspect >>> print(inspect(app)) Components: 0 Event Handlers: 3 unregister; 1 foo; 1 prepare_unregister_complete; 1 .prepare_unregister_complete] (App._on_prepare_unregister_complete)>h#hh$h%h&U literal_blockqh(}q(U xml:spaceqUpreserveqh-]h,]h*]h+]q(UcodeqXpyconqeh/]uh1K.h2hh]q(cdocutils.nodes inline q)q}q(h"Xh(}q(h*]h+]q(UkeywordqU namespaceqeh,]h-]h/]uh#hh]h&Uinlinequbh)q}q(h"X>>> h(}q(h*]h+]q(UgenericqUpromptqeh,]h-]h/]uh#hh]qh;X>>> qq}q(h"Uh#hubah&hubh)q}q(h"Xfromh(}q(h*]h+]q(UkeywordqU namespaceqeh,]h-]h/]uh#hh]qh;Xfromqq}q(h"Uh#hubah&hubh;X q}q(h"X h#hubh)q}q(h"Xcircuitsh(}q(h*]h+]r(UnamerU namespacereh,]h-]h/]uh#hh]rh;Xcircuitsrr}r(h"Uh#hubah&hubh;X r}r(h"X h#hubh)r }r (h"Ximporth(}r (h*]h+]r (Ukeywordr U namespacereh,]h-]h/]uh#hh]rh;Ximportrr}r(h"Uh#j ubah&hubh;X r}r(h"X h#hubh)r}r(h"X Componenth(}r(h*]h+]rUnamerah,]h-]h/]uh#hh]rh;X Componentrr}r(h"Uh#jubah&hubh;X r}r(h"X h#hubh)r }r!(h"X>>> h(}r"(h*]h+]r#(Ugenericr$Upromptr%eh,]h-]h/]uh#hh]r&h;X>>> r'r(}r)(h"Uh#j ubah&hubh;Xr*}r+(h"Xh#hubh)r,}r-(h"Xclassh(}r.(h*]h+]r/Ukeywordr0ah,]h-]h/]uh#hh]r1h;Xclassr2r3}r4(h"Uh#j,ubah&hubh;X r5}r6(h"X h#hubh)r7}r8(h"XApph(}r9(h*]h+]r:(Unamer;Uclassr<eh,]h-]h/]uh#hh]r=h;XAppr>r?}r@(h"Uh#j7ubah&hubh)rA}rB(h"X(h(}rC(h*]h+]rDU punctuationrEah,]h-]h/]uh#hh]rFh;X(rG}rH(h"Uh#jAubah&hubh)rI}rJ(h"X Componenth(}rK(h*]h+]rLUnamerMah,]h-]h/]uh#hh]rNh;X ComponentrOrP}rQ(h"Uh#jIubah&hubh)rR}rS(h"X):h(}rT(h*]h+]rUU punctuationrVah,]h-]h/]uh#hh]rWh;X):rXrY}rZ(h"Uh#jRubah&hubh;X r[}r\(h"X h#hubh)r]}r^(h"X... h(}r_(h*]h+]r`(UgenericraUpromptrbeh,]h-]h/]uh#hh]rch;X... rdre}rf(h"Uh#j]ubah&hubh;X rgrh}ri(h"X h#hubh)rj}rk(h"Xdefh(}rl(h*]h+]rmUkeywordrnah,]h-]h/]uh#hh]roh;Xdefrprq}rr(h"Uh#jjubah&hubh;X rs}rt(h"X h#hubh)ru}rv(h"Xfooh(}rw(h*]h+]rx(UnameryUfunctionrzeh,]h-]h/]uh#hh]r{h;Xfoor|r}}r~(h"Uh#juubah&hubh)r}r(h"X(h(}r(h*]h+]rU punctuationrah,]h-]h/]uh#hh]rh;X(r}r(h"Uh#jubah&hubh)r}r(h"Xselfh(}r(h*]h+]r(UnamerUbuiltinrUpseudoreh,]h-]h/]uh#hh]rh;Xselfrr}r(h"Uh#jubah&hubh)r}r(h"X):h(}r(h*]h+]rU punctuationrah,]h-]h/]uh#hh]rh;X):rr}r(h"Uh#jubah&hubh;X r}r(h"X h#hubh)r}r(h"X... h(}r(h*]h+]r(UgenericrUpromptreh,]h-]h/]uh#hh]rh;X... rr}r(h"Uh#jubah&hubh;X rr}r(h"X h#hubh)r}r(h"Xpassh(}r(h*]h+]rUkeywordrah,]h-]h/]uh#hh]rh;Xpassrr}r(h"Uh#jubah&hubh;X r}r(h"X h#hubh)r}r(h"X...rh(}r(h*]h+]r(UgenericrUpromptreh,]h-]h/]uh#hh]rh;X...rr}r(h"Uh#jubah&hubh;X r}r(h"X h#hubh)r}r(h"X>>> h(}r(h*]h+]r(UgenericrUpromptreh,]h-]h/]uh#hh]rh;X>>> rr}r(h"Uh#jubah&hubh;Xr}r(h"Xh#hubh)r}r(h"Xapph(}r(h*]h+]rUnamerah,]h-]h/]uh#hh]rh;Xapprr}r(h"Uh#jubah&hubh;X r}r(h"X h#hubh)r}r(h"X=h(}r(h*]h+]rUoperatorrah,]h-]h/]uh#hh]rh;X=r}r(h"Uh#jubah&hubh;X r}r(h"X h#hubh)r}r(h"XApph(}r(h*]h+]rUnamerah,]h-]h/]uh#hh]rh;XApprr}r(h"Uh#jubah&hubh)r}r(h"X()h(}r(h*]h+]rU punctuationrah,]h-]h/]uh#hh]rh;X()rr}r(h"Uh#jubah&hubh;X r}r(h"X h#hubh)r}r(h"X>>> h(}r(h*]h+]r(UgenericrUpromptreh,]h-]h/]uh#hh]rh;X>>> rr}r(h"Uh#jubah&hubh;Xr}r(h"Xh#hubh)r}r(h"Xfromh(}r(h*]h+]r(UkeywordrU namespacereh,]h-]h/]uh#hh]r h;Xfromr r }r (h"Uh#jubah&hubh;X r }r(h"X h#hubh)r}r(h"Xcircuits.toolsh(}r(h*]h+]r(UnamerU namespacereh,]h-]h/]uh#hh]rh;Xcircuits.toolsrr}r(h"Uh#jubah&hubh;X r}r(h"X h#hubh)r}r(h"Ximporth(}r(h*]h+]r(UkeywordrU namespacer eh,]h-]h/]uh#hh]r!h;Ximportr"r#}r$(h"Uh#jubah&hubh;X r%}r&(h"X h#hubh)r'}r((h"Xinspecth(}r)(h*]h+]r*Unamer+ah,]h-]h/]uh#hh]r,h;Xinspectr-r.}r/(h"Uh#j'ubah&hubh;X r0}r1(h"X h#hubh)r2}r3(h"X>>> h(}r4(h*]h+]r5(Ugenericr6Upromptr7eh,]h-]h/]uh#hh]r8h;X>>> r9r:}r;(h"Uh#j2ubah&hubh;Xr<}r=(h"Xh#hubh)r>}r?(h"Xprinth(}r@(h*]h+]rAUkeywordrBah,]h-]h/]uh#hh]rCh;XprintrDrE}rF(h"Uh#j>ubah&hubh)rG}rH(h"X(h(}rI(h*]h+]rJU punctuationrKah,]h-]h/]uh#hh]rLh;X(rM}rN(h"Uh#jGubah&hubh)rO}rP(h"Xinspecth(}rQ(h*]h+]rRUnamerSah,]h-]h/]uh#hh]rTh;XinspectrUrV}rW(h"Uh#jOubah&hubh)rX}rY(h"X(h(}rZ(h*]h+]r[U punctuationr\ah,]h-]h/]uh#hh]r]h;X(r^}r_(h"Uh#jXubah&hubh)r`}ra(h"Xapph(}rb(h*]h+]rcUnamerdah,]h-]h/]uh#hh]reh;Xapprfrg}rh(h"Uh#j`ubah&hubh)ri}rj(h"X))h(}rk(h*]h+]rlU punctuationrmah,]h-]h/]uh#hh]rnh;X))rorp}rq(h"Uh#jiubah&hubh;X rr}rs(h"X h#hubh)rt}ru(h"X  Components: 0 Event Handlers: 3 unregister; 1 foo; 1 prepare_unregister_complete; 1 .prepare_unregister_complete] (App._on_prepare_unregister_complete)>h(}rv(h*]h+]rw(UgenericrxUoutputryeh,]h-]h/]uh#hh]rzh;X  Components: 0 Event Handlers: 3 unregister; 1 foo; 1 prepare_unregister_complete; 1 .prepare_unregister_complete] (App._on_prepare_unregister_complete)>r{r|}r}(h"Uh#jtubah&hubeubeubh)r~}r(h"Uh#h h$h%h&h'h(}r(h*]h+]h,]h-]rhah/]rhauh1K0h2hh]r(h4)r}r(h"X6Displaying a Visual Representation of your Applicationrh#j~h$h%h&h8h(}r(h*]h+]h,]h-]h/]uh1K0h2hh]rh;X6Displaying a Visual Representation of your Applicationrr}r(h"jh#jubaubh?)r}r(h"XThe :py:func:`~circuits.tools.graph` function is used to help visualize the different components in your application and how they interact with one another and how they are registered in the system.h#j~h$h%h&hCh(}r(h*]h+]h,]h-]h/]uh1K3h2hh]r(h;XThe rr}r(h"XThe h#jubh[)r}r(h"X :py:func:`~circuits.tools.graph`rh#jh$h%h&h^h(}r(UreftypeXfunch`haXcircuits.tools.graphU refdomainXpyrh-]h,]U refexplicith*]h+]h/]hchdheNhfNuh1K3h]rhh)r}r(h"jh(}r(h*]h+]r(hmjXpy-funcreh,]h-]h/]uh#jh]rh;Xgraph()rr}r(h"Uh#jubah&hsubaubh;X function is used to help visualize the different components in your application and how they interact with one another and how they are registered in the system.rr}r(h"X function is used to help visualize the different components in your application and how they interact with one another and how they are registered in the system.h#jubeubh?)r}r(h"XQIn order to get a image from this you must have the following packages installed:rh#j~h$h%h&hCh(}r(h*]h+]h,]h-]h/]uh1K8h2hh]rh;XQIn order to get a image from this you must have the following packages installed:rr}r(h"jh#jubaubhI)r}r(h"Uh#j~h$h%h&hLh(}r(hNX-h-]h,]h*]h+]h/]uh1K;h2hh]r(hP)r}r(h"X2`networkx `_rh#jh$h%h&hTh(}r(h*]h+]h,]h-]h/]uh1Nh2hh]rh?)r}r(h"jh#jh$h%h&hCh(}r(h*]h+]h,]h-]h/]uh1K;h]r(cdocutils.nodes reference r)r}r(h"jh(}r(Unameh UrefurirX$http://pypi.python.org/pypi/networkxrh-]h,]h*]h+]h/]uh#jh]rh;Xnetworkxrr}r(h"Uh#jubah&U referencerubcdocutils.nodes target r)r}r(h"X' U referencedrKh#jh&Utargetrh(}r(Urefurijh-]rhah,]h*]h+]h/]rh auh]ubeubaubhP)r}r(h"X6`pygraphviz `_rh#jh$h%h&hTh(}r(h*]h+]h,]h-]h/]uh1Nh2hh]rh?)r}r(h"jh#jh$h%h&hCh(}r(h*]h+]h,]h-]h/]uh1KjKh#jh&jh(}r(Urefurijh-]rhah,]h*]h+]h/]rh auh]ubeubaubhP)r}r(h"X7`matplotlib `_ h#jh$h%h&hTh(}r(h*]h+]h,]h-]h/]uh1Nh2hh]rh?)r}r(h"X6`matplotlib `_rh#jh$h%h&hCh(}r(h*]h+]h,]h-]h/]uh1K=h]r(j)r}r(h"jh(}r(UnamehjX&http://pypi.python.org/pypi/matplotlibrh-]h,]h*]h+]h/]uh#jh]rh;X matplotlibrr}r(h"Uh#jubah&jubj)r}r(h"X) jKh#jh&jh(}r(Urefurijh-]rhah,]h*]h+]h/]rhauh]ubeubaubeubh?)r}r(h"X/You can install the required dependencies via::rh#j~h$h%h&hCh(}r(h*]h+]h,]h-]h/]uh1K?h2hh]rh;X.You can install the required dependencies via:rr}r(h"X.You can install the required dependencies via:h#jubaubh)r}r(h"X*pip install matplotlib networkx pygraphvizh#j~h$h%h&hh(}r(hhh-]h,]h*]h+]h/]uh1KAh2hh]rh;X*pip install matplotlib networkx pygraphvizrr}r(h"Uh#jubaubh?)r}r (h"XExample:r h#j~h$h%h&hCh(}r (h*]h+]h,]h-]h/]uh1KCh2hh]r h;XExample:r r}r(h"j h#jubaubh)r}r(h"X>>> from circuits import Component, Debugger >>> from circuits.net.events import write >>> from circuits.net.sockets import TCPServer >>> >>> class EchoServer(Component): ... def init(self, host="0.0.0.0", port=8000): ... TCPServer((host, port)).register(self) ... Debugger().register(self) ... def read(self, sock, data): ... self.fire(write(sock, data)) ... >>> server = EchoServer() >>> >>> from circuits.tools import graph >>> print(graph(server)) * * * h#j~h$h%h&hh(}r(hhh-]h,]h*]h+]r(hXpyconreh/]uh1KYh2hh]r(h)r}r(h"Xh(}r(h*]h+]r(UkeywordrU namespacereh,]h-]h/]uh#jh]h&hubh)r}r(h"X>>> h(}r(h*]h+]r(Ugenericr Upromptr!eh,]h-]h/]uh#jh]r"h;X>>> r#r$}r%(h"Uh#jubah&hubh)r&}r'(h"Xfromh(}r((h*]h+]r)(Ukeywordr*U namespacer+eh,]h-]h/]uh#jh]r,h;Xfromr-r.}r/(h"Uh#j&ubah&hubh;X r0}r1(h"X h#jubh)r2}r3(h"Xcircuitsh(}r4(h*]h+]r5(Unamer6U namespacer7eh,]h-]h/]uh#jh]r8h;Xcircuitsr9r:}r;(h"Uh#j2ubah&hubh;X r<}r=(h"X h#jubh)r>}r?(h"Ximporth(}r@(h*]h+]rA(UkeywordrBU namespacerCeh,]h-]h/]uh#jh]rDh;XimportrErF}rG(h"Uh#j>ubah&hubh;X rH}rI(h"X h#jubh)rJ}rK(h"X Componenth(}rL(h*]h+]rMUnamerNah,]h-]h/]uh#jh]rOh;X ComponentrPrQ}rR(h"Uh#jJubah&hubh)rS}rT(h"X,h(}rU(h*]h+]rVU punctuationrWah,]h-]h/]uh#jh]rXh;X,rY}rZ(h"Uh#jSubah&hubh;X r[}r\(h"X h#jubh)r]}r^(h"XDebuggerh(}r_(h*]h+]r`Unameraah,]h-]h/]uh#jh]rbh;XDebuggerrcrd}re(h"Uh#j]ubah&hubh;X rf}rg(h"X h#jubh)rh}ri(h"X>>> h(}rj(h*]h+]rk(UgenericrlUpromptrmeh,]h-]h/]uh#jh]rnh;X>>> rorp}rq(h"Uh#jhubah&hubh;Xrr}rs(h"Xh#jubh)rt}ru(h"Xfromh(}rv(h*]h+]rw(UkeywordrxU namespaceryeh,]h-]h/]uh#jh]rzh;Xfromr{r|}r}(h"Uh#jtubah&hubh;X r~}r(h"X h#jubh)r}r(h"Xcircuits.net.eventsh(}r(h*]h+]r(UnamerU namespacereh,]h-]h/]uh#jh]rh;Xcircuits.net.eventsrr}r(h"Uh#jubah&hubh;X r}r(h"X h#jubh)r}r(h"Ximporth(}r(h*]h+]r(UkeywordrU namespacereh,]h-]h/]uh#jh]rh;Ximportrr}r(h"Uh#jubah&hubh;X r}r(h"X h#jubh)r}r(h"Xwriteh(}r(h*]h+]rUnamerah,]h-]h/]uh#jh]rh;Xwriterr}r(h"Uh#jubah&hubh;X r}r(h"X h#jubh)r}r(h"X>>> h(}r(h*]h+]r(UgenericrUpromptreh,]h-]h/]uh#jh]rh;X>>> rr}r(h"Uh#jubah&hubh;Xr}r(h"Xh#jubh)r}r(h"Xfromh(}r(h*]h+]r(UkeywordrU namespacereh,]h-]h/]uh#jh]rh;Xfromrr}r(h"Uh#jubah&hubh;X r}r(h"X h#jubh)r}r(h"Xcircuits.net.socketsh(}r(h*]h+]r(UnamerU namespacereh,]h-]h/]uh#jh]rh;Xcircuits.net.socketsrr}r(h"Uh#jubah&hubh;X r}r(h"X h#jubh)r}r(h"Ximporth(}r(h*]h+]r(UkeywordrU namespacereh,]h-]h/]uh#jh]rh;Ximportrr}r(h"Uh#jubah&hubh;X r}r(h"X h#jubh)r}r(h"X TCPServerh(}r(h*]h+]rUnamerah,]h-]h/]uh#jh]rh;X TCPServerrr}r(h"Uh#jubah&hubh;X r}r(h"X h#jubh)r}r(h"X>>> h(}r(h*]h+]r(UgenericrUoutputreh,]h-]h/]uh#jh]rh;X>>> rr}r(h"Uh#jubah&hubh)r}r(h"Xh(}r(h*]h+]rUkeywordrah,]h-]h/]uh#jh]h&hubh)r}r(h"X>>> h(}r(h*]h+]r(UgenericrUpromptreh,]h-]h/]uh#jh]rh;X>>> rr}r(h"Uh#jubah&hubh)r}r(h"Xclassh(}r(h*]h+]rUkeywordrah,]h-]h/]uh#jh]rh;Xclassrr}r(h"Uh#jubah&hubh;X r}r(h"X h#jubh)r}r(h"X EchoServerh(}r(h*]h+]r(UnamerUclassreh,]h-]h/]uh#jh]rh;X EchoServerr r }r (h"Uh#jubah&hubh)r }r (h"X(h(}r(h*]h+]rU punctuationrah,]h-]h/]uh#jh]rh;X(r}r(h"Uh#j ubah&hubh)r}r(h"X Componenth(}r(h*]h+]rUnamerah,]h-]h/]uh#jh]rh;X Componentrr}r(h"Uh#jubah&hubh)r}r(h"X):h(}r(h*]h+]r U punctuationr!ah,]h-]h/]uh#jh]r"h;X):r#r$}r%(h"Uh#jubah&hubh;X r&}r'(h"X h#jubh)r(}r)(h"X... h(}r*(h*]h+]r+(Ugenericr,Upromptr-eh,]h-]h/]uh#jh]r.h;X... r/r0}r1(h"Uh#j(ubah&hubh;X r2r3}r4(h"X h#jubh)r5}r6(h"Xdefh(}r7(h*]h+]r8Ukeywordr9ah,]h-]h/]uh#jh]r:h;Xdefr;r<}r=(h"Uh#j5ubah&hubh;X r>}r?(h"X h#jubh)r@}rA(h"Xinith(}rB(h*]h+]rC(UnamerDUfunctionrEeh,]h-]h/]uh#jh]rFh;XinitrGrH}rI(h"Uh#j@ubah&hubh)rJ}rK(h"X(h(}rL(h*]h+]rMU punctuationrNah,]h-]h/]uh#jh]rOh;X(rP}rQ(h"Uh#jJubah&hubh)rR}rS(h"Xselfh(}rT(h*]h+]rU(UnamerVUbuiltinrWUpseudorXeh,]h-]h/]uh#jh]rYh;XselfrZr[}r\(h"Uh#jRubah&hubh)r]}r^(h"X,h(}r_(h*]h+]r`U punctuationraah,]h-]h/]uh#jh]rbh;X,rc}rd(h"Uh#j]ubah&hubh;X re}rf(h"X h#jubh)rg}rh(h"Xhosth(}ri(h*]h+]rjUnamerkah,]h-]h/]uh#jh]rlh;Xhostrmrn}ro(h"Uh#jgubah&hubh)rp}rq(h"X=h(}rr(h*]h+]rsUoperatorrtah,]h-]h/]uh#jh]ruh;X=rv}rw(h"Uh#jpubah&hubh)rx}ry(h"X "0.0.0.0"h(}rz(h*]h+]r{(Uliteralr|Ustringr}eh,]h-]h/]uh#jh]r~h;X "0.0.0.0"rr}r(h"Uh#jxubah&hubh)r}r(h"X,h(}r(h*]h+]rU punctuationrah,]h-]h/]uh#jh]rh;X,r}r(h"Uh#jubah&hubh;X r}r(h"X h#jubh)r}r(h"Xporth(}r(h*]h+]rUnamerah,]h-]h/]uh#jh]rh;Xportrr}r(h"Uh#jubah&hubh)r}r(h"X=h(}r(h*]h+]rUoperatorrah,]h-]h/]uh#jh]rh;X=r}r(h"Uh#jubah&hubh)r}r(h"X8000h(}r(h*]h+]r(UliteralrUnumberrUintegerreh,]h-]h/]uh#jh]rh;X8000rr}r(h"Uh#jubah&hubh)r}r(h"X):h(}r(h*]h+]rU punctuationrah,]h-]h/]uh#jh]rh;X):rr}r(h"Uh#jubah&hubh;X r}r(h"X h#jubh)r}r(h"X... h(}r(h*]h+]r(UgenericrUpromptreh,]h-]h/]uh#jh]rh;X... rr}r(h"Uh#jubah&hubh;X rr}r(h"X h#jubh)r}r(h"X TCPServerh(}r(h*]h+]rUnamerah,]h-]h/]uh#jh]rh;X TCPServerrr}r(h"Uh#jubah&hubh)r}r(h"X((h(}r(h*]h+]rU punctuationrah,]h-]h/]uh#jh]rh;X((rr}r(h"Uh#jubah&hubh)r}r(h"Xhosth(}r(h*]h+]rUnamerah,]h-]h/]uh#jh]rh;Xhostrr}r(h"Uh#jubah&hubh)r}r(h"X,h(}r(h*]h+]rU punctuationrah,]h-]h/]uh#jh]rh;X,r}r(h"Uh#jubah&hubh;X r}r(h"X h#jubh)r}r(h"Xporth(}r(h*]h+]rUnamerah,]h-]h/]uh#jh]rh;Xportrr}r(h"Uh#jubah&hubh)r}r(h"X))h(}r(h*]h+]rU punctuationrah,]h-]h/]uh#jh]rh;X))rr}r(h"Uh#jubah&hubh)r}r(h"X.h(}r(h*]h+]rUoperatorrah,]h-]h/]uh#jh]rh;X.r}r(h"Uh#jubah&hubh)r}r(h"Xregisterh(}r(h*]h+]rUnamerah,]h-]h/]uh#jh]rh;Xregisterrr}r(h"Uh#jubah&hubh)r}r (h"X(h(}r (h*]h+]r U punctuationr ah,]h-]h/]uh#jh]r h;X(r}r(h"Uh#jubah&hubh)r}r(h"Xselfh(}r(h*]h+]r(UnamerUbuiltinrUpseudoreh,]h-]h/]uh#jh]rh;Xselfrr}r(h"Uh#jubah&hubh)r}r(h"X)h(}r(h*]h+]rU punctuationrah,]h-]h/]uh#jh]r h;X)r!}r"(h"Uh#jubah&hubh;X r#}r$(h"X h#jubh)r%}r&(h"X... h(}r'(h*]h+]r((Ugenericr)Upromptr*eh,]h-]h/]uh#jh]r+h;X... r,r-}r.(h"Uh#j%ubah&hubh;X r/r0}r1(h"X h#jubh)r2}r3(h"XDebuggerh(}r4(h*]h+]r5Unamer6ah,]h-]h/]uh#jh]r7h;XDebuggerr8r9}r:(h"Uh#j2ubah&hubh)r;}r<(h"X()h(}r=(h*]h+]r>U punctuationr?ah,]h-]h/]uh#jh]r@h;X()rArB}rC(h"Uh#j;ubah&hubh)rD}rE(h"X.h(}rF(h*]h+]rGUoperatorrHah,]h-]h/]uh#jh]rIh;X.rJ}rK(h"Uh#jDubah&hubh)rL}rM(h"Xregisterh(}rN(h*]h+]rOUnamerPah,]h-]h/]uh#jh]rQh;XregisterrRrS}rT(h"Uh#jLubah&hubh)rU}rV(h"X(h(}rW(h*]h+]rXU punctuationrYah,]h-]h/]uh#jh]rZh;X(r[}r\(h"Uh#jUubah&hubh)r]}r^(h"Xselfh(}r_(h*]h+]r`(UnameraUbuiltinrbUpseudorceh,]h-]h/]uh#jh]rdh;Xselfrerf}rg(h"Uh#j]ubah&hubh)rh}ri(h"X)h(}rj(h*]h+]rkU punctuationrlah,]h-]h/]uh#jh]rmh;X)rn}ro(h"Uh#jhubah&hubh;X rp}rq(h"X h#jubh)rr}rs(h"X... h(}rt(h*]h+]ru(UgenericrvUpromptrweh,]h-]h/]uh#jh]rxh;X... ryrz}r{(h"Uh#jrubah&hubh;X r|r}}r~(h"X h#jubh)r}r(h"Xdefh(}r(h*]h+]rUkeywordrah,]h-]h/]uh#jh]rh;Xdefrr}r(h"Uh#jubah&hubh;X r}r(h"X h#jubh)r}r(h"Xreadh(}r(h*]h+]r(UnamerUfunctionreh,]h-]h/]uh#jh]rh;Xreadrr}r(h"Uh#jubah&hubh)r}r(h"X(h(}r(h*]h+]rU punctuationrah,]h-]h/]uh#jh]rh;X(r}r(h"Uh#jubah&hubh)r}r(h"Xselfh(}r(h*]h+]r(UnamerUbuiltinrUpseudoreh,]h-]h/]uh#jh]rh;Xselfrr}r(h"Uh#jubah&hubh)r}r(h"X,h(}r(h*]h+]rU punctuationrah,]h-]h/]uh#jh]rh;X,r}r(h"Uh#jubah&hubh;X r}r(h"X h#jubh)r}r(h"Xsockh(}r(h*]h+]rUnamerah,]h-]h/]uh#jh]rh;Xsockrr}r(h"Uh#jubah&hubh)r}r(h"X,h(}r(h*]h+]rU punctuationrah,]h-]h/]uh#jh]rh;X,r}r(h"Uh#jubah&hubh;X r}r(h"X h#jubh)r}r(h"Xdatah(}r(h*]h+]rUnamerah,]h-]h/]uh#jh]rh;Xdatarr}r(h"Uh#jubah&hubh)r}r(h"X):h(}r(h*]h+]rU punctuationrah,]h-]h/]uh#jh]rh;X):rr}r(h"Uh#jubah&hubh;X r}r(h"X h#jubh)r}r(h"X... h(}r(h*]h+]r(UgenericrUpromptreh,]h-]h/]uh#jh]rh;X... rr}r(h"Uh#jubah&hubh;X rr}r(h"X h#jubh)r}r(h"Xselfh(}r(h*]h+]r(UnamerUbuiltinrUpseudoreh,]h-]h/]uh#jh]rh;Xselfrr}r(h"Uh#jubah&hubh)r}r(h"X.h(}r(h*]h+]rUoperatorrah,]h-]h/]uh#jh]rh;X.r}r(h"Uh#jubah&hubh)r}r(h"Xfireh(}r(h*]h+]rUnamerah,]h-]h/]uh#jh]rh;Xfirerr}r(h"Uh#jubah&hubh)r}r(h"X(h(}r(h*]h+]rU punctuationrah,]h-]h/]uh#jh]rh;X(r}r(h"Uh#jubah&hubh)r }r (h"Xwriteh(}r (h*]h+]r Unamer ah,]h-]h/]uh#jh]rh;Xwriterr}r(h"Uh#j ubah&hubh)r}r(h"X(h(}r(h*]h+]rU punctuationrah,]h-]h/]uh#jh]rh;X(r}r(h"Uh#jubah&hubh)r}r(h"Xsockh(}r(h*]h+]rUnamerah,]h-]h/]uh#jh]rh;Xsockr r!}r"(h"Uh#jubah&hubh)r#}r$(h"X,h(}r%(h*]h+]r&U punctuationr'ah,]h-]h/]uh#jh]r(h;X,r)}r*(h"Uh#j#ubah&hubh;X r+}r,(h"X h#jubh)r-}r.(h"Xdatah(}r/(h*]h+]r0Unamer1ah,]h-]h/]uh#jh]r2h;Xdatar3r4}r5(h"Uh#j-ubah&hubh)r6}r7(h"X))h(}r8(h*]h+]r9U punctuationr:ah,]h-]h/]uh#jh]r;h;X))r<r=}r>(h"Uh#j6ubah&hubh;X r?}r@(h"X h#jubh)rA}rB(h"jh(}rC(h*]h+]rD(UgenericrEUpromptrFeh,]h-]h/]uh#jh]rGh;X...rHrI}rJ(h"Uh#jAubah&hubh;X rK}rL(h"X h#jubh)rM}rN(h"X>>> h(}rO(h*]h+]rP(UgenericrQUpromptrReh,]h-]h/]uh#jh]rSh;X>>> rTrU}rV(h"Uh#jMubah&hubh;XrW}rX(h"Xh#jubh)rY}rZ(h"Xserverh(}r[(h*]h+]r\Unamer]ah,]h-]h/]uh#jh]r^h;Xserverr_r`}ra(h"Uh#jYubah&hubh;X rb}rc(h"X h#jubh)rd}re(h"X=h(}rf(h*]h+]rgUoperatorrhah,]h-]h/]uh#jh]rih;X=rj}rk(h"Uh#jdubah&hubh;X rl}rm(h"X h#jubh)rn}ro(h"X EchoServerh(}rp(h*]h+]rqUnamerrah,]h-]h/]uh#jh]rsh;X EchoServerrtru}rv(h"Uh#jnubah&hubh)rw}rx(h"X()h(}ry(h*]h+]rzU punctuationr{ah,]h-]h/]uh#jh]r|h;X()r}r~}r(h"Uh#jwubah&hubh;X r}r(h"X h#jubh)r}r(h"X>>> h(}r(h*]h+]r(UgenericrUoutputreh,]h-]h/]uh#jh]rh;X>>> rr}r(h"Uh#jubah&hubh)r}r(h"Xh(}r(h*]h+]r(UkeywordrU namespacereh,]h-]h/]uh#jh]h&hubh)r}r(h"X>>> h(}r(h*]h+]r(UgenericrUpromptreh,]h-]h/]uh#jh]rh;X>>> rr}r(h"Uh#jubah&hubh)r}r(h"Xfromh(}r(h*]h+]r(UkeywordrU namespacereh,]h-]h/]uh#jh]rh;Xfromrr}r(h"Uh#jubah&hubh;X r}r(h"X h#jubh)r}r(h"Xcircuits.toolsh(}r(h*]h+]r(UnamerU namespacereh,]h-]h/]uh#jh]rh;Xcircuits.toolsrr}r(h"Uh#jubah&hubh;X r}r(h"X h#jubh)r}r(h"Ximporth(}r(h*]h+]r(UkeywordrU namespacereh,]h-]h/]uh#jh]rh;Ximportrr}r(h"Uh#jubah&hubh;X r}r(h"X h#jubh)r}r(h"Xgraphh(}r(h*]h+]rUnamerah,]h-]h/]uh#jh]rh;Xgraphrr}r(h"Uh#jubah&hubh;X r}r(h"X h#jubh)r}r(h"X>>> h(}r(h*]h+]r(UgenericrUpromptreh,]h-]h/]uh#jh]rh;X>>> rr}r(h"Uh#jubah&hubh;Xr}r(h"Xh#jubh)r}r(h"Xprinth(}r(h*]h+]rUkeywordrah,]h-]h/]uh#jh]rh;Xprintrr}r(h"Uh#jubah&hubh)r}r(h"X(h(}r(h*]h+]rU punctuationrah,]h-]h/]uh#jh]rh;X(r}r(h"Uh#jubah&hubh)r}r(h"Xgraphh(}r(h*]h+]rUnamerah,]h-]h/]uh#jh]rh;Xgraphrr}r(h"Uh#jubah&hubh)r}r(h"X(h(}r(h*]h+]rU punctuationrah,]h-]h/]uh#jh]rh;X(r}r(h"Uh#jubah&hubh)r}r(h"Xserverh(}r(h*]h+]rUnamerah,]h-]h/]uh#jh]rh;Xserverrr}r(h"Uh#jubah&hubh)r}r(h"X))h(}r(h*]h+]rU punctuationrah,]h-]h/]uh#jh]rh;X))rr }r (h"Uh#jubah&hubh;X r }r (h"X h#jubh)r }r(h"X* * * h(}r(h*]h+]r(UgenericrUoutputreh,]h-]h/]uh#jh]rh;X* * * rr}r(h"Uh#j ubah&hubeubh?)r}r(h"XAn output image will be saved to your current working directory and by called ``.png`` where **** is the name of the top-level component in your application of the value you pass to the ``name=`` keyword argument of ``~circuits.tools.graph``.h#j~h$h%h&hCh(}r(h*]h+]h,]h-]h/]uh1KZh2hh]r(h;XNAn output image will be saved to your current working directory and by called rr}r(h"XNAn output image will be saved to your current working directory and by called h#jubhh)r}r(h"X``.png``h(}r (h*]h+]h,]h-]h/]uh#jh]r!h;X .pngr"r#}r$(h"Uh#jubah&hsubh;X where r%r&}r'(h"X where h#jubcdocutils.nodes strong r()r)}r*(h"X ****h(}r+(h*]h+]h,]h-]h/]uh#jh]r,h;Xr-r.}r/(h"Uh#j)ubah&Ustrongr0ubh;XY is the name of the top-level component in your application of the value you pass to the r1r2}r3(h"XY is the name of the top-level component in your application of the value you pass to the h#jubhh)r4}r5(h"X ``name=``h(}r6(h*]h+]h,]h-]h/]uh#jh]r7h;Xname=r8r9}r:(h"Uh#j4ubah&hsubh;X keyword argument of r;r<}r=(h"X keyword argument of h#jubhh)r>}r?(h"X``~circuits.tools.graph``h(}r@(h*]h+]h,]h-]h/]uh#jh]rAh;X~circuits.tools.graphrBrC}rD(h"Uh#j>ubah&hsubh;X.rE}rF(h"X.h#jubeubh?)rG}rH(h"XiExample output of `telnet Example `_:rIh#j~h$h%h&hCh(}rJ(h*]h+]h,]h-]h/]uh1K_h2hh]rK(h;XExample output of rLrM}rN(h"XExample output of h#jGubj)rO}rP(h"XV`telnet Example `_h(}rQ(UnameXtelnet ExamplejXBhttps://bitbucket.org/circuits/circuits/src/tip/examples/telnet.pyrRh-]h,]h*]h+]h/]uh#jGh]rSh;Xtelnet ExamplerTrU}rV(h"Uh#jOubah&jubj)rW}rX(h"XE jKh#jGh&jh(}rY(UrefurijRh-]rZhah,]h*]h+]h/]r[h auh]ubh;X:r\}r](h"X:h#jGubeubcdocutils.nodes image r^)r_}r`(h"X".. image:: ../examples/Telnet.png h#j~h$h%h&Uimagerah(}rb(UuriXman/misc/../examples/Telnet.pngrch-]h,]h*]h+]U candidatesrd}reU*jcsh/]uh1Kbh2hh]ubh?)rf}rg(h"XAnd its DOT Graph:rhh#j~h$h%h&hCh(}ri(h*]h+]h,]h-]h/]uh1Kch2hh]rjh;XAnd its DOT Graph:rkrl}rm(h"jhh#jfubaubcsphinx.ext.graphviz graphviz rn)ro}rp(h"Uh#j~h$h%h&Ugraphvizrqh(}rr(hXstrict digraph { TCPClient -> Select [weight="2.0"]; Telnet -> TCPClient [weight="1.0"]; Telnet -> File [weight="1.0"]; } h-]h,]h*]h+]h/]hUoptionsrs]uh1Keh2hh]ubeubeubah"UU transformerrtNU footnote_refsru}rvUrefnamesrw}rxUsymbol_footnotesry]rzUautofootnote_refsr{]r|Usymbol_footnote_refsr}]r~U citationsr]rh2hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh8NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh%Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hjWhhhh hj~hjhjhjuUsubstitution_namesr}rh&h2h(}r(h*]h-]h,]Usourceh%h+]h/]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/man/events.doctree0000644000014400001440000006710012425011107023613 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xevents as result collectorsqNX filteringqNX basic usageqNXeventsq NXadvanced usageq NuUsubstitution_defsq }q Uparse_messagesq ]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUevents-as-result-collectorsqhU filteringqhU basic-usageqh Ueventsqh Uadvanced-usagequUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceq X7/home/prologic/work/circuits/docs/source/man/events.rstq!Utagnameq"Usectionq#U attributesq$}q%(Udupnamesq&]Uclassesq']Ubackrefsq(]Uidsq)]q*haUnamesq+]q,h auUlineq-KUdocumentq.hh]q/(cdocutils.nodes title q0)q1}q2(hXEventsq3hhh h!h"Utitleq4h$}q5(h&]h']h(]h)]h+]uh-Kh.hh]q6cdocutils.nodes Text q7XEventsq8q9}q:(hh3hh1ubaubh)q;}q<(hUhhh h!h"h#h$}q=(h&]h']h(]h)]q>hah+]q?hauh-Kh.hh]q@(h0)qA}qB(hX Basic usageqChh;h h!h"h4h$}qD(h&]h']h(]h)]h+]uh-Kh.hh]qEh7X Basic usageqFqG}qH(hhChhAubaubcdocutils.nodes paragraph qI)qJ}qK(hXEvents are objects that contain data (*arguments and keyword arguments*) about the message being sent to a receiving component. Events are triggered by using the :meth:`~circuits.core.manager.Manager.fire` method of any registered component.hh;h h!h"U paragraphqLh$}qM(h&]h']h(]h)]h+]uh-Kh.hh]qN(h7X&Events are objects that contain data (qOqP}qQ(hX&Events are objects that contain data (hhJubcdocutils.nodes emphasis qR)qS}qT(hX!*arguments and keyword arguments*h$}qU(h&]h']h(]h)]h+]uhhJh]qVh7Xarguments and keyword argumentsqWqX}qY(hUhhSubah"UemphasisqZubh7X[) about the message being sent to a receiving component. Events are triggered by using the q[q\}q](hX[) about the message being sent to a receiving component. Events are triggered by using the hhJubcsphinx.addnodes pending_xref q^)q_}q`(hX+:meth:`~circuits.core.manager.Manager.fire`qahhJh h!h"U pending_xrefqbh$}qc(UreftypeXmethUrefwarnqdU reftargetqeX"circuits.core.manager.Manager.fireU refdomainXpyqfh)]h(]U refexplicith&]h']h+]UrefdocqgX man/eventsqhUpy:classqiNU py:moduleqjNuh-Kh]qkcdocutils.nodes literal ql)qm}qn(hhah$}qo(h&]h']qp(UxrefqqhfXpy-methqreh(]h)]h+]uhh_h]qsh7Xfire()qtqu}qv(hUhhmubah"Uliteralqwubaubh7X$ method of any registered component.qxqy}qz(hX$ method of any registered component.hhJubeubhI)q{}q|(hX_Some events in circuits are fired implicitly by the circuits core like the :class:`~circuits.core.events.started` event used in the tutorial or explicitly by components while handling some other event. Once fired, events are dispatched to the components that are interested in these events (*components whose event handlers match events of interest*).hh;h h!h"hLh$}q}(h&]h']h(]h)]h+]uh-K h.hh]q~(h7XKSome events in circuits are fired implicitly by the circuits core like the qq}q(hXKSome events in circuits are fired implicitly by the circuits core like the hh{ubh^)q}q(hX&:class:`~circuits.core.events.started`qhh{h h!h"hbh$}q(UreftypeXclasshdheXcircuits.core.events.startedU refdomainXpyqh)]h(]U refexplicith&]h']h+]hghhhiNhjNuh-K h]qhl)q}q(hhh$}q(h&]h']q(hqhXpy-classqeh(]h)]h+]uhhh]qh7Xstartedqq}q(hUhhubah"hwubaubh7X event used in the tutorial or explicitly by components while handling some other event. Once fired, events are dispatched to the components that are interested in these events (qq}q(hX event used in the tutorial or explicitly by components while handling some other event. Once fired, events are dispatched to the components that are interested in these events (hh{ubhR)q}q(hX:*components whose event handlers match events of interest*h$}q(h&]h']h(]h)]h+]uhh{h]qh7X8components whose event handlers match events of interestqq}q(hUhhubah"hZubh7X).qq}q(hX).hh{ubeubhI)q}q(hXEvents are usually fired on one or more channels, allowing components to gather in "interest groups". This is especially useful if you want to reuse basic components such as a :class:`~circuits.net.sockets.TCPServer`. A :class:`~circuits.net.sockets.TCPServer` component fires a :class:`~circuits.net.events.read` event for every package of data that it receives. If we did not have support for channels, it would be very difficult to build two servers in a single process without their read events colliding.hh;h h!h"hLh$}q(h&]h']h(]h)]h+]uh-Kh.hh]q(h7XEvents are usually fired on one or more channels, allowing components to gather in "interest groups". This is especially useful if you want to reuse basic components such as a qq}q(hXEvents are usually fired on one or more channels, allowing components to gather in "interest groups". This is especially useful if you want to reuse basic components such as a hhubh^)q}q(hX(:class:`~circuits.net.sockets.TCPServer`qhhh h!h"hbh$}q(UreftypeXclasshdheXcircuits.net.sockets.TCPServerU refdomainXpyqh)]h(]U refexplicith&]h']h+]hghhhiNhjNuh-Kh]qhl)q}q(hhh$}q(h&]h']q(hqhXpy-classqeh(]h)]h+]uhhh]qh7X TCPServerqq}q(hUhhubah"hwubaubh7X. A qq}q(hX. A hhubh^)q}q(hX(:class:`~circuits.net.sockets.TCPServer`qhhh h!h"hbh$}q(UreftypeXclasshdheXcircuits.net.sockets.TCPServerU refdomainXpyqh)]h(]U refexplicith&]h']h+]hghhhiNhjNuh-Kh]qhl)q}q(hhh$}q(h&]h']q(hqhXpy-classqeh(]h)]h+]uhhh]qh7X TCPServerqÅq}q(hUhhubah"hwubaubh7X component fires a qƅq}q(hX component fires a hhubh^)q}q(hX":class:`~circuits.net.events.read`qhhh h!h"hbh$}q(UreftypeXclasshdheXcircuits.net.events.readU refdomainXpyqh)]h(]U refexplicith&]h']h+]hghhhiNhjNuh-Kh]qhl)q}q(hhh$}q(h&]h']q(hqhXpy-classqeh(]h)]h+]uhhh]qh7XreadqՅq}q(hUhhubah"hwubaubh7X event for every package of data that it receives. If we did not have support for channels, it would be very difficult to build two servers in a single process without their read events colliding.q؅q}q(hX event for every package of data that it receives. If we did not have support for channels, it would be very difficult to build two servers in a single process without their read events colliding.hhubeubhI)q}q(hXUsing channels, we can put one server and all components interested in its events on one channel, and another server and the components interested in this other server's events on another channel.qhh;h h!h"hLh$}q(h&]h']h(]h)]h+]uh-Kh.hh]qh7XUsing channels, we can put one server and all components interested in its events on one channel, and another server and the components interested in this other server's events on another channel.qq}q(hhhhubaubhI)q}q(hXbComponents are associated with a channel by setting their ``channel`` class or instance attribute.qhh;h h!h"hLh$}q(h&]h']h(]h)]h+]uh-Kh.hh]q(h7X:Components are associated with a channel by setting their q腁q}q(hX:Components are associated with a channel by setting their hhubhl)q}q(hX ``channel``h$}q(h&]h']h(]h)]h+]uhhh]qh7Xchannelqq}q(hUhhubah"hwubh7X class or instance attribute.qq}q(hX class or instance attribute.hhubeubcsphinx.addnodes seealso q)q}q(hX:class:`~.components.Component`qhh;h h!h"Useealsoqh$}q(h&]h']h(]h)]h+]uh-Nh.hh]qhI)q}q(hhhhh h!h"hLh$}q(h&]h']h(]h)]h+]uh-K h]qh^)r}r(hhhhh h!h"hbh$}r(UreftypeXclassU refspecificrhdheXcomponents.ComponentU refdomainXpyrh)]h(]U refexplicith&]h']h+]hghhhiNhjNuh-K h]rhl)r}r(hhh$}r(h&]h']r (hqjXpy-classr eh(]h)]h+]uhjh]r h7X Componentr r }r(hUhjubah"hwubaubaubaubhI)r}r(hXBesides having a name, events carry additional arbitrary information. This information is passed as arguments or keyword arguments to the constructor. It is then delivered to the event handler method that must have exactly the same number of arguments and keyword arguments. Of course, as is usual in Python, you can also pass additional information by setting attributes of the event object, though this usage pattern is discouraged.rhh;h h!h"hLh$}r(h&]h']h(]h)]h+]uh-K"h.hh]rh7XBesides having a name, events carry additional arbitrary information. This information is passed as arguments or keyword arguments to the constructor. It is then delivered to the event handler method that must have exactly the same number of arguments and keyword arguments. Of course, as is usual in Python, you can also pass additional information by setting attributes of the event object, though this usage pattern is discouraged.rr}r(hjhjubaubeubh)r}r(hUhhh h!h"h#h$}r(h&]h']h(]h)]rhah+]rhauh-K+h.hh]r(h0)r}r(hX Filteringrhjh h!h"h4h$}r (h&]h']h(]h)]h+]uh-K+h.hh]r!h7X Filteringr"r#}r$(hjhjubaubhI)r%}r&(hX]Events can be filtered by stopping other event handlers from continuing to process the event.r'hjh h!h"hLh$}r((h&]h']h(]h)]h+]uh-K-h.hh]r)h7X]Events can be filtered by stopping other event handlers from continuing to process the event.r*r+}r,(hj'hj%ubaubhI)r-}r.(hXLTo do this, simply call the :meth:`~circuits.core.events.Event.stop` method.r/hjh h!h"hLh$}r0(h&]h']h(]h)]h+]uh-K/h.hh]r1(h7XTo do this, simply call the r2r3}r4(hXTo do this, simply call the hj-ubh^)r5}r6(hX(:meth:`~circuits.core.events.Event.stop`r7hj-h h!h"hbh$}r8(UreftypeXmethhdheXcircuits.core.events.Event.stopU refdomainXpyr9h)]h(]U refexplicith&]h']h+]hghhhiNhjNuh-K/h]r:hl)r;}r<(hj7h$}r=(h&]h']r>(hqj9Xpy-methr?eh(]h)]h+]uhj5h]r@h7Xstop()rArB}rC(hUhj;ubah"hwubaubh7X method.rDrE}rF(hX method.hj-ubeubhI)rG}rH(hXExample:rIhjh h!h"hLh$}rJ(h&]h']h(]h)]h+]uh-K1h.hh]rKh7XExample:rLrM}rN(hjIhjGubaubcdocutils.nodes literal_block rO)rP}rQ(hXL@handler("foo") def stop_foo(self, event, *args, **kwargs): event.stop()hjh h!h"U literal_blockrRh$}rS(UlinenosrTUlanguagerUXpythonU xml:spacerVUpreserverWh)]h(]h&]h']h+]uh-K3h.hh]rXh7XL@handler("foo") def stop_foo(self, event, *args, **kwargs): event.stop()rYrZ}r[(hUhjPubaubhI)r\}r](hXLHere any other event handlers also listening to "foo" will not be processed.r^hjh h!h"hLh$}r_(h&]h']h(]h)]h+]uh-K9h.hh]r`h7XLHere any other event handlers also listening to "foo" will not be processed.rarb}rc(hj^hj\ubaubcdocutils.nodes note rd)re}rf(hXIt's important to use priority event handlers here in this case as all event handlers and events run with the same priority unless explicitly told otherwise.hjh h!h"Unotergh$}rh(h&]h']h(]h)]h+]uh-Nh.hh]rihI)rj}rk(hXIt's important to use priority event handlers here in this case as all event handlers and events run with the same priority unless explicitly told otherwise.rlhjeh h!h"hLh$}rm(h&]h']h(]h)]h+]uh-K;h]rnh7XIt's important to use priority event handlers here in this case as all event handlers and events run with the same priority unless explicitly told otherwise.rorp}rq(hjlhjjubaubaubcsphinx.addnodes versionmodified rr)rs}rt(hUhjh h!h"Uversionmodifiedruh$}rv(UversionrwX3.0rxh)]h(]h&]h']h+]UtyperyXversionchangedrzuh-K>h.hh]r{hI)r|}r}(hUhjsh h!h"hLh$}r~(h&]h']h(]h)]h+]uh-KCh.hh]r(cdocutils.nodes inline r)r}r(hUhj|h h!h"Uinlinerh$}r(h&]h']rjuah(]h)]h+]uh-KCh.hh]rh7XChanged in version 3.0: rr}r(hUhjubaubh7XHIn circuits 2.x you declared your event handler to be a filter by using rr}r(hXHIn circuits 2.x you declared your event handler to be a filter by using h Nh-Nh.hhj|ubhl)r}r(hX``@handler(filter=True)``hj|h Nh"hwh$}r(h&]h']h(]h)]h+]uh-Nh.hh]rh7X@handler(filter=True)rr}r(hUhjubaubh7X and returned a rr}r(hX and returned a h Nh-Nh.hhj|ubhl)r}r(hX``True``hj|h Nh"hwh$}r(h&]h']h(]h)]h+]uh-Nh.hh]rh7XTruerr}r(hUhjubaubh7XQ-ish value from the respective event handler to achieve the same effect. This is rr}r(hXQ-ish value from the respective event handler to achieve the same effect. This is h Nh-Nh.hhj|ubcdocutils.nodes strong r)r}r(hX **no longer**hj|h Nh"Ustrongrh$}r(h&]h']h(]h)]h+]uh-Nh.hh]rh7X no longerrr}r(hUhjubaubh7X% the case in circuits 3.x Please use rr}r(hX% the case in circuits 3.x Please use h Nh-Nh.hhj|ubhl)r}r(hX``event.stop()``hj|h Nh"hwh$}r(h&]h']h(]h)]h+]uh-Nh.hh]rh7X event.stop()rr}r(hUhjubaubh7X as noted above.rr}r(hX as noted above.h Nh-Nh.hhj|ubeubaubeubh)r}r(hUhhh h!h"h#h$}r(h&]h']h(]h)]rhah+]rhauh-KEh.hh]r(h0)r}r(hXEvents as result collectorsrhjh h!h"h4h$}r(h&]h']h(]h)]h+]uh-KEh.hh]rh7XEvents as result collectorsrr}r(hjhjubaubhI)r}r(hXApart from delivering information to handlers, event objects may also collect information. If a handler returns something that is not ``None``, it is stored in the event's ``value`` attribute. If a second (or any subsequent) handler invocation also returns a value, the values are stored as a list. Note that the value attribute is of type :class:`~.values.Value` and you must access its property ``value`` to access the data stored (``collected_information = event.value.value``).hjh h!h"hLh$}r(h&]h']h(]h)]h+]uh-KGh.hh]r(h7XApart from delivering information to handlers, event objects may also collect information. If a handler returns something that is not rr}r(hXApart from delivering information to handlers, event objects may also collect information. If a handler returns something that is not hjubhl)r}r(hX``None``h$}r(h&]h']h(]h)]h+]uhjh]rh7XNonerr}r(hUhjubah"hwubh7X, it is stored in the event's rr}r(hX, it is stored in the event's hjubhl)r}r(hX ``value``h$}r(h&]h']h(]h)]h+]uhjh]rh7Xvaluerr}r(hUhjubah"hwubh7X attribute. If a second (or any subsequent) handler invocation also returns a value, the values are stored as a list. Note that the value attribute is of type rr}r(hX attribute. If a second (or any subsequent) handler invocation also returns a value, the values are stored as a list. Note that the value attribute is of type hjubh^)r}r(hX:class:`~.values.Value`rhjh h!h"hbh$}r(UreftypeXclassjhdheX values.ValueU refdomainXpyrh)]h(]U refexplicith&]h']h+]hghhhiNhjNuh-KGh]rhl)r}r(hjh$}r(h&]h']r(hqjXpy-classreh(]h)]h+]uhjh]rh7XValuerr}r(hUhjubah"hwubaubh7X" and you must access its property rr}r(hX" and you must access its property hjubhl)r}r(hX ``value``h$}r(h&]h']h(]h)]h+]uhjh]rh7Xvaluerr}r(hUhjubah"hwubh7X to access the data stored (rr}r(hX to access the data stored (hjubhl)r}r(hX-``collected_information = event.value.value``h$}r(h&]h']h(]h)]h+]uhjh]rh7X)collected_information = event.value.valuerr}r(hUhjubah"hwubh7X).rr}r(hX).hjubeubhI)r}r(hXThe collected information can be accessed by handlers in order to find out about any return values from the previously invoked handlers. More useful though, is the possibility to access the information after all handlers have been invoked. After all handlers have run successfully (i.e. no handler has thrown an error) circuits may generate an event that indicates the successful handling. This event has the name of the event just handled with "Success" appended. So if the event is called ``Identify`` then the success event is called ``IdentifySuccess``. Success events aren't delivered by default. If you want successful handling to be indicated for an event, you have to set the optional attribute ``success`` of this event to ``True``.hjh h!h"hLh$}r(h&]h']h(]h)]h+]uh-KOh.hh]r (h7XThe collected information can be accessed by handlers in order to find out about any return values from the previously invoked handlers. More useful though, is the possibility to access the information after all handlers have been invoked. After all handlers have run successfully (i.e. no handler has thrown an error) circuits may generate an event that indicates the successful handling. This event has the name of the event just handled with "Success" appended. So if the event is called r r }r (hXThe collected information can be accessed by handlers in order to find out about any return values from the previously invoked handlers. More useful though, is the possibility to access the information after all handlers have been invoked. After all handlers have run successfully (i.e. no handler has thrown an error) circuits may generate an event that indicates the successful handling. This event has the name of the event just handled with "Success" appended. So if the event is called hjubhl)r }r(hX ``Identify``h$}r(h&]h']h(]h)]h+]uhjh]rh7XIdentifyrr}r(hUhj ubah"hwubh7X" then the success event is called rr}r(hX" then the success event is called hjubhl)r}r(hX``IdentifySuccess``h$}r(h&]h']h(]h)]h+]uhjh]rh7XIdentifySuccessrr}r(hUhjubah"hwubh7X. Success events aren't delivered by default. If you want successful handling to be indicated for an event, you have to set the optional attribute rr}r (hX. Success events aren't delivered by default. If you want successful handling to be indicated for an event, you have to set the optional attribute hjubhl)r!}r"(hX ``success``h$}r#(h&]h']h(]h)]h+]uhjh]r$h7Xsuccessr%r&}r'(hUhj!ubah"hwubh7X of this event to r(r)}r*(hX of this event to hjubhl)r+}r,(hX``True``h$}r-(h&]h']h(]h)]h+]uhjh]r.h7XTruer/r0}r1(hUhj+ubah"hwubh7X.r2}r3(hX.hjubeubhI)r4}r5(hXThe handler for a success event must be defined with two arguments. When invoked, the first argument is the event just having been handled successfully and the second argument is (as a convenience) what has been collected in ``event.value.value`` (note that the first argument may not be called ``event``, for an explanation of this restriction as well as for an explanation why the method is called ``identify_success`` see the section on handlers).hjh h!h"hLh$}r6(h&]h']h(]h)]h+]uh-K[h.hh]r7(h7XThe handler for a success event must be defined with two arguments. When invoked, the first argument is the event just having been handled successfully and the second argument is (as a convenience) what has been collected in r8r9}r:(hXThe handler for a success event must be defined with two arguments. When invoked, the first argument is the event just having been handled successfully and the second argument is (as a convenience) what has been collected in hj4ubhl)r;}r<(hX``event.value.value``h$}r=(h&]h']h(]h)]h+]uhj4h]r>h7Xevent.value.valuer?r@}rA(hUhj;ubah"hwubh7X1 (note that the first argument may not be called rBrC}rD(hX1 (note that the first argument may not be called hj4ubhl)rE}rF(hX ``event``h$}rG(h&]h']h(]h)]h+]uhj4h]rHh7XeventrIrJ}rK(hUhjEubah"hwubh7X`, for an explanation of this restriction as well as for an explanation why the method is called rLrM}rN(hX`, for an explanation of this restriction as well as for an explanation why the method is called hj4ubhl)rO}rP(hX``identify_success``h$}rQ(h&]h']h(]h)]h+]uhj4h]rRh7Xidentify_successrSrT}rU(hUhjOubah"hwubh7X see the section on handlers).rVrW}rX(hX see the section on handlers).hj4ubeubjO)rY}rZ(hX#!/usr/bin/env python from circuits import Component, Debugger, Event class Identify(Event): """Identify Event""" success = True class Pound(Component): def __init__(self): super(Pound, self).__init__() Debugger().register(self) Bob().register(self) Fred().register(self) def started(self, *args): self.fire(Identify()) def Identify_success(self, evt, result): if not isinstance(result, list): result = [result] print "In pound:" for name in result: print name class Dog(Component): def Identify(self): return self.__class__.__name__ class Bob(Dog): """Bob""" class Fred(Dog): """Fred""" Pound().run() hjh h!h"jRh$}r[(jTjUcdocutils.nodes reprunicode r\Xpythonr]r^}r_bh&]jVjWh)]h(]UsourceXH/home/prologic/work/circuits/docs/source/man/examples/handler_returns.pyh']h+]uh-Kch.hh]r`h7X#!/usr/bin/env python from circuits import Component, Debugger, Event class Identify(Event): """Identify Event""" success = True class Pound(Component): def __init__(self): super(Pound, self).__init__() Debugger().register(self) Bob().register(self) Fred().register(self) def started(self, *args): self.fire(Identify()) def Identify_success(self, evt, result): if not isinstance(result, list): result = [result] print "In pound:" for name in result: print name class Dog(Component): def Identify(self): return self.__class__.__name__ class Bob(Dog): """Bob""" class Fred(Dog): """Fred""" Pound().run() rarb}rc(hUhjYubaubhI)rd}re(hXE:download:`Download handler_returns.py `rfhjh h!h"hLh$}rg(h&]h']h(]h)]h+]uh-Kgh.hh]rhcsphinx.addnodes download_reference ri)rj}rk(hjfhjdh h!h"Udownload_referencerlh$}rm(UreftypeXdownloadrnhdheXexamples/handler_returns.pyU refdomainUh)]h(]U refexplicith&]h']h+]hghhUfilenameroXhandler_returns.pyrpuh-Kgh]rqhl)rr}rs(hjfh$}rt(h&]h']ru(hqjneh(]h)]h+]uhjjh]rvh7XDownload handler_returns.pyrwrx}ry(hUhjrubah"hwubaubaubeubh)rz}r{(hUhhh h!h"h#h$}r|(h&]h']h(]h)]r}hah+]r~h auh-Kkh.hh]r(h0)r}r(hXAdvanced usagerhjzh h!h"h4h$}r(h&]h']h(]h)]h+]uh-Kkh.hh]rh7XAdvanced usagerr}r(hjhjubaubhI)r}r(hX`Sometimes it may be necessary to take some action when all state changes triggered by an event are in effect. In this case it is not sufficient to wait for the completion of all handlers for this particular event. Rather, we also have to wait until all events that have been fired by those handlers have been processed (and again wait for the events fired by those events' handlers, and so on). To support this scenario, circuits can fire a ``Complete`` event. The usage is similar to the previously described success event. Details can be found in the API description of :class:`circuits.core.events.Event`.hjzh h!h"hLh$}r(h&]h']h(]h)]h+]uh-Kmh.hh]r(h7XSometimes it may be necessary to take some action when all state changes triggered by an event are in effect. In this case it is not sufficient to wait for the completion of all handlers for this particular event. Rather, we also have to wait until all events that have been fired by those handlers have been processed (and again wait for the events fired by those events' handlers, and so on). To support this scenario, circuits can fire a rr}r(hXSometimes it may be necessary to take some action when all state changes triggered by an event are in effect. In this case it is not sufficient to wait for the completion of all handlers for this particular event. Rather, we also have to wait until all events that have been fired by those handlers have been processed (and again wait for the events fired by those events' handlers, and so on). To support this scenario, circuits can fire a hjubhl)r}r(hX ``Complete``h$}r(h&]h']h(]h)]h+]uhjh]rh7XCompleterr}r(hUhjubah"hwubh7Xw event. The usage is similar to the previously described success event. Details can be found in the API description of rr}r(hXw event. The usage is similar to the previously described success event. Details can be found in the API description of hjubh^)r}r(hX#:class:`circuits.core.events.Event`rhjh h!h"hbh$}r(UreftypeXclasshdheXcircuits.core.events.EventU refdomainXpyrh)]h(]U refexplicith&]h']h+]hghhhiNhjNuh-Kmh]rhl)r}r(hjh$}r(h&]h']r(hqjXpy-classreh(]h)]h+]uhjh]rh7Xcircuits.core.events.Eventrr}r(hUhjubah"hwubaubh7X.r}r(hX.hjubeubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh.hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh4NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh!Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startr KUidsr }r (hjhjhhhjzhh;uUsubstitution_namesr }r h"h.h$}r(h&]h)]h(]Usourceh!h']h+]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/contributors.doctree0000644000014400001440000001356112425011107024273 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}qX contributorsqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhU contributorsqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqX9/home/prologic/work/circuits/docs/source/contributors.rstqUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq ]Uidsq!]q"haUnamesq#]q$hauUlineq%KUdocumentq&hh]q'(cdocutils.nodes title q()q)}q*(hX Contributorsq+hhhhhUtitleq,h}q-(h]h]h ]h!]h#]uh%Kh&hh]q.cdocutils.nodes Text q/X Contributorsq0q1}q2(hh+hh)ubaubcdocutils.nodes paragraph q3)q4}q5(hXycircuits was originally designed, written and primarily maintained by James Mills (http://prologic.shortcircuit.net.au/).hhhhhU paragraphq6h}q7(h]h]h ]h!]h#]uh%Kh&hh]q8(h/XScircuits was originally designed, written and primarily maintained by James Mills (q9q:}q;(hXScircuits was originally designed, written and primarily maintained by James Mills (hh4ubcdocutils.nodes reference q<)q=}q>(hX$http://prologic.shortcircuit.net.au/q?h}q@(Urefurih?h!]h ]h]h]h#]uhh4h]qAh/X$http://prologic.shortcircuit.net.au/qBqC}qD(hUhh=ubahU referenceqEubh/X).qFqG}qH(hX).hh4ubeubh3)qI}qJ(hX@The following users and developers have contributed to circuits:qKhhhhhh6h}qL(h]h]h ]h!]h#]uh%Kh&hh]qMh/X@The following users and developers have contributed to circuits:qNqO}qP(hhKhhIubaubcdocutils.nodes bullet_list qQ)qR}qS(hUhhhhhU bullet_listqTh}qU(UbulletqVX-h!]h ]h]h]h#]uh%K h&hh]qW(cdocutils.nodes list_item qX)qY}qZ(hXAlessio Deianaq[hhRhhhU list_itemq\h}q](h]h]h ]h!]h#]uh%Nh&hh]q^h3)q_}q`(hh[hhYhhhh6h}qa(h]h]h ]h!]h#]uh%K h]qbh/XAlessio Deianaqcqd}qe(hh[hh_ubaubaubhX)qf}qg(hXDariusz SuchojadqhhhRhhhh\h}qi(h]h]h ]h!]h#]uh%Nh&hh]qjh3)qk}ql(hhhhhfhhhh6h}qm(h]h]h ]h!]h#]uh%K h]qnh/XDariusz Suchojadqoqp}qq(hhhhhkubaubaubhX)qr}qs(hX Tim MillerqthhRhhhh\h}qu(h]h]h ]h!]h#]uh%Nh&hh]qvh3)qw}qx(hhthhrhhhh6h}qy(h]h]h ]h!]h#]uh%K h]qzh/X Tim Millerq{q|}q}(hhthhwubaubaubhX)q~}q(hX Holger KrekelqhhRhhhh\h}q(h]h]h ]h!]h#]uh%Nh&hh]qh3)q}q(hhhh~hhhh6h}q(h]h]h ]h!]h#]uh%K h]qh/X Holger Krekelqq}q(hhhhubaubaubhX)q}q(hX Justin GiorgiqhhRhhhh\h}q(h]h]h ]h!]h#]uh%Nh&hh]qh3)q}q(hhhhhhhh6h}q(h]h]h ]h!]h#]uh%K h]qh/X Justin Giorgiqq}q(hhhhubaubaubhX)q}q(hXEdwin MarshallqhhRhhhh\h}q(h]h]h ]h!]h#]uh%Nh&hh]qh3)q}q(hhhhhhhh6h}q(h]h]h ]h!]h#]uh%Kh]qh/XEdwin Marshallqq}q(hhhhubaubaubhX)q}q(hX Alex MayfieldqhhRhhhh\h}q(h]h]h ]h!]h#]uh%Nh&hh]qh3)q}q(hhhhhhhh6h}q(h]h]h ]h!]h#]uh%Kh]qh/X Alex Mayfieldqq}q(hhhhubaubaubhX)q}q(hX Toni AlataloqhhRhhhh\h}q(h]h]h ]h!]h#]uh%Nh&hh]qh3)q}q(hhhhhhhh6h}q(h]h]h ]h!]h#]uh%Kh]qh/X Toni Alataloqq}q(hhhhubaubaubhX)q}q(hX Michael Lipp hhRhhhh\h}q(h]h]h ]h!]h#]uh%Nh&hh]qh3)q}q(hX Michael Lippqhhhhhh6h}q(h]h]h ]h!]h#]uh%Kh]qh/X Michael LippqÅq}q(hhhhubaubaubeubh3)q}q(hXAnyone not listed here (*apologies as this list is taken directly from Mercurial's churn command and output*). We appreciate any and all contributions to circuits.hhhhhh6h}q(h]h]h ]h!]h#]uh%Kh&hh]q(h/XAnyone not listed here (qʅq}q(hXAnyone not listed here (hhubcdocutils.nodes emphasis q)q}q(hXT*apologies as this list is taken directly from Mercurial's churn command and output*h}q(h]h]h ]h!]h#]uhhh]qh/XRapologies as this list is taken directly from Mercurial's churn command and outputq҅q}q(hUhhubahUemphasisqubh/X7). We appreciate any and all contributions to circuits.qօq}q(hX7). We appreciate any and all contributions to circuits.hhubeubeubahUU 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 datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh,NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerr Ustrictr U sectnum_xformr KUdump_transformsr NU docinfo_xformr KUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigr U_disable_configr!NU id_prefixr"UU tab_widthr#KUerror_encodingr$UUTF-8r%U_sourcer&hUgettext_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/j Uauto_id_prefixr0Uidr1Udoctitle_xformr2Ustrip_elements_with_classesr3NU _config_filesr4]Ufile_insertion_enabledr5U raw_enabledr6KU dump_settingsr7NubUsymbol_footnote_startr8KUidsr9}r:hhsUsubstitution_namesr;}r<hh&h}r=(h]h!]h ]Usourcehh]h#]uU footnotesr>]r?Urefidsr@}rAub.circuits-3.1.0/docs/build/doctrees/start/0000755000014400001440000000000012425013643021325 5ustar prologicusers00000000000000circuits-3.1.0/docs/build/doctrees/start/installing.doctree0000644000014400001440000001360412425011107025035 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X*installing from the development repositoryqNX installingqNX installing from a source packageqNuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hU*installing-from-the-development-repositoryqhU installingqhU installing-from-a-source-packagequUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqX=/home/prologic/work/circuits/docs/source/start/installing.rstqUtagnameqUsectionqU attributesq }q!(Udupnamesq"]Uclassesq#]Ubackrefsq$]Uidsq%]q&haUnamesq']q(hauUlineq)KUdocumentq*hh]q+(cdocutils.nodes title q,)q-}q.(hX Installingq/hhhhhUtitleq0h }q1(h"]h#]h$]h%]h']uh)Kh*hh]q2cdocutils.nodes Text q3X Installingq4q5}q6(hh/hh-ubaubh)q7}q8(hUhhhhhhh }q9(h"]h#]h$]h%]q:hah']q;hauh)Kh*hh]q<(h,)q=}q>(hX Installing from a Source Packageq?hh7hhhh0h }q@(h"]h#]h$]h%]h']uh)Kh*hh]qAh3X Installing from a Source PackageqBqC}qD(hh?hh=ubaubcdocutils.nodes paragraph qE)qF}qG(hX?*If you have downloaded a source archive, this applies to you.*qHhh7hhhU paragraphqIh }qJ(h"]h#]h$]h%]h']uh)Kh*hh]qKcdocutils.nodes emphasis qL)qM}qN(hhHh }qO(h"]h#]h$]h%]h']uhhFh]qPh3X=If you have downloaded a source archive, this applies to you.qQqR}qS(hUhhMubahUemphasisqTubaubcdocutils.nodes literal_block qU)qV}qW(hX$ python setup.py installhh7hhhU literal_blockqXh }qY(UlinenosqZUlanguageq[XshU xml:spaceq\Upreserveq]h%]h$]h"]h#]h']uh)K h*hh]q^h3X$ python setup.py installq_q`}qa(hUhhVubaubhE)qb}qc(hX#For other installation options see:qdhh7hhhhIh }qe(h"]h#]h$]h%]h']uh)Kh*hh]qfh3X#For other installation options see:qgqh}qi(hhdhhbubaubhU)qj}qk(hX $ python setup.py --help installhh7hhhhXh }ql(hZh[Xshh\h]h%]h$]h"]h#]h']uh)Kh*hh]qmh3X $ python setup.py --help installqnqo}qp(hUhhjubaubeubh)qq}qr(hUhhhhhhh }qs(h"]h#]h$]h%]qthah']quhauh)Kh*hh]qv(h,)qw}qx(hX*Installing from the Development Repositoryqyhhqhhhh0h }qz(h"]h#]h$]h%]h']uh)Kh*hh]q{h3X*Installing from the Development Repositoryq|q}}q~(hhyhhwubaubhE)q}q(hXE*If you have cloned the source code repository, this applies to you.*qhhqhhhhIh }q(h"]h#]h$]h%]h']uh)Kh*hh]qhL)q}q(hhh }q(h"]h#]h$]h%]h']uhhh]qh3XCIf you have cloned the source code repository, this applies to you.qq}q(hUhhubahhTubaubhE)q}q(hXwIf you have cloned the development repository, it is recommended that you use setuptools and use the following command:qhhqhhhhIh }q(h"]h#]h$]h%]h']uh)Kh*hh]qh3XwIf you have cloned the development repository, it is recommended that you use setuptools and use the following command:qq}q(hhhhubaubhU)q}q(hX$ python setup.py develophhqhhhhXh }q(hZh[Xshh\h]h%]h$]h"]h#]h']uh)Kh*hh]qh3X$ python setup.py developqq}q(hUhhubaubhE)q}q(hXThis will allow you to regularly update your copy of the circuits development repository by simply performing the following in the circuits working directory:qhhqhhhhIh }q(h"]h#]h$]h%]h']uh)K!h*hh]qh3XThis will allow you to regularly update your copy of the circuits development repository by simply performing the following in the circuits working directory:qq}q(hhhhubaubhU)q}q(hX $ hg pull -uhhqhhhhXh }q(hZh[Xshh\h]h%]h$]h"]h#]h']uh)K$h*hh]qh3X $ hg pull -uqq}q(hUhhubaubcdocutils.nodes note q)q}q(hXYou do not need to reinstall if you have installed with setuptools via the circuits repository and used setuptools to install in "develop" mode.hhqhhhUnoteqh }q(h"]h#]h$]h%]h']uh)Nh*hh]qhE)q}q(hXYou do not need to reinstall if you have installed with setuptools via the circuits repository and used setuptools to install in "develop" mode.qhhhhhhIh }q(h"]h#]h$]h%]h']uh)K)h]qh3XYou do not need to reinstall if you have installed with setuptools via the circuits repository and used setuptools to install in "develop" mode.qq}q(hhhhubaubaubeubeubahUU 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 tracebackq׈Upep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh0NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU 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_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlr Uhttp://www.python.org/dev/peps/r Usyntax_highlightr Ulongr Uinput_encoding_error_handlerr hUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhqhhhh7uUsubstitution_namesr}rhh*h }r(h"]h%]h$]Usourcehh#]h']uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/start/index.doctree0000644000014400001440000000544712425011107024006 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}qXgetting startedqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUgetting-startedqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqX8/home/prologic/work/circuits/docs/source/start/index.rstqUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq ]Uidsq!]q"haUnamesq#]q$hauUlineq%KUdocumentq&hh]q'(cdocutils.nodes title q()q)}q*(hXGetting Startedq+hhhhhUtitleq,h}q-(h]h]h ]h!]h#]uh%Kh&hh]q.cdocutils.nodes Text q/XGetting Startedq0q1}q2(hh+hh)ubaubcdocutils.nodes compound q3)q4}q5(hUhhhhhUcompoundq6h}q7(h]h]q8Utoctree-wrapperq9ah ]h!]h#]uh%Nh&hh]q:csphinx.addnodes toctree q;)q<}q=(hUhh4hhhUtoctreeq>h}q?(Unumberedq@KU includehiddenqAhX start/indexqBU titlesonlyqCUglobqDh!]h ]h]h]h#]UentriesqE]qF(NX start/quickqGqHNXstart/downloadingqIqJNXstart/installingqKqLNXstart/requirementsqMqNeUhiddenqOU includefilesqP]qQ(hGhIhKhMeUmaxdepthqRKuh%Kh]ubaubeubahUU transformerqSNU footnote_refsqT}qUUrefnamesqV}qWUsymbol_footnotesqX]qYUautofootnote_refsqZ]q[Usymbol_footnote_refsq\]q]U citationsq^]q_h&hU current_lineq`NUtransform_messagesqa]qbUreporterqcNUid_startqdKU autofootnotesqe]qfU citation_refsqg}qhUindirect_targetsqi]qjUsettingsqk(cdocutils.frontend Values qloqm}qn(Ufootnote_backlinksqoKUrecord_dependenciesqpNU rfc_base_urlqqUhttp://tools.ietf.org/html/qrU tracebackqsUpep_referencesqtNUstrip_commentsquNU toc_backlinksqvUentryqwU language_codeqxUenqyU datestampqzNU report_levelq{KU _destinationq|NU halt_levelq}KU strip_classesq~Nh,NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU 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_sourceqhUgettext_compactqU 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_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh&h}q(h]h!]h ]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.circuits-3.1.0/docs/build/doctrees/start/quick.doctree0000644000014400001440000001155412425011107024007 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(XpipqXquick start guideqNuUsubstitution_defsq}q Uparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startqKUnameidsq}q(hUpipqhUquick-start-guidequUchildrenq]q(cdocutils.nodes target q)q}q(U rawsourceqX(.. _pip: http://pypi.python.org/pypi/pipU referencedqKUparentqhUsourceqX8/home/prologic/work/circuits/docs/source/start/quick.rstqUtagnameqUtargetqU attributesq}q (Urefuriq!Xhttp://pypi.python.org/pypi/pipq"Uidsq#]q$haUbackrefsq%]Udupnamesq&]Uclassesq']Unamesq(]q)hauUlineq*KUdocumentq+hh]ubcdocutils.nodes section q,)q-}q.(hUhhhhhUsectionq/h}q0(h&]h']h%]h#]q1hah(]q2hauh*Kh+hh]q3(cdocutils.nodes title q4)q5}q6(hXQuick Start Guideq7hh-hhhUtitleq8h}q9(h&]h']h%]h#]h(]uh*Kh+hh]q:cdocutils.nodes Text q;XQuick Start Guideq(hh7hh5ubaubcdocutils.nodes paragraph q?)q@}qA(hXNThe easiest way to download and install circuits is to use the `pip`_ command:hh-hhhU paragraphqBh}qC(h&]h']h%]h#]h(]uh*Kh+hh]qD(h;X?The easiest way to download and install circuits is to use the qEqF}qG(hX?The easiest way to download and install circuits is to use the hh@ubcdocutils.nodes reference qH)qI}qJ(hX`pip`_UresolvedqKKhh@hU referenceqLh}qM(UnameXpipqNh!h"h#]h%]h&]h']h(]uh]qOh;XpipqPqQ}qR(hUhhIubaubh;X command:qSqT}qU(hX command:hh@ubeubcdocutils.nodes literal_block qV)qW}qX(hX$ pip install circuitshh-hhhU literal_blockqYh}qZ(Ulinenosq[Ulanguageq\XshU xml:spaceq]Upreserveq^h#]h%]h&]h']h(]uh*K h+hh]q_h;X$ pip install circuitsq`qa}qb(hUhhWubaubh?)qc}qd(hX}Now that you have successfully downloaded and installed circuits, let's test that circuits is properly installed and working.qehh-hhhhBh}qf(h&]h']h%]h#]h(]uh*Kh+hh]qgh;X}Now that you have successfully downloaded and installed circuits, let's test that circuits is properly installed and working.qhqi}qj(hhehhcubaubh?)qk}ql(hX)First, let's check the installed version:qmhh-hhhhBh}qn(h&]h']h%]h#]h(]uh*Kh+hh]qoh;X)First, let's check the installed version:qpqq}qr(hhmhhkubaubhV)qs}qt(hX2>>> import circuits >>> print circuits.__version__hh-hhhhYh}qu(h[h\Xpythonh]h^h#]h%]h&]h']h(]uh*Kh+hh]qvh;X2>>> import circuits >>> print circuits.__version__qwqx}qy(hUhhsubaubh?)qz}q{(hXThis should output:q|hh-hhhhBh}q}(h&]h']h%]h#]h(]uh*Kh+hh]q~h;XThis should output:qq}q(hh|hhzubaubcdocutils.nodes comment q)q}q(hXGprogram-output: python -c "import circuits; print circuits.__version__"hh-hhhUcommentqh}q(h]h^h#]h%]h&]h']h(]uh*Kh+hh]qh;XGprogram-output: python -c "import circuits; print circuits.__version__"qq}q(hUhhubaubh?)q}q(hXRTry some of the examples in the examples/ directory shipped with the distribution.qhh-hhhhBh}q(h&]h']h%]h#]h(]uh*Kh+hh]qh;XRTry some of the examples in the examples/ directory shipped with the distribution.qq}q(hhhhubaubh?)q}q(hX Have fun :)qhh-hhhhBh}q(h&]h']h%]h#]h(]uh*K h+hh]qh;X Have fun :)qq}q(hhhhubaubeubehUU transformerqNU footnote_refsq}qUrefnamesq}qhN]qhIasUsymbol_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_classesqNh8NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqˉUoutput_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_sourceqhUgettext_compactqU 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_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hhhh-uUsubstitution_namesq}qhh+h}r(h&]h#]h%]Usourcehh']h(]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/start/downloading.doctree0000644000014400001440000001413512425011107025176 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xlatest development source codeqNX downloadingqNXlatest stable releaseqNX mercurialq X downloadsq Xmercurial bookq uUsubstitution_defsq }q Uparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUlatest-development-source-codeqhU downloadingqhUlatest-stable-releaseqh U mercurialqh U downloadsqh Umercurial-bookquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceq UUparentq!hUsourceq"X>/home/prologic/work/circuits/docs/source/start/downloading.rstq#Utagnameq$Usectionq%U attributesq&}q'(Udupnamesq(]Uclassesq)]Ubackrefsq*]Uidsq+]q,haUnamesq-]q.hauUlineq/KUdocumentq0hh]q1(cdocutils.nodes title q2)q3}q4(h X Downloadingq5h!hh"h#h$Utitleq6h&}q7(h(]h)]h*]h+]h-]uh/Kh0hh]q8cdocutils.nodes Text q9X Downloadingq:q;}q<(h h5h!h3ubaubh)q=}q>(h Uh!hh"h#h$h%h&}q?(h(]h)]h*]h+]q@hah-]qAhauh/Kh0hh]qB(h2)qC}qD(h XLatest Stable ReleaseqEh!h=h"h#h$h6h&}qF(h(]h)]h*]h+]h-]uh/Kh0hh]qGh9XLatest Stable ReleaseqHqI}qJ(h hEh!hCubaubcdocutils.nodes paragraph qK)qL}qM(h XThe latest stable releases can be downloaded from the `Downloads `_ page (*specifically the Tags tab*).h!h=h"h#h$U paragraphqNh&}qO(h(]h)]h*]h+]h-]uh/Kh0hh]qP(h9X6The latest stable releases can be downloaded from the qQqR}qS(h X6The latest stable releases can be downloaded from the h!hLubcdocutils.nodes reference qT)qU}qV(h X@`Downloads `_h&}qW(UnameX DownloadsUrefuriqXX1http://bitbucket.org/circuits/circuits/downloads/qYh+]h*]h(]h)]h-]uh!hLh]qZh9X Downloadsq[q\}q](h Uh!hUubah$U referenceq^ubcdocutils.nodes target q_)q`}qa(h X4 U referencedqbKh!hLh$Utargetqch&}qd(UrefurihYh+]qehah*]h(]h)]h-]qfh auh]ubh9X page (qgqh}qi(h X page (h!hLubcdocutils.nodes emphasis qj)qk}ql(h X*specifically the Tags tab*h&}qm(h(]h)]h*]h+]h-]uh!hLh]qnh9Xspecifically the Tags tabqoqp}qq(h Uh!hkubah$Uemphasisqrubh9X).qsqt}qu(h X).h!hLubeubeubh)qv}qw(h Uh!hh"h#h$h%h&}qx(h(]h)]h*]h+]qyhah-]qzhauh/Kh0hh]q{(h2)q|}q}(h XLatest Development Source Codeq~h!hvh"h#h$h6h&}q(h(]h)]h*]h+]h-]uh/Kh0hh]qh9XLatest Development Source Codeqq}q(h h~h!h|ubaubhK)q}q(h XXWe use `Mercurial `_ for source control and code sharing.h!hvh"h#h$hNh&}q(h(]h)]h*]h+]h-]uh/Kh0hh]q(h9XWe use qq}q(h XWe use h!hubhT)q}q(h X,`Mercurial `_h&}q(UnameX MercurialhXXhttp://mercurial.selenic.com/qh+]h*]h(]h)]h-]uh!hh]qh9X Mercurialqq}q(h Uh!hubah$h^ubh_)q}q(h X hbKh!hh$hch&}q(Urefurihh+]qhah*]h(]h)]h-]qh auh]ubh9X% for source control and code sharing.qq}q(h X% for source control and code sharing.h!hubeubhK)q}q(h XHThe latest development branch can be cloned using the following command:qh!hvh"h#h$hNh&}q(h(]h)]h*]h+]h-]uh/Kh0hh]qh9XHThe latest development branch can be cloned using the following command:qq}q(h hh!hubaubcdocutils.nodes literal_block q)q}q(h X3$ hg clone https://bitbucket.org/circuits/circuits/h!hvh"h#h$U literal_blockqh&}q(UlinenosqUlanguageqXshU xml:spaceqUpreserveqh+]h*]h(]h)]h-]uh/Kh0hh]qh9X3$ hg clone https://bitbucket.org/circuits/circuits/qq}q(h Uh!hubaubhK)q}q(h XFor further instructions on how to use Mercurial, please refer to the `Mercurial Book `_.h!hvh"h#h$hNh&}q(h(]h)]h*]h+]h-]uh/Kh0hh]q(h9XFFor further instructions on how to use Mercurial, please refer to the qq}q(h XFFor further instructions on how to use Mercurial, please refer to the h!hubhT)q}q(h XC`Mercurial Book `_h&}q(UnameXMercurial BookhXX/http://mercurial.selenic.com/wiki/MercurialBookqh+]h*]h(]h)]h-]uh!hh]qh9XMercurial Bookqq}q(h Uh!hubah$h^ubh_)q}q(h X2 hbKh!hh$hch&}q(Urefurihh+]qhah*]h(]h)]h-]qh auh]ubh9X.q}q(h X.h!hubeubeubeubah UU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh0hU 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_classesqNh6NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingr Uutf-8r U source_urlr NUinput_encodingr U utf-8-sigr U_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh#Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrhUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesr NU _config_filesr!]Ufile_insertion_enabledr"U raw_enabledr#KU dump_settingsr$NubUsymbol_footnote_startr%KUidsr&}r'(hhhhhhhh`hh=hhvuUsubstitution_namesr(}r)h$h0h&}r*(h(]h+]h*]Usourceh#h)]h-]uU footnotesr+]r,Urefidsr-}r.ub.circuits-3.1.0/docs/build/doctrees/start/requirements.doctree0000644000014400001440000002103012425011107025404 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X pyinotifyqXpydotqXrequirements and dependenciesqNXother optional dependenciesq NXpython standard libraryq uUsubstitution_defsq }q Uparse_messagesq ]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hU pyinotifyqhUpydotqhUrequirements-and-dependenciesqh Uother-optional-dependenciesqh Upython-standard-libraryquUchildrenq]q(cdocutils.nodes target q)q}q(U rawsourceqX<.. _Python Standard Library: http://docs.python.org/library/U referencedqKUparentq hUsourceq!X?/home/prologic/work/circuits/docs/source/start/requirements.rstq"Utagnameq#Utargetq$U attributesq%}q&(Urefuriq'Xhttp://docs.python.org/library/q(Uidsq)]q*haUbackrefsq+]Udupnamesq,]Uclassesq-]Unamesq.]q/h auUlineq0KUdocumentq1hh]ubcdocutils.nodes section q2)q3}q4(hUh hh!h"h#Usectionq5h%}q6(h,]h-]h+]h)]q7hah.]q8hauh0Kh1hh]q9(cdocutils.nodes title q:)q;}q<(hXRequirements and Dependenciesq=h h3h!h"h#Utitleq>h%}q?(h,]h-]h+]h)]h.]uh0Kh1hh]q@cdocutils.nodes Text qAXRequirements and DependenciesqBqC}qD(hh=h h;ubaubcdocutils.nodes bullet_list qE)qF}qG(hUh h3h!h"h#U bullet_listqHh%}qI(UbulletqJX-h)]h+]h,]h-]h.]uh0Kh1hh]qK(cdocutils.nodes list_item qL)qM}qN(hXPcircuits has no **required** dependencies beyond the `Python Standard Library`_.qOh hFh!h"h#U list_itemqPh%}qQ(h,]h-]h+]h)]h.]uh0Nh1hh]qRcdocutils.nodes paragraph qS)qT}qU(hhOh hMh!h"h#U paragraphqVh%}qW(h,]h-]h+]h)]h.]uh0Kh]qX(hAXcircuits has no qYqZ}q[(hXcircuits has no h hTubcdocutils.nodes strong q\)q]}q^(hX **required**h%}q_(h,]h-]h+]h)]h.]uh hTh]q`hAXrequiredqaqb}qc(hUh h]ubah#UstrongqdubhAX dependencies beyond the qeqf}qg(hX dependencies beyond the h hTubcdocutils.nodes reference qh)qi}qj(hX`Python Standard Library`_UresolvedqkKh hTh#U referenceqlh%}qm(UnameXPython Standard Libraryh'h(h)]h+]h,]h-]h.]uh]qnhAXPython Standard Libraryqoqp}qq(hUh hiubaubhAX.qr}qs(hX.h hTubeubaubhL)qt}qu(hXPython: >= 2.6 or pypy >= 2.0 h hFh!h"h#hPh%}qv(h,]h-]h+]h)]h.]uh0Nh1hh]qwhS)qx}qy(hXPython: >= 2.6 or pypy >= 2.0qzh hth!h"h#hVh%}q{(h,]h-]h+]h)]h.]uh0K h]q|hAXPython: >= 2.6 or pypy >= 2.0q}q~}q(hhzh hxubaubaubeubcdocutils.nodes field_list q)q}q(hUh h3h!h"h#U field_listqh%}q(h,]h-]h+]h)]h.]uh0K h1hh]q(cdocutils.nodes field q)q}q(hUh hh!h"h#Ufieldqh%}q(h,]h-]h+]h)]h.]uh0K h1hh]q(cdocutils.nodes field_name q)q}q(hXSupported Platformsqh%}q(h,]h-]h+]h)]h.]uh hh]qhAXSupported Platformsqq}q(hhh hubah#U field_namequbcdocutils.nodes field_body q)q}q(hX"Linux, FreeBSD, Mac OS X, Windows h%}q(h,]h-]h+]h)]h.]uh hh]qhS)q}q(hX!Linux, FreeBSD, Mac OS X, Windowsqh hh!h"h#hVh%}q(h,]h-]h+]h)]h.]uh0K h]qhAX!Linux, FreeBSD, Mac OS X, Windowsqq}q(hhh hubaubah#U field_bodyqubeubh)q}q(hUh hh!h"h#hh%}q(h,]h-]h+]h)]h.]uh0K h1hh]q(h)q}q(hXSupported Python Versionsqh%}q(h,]h-]h+]h)]h.]uh hh]qhAXSupported Python Versionsqq}q(hhh hubah#hubh)q}q(hX2.6, 2.7, 3.2, 3.3 h%}q(h,]h-]h+]h)]h.]uh hh]qhS)q}q(hX2.6, 2.7, 3.2, 3.3qh hh!h"h#hVh%}q(h,]h-]h+]h)]h.]uh0K h]qhAX2.6, 2.7, 3.2, 3.3qq}q(hhh hubaubah#hubeubh)q}q(hUh hh!h"h#hh%}q(h,]h-]h+]h)]h.]uh0Kh1hh]q(h)q}q(hXSupported pypy Versionsqh%}q(h,]h-]h+]h)]h.]uh hh]qhAXSupported pypy VersionsqŅq}q(hhh hubah#hubh)q}q(hX2.0 h%}q(h,]h-]h+]h)]h.]uh hh]qhS)q}q(hX2.0qh hh!h"h#hVh%}q(h,]h-]h+]h)]h.]uh0Kh]qhAX2.0qхq}q(hhh hubaubah#hubeubeubh2)q}q(hUh h3h!h"h#h5h%}q(h,]h-]h+]h)]qhah.]qh auh0Kh1hh]q(h:)q}q(hXOther Optional Dependenciesqh hh!h"h#h>h%}q(h,]h-]h+]h)]h.]uh0Kh1hh]qhAXOther Optional Dependenciesq߅q}q(hhh hubaubhS)q}q(hXNThese dependencies are not strictly required and only add additional features.qh hh!h"h#hVh%}q(h,]h-]h+]h)]h.]uh0Kh1hh]qhAXNThese dependencies are not strictly required and only add additional features.q煁q}q(hhh hubaubhE)q}q(hUh hh!h"h#hHh%}q(hJX-h)]h+]h,]h-]h.]uh0Kh1hh]q(hL)q}q(hXb`pydot `_ -- For rendering component graphs of an application.h hh!h"h#hPh%}q(h,]h-]h+]h)]h.]uh0Nh1hh]qhS)q}q(hXb`pydot `_ -- For rendering component graphs of an application.h hh!h"h#hVh%}q(h,]h-]h+]h)]h.]uh0Kh]q(hh)q}q(hX-`pydot `_h%}q(Unamehh'X"http://pypi.python.org/pypi/pydot/qh)]h+]h,]h-]h.]uh hh]qhAXpydotqq}q(hUh hubah#hlubh)q}q(hX% hKh hh#h$h%}r(Urefurihh)]rhah+]h,]h-]h.]rhauh]ubhAX5 -- For rendering component graphs of an application.rr}r(hX5 -- For rendering component graphs of an application.h hubeubaubhL)r}r(hX`pyinotify `_ -- For asynchronous file system event notifications and the :mod:`circuits.io.notify` module.h hh!h"h#hPh%}r(h,]h-]h+]h)]h.]uh0Nh1hh]r hS)r }r (hX`pyinotify `_ -- For asynchronous file system event notifications and the :mod:`circuits.io.notify` module.h jh!h"h#hVh%}r (h,]h-]h+]h)]h.]uh0Kh]r (hh)r}r(hX4`pyinotify `_h%}r(Unamehh'X%http://pypi.python.org/pypi/pyinotifyrh)]h+]h,]h-]h.]uh j h]rhAX pyinotifyrr}r(hUh jubah#hlubh)r}r(hX( hKh j h#h$h%}r(Urefurijh)]rhah+]h,]h-]h.]rhauh]ubhAX= -- For asynchronous file system event notifications and the rr}r(hX= -- For asynchronous file system event notifications and the h j ubcsphinx.addnodes pending_xref r)r}r (hX:mod:`circuits.io.notify`r!h j h!h"h#U pending_xrefr"h%}r#(UreftypeXmodUrefwarnr$U reftargetr%Xcircuits.io.notifyU refdomainXpyr&h)]h+]U refexplicith,]h-]h.]Urefdocr'Xstart/requirementsr(Upy:classr)NU py:moduler*Nuh0Kh]r+cdocutils.nodes literal r,)r-}r.(hj!h%}r/(h,]h-]r0(Uxrefr1j&Xpy-modr2eh+]h)]h.]uh jh]r3hAXcircuits.io.notifyr4r5}r6(hUh j-ubah#Uliteralr7ubaubhAX module.r8r9}r:(hX module.h j ubeubaubeubeubeubehUU transformerr;NU footnote_refsr<}r=Urefnamesr>}r?Xpython standard library]r@hiasUsymbol_footnotesrA]rBUautofootnote_refsrC]rDUsymbol_footnote_refsrE]rFU citationsrG]rHh1hU current_linerINUtransform_messagesrJ]rKUreporterrLNUid_startrMKU autofootnotesrN]rOU citation_refsrP}rQUindirect_targetsrR]rSUsettingsrT(cdocutils.frontend Values rUorV}rW(Ufootnote_backlinksrXKUrecord_dependenciesrYNU rfc_base_urlrZUhttp://tools.ietf.org/html/r[U tracebackr\Upep_referencesr]NUstrip_commentsr^NU toc_backlinksr_Uentryr`U language_coderaUenrbU datestamprcNU report_levelrdKU _destinationreNU halt_levelrfKU strip_classesrgNh>NUerror_encoding_error_handlerrhUbackslashreplaceriUdebugrjNUembed_stylesheetrkUoutput_encoding_error_handlerrlUstrictrmU sectnum_xformrnKUdump_transformsroNU docinfo_xformrpKUwarning_streamrqNUpep_file_url_templaterrUpep-%04drsUexit_status_levelrtKUconfigruNUstrict_visitorrvNUcloak_email_addressesrwUtrim_footnote_reference_spacerxUenvryNUdump_pseudo_xmlrzNUexpose_internalsr{NUsectsubtitle_xformr|U source_linkr}NUrfc_referencesr~NUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh"Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjmUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhhhhjhh3hhuUsubstitution_namesr}rh#h1h%}r(h,]h)]h+]Usourceh"h-]h.]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/glossary.doctree0000644000014400001440000000641312425011107023377 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}qXglossaryqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUglossaryqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqX5/home/prologic/work/circuits/docs/source/glossary.rstqUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq ]Uidsq!]q"haUnamesq#]q$hauUlineq%KUdocumentq&hh]q'(cdocutils.nodes title q()q)}q*(hXGlossaryq+hhhhhUtitleq,h}q-(h]h]h ]h!]h#]uh%Kh&hh]q.cdocutils.nodes Text q/XGlossaryq0q1}q2(hh+hh)ubaubcsphinx.addnodes glossary q3)q4}q5(hUhhhhhUglossaryq6h}q7(h]h]h ]h!]h#]uh%Nh&hh]q8cdocutils.nodes definition_list q9)q:}q;(hUhh4hhhUdefinition_listqh6ah ]h!]h#]uh%Nh&hh]q?cdocutils.nodes definition_list_item q@)qA}qB(hUh}qC(h]h]h ]h!]h#]uhh:h]qD(cdocutils.nodes term qE)qF}qG(hXVCShhAhhhUtermqHh}qI(h]h]h ]h!]qJUterm-vcsqKah#]qLhKauh%Kh]qM(csphinx.addnodes index qN)qO}qP(hUhhFhhhUindexqQh}qR(h!]h ]h]h]h#]UentriesqS]qT(UsingleqUXVCShKUmainqVtqWauh%Kh]ubh/XVCSqXqY}qZ(hXVCShhh%KhhFubeubcdocutils.nodes definition q[)q\}q](hUh}q^(h]h]h ]h!]h#]uhhAh]q_cdocutils.nodes paragraph q`)qa}qb(hXDVersion Control System, what you use for versioning your source codeqchh\hhhU paragraphqdh}qe(h]h]h ]h!]h#]uh%K h]qfh/XDVersion Control System, what you use for versioning your source codeqgqh}qi(hhchhaubaubahU definitionqjubehUdefinition_list_itemqkubaubaubeubahUU transformerqlNU footnote_refsqm}qnUrefnamesqo}qpUsymbol_footnotesqq]qrUautofootnote_refsqs]qtUsymbol_footnote_refsqu]qvU citationsqw]qxh&hU current_lineqyNUtransform_messagesqz]q{Ureporterq|NUid_startq}KU 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_classesqNh,NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU 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_sourceqhUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqʼnUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqɈU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh&h}q(h]h!]h ]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.circuits-3.1.0/docs/build/doctrees/readme.doctree0000644000014400001440000010572312425011107022775 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X mit licenseqXproject websiteqXfeaturesqNXfreenode irc networkq Xsupported platformsq NXdevelopment versionq X communityq NX hello webq NXexamplesqXfeedbackqNX requirementsqNXview the changelogqXpython programming languageqXcreate an issueqX mailing listqX@pythoncircuitsqX read the docsqX echo serverqNXdownloads pageqX installationqNXlicenseqNX#circuits irc channelqXpypi readme pageqNX pypi pageqXhelloqNXpython standard libraryquUsubstitution_defsq }q!Uparse_messagesq"]q#cdocutils.nodes system_message q$)q%}q&(U rawsourceq'UUparentq(cdocutils.nodes section q))q*}q+(h'Uh(h))q,}q-(h'UU referencedq.Kh(h))q/}q0(h'Uh(hUsourceq1X3/home/prologic/work/circuits/docs/source/readme.rstq2Utagnameq3Usectionq4U attributesq5}q6(Udupnamesq7]Uclassesq8]Ubackrefsq9]Uidsq:]q;Upypi-readme-pageqhauUlineq?KUdocumentq@hUchildrenqA]qB(cdocutils.nodes title qC)qD}qE(h'XPyPi README PageqFh(h/h1h2h3UtitleqGh5}qH(h7]h8]h9]h:]h=]uh?Kh@hhA]qIcdocutils.nodes Text qJXPyPi README PageqKqL}qM(h'hFh(hDubaubcdocutils.nodes target qN)qO}qP(h'X7.. _Python Programming Language: http://www.python.org/h.Kh(h/h1cdocutils.nodes reprunicode qQX ../README.rstqRqS}qTbh3UtargetqUh5}qV(UrefuriqWXhttp://www.python.org/qXh:]qYUpython-programming-languageqZah9]h7]h8]h=]q[hauh?Kh@hhA]ubhN)q\}q](h'X].. _#circuits IRC Channel: http://webchat.freenode.net/?randomnick=1&channels=circuits&uio=d4h.Kh(h/h1hSh3hUh5}q^(hWXBhttp://webchat.freenode.net/?randomnick=1&channels=circuits&uio=d4q_h:]q`Ucircuits-irc-channelqaah9]h7]h8]h=]qbhauh?K h@hhA]ubhN)qc}qd(h'X-.. _FreeNode IRC Network: http://freenode.neth.Kh(h/h1hSh3hUh5}qe(hWXhttp://freenode.netqfh:]qgUfreenode-irc-networkqhah9]h7]h8]h=]qih auh?K h@hhA]ubhN)qj}qk(h'X<.. _Python Standard Library: http://docs.python.org/library/h.Kh(h/h1hSh3hUh5}ql(hWXhttp://docs.python.org/library/qmh:]qnUpython-standard-libraryqoah9]h7]h8]h=]qphauh?K h@hhA]ubhN)qq}qr(h'XC.. _MIT License: http://www.opensource.org/licenses/mit-license.phph.Kh(h/h1hSh3hUh5}qs(hWX2http://www.opensource.org/licenses/mit-license.phpqth:]quU mit-licenseqvah9]h7]h8]h=]qwhauh?K h@hhA]ubhN)qx}qy(h'XF.. _Create an Issue: https://bitbucket.org/circuits/circuits/issue/newh.Kh(h/h1hSh3hUh5}qz(hWX1https://bitbucket.org/circuits/circuits/issue/newq{h:]q|Ucreate-an-issueq}ah9]h7]h8]h=]q~hauh?K h@hhA]ubhN)q}q(h'X?.. _Mailing List: http://groups.google.com/group/circuits-usersh.Kh(h/h1hSh3hUh5}q(hWX-http://groups.google.com/group/circuits-usersqh:]qU mailing-listqah9]h7]h8]h=]qhauh?Kh@hhA]ubhN)q}q(h'X2.. _Project Website: http://circuitsframework.com/h.Kh(h/h1hSh3hUh5}q(hWXhttp://circuitsframework.com/qh:]qUproject-websiteqah9]h7]h8]h=]qhauh?Kh@hhA]ubhN)q}q(h'X3.. _PyPi Page: http://pypi.python.org/pypi/circuitsh.Kh(h/h1hSh3hUh5}q(hWX$http://pypi.python.org/pypi/circuitsqh:]qU pypi-pageqah9]h7]h8]h=]qhauh?Kh@hhA]ubhN)q}q(h'X=.. _Read the Docs: http://circuits.readthedocs.org/en/latest/h.Kh(h/h1hSh3hUh5}q(hWX*http://circuits.readthedocs.org/en/latest/qh:]qU read-the-docsqah9]h7]h8]h=]qhauh?Kh@hhA]ubhN)q}q(h'XN.. _View the ChangeLog: http://circuits.readthedocs.org/en/latest/changes.htmlh.Kh(h/h1hSh3hUh5}q(hWX6http://circuits.readthedocs.org/en/latest/changes.htmlqh:]qUview-the-changelogqah9]h7]h8]h=]qhauh?Kh@hhA]ubhN)q}q(h'XE.. _Downloads Page: https://bitbucket.org/circuits/circuits/downloadsh.Kh(h/h1hSh3hUh5}q(hWX1https://bitbucket.org/circuits/circuits/downloadsqh:]qUdownloads-pageqah9]h7]h8]h=]qhauh?Kh@hhA]ubcdocutils.nodes paragraph q)q}q(h'Xcircuits is a **Lightweight** **Event** driven and **Asynchronous** **Application Framework** for the `Python Programming Language`_ with a strong **Component** Architecture.h(h/h1hSh3U paragraphqh5}q(h7]h8]h9]h:]h=]uh?Kh@hhA]q(hJXcircuits is a qq}q(h'Xcircuits is a h(hubcdocutils.nodes strong q)q}q(h'X**Lightweight**h5}q(h7]h8]h9]h:]h=]uh(hhA]qhJX Lightweightqq}q(h'Uh(hubah3UstrongqubhJX q}q(h'X h(hubh)q}q(h'X **Event**h5}q(h7]h8]h9]h:]h=]uh(hhA]qhJXEventqq}q(h'Uh(hubah3hubhJX driven and qąq}q(h'X driven and h(hubh)q}q(h'X**Asynchronous**h5}q(h7]h8]h9]h:]h=]uh(hhA]qhJX Asynchronousq˅q}q(h'Uh(hubah3hubhJX q}q(h'X h(hubh)q}q(h'X**Application Framework**h5}q(h7]h8]h9]h:]h=]uh(hhA]qhJXApplication Frameworkqԅq}q(h'Uh(hubah3hubhJX for the qׅq}q(h'X for the h(hubcdocutils.nodes reference q)q}q(h'X`Python Programming Language`_UresolvedqKh(hh3U referenceqh5}q(UnameXPython Programming LanguagehWhXh:]h9]h7]h8]h=]uhA]qhJXPython Programming Languageqᅁq}q(h'Uh(hubaubhJX with a strong q䅁q}q(h'X with a strong h(hubh)q}q(h'X **Component**h5}q(h7]h8]h9]h:]h=]uh(hhA]qhJX Componentq녁q}q(h'Uh(hubah3hubhJX Architecture.qq}q(h'X Architecture.h(hubeubh)q}q(h'Xcircuits also includes a lightweight, high performance and scalable HTTP/WSGI compliant web server as well as various I/O and Networking components.qh(h/h1hSh3hh5}q(h7]h8]h9]h:]h=]uh?Kh@hhA]qhJXcircuits also includes a lightweight, high performance and scalable HTTP/WSGI compliant web server as well as various I/O and Networking components.qq}q(h'hh(hubaubcdocutils.nodes bullet_list q)q}q(h'Uh(h/h1hSh3U bullet_listqh5}q(UbulletqX-h:]h9]h7]h8]h=]uh?Kh@hhA]q(cdocutils.nodes list_item r)r}r(h'XVisit the `Project Website`_rh(hh1hSh3U list_itemrh5}r(h7]h8]h9]h:]h=]uh?Nh@hhA]rh)r}r(h'jh(jh1hSh3hh5}r (h7]h8]h9]h:]h=]uh?KhA]r (hJX Visit the r r }r (h'X Visit the h(jubh)r}r(h'X`Project Website`_hKh(jh3hh5}r(UnameXProject WebsitehWhh:]h9]h7]h8]h=]uhA]rhJXProject Websiterr}r(h'Uh(jubaubeubaubj)r}r(h'X`Read the Docs`_rh(hh1hSh3jh5}r(h7]h8]h9]h:]h=]uh?Nh@hhA]rh)r}r(h'jh(jh1hSh3hh5}r(h7]h8]h9]h:]h=]uh?KhA]rh)r}r(h'jhKh(jh3hh5}r (UnameX Read the DocshWhh:]h9]h7]h8]h=]uhA]r!hJX Read the Docsr"r#}r$(h'Uh(jubaubaubaubj)r%}r&(h'X&Download it from the `Downloads Page`_r'h(hh1hSh3jh5}r((h7]h8]h9]h:]h=]uh?Nh@hhA]r)h)r*}r+(h'j'h(j%h1hSh3hh5}r,(h7]h8]h9]h:]h=]uh?KhA]r-(hJXDownload it from the r.r/}r0(h'XDownload it from the h(j*ubh)r1}r2(h'X`Downloads Page`_hKh(j*h3hh5}r3(UnameXDownloads PagehWhh:]h9]h7]h8]h=]uhA]r4hJXDownloads Pager5r6}r7(h'Uh(j1ubaubeubaubj)r8}r9(h'X`View the ChangeLog`_ h(hh1hSh3jh5}r:(h7]h8]h9]h:]h=]uh?Nh@hhA]r;h)r<}r=(h'X`View the ChangeLog`_r>h(j8h1hSh3hh5}r?(h7]h8]h9]h:]h=]uh?KhA]r@h)rA}rB(h'j>hKh(j<h3hh5}rC(UnameXView the ChangeLoghWhh:]h9]h7]h8]h=]uhA]rDhJXView the ChangeLogrErF}rG(h'Uh(jAubaubaubaubeubh)rH}rI(h'Uh(h/h1hSh3hh5}rJ(UrefuriX%https://pypi.python.org/pypi/circuitsh:]h9]h7]h8]h=]uh?Nh@hhA]rKcdocutils.nodes image rL)rM}rN(h'X.. image:: https://pypip.in/v/circuits/badge.png?text=version :target: https://pypi.python.org/pypi/circuits :alt: Latest Version h5}rO(UuriX2https://pypip.in/v/circuits/badge.png?text=versionrPh:]h9]h7]h8]U candidatesrQ}rRU?jPsh=]UalthQXLatest VersionrSrT}rUbuh(jHhA]h3UimagerVubaubh)rW}rX(h'Uh(h/h1hSh3hh5}rY(UrefuriX%https://pypi.python.org/pypi/circuitsh:]h9]h7]h8]h=]uh?Nh@hhA]rZjL)r[}r\(h'X.. image:: https://pypip.in/py_versions/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Supported Python Versions h5}r](UuriX/https://pypip.in/py_versions/circuits/badge.svgr^h:]h9]h7]h8]jQ}r_U?j^sh=]UalthQXSupported Python Versionsr`ra}rbbuh(jWhA]h3jVubaubh)rc}rd(h'Uh(h/h1hSh3hh5}re(UrefuriX%https://pypi.python.org/pypi/circuitsh:]h9]h7]h8]h=]uh?Nh@hhA]rfjL)rg}rh(h'X.. image:: https://pypip.in/implementation/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Supported Python implementations h5}ri(UuriX2https://pypip.in/implementation/circuits/badge.svgrjh:]h9]h7]h8]jQ}rkU?jjsh=]UalthQX Supported Python implementationsrlrm}rnbuh(jchA]h3jVubaubh)ro}rp(h'Uh(h/h1hSh3hh5}rq(UrefuriX%https://pypi.python.org/pypi/circuitsh:]h9]h7]h8]h=]uh?Nh@hhA]rrjL)rs}rt(h'X.. image:: https://pypip.in/status/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Development Status h5}ru(UuriX*https://pypip.in/status/circuits/badge.svgrvh:]h9]h7]h8]jQ}rwU?jvsh=]UalthQXDevelopment Statusrxry}rzbuh(johA]h3jVubaubh)r{}r|(h'Uh(h/h1hSh3hh5}r}(UrefuriX%https://pypi.python.org/pypi/circuitsh:]h9]h7]h8]h=]uh?Nh@hhA]r~jL)r}r(h'X.. image:: https://pypip.in/d/circuits/badge.png :target: https://pypi.python.org/pypi/circuits :alt: Number of Downloads h5}r(UuriX%https://pypip.in/d/circuits/badge.pngrh:]h9]h7]h8]jQ}rU?jsh=]UalthQXNumber of Downloadsrr}rbuh(j{hA]h3jVubaubh)r}r(h'Uh(h/h1hSh3hh5}r(UrefuriX%https://pypi.python.org/pypi/circuitsh:]h9]h7]h8]h=]uh?Nh@hhA]rjL)r}r(h'Xx.. image:: https://pypip.in/format/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Format h5}r(UuriX*https://pypip.in/format/circuits/badge.svgrh:]h9]h7]h8]jQ}rU?jsh=]UalthQXFormatrr}rbuh(jhA]h3jVubaubh)r}r(h'Uh(h/h1hSh3hh5}r(UrefuriX%https://pypi.python.org/pypi/circuitsh:]h9]h7]h8]h=]uh?Nh@hhA]rjL)r}r(h'Xz.. image:: https://pypip.in/license/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: License h5}r(UuriX+https://pypip.in/license/circuits/badge.svgrh:]h9]h7]h8]jQ}rU?jsh=]UalthQXLicenserr}rbuh(jhA]h3jVubaubh)r}r(h'Uh(h/h1hSh3hh5}r(UrefuriXKhttps://requires.io/bitbucket/circuits/circuits/requirements?branch=defaulth:]h9]h7]h8]h=]uh?Nh@hhA]rjL)r}r(h'X.. image:: https://requires.io/bitbucket/circuits/circuits/requirements.png?branch=default :target: https://requires.io/bitbucket/circuits/circuits/requirements?branch=default :alt: Requirements Status h5}r(UuriXOhttps://requires.io/bitbucket/circuits/circuits/requirements.png?branch=defaultrh:]h9]h7]h8]jQ}rU?jsh=]UalthQXRequirements Statusrr}rbuh(jhA]h3jVubaubh,h))r}r(h'Uh(h/h1hSh3h4h5}r(h7]h8]h9]h:]rUfeaturesrah=]rhauh?KEh@hhA]r(hC)r}r(h'XFeaturesrh(jh1hSh3hGh5}r(h7]h8]h9]h:]h=]uh?KEh@hhA]rhJXFeaturesrr}r(h'jh(jubaubh)r}r(h'Uh(jh1hSh3hh5}r(hX-h:]h9]h7]h8]h=]uh?KGh@hhA]r(j)r}r(h'X event drivenrh(jh1hSh3jh5}r(h7]h8]h9]h:]h=]uh?Nh@hhA]rh)r}r(h'jh(jh1hSh3hh5}r(h7]h8]h9]h:]h=]uh?KGhA]rhJX event drivenrr}r(h'jh(jubaubaubj)r}r(h'Xconcurrency supportrh(jh1hSh3jh5}r(h7]h8]h9]h:]h=]uh?Nh@hhA]rh)r}r(h'jh(jh1hSh3hh5}r(h7]h8]h9]h:]h=]uh?KHhA]rhJXconcurrency supportrr}r(h'jh(jubaubaubj)r}r(h'Xcomponent architecturerh(jh1hSh3jh5}r(h7]h8]h9]h:]h=]uh?Nh@hhA]rh)r}r(h'jh(jh1hSh3hh5}r(h7]h8]h9]h:]h=]uh?KIhA]rhJXcomponent architecturerr}r(h'jh(jubaubaubj)r}r(h'Xasynchronous I/O componentsrh(jh1hSh3jh5}r(h7]h8]h9]h:]h=]uh?Nh@hhA]rh)r}r(h'jh(jh1hSh3hh5}r(h7]h8]h9]h:]h=]uh?KJhA]rhJXasynchronous I/O componentsrr}r(h'jh(jubaubaubj)r}r(h'X!no required external dependenciesrh(jh1hSh3jh5}r(h7]h8]h9]h:]h=]uh?Nh@hhA]rh)r}r(h'jh(jh1hSh3hh5}r(h7]h8]h9]h:]h=]uh?KKhA]rhJX!no required external dependenciesrr}r(h'jh(jubaubaubj)r}r(h'X*full featured web framework (circuits.web)rh(jh1hSh3jh5}r(h7]h8]h9]h:]h=]uh?Nh@hhA]rh)r}r(h'jh(jh1hSh3hh5}r(h7]h8]h9]h:]h=]uh?KLhA]rhJX*full featured web framework (circuits.web)rr}r(h'jh(jubaubaubj)r}r(h'X,coroutine based synchronization primitives h(jh1hSh3jh5}r(h7]h8]h9]h:]h=]uh?Nh@hhA]r h)r }r (h'X*coroutine based synchronization primitivesr h(jh1hSh3hh5}r (h7]h8]h9]h:]h=]uh?KMhA]rhJX*coroutine based synchronization primitivesrr}r(h'j h(j ubaubaubeubeubh))r}r(h'Uh(h/h1hSh3h4h5}r(h7]h8]h9]h:]rU requirementsrah=]rhauh?KQh@hhA]r(hC)r}r(h'X Requirementsrh(jh1hSh3hGh5}r(h7]h8]h9]h:]h=]uh?KQh@hhA]rhJX Requirementsrr}r (h'jh(jubaubh)r!}r"(h'Uh(jh1hSh3hh5}r#(hX-h:]h9]h7]h8]h=]uh?KSh@hhA]r$j)r%}r&(h'XEcircuits has no dependencies beyond the `Python Standard Library`_. h(j!h1hSh3jh5}r'(h7]h8]h9]h:]h=]uh?Nh@hhA]r(h)r)}r*(h'XCcircuits has no dependencies beyond the `Python Standard Library`_.h(j%h1hSh3hh5}r+(h7]h8]h9]h:]h=]uh?KShA]r,(hJX(circuits has no dependencies beyond the r-r.}r/(h'X(circuits has no dependencies beyond the h(j)ubh)r0}r1(h'X`Python Standard Library`_hKh(j)h3hh5}r2(UnameXPython Standard LibraryhWhmh:]h9]h7]h8]h=]uhA]r3hJXPython Standard Libraryr4r5}r6(h'Uh(j0ubaubhJX.r7}r8(h'X.h(j)ubeubaubaubeubh))r9}r:(h'Uh(h/h1hSh3h4h5}r;(h7]h8]h9]h:]r<Usupported-platformsr=ah=]r>h auh?KWh@hhA]r?(hC)r@}rA(h'XSupported PlatformsrBh(j9h1hSh3hGh5}rC(h7]h8]h9]h:]h=]uh?KWh@hhA]rDhJXSupported PlatformsrErF}rG(h'jBh(j@ubaubh)rH}rI(h'Uh(j9h1hSh3hh5}rJ(hX-h:]h9]h7]h8]h=]uh?KYh@hhA]rK(j)rL}rM(h'X!Linux, FreeBSD, Mac OS X, WindowsrNh(jHh1hSh3jh5}rO(h7]h8]h9]h:]h=]uh?Nh@hhA]rPh)rQ}rR(h'jNh(jLh1hSh3hh5}rS(h7]h8]h9]h:]h=]uh?KYhA]rThJX!Linux, FreeBSD, Mac OS X, WindowsrUrV}rW(h'jNh(jQubaubaubj)rX}rY(h'XPython 2.6, 2.7, 3.2, 3.3, 3.4rZh(jHh1hSh3jh5}r[(h7]h8]h9]h:]h=]uh?Nh@hhA]r\h)r]}r^(h'jZh(jXh1hSh3hh5}r_(h7]h8]h9]h:]h=]uh?KZhA]r`hJXPython 2.6, 2.7, 3.2, 3.3, 3.4rarb}rc(h'jZh(j]ubaubaubj)rd}re(h'Xpypy 2.0, 2.1, 2.2 h(jHh1hSh3jh5}rf(h7]h8]h9]h:]h=]uh?Nh@hhA]rgh)rh}ri(h'Xpypy 2.0, 2.1, 2.2rjh(jdh1hSh3hh5}rk(h7]h8]h9]h:]h=]uh?K[hA]rlhJXpypy 2.0, 2.1, 2.2rmrn}ro(h'jjh(jhubaubaubeubeubh))rp}rq(h'Uh(h/h1hSh3h4h5}rr(h7]h8]h9]h:]rsU installationrtah=]ruhauh?K_h@hhA]rv(hC)rw}rx(h'X Installationryh(jph1hSh3hGh5}rz(h7]h8]h9]h:]h=]uh?K_h@hhA]r{hJX Installationr|r}}r~(h'jyh(jwubaubh)r}r(h'XThe simplest and recommended way to install circuits is with pip. You may install the latest stable release from PyPI with pip::h(jph1hSh3hh5}r(h7]h8]h9]h:]h=]uh?Kah@hhA]rhJXThe simplest and recommended way to install circuits is with pip. You may install the latest stable release from PyPI with pip:rr}r(h'XThe simplest and recommended way to install circuits is with pip. You may install the latest stable release from PyPI with pip:h(jubaubcdocutils.nodes literal_block r)r}r(h'X> pip install circuitsh(jph1hSh3U literal_blockrh5}r(U xml:spacerUpreserverh:]h9]h7]h8]h=]uh?Kh@hhA]rhJX> pip install circuitsrr}r(h'Uh(jubaubh)r}r(h'X2If you do not have pip, you may use easy_install::rh(jph1hSh3hh5}r(h7]h8]h9]h:]h=]uh?Kfh@hhA]rhJX1If you do not have pip, you may use easy_install:rr}r(h'X1If you do not have pip, you may use easy_install:h(jubaubj)r}r(h'X> easy_install circuitsh(jph1hSh3jh5}r(jjh:]h9]h7]h8]h=]uh?Kh@hhA]rhJX> easy_install circuitsrr}r(h'Uh(jubaubh)r}r(h'XAlternatively, you may download the source package from the `PyPi Page`_ or the `Downloads Page`_ extract it and install using::h(jph1hSh3hh5}r(h7]h8]h9]h:]h=]uh?Kjh@hhA]r(hJX<Alternatively, you may download the source package from the rr}r(h'X<Alternatively, you may download the source package from the h(jubh)r}r(h'X `PyPi Page`_hKh(jh3hh5}r(UnameX PyPi PagehWhh:]h9]h7]h8]h=]uhA]rhJX PyPi Pagerr}r(h'Uh(jubaubhJX or the rr}r(h'X or the h(jubh)r}r(h'X`Downloads Page`_hKh(jh3hh5}r(UnameXDownloads PagehWhh:]h9]h7]h8]h=]uhA]rhJXDownloads Pagerr}r(h'Uh(jubaubhJX extract it and install using:rr}r(h'X extract it and install using:h(jubeubj)r}r(h'X> python setup.py installh(jph1hSh3jh5}r(jjh:]h9]h7]h8]h=]uh?Kh@hhA]rhJX> python setup.py installrr}r(h'Uh(jubaubcdocutils.nodes note r)r}r(h'XYou can install the `development version `_ via ``pip install circuits==dev``.h(jph1hSh3Unoterh5}r(h7]h8]h9]h:]h=]uh?Nh@hhA]rh)r}r(h'XYou can install the `development version `_ via ``pip install circuits==dev``.h(jh1hSh3hh5}r(h7]h8]h9]h:]h=]uh?KqhA]r(hJXYou can install the rr}r(h'XYou can install the h(jubh)r}r(h'X``development version `_h5}r(UnameXdevelopment versionhWXGhttps://bitbucket.org/circuits/circuits/get/tip.tar.gz#egg=circuits-devrh:]h9]h7]h8]h=]uh(jhA]rhJXdevelopment versionrr}r(h'Uh(jubah3hubhN)r}r(h'XJ h.Kh(jh3hUh5}r(Urefurijh:]rUdevelopment-versionrah9]h7]h8]h=]rh auhA]ubhJX via rr}r(h'X via h(jubcdocutils.nodes literal r)r}r(h'X``pip install circuits==dev``h5}r(h7]h8]h9]h:]h=]uh(jhA]rhJXpip install circuits==devrr}r(h'Uh(jubah3UliteralrubhJX.r}r(h'X.h(jubeubaubeubh))r}r(h'Uh(h/h1hSh3h4h5}r(h7]h8]h9]h:]rUlicenserah=]rhauh?Kwh@hhA]r(hC)r}r(h'XLicenserh(jh1hSh3hGh5}r(h7]h8]h9]h:]h=]uh?Kwh@hhA]rhJXLicenserr}r(h'jh(jubaubh)r}r(h'X.circuits is licensed under the `MIT License`_.rh(jh1hSh3hh5}r(h7]h8]h9]h:]h=]uh?Kyh@hhA]r(hJXcircuits is licensed under the rr}r(h'Xcircuits is licensed under the h(jubh)r}r(h'X`MIT License`_hKh(jh3hh5}r(UnameX MIT LicensehWhth:]h9]h7]h8]h=]uhA]rhJX MIT Licenserr}r(h'Uh(jubaubhJX.r }r (h'X.h(jubeubeubh))r }r (h'Uh(h/h1hSh3h4h5}r (h7]h8]h9]h:]rUfeedbackrah=]rhauh?K}h@hhA]r(hC)r}r(h'XFeedbackrh(j h1hSh3hGh5}r(h7]h8]h9]h:]h=]uh?K}h@hhA]rhJXFeedbackrr}r(h'jh(jubaubh)r}r(h'XWe welcome any questions or feedback about bugs and suggestions on how to improve circuits. Let us know what you think about circuits. `@pythoncircuits `_.h(j h1hSh3hh5}r(h7]h8]h9]h:]h=]uh?Kh@hhA]r(hJXWe welcome any questions or feedback about bugs and suggestions on how to improve circuits. Let us know what you think about circuits. rr}r (h'XWe welcome any questions or feedback about bugs and suggestions on how to improve circuits. Let us know what you think about circuits. h(jubh)r!}r"(h'X6`@pythoncircuits `_h5}r#(UnamehhWX!http://twitter.com/pythoncircuitsr$h:]h9]h7]h8]h=]uh(jhA]r%hJX@pythoncircuitsr&r'}r((h'Uh(j!ubah3hubhN)r)}r*(h'X$ h.Kh(jh3hUh5}r+(Urefurij$h:]r,Upythoncircuitsr-ah9]h7]h8]h=]r.hauhA]ubhJX.r/}r0(h'X.h(jubeubh)r1}r2(h'XDo you have suggestions for improvement? Then please `Create an Issue`_ with details of what you would like to see. I'll take a look at it and work with you to either incorporate the idea or find a better solution.h(j h1hSh3hh5}r3(h7]h8]h9]h:]h=]uh?Kh@hhA]r4(hJX5Do you have suggestions for improvement? Then please r5r6}r7(h'X5Do you have suggestions for improvement? Then please h(j1ubh)r8}r9(h'X`Create an Issue`_hKh(j1h3hh5}r:(UnameXCreate an IssuehWh{h:]h9]h7]h8]h=]uhA]r;hJXCreate an Issuer<r=}r>(h'Uh(j8ubaubhJX with details of what you would like to see. I'll take a look at it and work with you to either incorporate the idea or find a better solution.r?r@}rA(h'X with details of what you would like to see. I'll take a look at it and work with you to either incorporate the idea or find a better solution.h(j1ubeubeubh))rB}rC(h'Uh(h/h1hSh3h4h5}rD(h7]h8]h9]h:]rEU communityrFah=]rGh auh?Kh@hhA]rH(hC)rI}rJ(h'X CommunityrKh(jBh1hSh3hGh5}rL(h7]h8]h9]h:]h=]uh?Kh@hhA]rMhJX CommunityrNrO}rP(h'jKh(jIubaubh)rQ}rR(h'XThere is also a small community of circuits enthusiasts that you may find on the `#circuits IRC Channel`_ on the `FreeNode IRC Network`_ and the `Mailing List`_.h(jBh1hSh3hh5}rS(h7]h8]h9]h:]h=]uh?Kh@hhA]rT(hJXQThere is also a small community of circuits enthusiasts that you may find on the rUrV}rW(h'XQThere is also a small community of circuits enthusiasts that you may find on the h(jQubh)rX}rY(h'X`#circuits IRC Channel`_hKh(jQh3hh5}rZ(UnameX#circuits IRC ChannelhWh_h:]h9]h7]h8]h=]uhA]r[hJX#circuits IRC Channelr\r]}r^(h'Uh(jXubaubhJX on the r_r`}ra(h'X on the h(jQubh)rb}rc(h'X`FreeNode IRC Network`_hKh(jQh3hh5}rd(UnameXFreeNode IRC NetworkhWhfh:]h9]h7]h8]h=]uhA]rehJXFreeNode IRC Networkrfrg}rh(h'Uh(jbubaubhJX and the rirj}rk(h'X and the h(jQubh)rl}rm(h'X`Mailing List`_hKh(jQh3hh5}rn(UnameX Mailing ListhWhh:]h9]h7]h8]h=]uhA]rohJX Mailing Listrprq}rr(h'Uh(jlubaubhJX.rs}rt(h'X.h(jQubeubeubeubh1hSh3h4h5}ru(h7]rvXexamplesrwah8]h9]h:]rxUexamplesryah=]uh?K>h@hhA]rz(hC)r{}r|(h'XExamplesr}h(h,h1hSh3hGh5}r~(h7]h8]h9]h:]h=]uh?K>h@hhA]rhJXExamplesrr}r(h'j}h(j{ubaubh))r}r(h'Uh(h,h1hQXsource/examples/index.rstrr}rbh3h4h5}r(h7]h8]h9]h:]rUhellorah=]rhauh?Kh@hhA]r(hC)r}r(h'XHellorh(jh1jh3hGh5}r(h7]h8]h9]h:]h=]uh?Kh@hhA]rhJXHellorr}r(h'jh(jubaubj)r}r(h'XL#!/usr/bin/env python """circuits Hello World""" from circuits import Component, Event class hello(Event): """hello Event""" class App(Component): def hello(self): """Hello Event Handler""" print("Hello World!") def started(self, component): """Started Event Handler This is fired internally when your application starts up and can be used to trigger events that only occur once during startup. """ self.fire(hello()) # Fire hello Event raise SystemExit(0) # Terminate the Application App().run() h(jh1jh3jh5}r(UlinenosrUlanguagerhQXpythonrr}rbh7]jjh:]h9]UsourceX:/home/prologic/work/circuits/docs/source/examples/hello.pyh8]h=]uh?Kh@hhA]rhJXL#!/usr/bin/env python """circuits Hello World""" from circuits import Component, Event class hello(Event): """hello Event""" class App(Component): def hello(self): """Hello Event Handler""" print("Hello World!") def started(self, component): """Started Event Handler This is fired internally when your application starts up and can be used to trigger events that only occur once during startup. """ self.fire(hello()) # Fire hello Event raise SystemExit(0) # Terminate the Application App().run() rr}r(h'Uh(jubaubh)r}r(h'X?Download Source Code: :download:`hello.py: `rh(jh1jh3hh5}r(h7]h8]h9]h:]h=]uh?K h@hhA]r(hJXDownload Source Code: rr}r(h'XDownload Source Code: h(jubcsphinx.addnodes download_reference r)r}r(h'X):download:`hello.py: `rh(jh1jh3Udownload_referencerh5}r(UreftypeXdownloadrUrefwarnrU reftargetrXexamples/hello.pyU refdomainUh:]h9]U refexplicith7]h8]h=]UrefdocrXreadmerUfilenamerXhello.pyruh?K hA]rj)r}r(h'jh5}r(h7]h8]r(Uxrefrjeh9]h:]h=]uh(jhA]rhJX hello.py:rr}r(h'Uh(jubah3jubaubeubeubh))r}r(h'Uh(h,h1jh3h4h5}r(h7]h8]h9]h:]rU echo-serverrah=]rhauh?Kh@hhA]r(hC)r}r(h'X Echo Serverrh(jh1jh3hGh5}r(h7]h8]h9]h:]h=]uh?Kh@hhA]rhJX Echo Serverrr}r(h'jh(jubaubj)r}r(h'X#!/usr/bin/env python """Simple TCP Echo Server This example shows how you can create a simple TCP Server (an Echo Service) utilizing the builtin Socket Components that the circuits library ships with. """ from circuits import handler, Debugger from circuits.net.sockets import TCPServer class EchoServer(TCPServer): @handler("read") def on_read(self, sock, data): """Read Event Handler This is fired by the underlying Socket Component when there has been new data read from the connected client. ..note :: By simply returning, client/server socket components listen to ValueChagned events (feedback) to determine if a handler returned some data and fires a subsequent Write event with the value returned. """ return data # Start and "run" the system. # Bind to port 0.0.0.0:8000 app = EchoServer(("0.0.0.0", 8000)) Debugger().register(app) app.run() h(jh1jh3jh5}r(jjhQXpythonrr}rbh7]jjh:]h9]UsourceX?/home/prologic/work/circuits/docs/source/examples/echoserver.pyh8]h=]uh?Kh@hhA]rhJX#!/usr/bin/env python """Simple TCP Echo Server This example shows how you can create a simple TCP Server (an Echo Service) utilizing the builtin Socket Components that the circuits library ships with. """ from circuits import handler, Debugger from circuits.net.sockets import TCPServer class EchoServer(TCPServer): @handler("read") def on_read(self, sock, data): """Read Event Handler This is fired by the underlying Socket Component when there has been new data read from the connected client. ..note :: By simply returning, client/server socket components listen to ValueChagned events (feedback) to determine if a handler returned some data and fires a subsequent Write event with the value returned. """ return data # Start and "run" the system. # Bind to port 0.0.0.0:8000 app = EchoServer(("0.0.0.0", 8000)) Debugger().register(app) app.run() rr}r(h'Uh(jubaubh)r}r(h'XIDownload Source Code: :download:`echoserver.py: `rh(jh1jh3hh5}r(h7]h8]h9]h:]h=]uh?Kh@hhA]r(hJXDownload Source Code: rr}r(h'XDownload Source Code: h(jubj)r}r(h'X3:download:`echoserver.py: `rh(jh1jh3jh5}r(UreftypeXdownloadrjjXexamples/echoserver.pyU refdomainUh:]h9]U refexplicith7]h8]h=]jjjX echoserver.pyruh?KhA]rj)r}r(h'jh5}r(h7]h8]r(jjeh9]h:]h=]uh(jhA]rhJXechoserver.py:rr}r(h'Uh(jubah3jubaubeubeubh*eubh1jh3h4h5}r(h7]h8]h9]h:]rU hello-webrah=]rh auh?Kh@hhA]r(hC)r}r(h'X Hello Webrh(h*h1jh3hGh5}r(h7]h8]h9]h:]h=]uh?Kh@hhA]rhJX Hello Webrr}r(h'jh(jubaubj)r}r(h'X#!/usr/bin/env python from circuits.web import Server, Controller class Root(Controller): def index(self): """Index Request Handler Controller(s) expose implicitly methods as request handlers. Request Handlers can still be customized by using the ``@expose`` decorator. For example exposing as a different path. """ return "Hello World!" app = Server(("0.0.0.0", 8000)) Root().register(app) app.run() h(h*h1jh3jh5}r(jjhQXpythonrr}rbh7]jjh:]h9]UsourceX=/home/prologic/work/circuits/docs/source/examples/helloweb.pyh8]h=]uh?Kh@hhA]rhJX#!/usr/bin/env python from circuits.web import Server, Controller class Root(Controller): def index(self): """Index Request Handler Controller(s) expose implicitly methods as request handlers. Request Handlers can still be customized by using the ``@expose`` decorator. For example exposing as a different path. """ return "Hello World!" app = Server(("0.0.0.0", 8000)) Root().register(app) app.run() rr}r(h'Uh(jubaubh)r}r(h'XEDownload Source Code: :download:`helloweb.py: `r h(h*h1jh3hh5}r (h7]h8]h9]h:]h=]uh?K"h@hhA]r (hJXDownload Source Code: r r }r(h'XDownload Source Code: h(jubj)r}r(h'X/:download:`helloweb.py: `rh(jh1jh3jh5}r(UreftypeXdownloadrjjXexamples/helloweb.pyU refdomainUh:]h9]U refexplicith7]h8]h=]jjjX helloweb.pyruh?K"hA]rj)r}r(h'jh5}r(h7]h8]r(jjeh9]h:]h=]uh(jhA]rhJX helloweb.py:rr}r(h'Uh(jubah3jubaubeubh)r}r(h'XOMore `examples `_...r h(h*h1jh3hh5}r!(h7]h8]h9]h:]h=]uh?K'h@hhA]r"(hJXMore r#r$}r%(h'XMore h(jubh)r&}r'(h'XG`examples `_h5}r((UnamejwhWX9https://bitbucket.org/circuits/circuits/src/tip/examples/r)h:]h9]h7]h8]h=]uh(jhA]r*hJXexamplesr+r,}r-(h'Uh(j&ubah3hubhN)r.}r/(h'X< h.Kh(jh3hUh5}r0(Urefurij)h:]r1Uid1r2ah9]h7]h8]h=]r3jwauhA]ubhJX...r4r5}r6(h'X...h(jubeubeubh1X0internal padding after source/examples/index.rstr7h3Usystem_messager8h5}r9(h7]UlevelKh:]h9]r:j2aUsourceh2h8]h=]UlineKUtypeUINFOr;uh?K(h@hhA]r<h)r=}r>(h'Uh5}r?(h7]h8]h9]h:]h=]uh(h%hA]r@hJX+Duplicate implicit target name: "examples".rArB}rC(h'Uh(j=ubah3hubaubaUcurrent_sourcerDNU decorationrENUautofootnote_startrFKUnameidsrG}rH(hhvhhhjh hhh j=h jh jFh jhj2hjhjhhhhZhh}hhhj-hhhjhhhjthjhhahh]Ubackrefsq?]Uidsq@]qAUcircuits-version-documentationqBaUnamesqC]qDh auUlineqEKUdocumentqFhUchildrenqG]qH(cdocutils.nodes title qI)qJ}qK(h+X circuits |version| DocumentationqLh,h5h7h8h9UtitleqMh;}qN(h=]h>]h?]h@]hC]uhEKhFhhG]qO(cdocutils.nodes Text qPX circuits qQqR}qS(h+X circuits qTh,hJubhPX3.1qUqV}qW(h+U3.1qXh7NhENhFhh,hJubhPX DocumentationqYqZ}q[(h+X Documentationq\h,hJubeubcdocutils.nodes field_list q])q^}q_(h+Uh,h5h7h8h9U field_listq`h;}qa(h=]h>]h?]h@]hC]uhEKhFhhG]qb(cdocutils.nodes field qc)qd}qe(h+Uh,h^h7h8h9Ufieldqfh;}qg(h=]h>]h?]h@]hC]uhEKhFhhG]qh(cdocutils.nodes field_name qi)qj}qk(h+XReleaseqlh;}qm(h=]h>]h?]h@]hC]uh,hdhG]qnhPXReleaseqoqp}qq(h+hlh,hjubah9U field_nameqrubcdocutils.nodes field_body qs)qt}qu(h+X |release|qvh;}qw(h=]h>]h?]h@]hC]uh,hdhG]qxcdocutils.nodes paragraph qy)qz}q{(h+hvh,hth7h8h9U paragraphq|h;}q}(h=]h>]h?]h@]hC]uhEKhG]q~hPX 3.1.0.devqq}q(h+U 3.1.0.devqh,hzubaubah9U field_bodyqubeubhc)q}q(h+Uh,h^h7h8h9hfh;}q(h=]h>]h?]h@]hC]uhEKhFhhG]q(hi)q}q(h+XDateqh;}q(h=]h>]h?]h@]hC]uh,hhG]qhPXDateqq}q(h+hh,hubah9hrubhs)q}q(h+X |today| h;}q(h=]h>]h?]h@]hC]uh,hhG]qhy)q}q(h+X|today|qh,hh7h8h9h|h;}q(h=]h>]h?]h@]hC]uhEKhG]qhPXNovember 01, 2014qq}q(h+XNovember 01, 2014h,hubaubah9hubeubeubh3h-)q}q(h+Uh,h5h7h8Uexpect_referenced_by_nameq}qhcdocutils.nodes target q)q}q(h+X.. _documentation-index:h,h-)q}q(h+Uh,h3h7cdocutils.nodes reprunicode qX ../README.rstqq}qbh9h:h;}q(h=]h>]h?]h@]qU communityqahC]qh auhEKhFhhG]q(hI)q}q(h+X Communityqh,hh7hh9hMh;}q(h=]h>]h?]h@]hC]uhEKhFhhG]qhPX Communityqq}q(h+hh,hubaubhy)q}q(h+XThere is also a small community of circuits enthusiasts that you may find on the `#circuits IRC Channel`_ on the `FreeNode IRC Network`_ and the `Mailing List`_.h,hh7hh9h|h;}q(h=]h>]h?]h@]hC]uhEKhFhhG]q(hPXQThere is also a small community of circuits enthusiasts that you may find on the qq}q(h+XQThere is also a small community of circuits enthusiasts that you may find on the h,hubcdocutils.nodes reference q)q}q(h+X`#circuits IRC Channel`_UresolvedqKh,hh9U referenceqh;}q(UnameX#circuits IRC ChannelUrefuriqXBhttp://webchat.freenode.net/?randomnick=1&channels=circuits&uio=d4qh@]h?]h=]h>]hC]uhG]qhPX#circuits IRC Channelqƅq}q(h+Uh,hubaubhPX on the qɅq}q(h+X on the h,hubh)q}q(h+X`FreeNode IRC Network`_hKh,hh9hh;}q(UnameXFreeNode IRC NetworkhXhttp://freenode.netqh@]h?]h=]h>]hC]uhG]qhPXFreeNode IRC Networkqхq}q(h+Uh,hubaubhPX and the qԅq}q(h+X and the h,hubh)q}q(h+X`Mailing List`_hKh,hh9hh;}q(UnameX Mailing ListhX-http://groups.google.com/group/circuits-usersqh@]h?]h=]h>]hC]uhG]qhPX Mailing Listq܅q}q(h+Uh,hubaubhPX.q}q(h+X.h,hubeubheubh7h8h9Utargetqh;}q(h@]h?]h=]h>]hC]UrefidqUdocumentation-indexquhEKhFhhG]ubsh9h:h;}q(h=]h>]h?]h@]q(U documentationqhehC]q(hheuhEKhFhUexpect_referenced_by_idq}qhhshG]q(hI)q}q(h+X Documentationqh,hh7h8h9hMh;}q(h=]h>]h?]h@]hC]uhEKhFhhG]qhPX Documentationqq}q(h+hh,hubaubcdocutils.nodes compound q)q}q(h+Uh,hh7h8h9Ucompoundqh;}q(h=]h>]qUtoctree-wrapperqah?]h@]hC]uhENhFhhG]qcsphinx.addnodes toctree q)q}q(h+Uh,hh7h8h9Utoctreeqh;}r(UnumberedrKU includehiddenrh,XindexrU titlesonlyrUglobrh@]h?]h=]h>]hC]Uentriesr]r(NX start/indexrr NXtutorials/indexr r NX man/indexr r NX web/indexrrNX api/indexrrNX dev/indexrrNXchangesrrNXroadmaprrNX contributorsrrNXfaqrreUhiddenrU includefilesr]r(jj j jjjjjjjeUmaxdepthrKuhEKhG]ubaubh)r }r!(h+Uh,hh7h8h9hh;}r"(h=]h>]r#hah?]h@]hC]uhENhFhhG]r$h)r%}r&(h+Uh,j h7h8h9hh;}r'(jKjh,jjjh@]h?]h=]h>]hC]j]r((NXglossaryr)r*NXexamples/indexr+r,ejj]r-(j)j+ejJuhEK%hG]ubaubcsphinx.ext.ifconfig ifconfig r.)r/}r0(h+Uh,hh7h8h9Uifconfigr1h;}r2(Uexprr3Xdevelh@]h?]h=]h>]hC]uhEK+hFhhG]r4h)r5}r6(h+Uh,j/h7h8h9hh;}r7(h=]h>]r8hah?]h@]hC]uhENhFhhG]r9h)r:}r;(h+Uh,j5h7h8h9hh;}r<(jKjh,jjjh@]h?]h=]h>]hC]j]r=(NXtodor>r?NXreadmer@rAejj]rB(j>j@ejJuhEK-hG]ubaubaubeubh-)rC}rD(h+Uh,h5h7h8h9h:h;}rE(h=]h>]h?]h@]rFUindices-and-tablesrGahC]rHhauhEK5hFhhG]rI(hI)rJ}rK(h+XIndices and tablesrLh,jCh7h8h9hMh;}rM(h=]h>]h?]h@]hC]uhEK5hFhhG]rNhPXIndices and tablesrOrP}rQ(h+jLh,jJubaubcdocutils.nodes bullet_list rR)rS}rT(h+Uh,jCh7h8h9U bullet_listrUh;}rV(UbulletrWX*h@]h?]h=]h>]hC]uhEK8hFhhG]rX(cdocutils.nodes list_item rY)rZ}r[(h+X:ref:`Index `r\h,jSh7h8h9U list_itemr]h;}r^(h=]h>]h?]h@]hC]uhENhFhhG]r_hy)r`}ra(h+j\h,jZh7h8h9h|h;}rb(h=]h>]h?]h@]hC]uhEK8hG]rccsphinx.addnodes pending_xref rd)re}rf(h+j\h,j`h7h8h9U pending_xrefrgh;}rh(UreftypeXrefUrefwarnriU reftargetrjXgenindexU refdomainXstdrkh@]h?]U refexplicith=]h>]hC]UrefdocrljuhEK8hG]rmcdocutils.nodes emphasis rn)ro}rp(h+j\h;}rq(h=]h>]rr(UxrefrsjkXstd-refrteh?]h@]hC]uh,jehG]ruhPXIndexrvrw}rx(h+Uh,joubah9UemphasisryubaubaubaubjY)rz}r{(h+X:ref:`modindex`r|h,jSh7h8h9j]h;}r}(h=]h>]h?]h@]hC]uhENhFhhG]r~hy)r}r(h+j|h,jzh7h8h9h|h;}r(h=]h>]h?]h@]hC]uhEK9hG]rjd)r}r(h+j|h,jh7h8h9jgh;}r(UreftypeXrefjijjXmodindexU refdomainXstdrh@]h?]U refexplicith=]h>]hC]jljuhEK9hG]rjn)r}r(h+j|h;}r(h=]h>]r(jsjXstd-refreh?]h@]hC]uh,jhG]rhPXmodindexrr}r(h+Uh,jubah9jyubaubaubaubjY)r}r(h+X :ref:`search`rh,jSh7h8h9j]h;}r(h=]h>]h?]h@]hC]uhENhFhhG]rhy)r}r(h+jh,jh7h8h9h|h;}r(h=]h>]h?]h@]hC]uhEK:hG]rjd)r}r(h+jh,jh7h8h9jgh;}r(UreftypeXrefjijjXsearchU refdomainXstdrh@]h?]U refexplicith=]h>]hC]jljuhEK:hG]rjn)r}r(h+jh;}r(h=]h>]r(jsjXstd-refreh?]h@]hC]uh,jhG]rhPXsearchrr}r(h+Uh,jubah9jyubaubaubaubjY)r}r(h+X:doc:`glossary` h,jSh7h8h9j]h;}r(h=]h>]h?]h@]hC]uhENhFhhG]rhy)r}r(h+X:doc:`glossary`rh,jh7h8h9h|h;}r(h=]h>]h?]h@]hC]uhEK;hG]rjd)r}r(h+jh,jh7h8h9jgh;}r(UreftypeXdocrjijjXglossaryU refdomainUh@]h?]U refexplicith=]h>]hC]jljuhEK;hG]rcdocutils.nodes literal r)r}r(h+jh;}r(h=]h>]r(jsjeh?]h@]hC]uh,jhG]rhPXglossaryrr}r(h+Uh,jubah9Uliteralrubaubaubaubeubj.)r}r(h+Uh,jCh7h8h9j1h;}r(j3Xdevelrh@]h?]h=]h>]hC]uhEK=hFhhG]rjR)r}r(h+Uh,jh7h8h9jUh;}r(jWX*h@]h?]h=]h>]hC]uhEK?hFhhG]r(jY)r}r(h+X :doc:`todo`rh,jh7h8h9j]h;}r(h=]h>]h?]h@]hC]uhENhFhhG]rhy)r}r(h+jh,jh7h8h9h|h;}r(h=]h>]h?]h@]hC]uhEK?hG]rjd)r}r(h+jh,jh7h8h9jgh;}r(UreftypeXdocrjijjXtodoU refdomainUh@]h?]U refexplicith=]h>]hC]jljuhEK?hG]rj)r}r(h+jh;}r(h=]h>]r(jsjeh?]h@]hC]uh,jhG]rhPXtodorr}r(h+Uh,jubah9jubaubaubaubjY)r}r(h+X :doc:`readme`rh,jh7h8h9j]h;}r(h=]h>]h?]h@]hC]uhENhFhhG]rhy)r}r(h+jh,jh7h8h9h|h;}r(h=]h>]h?]h@]hC]uhEK@hG]rjd)r}r(h+jh,jh7h8h9jgh;}r(UreftypeXdocrjijjXreadmeU refdomainUh@]h?]U refexplicith=]h>]hC]jljuhEK@hG]rj)r}r(h+jh;}r(h=]h>]r(jsjeh?]h@]hC]uh,jhG]rhPXreadmerr}r(h+Uh,jubah9jubaubaubaubeubaubeubeubh7h8h9h:h;}r(h=]h>]h?]h@]rUaboutrahC]rhauhEK hFhhG]r(hI)r}r(h+XAboutrh,h3h7h8h9hMh;}r(h=]h>]h?]h@]hC]uhEK hFhhG]rhPXAboutrr}r(h+jh,jubaubh)r}r(h+X7.. _Python Programming Language: http://www.python.org/h2Kh,h3h7hh9hh;}r(hXhttp://www.python.org/rh@]rUpython-programming-languagerah?]h=]h>]hC]rhauhEKhFhhG]ubh)r }r (h+X].. _#circuits IRC Channel: http://webchat.freenode.net/?randomnick=1&channels=circuits&uio=d4h2Kh,h3h7hh9hh;}r (hhh@]r Ucircuits-irc-channelr ah?]h=]h>]hC]rhauhEKhFhhG]ubh)r}r(h+X-.. _FreeNode IRC Network: http://freenode.neth2Kh,h3h7hh9hh;}r(hhh@]rUfreenode-irc-networkrah?]h=]h>]hC]rh auhEKhFhhG]ubh)r}r(h+X<.. _Python Standard Library: http://docs.python.org/library/h2Kh,h3h7hh9hh;}r(hXhttp://docs.python.org/library/rh@]rUpython-standard-libraryrah?]h=]h>]hC]rh#auhEKhFhhG]ubh)r}r(h+XC.. _MIT License: http://www.opensource.org/licenses/mit-license.phph2Kh,h3h7hh9hh;}r(hX2http://www.opensource.org/licenses/mit-license.phprh@]r U mit-licenser!ah?]h=]h>]hC]r"hauhEKhFhhG]ubh)r#}r$(h+XF.. _Create an Issue: https://bitbucket.org/circuits/circuits/issue/newh2Kh,h3h7hh9hh;}r%(hX1https://bitbucket.org/circuits/circuits/issue/newr&h@]r'Ucreate-an-issuer(ah?]h=]h>]hC]r)hauhEKhFhhG]ubh)r*}r+(h+X?.. _Mailing List: http://groups.google.com/group/circuits-usersh2Kh,h3h7hh9hh;}r,(hhh@]r-U mailing-listr.ah?]h=]h>]hC]r/hauhEKhFhhG]ubh)r0}r1(h+X2.. _Project Website: http://circuitsframework.com/h2Kh,h3h7hh9hh;}r2(hXhttp://circuitsframework.com/r3h@]r4Uproject-websiter5ah?]h=]h>]hC]r6hauhEKhFhhG]ubh)r7}r8(h+X3.. _PyPi Page: http://pypi.python.org/pypi/circuitsh2Kh,h3h7hh9hh;}r9(hX$http://pypi.python.org/pypi/circuitsr:h@]r;U pypi-pager<ah?]h=]h>]hC]r=h!auhEKhFhhG]ubh)r>}r?(h+X=.. _Read the Docs: http://circuits.readthedocs.org/en/latest/h2Kh,h3h7hh9hh;}r@(hX*http://circuits.readthedocs.org/en/latest/rAh@]rBU read-the-docsrCah?]h=]h>]hC]rDhauhEKhFhhG]ubh)rE}rF(h+XN.. _View the ChangeLog: http://circuits.readthedocs.org/en/latest/changes.htmlh2Kh,h3h7hh9hh;}rG(hX6http://circuits.readthedocs.org/en/latest/changes.htmlrHh@]rIUview-the-changelogrJah?]h=]h>]hC]rKhauhEKhFhhG]ubh)rL}rM(h+XE.. _Downloads Page: https://bitbucket.org/circuits/circuits/downloadsh2Kh,h3h7hh9hh;}rN(hX1https://bitbucket.org/circuits/circuits/downloadsrOh@]rPUdownloads-pagerQah?]h=]h>]hC]rRhauhEKhFhhG]ubhy)rS}rT(h+Xcircuits is a **Lightweight** **Event** driven and **Asynchronous** **Application Framework** for the `Python Programming Language`_ with a strong **Component** Architecture.h,h3h7hh9h|h;}rU(h=]h>]h?]h@]hC]uhEKhFhhG]rV(hPXcircuits is a rWrX}rY(h+Xcircuits is a h,jSubcdocutils.nodes strong rZ)r[}r\(h+X**Lightweight**h;}r](h=]h>]h?]h@]hC]uh,jShG]r^hPX Lightweightr_r`}ra(h+Uh,j[ubah9UstrongrbubhPX rc}rd(h+X h,jSubjZ)re}rf(h+X **Event**h;}rg(h=]h>]h?]h@]hC]uh,jShG]rhhPXEventrirj}rk(h+Uh,jeubah9jbubhPX driven and rlrm}rn(h+X driven and h,jSubjZ)ro}rp(h+X**Asynchronous**h;}rq(h=]h>]h?]h@]hC]uh,jShG]rrhPX Asynchronousrsrt}ru(h+Uh,joubah9jbubhPX rv}rw(h+X h,jSubjZ)rx}ry(h+X**Application Framework**h;}rz(h=]h>]h?]h@]hC]uh,jShG]r{hPXApplication Frameworkr|r}}r~(h+Uh,jxubah9jbubhPX for the rr}r(h+X for the h,jSubh)r}r(h+X`Python Programming Language`_hKh,jSh9hh;}r(UnameXPython Programming Languagehjh@]h?]h=]h>]hC]uhG]rhPXPython Programming Languagerr}r(h+Uh,jubaubhPX with a strong rr}r(h+X with a strong h,jSubjZ)r}r(h+X **Component**h;}r(h=]h>]h?]h@]hC]uh,jShG]rhPX Componentrr}r(h+Uh,jubah9jbubhPX Architecture.rr}r(h+X Architecture.h,jSubeubhy)r}r(h+Xcircuits also includes a lightweight, high performance and scalable HTTP/WSGI compliant web server as well as various I/O and Networking components.rh,h3h7hh9h|h;}r(h=]h>]h?]h@]hC]uhEKhFhhG]rhPXcircuits also includes a lightweight, high performance and scalable HTTP/WSGI compliant web server as well as various I/O and Networking components.rr}r(h+jh,jubaubjR)r}r(h+Uh,h3h7hh9jUh;}r(jWX-h@]h?]h=]h>]hC]uhEKhFhhG]r(jY)r}r(h+XVisit the `Project Website`_rh,jh7hh9j]h;}r(h=]h>]h?]h@]hC]uhENhFhhG]rhy)r}r(h+jh,jh7hh9h|h;}r(h=]h>]h?]h@]hC]uhEKhG]r(hPX Visit the rr}r(h+X Visit the h,jubh)r}r(h+X`Project Website`_hKh,jh9hh;}r(UnameXProject Websitehj3h@]h?]h=]h>]hC]uhG]rhPXProject Websiterr}r(h+Uh,jubaubeubaubjY)r}r(h+X`Read the Docs`_rh,jh7hh9j]h;}r(h=]h>]h?]h@]hC]uhENhFhhG]rhy)r}r(h+jh,jh7hh9h|h;}r(h=]h>]h?]h@]hC]uhEKhG]rh)r}r(h+jhKh,jh9hh;}r(UnameX Read the DocshjAh@]h?]h=]h>]hC]uhG]rhPX Read the Docsrr}r(h+Uh,jubaubaubaubjY)r}r(h+X&Download it from the `Downloads Page`_rh,jh7hh9j]h;}r(h=]h>]h?]h@]hC]uhENhFhhG]rhy)r}r(h+jh,jh7hh9h|h;}r(h=]h>]h?]h@]hC]uhEKhG]r(hPXDownload it from the rr}r(h+XDownload it from the h,jubh)r}r(h+X`Downloads Page`_hKh,jh9hh;}r(UnameXDownloads PagehjOh@]h?]h=]h>]hC]uhG]rhPXDownloads Pagerr}r(h+Uh,jubaubeubaubjY)r}r(h+X`View the ChangeLog`_ h,jh7hh9j]h;}r(h=]h>]h?]h@]hC]uhENhFhhG]rhy)r}r(h+X`View the ChangeLog`_rh,jh7hh9h|h;}r(h=]h>]h?]h@]hC]uhEKhG]rh)r}r(h+jhKh,jh9hh;}r(UnameXView the ChangeLoghjHh@]h?]h=]h>]hC]uhG]rhPXView the ChangeLogrr}r(h+Uh,jubaubaubaubeubh)r}r(h+Uh,h3h7hh9hh;}r(UrefuriX%https://pypi.python.org/pypi/circuitsh@]h?]h=]h>]hC]uhENhFhhG]rcdocutils.nodes image r)r}r(h+X.. image:: https://pypip.in/v/circuits/badge.png?text=version :target: https://pypi.python.org/pypi/circuits :alt: Latest Version h;}r(UuriX2https://pypip.in/v/circuits/badge.png?text=versionrh@]h?]h=]h>]U candidatesr}rU?jshC]UalthXLatest Versionrr}rbuh,jhG]h9Uimagerubaubh)r}r(h+Uh,h3h7hh9hh;}r(UrefuriX%https://pypi.python.org/pypi/circuitsh@]h?]h=]h>]hC]uhENhFhhG]rj)r}r(h+X.. image:: https://pypip.in/py_versions/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Supported Python Versions h;}r(UuriX/https://pypip.in/py_versions/circuits/badge.svgrh@]h?]h=]h>]j}rU?jshC]UalthXSupported Python Versionsrr}rbuh,jhG]h9jubaubh)r}r(h+Uh,h3h7hh9hh;}r(UrefuriX%https://pypi.python.org/pypi/circuitsh@]h?]h=]h>]hC]uhENhFhhG]rj)r}r(h+X.. image:: https://pypip.in/implementation/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Supported Python implementations h;}r (UuriX2https://pypip.in/implementation/circuits/badge.svgr h@]h?]h=]h>]j}r U?j shC]UalthX Supported Python implementationsr r }rbuh,jhG]h9jubaubh)r}r(h+Uh,h3h7hh9hh;}r(UrefuriX%https://pypi.python.org/pypi/circuitsh@]h?]h=]h>]hC]uhENhFhhG]rj)r}r(h+X.. image:: https://pypip.in/status/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Development Status h;}r(UuriX*https://pypip.in/status/circuits/badge.svgrh@]h?]h=]h>]j}rU?jshC]UalthXDevelopment Statusrr}rbuh,jhG]h9jubaubh)r}r(h+Uh,h3h7hh9hh;}r(UrefuriX%https://pypi.python.org/pypi/circuitsh@]h?]h=]h>]hC]uhENhFhhG]rj)r}r (h+X.. image:: https://pypip.in/d/circuits/badge.png :target: https://pypi.python.org/pypi/circuits :alt: Number of Downloads h;}r!(UuriX%https://pypip.in/d/circuits/badge.pngr"h@]h?]h=]h>]j}r#U?j"shC]UalthXNumber of Downloadsr$r%}r&buh,jhG]h9jubaubh)r'}r((h+Uh,h3h7hh9hh;}r)(UrefuriX%https://pypi.python.org/pypi/circuitsh@]h?]h=]h>]hC]uhENhFhhG]r*j)r+}r,(h+Xx.. image:: https://pypip.in/format/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: Format h;}r-(UuriX*https://pypip.in/format/circuits/badge.svgr.h@]h?]h=]h>]j}r/U?j.shC]UalthXFormatr0r1}r2buh,j'hG]h9jubaubh)r3}r4(h+Uh,h3h7hh9hh;}r5(UrefuriX%https://pypi.python.org/pypi/circuitsh@]h?]h=]h>]hC]uhENhFhhG]r6j)r7}r8(h+Xz.. image:: https://pypip.in/license/circuits/badge.svg :target: https://pypi.python.org/pypi/circuits :alt: License h;}r9(UuriX+https://pypip.in/license/circuits/badge.svgr:h@]h?]h=]h>]j}r;U?j:shC]UalthXLicenser<r=}r>buh,j3hG]h9jubaubh)r?}r@(h+Uh,h3h7hh9hh;}rA(UrefuriXKhttps://requires.io/bitbucket/circuits/circuits/requirements?branch=defaulth@]h?]h=]h>]hC]uhENhFhhG]rBj)rC}rD(h+X.. image:: https://requires.io/bitbucket/circuits/circuits/requirements.png?branch=default :target: https://requires.io/bitbucket/circuits/circuits/requirements?branch=default :alt: Requirements Status h;}rE(UuriXOhttps://requires.io/bitbucket/circuits/circuits/requirements.png?branch=defaultrFh@]h?]h=]h>]j}rGU?jFshC]UalthXRequirements StatusrHrI}rJbuh,j?hG]h9jubaubh0h-)rK}rL(h+Uh,h3h7hh9h:h;}rM(h=]h>]h?]h@]rNUfeaturesrOahC]rPh auhEKEhFhhG]rQ(hI)rR}rS(h+XFeaturesrTh,jKh7hh9hMh;}rU(h=]h>]h?]h@]hC]uhEKEhFhhG]rVhPXFeaturesrWrX}rY(h+jTh,jRubaubjR)rZ}r[(h+Uh,jKh7hh9jUh;}r\(jWX-h@]h?]h=]h>]hC]uhEKGhFhhG]r](jY)r^}r_(h+X event drivenr`h,jZh7hh9j]h;}ra(h=]h>]h?]h@]hC]uhENhFhhG]rbhy)rc}rd(h+j`h,j^h7hh9h|h;}re(h=]h>]h?]h@]hC]uhEKGhG]rfhPX event drivenrgrh}ri(h+j`h,jcubaubaubjY)rj}rk(h+Xconcurrency supportrlh,jZh7hh9j]h;}rm(h=]h>]h?]h@]hC]uhENhFhhG]rnhy)ro}rp(h+jlh,jjh7hh9h|h;}rq(h=]h>]h?]h@]hC]uhEKHhG]rrhPXconcurrency supportrsrt}ru(h+jlh,joubaubaubjY)rv}rw(h+Xcomponent architecturerxh,jZh7hh9j]h;}ry(h=]h>]h?]h@]hC]uhENhFhhG]rzhy)r{}r|(h+jxh,jvh7hh9h|h;}r}(h=]h>]h?]h@]hC]uhEKIhG]r~hPXcomponent architecturerr}r(h+jxh,j{ubaubaubjY)r}r(h+Xasynchronous I/O componentsrh,jZh7hh9j]h;}r(h=]h>]h?]h@]hC]uhENhFhhG]rhy)r}r(h+jh,jh7hh9h|h;}r(h=]h>]h?]h@]hC]uhEKJhG]rhPXasynchronous I/O componentsrr}r(h+jh,jubaubaubjY)r}r(h+X!no required external dependenciesrh,jZh7hh9j]h;}r(h=]h>]h?]h@]hC]uhENhFhhG]rhy)r}r(h+jh,jh7hh9h|h;}r(h=]h>]h?]h@]hC]uhEKKhG]rhPX!no required external dependenciesrr}r(h+jh,jubaubaubjY)r}r(h+X*full featured web framework (circuits.web)rh,jZh7hh9j]h;}r(h=]h>]h?]h@]hC]uhENhFhhG]rhy)r}r(h+jh,jh7hh9h|h;}r(h=]h>]h?]h@]hC]uhEKLhG]rhPX*full featured web framework (circuits.web)rr}r(h+jh,jubaubaubjY)r}r(h+X,coroutine based synchronization primitives h,jZh7hh9j]h;}r(h=]h>]h?]h@]hC]uhENhFhhG]rhy)r}r(h+X*coroutine based synchronization primitivesrh,jh7hh9h|h;}r(h=]h>]h?]h@]hC]uhEKMhG]rhPX*coroutine based synchronization primitivesrr}r(h+jh,jubaubaubeubeubh-)r}r(h+Uh,h3h7hh9h:h;}r(h=]h>]h?]h@]rU requirementsrahC]rhauhEKQhFhhG]r(hI)r}r(h+X Requirementsrh,jh7hh9hMh;}r(h=]h>]h?]h@]hC]uhEKQhFhhG]rhPX Requirementsrr}r(h+jh,jubaubjR)r}r(h+Uh,jh7hh9jUh;}r(jWX-h@]h?]h=]h>]hC]uhEKShFhhG]rjY)r}r(h+XEcircuits has no dependencies beyond the `Python Standard Library`_. h,jh7hh9j]h;}r(h=]h>]h?]h@]hC]uhENhFhhG]rhy)r}r(h+XCcircuits has no dependencies beyond the `Python Standard Library`_.h,jh7hh9h|h;}r(h=]h>]h?]h@]hC]uhEKShG]r(hPX(circuits has no dependencies beyond the rr}r(h+X(circuits has no dependencies beyond the h,jubh)r}r(h+X`Python Standard Library`_hKh,jh9hh;}r(UnameXPython Standard Libraryhjh@]h?]h=]h>]hC]uhG]rhPXPython Standard Libraryrr}r(h+Uh,jubaubhPX.r}r(h+X.h,jubeubaubaubeubh-)r}r(h+Uh,h3h7hh9h:h;}r(h=]h>]h?]h@]rUsupported-platformsrahC]rh auhEKWhFhhG]r(hI)r}r(h+XSupported Platformsrh,jh7hh9hMh;}r(h=]h>]h?]h@]hC]uhEKWhFhhG]rhPXSupported Platformsrr}r(h+jh,jubaubjR)r}r(h+Uh,jh7hh9jUh;}r(jWX-h@]h?]h=]h>]hC]uhEKYhFhhG]r(jY)r}r(h+X!Linux, FreeBSD, Mac OS X, Windowsrh,jh7hh9j]h;}r(h=]h>]h?]h@]hC]uhENhFhhG]rhy)r}r(h+jh,jh7hh9h|h;}r(h=]h>]h?]h@]hC]uhEKYhG]rhPX!Linux, FreeBSD, Mac OS X, Windowsrr}r(h+jh,jubaubaubjY)r}r(h+XPython 2.6, 2.7, 3.2, 3.3, 3.4rh,jh7hh9j]h;}r(h=]h>]h?]h@]hC]uhENhFhhG]rhy)r}r(h+jh,jh7hh9h|h;}r(h=]h>]h?]h@]hC]uhEKZhG]rhPXPython 2.6, 2.7, 3.2, 3.3, 3.4rr}r(h+jh,jubaubaubjY)r}r(h+Xpypy 2.0, 2.1, 2.2 h,jh7hh9j]h;}r(h=]h>]h?]h@]hC]uhENhFhhG]rhy)r}r (h+Xpypy 2.0, 2.1, 2.2r h,jh7hh9h|h;}r (h=]h>]h?]h@]hC]uhEK[hG]r hPXpypy 2.0, 2.1, 2.2r r}r(h+j h,jubaubaubeubeubh-)r}r(h+Uh,h3h7hh9h:h;}r(h=]h>]h?]h@]rU installationrahC]rhauhEK_hFhhG]r(hI)r}r(h+X Installationrh,jh7hh9hMh;}r(h=]h>]h?]h@]hC]uhEK_hFhhG]rhPX Installationrr}r(h+jh,jubaubhy)r}r (h+XThe simplest and recommended way to install circuits is with pip. You may install the latest stable release from PyPI with pip::h,jh7hh9h|h;}r!(h=]h>]h?]h@]hC]uhEKahFhhG]r"hPXThe simplest and recommended way to install circuits is with pip. You may install the latest stable release from PyPI with pip:r#r$}r%(h+XThe simplest and recommended way to install circuits is with pip. You may install the latest stable release from PyPI with pip:h,jubaubcdocutils.nodes literal_block r&)r'}r((h+X> pip install circuitsh,jh7hh9U literal_blockr)h;}r*(U xml:spacer+Upreserver,h@]h?]h=]h>]hC]uhEKhFhhG]r-hPX> pip install circuitsr.r/}r0(h+Uh,j'ubaubhy)r1}r2(h+X2If you do not have pip, you may use easy_install::r3h,jh7hh9h|h;}r4(h=]h>]h?]h@]hC]uhEKfhFhhG]r5hPX1If you do not have pip, you may use easy_install:r6r7}r8(h+X1If you do not have pip, you may use easy_install:h,j1ubaubj&)r9}r:(h+X> easy_install circuitsh,jh7hh9j)h;}r;(j+j,h@]h?]h=]h>]hC]uhEKhFhhG]r<hPX> easy_install circuitsr=r>}r?(h+Uh,j9ubaubhy)r@}rA(h+XAlternatively, you may download the source package from the `PyPi Page`_ or the `Downloads Page`_ extract it and install using::h,jh7hh9h|h;}rB(h=]h>]h?]h@]hC]uhEKjhFhhG]rC(hPX<Alternatively, you may download the source package from the rDrE}rF(h+X<Alternatively, you may download the source package from the h,j@ubh)rG}rH(h+X `PyPi Page`_hKh,j@h9hh;}rI(UnameX PyPi Pagehj:h@]h?]h=]h>]hC]uhG]rJhPX PyPi PagerKrL}rM(h+Uh,jGubaubhPX or the rNrO}rP(h+X or the h,j@ubh)rQ}rR(h+X`Downloads Page`_hKh,j@h9hh;}rS(UnameXDownloads PagehjOh@]h?]h=]h>]hC]uhG]rThPXDownloads PagerUrV}rW(h+Uh,jQubaubhPX extract it and install using:rXrY}rZ(h+X extract it and install using:h,j@ubeubj&)r[}r\(h+X> python setup.py installh,jh7hh9j)h;}r](j+j,h@]h?]h=]h>]hC]uhEKhFhhG]r^hPX> python setup.py installr_r`}ra(h+Uh,j[ubaubcdocutils.nodes note rb)rc}rd(h+XYou can install the `development version `_ via ``pip install circuits==dev``.h,jh7hh9Unotereh;}rf(h=]h>]h?]h@]hC]uhENhFhhG]rghy)rh}ri(h+XYou can install the `development version `_ via ``pip install circuits==dev``.h,jch7hh9h|h;}rj(h=]h>]h?]h@]hC]uhEKqhG]rk(hPXYou can install the rlrm}rn(h+XYou can install the h,jhubh)ro}rp(h+X``development version `_h;}rq(UnameXdevelopment versionhXGhttps://bitbucket.org/circuits/circuits/get/tip.tar.gz#egg=circuits-devrrh@]h?]h=]h>]hC]uh,jhhG]rshPXdevelopment versionrtru}rv(h+Uh,joubah9hubh)rw}rx(h+XJ h2Kh,jhh9hh;}ry(Urefurijrh@]rzUdevelopment-versionr{ah?]h=]h>]hC]r|h auhG]ubhPX via r}r~}r(h+X via h,jhubj)r}r(h+X``pip install circuits==dev``h;}r(h=]h>]h?]h@]hC]uh,jhhG]rhPXpip install circuits==devrr}r(h+Uh,jubah9jubhPX.r}r(h+X.h,jhubeubaubeubh-)r}r(h+Uh,h3h7hh9h:h;}r(h=]h>]h?]h@]rUlicenserahC]rhauhEKwhFhhG]r(hI)r}r(h+XLicenserh,jh7hh9hMh;}r(h=]h>]h?]h@]hC]uhEKwhFhhG]rhPXLicenserr}r(h+jh,jubaubhy)r}r(h+X.circuits is licensed under the `MIT License`_.rh,jh7hh9h|h;}r(h=]h>]h?]h@]hC]uhEKyhFhhG]r(hPXcircuits is licensed under the rr}r(h+Xcircuits is licensed under the h,jubh)r}r(h+X`MIT License`_hKh,jh9hh;}r(UnameX MIT Licensehjh@]h?]h=]h>]hC]uhG]rhPX MIT Licenserr}r(h+Uh,jubaubhPX.r}r(h+X.h,jubeubeubh-)r}r(h+Uh,h3h7hh9h:h;}r(h=]h>]h?]h@]rUfeedbackrahC]rhauhEK}hFhhG]r(hI)r}r(h+XFeedbackrh,jh7hh9hMh;}r(h=]h>]h?]h@]hC]uhEK}hFhhG]rhPXFeedbackrr}r(h+jh,jubaubhy)r}r(h+XWe welcome any questions or feedback about bugs and suggestions on how to improve circuits. Let us know what you think about circuits. `@pythoncircuits `_.h,jh7hh9h|h;}r(h=]h>]h?]h@]hC]uhEKhFhhG]r(hPXWe welcome any questions or feedback about bugs and suggestions on how to improve circuits. Let us know what you think about circuits. rr}r(h+XWe welcome any questions or feedback about bugs and suggestions on how to improve circuits. Let us know what you think about circuits. h,jubh)r}r(h+X6`@pythoncircuits `_h;}r(UnamehhX!http://twitter.com/pythoncircuitsrh@]h?]h=]h>]hC]uh,jhG]rhPX@pythoncircuitsrr}r(h+Uh,jubah9hubh)r}r(h+X$ h2Kh,jh9hh;}r(Urefurijh@]rUpythoncircuitsrah?]h=]h>]hC]rhauhG]ubhPX.r}r(h+X.h,jubeubhy)r}r(h+XDo you have suggestions for improvement? Then please `Create an Issue`_ with details of what you would like to see. I'll take a look at it and work with you to either incorporate the idea or find a better solution.h,jh7hh9h|h;}r(h=]h>]h?]h@]hC]uhEKhFhhG]r(hPX5Do you have suggestions for improvement? Then please rr}r(h+X5Do you have suggestions for improvement? Then please h,jubh)r}r(h+X`Create an Issue`_hKh,jh9hh;}r(UnameXCreate an Issuehj&h@]h?]h=]h>]hC]uhG]rhPXCreate an Issuerr}r(h+Uh,jubaubhPX with details of what you would like to see. I'll take a look at it and work with you to either incorporate the idea or find a better solution.rr}r(h+X with details of what you would like to see. I'll take a look at it and work with you to either incorporate the idea or find a better solution.h,jubeubeubheubh7hh9h:h;}r(h=]rXexamplesrah>]h?]h@]rUexamplesrahC]uhEK>hFhhG]r(hI)r}r(h+XExamplesrh,h0h7hh9hMh;}r(h=]h>]h?]h@]hC]uhEK>hFhhG]rhPXExamplesrr}r(h+jh,jubaubh-)r}r(h+Uh,h0h7hXsource/examples/index.rstrr}rbh9h:h;}r(h=]h>]h?]h@]rUhellorahC]rh"auhEKhFhhG]r(hI)r}r(h+XHellorh,jh7jh9hMh;}r(h=]h>]h?]h@]hC]uhEKhFhhG]rhPXHellorr}r(h+jh,jubaubj&)r}r(h+XL#!/usr/bin/env python """circuits Hello World""" from circuits import Component, Event class hello(Event): """hello Event""" class App(Component): def hello(self): """Hello Event Handler""" print("Hello World!") def started(self, component): """Started Event Handler This is fired internally when your application starts up and can be used to trigger events that only occur once during startup. """ self.fire(hello()) # Fire hello Event raise SystemExit(0) # Terminate the Application App().run() h,jh7jh9j)h;}r(UlinenosrUlanguagerhXpythonrr}rbh=]j+j,h@]h?]UsourceX:/home/prologic/work/circuits/docs/source/examples/hello.pyh>]hC]uhEKhFhhG]rhPXL#!/usr/bin/env python """circuits Hello World""" from circuits import Component, Event class hello(Event): """hello Event""" class App(Component): def hello(self): """Hello Event Handler""" print("Hello World!") def started(self, component): """Started Event Handler This is fired internally when your application starts up and can be used to trigger events that only occur once during startup. """ self.fire(hello()) # Fire hello Event raise SystemExit(0) # Terminate the Application App().run() r r }r (h+Uh,jubaubhy)r }r (h+X?Download Source Code: :download:`hello.py: `rh,jh7jh9h|h;}r(h=]h>]h?]h@]hC]uhEK hFhhG]r(hPXDownload Source Code: rr}r(h+XDownload Source Code: h,j ubcsphinx.addnodes download_reference r)r}r(h+X):download:`hello.py: `rh,j h7jh9Udownload_referencerh;}r(UreftypeXdownloadrjijjXexamples/hello.pyU refdomainUh@]h?]U refexplicith=]h>]hC]jljUfilenamerXhello.pyruhEK hG]rj)r}r(h+jh;}r (h=]h>]r!(jsjeh?]h@]hC]uh,jhG]r"hPX hello.py:r#r$}r%(h+Uh,jubah9jubaubeubeubh-)r&}r'(h+Uh,h0h7jh9h:h;}r((h=]h>]h?]h@]r)U echo-serverr*ahC]r+hauhEKhFhhG]r,(hI)r-}r.(h+X Echo Serverr/h,j&h7jh9hMh;}r0(h=]h>]h?]h@]hC]uhEKhFhhG]r1hPX Echo Serverr2r3}r4(h+j/h,j-ubaubj&)r5}r6(h+X#!/usr/bin/env python """Simple TCP Echo Server This example shows how you can create a simple TCP Server (an Echo Service) utilizing the builtin Socket Components that the circuits library ships with. """ from circuits import handler, Debugger from circuits.net.sockets import TCPServer class EchoServer(TCPServer): @handler("read") def on_read(self, sock, data): """Read Event Handler This is fired by the underlying Socket Component when there has been new data read from the connected client. ..note :: By simply returning, client/server socket components listen to ValueChagned events (feedback) to determine if a handler returned some data and fires a subsequent Write event with the value returned. """ return data # Start and "run" the system. # Bind to port 0.0.0.0:8000 app = EchoServer(("0.0.0.0", 8000)) Debugger().register(app) app.run() h,j&h7jh9j)h;}r7(jjhXpythonr8r9}r:bh=]j+j,h@]h?]UsourceX?/home/prologic/work/circuits/docs/source/examples/echoserver.pyh>]hC]uhEKhFhhG]r;hPX#!/usr/bin/env python """Simple TCP Echo Server This example shows how you can create a simple TCP Server (an Echo Service) utilizing the builtin Socket Components that the circuits library ships with. """ from circuits import handler, Debugger from circuits.net.sockets import TCPServer class EchoServer(TCPServer): @handler("read") def on_read(self, sock, data): """Read Event Handler This is fired by the underlying Socket Component when there has been new data read from the connected client. ..note :: By simply returning, client/server socket components listen to ValueChagned events (feedback) to determine if a handler returned some data and fires a subsequent Write event with the value returned. """ return data # Start and "run" the system. # Bind to port 0.0.0.0:8000 app = EchoServer(("0.0.0.0", 8000)) Debugger().register(app) app.run() r<r=}r>(h+Uh,j5ubaubhy)r?}r@(h+XIDownload Source Code: :download:`echoserver.py: `rAh,j&h7jh9h|h;}rB(h=]h>]h?]h@]hC]uhEKhFhhG]rC(hPXDownload Source Code: rDrE}rF(h+XDownload Source Code: h,j?ubj)rG}rH(h+X3:download:`echoserver.py: `rIh,j?h7jh9jh;}rJ(UreftypeXdownloadrKjijjXexamples/echoserver.pyU refdomainUh@]h?]U refexplicith=]h>]hC]jljjX echoserver.pyrLuhEKhG]rMj)rN}rO(h+jIh;}rP(h=]h>]rQ(jsjKeh?]h@]hC]uh,jGhG]rRhPXechoserver.py:rSrT}rU(h+Uh,jNubah9jubaubeubeubh.eubh7jh9h:h;}rV(h=]h>]h?]h@]rWU hello-webrXahC]rYhauhEKhFhhG]rZ(hI)r[}r\(h+X Hello Webr]h,h.h7jh9hMh;}r^(h=]h>]h?]h@]hC]uhEKhFhhG]r_hPX Hello Webr`ra}rb(h+j]h,j[ubaubj&)rc}rd(h+X#!/usr/bin/env python from circuits.web import Server, Controller class Root(Controller): def index(self): """Index Request Handler Controller(s) expose implicitly methods as request handlers. Request Handlers can still be customized by using the ``@expose`` decorator. For example exposing as a different path. """ return "Hello World!" app = Server(("0.0.0.0", 8000)) Root().register(app) app.run() h,h.h7jh9j)h;}re(jjhXpythonrfrg}rhbh=]j+j,h@]h?]UsourceX=/home/prologic/work/circuits/docs/source/examples/helloweb.pyh>]hC]uhEKhFhhG]rihPX#!/usr/bin/env python from circuits.web import Server, Controller class Root(Controller): def index(self): """Index Request Handler Controller(s) expose implicitly methods as request handlers. Request Handlers can still be customized by using the ``@expose`` decorator. For example exposing as a different path. """ return "Hello World!" app = Server(("0.0.0.0", 8000)) Root().register(app) app.run() rjrk}rl(h+Uh,jcubaubhy)rm}rn(h+XEDownload Source Code: :download:`helloweb.py: `roh,h.h7jh9h|h;}rp(h=]h>]h?]h@]hC]uhEK"hFhhG]rq(hPXDownload Source Code: rrrs}rt(h+XDownload Source Code: h,jmubj)ru}rv(h+X/:download:`helloweb.py: `rwh,jmh7jh9jh;}rx(UreftypeXdownloadryjijjXexamples/helloweb.pyU refdomainUh@]h?]U refexplicith=]h>]hC]jljjX helloweb.pyrzuhEK"hG]r{j)r|}r}(h+jwh;}r~(h=]h>]r(jsjyeh?]h@]hC]uh,juhG]rhPX helloweb.py:rr}r(h+Uh,j|ubah9jubaubeubhy)r}r(h+XOMore `examples `_...rh,h.h7jh9h|h;}r(h=]h>]h?]h@]hC]uhEK'hFhhG]r(hPXMore rr}r(h+XMore h,jubh)r}r(h+XG`examples `_h;}r(UnamejhX9https://bitbucket.org/circuits/circuits/src/tip/examples/rh@]h?]h=]h>]hC]uh,jhG]rhPXexamplesrr}r(h+Uh,jubah9hubh)r}r(h+X< h2Kh,jh9hh;}r(Urefurijh@]rUid1rah?]h=]h>]hC]rjauhG]ubhPX...rr}r(h+X...h,jubeubeubh7X0internal padding after source/examples/index.rstrh9Usystem_messagerh;}r(h=]UlevelKh@]h?]rjaUsourceh8h>]hC]UlineKUtypeUINFOruhEK(hFhhG]rhy)r}r(h+Uh;}r(h=]h>]h?]h@]hC]uh,h)hG]rhPX+Duplicate implicit target name: "examples".rr}r(h+Uh,jubah9h|ubaubaUcurrent_sourcerNU decorationrNUautofootnote_startrKUnameidsr}r(hj!hjGhj5h jOh jh jh j{h hhjXhjhjhjhjJhhhjhj(hj.hjhjChj*hjQhjhjhjhj hhh hBh!j<h"jh#juhG]rh5ah+UU transformerrNU footnote_refsr}rUrefnamesr}r(X mit license]rjaXproject website]rjaXview the changelog]rjaX#circuits irc channel]rhaXfreenode irc network]rhaXcreate an issue]rjaXpython programming language]rjaX read the docs]rjaX mailing list]rhaX pypi page]rjGaXdownloads page]r(jjQeXpython standard library]rjauUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rhFhU current_linerNUtransform_messagesr]rh()r}r(h+Uh;}r(h=]UlevelKh@]h?]Usourceh8h>]hC]UlineKUtypejuhG]rhy)r}r(h+Uh;}r(h=]h>]h?]h@]hC]uh,jhG]rhPX9Hyperlink target "documentation-index" is not referenced.rr}r(h+Uh,jubah9h|ubah9jubaUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNhMNUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesr NUoutput_encodingr Uutf-8r U source_urlr NUinput_encodingr U utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh8Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformr Ustrip_elements_with_classesr!NU _config_filesr"]Ufile_insertion_enabledr#U raw_enabledr$KU dump_settingsr%NubUsymbol_footnote_startr&KUidsr'}r((hhjOjKj j jXh.hhjh0j*j&jjj5j0jJjEjjj.j*jjjjhhjjj(j#jCj>jGjCjQjLj<j7jjj!jjjjh3jjjjj{jwjjhBh5jjuUsubstitution_namesr)}r*h9hFh;}r+(h=]h@]h?]Usourceh8h>]hC]uU footnotesr,]r-Urefidsr.}r/h]r0hasub.circuits-3.1.0/docs/build/doctrees/api/0000755000014400001440000000000012425013643020741 5ustar prologicusers00000000000000circuits-3.1.0/docs/build/doctrees/api/circuits.core.debugger.doctree0000644000014400001440000003011212425011101026627 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X,circuits.core.debugger.Debugger.IgnoreEventsqX.circuits.core.debugger.Debugger.IgnoreChannelsqXcircuits.core.debugger moduleqNXcircuits.core.debugger.Debuggerq uUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhUcircuits-core-debugger-moduleqh h uUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXG/home/prologic/work/circuits/docs/source/api/circuits.core.debugger.rstqUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%(Xmodule-circuits.core.debuggerq&heUnamesq']q(hauUlineq)KUdocumentq*hh]q+(cdocutils.nodes title q,)q-}q.(hXcircuits.core.debugger moduleq/hhhhhUtitleq0h}q1(h!]h"]h#]h$]h']uh)Kh*hh]q2cdocutils.nodes Text q3Xcircuits.core.debugger moduleq4q5}q6(hh/hh-ubaubcsphinx.addnodes index q7)q8}q9(hUhhhU q:hUindexq;h}q<(h$]h#]h!]h"]h']Uentries]q=(Usingleq>Xcircuits.core.debugger (module)Xmodule-circuits.core.debuggerUtq?auh)Kh*hh]ubcdocutils.nodes paragraph q@)qA}qB(hXDebugger component used to debug each event in a system by printing each event to sys.stderr or to a Logger Component instance.qChhhXZ/home/prologic/work/circuits/circuits/core/debugger.py:docstring of circuits.core.debuggerqDhU paragraphqEh}qF(h!]h"]h#]h$]h']uh)Kh*hh]qGh3XDebugger component used to debug each event in a system by printing each event to sys.stderr or to a Logger Component instance.qHqI}qJ(hhChhAubaubh7)qK}qL(hUhhhNhh;h}qM(h$]h#]h!]h"]h']Uentries]qN(h>X*Debugger (class in circuits.core.debugger)h UtqOauh)Nh*hh]ubcsphinx.addnodes desc qP)qQ}qR(hUhhhNhUdescqSh}qT(UnoindexqUUdomainqVXpyqWh$]h#]h!]h"]h']UobjtypeqXXclassqYUdesctypeqZhYuh)Nh*hh]q[(csphinx.addnodes desc_signature q\)q]}q^(hX\Debugger(errors=True, events=True, file=None, logger=None, prefix=None, trim=None, **kwargs)hhQhU q_hUdesc_signatureq`h}qa(h$]qbh aUmoduleqccdocutils.nodes reprunicode qdXcircuits.core.debuggerqeqf}qgbh#]h!]h"]h']qhh aUfullnameqiXDebuggerqjUclassqkUUfirstqluh)Nh*hh]qm(csphinx.addnodes desc_annotation qn)qo}qp(hXclass hh]hh_hUdesc_annotationqqh}qr(h!]h"]h#]h$]h']uh)Nh*hh]qsh3Xclass qtqu}qv(hUhhoubaubcsphinx.addnodes desc_addname qw)qx}qy(hXcircuits.core.debugger.hh]hh_hU desc_addnameqzh}q{(h!]h"]h#]h$]h']uh)Nh*hh]q|h3Xcircuits.core.debugger.q}q~}q(hUhhxubaubcsphinx.addnodes desc_name q)q}q(hhjhh]hh_hU desc_nameqh}q(h!]h"]h#]h$]h']uh)Nh*hh]qh3XDebuggerqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhh]hh_hUdesc_parameterlistqh}q(h!]h"]h#]h$]h']uh)Nh*hh]q(csphinx.addnodes desc_parameter q)q}q(hX errors=Trueh}q(h!]h"]h#]h$]h']uhhh]qh3X errors=Trueqq}q(hUhhubahUdesc_parameterqubh)q}q(hX events=Trueh}q(h!]h"]h#]h$]h']uhhh]qh3X events=Trueqq}q(hUhhubahhubh)q}q(hX file=Noneh}q(h!]h"]h#]h$]h']uhhh]qh3X file=Noneqq}q(hUhhubahhubh)q}q(hX logger=Noneh}q(h!]h"]h#]h$]h']uhhh]qh3X logger=Noneqq}q(hUhhubahhubh)q}q(hX prefix=Noneh}q(h!]h"]h#]h$]h']uhhh]qh3X prefix=Noneqq}q(hUhhubahhubh)q}q(hX trim=Noneh}q(h!]h"]h#]h$]h']uhhh]qh3X trim=Noneqq}q(hUhhubahhubh)q}q(hX**kwargsh}q(h!]h"]h#]h$]h']uhhh]qh3X**kwargsqq}q(hUhhubahhubeubeubcsphinx.addnodes desc_content q)q}q(hUhhQhh_hU desc_contentqh}q(h!]h"]h#]h$]h']uh)Nh*hh]q(h@)q}q(hX6Bases: :class:`circuits.core.components.BaseComponent`qhhhU qhhEh}q(h!]h"]h#]h$]h']uh)Kh*hh]q(h3XBases: q΅q}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX/:class:`circuits.core.components.BaseComponent`qhhhNhU pending_xrefqh}q(UreftypeXclassUrefwarnq׉U reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqh$]h#]U refexplicith!]h"]h']UrefdocqXapi/circuits.core.debuggerqUpy:classqhjU py:moduleqXcircuits.core.debuggerquh)Nh]qcdocutils.nodes literal q)q}q(hhh}q(h!]h"]q(UxrefqhXpy-classqeh#]h$]h']uhhh]qh3X&circuits.core.components.BaseComponentq腁q}q(hUhhubahUliteralqubaubeubh@)q}q(hXCreate a new Debugger ComponentqhhhXc/home/prologic/work/circuits/circuits/core/debugger.py:docstring of circuits.core.debugger.DebuggerqhhEh}q(h!]h"]h#]h$]h']uh)Kh*hh]qh3XCreate a new Debugger Componentqq}q(hhhhubaubh@)q}q(hXCreates a new Debugger Component that listens to all events in the system printing each event to sys.stderr or a Logger Component.qhhhhhhEh}q(h!]h"]h#]h$]h']uh)Kh*hh]qh3XCreates a new Debugger Component that listens to all events in the system printing each event to sys.stderr or a Logger Component.qq}q(hhhhubaubcdocutils.nodes field_list q)q}q(hUhhhNhU field_listrh}r(h!]h"]h#]h$]h']uh)Nh*hh]r(cdocutils.nodes field r)r}r(hUh}r(h!]h"]h#]h$]h']uhhh]r(cdocutils.nodes field_name r)r }r (hUh}r (h!]h"]h#]h$]h']uhjh]r h3X Variablesr r}r(hUhj ubahU field_namerubcdocutils.nodes field_body r)r}r(hUh}r(h!]h"]h#]h$]h']uhjh]rcdocutils.nodes bullet_list r)r}r(hUh}r(h!]h"]h#]h$]h']uhjh]r(cdocutils.nodes list_item r)r}r(hUh}r(h!]h"]h#]h$]h']uhjh]rh@)r }r!(hUh}r"(h!]h"]h#]h$]h']uhjh]r#(h)r$}r%(hUh}r&(UreftypeUobjr'U reftargetX IgnoreEventsr(U refdomainhWh$]h#]U refexplicith!]h"]h']uhj h]r)cdocutils.nodes strong r*)r+}r,(hj(h}r-(h!]h"]h#]h$]h']uhj$h]r.h3X IgnoreEventsr/r0}r1(hUhj+ubahUstrongr2ubahhubh3X -- r3r4}r5(hUhj ubh3Xlist of events (str) to ignorer6r7}r8(hXlist of events (str) to ignorer9hj ubehhEubahU list_itemr:ubj)r;}r<(hUh}r=(h!]h"]h#]h$]h']uhjh]r>h@)r?}r@(hUh}rA(h!]h"]h#]h$]h']uhj;h]rB(h)rC}rD(hUh}rE(Ureftypej'U reftargetXIgnoreChannelsrFU refdomainhWh$]h#]U refexplicith!]h"]h']uhj?h]rGj*)rH}rI(hjFh}rJ(h!]h"]h#]h$]h']uhjCh]rKh3XIgnoreChannelsrLrM}rN(hUhjHubahj2ubahhubh3X -- rOrP}rQ(hUhj?ubh3X list of channels (str) to ignorerRrS}rT(hX list of channels (str) to ignorerUhj?ubehhEubahj:ubj)rV}rW(hUh}rX(h!]h"]h#]h$]h']uhjh]rYh@)rZ}r[(hUh}r\(h!]h"]h#]h$]h']uhjVh]r](h)r^}r_(hUh}r`(Ureftypej'U reftargetXenabledraU refdomainhWh$]h#]U refexplicith!]h"]h']uhjZh]rbj*)rc}rd(hjah}re(h!]h"]h#]h$]h']uhj^h]rfh3Xenabledrgrh}ri(hUhjcubahj2ubahhubh3X -- rjrk}rl(hUhjZubh3XEnabled/Disabled flagrmrn}ro(hXEnabled/Disabled flagrphjZubehhEubahj:ubehU bullet_listrqubahU field_bodyrrubehUfieldrsubj)rt}ru(hUh}rv(h!]h"]h#]h$]h']uhhh]rw(j)rx}ry(hUh}rz(h!]h"]h#]h$]h']uhjth]r{h3X Parametersr|r}}r~(hUhjxubahjubj)r}r(hUh}r(h!]h"]h#]h$]h']uhjth]rh@)r}r(hUh}r(h!]h"]h#]h$]h']uhjh]r(j*)r}r(hXlogh}r(h!]h"]h#]h$]h']uhjh]rh3Xlogrr}r(hUhjubahj2ubh3X -- rr}r(hUhjubh3X#Logger Component instance or None (rr}r(hX#Logger Component instance or None (hjubcdocutils.nodes emphasis r)r}r(hX *default*h}r(h!]h"]h#]h$]h']uhjh]rh3Xdefaultrr}r(hUhjubahUemphasisrubh3X)r}r(hX)hjubehhEubahjrubehjsubeubh@)r}r(hX4initializes x; see x.__class__.__doc__ for signaturerhhhhhhEh}r(h!]h"]h#]h$]h']uh)K h*hh]rh3X4initializes x; see x.__class__.__doc__ for signaturerr}r(hjhjubaubh7)r}r(hUhhhNhh;h}r(h$]h#]h!]h"]h']Uentries]r(h>X8IgnoreEvents (circuits.core.debugger.Debugger attribute)hUtrauh)Nh*hh]ubhP)r}r(hUhhhNhhSh}r(hUhVXpyh$]h#]h!]h"]h']hXX attributerhZjuh)Nh*hh]r(h\)r}r(hXDebugger.IgnoreEventshjhU rhh`h}r(h$]rhahchdXcircuits.core.debuggerrr}rbh#]h!]h"]h']rhahiXDebugger.IgnoreEventshkhjhluh)Nh*hh]r(h)r}r(hX IgnoreEventshjhjhhh}r(h!]h"]h#]h$]h']uh)Nh*hh]rh3X IgnoreEventsrr}r(hUhjubaubhn)r}r(hX = ['generate_events']hjhjhhqh}r(h!]h"]h#]h$]h']uh)Nh*hh]rh3X = ['generate_events']rr}r(hUhjubaubeubh)r}r(hUhjhjhhh}r(h!]h"]h#]h$]h']uh)Nh*hh]ubeubh7)r}r(hUhhhNhh;h}r(h$]h#]h!]h"]h']Uentries]r(h>X:IgnoreChannels (circuits.core.debugger.Debugger attribute)hUtrauh)Nh*hh]ubhP)r}r(hUhhhNhhSh}r(hUhVXpyh$]h#]h!]h"]h']hXX attributerhZjuh)Nh*hh]r(h\)r}r(hXDebugger.IgnoreChannelsrhjhjhh`h}r(h$]rhahchdXcircuits.core.debuggerrr}rbh#]h!]h"]h']rhahiXDebugger.IgnoreChannelshkhjhluh)Nh*hh]r(h)r}r(hXIgnoreChannelshjhjhhh}r(h!]h"]h#]h$]h']uh)Nh*hh]rh3XIgnoreChannelsrr}r(hUhjubaubhn)r}r(hX = []hjhjhhqh}r(h!]h"]h#]h$]h']uh)Nh*hh]rh3X = []rr}r(hUhjubaubeubh)r}r(hUhjhjhhh}r(h!]h"]h#]h$]h']uh)Nh*hh]ubeubeubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh*hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr (cdocutils.frontend Values r or }r (Ufootnote_backlinksr KUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh0NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetr Uoutput_encoding_error_handlerr!Ustrictr"U sectnum_xformr#KUdump_transformsr$NU docinfo_xformr%KUwarning_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_internalsr0NUsectsubtitle_xformr1U source_linkr2NUrfc_referencesr3NUoutput_encodingr4Uutf-8r5U source_urlr6NUinput_encodingr7U utf-8-sigr8U_disable_configr9NU id_prefixr:UU tab_widthr;KUerror_encodingr<UUTF-8r=U_sourcer>hUgettext_compactr?U generatorr@NUdump_internalsrANU smart_quotesrBU pep_base_urlrCUhttp://www.python.org/dev/peps/rDUsyntax_highlightrEUlongrFUinput_encoding_error_handlerrGj"Uauto_id_prefixrHUidrIUdoctitle_xformrJUstrip_elements_with_classesrKNU _config_filesrL]Ufile_insertion_enabledrMU raw_enabledrNKU dump_settingsrONubUsymbol_footnote_startrPKUidsrQ}rR(hhhjh h]h&cdocutils.nodes target rS)rT}rU(hUhhhh:hUtargetrVh}rW(h!]h$]rXh&ah#]Uismodh"]h']uh)Kh*hh]ubhjuUsubstitution_namesrY}rZhh*h}r[(h!]h$]h#]Usourcehh"]h']uU footnotesr\]r]Urefidsr^}r_ub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.dispatchers.dispatcher.doctree0000644000014400001440000002454612425011104031347 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X1circuits.web.dispatchers.dispatcher.find_handlersqX6circuits.web.dispatchers.dispatcher.Dispatcher.channelqX.circuits.web.dispatchers.dispatcher.DispatcherqX3circuits.web.dispatchers.dispatcher.resolve_methodsq X*circuits.web.dispatchers.dispatcher moduleq NX0circuits.web.dispatchers.dispatcher.resolve_pathq uUsubstitution_defsq }q Uparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh h h U*circuits-web-dispatchers-dispatcher-moduleqh h uUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXT/home/prologic/work/circuits/docs/source/api/circuits.web.dispatchers.dispatcher.rstqUtagnameqUsectionq U attributesq!}q"(Udupnamesq#]Uclassesq$]Ubackrefsq%]Uidsq&]q'(X*module-circuits.web.dispatchers.dispatcherq(heUnamesq)]q*h auUlineq+KUdocumentq,hh]q-(cdocutils.nodes title q.)q/}q0(hX*circuits.web.dispatchers.dispatcher moduleq1hhhhhUtitleq2h!}q3(h#]h$]h%]h&]h)]uh+Kh,hh]q4cdocutils.nodes Text q5X*circuits.web.dispatchers.dispatcher moduleq6q7}q8(hh1hh/ubaubcsphinx.addnodes index q9)q:}q;(hUhhhU q(h&]h%]h#]h$]h)]Uentries]q?(Usingleq@X,circuits.web.dispatchers.dispatcher (module)X*module-circuits.web.dispatchers.dispatcherUtqAauh+Kh,hh]ubcdocutils.nodes paragraph qB)qC}qD(hX DispatcherqEhhhXt/home/prologic/work/circuits/circuits/web/dispatchers/dispatcher.py:docstring of circuits.web.dispatchers.dispatcherqFhU paragraphqGh!}qH(h#]h$]h%]h&]h)]uh+Kh,hh]qIh5X DispatcherqJqK}qL(hhEhhCubaubhB)qM}qN(hXmThis module implements a basic URL to Channel dispatcher. This is the default dispatcher used by circuits.webqOhhhhFhhGh!}qP(h#]h$]h%]h&]h)]uh+Kh,hh]qQh5XmThis module implements a basic URL to Channel dispatcher. This is the default dispatcher used by circuits.webqRqS}qT(hhOhhMubaubh9)qU}qV(hUhhhNhh=h!}qW(h&]h%]h#]h$]h)]Uentries]qX(h@X>resolve_path() (in module circuits.web.dispatchers.dispatcher)h UtqYauh+Nh,hh]ubcsphinx.addnodes desc qZ)q[}q\(hUhhhNhUdescq]h!}q^(Unoindexq_Udomainq`Xpyh&]h%]h#]h$]h)]UobjtypeqaXfunctionqbUdesctypeqchbuh+Nh,hh]qd(csphinx.addnodes desc_signature qe)qf}qg(hXresolve_path(paths, parts)hh[hU qhhUdesc_signatureqih!}qj(h&]qkh aUmoduleqlcdocutils.nodes reprunicode qmX#circuits.web.dispatchers.dispatcherqnqo}qpbh%]h#]h$]h)]qqh aUfullnameqrX resolve_pathqsUclassqtUUfirstquuh+Nh,hh]qv(csphinx.addnodes desc_addname qw)qx}qy(hX$circuits.web.dispatchers.dispatcher.hhfhhhhU desc_addnameqzh!}q{(h#]h$]h%]h&]h)]uh+Nh,hh]q|h5X$circuits.web.dispatchers.dispatcher.q}q~}q(hUhhxubaubcsphinx.addnodes desc_name q)q}q(hhshhfhhhhU desc_nameqh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]qh5X resolve_pathqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhfhhhhUdesc_parameterlistqh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]q(csphinx.addnodes desc_parameter q)q}q(hXpathsh!}q(h#]h$]h%]h&]h)]uhhh]qh5Xpathsqq}q(hUhhubahUdesc_parameterqubh)q}q(hXpartsh!}q(h#]h$]h%]h&]h)]uhhh]qh5Xpartsqq}q(hUhhubahhubeubeubcsphinx.addnodes desc_content q)q}q(hUhh[hhhhU desc_contentqh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]ubeubh9)q}q(hUhhhNhh=h!}q(h&]h%]h#]h$]h)]Uentries]q(h@XAresolve_methods() (in module circuits.web.dispatchers.dispatcher)h Utqauh+Nh,hh]ubhZ)q}q(hUhhhNhh]h!}q(h_h`Xpyh&]h%]h#]h$]h)]haXfunctionqhchuh+Nh,hh]q(he)q}q(hXresolve_methods(parts)hhhhhhhih!}q(h&]qh ahlhmX#circuits.web.dispatchers.dispatcherqq}qbh%]h#]h$]h)]qh ahrXresolve_methodsqhtUhuuh+Nh,hh]q(hw)q}q(hX$circuits.web.dispatchers.dispatcher.hhhhhhhzh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]qh5X$circuits.web.dispatchers.dispatcher.qq}q(hUhhubaubh)q}q(hhhhhhhhhh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]qh5Xresolve_methodsqÅq}q(hUhhubaubh)q}q(hUhhhhhhhh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]qh)q}q(hXpartsh!}q(h#]h$]h%]h&]h)]uhhh]qh5Xpartsq΅q}q(hUhhubahhubaubeubh)q}q(hUhhhhhhhh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]ubeubh9)q}q(hUhhhNhh=h!}q(h&]h%]h#]h$]h)]Uentries]q(h@X?find_handlers() (in module circuits.web.dispatchers.dispatcher)hUtqauh+Nh,hh]ubhZ)q}q(hUhhhNhh]h!}q(h_h`Xpyh&]h%]h#]h$]h)]haXfunctionqhchuh+Nh,hh]q(he)q}q(hXfind_handlers(req, paths)hhhhhhhih!}q(h&]qhahlhmX#circuits.web.dispatchers.dispatcherq⅁q}qbh%]h#]h$]h)]qhahrX find_handlersqhtUhuuh+Nh,hh]q(hw)q}q(hX$circuits.web.dispatchers.dispatcher.hhhhhhhzh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]qh5X$circuits.web.dispatchers.dispatcher.q셁q}q(hUhhubaubh)q}q(hhhhhhhhhh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]qh5X find_handlersqq}q(hUhhubaubh)q}q(hUhhhhhhhh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]q(h)q}q(hXreqh!}q(h#]h$]h%]h&]h)]uhhh]qh5Xreqqq}r(hUhhubahhubh)r}r(hXpathsh!}r(h#]h$]h%]h&]h)]uhhh]rh5Xpathsrr}r(hUhjubahhubeubeubh)r}r (hUhhhhhhhh!}r (h#]h$]h%]h&]h)]uh+Nh,hh]ubeubh9)r }r (hUhhhNhh=h!}r (h&]h%]h#]h$]h)]Uentries]r(h@X9Dispatcher (class in circuits.web.dispatchers.dispatcher)hUtrauh+Nh,hh]ubhZ)r}r(hUhhhNhh]h!}r(h_h`Xpyh&]h%]h#]h$]h)]haXclassrhcjuh+Nh,hh]r(he)r}r(hXDispatcher(**kwargs)rhjhhhhhih!}r(h&]rhahlhmX#circuits.web.dispatchers.dispatcherrr}rbh%]h#]h$]h)]rhahrX DispatcherrhtUhuuh+Nh,hh]r(csphinx.addnodes desc_annotation r )r!}r"(hXclass hjhhhhUdesc_annotationr#h!}r$(h#]h$]h%]h&]h)]uh+Nh,hh]r%h5Xclass r&r'}r((hUhj!ubaubhw)r)}r*(hX$circuits.web.dispatchers.dispatcher.hjhhhhhzh!}r+(h#]h$]h%]h&]h)]uh+Nh,hh]r,h5X$circuits.web.dispatchers.dispatcher.r-r.}r/(hUhj)ubaubh)r0}r1(hjhjhhhhhh!}r2(h#]h$]h%]h&]h)]uh+Nh,hh]r3h5X Dispatcherr4r5}r6(hUhj0ubaubh)r7}r8(hUhjhhhhhh!}r9(h#]h$]h%]h&]h)]uh+Nh,hh]r:h)r;}r<(hX**kwargsh!}r=(h#]h$]h%]h&]h)]uhj7h]r>h5X**kwargsr?r@}rA(hUhj;ubahhubaubeubh)rB}rC(hUhjhhhhhh!}rD(h#]h$]h%]h&]h)]uh+Nh,hh]rE(hB)rF}rG(hX6Bases: :class:`circuits.core.components.BaseComponent`rHhjBhU rIhhGh!}rJ(h#]h$]h%]h&]h)]uh+Kh,hh]rK(h5XBases: rLrM}rN(hXBases: hjFubcsphinx.addnodes pending_xref rO)rP}rQ(hX/:class:`circuits.core.components.BaseComponent`rRhjFhNhU pending_xrefrSh!}rT(UreftypeXclassUrefwarnrUU reftargetrVX&circuits.core.components.BaseComponentU refdomainXpyrWh&]h%]U refexplicith#]h$]h)]UrefdocrXX'api/circuits.web.dispatchers.dispatcherrYUpy:classrZjU py:moduler[X#circuits.web.dispatchers.dispatcherr\uh+Nh]r]cdocutils.nodes literal r^)r_}r`(hjRh!}ra(h#]h$]rb(UxrefrcjWXpy-classrdeh%]h&]h)]uhjPh]reh5X&circuits.core.components.BaseComponentrfrg}rh(hUhj_ubahUliteralriubaubeubh9)rj}rk(hUhjBhNhh=h!}rl(h&]h%]h#]h$]h)]Uentries]rm(h@XBchannel (circuits.web.dispatchers.dispatcher.Dispatcher attribute)hUtrnauh+Nh,hh]ubhZ)ro}rp(hUhjBhNhh]h!}rq(h_h`Xpyh&]h%]h#]h$]h)]haX attributerrhcjruh+Nh,hh]rs(he)rt}ru(hXDispatcher.channelrvhjohU rwhhih!}rx(h&]ryhahlhmX#circuits.web.dispatchers.dispatcherrzr{}r|bh%]h#]h$]h)]r}hahrXDispatcher.channelhtjhuuh+Nh,hh]r~(h)r}r(hXchannelhjthjwhhh!}r(h#]h$]h%]h&]h)]uh+Nh,hh]rh5Xchannelrr}r(hUhjubaubj )r}r(hX = 'web'hjthjwhj#h!}r(h#]h$]h%]h&]h)]uh+Nh,hh]rh5X = 'web'rr}r(hUhjubaubeubh)r}r(hUhjohjwhhh!}r(h#]h$]h%]h&]h)]uh+Nh,hh]ubeubeubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh,hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh2NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]rUfile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhhjth(cdocutils.nodes target r)r}r(hUhhhh(h.)q?}q@(hX SubpackagesqAhh9hhh h2h"}qB(h$]h%]h&]h']h)]uh+Kh,hh]qCh5X SubpackagesqDqE}qF(hhAhh?ubaubcdocutils.nodes compound qG)qH}qI(hUhh9hhh UcompoundqJh"}qK(h$]h%]qLUtoctree-wrapperqMah&]h']h)]uh+K h,hh]qNcsphinx.addnodes toctree qO)qP}qQ(hUhhHhhh UtoctreeqRh"}qS(UnumberedqTKU includehiddenqUhXapi/circuits.webqVU titlesonlyqWUglobqXh']h&]h$]h%]h)]UentriesqY]qZ(NXapi/circuits.web.dispatchersq[q\NXapi/circuits.web.parsersq]q^NXapi/circuits.web.websocketsq_q`eUhiddenqaU includefilesqb]qc(h[h]h_eUmaxdepthqdJuh+Kh]ubaubeubh)qe}qf(hUhhhhh h!h"}qg(h$]h%]h&]h']qhhah)]qih auh+Kh,hh]qj(h.)qk}ql(hX Submodulesqmhhehhh h2h"}qn(h$]h%]h&]h']h)]uh+Kh,hh]qoh5X Submodulesqpqq}qr(hhmhhkubaubhG)qs}qt(hUhhehhh hJh"}qu(h$]h%]qvhMah&]h']h)]uh+K$h,hh]qwhO)qx}qy(hUhhshhh hRh"}qz(hTKhUhhVhWhXh']h&]h$]h%]h)]hY]q{(NXapi/circuits.web.clientq|q}NXapi/circuits.web.constantsq~qNXapi/circuits.web.controllersqqNXapi/circuits.web.errorsqqNXapi/circuits.web.eventsqqNXapi/circuits.web.exceptionsqqNXapi/circuits.web.headersqqNXapi/circuits.web.httpqqNXapi/circuits.web.loggersqqNXapi/circuits.web.mainqqNXapi/circuits.web.processorsqqNXapi/circuits.web.serversqqNXapi/circuits.web.sessionsqqNXapi/circuits.web.toolsqqNXapi/circuits.web.urlqqNXapi/circuits.web.utilsqqNXapi/circuits.web.wrappersqqNXapi/circuits.web.wsgiqqehahb]q(h|h~hhhhhhhhhhhhhhhhehdJuh+Kh]ubaubeubh)q}q(hUhhhhh h!h"}q(h$]h%]h&]h']q(Xmodule-circuits.webqheh)]qhauh+K&h,hh]q(h.)q}q(hXModule contentsqhhhhh h2h"}q(h$]h%]h&]h']h)]uh+K&h,hh]qh5XModule contentsqq}q(hhhhubaubcsphinx.addnodes index q)q}q(hUhhhU qh Uindexqh"}q(h']h&]h$]h%]h)]Uentries]q(UsingleqXcircuits.web (module)Xmodule-circuits.webUtqauh+Kh,hh]ubcdocutils.nodes paragraph q)q}q(hXCircuits Library - WebqhhhXO/home/prologic/work/circuits/circuits/web/__init__.py:docstring of circuits.webqh U paragraphqh"}q(h$]h%]h&]h']h)]uh+Kh,hh]qh5XCircuits Library - Webqq}q(hhhhubaubh)q}q(hXYcircuits.web contains the circuits full stack web server that is HTTP and WSGI compliant.qhhhhh hh"}q(h$]h%]h&]h']h)]uh+Kh,hh]qh5XYcircuits.web contains the circuits full stack web server that is HTTP and WSGI compliant.qɅq}q(hhhhubaubeubeubahUU 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_classesqNh2NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvr NUdump_pseudo_xmlr NUexpose_internalsr NUsectsubtitle_xformr U source_linkr NUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightr Ulongr!Uinput_encoding_error_handlerr"hUauto_id_prefixr#Uidr$Udoctitle_xformr%Ustrip_elements_with_classesr&NU _config_filesr']Ufile_insertion_enabledr(U raw_enabledr)KU dump_settingsr*NubUsymbol_footnote_startr+KUidsr,}r-(hh9hhhcdocutils.nodes target r.)r/}r0(hUhhhhh Utargetr1h"}r2(h$]h']r3hah&]Uismodh%]h)]uh+Kh,hh]ubhhhheuUsubstitution_namesr4}r5h h,h"}r6(h$]h']h&]Usourcehh%]h)]uU footnotesr7]r8Urefidsr9}r:ub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.errors.doctree0000644000014400001440000007213112425011104026216 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.web.errors.forbiddenqX!circuits.web.errors.notfound.nameqX"circuits.web.errors.httperror.codeqX circuits.web.errors.unauthorizedq X!circuits.web.errors.notfound.codeq Xcircuits.web.errors moduleq NX"circuits.web.errors.forbidden.nameq X&circuits.web.errors.httperror.sanitizeq X)circuits.web.errors.httperror.descriptionqXcircuits.web.errors.redirectqXcircuits.web.errors.notfoundqXcircuits.web.errors.httperrorqX)circuits.web.errors.httperror.contenttypeqX"circuits.web.errors.httperror.nameqX"circuits.web.errors.forbidden.codeqX!circuits.web.errors.redirect.nameqX%circuits.web.errors.unauthorized.codeqX%circuits.web.errors.unauthorized.namequUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q (hhhhhhh h h h h Ucircuits-web-errors-moduleq!h h h h hhhhhhhhhhhhhhhhhhhhuUchildrenq"]q#cdocutils.nodes section q$)q%}q&(U rawsourceq'UUparentq(hUsourceq)XD/home/prologic/work/circuits/docs/source/api/circuits.web.errors.rstq*Utagnameq+Usectionq,U attributesq-}q.(Udupnamesq/]Uclassesq0]Ubackrefsq1]Uidsq2]q3(Xmodule-circuits.web.errorsq4h!eUnamesq5]q6h auUlineq7KUdocumentq8hh"]q9(cdocutils.nodes title q:)q;}q<(h'Xcircuits.web.errors moduleq=h(h%h)h*h+Utitleq>h-}q?(h/]h0]h1]h2]h5]uh7Kh8hh"]q@cdocutils.nodes Text qAXcircuits.web.errors moduleqBqC}qD(h'h=h(h;ubaubcsphinx.addnodes index qE)qF}qG(h'Uh(h%h)U qHh+UindexqIh-}qJ(h2]h1]h/]h0]h5]Uentries]qK(UsingleqLXcircuits.web.errors (module)Xmodule-circuits.web.errorsUtqMauh7Kh8hh"]ubcdocutils.nodes paragraph qN)qO}qP(h'XErrorsqQh(h%h)XT/home/prologic/work/circuits/circuits/web/errors.py:docstring of circuits.web.errorsqRh+U paragraphqSh-}qT(h/]h0]h1]h2]h5]uh7Kh8hh"]qUhAXErrorsqVqW}qX(h'hQh(hOubaubhN)qY}qZ(h'X5This module implements a set of standard HTTP Errors.q[h(h%h)hRh+hSh-}q\(h/]h0]h1]h2]h5]uh7Kh8hh"]q]hAX5This module implements a set of standard HTTP Errors.q^q_}q`(h'h[h(hYubaubhE)qa}qb(h'Uh(h%h)Nh+hIh-}qc(h2]h1]h/]h0]h5]Uentries]qd(hLX(httperror (class in circuits.web.errors)hUtqeauh7Nh8hh"]ubcsphinx.addnodes desc qf)qg}qh(h'Uh(h%h)Nh+Udescqih-}qj(UnoindexqkUdomainqlXpyh2]h1]h/]h0]h5]UobjtypeqmXclassqnUdesctypeqohnuh7Nh8hh"]qp(csphinx.addnodes desc_signature qq)qr}qs(h'X1httperror(request, response, code=None, **kwargs)h(hgh)U qth+Udesc_signaturequh-}qv(h2]qwhaUmoduleqxcdocutils.nodes reprunicode qyXcircuits.web.errorsqzq{}q|bh1]h/]h0]h5]q}haUfullnameq~X httperrorqUclassqUUfirstquh7Nh8hh"]q(csphinx.addnodes desc_annotation q)q}q(h'Xclass h(hrh)hth+Udesc_annotationqh-}q(h/]h0]h1]h2]h5]uh7Nh8hh"]qhAXclass qq}q(h'Uh(hubaubcsphinx.addnodes desc_addname q)q}q(h'Xcircuits.web.errors.h(hrh)hth+U desc_addnameqh-}q(h/]h0]h1]h2]h5]uh7Nh8hh"]qhAXcircuits.web.errors.qq}q(h'Uh(hubaubcsphinx.addnodes desc_name q)q}q(h'hh(hrh)hth+U desc_nameqh-}q(h/]h0]h1]h2]h5]uh7Nh8hh"]qhAX httperrorqq}q(h'Uh(hubaubcsphinx.addnodes desc_parameterlist q)q}q(h'Uh(hrh)hth+Udesc_parameterlistqh-}q(h/]h0]h1]h2]h5]uh7Nh8hh"]q(csphinx.addnodes desc_parameter q)q}q(h'Xrequesth-}q(h/]h0]h1]h2]h5]uh(hh"]qhAXrequestqq}q(h'Uh(hubah+Udesc_parameterqubh)q}q(h'Xresponseh-}q(h/]h0]h1]h2]h5]uh(hh"]qhAXresponseqq}q(h'Uh(hubah+hubh)q}q(h'X code=Noneh-}q(h/]h0]h1]h2]h5]uh(hh"]qhAX code=Noneqq}q(h'Uh(hubah+hubh)q}q(h'X**kwargsh-}q(h/]h0]h1]h2]h5]uh(hh"]qhAX**kwargsqq}q(h'Uh(hubah+hubeubeubcsphinx.addnodes desc_content q)q}q(h'Uh(hgh)hth+U desc_contentqh-}q(h/]h0]h1]h2]h5]uh7Nh8hh"]q(hN)q}q(h'X*Bases: :class:`circuits.core.events.Event`h(hh)U qh+hSh-}q(h/]h0]h1]h2]h5]uh7Kh8hh"]q(hAXBases: qͅq}q(h'XBases: h(hubcsphinx.addnodes pending_xref q)q}q(h'X#:class:`circuits.core.events.Event`qh(hh)Nh+U pending_xrefqh-}q(UreftypeXclassUrefwarnq։U reftargetqXcircuits.core.events.EventU refdomainXpyqh2]h1]U refexplicith/]h0]h5]UrefdocqXapi/circuits.web.errorsqUpy:classqhU py:moduleqXcircuits.web.errorsquh7Nh"]qcdocutils.nodes literal q)q}q(h'hh-}q(h/]h0]q(UxrefqhXpy-classqeh1]h2]h5]uh(hh"]qhAXcircuits.core.events.Eventq煁q}q(h'Uh(hubah+UliteralqubaubeubhN)q}q(h'X$An event for signaling an HTTP errorqh(hh)X^/home/prologic/work/circuits/circuits/web/errors.py:docstring of circuits.web.errors.httperrorqh+hSh-}q(h/]h0]h1]h2]h5]uh7Kh8hh"]qhAX$An event for signaling an HTTP errorqq}q(h'hh(hubaubhN)q}q(h'XaThe constructor creates a new instance and modifies the *response* argument to reflect the error.h(hh)hh+hSh-}q(h/]h0]h1]h2]h5]uh7Kh8hh"]q(hAX8The constructor creates a new instance and modifies the qq}q(h'X8The constructor creates a new instance and modifies the h(hubcdocutils.nodes emphasis q)q}q(h'X *response*h-}q(h/]h0]h1]h2]h5]uh(hh"]qhAXresponserr}r(h'Uh(hubah+UemphasisrubhAX argument to reflect the error.rr}r(h'X argument to reflect the error.h(hubeubhE)r}r(h'Uh(hh)Nh+hIh-}r (h2]h1]h/]h0]h5]Uentries]r (hLX5contenttype (circuits.web.errors.httperror attribute)hUtr auh7Nh8hh"]ubhf)r }r (h'Uh(hh)Nh+hih-}r(hkhlXpyh2]h1]h/]h0]h5]hmX attributerhojuh7Nh8hh"]r(hq)r}r(h'Xhttperror.contenttypeh(j h)U rh+huh-}r(h2]rhahxhyXcircuits.web.errorsrr}rbh1]h/]h0]h5]rhah~Xhttperror.contenttypehhhuh7Nh8hh"]r(h)r}r(h'X contenttypeh(jh)jh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAX contenttyperr }r!(h'Uh(jubaubh)r"}r#(h'X = 'text/html'h(jh)jh+hh-}r$(h/]h0]h1]h2]h5]uh7Nh8hh"]r%hAX = 'text/html'r&r'}r((h'Uh(j"ubaubeubh)r)}r*(h'Uh(j h)jh+hh-}r+(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubhE)r,}r-(h'Uh(hh)Nh+hIh-}r.(h2]h1]h/]h0]h5]Uentries]r/(hLX.name (circuits.web.errors.httperror attribute)hUtr0auh7Nh8hh"]ubhf)r1}r2(h'Uh(hh)Nh+hih-}r3(hkhlXpyh2]h1]h/]h0]h5]hmX attributer4hoj4uh7Nh8hh"]r5(hq)r6}r7(h'Xhttperror.nameh(j1h)jh+huh-}r8(h2]r9hahxhyXcircuits.web.errorsr:r;}r<bh1]h/]h0]h5]r=hah~Xhttperror.namehhhuh7Nh8hh"]r>(h)r?}r@(h'Xnameh(j6h)jh+hh-}rA(h/]h0]h1]h2]h5]uh7Nh8hh"]rBhAXnamerCrD}rE(h'Uh(j?ubaubh)rF}rG(h'X = 'httperror'h(j6h)jh+hh-}rH(h/]h0]h1]h2]h5]uh7Nh8hh"]rIhAX = 'httperror'rJrK}rL(h'Uh(jFubaubeubh)rM}rN(h'Uh(j1h)jh+hh-}rO(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubhE)rP}rQ(h'Uh(hh)Nh+hIh-}rR(h2]h1]h/]h0]h5]Uentries]rS(hLX.code (circuits.web.errors.httperror attribute)hUtrTauh7Nh8hh"]ubhf)rU}rV(h'Uh(hh)Nh+hih-}rW(hkhlXpyh2]h1]h/]h0]h5]hmX attributerXhojXuh7Nh8hh"]rY(hq)rZ}r[(h'Xhttperror.codeh(jUh)jh+huh-}r\(h2]r]hahxhyXcircuits.web.errorsr^r_}r`bh1]h/]h0]h5]rahah~Xhttperror.codehhhuh7Nh8hh"]rb(h)rc}rd(h'Xcodeh(jZh)jh+hh-}re(h/]h0]h1]h2]h5]uh7Nh8hh"]rfhAXcodergrh}ri(h'Uh(jcubaubh)rj}rk(h'X = 500h(jZh)jh+hh-}rl(h/]h0]h1]h2]h5]uh7Nh8hh"]rmhAX = 500rnro}rp(h'Uh(jjubaubeubh)rq}rr(h'Uh(jUh)jh+hh-}rs(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubhE)rt}ru(h'Uh(hh)Nh+hIh-}rv(h2]h1]h/]h0]h5]Uentries]rw(hLX5description (circuits.web.errors.httperror attribute)hUtrxauh7Nh8hh"]ubhf)ry}rz(h'Uh(hh)Nh+hih-}r{(hkhlXpyh2]h1]h/]h0]h5]hmX attributer|hoj|uh7Nh8hh"]r}(hq)r~}r(h'Xhttperror.descriptionh(jyh)jh+huh-}r(h2]rhahxhyXcircuits.web.errorsrr}rbh1]h/]h0]h5]rhah~Xhttperror.descriptionhhhuh7Nh8hh"]r(h)r}r(h'X descriptionh(j~h)jh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAX descriptionrr}r(h'Uh(jubaubh)r}r(h'X = ''h(j~h)jh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAX = ''rr}r(h'Uh(jubaubeubh)r}r(h'Uh(jyh)jh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubhE)r}r(h'Uh(hh)Nh+hIh-}r(h2]h1]h/]h0]h5]Uentries]r(hLX1sanitize() (circuits.web.errors.httperror method)h Utrauh7Nh8hh"]ubhf)r}r(h'Uh(hh)Nh+hih-}r(hkhlXpyh2]h1]h/]h0]h5]hmXmethodrhojuh7Nh8hh"]r(hq)r}r(h'Xhttperror.sanitize()h(jh)hth+huh-}r(h2]rh ahxhyXcircuits.web.errorsrr}rbh1]h/]h0]h5]rh ah~Xhttperror.sanitizehhhuh7Nh8hh"]r(h)r}r(h'Xsanitizeh(jh)hth+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXsanitizerr}r(h'Uh(jubaubh)r}r(h'Uh(jh)hth+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubh)r}r(h'Uh(jh)hth+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubeubeubhE)r}r(h'Uh(h%h)Nh+hIh-}r(h2]h1]h/]h0]h5]Uentries]r(hLX(forbidden (class in circuits.web.errors)hUtrauh7Nh8hh"]ubhf)r}r(h'Uh(h%h)Nh+hih-}r(hkhlXpyh2]h1]h/]h0]h5]hmXclassrhojuh7Nh8hh"]r(hq)r}r(h'X1forbidden(request, response, code=None, **kwargs)h(jh)hth+huh-}r(h2]rhahxhyXcircuits.web.errorsrr}rbh1]h/]h0]h5]rhah~X forbiddenrhUhuh7Nh8hh"]r(h)r}r(h'Xclass h(jh)hth+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXclass rr}r(h'Uh(jubaubh)r}r(h'Xcircuits.web.errors.h(jh)hth+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXcircuits.web.errors.rr}r(h'Uh(jubaubh)r}r(h'jh(jh)hth+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAX forbiddenrr}r(h'Uh(jubaubh)r}r(h'Uh(jh)hth+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]r(h)r}r(h'Xrequesth-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXrequestrr}r(h'Uh(jubah+hubh)r}r(h'Xresponseh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXresponserr}r(h'Uh(jubah+hubh)r}r(h'X code=Noneh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAX code=Nonerr}r(h'Uh(jubah+hubh)r}r(h'X**kwargsh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAX**kwargsrr}r(h'Uh(jubah+hubeubeubh)r}r(h'Uh(jh)hth+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]r(hN)r}r(h'X-Bases: :class:`circuits.web.errors.httperror`h(jh)hh+hSh-}r(h/]h0]h1]h2]h5]uh7Kh8hh"]r(hAXBases: r r }r (h'XBases: h(jubh)r }r (h'X&:class:`circuits.web.errors.httperror`rh(jh)Nh+hh-}r(UreftypeXclassh։hXcircuits.web.errors.httperrorU refdomainXpyrh2]h1]U refexplicith/]h0]h5]hhhjhhuh7Nh"]rh)r}r(h'jh-}r(h/]h0]r(hjXpy-classreh1]h2]h5]uh(j h"]rhAXcircuits.web.errors.httperrorrr}r(h'Uh(jubah+hubaubeubhN)r}r(h'X/An event for signaling the HTTP Forbidden errorrh(jh)X^/home/prologic/work/circuits/circuits/web/errors.py:docstring of circuits.web.errors.forbiddenrh+hSh-}r(h/]h0]h1]h2]h5]uh7Kh8hh"]r hAX/An event for signaling the HTTP Forbidden errorr!r"}r#(h'jh(jubaubhN)r$}r%(h'XaThe constructor creates a new instance and modifies the *response* argument to reflect the error.h(jh)jh+hSh-}r&(h/]h0]h1]h2]h5]uh7Kh8hh"]r'(hAX8The constructor creates a new instance and modifies the r(r)}r*(h'X8The constructor creates a new instance and modifies the h(j$ubh)r+}r,(h'X *response*h-}r-(h/]h0]h1]h2]h5]uh(j$h"]r.hAXresponser/r0}r1(h'Uh(j+ubah+jubhAX argument to reflect the error.r2r3}r4(h'X argument to reflect the error.h(j$ubeubhE)r5}r6(h'Uh(jh)Nh+hIh-}r7(h2]h1]h/]h0]h5]Uentries]r8(hLX.code (circuits.web.errors.forbidden attribute)hUtr9auh7Nh8hh"]ubhf)r:}r;(h'Uh(jh)Nh+hih-}r<(hkhlXpyh2]h1]h/]h0]h5]hmX attributer=hoj=uh7Nh8hh"]r>(hq)r?}r@(h'Xforbidden.codeh(j:h)jh+huh-}rA(h2]rBhahxhyXcircuits.web.errorsrCrD}rEbh1]h/]h0]h5]rFhah~Xforbidden.codehjhuh7Nh8hh"]rG(h)rH}rI(h'Xcodeh(j?h)jh+hh-}rJ(h/]h0]h1]h2]h5]uh7Nh8hh"]rKhAXcoderLrM}rN(h'Uh(jHubaubh)rO}rP(h'X = 403h(j?h)jh+hh-}rQ(h/]h0]h1]h2]h5]uh7Nh8hh"]rRhAX = 403rSrT}rU(h'Uh(jOubaubeubh)rV}rW(h'Uh(j:h)jh+hh-}rX(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubhE)rY}rZ(h'Uh(jh)Nh+hIh-}r[(h2]h1]h/]h0]h5]Uentries]r\(hLX.name (circuits.web.errors.forbidden attribute)h Utr]auh7Nh8hh"]ubhf)r^}r_(h'Uh(jh)Nh+hih-}r`(hkhlXpyh2]h1]h/]h0]h5]hmX attributerahojauh7Nh8hh"]rb(hq)rc}rd(h'Xforbidden.nameh(j^h)jh+huh-}re(h2]rfh ahxhyXcircuits.web.errorsrgrh}ribh1]h/]h0]h5]rjh ah~Xforbidden.namehjhuh7Nh8hh"]rk(h)rl}rm(h'Xnameh(jch)jh+hh-}rn(h/]h0]h1]h2]h5]uh7Nh8hh"]rohAXnamerprq}rr(h'Uh(jlubaubh)rs}rt(h'X = 'forbidden'h(jch)jh+hh-}ru(h/]h0]h1]h2]h5]uh7Nh8hh"]rvhAX = 'forbidden'rwrx}ry(h'Uh(jsubaubeubh)rz}r{(h'Uh(j^h)jh+hh-}r|(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubeubeubhE)r}}r~(h'Uh(h%h)Nh+hIh-}r(h2]h1]h/]h0]h5]Uentries]r(hLX+unauthorized (class in circuits.web.errors)h Utrauh7Nh8hh"]ubhf)r}r(h'Uh(h%h)Nh+hih-}r(hkhlXpyh2]h1]h/]h0]h5]hmXclassrhojuh7Nh8hh"]r(hq)r}r(h'X4unauthorized(request, response, code=None, **kwargs)h(jh)hth+huh-}r(h2]rh ahxhyXcircuits.web.errorsrr}rbh1]h/]h0]h5]rh ah~X unauthorizedrhUhuh7Nh8hh"]r(h)r}r(h'Xclass h(jh)hth+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXclass rr}r(h'Uh(jubaubh)r}r(h'Xcircuits.web.errors.h(jh)hth+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXcircuits.web.errors.rr}r(h'Uh(jubaubh)r}r(h'jh(jh)hth+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAX unauthorizedrr}r(h'Uh(jubaubh)r}r(h'Uh(jh)hth+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]r(h)r}r(h'Xrequesth-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXrequestrr}r(h'Uh(jubah+hubh)r}r(h'Xresponseh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXresponserr}r(h'Uh(jubah+hubh)r}r(h'X code=Noneh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAX code=Nonerr}r(h'Uh(jubah+hubh)r}r(h'X**kwargsh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAX**kwargsrr}r(h'Uh(jubah+hubeubeubh)r}r(h'Uh(jh)hth+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]r(hN)r}r(h'X-Bases: :class:`circuits.web.errors.httperror`h(jh)hh+hSh-}r(h/]h0]h1]h2]h5]uh7Kh8hh"]r(hAXBases: rr}r(h'XBases: h(jubh)r}r(h'X&:class:`circuits.web.errors.httperror`rh(jh)Nh+hh-}r(UreftypeXclassh։hXcircuits.web.errors.httperrorU refdomainXpyrh2]h1]U refexplicith/]h0]h5]hhhjhhuh7Nh"]rh)r}r(h'jh-}r(h/]h0]r(hjXpy-classreh1]h2]h5]uh(jh"]rhAXcircuits.web.errors.httperrorrr}r(h'Uh(jubah+hubaubeubhN)r}r(h'X2An event for signaling the HTTP Unauthorized errorrh(jh)Xa/home/prologic/work/circuits/circuits/web/errors.py:docstring of circuits.web.errors.unauthorizedrh+hSh-}r(h/]h0]h1]h2]h5]uh7Kh8hh"]rhAX2An event for signaling the HTTP Unauthorized errorrr}r(h'jh(jubaubhN)r}r(h'XaThe constructor creates a new instance and modifies the *response* argument to reflect the error.h(jh)jh+hSh-}r(h/]h0]h1]h2]h5]uh7Kh8hh"]r(hAX8The constructor creates a new instance and modifies the rr}r(h'X8The constructor creates a new instance and modifies the h(jubh)r}r(h'X *response*h-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXresponserr}r(h'Uh(jubah+jubhAX argument to reflect the error.rr}r(h'X argument to reflect the error.h(jubeubhE)r}r(h'Uh(jh)Nh+hIh-}r(h2]h1]h/]h0]h5]Uentries]r(hLX1code (circuits.web.errors.unauthorized attribute)hUtrauh7Nh8hh"]ubhf)r}r(h'Uh(jh)Nh+hih-}r(hkhlXpyh2]h1]h/]h0]h5]hmX attributerhojuh7Nh8hh"]r(hq)r}r(h'Xunauthorized.codeh(jh)jh+huh-}r(h2]rhahxhyXcircuits.web.errorsrr }r bh1]h/]h0]h5]r hah~Xunauthorized.codehjhuh7Nh8hh"]r (h)r }r(h'Xcodeh(jh)jh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXcoderr}r(h'Uh(j ubaubh)r}r(h'X = 401h(jh)jh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAX = 401rr}r(h'Uh(jubaubeubh)r}r(h'Uh(jh)jh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubhE)r}r(h'Uh(jh)Nh+hIh-}r (h2]h1]h/]h0]h5]Uentries]r!(hLX1name (circuits.web.errors.unauthorized attribute)hUtr"auh7Nh8hh"]ubhf)r#}r$(h'Uh(jh)Nh+hih-}r%(hkhlXpyh2]h1]h/]h0]h5]hmX attributer&hoj&uh7Nh8hh"]r'(hq)r(}r)(h'Xunauthorized.nameh(j#h)jh+huh-}r*(h2]r+hahxhyXcircuits.web.errorsr,r-}r.bh1]h/]h0]h5]r/hah~Xunauthorized.namehjhuh7Nh8hh"]r0(h)r1}r2(h'Xnameh(j(h)jh+hh-}r3(h/]h0]h1]h2]h5]uh7Nh8hh"]r4hAXnamer5r6}r7(h'Uh(j1ubaubh)r8}r9(h'X = 'unauthorized'h(j(h)jh+hh-}r:(h/]h0]h1]h2]h5]uh7Nh8hh"]r;hAX = 'unauthorized'r<r=}r>(h'Uh(j8ubaubeubh)r?}r@(h'Uh(j#h)jh+hh-}rA(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubeubeubhE)rB}rC(h'Uh(h%h)Nh+hIh-}rD(h2]h1]h/]h0]h5]Uentries]rE(hLX'notfound (class in circuits.web.errors)hUtrFauh7Nh8hh"]ubhf)rG}rH(h'Uh(h%h)Nh+hih-}rI(hkhlXpyh2]h1]h/]h0]h5]hmXclassrJhojJuh7Nh8hh"]rK(hq)rL}rM(h'X0notfound(request, response, code=None, **kwargs)h(jGh)hth+huh-}rN(h2]rOhahxhyXcircuits.web.errorsrPrQ}rRbh1]h/]h0]h5]rShah~XnotfoundrThUhuh7Nh8hh"]rU(h)rV}rW(h'Xclass h(jLh)hth+hh-}rX(h/]h0]h1]h2]h5]uh7Nh8hh"]rYhAXclass rZr[}r\(h'Uh(jVubaubh)r]}r^(h'Xcircuits.web.errors.h(jLh)hth+hh-}r_(h/]h0]h1]h2]h5]uh7Nh8hh"]r`hAXcircuits.web.errors.rarb}rc(h'Uh(j]ubaubh)rd}re(h'jTh(jLh)hth+hh-}rf(h/]h0]h1]h2]h5]uh7Nh8hh"]rghAXnotfoundrhri}rj(h'Uh(jdubaubh)rk}rl(h'Uh(jLh)hth+hh-}rm(h/]h0]h1]h2]h5]uh7Nh8hh"]rn(h)ro}rp(h'Xrequesth-}rq(h/]h0]h1]h2]h5]uh(jkh"]rrhAXrequestrsrt}ru(h'Uh(joubah+hubh)rv}rw(h'Xresponseh-}rx(h/]h0]h1]h2]h5]uh(jkh"]ryhAXresponserzr{}r|(h'Uh(jvubah+hubh)r}}r~(h'X code=Noneh-}r(h/]h0]h1]h2]h5]uh(jkh"]rhAX code=Nonerr}r(h'Uh(j}ubah+hubh)r}r(h'X**kwargsh-}r(h/]h0]h1]h2]h5]uh(jkh"]rhAX**kwargsrr}r(h'Uh(jubah+hubeubeubh)r}r(h'Uh(jGh)hth+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]r(hN)r}r(h'X-Bases: :class:`circuits.web.errors.httperror`h(jh)hh+hSh-}r(h/]h0]h1]h2]h5]uh7Kh8hh"]r(hAXBases: rr}r(h'XBases: h(jubh)r}r(h'X&:class:`circuits.web.errors.httperror`rh(jh)Nh+hh-}r(UreftypeXclassh։hXcircuits.web.errors.httperrorU refdomainXpyrh2]h1]U refexplicith/]h0]h5]hhhjThhuh7Nh"]rh)r}r(h'jh-}r(h/]h0]r(hjXpy-classreh1]h2]h5]uh(jh"]rhAXcircuits.web.errors.httperrorrr}r(h'Uh(jubah+hubaubeubhN)r}r(h'X0An event for signaling the HTTP Not Fouond errorrh(jh)X]/home/prologic/work/circuits/circuits/web/errors.py:docstring of circuits.web.errors.notfoundrh+hSh-}r(h/]h0]h1]h2]h5]uh7Kh8hh"]rhAX0An event for signaling the HTTP Not Fouond errorrr}r(h'jh(jubaubhN)r}r(h'XaThe constructor creates a new instance and modifies the *response* argument to reflect the error.h(jh)jh+hSh-}r(h/]h0]h1]h2]h5]uh7Kh8hh"]r(hAX8The constructor creates a new instance and modifies the rr}r(h'X8The constructor creates a new instance and modifies the h(jubh)r}r(h'X *response*h-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXresponserr}r(h'Uh(jubah+jubhAX argument to reflect the error.rr}r(h'X argument to reflect the error.h(jubeubhE)r}r(h'Uh(jh)Nh+hIh-}r(h2]h1]h/]h0]h5]Uentries]r(hLX-code (circuits.web.errors.notfound attribute)h Utrauh7Nh8hh"]ubhf)r}r(h'Uh(jh)Nh+hih-}r(hkhlXpyh2]h1]h/]h0]h5]hmX attributerhojuh7Nh8hh"]r(hq)r}r(h'X notfound.codeh(jh)jh+huh-}r(h2]rh ahxhyXcircuits.web.errorsrr}rbh1]h/]h0]h5]rh ah~X notfound.codehjThuh7Nh8hh"]r(h)r}r(h'Xcodeh(jh)jh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXcoderr}r(h'Uh(jubaubh)r}r(h'X = 404h(jh)jh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAX = 404rr}r(h'Uh(jubaubeubh)r}r(h'Uh(jh)jh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubhE)r}r(h'Uh(jh)Nh+hIh-}r(h2]h1]h/]h0]h5]Uentries]r(hLX-name (circuits.web.errors.notfound attribute)hUtrauh7Nh8hh"]ubhf)r}r(h'Uh(jh)Nh+hih-}r(hkhlXpyh2]h1]h/]h0]h5]hmX attributerhojuh7Nh8hh"]r(hq)r}r(h'X notfound.nameh(jh)jh+huh-}r(h2]rhahxhyXcircuits.web.errorsrr}rbh1]h/]h0]h5]rhah~X notfound.namehjThuh7Nh8hh"]r(h)r}r(h'Xnameh(jh)jh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXnamerr}r(h'Uh(jubaubh)r}r(h'X = 'notfound'h(jh)jh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAX = 'notfound'rr}r(h'Uh(jubaubeubh)r}r(h'Uh(jh)jh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubeubeubhE)r}r(h'Uh(h%h)Nh+hIh-}r (h2]h1]h/]h0]h5]Uentries]r (hLX'redirect (class in circuits.web.errors)hUtr auh7Nh8hh"]ubhf)r }r (h'Uh(h%h)Nh+hih-}r(hkhlXpyh2]h1]h/]h0]h5]hmXclassrhojuh7Nh8hh"]r(hq)r}r(h'X,redirect(request, response, urls, code=None)h(j h)hth+huh-}r(h2]rhahxhyXcircuits.web.errorsrr}rbh1]h/]h0]h5]rhah~XredirectrhUhuh7Nh8hh"]r(h)r}r(h'Xclass h(jh)hth+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXclass rr }r!(h'Uh(jubaubh)r"}r#(h'Xcircuits.web.errors.h(jh)hth+hh-}r$(h/]h0]h1]h2]h5]uh7Nh8hh"]r%hAXcircuits.web.errors.r&r'}r((h'Uh(j"ubaubh)r)}r*(h'jh(jh)hth+hh-}r+(h/]h0]h1]h2]h5]uh7Nh8hh"]r,hAXredirectr-r.}r/(h'Uh(j)ubaubh)r0}r1(h'Uh(jh)hth+hh-}r2(h/]h0]h1]h2]h5]uh7Nh8hh"]r3(h)r4}r5(h'Xrequesth-}r6(h/]h0]h1]h2]h5]uh(j0h"]r7hAXrequestr8r9}r:(h'Uh(j4ubah+hubh)r;}r<(h'Xresponseh-}r=(h/]h0]h1]h2]h5]uh(j0h"]r>hAXresponser?r@}rA(h'Uh(j;ubah+hubh)rB}rC(h'Xurlsh-}rD(h/]h0]h1]h2]h5]uh(j0h"]rEhAXurlsrFrG}rH(h'Uh(jBubah+hubh)rI}rJ(h'X code=Noneh-}rK(h/]h0]h1]h2]h5]uh(j0h"]rLhAX code=NonerMrN}rO(h'Uh(jIubah+hubeubeubh)rP}rQ(h'Uh(j h)hth+hh-}rR(h/]h0]h1]h2]h5]uh7Nh8hh"]rS(hN)rT}rU(h'X-Bases: :class:`circuits.web.errors.httperror`rVh(jPh)hh+hSh-}rW(h/]h0]h1]h2]h5]uh7Kh8hh"]rX(hAXBases: rYrZ}r[(h'XBases: h(jTubh)r\}r](h'X&:class:`circuits.web.errors.httperror`r^h(jTh)Nh+hh-}r_(UreftypeXclassh։hXcircuits.web.errors.httperrorU refdomainXpyr`h2]h1]U refexplicith/]h0]h5]hhhjhhuh7Nh"]rah)rb}rc(h'j^h-}rd(h/]h0]re(hj`Xpy-classrfeh1]h2]h5]uh(j\h"]rghAXcircuits.web.errors.httperrorrhri}rj(h'Uh(jbubah+hubaubeubhN)rk}rl(h'X1An event for signaling the HTTP Redirect responsermh(jPh)X]/home/prologic/work/circuits/circuits/web/errors.py:docstring of circuits.web.errors.redirectrnh+hSh-}ro(h/]h0]h1]h2]h5]uh7Kh8hh"]rphAX1An event for signaling the HTTP Redirect responserqrr}rs(h'jmh(jkubaubhN)rt}ru(h'X~The constructor creates a new instance and modifies the *response* argument to reflect a redirect response to the given *url*.h(jPh)jnh+hSh-}rv(h/]h0]h1]h2]h5]uh7Kh8hh"]rw(hAX8The constructor creates a new instance and modifies the rxry}rz(h'X8The constructor creates a new instance and modifies the h(jtubh)r{}r|(h'X *response*h-}r}(h/]h0]h1]h2]h5]uh(jth"]r~hAXresponserr}r(h'Uh(j{ubah+jubhAX6 argument to reflect a redirect response to the given rr}r(h'X6 argument to reflect a redirect response to the given h(jtubh)r}r(h'X*url*h-}r(h/]h0]h1]h2]h5]uh(jth"]rhAXurlrr}r(h'Uh(jubah+jubhAX.r}r(h'X.h(jtubeubhE)r}r(h'Uh(jPh)Nh+hIh-}r(h2]h1]h/]h0]h5]Uentries]r(hLX-name (circuits.web.errors.redirect attribute)hUtrauh7Nh8hh"]ubhf)r}r(h'Uh(jPh)Nh+hih-}r(hkhlXpyh2]h1]h/]h0]h5]hmX attributerhojuh7Nh8hh"]r(hq)r}r(h'X redirect.namerh(jh)jh+huh-}r(h2]rhahxhyXcircuits.web.errorsrr}rbh1]h/]h0]h5]rhah~X redirect.namehjhuh7Nh8hh"]r(h)r}r(h'Xnameh(jh)jh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXnamerr}r(h'Uh(jubaubh)r}r(h'X = 'redirect'h(jh)jh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAX = 'redirect'rr}r(h'Uh(jubaubeubh)r}r(h'Uh(jh)jh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubeubeubeubah'UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh8hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh>NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh*Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerr jUauto_id_prefixr Uidr Udoctitle_xformr Ustrip_elements_with_classesr NU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hj(hjhjhjZh jh jhjh jch4cdocutils.nodes target r)r}r(h'Uh(h%h)hHh+Utargetrh-}r(h/]h2]rh4ah1]Uismodh0]h5]uh7Kh8hh"]ubh jhj~hjhjLhhrhjhj6hj?hjh!h%uUsubstitution_namesr}rh+h8h-}r(h/]h2]h1]Usourceh*h0]h5]uU footnotesr]rUrefidsr }r!ub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.parsers.http.doctree0000644000014400001440000007271712425011105027352 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X,circuits.web.parsers.http.InvalidRequestLineqX8circuits.web.parsers.http.HttpParser.is_message_completeqX5circuits.web.parsers.http.HttpParser.get_query_stringqX4circuits.web.parsers.http.HttpParser.get_status_codeq X'circuits.web.parsers.http.InvalidHeaderq X5circuits.web.parsers.http.HttpParser.is_message_beginq X0circuits.web.parsers.http.HttpParser.get_versionq X4circuits.web.parsers.http.HttpParser.is_partial_bodyq X,circuits.web.parsers.http.HttpParser.executeqX,circuits.web.parsers.http.HttpParser.get_urlqX circuits.web.parsers.http moduleqNX/circuits.web.parsers.http.HttpParser.is_upgradeqX$circuits.web.parsers.http.HttpParserqX/circuits.web.parsers.http.HttpParser.is_chunkedqX8circuits.web.parsers.http.HttpParser.is_headers_completeqX3circuits.web.parsers.http.HttpParser.recv_body_intoqX-circuits.web.parsers.http.HttpParser.get_pathqX/circuits.web.parsers.http.HttpParser.get_methodqX*circuits.web.parsers.http.InvalidChunkSizeqX.circuits.web.parsers.http.HttpParser.recv_bodyqX6circuits.web.parsers.http.HttpParser.should_keep_aliveqX0circuits.web.parsers.http.HttpParser.get_headersqX/circuits.web.parsers.http.HttpParser.get_schemequUsubstitution_defsq}qUparse_messagesq]q Ucurrent_sourceq!NU decorationq"NUautofootnote_startq#KUnameidsq$}q%(hhhhhhh h h h h h h h h h hhhhhU circuits-web-parsers-http-moduleq&hhhhhhhhhhhhhhhhhhhhhhhhuUchildrenq']q(cdocutils.nodes section q))q*}q+(U rawsourceq,UUparentq-hUsourceq.XJ/home/prologic/work/circuits/docs/source/api/circuits.web.parsers.http.rstq/Utagnameq0Usectionq1U attributesq2}q3(Udupnamesq4]Uclassesq5]Ubackrefsq6]Uidsq7]q8(X module-circuits.web.parsers.httpq9h&eUnamesq:]q;hauUlineq(cdocutils.nodes title q?)q@}qA(h,X circuits.web.parsers.http moduleqBh-h*h.h/h0UtitleqCh2}qD(h4]h5]h6]h7]h:]uhqMh0UindexqNh2}qO(h7]h6]h4]h5]h:]Uentries]qP(UsingleqQX"circuits.web.parsers.http (module)X module-circuits.web.parsers.httpUtqRauhqhh0Udesc_signatureqih2}qj(h7]qkhaUmoduleqlcdocutils.nodes reprunicode qmXcircuits.web.parsers.httpqnqo}qpbh6]h4]h5]h:]qqhaUfullnameqrhXUclassqsUUfirstqtuhqh0U paragraphqh2}q(h4]h5]h6]h7]h:]uh}r?(h,X$Bases: :class:`exceptions.Exception`h-j:h.hh0hh2}r@(h4]h5]h6]h7]h:]uhubh)rE}rF(h,X:class:`exceptions.Exception`rGh-j>h.Nh0hh2}rH(UreftypeXclasshhXexceptions.ExceptionU refdomainXpyrIh7]h6]U refexplicith4]h5]h:]hhhjhhuhhcj>uhrecv_body_into() (circuits.web.parsers.http.HttpParser method)hUtrauhDo we get upgrade header in the request. Useful for websocketsr6h-j0h.jh0hh2}r7(h4]h5]h6]h7]h:]uhDo we get upgrade header in the request. Useful for websocketsr9r:}r;(h,j6h-j4ubaubaubeubhJ)r<}r=(h,Uh-jh.X/home/prologic/work/circuits/circuits/web/parsers/http.py:docstring of circuits.web.parsers.http.HttpParser.is_headers_completer>h0hNh2}r?(h7]h6]h4]h5]h:]Uentries]r@(hQXCis_headers_complete() (circuits.web.parsers.http.HttpParser method)hUtrAauhh0h]h2}rD(h_h`Xpyh7]h6]h4]h5]h:]haXmethodrEhcjEuhh0hh2}ra(h4]h5]h6]h7]h:]uh(h,Uh-jh.Nh0h]h2}r?(h_h`Xpyh7]h6]h4]h5]h:]haXmethodr@hcj@uhhah+]q?hauh-Kh.hh]q@(h0)qA}qB(hX SubpackagesqChh;h h!h"h4h$}qD(h&]h']h(]h)]h+]uh-Kh.hh]qEh7X SubpackagesqFqG}qH(hhChhAubaubcdocutils.nodes compound qI)qJ}qK(hUhh;h h!h"UcompoundqLh$}qM(h&]h']qNUtoctree-wrapperqOah(]h)]h+]uh-Kh.hh]qPcsphinx.addnodes toctree qQ)qR}qS(hUhhJh h!h"UtoctreeqTh$}qU(UnumberedqVKU includehiddenqWhX api/circuitsqXU titlesonlyqYUglobqZh)]h(]h&]h']h+]Uentriesq[]q\(NXapi/circuits.appq]q^NXapi/circuits.coreq_q`NXapi/circuits.ioqaqbNXapi/circuits.netqcqdNXapi/circuits.nodeqeqfNXapi/circuits.protocolsqgqhNXapi/circuits.toolsqiqjNXapi/circuits.webqkqleUhiddenqmU includefilesqn]qo(h]h_hahchehghihkeUmaxdepthqpJuh-Kh]ubaubeubh)qq}qr(hUhhh h!h"h#h$}qs(h&]h']h(]h)]qthah+]quh auh-Kh.hh]qv(h0)qw}qx(hX Submodulesqyhhqh h!h"h4h$}qz(h&]h']h(]h)]h+]uh-Kh.hh]q{h7X Submodulesq|q}}q~(hhyhhwubaubhI)q}q(hUhhqh h!h"hLh$}q(h&]h']qhOah(]h)]h+]uh-Kh.hh]qhQ)q}q(hUhhh h!h"hTh$}q(hVKhWhhXhYhZh)]h(]h&]h']h+]h[]q(NXapi/circuits.sixqqNXapi/circuits.versionqqehmhn]q(hhehpJuh-Kh]ubaubeubh)q}q(hUhhh h!h"h#h$}q(h&]h']h(]h)]q(Xmodule-circuitsqheh+]qhauh-Kh.hh]q(h0)q}q(hXModule contentsqhhh h!h"h4h$}q(h&]h']h(]h)]h+]uh-Kh.hh]qh7XModule contentsqq}q(hhhhubaubcsphinx.addnodes index q)q}q(hUhhh U qh"Uindexqh$}q(h)]h(]h&]h']h+]Uentries]q(UsingleqXcircuits (module)Xmodule-circuitsUtqauh-Kh.hh]ubcdocutils.nodes paragraph q)q}q(hX?Lightweight Event driven and Asynchronous Application Frameworkqhhh XG/home/prologic/work/circuits/circuits/__init__.py:docstring of circuitsqh"U paragraphqh$}q(h&]h']h(]h)]h+]uh-Kh.hh]qh7X?Lightweight Event driven and Asynchronous Application Frameworkqq}q(hhhhubaubh)q}q(hXcircuits is a **Lightweight** **Event** driven and **Asynchronous** **Application Framework** for the `Python Programming Language`_ with a strong **Component** Architecture.hhh hh"hh$}q(h&]h']h(]h)]h+]uh-Kh.hh]q(h7Xcircuits is a qq}q(hXcircuits is a hhubcdocutils.nodes strong q)q}q(hX**Lightweight**h$}q(h&]h']h(]h)]h+]uhhh]qh7X Lightweightqq}q(hUhhubah"Ustrongqubh7X q}q(hX hhubh)q}q(hX **Event**h$}q(h&]h']h(]h)]h+]uhhh]qh7XEventqƅq}q(hUhhubah"hubh7X driven and qɅq}q(hX driven and hhubh)q}q(hX**Asynchronous**h$}q(h&]h']h(]h)]h+]uhhh]qh7X AsynchronousqЅq}q(hUhhubah"hubh7X q}q(hX hhubh)q}q(hX**Application Framework**h$}q(h&]h']h(]h)]h+]uhhh]qh7XApplication Frameworkqمq}q(hUhhubah"hubh7X for the q܅q}q(hX for the hhubcdocutils.nodes reference q)q}q(hX`Python Programming Language`_UresolvedqKhhh"U referenceqh$}q(UnameXPython Programming LanguageUrefuriqXhttp://www.python.org/qh)]h(]h&]h']h+]uh]qh7XPython Programming Languageq腁q}q(hUhhubaubh7X with a strong q녁q}q(hX with a strong hhubh)q}q(hX **Component**h$}q(h&]h']h(]h)]h+]uhhh]qh7X Componentqq}q(hUhhubah"hubh7X Architecture.qq}q(hX Architecture.hhubeubcdocutils.nodes field_list q)q}q(hUhhh hh"U field_listqh$}q(h&]h']h(]h)]h+]uh-Kh.hh]q(cdocutils.nodes field q)q}r(hUhhh hh"Ufieldrh$}r(h&]h']h(]h)]h+]uh-Kh.hh]r(cdocutils.nodes field_name r)r}r(hX copyrightrh$}r(h&]h']h(]h)]h+]uhhh]r h7X copyrightr r }r (hjhjubah"U field_namer ubcdocutils.nodes field_body r)r}r(hX&CopyRight (C) 2004-2013 by James Millsrh$}r(h&]h']h(]h)]h+]uhhh]rh)r}r(hjhjh hh"hh$}r(h&]h']h(]h)]h+]uh-Kh]rh7X&CopyRight (C) 2004-2013 by James Millsrr}r(hjhjubaubah"U field_bodyrubeubh)r}r(hUhhh hh"jh$}r(h&]h']h(]h)]h+]uh-Kh.hh]r(j)r }r!(hXlicenser"h$}r#(h&]h']h(]h)]h+]uhjh]r$h7Xlicenser%r&}r'(hj"hj ubah"j ubj)r(}r)(hXMIT (See: LICENSE) h$}r*(h&]h']h(]h)]h+]uhjh]r+h)r,}r-(hXMIT (See: LICENSE)r.hj(h hh"hh$}r/(h&]h']h(]h)]h+]uh-Kh]r0h7XMIT (See: LICENSE)r1r2}r3(hj.hj,ubaubah"jubeubeubcdocutils.nodes target r4)r5}r6(hX7.. _Python Programming Language: http://www.python.org/U referencedr7Khhh hh"Utargetr8h$}r9(hhh)]r:hah(]h&]h']h+]r;h auh-K h.hh]ubeubeubahUU transformerr<NU footnote_refsr=}r>Urefnamesr?}r@Xpython programming language]rAhasUsymbol_footnotesrB]rCUautofootnote_refsrD]rEUsymbol_footnote_refsrF]rGU citationsrH]rIh.hU current_linerJNUtransform_messagesrK]rLUreporterrMNUid_startrNKU autofootnotesrO]rPU citation_refsrQ}rRUindirect_targetsrS]rTUsettingsrU(cdocutils.frontend Values rVorW}rX(Ufootnote_backlinksrYKUrecord_dependenciesrZNU rfc_base_urlr[Uhttp://tools.ietf.org/html/r\U tracebackr]Upep_referencesr^NUstrip_commentsr_NU toc_backlinksr`UentryraU language_coderbUenrcU datestamprdNU report_levelreKU _destinationrfNU halt_levelrgKU strip_classesrhNh4NUerror_encoding_error_handlerriUbackslashreplacerjUdebugrkNUembed_stylesheetrlUoutput_encoding_error_handlerrmUstrictrnU sectnum_xformroKUdump_transformsrpNU docinfo_xformrqKUwarning_streamrrNUpep_file_url_templatersUpep-%04drtUexit_status_levelruKUconfigrvNUstrict_visitorrwNUcloak_email_addressesrxUtrim_footnote_reference_spaceryUenvrzNUdump_pseudo_xmlr{NUexpose_internalsr|NUsectsubtitle_xformr}U source_linkr~NUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh!Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjnUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hh;hhhhqhj5hhhj4)r}r(hUhhh hh"j8h$}r(h&]h)]rhah(]Uismodh']h+]uh-Kh.hh]ubuUsubstitution_namesr}rh"h.h$}r(h&]h)]h(]Usourceh!h']h+]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.sessions.doctree0000644000014400001440000003706512425011106026561 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.web.sessions.SessionsqXcircuits.web.sessions.whoqX#circuits.web.sessions.Sessions.loadqX$circuits.web.sessions.create_sessionq X&circuits.web.sessions.Sessions.requestq Xcircuits.web.sessions moduleq NX$circuits.web.sessions.verify_sessionq X#circuits.web.sessions.Sessions.saveq X&circuits.web.sessions.Sessions.channelquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh h h h h Ucircuits-web-sessions-moduleqh h h h hhuUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceq XF/home/prologic/work/circuits/docs/source/api/circuits.web.sessions.rstq!Utagnameq"Usectionq#U attributesq$}q%(Udupnamesq&]Uclassesq']Ubackrefsq(]Uidsq)]q*(Xmodule-circuits.web.sessionsq+heUnamesq,]q-h auUlineq.KUdocumentq/hh]q0(cdocutils.nodes title q1)q2}q3(hXcircuits.web.sessions moduleq4hhh h!h"Utitleq5h$}q6(h&]h']h(]h)]h,]uh.Kh/hh]q7cdocutils.nodes Text q8Xcircuits.web.sessions moduleq9q:}q;(hh4hh2ubaubcsphinx.addnodes index q<)q=}q>(hUhhh U q?h"Uindexq@h$}qA(h)]h(]h&]h']h,]Uentries]qB(UsingleqCXcircuits.web.sessions (module)Xmodule-circuits.web.sessionsUtqDauh.Kh/hh]ubcdocutils.nodes paragraph qE)qF}qG(hXSession ComponentsqHhhh XX/home/prologic/work/circuits/circuits/web/sessions.py:docstring of circuits.web.sessionsqIh"U paragraphqJh$}qK(h&]h']h(]h)]h,]uh.Kh/hh]qLh8XSession ComponentsqMqN}qO(hhHhhFubaubhE)qP}qQ(hXfThis module implements Session Components that can be used to store and access persistent information.qRhhh hIh"hJh$}qS(h&]h']h(]h)]h,]uh.Kh/hh]qTh8XfThis module implements Session Components that can be used to store and access persistent information.qUqV}qW(hhRhhPubaubh<)qX}qY(hUhhh X\/home/prologic/work/circuits/circuits/web/sessions.py:docstring of circuits.web.sessions.whoqZh"h@h$}q[(h)]h(]h&]h']h,]Uentries]q\(hCX'who() (in module circuits.web.sessions)hUtq]auh.Nh/hh]ubcsphinx.addnodes desc q^)q_}q`(hUhhh hZh"Udescqah$}qb(UnoindexqcUdomainqdXpyh)]h(]h&]h']h,]UobjtypeqeXfunctionqfUdesctypeqghfuh.Nh/hh]qh(csphinx.addnodes desc_signature qi)qj}qk(hXwho(request, encoding='utf-8')hh_h U qlh"Udesc_signatureqmh$}qn(h)]qohaUmoduleqpcdocutils.nodes reprunicode qqXcircuits.web.sessionsqrqs}qtbh(]h&]h']h,]quhaUfullnameqvXwhoqwUclassqxUUfirstqyuh.Nh/hh]qz(csphinx.addnodes desc_addname q{)q|}q}(hXcircuits.web.sessions.hhjh hlh"U desc_addnameq~h$}q(h&]h']h(]h)]h,]uh.Nh/hh]qh8Xcircuits.web.sessions.qq}q(hUhh|ubaubcsphinx.addnodes desc_name q)q}q(hhwhhjh hlh"U desc_nameqh$}q(h&]h']h(]h)]h,]uh.Nh/hh]qh8Xwhoqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhjh hlh"Udesc_parameterlistqh$}q(h&]h']h(]h)]h,]uh.Nh/hh]q(csphinx.addnodes desc_parameter q)q}q(hXrequesth$}q(h&]h']h(]h)]h,]uhhh]qh8Xrequestqq}q(hUhhubah"Udesc_parameterqubh)q}q(hXencoding='utf-8'h$}q(h&]h']h(]h)]h,]uhhh]qh8Xencoding='utf-8'qq}q(hUhhubah"hubeubeubcsphinx.addnodes desc_content q)q}q(hUhh_h hlh"U desc_contentqh$}q(h&]h']h(]h)]h,]uh.Nh/hh]qhE)q}q(hX:Create a SHA1 Hash of the User's IP Address and User-Agentqhhh hZh"hJh$}q(h&]h']h(]h)]h,]uh.Kh/hh]qh8X:Create a SHA1 Hash of the User's IP Address and User-Agentqq}q(hhhhubaubaubeubh<)q}q(hUhhh Xg/home/prologic/work/circuits/circuits/web/sessions.py:docstring of circuits.web.sessions.create_sessionqh"h@h$}q(h)]h(]h&]h']h,]Uentries]q(hCX2create_session() (in module circuits.web.sessions)h Utqauh.Nh/hh]ubh^)q}q(hUhhh hh"hah$}q(hchdXpyh)]h(]h&]h']h,]heXfunctionqhghuh.Nh/hh]q(hi)q}q(hXcreate_session(request)hhh hlh"hmh$}q(h)]qh ahphqXcircuits.web.sessionsqq}qbh(]h&]h']h,]qh ahvXcreate_sessionqhxUhyuh.Nh/hh]q(h{)q}q(hXcircuits.web.sessions.hhh hlh"h~h$}q(h&]h']h(]h)]h,]uh.Nh/hh]qh8Xcircuits.web.sessions.qʅq}q(hUhhubaubh)q}q(hhhhh hlh"hh$}q(h&]h']h(]h)]h,]uh.Nh/hh]qh8Xcreate_sessionqхq}q(hUhhubaubh)q}q(hUhhh hlh"hh$}q(h&]h']h(]h)]h,]uh.Nh/hh]qh)q}q(hXrequesth$}q(h&]h']h(]h)]h,]uhhh]qh8Xrequestq܅q}q(hUhhubah"hubaubeubh)q}q(hUhhh hlh"hh$}q(h&]h']h(]h)]h,]uh.Nh/hh]q(hE)q}q(hX+Create a unique session id from the requestqhhh hh"hJh$}q(h&]h']h(]h)]h,]uh.Kh/hh]qh8X+Create a unique session id from the requestq腁q}q(hhhhubaubhE)q}q(hXReturns a unique session using ``uuid4()`` and a ``sha1()`` hash of the users IP Address and User Agent in the form of ``sid/who``.hhh hh"hJh$}q(h&]h']h(]h)]h,]uh.Kh/hh]q(h8XReturns a unique session using qq}q(hXReturns a unique session using hhubcdocutils.nodes literal q)q}q(hX ``uuid4()``h$}q(h&]h']h(]h)]h,]uhhh]qh8Xuuid4()qq}q(hUhhubah"Uliteralqubh8X and a qq}q(hX and a hhubh)q}q(hX ``sha1()``h$}r(h&]h']h(]h)]h,]uhhh]rh8Xsha1()rr}r(hUhhubah"hubh8X< hash of the users IP Address and User Agent in the form of rr}r(hX< hash of the users IP Address and User Agent in the form of hhubh)r}r (hX ``sid/who``h$}r (h&]h']h(]h)]h,]uhhh]r h8Xsid/whor r }r(hUhjubah"hubh8X.r}r(hX.hhubeubeubeubh<)r}r(hUhhh Xg/home/prologic/work/circuits/circuits/web/sessions.py:docstring of circuits.web.sessions.verify_sessionrh"h@h$}r(h)]h(]h&]h']h,]Uentries]r(hCX2verify_session() (in module circuits.web.sessions)h Utrauh.Nh/hh]ubh^)r}r(hUhhh jh"hah$}r(hchdXpyh)]h(]h&]h']h,]heXfunctionrhgjuh.Nh/hh]r(hi)r}r(hXverify_session(request, sid)hjh hlh"hmh$}r(h)]rh ahphqXcircuits.web.sessionsr r!}r"bh(]h&]h']h,]r#h ahvXverify_sessionr$hxUhyuh.Nh/hh]r%(h{)r&}r'(hXcircuits.web.sessions.hjh hlh"h~h$}r((h&]h']h(]h)]h,]uh.Nh/hh]r)h8Xcircuits.web.sessions.r*r+}r,(hUhj&ubaubh)r-}r.(hj$hjh hlh"hh$}r/(h&]h']h(]h)]h,]uh.Nh/hh]r0h8Xverify_sessionr1r2}r3(hUhj-ubaubh)r4}r5(hUhjh hlh"hh$}r6(h&]h']h(]h)]h,]uh.Nh/hh]r7(h)r8}r9(hXrequesth$}r:(h&]h']h(]h)]h,]uhj4h]r;h8Xrequestr<r=}r>(hUhj8ubah"hubh)r?}r@(hXsidh$}rA(h&]h']h(]h)]h,]uhj4h]rBh8XsidrCrD}rE(hUhj?ubah"hubeubeubh)rF}rG(hUhjh hlh"hh$}rH(h&]h']h(]h)]h,]uh.Nh/hh]rI(hE)rJ}rK(hXVerify a User's SessionrLhjFh jh"hJh$}rM(h&]h']h(]h)]h,]uh.Kh/hh]rNh8XVerify a User's SessionrOrP}rQ(hjLhjJubaubhE)rR}rS(hXThis verifies the User's Session by verifying the SHA1 Hash of the User's IP Address and User-Agent match the provided Session ID.rThjFh jh"hJh$}rU(h&]h']h(]h)]h,]uh.Kh/hh]rVh8XThis verifies the User's Session by verifying the SHA1 Hash of the User's IP Address and User-Agent match the provided Session ID.rWrX}rY(hjThjRubaubeubeubh<)rZ}r[(hUhhh Nh"h@h$}r\(h)]h(]h&]h']h,]Uentries]r](hCX)Sessions (class in circuits.web.sessions)hUtr^auh.Nh/hh]ubh^)r_}r`(hUhhh Nh"hah$}ra(hchdXpyh)]h(]h&]h']h,]heXclassrbhgjbuh.Nh/hh]rc(hi)rd}re(hX0Sessions(name='circuits.session', channel='web')hj_h hlh"hmh$}rf(h)]rghahphqXcircuits.web.sessionsrhri}rjbh(]h&]h']h,]rkhahvXSessionsrlhxUhyuh.Nh/hh]rm(csphinx.addnodes desc_annotation rn)ro}rp(hXclass hjdh hlh"Udesc_annotationrqh$}rr(h&]h']h(]h)]h,]uh.Nh/hh]rsh8Xclass rtru}rv(hUhjoubaubh{)rw}rx(hXcircuits.web.sessions.hjdh hlh"h~h$}ry(h&]h']h(]h)]h,]uh.Nh/hh]rzh8Xcircuits.web.sessions.r{r|}r}(hUhjwubaubh)r~}r(hjlhjdh hlh"hh$}r(h&]h']h(]h)]h,]uh.Nh/hh]rh8XSessionsrr}r(hUhj~ubaubh)r}r(hUhjdh hlh"hh$}r(h&]h']h(]h)]h,]uh.Nh/hh]r(h)r}r(hXname='circuits.session'h$}r(h&]h']h(]h)]h,]uhjh]rh8Xname='circuits.session'rr}r(hUhjubah"hubh)r}r(hX channel='web'h$}r(h&]h']h(]h)]h,]uhjh]rh8X channel='web'rr}r(hUhjubah"hubeubeubh)r}r(hUhj_h hlh"hh$}r(h&]h']h(]h)]h,]uh.Nh/hh]r(hE)r}r(hX2Bases: :class:`circuits.core.components.Component`rhjh U rh"hJh$}r(h&]h']h(]h)]h,]uh.Kh/hh]r(h8XBases: rr}r(hXBases: hjubcsphinx.addnodes pending_xref r)r}r(hX+:class:`circuits.core.components.Component`rhjh Nh"U pending_xrefrh$}r(UreftypeXclassUrefwarnrU reftargetrX"circuits.core.components.ComponentU refdomainXpyrh)]h(]U refexplicith&]h']h,]UrefdocrXapi/circuits.web.sessionsrUpy:classrjlU py:modulerXcircuits.web.sessionsruh.Nh]rh)r}r(hjh$}r(h&]h']r(UxrefrjXpy-classreh(]h)]h,]uhjh]rh8X"circuits.core.components.Componentrr}r(hUhjubah"hubaubeubh<)r}r(hUhjh Nh"h@h$}r(h)]h(]h&]h']h,]Uentries]r(hCX2channel (circuits.web.sessions.Sessions attribute)hUtrauh.Nh/hh]ubh^)r}r(hUhjh Nh"hah$}r(hchdXpyh)]h(]h&]h']h,]heX attributerhgjuh.Nh/hh]r(hi)r}r(hXSessions.channelhjh U rh"hmh$}r(h)]rhahphqXcircuits.web.sessionsrr}rbh(]h&]h']h,]rhahvXSessions.channelhxjlhyuh.Nh/hh]r(h)r}r(hXchannelhjh jh"hh$}r(h&]h']h(]h)]h,]uh.Nh/hh]rh8Xchannelrr}r(hUhjubaubjn)r}r(hX = 'web'hjh jh"jqh$}r(h&]h']h(]h)]h,]uh.Nh/hh]rh8X = 'web'rr}r(hUhjubaubeubh)r}r(hUhjh jh"hh$}r(h&]h']h(]h)]h,]uh.Nh/hh]ubeubh<)r}r(hUhjh Nh"h@h$}r(h)]h(]h&]h']h,]Uentries]r(hCX.load() (circuits.web.sessions.Sessions method)hUtrauh.Nh/hh]ubh^)r}r(hUhjh Nh"hah$}r(hchdXpyh)]h(]h&]h']h,]heXmethodrhgjuh.Nh/hh]r(hi)r}r(hXSessions.load(sid)hjh hlh"hmh$}r(h)]rhahphqXcircuits.web.sessionsrr}rbh(]h&]h']h,]rhahvX Sessions.loadhxjlhyuh.Nh/hh]r(h)r}r(hXloadhjh hlh"hh$}r(h&]h']h(]h)]h,]uh.Nh/hh]rh8Xloadrr}r(hUhjubaubh)r}r(hUhjh hlh"hh$}r(h&]h']h(]h)]h,]uh.Nh/hh]rh)r}r(hXsidh$}r(h&]h']h(]h)]h,]uhjh]rh8Xsidrr}r(hUhjubah"hubaubeubh)r}r(hUhjh hlh"hh$}r (h&]h']h(]h)]h,]uh.Nh/hh]ubeubh<)r }r (hUhjh Xf/home/prologic/work/circuits/circuits/web/sessions.py:docstring of circuits.web.sessions.Sessions.saver h"h@h$}r (h)]h(]h&]h']h,]Uentries]r(hCX.save() (circuits.web.sessions.Sessions method)h Utrauh.Nh/hh]ubh^)r}r(hUhjh j h"hah$}r(hchdXpyh)]h(]h&]h']h,]heXmethodrhgjuh.Nh/hh]r(hi)r}r(hXSessions.save(sid, data)hjh hlh"hmh$}r(h)]rh ahphqXcircuits.web.sessionsrr}rbh(]h&]h']h,]rh ahvX Sessions.savehxjlhyuh.Nh/hh]r(h)r}r(hXsavehjh hlh"hh$}r (h&]h']h(]h)]h,]uh.Nh/hh]r!h8Xsaver"r#}r$(hUhjubaubh)r%}r&(hUhjh hlh"hh$}r'(h&]h']h(]h)]h,]uh.Nh/hh]r((h)r)}r*(hXsidh$}r+(h&]h']h(]h)]h,]uhj%h]r,h8Xsidr-r.}r/(hUhj)ubah"hubh)r0}r1(hXdatah$}r2(h&]h']h(]h)]h,]uhj%h]r3h8Xdatar4r5}r6(hUhj0ubah"hubeubeubh)r7}r8(hUhjh hlh"hh$}r9(h&]h']h(]h)]h,]uh.Nh/hh]r:hE)r;}r<(hXSave User Session Data for sidr=hj7h j h"hJh$}r>(h&]h']h(]h)]h,]uh.Kh/hh]r?h8XSave User Session Data for sidr@rA}rB(hj=hj;ubaubaubeubh<)rC}rD(hUhjh Nh"h@h$}rE(h)]h(]h&]h']h,]Uentries]rF(hCX1request() (circuits.web.sessions.Sessions method)h UtrGauh.Nh/hh]ubh^)rH}rI(hUhjh Nh"hah$}rJ(hchdXpyh)]h(]h&]h']h,]heXmethodrKhgjKuh.Nh/hh]rL(hi)rM}rN(hX#Sessions.request(request, response)hjHh hlh"hmh$}rO(h)]rPh ahphqXcircuits.web.sessionsrQrR}rSbh(]h&]h']h,]rTh ahvXSessions.requesthxjlhyuh.Nh/hh]rU(h)rV}rW(hXrequesthjMh hlh"hh$}rX(h&]h']h(]h)]h,]uh.Nh/hh]rYh8XrequestrZr[}r\(hUhjVubaubh)r]}r^(hUhjMh hlh"hh$}r_(h&]h']h(]h)]h,]uh.Nh/hh]r`(h)ra}rb(hXrequesth$}rc(h&]h']h(]h)]h,]uhj]h]rdh8Xrequestrerf}rg(hUhjaubah"hubh)rh}ri(hXresponseh$}rj(h&]h']h(]h)]h,]uhj]h]rkh8Xresponserlrm}rn(hUhjhubah"hubeubeubh)ro}rp(hUhjHh hlh"hh$}rq(h&]h']h(]h)]h,]uh.Nh/hh]ubeubeubeubeubahUU transformerrrNU footnote_refsrs}rtUrefnamesru}rvUsymbol_footnotesrw]rxUautofootnote_refsry]rzUsymbol_footnote_refsr{]r|U citationsr}]r~h/hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh5NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh!Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hjdhhjhjh hh jMh+cdocutils.nodes target r)r}r(hUhhh h?h"Utargetrh$}r(h&]h)]rh+ah(]Uismodh']h,]uh.Kh/hh]ubhjh jhhh juUsubstitution_namesr}rh"h/h$}r(h&]h)]h(]Usourceh!h']h,]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.core.pollers.doctree0000644000014400001440000012745712425011102026547 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X"circuits.core.pollers.Poll.channelqX(circuits.core.pollers.EPoll.removeWriterqX&circuits.core.pollers.KQueue.addReaderqX#circuits.core.pollers.EPoll.discardq X*circuits.core.pollers.BasePoller.addReaderq X'circuits.core.pollers.BasePoller.resumeq X"circuits.core.pollers.Poll.discardq X#circuits.core.pollers.EPoll.channelq X*circuits.core.pollers.BasePoller.isWritingqX'circuits.core.pollers.Poll.removeReaderqX$circuits.core.pollers.KQueue.discardqX&circuits.core.pollers.KQueue.addWriterqX$circuits.core.pollers.Select.channelqXcircuits.core.pollers.KQueueqX*circuits.core.pollers.BasePoller.addWriterqX(circuits.core.pollers.EPoll.removeReaderqX(circuits.core.pollers.BasePoller.channelqXcircuits.core.pollers moduleqNX$circuits.core.pollers.Poll.addWriterqX$circuits.core.pollers.Poll.addReaderqX%circuits.core.pollers.EPoll.addReaderqX)circuits.core.pollers.KQueue.removeWriterqX circuits.core.pollers.BasePollerqX-circuits.core.pollers.BasePoller.removeReaderqX$circuits.core.pollers.KQueue.channelqXcircuits.core.pollers.SelectqX'circuits.core.pollers.Poll.removeWriterq Xcircuits.core.pollers.Pollerq!X)circuits.core.pollers.KQueue.removeReaderq"X%circuits.core.pollers.EPoll.addWriterq#X*circuits.core.pollers.BasePoller.isReadingq$X(circuits.core.pollers.BasePoller.discardq%X*circuits.core.pollers.BasePoller.getTargetq&Xcircuits.core.pollers.Pollq'Xcircuits.core.pollers.EPollq(X-circuits.core.pollers.BasePoller.removeWriterq)uUsubstitution_defsq*}q+Uparse_messagesq,]q-Ucurrent_sourceq.NU decorationq/NUautofootnote_startq0KUnameidsq1}q2(hhhhhhh h h h h h h h h h hhhhhhhhhhhhhhhhhhhUcircuits-core-pollers-moduleq3hhhhhhhhhhhhhhhhh h h!h!h"h"h#h#h$h$h%h%h&h&h'h'h(h(h)h)uUchildrenq4]q5cdocutils.nodes section q6)q7}q8(U rawsourceq9UUparentq:hUsourceq;XF/home/prologic/work/circuits/docs/source/api/circuits.core.pollers.rstqU attributesq?}q@(UdupnamesqA]UclassesqB]UbackrefsqC]UidsqD]qE(Xmodule-circuits.core.pollersqFh3eUnamesqG]qHhauUlineqIKUdocumentqJhh4]qK(cdocutils.nodes title qL)qM}qN(h9Xcircuits.core.pollers moduleqOh:h7h;hqZh=Uindexq[h?}q\(hD]hC]hA]hB]hG]Uentries]q](Usingleq^Xcircuits.core.pollers (module)Xmodule-circuits.core.pollersUtq_auhIKhJhh4]ubcdocutils.nodes paragraph q`)qa}qb(h9X7Poller Components for asynchronous file and socket I/O.qch:h7h;XX/home/prologic/work/circuits/circuits/core/pollers.py:docstring of circuits.core.pollersqdh=U paragraphqeh?}qf(hA]hB]hC]hD]hG]uhIKhJhh4]qghSX7Poller Components for asynchronous file and socket I/O.qhqi}qj(h9hch:haubaubh`)qk}ql(h9XThis module contains Poller components that enable polling of file or socket descriptors for read/write events. Pollers: - Select - Poll - EPollqmh:h7h;hdh=heh?}qn(hA]hB]hC]hD]hG]uhIKhJhh4]qohSXThis module contains Poller components that enable polling of file or socket descriptors for read/write events. Pollers: - Select - Poll - EPollqpqq}qr(h9hmh:hkubaubhW)qs}qt(h9Uh:h7h;Nh=h[h?}qu(hD]hC]hA]hB]hG]Uentries]qv(h^X+BasePoller (class in circuits.core.pollers)hUtqwauhINhJhh4]ubcsphinx.addnodes desc qx)qy}qz(h9Uh:h7h;Nh=Udescq{h?}q|(Unoindexq}Udomainq~XpyhD]hC]hA]hB]hG]UobjtypeqXclassqUdesctypeqhuhINhJhh4]q(csphinx.addnodes desc_signature q)q}q(h9XBasePoller(channel=None)h:hyh;U qh=Udesc_signatureqh?}q(hD]qhaUmoduleqcdocutils.nodes reprunicode qXcircuits.core.pollersqq}qbhC]hA]hB]hG]qhaUfullnameqX BasePollerqUclassqUUfirstquhINhJhh4]q(csphinx.addnodes desc_annotation q)q}q(h9Xclass h:hh;hh=Udesc_annotationqh?}q(hA]hB]hC]hD]hG]uhINhJhh4]qhSXclass qq}q(h9Uh:hubaubcsphinx.addnodes desc_addname q)q}q(h9Xcircuits.core.pollers.h:hh;hh=U desc_addnameqh?}q(hA]hB]hC]hD]hG]uhINhJhh4]qhSXcircuits.core.pollers.qq}q(h9Uh:hubaubcsphinx.addnodes desc_name q)q}q(h9hh:hh;hh=U desc_nameqh?}q(hA]hB]hC]hD]hG]uhINhJhh4]qhSX BasePollerqq}q(h9Uh:hubaubcsphinx.addnodes desc_parameterlist q)q}q(h9Uh:hh;hh=Udesc_parameterlistqh?}q(hA]hB]hC]hD]hG]uhINhJhh4]qcsphinx.addnodes desc_parameter q)q}q(h9X channel=Noneh?}q(hA]hB]hC]hD]hG]uh:hh4]qhSX channel=Noneqq}q(h9Uh:hubah=Udesc_parameterqubaubeubcsphinx.addnodes desc_content q)q}q(h9Uh:hyh;hh=U desc_contentqh?}q(hA]hB]hC]hD]hG]uhINhJhh4]q(h`)q}q(h9X6Bases: :class:`circuits.core.components.BaseComponent`h:hh;U qh=heh?}q(hA]hB]hC]hD]hG]uhIKhJhh4]q(hSXBases: qʅq}q(h9XBases: h:hubcsphinx.addnodes pending_xref q)q}q(h9X/:class:`circuits.core.components.BaseComponent`qh:hh;Nh=U pending_xrefqh?}q(UreftypeXclassUrefwarnqӉU reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqhD]hC]U refexplicithA]hB]hG]UrefdocqXapi/circuits.core.pollersqUpy:classqhU py:moduleqXcircuits.core.pollersquhINh4]qcdocutils.nodes literal q)q}q(h9hh?}q(hA]hB]q(UxrefqhXpy-classqehC]hD]hG]uh:hh4]qhSX&circuits.core.components.BaseComponentq䅁q}q(h9Uh:hubah=UliteralqubaubeubhW)q}q(h9Uh:hh;Nh=h[h?}q(hD]hC]hA]hB]hG]Uentries]q(h^X4channel (circuits.core.pollers.BasePoller attribute)hUtqauhINhJhh4]ubhx)q}q(h9Uh:hh;Nh=h{h?}q(h}h~XpyhD]hC]hA]hB]hG]hX attributeqhhuhINhJhh4]q(h)q}q(h9XBasePoller.channelh:hh;U qh=hh?}q(hD]qhahhXcircuits.core.pollersqq}qbhC]hA]hB]hG]qhahXBasePoller.channelhhhuhINhJhh4]q(h)q}q(h9Xchannelh:hh;hh=hh?}q(hA]hB]hC]hD]hG]uhINhJhh4]qhSXchannelrr}r(h9Uh:hubaubh)r}r(h9X = Noneh:hh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSX = Nonerr}r (h9Uh:jubaubeubh)r }r (h9Uh:hh;hh=hh?}r (hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r }r(h9Uh:hh;Nh=h[h?}r(hD]hC]hA]hB]hG]Uentries]r(h^X2resume() (circuits.core.pollers.BasePoller method)h UtrauhINhJhh4]ubhx)r}r(h9Uh:hh;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hXmethodrhjuhINhJhh4]r(h)r}r(h9XBasePoller.resume()h:jh;hh=hh?}r(hD]rh ahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rh ahXBasePoller.resumehhhuhINhJhh4]r(h)r }r!(h9Xresumeh:jh;hh=hh?}r"(hA]hB]hC]hD]hG]uhINhJhh4]r#hSXresumer$r%}r&(h9Uh:j ubaubh)r'}r((h9Uh:jh;hh=hh?}r)(hA]hB]hC]hD]hG]uhINhJhh4]ubeubh)r*}r+(h9Uh:jh;hh=hh?}r,(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r-}r.(h9Uh:hh;Nh=h[h?}r/(hD]hC]hA]hB]hG]Uentries]r0(h^X5addReader() (circuits.core.pollers.BasePoller method)h Utr1auhINhJhh4]ubhx)r2}r3(h9Uh:hh;Nh=h{h?}r4(h}h~XpyhD]hC]hA]hB]hG]hXmethodr5hj5uhINhJhh4]r6(h)r7}r8(h9X BasePoller.addReader(source, fd)h:j2h;hh=hh?}r9(hD]r:h ahhXcircuits.core.pollersr;r<}r=bhC]hA]hB]hG]r>h ahXBasePoller.addReaderhhhuhINhJhh4]r?(h)r@}rA(h9X addReaderh:j7h;hh=hh?}rB(hA]hB]hC]hD]hG]uhINhJhh4]rChSX addReaderrDrE}rF(h9Uh:j@ubaubh)rG}rH(h9Uh:j7h;hh=hh?}rI(hA]hB]hC]hD]hG]uhINhJhh4]rJ(h)rK}rL(h9Xsourceh?}rM(hA]hB]hC]hD]hG]uh:jGh4]rNhSXsourcerOrP}rQ(h9Uh:jKubah=hubh)rR}rS(h9Xfdh?}rT(hA]hB]hC]hD]hG]uh:jGh4]rUhSXfdrVrW}rX(h9Uh:jRubah=hubeubeubh)rY}rZ(h9Uh:j2h;hh=hh?}r[(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r\}r](h9Uh:hh;Nh=h[h?}r^(hD]hC]hA]hB]hG]Uentries]r_(h^X5addWriter() (circuits.core.pollers.BasePoller method)hUtr`auhINhJhh4]ubhx)ra}rb(h9Uh:hh;Nh=h{h?}rc(h}h~XpyhD]hC]hA]hB]hG]hXmethodrdhjduhINhJhh4]re(h)rf}rg(h9X BasePoller.addWriter(source, fd)h:jah;hh=hh?}rh(hD]rihahhXcircuits.core.pollersrjrk}rlbhC]hA]hB]hG]rmhahXBasePoller.addWriterhhhuhINhJhh4]rn(h)ro}rp(h9X addWriterh:jfh;hh=hh?}rq(hA]hB]hC]hD]hG]uhINhJhh4]rrhSX addWriterrsrt}ru(h9Uh:joubaubh)rv}rw(h9Uh:jfh;hh=hh?}rx(hA]hB]hC]hD]hG]uhINhJhh4]ry(h)rz}r{(h9Xsourceh?}r|(hA]hB]hC]hD]hG]uh:jvh4]r}hSXsourcer~r}r(h9Uh:jzubah=hubh)r}r(h9Xfdh?}r(hA]hB]hC]hD]hG]uh:jvh4]rhSXfdrr}r(h9Uh:jubah=hubeubeubh)r}r(h9Uh:jah;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r}r(h9Uh:hh;Nh=h[h?}r(hD]hC]hA]hB]hG]Uentries]r(h^X8removeReader() (circuits.core.pollers.BasePoller method)hUtrauhINhJhh4]ubhx)r}r(h9Uh:hh;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hXmethodrhjuhINhJhh4]r(h)r}r(h9XBasePoller.removeReader(fd)h:jh;hh=hh?}r(hD]rhahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rhahXBasePoller.removeReaderhhhuhINhJhh4]r(h)r}r(h9X removeReaderh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSX removeReaderrr}r(h9Uh:jubaubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rh)r}r(h9Xfdh?}r(hA]hB]hC]hD]hG]uh:jh4]rhSXfdrr}r(h9Uh:jubah=hubaubeubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r}r(h9Uh:hh;Nh=h[h?}r(hD]hC]hA]hB]hG]Uentries]r(h^X8removeWriter() (circuits.core.pollers.BasePoller method)h)UtrauhINhJhh4]ubhx)r}r(h9Uh:hh;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hXmethodrhjuhINhJhh4]r(h)r}r(h9XBasePoller.removeWriter(fd)h:jh;hh=hh?}r(hD]rh)ahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rh)ahXBasePoller.removeWriterhhhuhINhJhh4]r(h)r}r(h9X removeWriterh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSX removeWriterrr}r(h9Uh:jubaubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rh)r}r(h9Xfdh?}r(hA]hB]hC]hD]hG]uh:jh4]rhSXfdrr}r(h9Uh:jubah=hubaubeubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r}r(h9Uh:hh;Nh=h[h?}r(hD]hC]hA]hB]hG]Uentries]r(h^X5isReading() (circuits.core.pollers.BasePoller method)h$UtrauhINhJhh4]ubhx)r}r(h9Uh:hh;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hXmethodrhjuhINhJhh4]r(h)r}r(h9XBasePoller.isReading(fd)h:jh;hh=hh?}r(hD]rh$ahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rh$ahXBasePoller.isReadinghhhuhINhJhh4]r(h)r}r(h9X isReadingh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSX isReadingrr}r(h9Uh:jubaubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rh)r}r(h9Xfdh?}r(hA]hB]hC]hD]hG]uh:jh4]rhSXfdrr}r(h9Uh:jubah=hubaubeubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r}r(h9Uh:hh;Nh=h[h?}r(hD]hC]hA]hB]hG]Uentries]r(h^X5isWriting() (circuits.core.pollers.BasePoller method)hUtrauhINhJhh4]ubhx)r}r (h9Uh:hh;Nh=h{h?}r (h}h~XpyhD]hC]hA]hB]hG]hXmethodr hj uhINhJhh4]r (h)r }r(h9XBasePoller.isWriting(fd)h:jh;hh=hh?}r(hD]rhahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rhahXBasePoller.isWritinghhhuhINhJhh4]r(h)r}r(h9X isWritingh:j h;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSX isWritingrr}r(h9Uh:jubaubh)r}r(h9Uh:j h;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]r h)r!}r"(h9Xfdh?}r#(hA]hB]hC]hD]hG]uh:jh4]r$hSXfdr%r&}r'(h9Uh:j!ubah=hubaubeubh)r(}r)(h9Uh:jh;hh=hh?}r*(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r+}r,(h9Uh:hh;Nh=h[h?}r-(hD]hC]hA]hB]hG]Uentries]r.(h^X3discard() (circuits.core.pollers.BasePoller method)h%Utr/auhINhJhh4]ubhx)r0}r1(h9Uh:hh;Nh=h{h?}r2(h}h~XpyhD]hC]hA]hB]hG]hXmethodr3hj3uhINhJhh4]r4(h)r5}r6(h9XBasePoller.discard(fd)h:j0h;hh=hh?}r7(hD]r8h%ahhXcircuits.core.pollersr9r:}r;bhC]hA]hB]hG]r<h%ahXBasePoller.discardhhhuhINhJhh4]r=(h)r>}r?(h9Xdiscardh:j5h;hh=hh?}r@(hA]hB]hC]hD]hG]uhINhJhh4]rAhSXdiscardrBrC}rD(h9Uh:j>ubaubh)rE}rF(h9Uh:j5h;hh=hh?}rG(hA]hB]hC]hD]hG]uhINhJhh4]rHh)rI}rJ(h9Xfdh?}rK(hA]hB]hC]hD]hG]uh:jEh4]rLhSXfdrMrN}rO(h9Uh:jIubah=hubaubeubh)rP}rQ(h9Uh:j0h;hh=hh?}rR(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)rS}rT(h9Uh:hh;Nh=h[h?}rU(hD]hC]hA]hB]hG]Uentries]rV(h^X5getTarget() (circuits.core.pollers.BasePoller method)h&UtrWauhINhJhh4]ubhx)rX}rY(h9Uh:hh;Nh=h{h?}rZ(h}h~XpyhD]hC]hA]hB]hG]hXmethodr[hj[uhINhJhh4]r\(h)r]}r^(h9XBasePoller.getTarget(fd)h:jXh;hh=hh?}r_(hD]r`h&ahhXcircuits.core.pollersrarb}rcbhC]hA]hB]hG]rdh&ahXBasePoller.getTargethhhuhINhJhh4]re(h)rf}rg(h9X getTargeth:j]h;hh=hh?}rh(hA]hB]hC]hD]hG]uhINhJhh4]rihSX getTargetrjrk}rl(h9Uh:jfubaubh)rm}rn(h9Uh:j]h;hh=hh?}ro(hA]hB]hC]hD]hG]uhINhJhh4]rph)rq}rr(h9Xfdh?}rs(hA]hB]hC]hD]hG]uh:jmh4]rthSXfdrurv}rw(h9Uh:jqubah=hubaubeubh)rx}ry(h9Uh:jXh;hh=hh?}rz(hA]hB]hC]hD]hG]uhINhJhh4]ubeubeubeubhW)r{}r|(h9Uh:h7h;Nh=h[h?}r}(hD]hC]hA]hB]hG]Uentries]r~(h^X'Select (class in circuits.core.pollers)hUtrauhINhJhh4]ubhx)r}r(h9Uh:h7h;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hXclassrhjuhINhJhh4]r(h)r}r(h9XSelect(channel='select')h:jh;hh=hh?}r(hD]rhahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rhahXSelectrhUhuhINhJhh4]r(h)r}r(h9Xclass h:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSXclass rr}r(h9Uh:jubaubh)r}r(h9Xcircuits.core.pollers.h:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSXcircuits.core.pollers.rr}r(h9Uh:jubaubh)r}r(h9jh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSXSelectrr}r(h9Uh:jubaubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rh)r}r(h9Xchannel='select'h?}r(hA]hB]hC]hD]hG]uh:jh4]rhSXchannel='select'rr}r(h9Uh:jubah=hubaubeubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]r(h`)r}r(h9X0Bases: :class:`circuits.core.pollers.BasePoller`h:jh;hh=heh?}r(hA]hB]hC]hD]hG]uhIKhJhh4]r(hSXBases: rr}r(h9XBases: h:jubh)r}r(h9X):class:`circuits.core.pollers.BasePoller`rh:jh;Nh=hh?}r(UreftypeXclasshӉhX circuits.core.pollers.BasePollerU refdomainXpyrhD]hC]U refexplicithA]hB]hG]hhhjhhuhINh4]rh)r}r(h9jh?}r(hA]hB]r(hjXpy-classrehC]hD]hG]uh:jh4]rhSX circuits.core.pollers.BasePollerrr}r(h9Uh:jubah=hubaubeubh`)r}r(h9X*Select(...) -> new Select Poller Componentrh:jh;X_/home/prologic/work/circuits/circuits/core/pollers.py:docstring of circuits.core.pollers.Selectrh=heh?}r(hA]hB]hC]hD]hG]uhIKhJhh4]rhSX*Select(...) -> new Select Poller Componentrr}r(h9jh:jubaubh`)r}r(h9XCreates a new Select Poller Component that uses the select poller implementation. This poller is not recommended but is available for legacy reasons as most systems implement select-based polling for backwards compatibility.rh:jh;jh=heh?}r(hA]hB]hC]hD]hG]uhIKhJhh4]rhSXCreates a new Select Poller Component that uses the select poller implementation. This poller is not recommended but is available for legacy reasons as most systems implement select-based polling for backwards compatibility.rr}r(h9jh:jubaubhW)r}r(h9Uh:jh;Nh=h[h?}r(hD]hC]hA]hB]hG]Uentries]r(h^X0channel (circuits.core.pollers.Select attribute)hUtrauhINhJhh4]ubhx)r}r(h9Uh:jh;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hX attributerhjuhINhJhh4]r(h)r}r(h9XSelect.channelh:jh;hh=hh?}r(hD]rhahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rhahXSelect.channelhjhuhINhJhh4]r(h)r}r(h9Xchannelh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSXchannelrr}r(h9Uh:jubaubh)r}r(h9X = 'select'h:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSX = 'select'rr}r(h9Uh:jubaubeubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]ubeubeubeubhW)r}r(h9Uh:h7h;Nh=h[h?}r(hD]hC]hA]hB]hG]Uentries]r(h^X%Poll (class in circuits.core.pollers)h'UtrauhINhJhh4]ubhx)r}r(h9Uh:h7h;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hXclassrhjuhINhJhh4]r(h)r}r (h9XPoll(channel='poll')h:jh;hh=hh?}r (hD]r h'ahhXcircuits.core.pollersr r }rbhC]hA]hB]hG]rh'ahXPollrhUhuhINhJhh4]r(h)r}r(h9Xclass h:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSXclass rr}r(h9Uh:jubaubh)r}r(h9Xcircuits.core.pollers.h:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSXcircuits.core.pollers.rr}r(h9Uh:jubaubh)r }r!(h9jh:jh;hh=hh?}r"(hA]hB]hC]hD]hG]uhINhJhh4]r#hSXPollr$r%}r&(h9Uh:j ubaubh)r'}r((h9Uh:jh;hh=hh?}r)(hA]hB]hC]hD]hG]uhINhJhh4]r*h)r+}r,(h9Xchannel='poll'h?}r-(hA]hB]hC]hD]hG]uh:j'h4]r.hSXchannel='poll'r/r0}r1(h9Uh:j+ubah=hubaubeubh)r2}r3(h9Uh:jh;hh=hh?}r4(hA]hB]hC]hD]hG]uhINhJhh4]r5(h`)r6}r7(h9X0Bases: :class:`circuits.core.pollers.BasePoller`h:j2h;hh=heh?}r8(hA]hB]hC]hD]hG]uhIKhJhh4]r9(hSXBases: r:r;}r<(h9XBases: h:j6ubh)r=}r>(h9X):class:`circuits.core.pollers.BasePoller`r?h:j6h;Nh=hh?}r@(UreftypeXclasshӉhX circuits.core.pollers.BasePollerU refdomainXpyrAhD]hC]U refexplicithA]hB]hG]hhhjhhuhINh4]rBh)rC}rD(h9j?h?}rE(hA]hB]rF(hjAXpy-classrGehC]hD]hG]uh:j=h4]rHhSX circuits.core.pollers.BasePollerrIrJ}rK(h9Uh:jCubah=hubaubeubh`)rL}rM(h9X&Poll(...) -> new Poll Poller ComponentrNh:j2h;X]/home/prologic/work/circuits/circuits/core/pollers.py:docstring of circuits.core.pollers.PollrOh=heh?}rP(hA]hB]hC]hD]hG]uhIKhJhh4]rQhSX&Poll(...) -> new Poll Poller ComponentrRrS}rT(h9jNh:jLubaubh`)rU}rV(h9XMCreates a new Poll Poller Component that uses the poll poller implementation.rWh:j2h;jOh=heh?}rX(hA]hB]hC]hD]hG]uhIKhJhh4]rYhSXMCreates a new Poll Poller Component that uses the poll poller implementation.rZr[}r\(h9jWh:jUubaubhW)r]}r^(h9Uh:j2h;Nh=h[h?}r_(hD]hC]hA]hB]hG]Uentries]r`(h^X.channel (circuits.core.pollers.Poll attribute)hUtraauhINhJhh4]ubhx)rb}rc(h9Uh:j2h;Nh=h{h?}rd(h}h~XpyhD]hC]hA]hB]hG]hX attributerehjeuhINhJhh4]rf(h)rg}rh(h9X Poll.channelh:jbh;hh=hh?}ri(hD]rjhahhXcircuits.core.pollersrkrl}rmbhC]hA]hB]hG]rnhahX Poll.channelhjhuhINhJhh4]ro(h)rp}rq(h9Xchannelh:jgh;hh=hh?}rr(hA]hB]hC]hD]hG]uhINhJhh4]rshSXchannelrtru}rv(h9Uh:jpubaubh)rw}rx(h9X = 'poll'h:jgh;hh=hh?}ry(hA]hB]hC]hD]hG]uhINhJhh4]rzhSX = 'poll'r{r|}r}(h9Uh:jwubaubeubh)r~}r(h9Uh:jbh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r}r(h9Uh:j2h;Nh=h[h?}r(hD]hC]hA]hB]hG]Uentries]r(h^X/addReader() (circuits.core.pollers.Poll method)hUtrauhINhJhh4]ubhx)r}r(h9Uh:j2h;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hXmethodrhjuhINhJhh4]r(h)r}r(h9XPoll.addReader(source, fd)h:jh;hh=hh?}r(hD]rhahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rhahXPoll.addReaderhjhuhINhJhh4]r(h)r}r(h9X addReaderh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSX addReaderrr}r(h9Uh:jubaubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]r(h)r}r(h9Xsourceh?}r(hA]hB]hC]hD]hG]uh:jh4]rhSXsourcerr}r(h9Uh:jubah=hubh)r}r(h9Xfdh?}r(hA]hB]hC]hD]hG]uh:jh4]rhSXfdrr}r(h9Uh:jubah=hubeubeubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r}r(h9Uh:j2h;Nh=h[h?}r(hD]hC]hA]hB]hG]Uentries]r(h^X/addWriter() (circuits.core.pollers.Poll method)hUtrauhINhJhh4]ubhx)r}r(h9Uh:j2h;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hXmethodrhjuhINhJhh4]r(h)r}r(h9XPoll.addWriter(source, fd)h:jh;hh=hh?}r(hD]rhahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rhahXPoll.addWriterhjhuhINhJhh4]r(h)r}r(h9X addWriterh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSX addWriterrr}r(h9Uh:jubaubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]r(h)r}r(h9Xsourceh?}r(hA]hB]hC]hD]hG]uh:jh4]rhSXsourcerr}r(h9Uh:jubah=hubh)r}r(h9Xfdh?}r(hA]hB]hC]hD]hG]uh:jh4]rhSXfdrr}r(h9Uh:jubah=hubeubeubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r}r(h9Uh:j2h;Nh=h[h?}r(hD]hC]hA]hB]hG]Uentries]r(h^X2removeReader() (circuits.core.pollers.Poll method)hUtrauhINhJhh4]ubhx)r}r(h9Uh:j2h;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hXmethodrhjuhINhJhh4]r(h)r}r(h9XPoll.removeReader(fd)h:jh;hh=hh?}r(hD]rhahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rhahXPoll.removeReaderhjhuhINhJhh4]r(h)r}r(h9X removeReaderh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSX removeReaderrr}r(h9Uh:jubaubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rh)r}r(h9Xfdh?}r(hA]hB]hC]hD]hG]uh:jh4]rhSXfdrr}r(h9Uh:jubah=hubaubeubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r}r(h9Uh:j2h;Nh=h[h?}r (hD]hC]hA]hB]hG]Uentries]r (h^X2removeWriter() (circuits.core.pollers.Poll method)h Utr auhINhJhh4]ubhx)r }r (h9Uh:j2h;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hXmethodrhjuhINhJhh4]r(h)r}r(h9XPoll.removeWriter(fd)h:j h;hh=hh?}r(hD]rh ahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rh ahXPoll.removeWriterhjhuhINhJhh4]r(h)r}r(h9X removeWriterh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSX removeWriterrr}r (h9Uh:jubaubh)r!}r"(h9Uh:jh;hh=hh?}r#(hA]hB]hC]hD]hG]uhINhJhh4]r$h)r%}r&(h9Xfdh?}r'(hA]hB]hC]hD]hG]uh:j!h4]r(hSXfdr)r*}r+(h9Uh:j%ubah=hubaubeubh)r,}r-(h9Uh:j h;hh=hh?}r.(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r/}r0(h9Uh:j2h;Nh=h[h?}r1(hD]hC]hA]hB]hG]Uentries]r2(h^X-discard() (circuits.core.pollers.Poll method)h Utr3auhINhJhh4]ubhx)r4}r5(h9Uh:j2h;Nh=h{h?}r6(h}h~XpyhD]hC]hA]hB]hG]hXmethodr7hj7uhINhJhh4]r8(h)r9}r:(h9XPoll.discard(fd)h:j4h;hh=hh?}r;(hD]r<h ahhXcircuits.core.pollersr=r>}r?bhC]hA]hB]hG]r@h ahX Poll.discardhjhuhINhJhh4]rA(h)rB}rC(h9Xdiscardh:j9h;hh=hh?}rD(hA]hB]hC]hD]hG]uhINhJhh4]rEhSXdiscardrFrG}rH(h9Uh:jBubaubh)rI}rJ(h9Uh:j9h;hh=hh?}rK(hA]hB]hC]hD]hG]uhINhJhh4]rLh)rM}rN(h9Xfdh?}rO(hA]hB]hC]hD]hG]uh:jIh4]rPhSXfdrQrR}rS(h9Uh:jMubah=hubaubeubh)rT}rU(h9Uh:j4h;hh=hh?}rV(hA]hB]hC]hD]hG]uhINhJhh4]ubeubeubeubhW)rW}rX(h9Uh:h7h;Nh=h[h?}rY(hD]hC]hA]hB]hG]Uentries]rZ(h^X&EPoll (class in circuits.core.pollers)h(Utr[auhINhJhh4]ubhx)r\}r](h9Uh:h7h;Nh=h{h?}r^(h}h~XpyhD]hC]hA]hB]hG]hXclassr_hj_uhINhJhh4]r`(h)ra}rb(h9XEPoll(channel='epoll')h:j\h;hh=hh?}rc(hD]rdh(ahhXcircuits.core.pollersrerf}rgbhC]hA]hB]hG]rhh(ahXEPollrihUhuhINhJhh4]rj(h)rk}rl(h9Xclass h:jah;hh=hh?}rm(hA]hB]hC]hD]hG]uhINhJhh4]rnhSXclass rorp}rq(h9Uh:jkubaubh)rr}rs(h9Xcircuits.core.pollers.h:jah;hh=hh?}rt(hA]hB]hC]hD]hG]uhINhJhh4]ruhSXcircuits.core.pollers.rvrw}rx(h9Uh:jrubaubh)ry}rz(h9jih:jah;hh=hh?}r{(hA]hB]hC]hD]hG]uhINhJhh4]r|hSXEPollr}r~}r(h9Uh:jyubaubh)r}r(h9Uh:jah;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rh)r}r(h9Xchannel='epoll'h?}r(hA]hB]hC]hD]hG]uh:jh4]rhSXchannel='epoll'rr}r(h9Uh:jubah=hubaubeubh)r}r(h9Uh:j\h;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]r(h`)r}r(h9X0Bases: :class:`circuits.core.pollers.BasePoller`h:jh;hh=heh?}r(hA]hB]hC]hD]hG]uhIKhJhh4]r(hSXBases: rr}r(h9XBases: h:jubh)r}r(h9X):class:`circuits.core.pollers.BasePoller`rh:jh;Nh=hh?}r(UreftypeXclasshӉhX circuits.core.pollers.BasePollerU refdomainXpyrhD]hC]U refexplicithA]hB]hG]hhhjihhuhINh4]rh)r}r(h9jh?}r(hA]hB]r(hjXpy-classrehC]hD]hG]uh:jh4]rhSX circuits.core.pollers.BasePollerrr}r(h9Uh:jubah=hubaubeubh`)r}r(h9X(EPoll(...) -> new EPoll Poller Componentrh:jh;X^/home/prologic/work/circuits/circuits/core/pollers.py:docstring of circuits.core.pollers.EPollrh=heh?}r(hA]hB]hC]hD]hG]uhIKhJhh4]rhSX(EPoll(...) -> new EPoll Poller Componentrr}r(h9jh:jubaubh`)r}r(h9XOCreates a new EPoll Poller Component that uses the epoll poller implementation.rh:jh;jh=heh?}r(hA]hB]hC]hD]hG]uhIKhJhh4]rhSXOCreates a new EPoll Poller Component that uses the epoll poller implementation.rr}r(h9jh:jubaubhW)r}r(h9Uh:jh;Nh=h[h?}r(hD]hC]hA]hB]hG]Uentries]r(h^X/channel (circuits.core.pollers.EPoll attribute)h UtrauhINhJhh4]ubhx)r}r(h9Uh:jh;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hX attributerhjuhINhJhh4]r(h)r}r(h9X EPoll.channelh:jh;hh=hh?}r(hD]rh ahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rh ahX EPoll.channelhjihuhINhJhh4]r(h)r}r(h9Xchannelh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSXchannelrr}r(h9Uh:jubaubh)r}r(h9X = 'epoll'h:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSX = 'epoll'rr}r(h9Uh:jubaubeubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r}r(h9Uh:jh;Nh=h[h?}r(hD]hC]hA]hB]hG]Uentries]r(h^X0addReader() (circuits.core.pollers.EPoll method)hUtrauhINhJhh4]ubhx)r}r(h9Uh:jh;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hXmethodrhjuhINhJhh4]r(h)r}r(h9XEPoll.addReader(source, fd)h:jh;hh=hh?}r(hD]rhahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rhahXEPoll.addReaderhjihuhINhJhh4]r(h)r}r(h9X addReaderh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSX addReaderrr}r(h9Uh:jubaubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]r(h)r}r(h9Xsourceh?}r(hA]hB]hC]hD]hG]uh:jh4]rhSXsourcerr}r(h9Uh:jubah=hubh)r}r(h9Xfdh?}r(hA]hB]hC]hD]hG]uh:jh4]rhSXfdrr}r(h9Uh:jubah=hubeubeubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r }r (h9Uh:jh;Nh=h[h?}r (hD]hC]hA]hB]hG]Uentries]r (h^X0addWriter() (circuits.core.pollers.EPoll method)h#Utr auhINhJhh4]ubhx)r}r(h9Uh:jh;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hXmethodrhjuhINhJhh4]r(h)r}r(h9XEPoll.addWriter(source, fd)h:jh;hh=hh?}r(hD]rh#ahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rh#ahXEPoll.addWriterhjihuhINhJhh4]r(h)r}r(h9X addWriterh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSX addWriterr r!}r"(h9Uh:jubaubh)r#}r$(h9Uh:jh;hh=hh?}r%(hA]hB]hC]hD]hG]uhINhJhh4]r&(h)r'}r((h9Xsourceh?}r)(hA]hB]hC]hD]hG]uh:j#h4]r*hSXsourcer+r,}r-(h9Uh:j'ubah=hubh)r.}r/(h9Xfdh?}r0(hA]hB]hC]hD]hG]uh:j#h4]r1hSXfdr2r3}r4(h9Uh:j.ubah=hubeubeubh)r5}r6(h9Uh:jh;hh=hh?}r7(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r8}r9(h9Uh:jh;Nh=h[h?}r:(hD]hC]hA]hB]hG]Uentries]r;(h^X3removeReader() (circuits.core.pollers.EPoll method)hUtr<auhINhJhh4]ubhx)r=}r>(h9Uh:jh;Nh=h{h?}r?(h}h~XpyhD]hC]hA]hB]hG]hXmethodr@hj@uhINhJhh4]rA(h)rB}rC(h9XEPoll.removeReader(fd)h:j=h;hh=hh?}rD(hD]rEhahhXcircuits.core.pollersrFrG}rHbhC]hA]hB]hG]rIhahXEPoll.removeReaderhjihuhINhJhh4]rJ(h)rK}rL(h9X removeReaderh:jBh;hh=hh?}rM(hA]hB]hC]hD]hG]uhINhJhh4]rNhSX removeReaderrOrP}rQ(h9Uh:jKubaubh)rR}rS(h9Uh:jBh;hh=hh?}rT(hA]hB]hC]hD]hG]uhINhJhh4]rUh)rV}rW(h9Xfdh?}rX(hA]hB]hC]hD]hG]uh:jRh4]rYhSXfdrZr[}r\(h9Uh:jVubah=hubaubeubh)r]}r^(h9Uh:j=h;hh=hh?}r_(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r`}ra(h9Uh:jh;Nh=h[h?}rb(hD]hC]hA]hB]hG]Uentries]rc(h^X3removeWriter() (circuits.core.pollers.EPoll method)hUtrdauhINhJhh4]ubhx)re}rf(h9Uh:jh;Nh=h{h?}rg(h}h~XpyhD]hC]hA]hB]hG]hXmethodrhhjhuhINhJhh4]ri(h)rj}rk(h9XEPoll.removeWriter(fd)h:jeh;hh=hh?}rl(hD]rmhahhXcircuits.core.pollersrnro}rpbhC]hA]hB]hG]rqhahXEPoll.removeWriterhjihuhINhJhh4]rr(h)rs}rt(h9X removeWriterh:jjh;hh=hh?}ru(hA]hB]hC]hD]hG]uhINhJhh4]rvhSX removeWriterrwrx}ry(h9Uh:jsubaubh)rz}r{(h9Uh:jjh;hh=hh?}r|(hA]hB]hC]hD]hG]uhINhJhh4]r}h)r~}r(h9Xfdh?}r(hA]hB]hC]hD]hG]uh:jzh4]rhSXfdrr}r(h9Uh:j~ubah=hubaubeubh)r}r(h9Uh:jeh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r}r(h9Uh:jh;Nh=h[h?}r(hD]hC]hA]hB]hG]Uentries]r(h^X.discard() (circuits.core.pollers.EPoll method)h UtrauhINhJhh4]ubhx)r}r(h9Uh:jh;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hXmethodrhjuhINhJhh4]r(h)r}r(h9XEPoll.discard(fd)h:jh;hh=hh?}r(hD]rh ahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rh ahX EPoll.discardhjihuhINhJhh4]r(h)r}r(h9Xdiscardh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSXdiscardrr}r(h9Uh:jubaubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rh)r}r(h9Xfdh?}r(hA]hB]hC]hD]hG]uh:jh4]rhSXfdrr}r(h9Uh:jubah=hubaubeubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]ubeubeubeubhW)r}r(h9Uh:h7h;Nh=h[h?}r(hD]hC]hA]hB]hG]Uentries]r(h^X'KQueue (class in circuits.core.pollers)hUtrauhINhJhh4]ubhx)r}r(h9Uh:h7h;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hXclassrhjuhINhJhh4]r(h)r}r(h9XKQueue(channel='kqueue')rh:jh;hh=hh?}r(hD]rhahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rhahXKQueuerhUhuhINhJhh4]r(h)r}r(h9Xclass h:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSXclass rr}r(h9Uh:jubaubh)r}r(h9Xcircuits.core.pollers.h:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSXcircuits.core.pollers.rr}r(h9Uh:jubaubh)r}r(h9jh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSXKQueuerr}r(h9Uh:jubaubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rh)r}r(h9Xchannel='kqueue'h?}r(hA]hB]hC]hD]hG]uh:jh4]rhSXchannel='kqueue'rr}r(h9Uh:jubah=hubaubeubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]r(h`)r}r(h9X0Bases: :class:`circuits.core.pollers.BasePoller`rh:jh;hh=heh?}r(hA]hB]hC]hD]hG]uhIKhJhh4]r(hSXBases: rr}r(h9XBases: h:jubh)r}r(h9X):class:`circuits.core.pollers.BasePoller`rh:jh;Nh=hh?}r(UreftypeXclasshӉhX circuits.core.pollers.BasePollerU refdomainXpyrhD]hC]U refexplicithA]hB]hG]hhhjhhuhINh4]rh)r}r(h9jh?}r(hA]hB]r(hjXpy-classrehC]hD]hG]uh:jh4]rhSX circuits.core.pollers.BasePollerrr}r(h9Uh:jubah=hubaubeubh`)r}r(h9X*KQueue(...) -> new KQueue Poller Componentrh:jh;X_/home/prologic/work/circuits/circuits/core/pollers.py:docstring of circuits.core.pollers.KQueuerh=heh?}r(hA]hB]hC]hD]hG]uhIKhJhh4]rhSX*KQueue(...) -> new KQueue Poller Componentrr}r(h9jh:jubaubh`)r }r (h9XQCreates a new KQueue Poller Component that uses the kqueue poller implementation.r h:jh;jh=heh?}r (hA]hB]hC]hD]hG]uhIKhJhh4]r hSXQCreates a new KQueue Poller Component that uses the kqueue poller implementation.rr}r(h9j h:j ubaubhW)r}r(h9Uh:jh;Nh=h[h?}r(hD]hC]hA]hB]hG]Uentries]r(h^X0channel (circuits.core.pollers.KQueue attribute)hUtrauhINhJhh4]ubhx)r}r(h9Uh:jh;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hX attributerhjuhINhJhh4]r(h)r}r(h9XKQueue.channelh:jh;hh=hh?}r(hD]rhahhXcircuits.core.pollersrr }r!bhC]hA]hB]hG]r"hahXKQueue.channelhjhuhINhJhh4]r#(h)r$}r%(h9Xchannelh:jh;hh=hh?}r&(hA]hB]hC]hD]hG]uhINhJhh4]r'hSXchannelr(r)}r*(h9Uh:j$ubaubh)r+}r,(h9X = 'kqueue'h:jh;hh=hh?}r-(hA]hB]hC]hD]hG]uhINhJhh4]r.hSX = 'kqueue'r/r0}r1(h9Uh:j+ubaubeubh)r2}r3(h9Uh:jh;hh=hh?}r4(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r5}r6(h9Uh:jh;Nh=h[h?}r7(hD]hC]hA]hB]hG]Uentries]r8(h^X1addReader() (circuits.core.pollers.KQueue method)hUtr9auhINhJhh4]ubhx)r:}r;(h9Uh:jh;Nh=h{h?}r<(h}h~XpyhD]hC]hA]hB]hG]hXmethodr=hj=uhINhJhh4]r>(h)r?}r@(h9XKQueue.addReader(source, sock)h:j:h;hh=hh?}rA(hD]rBhahhXcircuits.core.pollersrCrD}rEbhC]hA]hB]hG]rFhahXKQueue.addReaderhjhuhINhJhh4]rG(h)rH}rI(h9X addReaderh:j?h;hh=hh?}rJ(hA]hB]hC]hD]hG]uhINhJhh4]rKhSX addReaderrLrM}rN(h9Uh:jHubaubh)rO}rP(h9Uh:j?h;hh=hh?}rQ(hA]hB]hC]hD]hG]uhINhJhh4]rR(h)rS}rT(h9Xsourceh?}rU(hA]hB]hC]hD]hG]uh:jOh4]rVhSXsourcerWrX}rY(h9Uh:jSubah=hubh)rZ}r[(h9Xsockh?}r\(hA]hB]hC]hD]hG]uh:jOh4]r]hSXsockr^r_}r`(h9Uh:jZubah=hubeubeubh)ra}rb(h9Uh:j:h;hh=hh?}rc(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)rd}re(h9Uh:jh;Nh=h[h?}rf(hD]hC]hA]hB]hG]Uentries]rg(h^X1addWriter() (circuits.core.pollers.KQueue method)hUtrhauhINhJhh4]ubhx)ri}rj(h9Uh:jh;Nh=h{h?}rk(h}h~XpyhD]hC]hA]hB]hG]hXmethodrlhjluhINhJhh4]rm(h)rn}ro(h9XKQueue.addWriter(source, sock)h:jih;hh=hh?}rp(hD]rqhahhXcircuits.core.pollersrrrs}rtbhC]hA]hB]hG]ruhahXKQueue.addWriterhjhuhINhJhh4]rv(h)rw}rx(h9X addWriterh:jnh;hh=hh?}ry(hA]hB]hC]hD]hG]uhINhJhh4]rzhSX addWriterr{r|}r}(h9Uh:jwubaubh)r~}r(h9Uh:jnh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]r(h)r}r(h9Xsourceh?}r(hA]hB]hC]hD]hG]uh:j~h4]rhSXsourcerr}r(h9Uh:jubah=hubh)r}r(h9Xsockh?}r(hA]hB]hC]hD]hG]uh:j~h4]rhSXsockrr}r(h9Uh:jubah=hubeubeubh)r}r(h9Uh:jih;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r}r(h9Uh:jh;Nh=h[h?}r(hD]hC]hA]hB]hG]Uentries]r(h^X4removeReader() (circuits.core.pollers.KQueue method)h"UtrauhINhJhh4]ubhx)r}r(h9Uh:jh;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hXmethodrhjuhINhJhh4]r(h)r}r(h9XKQueue.removeReader(sock)h:jh;hh=hh?}r(hD]rh"ahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rh"ahXKQueue.removeReaderhjhuhINhJhh4]r(h)r}r(h9X removeReaderh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSX removeReaderrr}r(h9Uh:jubaubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rh)r}r(h9Xsockh?}r(hA]hB]hC]hD]hG]uh:jh4]rhSXsockrr}r(h9Uh:jubah=hubaubeubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r}r(h9Uh:jh;Nh=h[h?}r(hD]hC]hA]hB]hG]Uentries]r(h^X4removeWriter() (circuits.core.pollers.KQueue method)hUtrauhINhJhh4]ubhx)r}r(h9Uh:jh;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hXmethodrhjuhINhJhh4]r(h)r}r(h9XKQueue.removeWriter(sock)h:jh;hh=hh?}r(hD]rhahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rhahXKQueue.removeWriterhjhuhINhJhh4]r(h)r}r(h9X removeWriterh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSX removeWriterrr}r(h9Uh:jubaubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rh)r}r(h9Xsockh?}r(hA]hB]hC]hD]hG]uh:jh4]rhSXsockrr}r(h9Uh:jubah=hubaubeubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]ubeubhW)r}r(h9Uh:jh;Nh=h[h?}r(hD]hC]hA]hB]hG]Uentries]r(h^X/discard() (circuits.core.pollers.KQueue method)hUtrauhINhJhh4]ubhx)r}r(h9Uh:jh;Nh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hXmethodrhjuhINhJhh4]r(h)r}r(h9XKQueue.discard(sock)rh:jh;hh=hh?}r(hD]rhahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rhahXKQueue.discardhjhuhINhJhh4]r(h)r}r(h9Xdiscardh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rhSXdiscardrr}r(h9Uh:jubaubh)r}r(h9Uh:jh;hh=hh?}r(hA]hB]hC]hD]hG]uhINhJhh4]rh)r}r(h9Xsockh?}r(hA]hB]hC]hD]hG]uh:jh4]rhSXsockrr}r(h9Uh:jubah=hubaubeubh)r }r (h9Uh:jh;hh=hh?}r (hA]hB]hC]hD]hG]uhINhJhh4]ubeubeubeubhW)r }r (h9Uh:h7h;Uh=h[h?}r(hD]hC]hA]hB]hG]Uentries]r(h^X(Poller (in module circuits.core.pollers)h!UtrauhINhJhh4]ubhx)r}r(h9Uh:h7h;Uh=h{h?}r(h}h~XpyhD]hC]hA]hB]hG]hX attributerhjuhINhJhh4]r(h)r}r(h9XPollerrh:jh;hh=hh?}r(hD]rh!ahhXcircuits.core.pollersrr}rbhC]hA]hB]hG]rh!ahjhUhuhINhJhh4]r(h)r }r!(h9Xcircuits.core.pollers.h:jh;hh=hh?}r"(hA]hB]hC]hD]hG]uhINhJhh4]r#hSXcircuits.core.pollers.r$r%}r&(h9Uh:j ubaubh)r'}r((h9jh:jh;hh=hh?}r)(hA]hB]hC]hD]hG]uhINhJhh4]r*hSXPollerr+r,}r-(h9Uh:j'ubaubeubh)r.}r/(h9Uh:jh;hh=hh?}r0(hA]hB]hC]hD]hG]uhINhJhh4]r1h`)r2}r3(h9Xalias of :class:`Select`r4h:j.h;Uh=heh?}r5(hA]hB]hC]hD]hG]uhIKhJhh4]r6(hSX alias of r7r8}r9(h9X alias of h:j2ubh)r:}r;(h9X:class:`Select`r<h:j2h;Nh=hh?}r=(UreftypeXclasshӉhXSelectU refdomainXpyr>hD]hC]U refexplicithA]hB]hG]hhhNhhuhINh4]r?h)r@}rA(h9j<h?}rB(hA]hB]rC(hj>Xpy-classrDehC]hD]hG]uh:j:h4]rEhSXSelectrFrG}rH(h9Uh:j@ubah=hubaubeubaubeubeubah9UU transformerrINU footnote_refsrJ}rKUrefnamesrL}rMUsymbol_footnotesrN]rOUautofootnote_refsrP]rQUsymbol_footnote_refsrR]rSU citationsrT]rUhJhU current_linerVNUtransform_messagesrW]rXUreporterrYNUid_startrZKU autofootnotesr[]r\U citation_refsr]}r^Uindirect_targetsr_]r`Usettingsra(cdocutils.frontend Values rborc}rd(Ufootnote_backlinksreKUrecord_dependenciesrfNU rfc_base_urlrgUhttp://tools.ietf.org/html/rhU tracebackriUpep_referencesrjNUstrip_commentsrkNU toc_backlinksrlUentryrmU language_codernUenroU datestamprpNU report_levelrqKU _destinationrrNU halt_levelrsKU strip_classesrtNhPNUerror_encoding_error_handlerruUbackslashreplacervUdebugrwNUembed_stylesheetrxUoutput_encoding_error_handlerryUstrictrzU sectnum_xformr{KUdump_transformsr|NU docinfo_xformr}KUwarning_streamr~NUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhq;hUindexq(Usingleq?Xcircuits.io.notify (module)Xmodule-circuits.io.notifyUtq@auh*Kh+hh]ubcdocutils.nodes paragraph qA)qB}qC(hXFile Notification SupportqDhhhXR/home/prologic/work/circuits/circuits/io/notify.py:docstring of circuits.io.notifyqEhU paragraphqFh }qG(h"]h#]h$]h%]h(]uh*Kh+hh]qHh4XFile Notification SupportqIqJ}qK(hhDhhBubaubhA)qL}qM(hXAA Component wrapping the inotify API using the pyinotify library.qNhhhhEhhFh }qO(h"]h#]h$]h%]h(]uh*Kh+hh]qPh4XAA Component wrapping the inotify API using the pyinotify library.qQqR}qS(hhNhhLubaubh8)qT}qU(hUhhhNhhqhhUdesc_signatureqih }qj(h%]qkhaUmoduleqlcdocutils.nodes reprunicode qmXcircuits.io.notifyqnqo}qpbh$]h"]h#]h(]qqhaUfullnameqrXNotifyqsUclassqtUUfirstquuh*Nh+hh]qv(csphinx.addnodes desc_annotation qw)qx}qy(hXclass hhehhhhUdesc_annotationqzh }q{(h"]h#]h$]h%]h(]uh*Nh+hh]q|h4Xclass q}q~}q(hUhhxubaubcsphinx.addnodes desc_addname q)q}q(hXcircuits.io.notify.hhehhhhU desc_addnameqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qh4Xcircuits.io.notify.qq}q(hUhhubaubcsphinx.addnodes desc_name q)q}q(hhshhehhhhU desc_nameqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qh4XNotifyqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhehhhhUdesc_parameterlistqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qcsphinx.addnodes desc_parameter q)q}q(hXchannel='notify'h }q(h"]h#]h$]h%]h(]uhhh]qh4Xchannel='notify'qq}q(hUhhubahUdesc_parameterqubaubeubcsphinx.addnodes desc_content q)q}q(hUhhZhhhhU desc_contentqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]q(hA)q}q(hX6Bases: :class:`circuits.core.components.BaseComponent`qhhhU qhhFh }q(h"]h#]h$]h%]h(]uh*Kh+hh]q(h4XBases: qq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX/:class:`circuits.core.components.BaseComponent`qhhhNhU pending_xrefqh }q(UreftypeXclassUrefwarnqU reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqh%]h$]U refexplicith"]h#]h(]UrefdocqXapi/circuits.io.notifyqUpy:classqhsU py:moduleqXcircuits.io.notifyquh*Nh]qcdocutils.nodes literal q)q}q(hhh }q(h"]h#]q(UxrefqhXpy-classqeh$]h%]h(]uhhh]qh4X&circuits.core.components.BaseComponentqDžq}q(hUhhubahUliteralqubaubeubh8)q}q(hUhhhNhhqhhih }q(h%]qh ahlhmXcircuits.io.notifyqڅq}qbh$]h"]h#]h(]qh ahrXNotify.channelhthshuuh*Nh+hh]q(h)q}q(hXchannelhhhhhhh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qh4Xchannelqㅁq}q(hUhhubaubhw)q}q(hX = 'notify'hhhhhhzh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qh4X = 'notify'qꅁq}q(hUhhubaubeubh)q}q(hUhhhhhhh }q(h"]h#]h$]h%]h(]uh*Nh+hh]ubeubh8)q}q(hUhhhNhh}r?(hUhj9ubaubh)r@}rA(hUhj0hhhhhh }rB(h"]h#]h$]h%]h(]uh*Nh+hh]rC(h)rD}rE(hXpathh }rF(h"]h#]h$]h%]h(]uhj@h]rGh4XpathrHrI}rJ(hUhjDubahhubh)rK}rL(hXrecursive=Falseh }rM(h"]h#]h$]h%]h(]uhj@h]rNh4Xrecursive=FalserOrP}rQ(hUhjKubahhubeubeubh)rR}rS(hUhj+hhhhhh }rT(h"]h#]h$]h%]h(]uh*Nh+hh]ubeubeubeubeubahUU transformerrUNU footnote_refsrV}rWUrefnamesrX}rYUsymbol_footnotesrZ]r[Uautofootnote_refsr\]r]Usymbol_footnote_refsr^]r_U citationsr`]rah+hU current_linerbNUtransform_messagesrc]rdUreporterreNUid_startrfKU autofootnotesrg]rhU citation_refsri}rjUindirect_targetsrk]rlUsettingsrm(cdocutils.frontend Values rnoro}rp(Ufootnote_backlinksrqKUrecord_dependenciesrrNU rfc_base_urlrsUhttp://tools.ietf.org/html/rtU tracebackruUpep_referencesrvNUstrip_commentsrwNU toc_backlinksrxUentryryU language_coderzUenr{U datestampr|NU report_levelr}KU _destinationr~NU halt_levelrKU strip_classesrNh1NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(h hhj0h'cdocutils.nodes target r)r}r(hUhhhh;hUtargetrh }r(h"]h%]rh'ah$]Uismodh#]h(]uh*Kh+hh]ubh hhhehhuUsubstitution_namesr}rhh+h }r(h"]h%]h$]Usourcehh#]h(]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.processors.doctree0000644000014400001440000001521412425011106027105 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.web.processors.processqX)circuits.web.processors.process_multipartqXcircuits.web.processors moduleqNX*circuits.web.processors.process_urlencodedq uUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhUcircuits-web-processors-moduleqh h uUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXH/home/prologic/work/circuits/docs/source/api/circuits.web.processors.rstqUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%(Xmodule-circuits.web.processorsq&heUnamesq']q(hauUlineq)KUdocumentq*hh]q+(cdocutils.nodes title q,)q-}q.(hXcircuits.web.processors moduleq/hhhhhUtitleq0h}q1(h!]h"]h#]h$]h']uh)Kh*hh]q2cdocutils.nodes Text q3Xcircuits.web.processors moduleq4q5}q6(hh/hh-ubaubcsphinx.addnodes index q7)q8}q9(hUhhhU q:hUindexq;h}q<(h$]h#]h!]h"]h']Uentries]q=(Usingleq>X circuits.web.processors (module)Xmodule-circuits.web.processorsUtq?auh)Kh*hh]ubh7)q@}qA(hUhhhNhh;h}qB(h$]h#]h!]h"]h']Uentries]qC(h>X7process_multipart() (in module circuits.web.processors)hUtqDauh)Nh*hh]ubcsphinx.addnodes desc qE)qF}qG(hUhhhNhUdescqHh}qI(UnoindexqJUdomainqKXpyh$]h#]h!]h"]h']UobjtypeqLXfunctionqMUdesctypeqNhMuh)Nh*hh]qO(csphinx.addnodes desc_signature qP)qQ}qR(hX"process_multipart(request, params)hhFhU qShUdesc_signatureqTh}qU(h$]qVhaUmoduleqWcdocutils.nodes reprunicode qXXcircuits.web.processorsqYqZ}q[bh#]h!]h"]h']q\haUfullnameq]Xprocess_multipartq^Uclassq_UUfirstq`uh)Nh*hh]qa(csphinx.addnodes desc_addname qb)qc}qd(hXcircuits.web.processors.hhQhhShU desc_addnameqeh}qf(h!]h"]h#]h$]h']uh)Nh*hh]qgh3Xcircuits.web.processors.qhqi}qj(hUhhcubaubcsphinx.addnodes desc_name qk)ql}qm(hh^hhQhhShU desc_nameqnh}qo(h!]h"]h#]h$]h']uh)Nh*hh]qph3Xprocess_multipartqqqr}qs(hUhhlubaubcsphinx.addnodes desc_parameterlist qt)qu}qv(hUhhQhhShUdesc_parameterlistqwh}qx(h!]h"]h#]h$]h']uh)Nh*hh]qy(csphinx.addnodes desc_parameter qz)q{}q|(hXrequesth}q}(h!]h"]h#]h$]h']uhhuh]q~h3Xrequestqq}q(hUhh{ubahUdesc_parameterqubhz)q}q(hXparamsh}q(h!]h"]h#]h$]h']uhhuh]qh3Xparamsqq}q(hUhhubahhubeubeubcsphinx.addnodes desc_content q)q}q(hUhhFhhShU desc_contentqh}q(h!]h"]h#]h$]h']uh)Nh*hh]ubeubh7)q}q(hUhhhNhh;h}q(h$]h#]h!]h"]h']Uentries]q(h>X8process_urlencoded() (in module circuits.web.processors)h Utqauh)Nh*hh]ubhE)q}q(hUhhhNhhHh}q(hJhKXpyh$]h#]h!]h"]h']hLXfunctionqhNhuh)Nh*hh]q(hP)q}q(hX5process_urlencoded(request, params, encoding='utf-8')hhhhShhTh}q(h$]qh ahWhXXcircuits.web.processorsqq}qbh#]h!]h"]h']qh ah]Xprocess_urlencodedqh_Uh`uh)Nh*hh]q(hb)q}q(hXcircuits.web.processors.hhhhShheh}q(h!]h"]h#]h$]h']uh)Nh*hh]qh3Xcircuits.web.processors.qq}q(hUhhubaubhk)q}q(hhhhhhShhnh}q(h!]h"]h#]h$]h']uh)Nh*hh]qh3Xprocess_urlencodedqq}q(hUhhubaubht)q}q(hUhhhhShhwh}q(h!]h"]h#]h$]h']uh)Nh*hh]q(hz)q}q(hXrequesth}q(h!]h"]h#]h$]h']uhhh]qh3Xrequestqq}q(hUhhubahhubhz)q}q(hXparamsh}q(h!]h"]h#]h$]h']uhhh]qh3Xparamsqq}q(hUhhubahhubhz)q}q(hXencoding='utf-8'h}q(h!]h"]h#]h$]h']uhhh]qh3Xencoding='utf-8'qDžq}q(hUhhubahhubeubeubh)q}q(hUhhhhShhh}q(h!]h"]h#]h$]h']uh)Nh*hh]ubeubh7)q}q(hUhhhNhh;h}q(h$]h#]h!]h"]h']Uentries]q(h>X-process() (in module circuits.web.processors)hUtqauh)Nh*hh]ubhE)q}q(hUhhhNhhHh}q(hJhKXpyh$]h#]h!]h"]h']hLXfunctionqhNhuh)Nh*hh]q(hP)q}q(hXprocess(request, params)hhhhShhTh}q(h$]qhahWhXXcircuits.web.processorsqۅq}qbh#]h!]h"]h']qhah]Xprocessqh_Uh`uh)Nh*hh]q(hb)q}q(hXcircuits.web.processors.hhhhShheh}q(h!]h"]h#]h$]h']uh)Nh*hh]qh3Xcircuits.web.processors.q允q}q(hUhhubaubhk)q}q(hhhhhhShhnh}q(h!]h"]h#]h$]h']uh)Nh*hh]qh3Xprocessq셁q}q(hUhhubaubht)q}q(hUhhhhShhwh}q(h!]h"]h#]h$]h']uh)Nh*hh]q(hz)q}q(hXrequesth}q(h!]h"]h#]h$]h']uhhh]qh3Xrequestqq}q(hUhhubahhubhz)q}q(hXparamsh}q(h!]h"]h#]h$]h']uhhh]qh3Xparamsqq}r(hUhhubahhubeubeubh)r}r(hUhhhhShhh}r(h!]h"]h#]h$]h']uh)Nh*hh]ubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr ]r Uautofootnote_refsr ]r Usymbol_footnote_refsr ]rU citationsr]rh*hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksr KUrecord_dependenciesr!NU rfc_base_urlr"Uhttp://tools.ietf.org/html/r#U tracebackr$Upep_referencesr%NUstrip_commentsr&NU toc_backlinksr'Uentryr(U language_coder)Uenr*U datestampr+NU report_levelr,KU _destinationr-NU halt_levelr.KU strip_classesr/Nh0NUerror_encoding_error_handlerr0Ubackslashreplacer1Udebugr2NUembed_stylesheetr3Uoutput_encoding_error_handlerr4Ustrictr5U sectnum_xformr6KUdump_transformsr7NU docinfo_xformr8KUwarning_streamr9NUpep_file_url_templater:Upep-%04dr;Uexit_status_levelr<KUconfigr=NUstrict_visitorr>NUcloak_email_addressesr?Utrim_footnote_reference_spacer@UenvrANUdump_pseudo_xmlrBNUexpose_internalsrCNUsectsubtitle_xformrDU source_linkrENUrfc_referencesrFNUoutput_encodingrGUutf-8rHU source_urlrINUinput_encodingrJU utf-8-sigrKU_disable_configrLNU id_prefixrMUU tab_widthrNKUerror_encodingrOUUTF-8rPU_sourcerQhUgettext_compactrRU generatorrSNUdump_internalsrTNU smart_quotesrUU pep_base_urlrVUhttp://www.python.org/dev/peps/rWUsyntax_highlightrXUlongrYUinput_encoding_error_handlerrZj5Uauto_id_prefixr[Uidr\Udoctitle_xformr]Ustrip_elements_with_classesr^NU _config_filesr_]Ufile_insertion_enabledr`U raw_enabledraKU dump_settingsrbNubUsymbol_footnote_startrcKUidsrd}re(h&cdocutils.nodes target rf)rg}rh(hUhhhh:hUtargetrih}rj(h!]h$]rkh&ah#]Uismodh"]h']uh)Kh*hh]ubhhhhhhQh huUsubstitution_namesrl}rmhh*h}rn(h!]h$]h#]Usourcehh"]h']uU footnotesro]rpUrefidsrq}rrub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.dispatchers.xmlrpc.doctree0000644000014400001440000004632012425011104030520 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X(circuits.web.dispatchers.xmlrpc.rpc.nameqX#circuits.web.dispatchers.xmlrpc.rpcqX&circuits.web.dispatchers.xmlrpc moduleqNX&circuits.web.dispatchers.xmlrpc.XMLRPCq X.circuits.web.dispatchers.xmlrpc.XMLRPC.channelq uUsubstitution_defsq }q Uparse_messagesq ]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhU&circuits-web-dispatchers-xmlrpc-moduleqh h h h uUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXP/home/prologic/work/circuits/docs/source/api/circuits.web.dispatchers.xmlrpc.rstqUtagnameqUsectionqU attributesq }q!(Udupnamesq"]Uclassesq#]Ubackrefsq$]Uidsq%]q&(X&module-circuits.web.dispatchers.xmlrpcq'heUnamesq(]q)hauUlineq*KUdocumentq+hh]q,(cdocutils.nodes title q-)q.}q/(hX&circuits.web.dispatchers.xmlrpc moduleq0hhhhhUtitleq1h }q2(h"]h#]h$]h%]h(]uh*Kh+hh]q3cdocutils.nodes Text q4X&circuits.web.dispatchers.xmlrpc moduleq5q6}q7(hh0hh.ubaubcsphinx.addnodes index q8)q9}q:(hUhhhU q;hUindexq(Usingleq?X(circuits.web.dispatchers.xmlrpc (module)X&module-circuits.web.dispatchers.xmlrpcUtq@auh*Kh+hh]ubcdocutils.nodes paragraph qA)qB}qC(hXXML RPCqDhhhXl/home/prologic/work/circuits/circuits/web/dispatchers/xmlrpc.py:docstring of circuits.web.dispatchers.xmlrpcqEhU paragraphqFh }qG(h"]h#]h$]h%]h(]uh*Kh+hh]qHh4XXML RPCqIqJ}qK(hhDhhBubaubhA)qL}qM(hXhThis module implements a XML RPC dispatcher that translates incoming RPC calls over XML into RPC events.qNhhhhEhhFh }qO(h"]h#]h$]h%]h(]uh*Kh+hh]qPh4XhThis module implements a XML RPC dispatcher that translates incoming RPC calls over XML into RPC events.qQqR}qS(hhNhhLubaubh8)qT}qU(hUhhhNhhqhhUdesc_signatureqih }qj(h%]qkhaUmoduleqlcdocutils.nodes reprunicode qmXcircuits.web.dispatchers.xmlrpcqnqo}qpbh$]h"]h#]h(]qqhaUfullnameqrXrpcqsUclassqtUUfirstquuh*Nh+hh]qv(csphinx.addnodes desc_annotation qw)qx}qy(hXclass hhfhhhhUdesc_annotationqzh }q{(h"]h#]h$]h%]h(]uh*Nh+hh]q|h4Xclass q}q~}q(hUhhxubaubcsphinx.addnodes desc_addname q)q}q(hX circuits.web.dispatchers.xmlrpc.hhfhhhhU desc_addnameqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qh4X circuits.web.dispatchers.xmlrpc.qq}q(hUhhubaubcsphinx.addnodes desc_name q)q}q(hhshhfhhhhU desc_nameqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qh4Xrpcqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhfhhhhUdesc_parameterlistqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]q(csphinx.addnodes desc_parameter q)q}q(hX*argsh }q(h"]h#]h$]h%]h(]uhhh]qh4X*argsqq}q(hUhhubahUdesc_parameterqubh)q}q(hX**kwargsh }q(h"]h#]h$]h%]h(]uhhh]qh4X**kwargsqq}q(hUhhubahhubeubeubcsphinx.addnodes desc_content q)q}q(hUhhZhhhhU desc_contentqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]q(hA)q}q(hX*Bases: :class:`circuits.core.events.Event`hhhU qhhFh }q(h"]h#]h$]h%]h(]uh*Kh+hh]q(h4XBases: qq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX#:class:`circuits.core.events.Event`qhhhNhU pending_xrefqh }q(UreftypeXclassUrefwarnqU reftargetqXcircuits.core.events.EventU refdomainXpyqh%]h$]U refexplicith"]h#]h(]UrefdocqX#api/circuits.web.dispatchers.xmlrpcqUpy:classqhsU py:moduleqXcircuits.web.dispatchers.xmlrpcquh*Nh]qcdocutils.nodes literal q)q}q(hhh }q(h"]h#]q(UxrefqhXpy-classqeh$]h%]h(]uhhh]qh4Xcircuits.core.events.Eventqͅq}q(hUhhubahUliteralqubaubeubhA)q}q(hX rpc EventqhhhXp/home/prologic/work/circuits/circuits/web/dispatchers/xmlrpc.py:docstring of circuits.web.dispatchers.xmlrpc.rpcqhhFh }q(h"]h#]h$]h%]h(]uh*Kh+hh]qh4X rpc Eventqׅq}q(hhhhubaubhA)q}q(hXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.qhhhhhhFh }q(h"]h#]h$]h%]h(]uh*Kh+hh]qh4XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.q߅q}q(hhhhubaubhA)q}q(hXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.qhhhhhhFh }q(h"]h#]h$]h%]h(]uh*Kh+hh]qh4XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.q煁q}q(hhhhubaubhA)q}q(hX_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.hhhhhhFh }q(h"]h#]h$]h%]h(]uh*K h+hh]q(h4XEvery event has a qq}q(hXEvery event has a hhubh)q}q(hX :attr:`name`qhhhNhhh }q(UreftypeXattrhhXnameU refdomainXpyqh%]h$]U refexplicith"]h#]h(]hhhhshhuh*Nh]qh)q}q(hhh }q(h"]h#]q(hhXpy-attrqeh$]h%]h(]uhhh]qh4Xnameqq}q(hUhhubahhubaubh4XA attribute that is used for matching the event with the handlers.rr}r(hXA attribute that is used for matching the event with the handlers.hhubeubcdocutils.nodes field_list r)r}r(hUhhhNhU field_listrh }r(h"]h#]h$]h%]h(]uh*Nh+hh]rcdocutils.nodes field r )r }r (hUh }r (h"]h#]h$]h%]h(]uhjh]r (cdocutils.nodes field_name r)r}r(hUh }r(h"]h#]h$]h%]h(]uhj h]rh4X Variablesrr}r(hUhjubahU field_namerubcdocutils.nodes field_body r)r}r(hUh }r(h"]h#]h$]h%]h(]uhj h]rcdocutils.nodes bullet_list r)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]r (cdocutils.nodes list_item r!)r"}r#(hUh }r$(h"]h#]h$]h%]h(]uhjh]r%hA)r&}r'(hUh }r((h"]h#]h$]h%]h(]uhj"h]r)(h)r*}r+(hUh }r,(UreftypeUobjr-U reftargetXchannelsr.U refdomainh`h%]h$]U refexplicith"]h#]h(]uhj&h]r/cdocutils.nodes strong r0)r1}r2(hj.h }r3(h"]h#]h$]h%]h(]uhj*h]r4h4Xchannelsr5r6}r7(hUhj1ubahUstrongr8ubahhubh4X -- r9r:}r;(hUhj&ubhA)r<}r=(hXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.r>hj&hhhhFh }r?(h"]h#]h$]h%]h(]uh*Kh]r@h4Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rArB}rC(hj>hj<ubaubhA)rD}rE(hXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rFhj&hhhhFh }rG(h"]h#]h$]h%]h(]uh*Kh]rHh4XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rIrJ}rK(hjFhjDubaubehhFubahU list_itemrLubj!)rM}rN(hUh }rO(h"]h#]h$]h%]h(]uhjh]rPhA)rQ}rR(hUh }rS(h"]h#]h$]h%]h(]uhjMh]rT(h)rU}rV(hUh }rW(Ureftypej-U reftargetXvaluerXU refdomainh`h%]h$]U refexplicith"]h#]h(]uhjQh]rYj0)rZ}r[(hjXh }r\(h"]h#]h$]h%]h(]uhjUh]r]h4Xvaluer^r_}r`(hUhjZubahj8ubahhubh4X -- rarb}rc(hUhjQubh4X this is a rdre}rf(hX this is a hjQubh)rg}rh(hX#:class:`circuits.core.values.Value`rihjQhNhhh }rj(UreftypeXclasshhXcircuits.core.values.ValueU refdomainXpyrkh%]h$]U refexplicith"]h#]h(]hhhhshhuh*Nh]rlh)rm}rn(hjih }ro(h"]h#]rp(hjkXpy-classrqeh$]h%]h(]uhjgh]rrh4Xcircuits.core.values.Valuersrt}ru(hUhjmubahhubaubh4XN object that holds the results returned by the handlers invoked for the event.rvrw}rx(hXN object that holds the results returned by the handlers invoked for the event.hjQubehhFubahjLubj!)ry}rz(hUh }r{(h"]h#]h$]h%]h(]uhjh]r|hA)r}}r~(hUh }r(h"]h#]h$]h%]h(]uhjyh]r(h)r}r(hUh }r(Ureftypej-U reftargetXsuccessrU refdomainh`h%]h$]U refexplicith"]h#]h(]uhj}h]rj0)r}r(hjh }r(h"]h#]h$]h%]h(]uhjh]rh4Xsuccessrr}r(hUhjubahj8ubahhubh4X -- rr}r(hUhj}ubh4X%if this optional attribute is set to rr}r(hX%if this optional attribute is set to hj}ubh)r}r(hX``True``h }r(h"]h#]h$]h%]h(]uhj}h]rh4XTruerr}r(hUhjubahhubh4X, an associated event rr}r(hX, an associated event hj}ubh)r}r(hX ``success``h }r(h"]h#]h$]h%]h(]uhj}h]rh4Xsuccessrr}r(hUhjubahhubh4X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(hX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.hj}ubehhFubahjLubj!)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]rhA)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]r(h)r}r(hUh }r(Ureftypej-U reftargetXsuccess_channelsrU refdomainh`h%]h$]U refexplicith"]h#]h(]uhjh]rj0)r}r(hjh }r(h"]h#]h$]h%]h(]uhjh]rh4Xsuccess_channelsrr}r(hUhjubahj8ubahhubh4X -- rr}r(hUhjubh4Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(hXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rhjubehhFubahjLubj!)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]rhA)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]r(h)r}r(hUh }r(Ureftypej-U reftargetXcompleterU refdomainh`h%]h$]U refexplicith"]h#]h(]uhjh]rj0)r}r(hjh }r(h"]h#]h$]h%]h(]uhjh]rh4Xcompleterr}r(hUhjubahj8ubahhubh4X -- rr}r(hUhjubh4X%if this optional attribute is set to rr}r(hX%if this optional attribute is set to hjubh)r}r(hX``True``h }r(h"]h#]h$]h%]h(]uhjh]rh4XTruerr}r(hUhjubahhubh4X, an associated event rr}r(hX, an associated event hjubh)r}r(hX ``complete``h }r(h"]h#]h$]h%]h(]uhjh]rh4Xcompleterr}r(hUhjubahhubh4X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rr}r(hX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.hjubehhFubahjLubj!)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]rhA)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]r(h)r}r(hUh }r(Ureftypej-U reftargetXcomplete_channelsrU refdomainh`h%]h$]U refexplicith"]h#]h(]uhjh]rj0)r}r(hjh }r(h"]h#]h$]h%]h(]uhjh]rh4Xcomplete_channelsrr}r(hUhjubahj8ubahhubh4X -- rr}r(hUhjubh4Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r (hXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r hjubehhFubahjLubehU bullet_listr ubahU field_bodyr ubehUfieldr ubaubh8)r}r(hUhhhNhhrhhih }r(h%]rhahlhmXcircuits.web.dispatchers.xmlrpcrr}rbh$]h"]h#]h(]r hahrXrpc.namehthshuuh*Nh+hh]r!(h)r"}r#(hXnamehjhjhhh }r$(h"]h#]h$]h%]h(]uh*Nh+hh]r%h4Xnamer&r'}r((hUhj"ubaubhw)r)}r*(hX = 'rpc'hjhjhhzh }r+(h"]h#]h$]h%]h(]uh*Nh+hh]r,h4X = 'rpc'r-r.}r/(hUhj)ubaubeubh)r0}r1(hUhjhjhhh }r2(h"]h#]h$]h%]h(]uh*Nh+hh]ubeubeubeubh8)r3}r4(hUhhhNhh(hX4XMLRPC(path=None, encoding='utf-8', rpc_channel='*')hj8hhhhhih }r?(h%]r@h ahlhmXcircuits.web.dispatchers.xmlrpcrArB}rCbh$]h"]h#]h(]rDh ahrXXMLRPCrEhtUhuuh*Nh+hh]rF(hw)rG}rH(hXclass hj=hhhhhzh }rI(h"]h#]h$]h%]h(]uh*Nh+hh]rJh4Xclass rKrL}rM(hUhjGubaubh)rN}rO(hX circuits.web.dispatchers.xmlrpc.hj=hhhhhh }rP(h"]h#]h$]h%]h(]uh*Nh+hh]rQh4X circuits.web.dispatchers.xmlrpc.rRrS}rT(hUhjNubaubh)rU}rV(hjEhj=hhhhhh }rW(h"]h#]h$]h%]h(]uh*Nh+hh]rXh4XXMLRPCrYrZ}r[(hUhjUubaubh)r\}r](hUhj=hhhhhh }r^(h"]h#]h$]h%]h(]uh*Nh+hh]r_(h)r`}ra(hX path=Noneh }rb(h"]h#]h$]h%]h(]uhj\h]rch4X path=Nonerdre}rf(hUhj`ubahhubh)rg}rh(hXencoding='utf-8'h }ri(h"]h#]h$]h%]h(]uhj\h]rjh4Xencoding='utf-8'rkrl}rm(hUhjgubahhubh)rn}ro(hXrpc_channel='*'h }rp(h"]h#]h$]h%]h(]uhj\h]rqh4Xrpc_channel='*'rrrs}rt(hUhjnubahhubeubeubh)ru}rv(hUhj8hhhhhh }rw(h"]h#]h$]h%]h(]uh*Nh+hh]rx(hA)ry}rz(hX6Bases: :class:`circuits.core.components.BaseComponent`r{hjuhhhhFh }r|(h"]h#]h$]h%]h(]uh*Kh+hh]r}(h4XBases: r~r}r(hXBases: hjyubh)r}r(hX/:class:`circuits.core.components.BaseComponent`rhjyhNhhh }r(UreftypeXclasshhX&circuits.core.components.BaseComponentU refdomainXpyrh%]h$]U refexplicith"]h#]h(]hhhjEhhuh*Nh]rh)r}r(hjh }r(h"]h#]r(hjXpy-classreh$]h%]h(]uhjh]rh4X&circuits.core.components.BaseComponentrr}r(hUhjubahhubaubeubh8)r}r(hUhjuhNhh(hX Submodulesq?hh7hhhh0h }q@(h"]h#]h$]h%]h']uh)Kh*hh]qAh3X SubmodulesqBqC}qD(hh?hh=ubaubcdocutils.nodes compound qE)qF}qG(hUhh7hhhUcompoundqHh }qI(h"]h#]qJUtoctree-wrapperqKah$]h%]h']uh)Kh*hh]qLcsphinx.addnodes toctree qM)qN}qO(hUhhFhhhUtoctreeqPh }qQ(UnumberedqRKU includehiddenqShXapi/circuits.ioqTU titlesonlyqUUglobqVh%]h$]h"]h#]h']UentriesqW]qX(NXapi/circuits.io.eventsqYqZNXapi/circuits.io.fileq[q\NXapi/circuits.io.notifyq]q^NXapi/circuits.io.processq_q`NXapi/circuits.io.serialqaqbeUhiddenqcU includefilesqd]qe(hYh[h]h_haeUmaxdepthqfJuh)Kh]ubaubeubh)qg}qh(hUhhhhhhh }qi(h"]h#]h$]h%]qj(Xmodule-circuits.ioqkheh']qlhauh)Kh*hh]qm(h,)qn}qo(hXModule contentsqphhghhhh0h }qq(h"]h#]h$]h%]h']uh)Kh*hh]qrh3XModule contentsqsqt}qu(hhphhnubaubcsphinx.addnodes index qv)qw}qx(hUhhghU qyhUindexqzh }q{(h%]h$]h"]h#]h']Uentries]q|(Usingleq}Xcircuits.io (module)Xmodule-circuits.ioUtq~auh)Kh*hh]ubcdocutils.nodes paragraph q)q}q(hX I/O SupportqhhghXM/home/prologic/work/circuits/circuits/io/__init__.py:docstring of circuits.ioqhU paragraphqh }q(h"]h#]h$]h%]h']uh)Kh*hh]qh3X I/O Supportqq}q(hhhhubaubh)q}q(hXThis package contains various I/O Components. Provided are a generic File Component, StdIn, StdOut and StdErr components. Instances of StdIn, StdOut and StdErr are also created by importing this package.qhhghhhhh }q(h"]h#]h$]h%]h']uh)Kh*hh]qh3XThis package contains various I/O Components. Provided are a generic File Component, StdIn, StdOut and StdErr components. Instances of StdIn, StdOut and StdErr are also created by importing this package.qq}q(hhhhubaubeubeubahUU 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_classesqNh0NUerror_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_sourceqhUgettext_compactqU 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_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hhhkcdocutils.nodes target q)q}q(hUhhghhyhUtargetqh }q(h"]h%]qhkah$]Uismodh#]h']uh)Kh*hh]ubhhghh7uUsubstitution_namesq}qhh*h }q(h"]h%]h$]Usourcehh#]h']uU footnotesq]qUrefidsq}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.node.doctree0000644000014400001440000001014212425011103025044 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xmodule contentsqNXcircuits.node packageqNX submodulesqNuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hUmodule-contentsqhUcircuits-node-packageqhU submodulesquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqX>/home/prologic/work/circuits/docs/source/api/circuits.node.rstqUtagnameqUsectionqU attributesq }q!(Udupnamesq"]Uclassesq#]Ubackrefsq$]Uidsq%]q&haUnamesq']q(hauUlineq)KUdocumentq*hh]q+(cdocutils.nodes title q,)q-}q.(hXcircuits.node packageq/hhhhhUtitleq0h }q1(h"]h#]h$]h%]h']uh)Kh*hh]q2cdocutils.nodes Text q3Xcircuits.node packageq4q5}q6(hh/hh-ubaubh)q7}q8(hUhhhhhhh }q9(h"]h#]h$]h%]q:hah']q;hauh)Kh*hh]q<(h,)q=}q>(hX Submodulesq?hh7hhhh0h }q@(h"]h#]h$]h%]h']uh)Kh*hh]qAh3X SubmodulesqBqC}qD(hh?hh=ubaubcdocutils.nodes compound qE)qF}qG(hUhh7hhhUcompoundqHh }qI(h"]h#]qJUtoctree-wrapperqKah$]h%]h']uh)Kh*hh]qLcsphinx.addnodes toctree qM)qN}qO(hUhhFhhhUtoctreeqPh }qQ(UnumberedqRKU includehiddenqShXapi/circuits.nodeqTU titlesonlyqUUglobqVh%]h$]h"]h#]h']UentriesqW]qX(NXapi/circuits.node.clientqYqZNXapi/circuits.node.eventsq[q\NXapi/circuits.node.nodeq]q^NXapi/circuits.node.serverq_q`NXapi/circuits.node.utilsqaqbeUhiddenqcU includefilesqd]qe(hYh[h]h_haeUmaxdepthqfJuh)Kh]ubaubeubh)qg}qh(hUhhhhhhh }qi(h"]h#]h$]h%]qj(Xmodule-circuits.nodeqkheh']qlhauh)Kh*hh]qm(h,)qn}qo(hXModule contentsqphhghhhh0h }qq(h"]h#]h$]h%]h']uh)Kh*hh]qrh3XModule contentsqsqt}qu(hhphhnubaubcsphinx.addnodes index qv)qw}qx(hUhhghU qyhUindexqzh }q{(h%]h$]h"]h#]h']Uentries]q|(Usingleq}Xcircuits.node (module)Xmodule-circuits.nodeUtq~auh)Kh*hh]ubcdocutils.nodes paragraph q)q}q(hXNodeqhhghXQ/home/prologic/work/circuits/circuits/node/__init__.py:docstring of circuits.nodeqhU paragraphqh }q(h"]h#]h$]h%]h']uh)Kh*hh]qh3XNodeqq}q(hhhhubaubh)q}q(hX5Distributed and Inter-Processing support for circuitsqhhghhhhh }q(h"]h#]h$]h%]h']uh)Kh*hh]qh3X5Distributed and Inter-Processing support for circuitsqq}q(hhhhubaubeubeubahUU 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_classesqNh0NUerror_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_sourceqhUgettext_compactqU 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_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hh7hhghkcdocutils.nodes target q)q}q(hUhhghhyhUtargetqh }q(h"]h%]qhkah$]Uismodh#]h']uh)Kh*hh]ubhhuUsubstitution_namesq}qhh*h }q(h"]h%]h$]Usourcehh#]h']uU footnotesq]qUrefidsq}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.wrappers.doctree0000644000014400001440000012672612425011106026561 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X%circuits.web.wrappers.Response.statusqX$circuits.web.wrappers.file_generatorqX)circuits.web.wrappers.Request.script_nameqX#circuits.web.wrappers.Response.bodyq X#circuits.web.wrappers.Request.loginq Xcircuits.web.wrappers.Requestq X$circuits.web.wrappers.Response.closeq X%circuits.web.wrappers.Request.handledq Xcircuits.web.wrappers.ResponseqX%circuits.web.wrappers.Response.streamqX#circuits.web.wrappers.Request.indexqX#circuits.web.wrappers.Request.localqX$circuits.web.wrappers.Request.schemeqXcircuits.web.wrappers.Host.portqX$circuits.web.wrappers.Request.remoteqX'circuits.web.wrappers.HTTPStatus.reasonqXcircuits.web.wrappers.StatusqXcircuits.web.wrappers.HostqX"circuits.web.wrappers.Request.hostqX&circuits.web.wrappers.Response.prepareqX$circuits.web.wrappers.Request.serverqX'circuits.web.wrappers.HTTPStatus.statusqXcircuits.web.wrappers.BodyqX#circuits.web.wrappers.Response.doneqX&circuits.web.wrappers.Request.protocolqXcircuits.web.wrappers.Host.nameqX circuits.web.wrappers.HTTPStatusq Xcircuits.web.wrappers.Host.ipq!X&circuits.web.wrappers.Response.chunkedq"Xcircuits.web.wrappers moduleq#NuUsubstitution_defsq$}q%Uparse_messagesq&]q'Ucurrent_sourceq(NU decorationq)NUautofootnote_startq*KUnameidsq+}q,(hhhhhhh h h h h h h h h h hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh h h!h!h"h"h#Ucircuits-web-wrappers-moduleq-uUchildrenq.]q/cdocutils.nodes section q0)q1}q2(U rawsourceq3UUparentq4hUsourceq5XF/home/prologic/work/circuits/docs/source/api/circuits.web.wrappers.rstq6Utagnameq7Usectionq8U attributesq9}q:(Udupnamesq;]Uclassesq<]Ubackrefsq=]Uidsq>]q?(Xmodule-circuits.web.wrappersq@h-eUnamesqA]qBh#auUlineqCKUdocumentqDhh.]qE(cdocutils.nodes title qF)qG}qH(h3Xcircuits.web.wrappers moduleqIh4h1h5h6h7UtitleqJh9}qK(h;]h<]h=]h>]hA]uhCKhDhh.]qLcdocutils.nodes Text qMXcircuits.web.wrappers moduleqNqO}qP(h3hIh4hGubaubcsphinx.addnodes index qQ)qR}qS(h3Uh4h1h5U qTh7UindexqUh9}qV(h>]h=]h;]h<]hA]Uentries]qW(UsingleqXXcircuits.web.wrappers (module)Xmodule-circuits.web.wrappersUtqYauhCKhDhh.]ubcdocutils.nodes paragraph qZ)q[}q\(h3XRequest/Response Wrappersq]h4h1h5XX/home/prologic/work/circuits/circuits/web/wrappers.py:docstring of circuits.web.wrappersq^h7U paragraphq_h9}q`(h;]h<]h=]h>]hA]uhCKhDhh.]qahMXRequest/Response Wrappersqbqc}qd(h3h]h4h[ubaubhZ)qe}qf(h3X8This module implements the Request and Response objects.qgh4h1h5h^h7h_h9}qh(h;]h<]h=]h>]hA]uhCKhDhh.]qihMX8This module implements the Request and Response objects.qjqk}ql(h3hgh4heubaubhQ)qm}qn(h3Uh4h1h5Nh7hUh9}qo(h>]h=]h;]h<]hA]Uentries]qp(hXX2file_generator() (in module circuits.web.wrappers)hUtqqauhCNhDhh.]ubcsphinx.addnodes desc qr)qs}qt(h3Uh4h1h5Nh7Udescquh9}qv(UnoindexqwUdomainqxXpyh>]h=]h;]h<]hA]UobjtypeqyXfunctionqzUdesctypeq{hzuhCNhDhh.]q|(csphinx.addnodes desc_signature q})q~}q(h3X%file_generator(input, chunkSize=4096)h4hsh5U qh7Udesc_signatureqh9}q(h>]qhaUmoduleqcdocutils.nodes reprunicode qXcircuits.web.wrappersqq}qbh=]h;]h<]hA]qhaUfullnameqXfile_generatorqUclassqUUfirstquhCNhDhh.]q(csphinx.addnodes desc_addname q)q}q(h3Xcircuits.web.wrappers.h4h~h5hh7U desc_addnameqh9}q(h;]h<]h=]h>]hA]uhCNhDhh.]qhMXcircuits.web.wrappers.qq}q(h3Uh4hubaubcsphinx.addnodes desc_name q)q}q(h3hh4h~h5hh7U desc_nameqh9}q(h;]h<]h=]h>]hA]uhCNhDhh.]qhMXfile_generatorqq}q(h3Uh4hubaubcsphinx.addnodes desc_parameterlist q)q}q(h3Uh4h~h5hh7Udesc_parameterlistqh9}q(h;]h<]h=]h>]hA]uhCNhDhh.]q(csphinx.addnodes desc_parameter q)q}q(h3Xinputh9}q(h;]h<]h=]h>]hA]uh4hh.]qhMXinputqq}q(h3Uh4hubah7Udesc_parameterqubh)q}q(h3XchunkSize=4096h9}q(h;]h<]h=]h>]hA]uh4hh.]qhMXchunkSize=4096qq}q(h3Uh4hubah7hubeubeubcsphinx.addnodes desc_content q)q}q(h3Uh4hsh5hh7U desc_contentqh9}q(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubhQ)q}q(h3Uh4h1h5Nh7hUh9}q(h>]h=]h;]h<]hA]Uentries]q(hXX%Host (class in circuits.web.wrappers)hUtqauhCNhDhh.]ubhr)q}q(h3Uh4h1h5Nh7huh9}q(hwhxXpyh>]h=]h;]h<]hA]hyXclassqh{huhCNhDhh.]q(h})q}q(h3XHost(ip, port, name=None)h4hh5hh7hh9}q(h>]qhahhXcircuits.web.wrappersqʅq}qbh=]h;]h<]hA]qhahXHostqhUhuhCNhDhh.]q(csphinx.addnodes desc_annotation q)q}q(h3Xclass h4hh5hh7Udesc_annotationqh9}q(h;]h<]h=]h>]hA]uhCNhDhh.]qhMXclass qօq}q(h3Uh4hubaubh)q}q(h3Xcircuits.web.wrappers.h4hh5hh7hh9}q(h;]h<]h=]h>]hA]uhCNhDhh.]qhMXcircuits.web.wrappers.q݅q}q(h3Uh4hubaubh)q}q(h3hh4hh5hh7hh9}q(h;]h<]h=]h>]hA]uhCNhDhh.]qhMXHostq䅁q}q(h3Uh4hubaubh)q}q(h3Uh4hh5hh7hh9}q(h;]h<]h=]h>]hA]uhCNhDhh.]q(h)q}q(h3Xiph9}q(h;]h<]h=]h>]hA]uh4hh.]qhMXipqq}q(h3Uh4hubah7hubh)q}q(h3Xporth9}q(h;]h<]h=]h>]hA]uh4hh.]qhMXportqq}q(h3Uh4hubah7hubh)q}q(h3X name=Noneh9}q(h;]h<]h=]h>]hA]uh4hh.]qhMX name=Noneqq}q(h3Uh4hubah7hubeubeubh)r}r(h3Uh4hh5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]r(hZ)r}r(h3XBases: :class:`object`h4jh5U rh7h_h9}r(h;]h<]h=]h>]hA]uhCKhDhh.]r(hMXBases: r r }r (h3XBases: h4jubcsphinx.addnodes pending_xref r )r }r(h3X:class:`object`rh4jh5Nh7U pending_xrefrh9}r(UreftypeXclassUrefwarnrU reftargetrXobjectU refdomainXpyrh>]h=]U refexplicith;]h<]hA]UrefdocrXapi/circuits.web.wrappersrUpy:classrhU py:modulerXcircuits.web.wrappersruhCNh.]rcdocutils.nodes literal r)r}r(h3jh9}r(h;]h<]r(Uxrefr jXpy-classr!eh=]h>]hA]uh4j h.]r"hMXobjectr#r$}r%(h3Uh4jubah7Uliteralr&ubaubeubhZ)r'}r((h3XAn internet address.r)h4jh5X]/home/prologic/work/circuits/circuits/web/wrappers.py:docstring of circuits.web.wrappers.Hostr*h7h_h9}r+(h;]h<]h=]h>]hA]uhCKhDhh.]r,hMXAn internet address.r-r.}r/(h3j)h4j'ubaubhZ)r0}r1(h3Xname should be the client's host name. If not available (because no DNS lookup is performed), the IP address should be used instead.r2h4jh5j*h7h_h9}r3(h;]h<]h=]h>]hA]uhCKhDhh.]r4hMXname should be the client's host name. If not available (because no DNS lookup is performed), the IP address should be used instead.r5r6}r7(h3j2h4j0ubaubhQ)r8}r9(h3Uh4jh5Nh7hUh9}r:(h>]h=]h;]h<]hA]Uentries]r;(hXX)ip (circuits.web.wrappers.Host attribute)h!Utr<auhCNhDhh.]ubhr)r=}r>(h3Uh4jh5Nh7huh9}r?(hwhxXpyh>]h=]h;]h<]hA]hyX attributer@h{j@uhCNhDhh.]rA(h})rB}rC(h3XHost.iph4j=h5U rDh7hh9}rE(h>]rFh!ahhXcircuits.web.wrappersrGrH}rIbh=]h;]h<]hA]rJh!ahXHost.iphhhuhCNhDhh.]rK(h)rL}rM(h3Xiph4jBh5jDh7hh9}rN(h;]h<]h=]h>]hA]uhCNhDhh.]rOhMXiprPrQ}rR(h3Uh4jLubaubh)rS}rT(h3X = '0.0.0.0'h4jBh5jDh7hh9}rU(h;]h<]h=]h>]hA]uhCNhDhh.]rVhMX = '0.0.0.0'rWrX}rY(h3Uh4jSubaubeubh)rZ}r[(h3Uh4j=h5jDh7hh9}r\(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubhQ)r]}r^(h3Uh4jh5Nh7hUh9}r_(h>]h=]h;]h<]hA]Uentries]r`(hXX+port (circuits.web.wrappers.Host attribute)hUtraauhCNhDhh.]ubhr)rb}rc(h3Uh4jh5Nh7huh9}rd(hwhxXpyh>]h=]h;]h<]hA]hyX attributereh{jeuhCNhDhh.]rf(h})rg}rh(h3X Host.porth4jbh5jDh7hh9}ri(h>]rjhahhXcircuits.web.wrappersrkrl}rmbh=]h;]h<]hA]rnhahX Host.porthhhuhCNhDhh.]ro(h)rp}rq(h3Xporth4jgh5jDh7hh9}rr(h;]h<]h=]h>]hA]uhCNhDhh.]rshMXportrtru}rv(h3Uh4jpubaubh)rw}rx(h3X = 80h4jgh5jDh7hh9}ry(h;]h<]h=]h>]hA]uhCNhDhh.]rzhMX = 80r{r|}r}(h3Uh4jwubaubeubh)r~}r(h3Uh4jbh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubhQ)r}r(h3Uh4jh5Nh7hUh9}r(h>]h=]h;]h<]hA]Uentries]r(hXX+name (circuits.web.wrappers.Host attribute)hUtrauhCNhDhh.]ubhr)r}r(h3Uh4jh5Nh7huh9}r(hwhxXpyh>]h=]h;]h<]hA]hyX attributerh{juhCNhDhh.]r(h})r}r(h3X Host.nameh4jh5jDh7hh9}r(h>]rhahhXcircuits.web.wrappersrr}rbh=]h;]h<]hA]rhahX Host.namehhhuhCNhDhh.]r(h)r}r(h3Xnameh4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXnamerr}r(h3Uh4jubaubh)r}r(h3X = 'unknown.tld'h4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMX = 'unknown.tld'rr}r(h3Uh4jubaubeubh)r}r(h3Uh4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubeubeubhQ)r}r(h3Uh4h1h5Nh7hUh9}r(h>]h=]h;]h<]hA]Uentries]r(hXX+HTTPStatus (class in circuits.web.wrappers)h UtrauhCNhDhh.]ubhr)r}r(h3Uh4h1h5Nh7huh9}r(hwhxXpyh>]h=]h;]h<]hA]hyXclassrh{juhCNhDhh.]r(h})r}r(h3X#HTTPStatus(status=200, reason=None)h4jh5hh7hh9}r(h>]rh ahhXcircuits.web.wrappersrr}rbh=]h;]h<]hA]rh ahX HTTPStatusrhUhuhCNhDhh.]r(h)r}r(h3Xclass h4jh5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXclass rr}r(h3Uh4jubaubh)r}r(h3Xcircuits.web.wrappers.h4jh5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXcircuits.web.wrappers.rr}r(h3Uh4jubaubh)r}r(h3jh4jh5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMX HTTPStatusrr}r(h3Uh4jubaubh)r}r(h3Uh4jh5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]r(h)r}r(h3X status=200h9}r(h;]h<]h=]h>]hA]uh4jh.]rhMX status=200rr}r(h3Uh4jubah7hubh)r}r(h3X reason=Noneh9}r(h;]h<]h=]h>]hA]uh4jh.]rhMX reason=Nonerr}r(h3Uh4jubah7hubeubeubh)r}r(h3Uh4jh5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]r(hZ)r}r(h3XBases: :class:`object`h4jh5jh7h_h9}r(h;]h<]h=]h>]hA]uhCKhDhh.]r(hMXBases: rr}r(h3XBases: h4jubj )r}r(h3X:class:`object`rh4jh5Nh7jh9}r(UreftypeXclassjjXobjectU refdomainXpyrh>]h=]U refexplicith;]h<]hA]jjjjjjuhCNh.]rj)r}r(h3jh9}r(h;]h<]r(j jXpy-classreh=]h>]hA]uh4jh.]rhMXobjectrr}r(h3Uh4jubah7j&ubaubeubhQ)r}r(h3Uh4jh5Nh7hUh9}r(h>]h=]h;]h<]hA]Uentries]r(hXX3status (circuits.web.wrappers.HTTPStatus attribute)hUtrauhCNhDhh.]ubhr)r}r(h3Uh4jh5Nh7huh9}r(hwhxXpyh>]h=]h;]h<]hA]hyX attributerh{juhCNhDhh.]r(h})r}r(h3XHTTPStatus.statush4jh5hh7hh9}r(h>]rhahhXcircuits.web.wrappersrr }r bh=]h;]h<]hA]r hahXHTTPStatus.statushjhuhCNhDhh.]r h)r }r(h3Xstatush4jh5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXstatusrr}r(h3Uh4j ubaubaubh)r}r(h3Uh4jh5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubhQ)r}r(h3Uh4jh5Nh7hUh9}r(h>]h=]h;]h<]hA]Uentries]r(hXX3reason (circuits.web.wrappers.HTTPStatus attribute)hUtrauhCNhDhh.]ubhr)r}r(h3Uh4jh5Nh7huh9}r(hwhxXpyh>]h=]h;]h<]hA]hyX attributerh{juhCNhDhh.]r (h})r!}r"(h3XHTTPStatus.reasonh4jh5hh7hh9}r#(h>]r$hahhXcircuits.web.wrappersr%r&}r'bh=]h;]h<]hA]r(hahXHTTPStatus.reasonhjhuhCNhDhh.]r)h)r*}r+(h3Xreasonh4j!h5hh7hh9}r,(h;]h<]h=]h>]hA]uhCNhDhh.]r-hMXreasonr.r/}r0(h3Uh4j*ubaubaubh)r1}r2(h3Uh4jh5hh7hh9}r3(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubeubeubhQ)r4}r5(h3Uh4h1h5Nh7hUh9}r6(h>]h=]h;]h<]hA]Uentries]r7(hXX(Request (class in circuits.web.wrappers)h Utr8auhCNhDhh.]ubhr)r9}r:(h3Uh4h1h5Nh7huh9}r;(hwhxXpyr<h>]h=]h;]h<]hA]hyXclassr=h{j=uhCNhDhh.]r>(h})r?}r@(h3XgRequest(sock, method='GET', scheme='http', path='/', protocol=(1, 1), qs='', headers=None, server=None)h4j9h5hh7hh9}rA(h>]rBh ahhXcircuits.web.wrappersrCrD}rEbh=]h;]h<]hA]rFh ahXRequestrGhUhuhCNhDhh.]rH(h)rI}rJ(h3Xclass h4j?h5hh7hh9}rK(h;]h<]h=]h>]hA]uhCNhDhh.]rLhMXclass rMrN}rO(h3Uh4jIubaubh)rP}rQ(h3Xcircuits.web.wrappers.h4j?h5hh7hh9}rR(h;]h<]h=]h>]hA]uhCNhDhh.]rShMXcircuits.web.wrappers.rTrU}rV(h3Uh4jPubaubh)rW}rX(h3jGh4j?h5hh7hh9}rY(h;]h<]h=]h>]hA]uhCNhDhh.]rZhMXRequestr[r\}r](h3Uh4jWubaubh)r^}r_(h3Uh4j?h5hh7hh9}r`(h;]h<]h=]h>]hA]uhCNhDhh.]ra(h)rb}rc(h3Xsockh9}rd(h;]h<]h=]h>]hA]uh4j^h.]rehMXsockrfrg}rh(h3Uh4jbubah7hubh)ri}rj(h3X method='GET'h9}rk(h;]h<]h=]h>]hA]uh4j^h.]rlhMX method='GET'rmrn}ro(h3Uh4jiubah7hubh)rp}rq(h3X scheme='http'h9}rr(h;]h<]h=]h>]hA]uh4j^h.]rshMX scheme='http'rtru}rv(h3Uh4jpubah7hubh)rw}rx(h3Xpath='/'h9}ry(h;]h<]h=]h>]hA]uh4j^h.]rzhMXpath='/'r{r|}r}(h3Uh4jwubah7hubh)r~}r(h3X protocol=(1h9}r(h;]h<]h=]h>]hA]uh4j^h.]rhMX protocol=(1rr}r(h3Uh4j~ubah7hubh)r}r(h3X1)h9}r(h;]h<]h=]h>]hA]uh4j^h.]rhMX1)rr}r(h3Uh4jubah7hubh)r}r(h3Xqs=''h9}r(h;]h<]h=]h>]hA]uh4j^h.]rhMXqs=''rr}r(h3Uh4jubah7hubh)r}r(h3X headers=Noneh9}r(h;]h<]h=]h>]hA]uh4j^h.]rhMX headers=Nonerr}r(h3Uh4jubah7hubh)r}r(h3X server=Noneh9}r(h;]h<]h=]h>]hA]uh4j^h.]rhMX server=Nonerr}r(h3Uh4jubah7hubeubeubh)r}r(h3Uh4j9h5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]r(hZ)r}r(h3XBases: :class:`object`rh4jh5jh7h_h9}r(h;]h<]h=]h>]hA]uhCKhDhh.]r(hMXBases: rr}r(h3XBases: h4jubj )r}r(h3X:class:`object`rh4jh5Nh7jh9}r(UreftypeXclassjjXobjectU refdomainXpyrh>]h=]U refexplicith;]h<]hA]jjjjGjjuhCNh.]rj)r}r(h3jh9}r(h;]h<]r(j jXpy-classreh=]h>]hA]uh4jh.]rhMXobjectrr}r(h3Uh4jubah7j&ubaubeubhZ)r}r(h3XACreates a new Request object to hold information about a request.rh4jh5X`/home/prologic/work/circuits/circuits/web/wrappers.py:docstring of circuits.web.wrappers.Requestrh7h_h9}r(h;]h<]h=]h>]hA]uhCKhDhh.]rhMXACreates a new Request object to hold information about a request.rr}r(h3jh4jubaubcdocutils.nodes field_list r)r}r(h3Uh4jh5Nh7U field_listrh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rcdocutils.nodes field r)r}r(h3Uh9}r(h;]h<]h=]h>]hA]uh4jh.]r(cdocutils.nodes field_name r)r}r(h3Uh9}r(h;]h<]h=]h>]hA]uh4jh.]rhMX Parametersrr}r(h3Uh4jubah7U field_namerubcdocutils.nodes field_body r)r}r(h3Uh9}r(h;]h<]h=]h>]hA]uh4jh.]rcdocutils.nodes bullet_list r)r}r(h3Uh9}r(h;]h<]h=]h>]hA]uh4jh.]r(cdocutils.nodes list_item r)r}r(h3Uh9}r(h;]h<]h=]h>]hA]uh4jh.]rhZ)r}r(h3Uh9}r(h;]h<]h=]h>]hA]uh4jh.]r(cdocutils.nodes strong r)r}r(h3Xsockh9}r(h;]h<]h=]h>]hA]uh4jh.]rhMXsockrr}r(h3Uh4jubah7UstrongrubhMX (rr}r(h3Uh4jubj )r}r(h3Uh9}r(UreftypeUobjrU reftargetX socket.socketrU refdomainj<h>]h=]U refexplicith;]h<]hA]uh4jh.]rcdocutils.nodes emphasis r)r}r(h3jh9}r(h;]h<]h=]h>]hA]uh4jh.]rhMX socket.socketrr}r(h3Uh4jubah7Uemphasisrubah7jubhMX)r}r(h3Uh4jubhMX -- r r }r (h3Uh4jubhMX!The socket object of the request.r r }r(h3X!The socket object of the request.rh4jubeh7h_ubah7U list_itemrubj)r}r(h3Uh9}r(h;]h<]h=]h>]hA]uh4jh.]rhZ)r}r(h3Uh9}r(h;]h<]h=]h>]hA]uh4jh.]r(j)r}r(h3Xmethodh9}r(h;]h<]h=]h>]hA]uh4jh.]rhMXmethodrr}r(h3Uh4jubah7jubhMX (r r!}r"(h3Uh4jubj )r#}r$(h3Uh9}r%(UreftypejU reftargetXstrr&U refdomainj<h>]h=]U refexplicith;]h<]hA]uh4jh.]r'j)r(}r)(h3j&h9}r*(h;]h<]h=]h>]hA]uh4j#h.]r+hMXstrr,r-}r.(h3Uh4j(ubah7jubah7jubhMX)r/}r0(h3Uh4jubhMX -- r1r2}r3(h3Uh4jubhMXThe requested method.r4r5}r6(h3XThe requested method.r7h4jubeh7h_ubah7jubj)r8}r9(h3Uh9}r:(h;]h<]h=]h>]hA]uh4jh.]r;hZ)r<}r=(h3Uh9}r>(h;]h<]h=]h>]hA]uh4j8h.]r?(j)r@}rA(h3Xschemeh9}rB(h;]h<]h=]h>]hA]uh4j<h.]rChMXschemerDrE}rF(h3Uh4j@ubah7jubhMX (rGrH}rI(h3Uh4j<ubj )rJ}rK(h3Uh9}rL(UreftypejU reftargetXstrrMU refdomainj<h>]h=]U refexplicith;]h<]hA]uh4j<h.]rNj)rO}rP(h3jMh9}rQ(h;]h<]h=]h>]hA]uh4jJh.]rRhMXstrrSrT}rU(h3Uh4jOubah7jubah7jubhMX)rV}rW(h3Uh4j<ubhMX -- rXrY}rZ(h3Uh4j<ubhMXThe requested scheme.r[r\}r](h3XThe requested scheme.r^h4j<ubeh7h_ubah7jubj)r_}r`(h3Uh9}ra(h;]h<]h=]h>]hA]uh4jh.]rbhZ)rc}rd(h3Uh9}re(h;]h<]h=]h>]hA]uh4j_h.]rf(j)rg}rh(h3Xpathh9}ri(h;]h<]h=]h>]hA]uh4jch.]rjhMXpathrkrl}rm(h3Uh4jgubah7jubhMX (rnro}rp(h3Uh4jcubj )rq}rr(h3Uh9}rs(UreftypejU reftargetXstrrtU refdomainj<h>]h=]U refexplicith;]h<]hA]uh4jch.]ruj)rv}rw(h3jth9}rx(h;]h<]h=]h>]hA]uh4jqh.]ryhMXstrrzr{}r|(h3Uh4jvubah7jubah7jubhMX)r}}r~(h3Uh4jcubhMX -- rr}r(h3Uh4jcubhMXThe requested path.rr}r(h3XThe requested path.rh4jcubeh7h_ubah7jubj)r}r(h3Uh9}r(h;]h<]h=]h>]hA]uh4jh.]rhZ)r}r(h3Uh9}r(h;]h<]h=]h>]hA]uh4jh.]r(j)r}r(h3Xprotocolh9}r(h;]h<]h=]h>]hA]uh4jh.]rhMXprotocolrr}r(h3Uh4jubah7jubhMX (rr}r(h3Uh4jubj )r}r(h3Uh9}r(UreftypejU reftargetXstrrU refdomainj<h>]h=]U refexplicith;]h<]hA]uh4jh.]rj)r}r(h3jh9}r(h;]h<]h=]h>]hA]uh4jh.]rhMXstrrr}r(h3Uh4jubah7jubah7jubhMX)r}r(h3Uh4jubhMX -- rr}r(h3Uh4jubhMXThe requested protocol.rr}r(h3XThe requested protocol.rh4jubeh7h_ubah7jubj)r}r(h3Uh9}r(h;]h<]h=]h>]hA]uh4jh.]rhZ)r}r(h3Uh9}r(h;]h<]h=]h>]hA]uh4jh.]r(j)r}r(h3Xqsh9}r(h;]h<]h=]h>]hA]uh4jh.]rhMXqsrr}r(h3Uh4jubah7jubhMX (rr}r(h3Uh4jubj )r}r(h3Uh9}r(UreftypejU reftargetXstrrU refdomainj<h>]h=]U refexplicith;]h<]hA]uh4jh.]rj)r}r(h3jh9}r(h;]h<]h=]h>]hA]uh4jh.]rhMXstrrr}r(h3Uh4jubah7jubah7jubhMX)r}r(h3Uh4jubhMX -- rr}r(h3Uh4jubhMX The query string of the request.rr}r(h3X The query string of the request.rh4jubeh7h_ubah7jubeh7U bullet_listrubah7U field_bodyrubeh7UfieldrubaubhZ)r}r(h3X4initializes x; see x.__class__.__doc__ for signaturerh4jh5jh7h_h9}r(h;]h<]h=]h>]hA]uhCKhDhh.]rhMX4initializes x; see x.__class__.__doc__ for signaturerr}r(h3jh4jubaubhQ)r}r(h3Uh4jh5Nh7hUh9}r(h>]h=]h;]h<]hA]Uentries]r(hXX/index (circuits.web.wrappers.Request attribute)hUtrauhCNhDhh.]ubhr)r}r(h3Uh4jh5Nh7huh9}r(hwhxXpyh>]h=]h;]h<]hA]hyX attributerh{juhCNhDhh.]r(h})r}r(h3X Request.indexh4jh5jDh7hh9}r(h>]rhahhXcircuits.web.wrappersrr}rbh=]h;]h<]hA]rhahX Request.indexhjGhuhCNhDhh.]r(h)r}r(h3Xindexh4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXindexrr}r(h3Uh4jubaubh)r}r(h3X = Noneh4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMX = Nonerr}r(h3Uh4jubaubeubh)r}r(h3Uh4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubhQ)r}r(h3Uh4jh5Nh7hUh9}r(h>]h=]h;]h<]hA]Uentries]r(hXX5script_name (circuits.web.wrappers.Request attribute)hUtrauhCNhDhh.]ubhr)r}r (h3Uh4jh5Nh7huh9}r (hwhxXpyh>]h=]h;]h<]hA]hyX attributer h{j uhCNhDhh.]r (h})r }r(h3XRequest.script_nameh4jh5jDh7hh9}r(h>]rhahhXcircuits.web.wrappersrr}rbh=]h;]h<]hA]rhahXRequest.script_namehjGhuhCNhDhh.]r(h)r}r(h3X script_nameh4j h5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMX script_namerr}r(h3Uh4jubaubh)r}r(h3X = ''h4j h5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]r hMX = ''r!r"}r#(h3Uh4jubaubeubh)r$}r%(h3Uh4jh5jDh7hh9}r&(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubhQ)r'}r((h3Uh4jh5Nh7hUh9}r)(h>]h=]h;]h<]hA]Uentries]r*(hXX/login (circuits.web.wrappers.Request attribute)h Utr+auhCNhDhh.]ubhr)r,}r-(h3Uh4jh5Nh7huh9}r.(hwhxXpyh>]h=]h;]h<]hA]hyX attributer/h{j/uhCNhDhh.]r0(h})r1}r2(h3X Request.loginh4j,h5jDh7hh9}r3(h>]r4h ahhXcircuits.web.wrappersr5r6}r7bh=]h;]h<]hA]r8h ahX Request.loginhjGhuhCNhDhh.]r9(h)r:}r;(h3Xloginh4j1h5jDh7hh9}r<(h;]h<]h=]h>]hA]uhCNhDhh.]r=hMXloginr>r?}r@(h3Uh4j:ubaubh)rA}rB(h3X = Noneh4j1h5jDh7hh9}rC(h;]h<]h=]h>]hA]uhCNhDhh.]rDhMX = NonerErF}rG(h3Uh4jAubaubeubh)rH}rI(h3Uh4j,h5jDh7hh9}rJ(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubhQ)rK}rL(h3Uh4jh5Nh7hUh9}rM(h>]h=]h;]h<]hA]Uentries]rN(hXX1handled (circuits.web.wrappers.Request attribute)h UtrOauhCNhDhh.]ubhr)rP}rQ(h3Uh4jh5Nh7huh9}rR(hwhxXpyh>]h=]h;]h<]hA]hyX attributerSh{jSuhCNhDhh.]rT(h})rU}rV(h3XRequest.handledh4jPh5jDh7hh9}rW(h>]rXh ahhXcircuits.web.wrappersrYrZ}r[bh=]h;]h<]hA]r\h ahXRequest.handledhjGhuhCNhDhh.]r](h)r^}r_(h3Xhandledh4jUh5jDh7hh9}r`(h;]h<]h=]h>]hA]uhCNhDhh.]rahMXhandledrbrc}rd(h3Uh4j^ubaubh)re}rf(h3X = Falseh4jUh5jDh7hh9}rg(h;]h<]h=]h>]hA]uhCNhDhh.]rhhMX = Falserirj}rk(h3Uh4jeubaubeubh)rl}rm(h3Uh4jPh5jDh7hh9}rn(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubhQ)ro}rp(h3Uh4jh5Nh7hUh9}rq(h>]h=]h;]h<]hA]Uentries]rr(hXX0scheme (circuits.web.wrappers.Request attribute)hUtrsauhCNhDhh.]ubhr)rt}ru(h3Uh4jh5Nh7huh9}rv(hwhxXpyh>]h=]h;]h<]hA]hyX attributerwh{jwuhCNhDhh.]rx(h})ry}rz(h3XRequest.schemeh4jth5jDh7hh9}r{(h>]r|hahhXcircuits.web.wrappersr}r~}rbh=]h;]h<]hA]rhahXRequest.schemehjGhuhCNhDhh.]r(h)r}r(h3Xschemeh4jyh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXschemerr}r(h3Uh4jubaubh)r}r(h3X = 'http'h4jyh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMX = 'http'rr}r(h3Uh4jubaubeubh)r}r(h3Uh4jth5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubhQ)r}r(h3Uh4jh5Nh7hUh9}r(h>]h=]h;]h<]hA]Uentries]r(hXX2protocol (circuits.web.wrappers.Request attribute)hUtrauhCNhDhh.]ubhr)r}r(h3Uh4jh5Nh7huh9}r(hwhxXpyh>]h=]h;]h<]hA]hyX attributerh{juhCNhDhh.]r(h})r}r(h3XRequest.protocolh4jh5jDh7hh9}r(h>]rhahhXcircuits.web.wrappersrr}rbh=]h;]h<]hA]rhahXRequest.protocolhjGhuhCNhDhh.]r(h)r}r(h3Xprotocolh4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXprotocolrr}r(h3Uh4jubaubh)r}r(h3X = (1, 1)h4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMX = (1, 1)rr}r(h3Uh4jubaubeubh)r}r(h3Uh4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubhQ)r}r(h3Uh4jh5Nh7hUh9}r(h>]h=]h;]h<]hA]Uentries]r(hXX0server (circuits.web.wrappers.Request attribute)hUtrauhCNhDhh.]ubhr)r}r(h3Uh4jh5Nh7huh9}r(hwhxXpyh>]h=]h;]h<]hA]hyX attributerh{juhCNhDhh.]r(h})r}r(h3XRequest.serverrh4jh5jDh7hh9}r(h>]rhahhXcircuits.web.wrappersrr}rbh=]h;]h<]hA]rhahXRequest.serverhjGhuhCNhDhh.]r(h)r}r(h3Xserverh4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXserverrr}r(h3Uh4jubaubh)r}r(h3X = Noneh4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMX = Nonerr}r(h3Uh4jubaubeubh)r}r(h3Uh4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rj)r}r(h3Uh4jh5Nh7jh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rj)r}r(h3Uh4jh5Xg/home/prologic/work/circuits/circuits/web/wrappers.py:docstring of circuits.web.wrappers.Request.serverrh7jh9}r(h;]h<]h=]h>]hA]uhCKhDhh.]r(j)r}r(h3Xcvarh9}r(h;]h<]h=]h>]hA]uh4jh.]rhMXCvarrr}r(h3Uh4jubah7jubj)r}r(h3X$A reference to the underlying serverrh9}r(h;]h<]h=]h>]hA]uh4jh.]rhZ)r}r(h3jh4jh5jh7h_h9}r(h;]h<]h=]h>]hA]uhCKh.]rhMX$A reference to the underlying serverrr}r(h3jh4jubaubah7jubeubaubaubeubhQ)r}r(h3Uh4jh5Nh7hUh9}r(h>]h=]h;]h<]hA]Uentries]r(hXX0remote (circuits.web.wrappers.Request attribute)hUtrauhCNhDhh.]ubhr)r}r(h3Uh4jh5Nh7huh9}r(hwhxXpyh>]h=]h;]h<]hA]hyX attributerh{juhCNhDhh.]r(h})r}r(h3XRequest.remoteh4jh5jDh7hh9}r(h>]rhahhXcircuits.web.wrappersrr}r bh=]h;]h<]hA]r hahXRequest.remotehjGhuhCNhDhh.]r (h)r }r (h3Xremoteh4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXremoterr}r(h3Uh4j ubaubh)r}r(h3X = Host('', 0, '')h4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMX = Host('', 0, '')rr}r(h3Uh4jubaubeubh)r}r(h3Uh4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubhQ)r}r(h3Uh4jh5Nh7hUh9}r(h>]h=]h;]h<]hA]Uentries]r (hXX/local (circuits.web.wrappers.Request attribute)hUtr!auhCNhDhh.]ubhr)r"}r#(h3Uh4jh5Nh7huh9}r$(hwhxXpyh>]h=]h;]h<]hA]hyX attributer%h{j%uhCNhDhh.]r&(h})r'}r((h3X Request.localh4j"h5jDh7hh9}r)(h>]r*hahhXcircuits.web.wrappersr+r,}r-bh=]h;]h<]hA]r.hahX Request.localhjGhuhCNhDhh.]r/(h)r0}r1(h3Xlocalh4j'h5jDh7hh9}r2(h;]h<]h=]h>]hA]uhCNhDhh.]r3hMXlocalr4r5}r6(h3Uh4j0ubaubh)r7}r8(h3X% = Host('127.0.0.1', 80, '127.0.0.1')h4j'h5jDh7hh9}r9(h;]h<]h=]h>]hA]uhCNhDhh.]r:hMX% = Host('127.0.0.1', 80, '127.0.0.1')r;r<}r=(h3Uh4j7ubaubeubh)r>}r?(h3Uh4j"h5jDh7hh9}r@(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubhQ)rA}rB(h3Uh4jh5Nh7hUh9}rC(h>]h=]h;]h<]hA]Uentries]rD(hXX.host (circuits.web.wrappers.Request attribute)hUtrEauhCNhDhh.]ubhr)rF}rG(h3Uh4jh5Nh7huh9}rH(hwhxXpyh>]h=]h;]h<]hA]hyX attributerIh{jIuhCNhDhh.]rJ(h})rK}rL(h3X Request.hosth4jFh5jDh7hh9}rM(h>]rNhahhXcircuits.web.wrappersrOrP}rQbh=]h;]h<]hA]rRhahX Request.hosthjGhuhCNhDhh.]rS(h)rT}rU(h3Xhosth4jKh5jDh7hh9}rV(h;]h<]h=]h>]hA]uhCNhDhh.]rWhMXhostrXrY}rZ(h3Uh4jTubaubh)r[}r\(h3X = ''h4jKh5jDh7hh9}r](h;]h<]h=]h>]hA]uhCNhDhh.]r^hMX = ''r_r`}ra(h3Uh4j[ubaubeubh)rb}rc(h3Uh4jFh5jDh7hh9}rd(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubeubeubhQ)re}rf(h3Uh4h1h5X]/home/prologic/work/circuits/circuits/web/wrappers.py:docstring of circuits.web.wrappers.Bodyrgh7hUh9}rh(h>]h=]h;]h<]hA]Uentries]ri(hXX%Body (class in circuits.web.wrappers)hUtrjauhCNhDhh.]ubhr)rk}rl(h3Uh4h1h5jgh7huh9}rm(hwhxXpyh>]h=]h;]h<]hA]hyXclassrnh{jnuhCNhDhh.]ro(h})rp}rq(h3XBodyrrh4jkh5hh7hh9}rs(h>]rthahhXcircuits.web.wrappersrurv}rwbh=]h;]h<]hA]rxhahjrhUhuhCNhDhh.]ry(h)rz}r{(h3Xclass h4jph5hh7hh9}r|(h;]h<]h=]h>]hA]uhCNhDhh.]r}hMXclass r~r}r(h3Uh4jzubaubh)r}r(h3Xcircuits.web.wrappers.h4jph5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXcircuits.web.wrappers.rr}r(h3Uh4jubaubh)r}r(h3jrh4jph5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXBodyrr}r(h3Uh4jubaubeubh)r}r(h3Uh4jkh5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]r(hZ)r}r(h3XBases: :class:`object`h4jh5jh7h_h9}r(h;]h<]h=]h>]hA]uhCKhDhh.]r(hMXBases: rr}r(h3XBases: h4jubj )r}r(h3X:class:`object`rh4jh5Nh7jh9}r(UreftypeXclassjjXobjectU refdomainXpyrh>]h=]U refexplicith;]h<]hA]jjjjrjjuhCNh.]rj)r}r(h3jh9}r(h;]h<]r(j jXpy-classreh=]h>]hA]uh4jh.]rhMXobjectrr}r(h3Uh4jubah7j&ubaubeubhZ)r}r(h3X Response Bodyrh4jh5jgh7h_h9}r(h;]h<]h=]h>]hA]uhCKhDhh.]rhMX Response Bodyrr}r(h3jh4jubaubeubeubhQ)r}r(h3Uh4h1h5X_/home/prologic/work/circuits/circuits/web/wrappers.py:docstring of circuits.web.wrappers.Statusrh7hUh9}r(h>]h=]h;]h<]hA]Uentries]r(hXX'Status (class in circuits.web.wrappers)hUtrauhCNhDhh.]ubhr)r}r(h3Uh4h1h5jh7huh9}r(hwhxXpyh>]h=]h;]h<]hA]hyXclassrh{juhCNhDhh.]r(h})r}r(h3XStatusrh4jh5hh7hh9}r(h>]rhahhXcircuits.web.wrappersrr}rbh=]h;]h<]hA]rhahjhUhuhCNhDhh.]r(h)r}r(h3Xclass h4jh5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXclass rr}r(h3Uh4jubaubh)r}r(h3Xcircuits.web.wrappers.h4jh5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXcircuits.web.wrappers.rr}r(h3Uh4jubaubh)r}r(h3jh4jh5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXStatusrr}r(h3Uh4jubaubeubh)r}r(h3Uh4jh5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]r(hZ)r}r(h3XBases: :class:`object`h4jh5jh7h_h9}r(h;]h<]h=]h>]hA]uhCKhDhh.]r(hMXBases: rr}r(h3XBases: h4jubj )r}r(h3X:class:`object`rh4jh5Nh7jh9}r(UreftypeXclassjjXobjectU refdomainXpyrh>]h=]U refexplicith;]h<]hA]jjjjjjuhCNh.]rj)r}r(h3jh9}r(h;]h<]r(j jXpy-classreh=]h>]hA]uh4jh.]rhMXobjectrr}r(h3Uh4jubah7j&ubaubeubhZ)r}r(h3XResponse Statusrh4jh5jh7h_h9}r(h;]h<]h=]h>]hA]uhCKhDhh.]rhMXResponse Statusrr}r(h3jh4jubaubeubeubhQ)r}r(h3Uh4h1h5Nh7hUh9}r(h>]h=]h;]h<]hA]Uentries]r(hXX)Response (class in circuits.web.wrappers)hUtrauhCNhDhh.]ubhr)r}r(h3Uh4h1h5Nh7huh9}r(hwhxXpyh>]h=]h;]h<]hA]hyXclassrh{juhCNhDhh.]r(h})r}r(h3X0Response(request, encoding='utf-8', status=None)h4jh5hh7hh9}r (h>]r hahhXcircuits.web.wrappersr r }r bh=]h;]h<]hA]rhahXResponserhUhuhCNhDhh.]r(h)r}r(h3Xclass h4jh5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXclass rr}r(h3Uh4jubaubh)r}r(h3Xcircuits.web.wrappers.h4jh5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXcircuits.web.wrappers.rr}r(h3Uh4jubaubh)r}r (h3jh4jh5hh7hh9}r!(h;]h<]h=]h>]hA]uhCNhDhh.]r"hMXResponser#r$}r%(h3Uh4jubaubh)r&}r'(h3Uh4jh5hh7hh9}r((h;]h<]h=]h>]hA]uhCNhDhh.]r)(h)r*}r+(h3Xrequesth9}r,(h;]h<]h=]h>]hA]uh4j&h.]r-hMXrequestr.r/}r0(h3Uh4j*ubah7hubh)r1}r2(h3Xencoding='utf-8'h9}r3(h;]h<]h=]h>]hA]uh4j&h.]r4hMXencoding='utf-8'r5r6}r7(h3Uh4j1ubah7hubh)r8}r9(h3X status=Noneh9}r:(h;]h<]h=]h>]hA]uh4j&h.]r;hMX status=Noner<r=}r>(h3Uh4j8ubah7hubeubeubh)r?}r@(h3Uh4jh5hh7hh9}rA(h;]h<]h=]h>]hA]uhCNhDhh.]rB(hZ)rC}rD(h3XBases: :class:`object`rEh4j?h5jh7h_h9}rF(h;]h<]h=]h>]hA]uhCKhDhh.]rG(hMXBases: rHrI}rJ(h3XBases: h4jCubj )rK}rL(h3X:class:`object`rMh4jCh5Nh7jh9}rN(UreftypeXclassjjXobjectU refdomainXpyrOh>]h=]U refexplicith;]h<]hA]jjjjjjuhCNh.]rPj)rQ}rR(h3jMh9}rS(h;]h<]rT(j jOXpy-classrUeh=]h>]hA]uh4jKh.]rVhMXobjectrWrX}rY(h3Uh4jQubah7j&ubaubeubhZ)rZ}r[(h3X.Response(sock, request) -> new Response objectr\h4j?h5Xa/home/prologic/work/circuits/circuits/web/wrappers.py:docstring of circuits.web.wrappers.Responser]h7h_h9}r^(h;]h<]h=]h>]hA]uhCKhDhh.]r_hMX.Response(sock, request) -> new Response objectr`ra}rb(h3j\h4jZubaubhZ)rc}rd(h3XA Response object that holds the response to send back to the client. This ensure that the correct data is sent in the correct order.reh4j?h5j]h7h_h9}rf(h;]h<]h=]h>]hA]uhCKhDhh.]rghMXA Response object that holds the response to send back to the client. This ensure that the correct data is sent in the correct order.rhri}rj(h3jeh4jcubaubhZ)rk}rl(h3X4initializes x; see x.__class__.__doc__ for signaturermh4j?h5j]h7h_h9}rn(h;]h<]h=]h>]hA]uhCKhDhh.]rohMX4initializes x; see x.__class__.__doc__ for signaturerprq}rr(h3jmh4jkubaubhQ)rs}rt(h3Uh4j?h5Xf/home/prologic/work/circuits/circuits/web/wrappers.py:docstring of circuits.web.wrappers.Response.bodyruh7hUh9}rv(h>]h=]h;]h<]hA]Uentries]rw(hXX/body (circuits.web.wrappers.Response attribute)h UtrxauhCNhDhh.]ubhr)ry}rz(h3Uh4j?h5juh7huh9}r{(hwhxXpyh>]h=]h;]h<]hA]hyX attributer|h{j|uhCNhDhh.]r}(h})r~}r(h3X Response.bodyh4jyh5hh7hh9}r(h>]rh ahhXcircuits.web.wrappersrr}rbh=]h;]h<]hA]rh ahX Response.bodyhjhuhCNhDhh.]rh)r}r(h3Xbodyh4j~h5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXbodyrr}r(h3Uh4jubaubaubh)r}r(h3Uh4jyh5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhZ)r}r(h3X Response Bodyrh4jh5juh7h_h9}r(h;]h<]h=]h>]hA]uhCKhDhh.]rhMX Response Bodyrr}r(h3jh4jubaubaubeubhQ)r}r(h3Uh4j?h5Xh/home/prologic/work/circuits/circuits/web/wrappers.py:docstring of circuits.web.wrappers.Response.statusrh7hUh9}r(h>]h=]h;]h<]hA]Uentries]r(hXX1status (circuits.web.wrappers.Response attribute)hUtrauhCNhDhh.]ubhr)r}r(h3Uh4j?h5jh7huh9}r(hwhxXpyh>]h=]h;]h<]hA]hyX attributerh{juhCNhDhh.]r(h})r}r(h3XResponse.statush4jh5hh7hh9}r(h>]rhahhXcircuits.web.wrappersrr}rbh=]h;]h<]hA]rhahXResponse.statushjhuhCNhDhh.]rh)r}r(h3Xstatush4jh5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXstatusrr}r(h3Uh4jubaubaubh)r}r(h3Uh4jh5hh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhZ)r}r(h3XResponse Statusrh4jh5jh7h_h9}r(h;]h<]h=]h>]hA]uhCKhDhh.]rhMXResponse Statusrr}r(h3jh4jubaubaubeubhQ)r}r(h3Uh4j?h5Nh7hUh9}r(h>]h=]h;]h<]hA]Uentries]r(hXX/done (circuits.web.wrappers.Response attribute)hUtrauhCNhDhh.]ubhr)r}r(h3Uh4j?h5Nh7huh9}r(hwhxXpyh>]h=]h;]h<]hA]hyX attributerh{juhCNhDhh.]r(h})r}r(h3X Response.doneh4jh5jDh7hh9}r(h>]rhahhXcircuits.web.wrappersrr}rbh=]h;]h<]hA]rhahX Response.donehjhuhCNhDhh.]r(h)r}r(h3Xdoneh4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXdonerr}r(h3Uh4jubaubh)r}r(h3X = Falseh4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMX = Falserr}r(h3Uh4jubaubeubh)r}r(h3Uh4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubhQ)r}r(h3Uh4j?h5Nh7hUh9}r(h>]h=]h;]h<]hA]Uentries]r(hXX0close (circuits.web.wrappers.Response attribute)h UtrauhCNhDhh.]ubhr)r}r(h3Uh4j?h5Nh7huh9}r(hwhxXpyh>]h=]h;]h<]hA]hyX attributerh{juhCNhDhh.]r(h})r}r(h3XResponse.closeh4jh5jDh7hh9}r(h>]rh ahhXcircuits.web.wrappersrr}rbh=]h;]h<]hA]rh ahXResponse.closehjhuhCNhDhh.]r(h)r}r(h3Xcloseh4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXcloserr}r(h3Uh4jubaubh)r}r(h3X = Falseh4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMX = Falserr}r(h3Uh4jubaubeubh)r}r(h3Uh4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubhQ)r }r (h3Uh4j?h5Nh7hUh9}r (h>]h=]h;]h<]hA]Uentries]r (hXX1stream (circuits.web.wrappers.Response attribute)hUtr auhCNhDhh.]ubhr)r}r(h3Uh4j?h5Nh7huh9}r(hwhxXpyh>]h=]h;]h<]hA]hyX attributerh{juhCNhDhh.]r(h})r}r(h3XResponse.streamh4jh5jDh7hh9}r(h>]rhahhXcircuits.web.wrappersrr}rbh=]h;]h<]hA]rhahXResponse.streamhjhuhCNhDhh.]r(h)r}r(h3Xstreamh4jh5jDh7hh9}r(h;]h<]h=]h>]hA]uhCNhDhh.]rhMXstreamr r!}r"(h3Uh4jubaubh)r#}r$(h3X = Falseh4jh5jDh7hh9}r%(h;]h<]h=]h>]hA]uhCNhDhh.]r&hMX = Falser'r(}r)(h3Uh4j#ubaubeubh)r*}r+(h3Uh4jh5jDh7hh9}r,(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubhQ)r-}r.(h3Uh4j?h5Nh7hUh9}r/(h>]h=]h;]h<]hA]Uentries]r0(hXX2chunked (circuits.web.wrappers.Response attribute)h"Utr1auhCNhDhh.]ubhr)r2}r3(h3Uh4j?h5Nh7huh9}r4(hwhxXpyh>]h=]h;]h<]hA]hyX attributer5h{j5uhCNhDhh.]r6(h})r7}r8(h3XResponse.chunkedh4j2h5jDh7hh9}r9(h>]r:h"ahhXcircuits.web.wrappersr;r<}r=bh=]h;]h<]hA]r>h"ahXResponse.chunkedhjhuhCNhDhh.]r?(h)r@}rA(h3Xchunkedh4j7h5jDh7hh9}rB(h;]h<]h=]h>]hA]uhCNhDhh.]rChMXchunkedrDrE}rF(h3Uh4j@ubaubh)rG}rH(h3X = Falseh4j7h5jDh7hh9}rI(h;]h<]h=]h>]hA]uhCNhDhh.]rJhMX = FalserKrL}rM(h3Uh4jGubaubeubh)rN}rO(h3Uh4j2h5jDh7hh9}rP(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubhQ)rQ}rR(h3Uh4j?h5Nh7hUh9}rS(h>]h=]h;]h<]hA]Uentries]rT(hXX1prepare() (circuits.web.wrappers.Response method)hUtrUauhCNhDhh.]ubhr)rV}rW(h3Uh4j?h5Nh7huh9}rX(hwhxXpyh>]h=]h;]h<]hA]hyXmethodrYh{jYuhCNhDhh.]rZ(h})r[}r\(h3XResponse.prepare()r]h4jVh5hh7hh9}r^(h>]r_hahhXcircuits.web.wrappersr`ra}rbbh=]h;]h<]hA]rchahXResponse.preparehjhuhCNhDhh.]rd(h)re}rf(h3Xprepareh4j[h5hh7hh9}rg(h;]h<]h=]h>]hA]uhCNhDhh.]rhhMXpreparerirj}rk(h3Uh4jeubaubh)rl}rm(h3Uh4j[h5hh7hh9}rn(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubh)ro}rp(h3Uh4jVh5hh7hh9}rq(h;]h<]h=]h>]hA]uhCNhDhh.]ubeubeubeubeubah3UU transformerrrNU footnote_refsrs}rtUrefnamesru}rvUsymbol_footnotesrw]rxUautofootnote_refsry]rzUsymbol_footnote_refsr{]r|U citationsr}]r~hDhU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNhJNUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh6Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(h-h1hjhh~h j~h j1h j?h jh jUhjhjhjhj'hj hjyhjhj!hjhhhjKhj[hjh@cdocutils.nodes target r)r}r(h3Uh4h1h5hTh7Utargetrh9}r(h;]h>]rh@ah=]Uismodh<]hA]uhCKhDhh.]ubhjhjphjhjhjh jh!jBh"j7hjguUsubstitution_namesr}rh7hDh9}r(h;]h>]h=]Usourceh6h<]hA]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.io.process.doctree0000644000014400001440000003312012425011103026204 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.io.process.ProcessqXcircuits.io.process moduleqNX!circuits.io.process.Process.writeqX"circuits.io.process.Process.signalq X circuits.io.process.Process.waitq X"circuits.io.process.Process.statusq X!circuits.io.process.Process.startq X circuits.io.process.Process.killq X#circuits.io.process.Process.channelqX circuits.io.process.Process.initqX circuits.io.process.Process.stopquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhUcircuits-io-process-moduleqhhh h h h h h h h h h hhhhhhuUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceq UUparentq!hUsourceq"XD/home/prologic/work/circuits/docs/source/api/circuits.io.process.rstq#Utagnameq$Usectionq%U attributesq&}q'(Udupnamesq(]Uclassesq)]Ubackrefsq*]Uidsq+]q,(Xmodule-circuits.io.processq-heUnamesq.]q/hauUlineq0KUdocumentq1hh]q2(cdocutils.nodes title q3)q4}q5(h Xcircuits.io.process moduleq6h!hh"h#h$Utitleq7h&}q8(h(]h)]h*]h+]h.]uh0Kh1hh]q9cdocutils.nodes Text q:Xcircuits.io.process moduleq;q<}q=(h h6h!h4ubaubcsphinx.addnodes index q>)q?}q@(h Uh!hh"U qAh$UindexqBh&}qC(h+]h*]h(]h)]h.]Uentries]qD(UsingleqEXcircuits.io.process (module)Xmodule-circuits.io.processUtqFauh0Kh1hh]ubcdocutils.nodes paragraph qG)qH}qI(h XProcessqJh!hh"XT/home/prologic/work/circuits/circuits/io/process.py:docstring of circuits.io.processqKh$U paragraphqLh&}qM(h(]h)]h*]h+]h.]uh0Kh1hh]qNh:XProcessqOqP}qQ(h hJh!hHubaubhG)qR}qS(h XNThis module implements a wrapper for basic ``subprocess.Popen`` functionality.qTh!hh"hKh$hLh&}qU(h(]h)]h*]h+]h.]uh0Kh1hh]qV(h:X+This module implements a wrapper for basic qWqX}qY(h X+This module implements a wrapper for basic h!hRubcdocutils.nodes literal qZ)q[}q\(h X``subprocess.Popen``h&}q](h(]h)]h*]h+]h.]uh!hRh]q^h:Xsubprocess.Popenq_q`}qa(h Uh!h[ubah$Uliteralqbubh:X functionality.qcqd}qe(h X functionality.h!hRubeubh>)qf}qg(h Uh!hh"Nh$hBh&}qh(h+]h*]h(]h)]h.]Uentries]qi(hEX&Process (class in circuits.io.process)hUtqjauh0Nh1hh]ubcsphinx.addnodes desc qk)ql}qm(h Uh!hh"Nh$Udescqnh&}qo(UnoindexqpUdomainqqXpyh+]h*]h(]h)]h.]UobjtypeqrXclassqsUdesctypeqthsuh0Nh1hh]qu(csphinx.addnodes desc_signature qv)qw}qx(h XProcess(*args, **kwargs)h!hlh"U qyh$Udesc_signatureqzh&}q{(h+]q|haUmoduleq}cdocutils.nodes reprunicode q~Xcircuits.io.processqq}qbh*]h(]h)]h.]qhaUfullnameqXProcessqUclassqUUfirstquh0Nh1hh]q(csphinx.addnodes desc_annotation q)q}q(h Xclass h!hwh"hyh$Udesc_annotationqh&}q(h(]h)]h*]h+]h.]uh0Nh1hh]qh:Xclass qq}q(h Uh!hubaubcsphinx.addnodes desc_addname q)q}q(h Xcircuits.io.process.h!hwh"hyh$U desc_addnameqh&}q(h(]h)]h*]h+]h.]uh0Nh1hh]qh:Xcircuits.io.process.qq}q(h Uh!hubaubcsphinx.addnodes desc_name q)q}q(h hh!hwh"hyh$U desc_nameqh&}q(h(]h)]h*]h+]h.]uh0Nh1hh]qh:XProcessqq}q(h Uh!hubaubcsphinx.addnodes desc_parameterlist q)q}q(h Uh!hwh"hyh$Udesc_parameterlistqh&}q(h(]h)]h*]h+]h.]uh0Nh1hh]q(csphinx.addnodes desc_parameter q)q}q(h X*argsh&}q(h(]h)]h*]h+]h.]uh!hh]qh:X*argsqq}q(h Uh!hubah$Udesc_parameterqubh)q}q(h X**kwargsh&}q(h(]h)]h*]h+]h.]uh!hh]qh:X**kwargsqq}q(h Uh!hubah$hubeubeubcsphinx.addnodes desc_content q)q}q(h Uh!hlh"hyh$U desc_contentqh&}q(h(]h)]h*]h+]h.]uh0Nh1hh]q(hG)q}q(h X6Bases: :class:`circuits.core.components.BaseComponent`qh!hh"U qh$hLh&}q(h(]h)]h*]h+]h.]uh0Kh1hh]q(h:XBases: qŅq}q(h XBases: h!hubcsphinx.addnodes pending_xref q)q}q(h X/:class:`circuits.core.components.BaseComponent`qh!hh"Nh$U pending_xrefqh&}q(UreftypeXclassUrefwarnqΉU reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqh+]h*]U refexplicith(]h)]h.]UrefdocqXapi/circuits.io.processqUpy:classqhU py:moduleqXcircuits.io.processquh0Nh]qhZ)q}q(h hh&}q(h(]h)]q(UxrefqhXpy-classqeh*]h+]h.]uh!hh]qh:X&circuits.core.components.BaseComponentqޅq}q(h Uh!hubah$hbubaubeubhG)q}q(h X4initializes x; see x.__class__.__doc__ for signatureqh!hh"X\/home/prologic/work/circuits/circuits/io/process.py:docstring of circuits.io.process.Processqh$hLh&}q(h(]h)]h*]h+]h.]uh0Kh1hh]qh:X4initializes x; see x.__class__.__doc__ for signatureq煁q}q(h hh!hubaubh>)q}q(h Uh!hh"Nh$hBh&}q(h+]h*]h(]h)]h.]Uentries]q(hEX/channel (circuits.io.process.Process attribute)hUtqauh0Nh1hh]ubhk)q}q(h Uh!hh"Nh$hnh&}q(hphqXpyh+]h*]h(]h)]h.]hrX attributeqhthuh0Nh1hh]q(hv)q}q(h XProcess.channelh!hh"U qh$hzh&}q(h+]qhah}h~Xcircuits.io.processqq}qbh*]h(]h)]h.]qhahXProcess.channelhhhuh0Nh1hh]q(h)q}q(h Xchannelh!hh"hh$hh&}r(h(]h)]h*]h+]h.]uh0Nh1hh]rh:Xchannelrr}r(h Uh!hubaubh)r}r(h X = 'process'h!hh"hh$hh&}r(h(]h)]h*]h+]h.]uh0Nh1hh]rh:X = 'process'r r }r (h Uh!jubaubeubh)r }r (h Uh!hh"hh$hh&}r(h(]h)]h*]h+]h.]uh0Nh1hh]ubeubh>)r}r(h Uh!hh"Nh$hBh&}r(h+]h*]h(]h)]h.]Uentries]r(hEX+init() (circuits.io.process.Process method)hUtrauh0Nh1hh]ubhk)r}r(h Uh!hh"Nh$hnh&}r(hphqXpyh+]h*]h(]h)]h.]hrXmethodrhtjuh0Nh1hh]r(hv)r}r(h X)Process.init(args, cwd=None, shell=False)h!jh"hyh$hzh&}r(h+]rhah}h~Xcircuits.io.processrr}rbh*]h(]h)]h.]r hahX Process.inithhhuh0Nh1hh]r!(h)r"}r#(h Xinith!jh"hyh$hh&}r$(h(]h)]h*]h+]h.]uh0Nh1hh]r%h:Xinitr&r'}r((h Uh!j"ubaubh)r)}r*(h Uh!jh"hyh$hh&}r+(h(]h)]h*]h+]h.]uh0Nh1hh]r,(h)r-}r.(h Xargsh&}r/(h(]h)]h*]h+]h.]uh!j)h]r0h:Xargsr1r2}r3(h Uh!j-ubah$hubh)r4}r5(h Xcwd=Noneh&}r6(h(]h)]h*]h+]h.]uh!j)h]r7h:Xcwd=Noner8r9}r:(h Uh!j4ubah$hubh)r;}r<(h X shell=Falseh&}r=(h(]h)]h*]h+]h.]uh!j)h]r>h:X shell=Falser?r@}rA(h Uh!j;ubah$hubeubeubh)rB}rC(h Uh!jh"hyh$hh&}rD(h(]h)]h*]h+]h.]uh0Nh1hh]ubeubh>)rE}rF(h Uh!hh"Nh$hBh&}rG(h+]h*]h(]h)]h.]Uentries]rH(hEX,start() (circuits.io.process.Process method)h UtrIauh0Nh1hh]ubhk)rJ}rK(h Uh!hh"Nh$hnh&}rL(hphqXpyh+]h*]h(]h)]h.]hrXmethodrMhtjMuh0Nh1hh]rN(hv)rO}rP(h XProcess.start()h!jJh"hyh$hzh&}rQ(h+]rRh ah}h~Xcircuits.io.processrSrT}rUbh*]h(]h)]h.]rVh ahX Process.starthhhuh0Nh1hh]rW(h)rX}rY(h Xstarth!jOh"hyh$hh&}rZ(h(]h)]h*]h+]h.]uh0Nh1hh]r[h:Xstartr\r]}r^(h Uh!jXubaubh)r_}r`(h Uh!jOh"hyh$hh&}ra(h(]h)]h*]h+]h.]uh0Nh1hh]ubeubh)rb}rc(h Uh!jJh"hyh$hh&}rd(h(]h)]h*]h+]h.]uh0Nh1hh]ubeubh>)re}rf(h Uh!hh"Nh$hBh&}rg(h+]h*]h(]h)]h.]Uentries]rh(hEX+stop() (circuits.io.process.Process method)hUtriauh0Nh1hh]ubhk)rj}rk(h Uh!hh"Nh$hnh&}rl(hphqXpyh+]h*]h(]h)]h.]hrXmethodrmhtjmuh0Nh1hh]rn(hv)ro}rp(h XProcess.stop()h!jjh"hyh$hzh&}rq(h+]rrhah}h~Xcircuits.io.processrsrt}rubh*]h(]h)]h.]rvhahX Process.stophhhuh0Nh1hh]rw(h)rx}ry(h Xstoph!joh"hyh$hh&}rz(h(]h)]h*]h+]h.]uh0Nh1hh]r{h:Xstopr|r}}r~(h Uh!jxubaubh)r}r(h Uh!joh"hyh$hh&}r(h(]h)]h*]h+]h.]uh0Nh1hh]ubeubh)r}r(h Uh!jjh"hyh$hh&}r(h(]h)]h*]h+]h.]uh0Nh1hh]ubeubh>)r}r(h Uh!hh"Nh$hBh&}r(h+]h*]h(]h)]h.]Uentries]r(hEX+kill() (circuits.io.process.Process method)h Utrauh0Nh1hh]ubhk)r}r(h Uh!hh"Nh$hnh&}r(hphqXpyh+]h*]h(]h)]h.]hrXmethodrhtjuh0Nh1hh]r(hv)r}r(h XProcess.kill()h!jh"hyh$hzh&}r(h+]rh ah}h~Xcircuits.io.processrr}rbh*]h(]h)]h.]rh ahX Process.killhhhuh0Nh1hh]r(h)r}r(h Xkillh!jh"hyh$hh&}r(h(]h)]h*]h+]h.]uh0Nh1hh]rh:Xkillrr}r(h Uh!jubaubh)r}r(h Uh!jh"hyh$hh&}r(h(]h)]h*]h+]h.]uh0Nh1hh]ubeubh)r}r(h Uh!jh"hyh$hh&}r(h(]h)]h*]h+]h.]uh0Nh1hh]ubeubh>)r}r(h Uh!hh"Nh$hBh&}r(h+]h*]h(]h)]h.]Uentries]r(hEX-signal() (circuits.io.process.Process method)h Utrauh0Nh1hh]ubhk)r}r(h Uh!hh"Nh$hnh&}r(hphqXpyh+]h*]h(]h)]h.]hrXmethodrhtjuh0Nh1hh]r(hv)r}r(h XProcess.signal(signal)h!jh"hyh$hzh&}r(h+]rh ah}h~Xcircuits.io.processrr}rbh*]h(]h)]h.]rh ahXProcess.signalhhhuh0Nh1hh]r(h)r}r(h Xsignalh!jh"hyh$hh&}r(h(]h)]h*]h+]h.]uh0Nh1hh]rh:Xsignalrr}r(h Uh!jubaubh)r}r(h Uh!jh"hyh$hh&}r(h(]h)]h*]h+]h.]uh0Nh1hh]rh)r}r(h Xsignalh&}r(h(]h)]h*]h+]h.]uh!jh]rh:Xsignalrr}r(h Uh!jubah$hubaubeubh)r}r(h Uh!jh"hyh$hh&}r(h(]h)]h*]h+]h.]uh0Nh1hh]ubeubh>)r}r(h Uh!hh"Nh$hBh&}r(h+]h*]h(]h)]h.]Uentries]r(hEX+wait() (circuits.io.process.Process method)h Utrauh0Nh1hh]ubhk)r}r(h Uh!hh"Nh$hnh&}r(hphqXpyh+]h*]h(]h)]h.]hrXmethodrhtjuh0Nh1hh]r(hv)r}r(h XProcess.wait()h!jh"hyh$hzh&}r(h+]rh ah}h~Xcircuits.io.processrr}rbh*]h(]h)]h.]rh ahX Process.waithhhuh0Nh1hh]r(h)r}r(h Xwaith!jh"hyh$hh&}r(h(]h)]h*]h+]h.]uh0Nh1hh]rh:Xwaitrr}r(h Uh!jubaubh)r}r(h Uh!jh"hyh$hh&}r(h(]h)]h*]h+]h.]uh0Nh1hh]ubeubh)r}r(h Uh!jh"hyh$hh&}r(h(]h)]h*]h+]h.]uh0Nh1hh]ubeubh>)r}r(h Uh!hh"Nh$hBh&}r(h+]h*]h(]h)]h.]Uentries]r(hEX,write() (circuits.io.process.Process method)hUtrauh0Nh1hh]ubhk)r}r(h Uh!hh"Nh$hnh&}r(hphqXpyh+]h*]h(]h)]h.]hrXmethodrhtjuh0Nh1hh]r(hv)r}r(h XProcess.write(data)h!jh"hyh$hzh&}r(h+]rhah}h~Xcircuits.io.processrr}rbh*]h(]h)]h.]rhahX Process.writehhhuh0Nh1hh]r(h)r}r(h Xwriteh!jh"hyh$hh&}r(h(]h)]h*]h+]h.]uh0Nh1hh]rh:Xwriterr}r(h Uh!jubaubh)r}r(h Uh!jh"hyh$hh&}r (h(]h)]h*]h+]h.]uh0Nh1hh]r h)r }r (h Xdatah&}r (h(]h)]h*]h+]h.]uh!jh]rh:Xdatarr}r(h Uh!j ubah$hubaubeubh)r}r(h Uh!jh"hyh$hh&}r(h(]h)]h*]h+]h.]uh0Nh1hh]ubeubh>)r}r(h Uh!hh"Nh$hBh&}r(h+]h*]h(]h)]h.]Uentries]r(hEX.status (circuits.io.process.Process attribute)h Utrauh0Nh1hh]ubhk)r}r(h Uh!hh"Nh$hnh&}r(hphqXpyh+]h*]h(]h)]h.]hrX attributerhtjuh0Nh1hh]r(hv)r}r (h XProcess.statusr!h!jh"hyh$hzh&}r"(h+]r#h ah}h~Xcircuits.io.processr$r%}r&bh*]h(]h)]h.]r'h ahXProcess.statushhhuh0Nh1hh]r(h)r)}r*(h Xstatush!jh"hyh$hh&}r+(h(]h)]h*]h+]h.]uh0Nh1hh]r,h:Xstatusr-r.}r/(h Uh!j)ubaubaubh)r0}r1(h Uh!jh"hyh$hh&}r2(h(]h)]h*]h+]h.]uh0Nh1hh]ubeubeubeubeubah UU transformerr3NU footnote_refsr4}r5Urefnamesr6}r7Usymbol_footnotesr8]r9Uautofootnote_refsr:]r;Usymbol_footnote_refsr<]r=U citationsr>]r?h1hU current_liner@NUtransform_messagesrA]rBUreporterrCNUid_startrDKU autofootnotesrE]rFU citation_refsrG}rHUindirect_targetsrI]rJUsettingsrK(cdocutils.frontend Values rLorM}rN(Ufootnote_backlinksrOKUrecord_dependenciesrPNU rfc_base_urlrQUhttp://tools.ietf.org/html/rRU tracebackrSUpep_referencesrTNUstrip_commentsrUNU toc_backlinksrVUentryrWU language_coderXUenrYU datestamprZNU report_levelr[KU _destinationr\NU halt_levelr]KU strip_classesr^Nh7NUerror_encoding_error_handlerr_Ubackslashreplacer`UdebugraNUembed_stylesheetrbUoutput_encoding_error_handlerrcUstrictrdU sectnum_xformreKUdump_transformsrfNU docinfo_xformrgKUwarning_streamrhNUpep_file_url_templateriUpep-%04drjUexit_status_levelrkKUconfigrlNUstrict_visitorrmNUcloak_email_addressesrnUtrim_footnote_reference_spaceroUenvrpNUdump_pseudo_xmlrqNUexpose_internalsrrNUsectsubtitle_xformrsU source_linkrtNUrfc_referencesruNUoutput_encodingrvUutf-8rwU source_urlrxNUinput_encodingryU utf-8-sigrzU_disable_configr{NU id_prefixr|UU tab_widthr}KUerror_encodingr~UUTF-8rU_sourcerh#Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjdUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(h jhhwhjh jh jhhh jOh jhhhjhjoh-cdocutils.nodes target r)r}r(h Uh!hh"hAh$Utargetrh&}r(h(]h+]rh-ah*]Uismodh)]h.]uh0Kh1hh]ubuUsubstitution_namesr}rh$h1h&}r(h(]h+]h*]Usourceh#h)]h.]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.io.file.doctree0000644000014400001440000003117212425011103025452 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.io.file.File.closedqXcircuits.io.file moduleqNXcircuits.io.file.File.closeqXcircuits.io.file.File.modeq Xcircuits.io.file.File.initq Xcircuits.io.file.File.writeq Xcircuits.io.file.File.seekq Xcircuits.io.file.File.channelq Xcircuits.io.file.FileqXcircuits.io.file.File.filenamequUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhUcircuits-io-file-moduleqhhh h h h h h h h h h hhhhuUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentq hUsourceq!XA/home/prologic/work/circuits/docs/source/api/circuits.io.file.rstq"Utagnameq#Usectionq$U attributesq%}q&(Udupnamesq']Uclassesq(]Ubackrefsq)]Uidsq*]q+(Xmodule-circuits.io.fileq,heUnamesq-]q.hauUlineq/KUdocumentq0hh]q1(cdocutils.nodes title q2)q3}q4(hXcircuits.io.file moduleq5h hh!h"h#Utitleq6h%}q7(h']h(]h)]h*]h-]uh/Kh0hh]q8cdocutils.nodes Text q9Xcircuits.io.file moduleq:q;}q<(hh5h h3ubaubcsphinx.addnodes index q=)q>}q?(hUh hh!U q@h#UindexqAh%}qB(h*]h)]h']h(]h-]Uentries]qC(UsingleqDXcircuits.io.file (module)Xmodule-circuits.io.fileUtqEauh/Kh0hh]ubcdocutils.nodes paragraph qF)qG}qH(hXFile I/OqIh hh!XN/home/prologic/work/circuits/circuits/io/file.py:docstring of circuits.io.fileqJh#U paragraphqKh%}qL(h']h(]h)]h*]h-]uh/Kh0hh]qMh9XFile I/OqNqO}qP(hhIh hGubaubhF)qQ}qR(hX4This module implements a wrapper for basic File I/O.qSh hh!hJh#hKh%}qT(h']h(]h)]h*]h-]uh/Kh0hh]qUh9X4This module implements a wrapper for basic File I/O.qVqW}qX(hhSh hQubaubh=)qY}qZ(hUh hh!Nh#hAh%}q[(h*]h)]h']h(]h-]Uentries]q\(hDX File (class in circuits.io.file)hUtq]auh/Nh0hh]ubcsphinx.addnodes desc q^)q_}q`(hUh hh!Nh#Udescqah%}qb(UnoindexqcUdomainqdXpyh*]h)]h']h(]h-]UobjtypeqeXclassqfUdesctypeqghfuh/Nh0hh]qh(csphinx.addnodes desc_signature qi)qj}qk(hXFile(*args, **kwargs)h h_h!U qlh#Udesc_signatureqmh%}qn(h*]qohaUmoduleqpcdocutils.nodes reprunicode qqXcircuits.io.fileqrqs}qtbh)]h']h(]h-]quhaUfullnameqvXFileqwUclassqxUUfirstqyuh/Nh0hh]qz(csphinx.addnodes desc_annotation q{)q|}q}(hXclass h hjh!hlh#Udesc_annotationq~h%}q(h']h(]h)]h*]h-]uh/Nh0hh]qh9Xclass qq}q(hUh h|ubaubcsphinx.addnodes desc_addname q)q}q(hXcircuits.io.file.h hjh!hlh#U desc_addnameqh%}q(h']h(]h)]h*]h-]uh/Nh0hh]qh9Xcircuits.io.file.qq}q(hUh hubaubcsphinx.addnodes desc_name q)q}q(hhwh hjh!hlh#U desc_nameqh%}q(h']h(]h)]h*]h-]uh/Nh0hh]qh9XFileqq}q(hUh hubaubcsphinx.addnodes desc_parameterlist q)q}q(hUh hjh!hlh#Udesc_parameterlistqh%}q(h']h(]h)]h*]h-]uh/Nh0hh]q(csphinx.addnodes desc_parameter q)q}q(hX*argsh%}q(h']h(]h)]h*]h-]uh hh]qh9X*argsqq}q(hUh hubah#Udesc_parameterqubh)q}q(hX**kwargsh%}q(h']h(]h)]h*]h-]uh hh]qh9X**kwargsqq}q(hUh hubah#hubeubeubcsphinx.addnodes desc_content q)q}q(hUh h_h!hlh#U desc_contentqh%}q(h']h(]h)]h*]h-]uh/Nh0hh]q(hF)q}q(hX2Bases: :class:`circuits.core.components.Component`qh hh!U qh#hKh%}q(h']h(]h)]h*]h-]uh/Kh0hh]q(h9XBases: qq}q(hXBases: h hubcsphinx.addnodes pending_xref q)q}q(hX+:class:`circuits.core.components.Component`qh hh!Nh#U pending_xrefqh%}q(UreftypeXclassUrefwarnqU reftargetqX"circuits.core.components.ComponentU refdomainXpyqh*]h)]U refexplicith']h(]h-]UrefdocqXapi/circuits.io.fileqUpy:classqhwU py:moduleqXcircuits.io.filequh/Nh]qcdocutils.nodes literal q)q}q(hhh%}q(h']h(]q(UxrefqhXpy-classqeh)]h*]h-]uh hh]qh9X"circuits.core.components.Componentq҅q}q(hUh hubah#UliteralqubaubeubhF)q}q(hX4initializes x; see x.__class__.__doc__ for signatureqh hh!XS/home/prologic/work/circuits/circuits/io/file.py:docstring of circuits.io.file.Fileqh#hKh%}q(h']h(]h)]h*]h-]uh/Kh0hh]qh9X4initializes x; see x.__class__.__doc__ for signatureq܅q}q(hhh hubaubh=)q}q(hUh hh!Nh#hAh%}q(h*]h)]h']h(]h-]Uentries]q(hDX)channel (circuits.io.file.File attribute)h Utqauh/Nh0hh]ubh^)q}q(hUh hh!Nh#hah%}q(hchdXpyh*]h)]h']h(]h-]heX attributeqhghuh/Nh0hh]q(hi)q}q(hX File.channelh hh!U qh#hmh%}q(h*]qh ahphqXcircuits.io.fileqq}qbh)]h']h(]h-]qh ahvX File.channelhxhwhyuh/Nh0hh]q(h)q}q(hXchannelh hh!hh#hh%}q(h']h(]h)]h*]h-]uh/Nh0hh]qh9Xchannelqq}q(hUh hubaubh{)q}q(hX = 'file'h hh!hh#h~h%}q(h']h(]h)]h*]h-]uh/Nh0hh]qh9X = 'file'qq}r(hUh hubaubeubh)r}r(hUh hh!hh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]ubeubh=)r}r(hUh hh!Nh#hAh%}r(h*]h)]h']h(]h-]Uentries]r(hDX%init() (circuits.io.file.File method)h Utrauh/Nh0hh]ubh^)r }r (hUh hh!Nh#hah%}r (hchdXpyh*]h)]h']h(]h-]heXmethodr hgj uh/Nh0hh]r (hi)r}r(hXJFile.init(filename, mode='r', bufsize=4096, encoding=None, channel='file')h j h!hlh#hmh%}r(h*]rh ahphqXcircuits.io.filerr}rbh)]h']h(]h-]rh ahvX File.inithxhwhyuh/Nh0hh]r(h)r}r(hXinith jh!hlh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]rh9Xinitrr}r(hUh jubaubh)r}r(hUh jh!hlh#hh%}r (h']h(]h)]h*]h-]uh/Nh0hh]r!(h)r"}r#(hXfilenameh%}r$(h']h(]h)]h*]h-]uh jh]r%h9Xfilenamer&r'}r((hUh j"ubah#hubh)r)}r*(hXmode='r'h%}r+(h']h(]h)]h*]h-]uh jh]r,h9Xmode='r'r-r.}r/(hUh j)ubah#hubh)r0}r1(hX bufsize=4096h%}r2(h']h(]h)]h*]h-]uh jh]r3h9X bufsize=4096r4r5}r6(hUh j0ubah#hubh)r7}r8(hX encoding=Noneh%}r9(h']h(]h)]h*]h-]uh jh]r:h9X encoding=Noner;r<}r=(hUh j7ubah#hubh)r>}r?(hXchannel='file'h%}r@(h']h(]h)]h*]h-]uh jh]rAh9Xchannel='file'rBrC}rD(hUh j>ubah#hubeubeubh)rE}rF(hUh j h!hlh#hh%}rG(h']h(]h)]h*]h-]uh/Nh0hh]ubeubh=)rH}rI(hUh hh!Nh#hAh%}rJ(h*]h)]h']h(]h-]Uentries]rK(hDX(closed (circuits.io.file.File attribute)hUtrLauh/Nh0hh]ubh^)rM}rN(hUh hh!Nh#hah%}rO(hchdXpyh*]h)]h']h(]h-]heX attributerPhgjPuh/Nh0hh]rQ(hi)rR}rS(hX File.closedh jMh!hlh#hmh%}rT(h*]rUhahphqXcircuits.io.filerVrW}rXbh)]h']h(]h-]rYhahvX File.closedhxhwhyuh/Nh0hh]rZh)r[}r\(hXclosedh jRh!hlh#hh%}r](h']h(]h)]h*]h-]uh/Nh0hh]r^h9Xclosedr_r`}ra(hUh j[ubaubaubh)rb}rc(hUh jMh!hlh#hh%}rd(h']h(]h)]h*]h-]uh/Nh0hh]ubeubh=)re}rf(hUh hh!Nh#hAh%}rg(h*]h)]h']h(]h-]Uentries]rh(hDX*filename (circuits.io.file.File attribute)hUtriauh/Nh0hh]ubh^)rj}rk(hUh hh!Nh#hah%}rl(hchdXpyh*]h)]h']h(]h-]heX attributermhgjmuh/Nh0hh]rn(hi)ro}rp(hX File.filenameh jjh!hlh#hmh%}rq(h*]rrhahphqXcircuits.io.filersrt}rubh)]h']h(]h-]rvhahvX File.filenamehxhwhyuh/Nh0hh]rwh)rx}ry(hXfilenameh joh!hlh#hh%}rz(h']h(]h)]h*]h-]uh/Nh0hh]r{h9Xfilenamer|r}}r~(hUh jxubaubaubh)r}r(hUh jjh!hlh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]ubeubh=)r}r(hUh hh!Nh#hAh%}r(h*]h)]h']h(]h-]Uentries]r(hDX&mode (circuits.io.file.File attribute)h Utrauh/Nh0hh]ubh^)r}r(hUh hh!Nh#hah%}r(hchdXpyh*]h)]h']h(]h-]heX attributerhgjuh/Nh0hh]r(hi)r}r(hX File.modeh jh!hlh#hmh%}r(h*]rh ahphqXcircuits.io.filerr}rbh)]h']h(]h-]rh ahvX File.modehxhwhyuh/Nh0hh]rh)r}r(hXmodeh jh!hlh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]rh9Xmoderr}r(hUh jubaubaubh)r}r(hUh jh!hlh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]ubeubh=)r}r(hUh hh!Nh#hAh%}r(h*]h)]h']h(]h-]Uentries]r(hDX&close() (circuits.io.file.File method)hUtrauh/Nh0hh]ubh^)r}r(hUh hh!Nh#hah%}r(hchdXpyh*]h)]h']h(]h-]heXmethodrhgjuh/Nh0hh]r(hi)r}r(hX File.close()h jh!hlh#hmh%}r(h*]rhahphqXcircuits.io.filerr}rbh)]h']h(]h-]rhahvX File.closehxhwhyuh/Nh0hh]r(h)r}r(hXcloseh jh!hlh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]rh9Xcloserr}r(hUh jubaubh)r}r(hUh jh!hlh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]ubeubh)r}r(hUh jh!hlh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]ubeubh=)r}r(hUh hh!Nh#hAh%}r(h*]h)]h']h(]h-]Uentries]r(hDX%seek() (circuits.io.file.File method)h Utrauh/Nh0hh]ubh^)r}r(hUh hh!Nh#hah%}r(hchdXpyh*]h)]h']h(]h-]heXmethodrhgjuh/Nh0hh]r(hi)r}r(hXFile.seek(offset, whence=0)h jh!hlh#hmh%}r(h*]rh ahphqXcircuits.io.filerr}rbh)]h']h(]h-]rh ahvX File.seekhxhwhyuh/Nh0hh]r(h)r}r(hXseekh jh!hlh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]rh9Xseekrr}r(hUh jubaubh)r}r(hUh jh!hlh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]r(h)r}r(hXoffseth%}r(h']h(]h)]h*]h-]uh jh]rh9Xoffsetrr}r(hUh jubah#hubh)r}r(hXwhence=0h%}r(h']h(]h)]h*]h-]uh jh]rh9Xwhence=0rr}r(hUh jubah#hubeubeubh)r}r(hUh jh!hlh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]ubeubh=)r}r(hUh hh!Nh#hAh%}r(h*]h)]h']h(]h-]Uentries]r(hDX&write() (circuits.io.file.File method)h Utrauh/Nh0hh]ubh^)r}r(hUh hh!Nh#hah%}r(hchdXpyh*]h)]h']h(]h-]heXmethodrhgjuh/Nh0hh]r(hi)r}r(hXFile.write(data)rh jh!hlh#hmh%}r(h*]rh ahphqXcircuits.io.filerr}rbh)]h']h(]h-]rh ahvX File.writehxhwhyuh/Nh0hh]r(h)r}r(hXwriteh jh!hlh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]rh9Xwriterr}r(hUh jubaubh)r }r (hUh jh!hlh#hh%}r (h']h(]h)]h*]h-]uh/Nh0hh]r h)r }r(hXdatah%}r(h']h(]h)]h*]h-]uh j h]rh9Xdatarr}r(hUh j ubah#hubaubeubh)r}r(hUh jh!hlh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]ubeubeubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr ]r!U citationsr"]r#h0hU current_liner$NUtransform_messagesr%]r&Ureporterr'NUid_startr(KU autofootnotesr)]r*U citation_refsr+}r,Uindirect_targetsr-]r.Usettingsr/(cdocutils.frontend Values r0or1}r2(Ufootnote_backlinksr3KUrecord_dependenciesr4NU rfc_base_urlr5Uhttp://tools.ietf.org/html/r6U tracebackr7Upep_referencesr8NUstrip_commentsr9NU toc_backlinksr:Uentryr;U language_coder<Uenr=U datestampr>NU report_levelr?KU _destinationr@NU halt_levelrAKU strip_classesrBNh6NUerror_encoding_error_handlerrCUbackslashreplacerDUdebugrENUembed_stylesheetrFUoutput_encoding_error_handlerrGUstrictrHU sectnum_xformrIKUdump_transformsrJNU docinfo_xformrKKUwarning_streamrLNUpep_file_url_templaterMUpep-%04drNUexit_status_levelrOKUconfigrPNUstrict_visitorrQNUcloak_email_addressesrRUtrim_footnote_reference_spacerSUenvrTNUdump_pseudo_xmlrUNUexpose_internalsrVNUsectsubtitle_xformrWU source_linkrXNUrfc_referencesrYNUoutput_encodingrZUutf-8r[U source_urlr\NUinput_encodingr]U utf-8-sigr^U_disable_configr_NU id_prefixr`UU tab_widthraKUerror_encodingrbUUTF-8rcU_sourcerdh"Ugettext_compactreU generatorrfNUdump_internalsrgNU smart_quotesrhU pep_base_urlriUhttp://www.python.org/dev/peps/rjUsyntax_highlightrkUlongrlUinput_encoding_error_handlerrmjHUauto_id_prefixrnUidroUdoctitle_xformrpUstrip_elements_with_classesrqNU _config_filesrr]Ufile_insertion_enabledrsU raw_enabledrtKU dump_settingsruNubUsymbol_footnote_startrvKUidsrw}rx(hjRhjhhh jh jh jh,cdocutils.nodes target ry)rz}r{(hUh hh!h@h#Utargetr|h%}r}(h']h*]r~h,ah)]Uismodh(]h-]uh/Kh0hh]ubh jh hhhjhjouUsubstitution_namesr}rh#h0h%}r(h']h*]h)]Usourceh"h(]h-]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.protocols.http.doctree0000644000014400001440000010220712425011104027126 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X&circuits.protocols.http.ResponseObjectqXcircuits.protocols.http moduleqNXcircuits.protocols.http.HTTPqX%circuits.protocols.http.response.nameq X circuits.protocols.http.responseq X$circuits.protocols.http.request.nameq X+circuits.protocols.http.ResponseObject.readq X$circuits.protocols.http.HTTP.channelq Xcircuits.protocols.http.requestquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhUcircuits-protocols-http-moduleqhhh h h h h h h h h h hhuUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceq XH/home/prologic/work/circuits/docs/source/api/circuits.protocols.http.rstq!Utagnameq"Usectionq#U attributesq$}q%(Udupnamesq&]Uclassesq']Ubackrefsq(]Uidsq)]q*(Xmodule-circuits.protocols.httpq+heUnamesq,]q-hauUlineq.KUdocumentq/hh]q0(cdocutils.nodes title q1)q2}q3(hXcircuits.protocols.http moduleq4hhh h!h"Utitleq5h$}q6(h&]h']h(]h)]h,]uh.Kh/hh]q7cdocutils.nodes Text q8Xcircuits.protocols.http moduleq9q:}q;(hh4hh2ubaubcsphinx.addnodes index q<)q=}q>(hUhhh U q?h"Uindexq@h$}qA(h)]h(]h&]h']h,]Uentries]qB(UsingleqCX circuits.protocols.http (module)Xmodule-circuits.protocols.httpUtqDauh.Kh/hh]ubh<)qE}qF(hUhhh Nh"h@h$}qG(h)]h(]h&]h']h,]Uentries]qH(hCX*request (class in circuits.protocols.http)hUtqIauh.Nh/hh]ubcsphinx.addnodes desc qJ)qK}qL(hUhhh Nh"UdescqMh$}qN(UnoindexqOUdomainqPXpyqQh)]h(]h&]h']h,]UobjtypeqRXclassqSUdesctypeqThSuh.Nh/hh]qU(csphinx.addnodes desc_signature qV)qW}qX(hXrequest(*args, **kwargs)hhKh U qYh"Udesc_signatureqZh$}q[(h)]q\haUmoduleq]cdocutils.nodes reprunicode q^Xcircuits.protocols.httpq_q`}qabh(]h&]h']h,]qbhaUfullnameqcXrequestqdUclassqeUUfirstqfuh.Nh/hh]qg(csphinx.addnodes desc_annotation qh)qi}qj(hXclass hhWh hYh"Udesc_annotationqkh$}ql(h&]h']h(]h)]h,]uh.Nh/hh]qmh8Xclass qnqo}qp(hUhhiubaubcsphinx.addnodes desc_addname qq)qr}qs(hXcircuits.protocols.http.hhWh hYh"U desc_addnameqth$}qu(h&]h']h(]h)]h,]uh.Nh/hh]qvh8Xcircuits.protocols.http.qwqx}qy(hUhhrubaubcsphinx.addnodes desc_name qz)q{}q|(hhdhhWh hYh"U desc_nameq}h$}q~(h&]h']h(]h)]h,]uh.Nh/hh]qh8Xrequestqq}q(hUhh{ubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhWh hYh"Udesc_parameterlistqh$}q(h&]h']h(]h)]h,]uh.Nh/hh]q(csphinx.addnodes desc_parameter q)q}q(hX*argsh$}q(h&]h']h(]h)]h,]uhhh]qh8X*argsqq}q(hUhhubah"Udesc_parameterqubh)q}q(hX**kwargsh$}q(h&]h']h(]h)]h,]uhhh]qh8X**kwargsqq}q(hUhhubah"hubeubeubcsphinx.addnodes desc_content q)q}q(hUhhKh hYh"U desc_contentqh$}q(h&]h']h(]h)]h,]uh.Nh/hh]q(cdocutils.nodes paragraph q)q}q(hX*Bases: :class:`circuits.core.events.Event`hhh U qh"U paragraphqh$}q(h&]h']h(]h)]h,]uh.Kh/hh]q(h8XBases: qq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX#:class:`circuits.core.events.Event`qhhh h!h"U pending_xrefqh$}q(UreftypeXclassUrefwarnqU reftargetqXcircuits.core.events.EventU refdomainXpyqh)]h(]U refexplicith&]h']h,]UrefdocqXapi/circuits.protocols.httpqUpy:classqhdU py:moduleqXcircuits.protocols.httpquh.Kh]qcdocutils.nodes literal q)q}q(hhh$}q(h&]h']q(UxrefqhXpy-classqeh(]h)]h,]uhhh]qh8Xcircuits.core.events.Eventqq}q(hUhhubah"Uliteralqubaubeubh)q}q(hX request Eventqhhh Xd/home/prologic/work/circuits/circuits/protocols/http.py:docstring of circuits.protocols.http.requestqh"hh$}q(h&]h']h(]h)]h,]uh.Kh/hh]qh8X request Eventqʅq}q(hhhhubaubh)q}q(hXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.qhhh hh"hh$}q(h&]h']h(]h)]h,]uh.Kh/hh]qh8XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.q҅q}q(hhhhubaubh)q}q(hXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.qhhh hh"hh$}q(h&]h']h(]h)]h,]uh.Kh/hh]qh8XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.qڅq}q(hhhhubaubh)q}q(hX_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.hhh hh"hh$}q(h&]h']h(]h)]h,]uh.K h/hh]q(h8XEvery event has a qᅁq}q(hXEvery event has a hhubh)q}q(hX :attr:`name`qhhh Nh"hh$}q(UreftypeXattrhhXnameU refdomainXpyqh)]h(]U refexplicith&]h']h,]hhhhdhhuh.Nh]qh)q}q(hhh$}q(h&]h']q(hhXpy-attrqeh(]h)]h,]uhhh]qh8Xnameqq}q(hUhhubah"hubaubh8XA attribute that is used for matching the event with the handlers.qq}q(hXA attribute that is used for matching the event with the handlers.hhubeubcdocutils.nodes field_list q)q}q(hUhhh Nh"U field_listqh$}q(h&]h']h(]h)]h,]uh.Nh/hh]qcdocutils.nodes field q)q}q(hUh$}q(h&]h']h(]h)]h,]uhhh]r(cdocutils.nodes field_name r)r}r(hUh$}r(h&]h']h(]h)]h,]uhhh]rh8X Variablesrr}r(hUhjubah"U field_namer ubcdocutils.nodes field_body r )r }r (hUh$}r (h&]h']h(]h)]h,]uhhh]rcdocutils.nodes bullet_list r)r}r(hUh$}r(h&]h']h(]h)]h,]uhj h]r(cdocutils.nodes list_item r)r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]rh)r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]r(h)r}r(hUh$}r(UreftypeUobjr U reftargetXchannelsr!U refdomainhQh)]h(]U refexplicith&]h']h,]uhjh]r"cdocutils.nodes strong r#)r$}r%(hj!h$}r&(h&]h']h(]h)]h,]uhjh]r'h8Xchannelsr(r)}r*(hUhj$ubah"Ustrongr+ubah"hubh8X -- r,r-}r.(hUhjubh)r/}r0(hXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.r1hjh hh"hh$}r2(h&]h']h(]h)]h,]uh.Kh]r3h8Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.r4r5}r6(hj1hj/ubaubh)r7}r8(hXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.r9hjh hh"hh$}r:(h&]h']h(]h)]h,]uh.Kh]r;h8XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.r<r=}r>(hj9hj7ubaubeh"hubah"U list_itemr?ubj)r@}rA(hUh$}rB(h&]h']h(]h)]h,]uhjh]rCh)rD}rE(hUh$}rF(h&]h']h(]h)]h,]uhj@h]rG(h)rH}rI(hUh$}rJ(Ureftypej U reftargetXvaluerKU refdomainhQh)]h(]U refexplicith&]h']h,]uhjDh]rLj#)rM}rN(hjKh$}rO(h&]h']h(]h)]h,]uhjHh]rPh8XvaluerQrR}rS(hUhjMubah"j+ubah"hubh8X -- rTrU}rV(hUhjDubh8X this is a rWrX}rY(hX this is a hjDubh)rZ}r[(hX#:class:`circuits.core.values.Value`r\hjDh Nh"hh$}r](UreftypeXclasshhXcircuits.core.values.ValueU refdomainXpyr^h)]h(]U refexplicith&]h']h,]hhhhdhhuh.Nh]r_h)r`}ra(hj\h$}rb(h&]h']rc(hj^Xpy-classrdeh(]h)]h,]uhjZh]reh8Xcircuits.core.values.Valuerfrg}rh(hUhj`ubah"hubaubh8XN object that holds the results returned by the handlers invoked for the event.rirj}rk(hXN object that holds the results returned by the handlers invoked for the event.hjDubeh"hubah"j?ubj)rl}rm(hUh$}rn(h&]h']h(]h)]h,]uhjh]roh)rp}rq(hUh$}rr(h&]h']h(]h)]h,]uhjlh]rs(h)rt}ru(hUh$}rv(Ureftypej U reftargetXsuccessrwU refdomainhQh)]h(]U refexplicith&]h']h,]uhjph]rxj#)ry}rz(hjwh$}r{(h&]h']h(]h)]h,]uhjth]r|h8Xsuccessr}r~}r(hUhjyubah"j+ubah"hubh8X -- rr}r(hUhjpubh8X%if this optional attribute is set to rr}r(hX%if this optional attribute is set to hjpubh)r}r(hX``True``h$}r(h&]h']h(]h)]h,]uhjph]rh8XTruerr}r(hUhjubah"hubh8X, an associated event rr}r(hX, an associated event hjpubh)r}r(hX ``success``h$}r(h&]h']h(]h)]h,]uhjph]rh8Xsuccessrr}r(hUhjubah"hubh8X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(hX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.hjpubeh"hubah"j?ubj)r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]rh)r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]r(h)r}r(hUh$}r(Ureftypej U reftargetXsuccess_channelsrU refdomainhQh)]h(]U refexplicith&]h']h,]uhjh]rj#)r}r(hjh$}r(h&]h']h(]h)]h,]uhjh]rh8Xsuccess_channelsrr}r(hUhjubah"j+ubah"hubh8X -- rr}r(hUhjubh8Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(hXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.hjubeh"hubah"j?ubj)r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]rh)r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]r(h)r}r(hUh$}r(Ureftypej U reftargetXcompleterU refdomainhQh)]h(]U refexplicith&]h']h,]uhjh]rj#)r}r(hjh$}r(h&]h']h(]h)]h,]uhjh]rh8Xcompleterr}r(hUhjubah"j+ubah"hubh8X -- rr}r(hUhjubh8X%if this optional attribute is set to rr}r(hX%if this optional attribute is set to hjubh)r}r(hX``True``h$}r(h&]h']h(]h)]h,]uhjh]rh8XTruerr}r(hUhjubah"hubh8X, an associated event rr}r(hX, an associated event hjubh)r}r(hX ``complete``h$}r(h&]h']h(]h)]h,]uhjh]rh8Xcompleterr}r(hUhjubah"hubh8X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rr}r(hX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.hjubeh"hubah"j?ubj)r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]rh)r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]r(h)r}r(hUh$}r(Ureftypej U reftargetXcomplete_channelsrU refdomainhQh)]h(]U refexplicith&]h']h,]uhjh]rj#)r}r(hjh$}r(h&]h']h(]h)]h,]uhjh]rh8Xcomplete_channelsrr}r(hUhjubah"j+ubah"hubh8X -- rr}r(hUhjubh8Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(hXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.hjubeh"hubah"j?ubeh"U bullet_listrubah"U field_bodyrubeh"Ufieldrubaubh<)r}r(hUhhh Nh"h@h$}r(h)]h(]h&]h']h,]Uentries]r(hCX0name (circuits.protocols.http.request attribute)h Utrauh.Nh/hh]ubhJ)r}r(hUhhh Nh"hMh$}r(hOhPXpyh)]h(]h&]h']h,]hRX attributerhTjuh.Nh/hh]r(hV)r }r (hX request.namehjh U r h"hZh$}r (h)]r h ah]h^Xcircuits.protocols.httprr}rbh(]h&]h']h,]rh ahcX request.namehehdhfuh.Nh/hh]r(hz)r}r(hXnamehj h j h"h}h$}r(h&]h']h(]h)]h,]uh.Nh/hh]rh8Xnamerr}r(hUhjubaubhh)r}r(hX = 'request'hj h j h"hkh$}r(h&]h']h(]h)]h,]uh.Nh/hh]rh8X = 'request'rr}r (hUhjubaubeubh)r!}r"(hUhjh j h"hh$}r#(h&]h']h(]h)]h,]uh.Nh/hh]ubeubeubeubh<)r$}r%(hUhhh Nh"h@h$}r&(h)]h(]h&]h']h,]Uentries]r'(hCX+response (class in circuits.protocols.http)h Utr(auh.Nh/hh]ubhJ)r)}r*(hUhhh Nh"hMh$}r+(hOhPXpyr,h)]h(]h&]h']h,]hRXclassr-hTj-uh.Nh/hh]r.(hV)r/}r0(hXresponse(*args, **kwargs)hj)h hYh"hZh$}r1(h)]r2h ah]h^Xcircuits.protocols.httpr3r4}r5bh(]h&]h']h,]r6h ahcXresponser7heUhfuh.Nh/hh]r8(hh)r9}r:(hXclass hj/h hYh"hkh$}r;(h&]h']h(]h)]h,]uh.Nh/hh]r<h8Xclass r=r>}r?(hUhj9ubaubhq)r@}rA(hXcircuits.protocols.http.hj/h hYh"hth$}rB(h&]h']h(]h)]h,]uh.Nh/hh]rCh8Xcircuits.protocols.http.rDrE}rF(hUhj@ubaubhz)rG}rH(hj7hj/h hYh"h}h$}rI(h&]h']h(]h)]h,]uh.Nh/hh]rJh8XresponserKrL}rM(hUhjGubaubh)rN}rO(hUhj/h hYh"hh$}rP(h&]h']h(]h)]h,]uh.Nh/hh]rQ(h)rR}rS(hX*argsh$}rT(h&]h']h(]h)]h,]uhjNh]rUh8X*argsrVrW}rX(hUhjRubah"hubh)rY}rZ(hX**kwargsh$}r[(h&]h']h(]h)]h,]uhjNh]r\h8X**kwargsr]r^}r_(hUhjYubah"hubeubeubh)r`}ra(hUhj)h hYh"hh$}rb(h&]h']h(]h)]h,]uh.Nh/hh]rc(h)rd}re(hX*Bases: :class:`circuits.core.events.Event`hj`h hh"hh$}rf(h&]h']h(]h)]h,]uh.Kh/hh]rg(h8XBases: rhri}rj(hXBases: hjdubh)rk}rl(hX#:class:`circuits.core.events.Event`rmhjdh Nh"hh$}rn(UreftypeXclasshhXcircuits.core.events.EventU refdomainXpyroh)]h(]U refexplicith&]h']h,]hhhj7hhuh.Nh]rph)rq}rr(hjmh$}rs(h&]h']rt(hjoXpy-classrueh(]h)]h,]uhjkh]rvh8Xcircuits.core.events.Eventrwrx}ry(hUhjqubah"hubaubeubh)rz}r{(hXresponse Eventr|hj`h Xe/home/prologic/work/circuits/circuits/protocols/http.py:docstring of circuits.protocols.http.responser}h"hh$}r~(h&]h']h(]h)]h,]uh.Kh/hh]rh8Xresponse Eventrr}r(hj|hjzubaubh)r}r(hXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rhj`h j}h"hh$}r(h&]h']h(]h)]h,]uh.Kh/hh]rh8XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rr}r(hjhjubaubh)r}r(hXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rhj`h j}h"hh$}r(h&]h']h(]h)]h,]uh.Kh/hh]rh8XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rr}r(hjhjubaubh)r}r(hX_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.hj`h j}h"hh$}r(h&]h']h(]h)]h,]uh.K h/hh]r(h8XEvery event has a rr}r(hXEvery event has a hjubh)r}r(hX :attr:`name`rhjh Nh"hh$}r(UreftypeXattrhhXnameU refdomainXpyrh)]h(]U refexplicith&]h']h,]hhhj7hhuh.Nh]rh)r}r(hjh$}r(h&]h']r(hjXpy-attrreh(]h)]h,]uhjh]rh8Xnamerr}r(hUhjubah"hubaubh8XA attribute that is used for matching the event with the handlers.rr}r(hXA attribute that is used for matching the event with the handlers.hjubeubh)r}r(hUhj`h Nh"hh$}r(h&]h']h(]h)]h,]uh.Nh/hh]rh)r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]r(j)r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]rh8X Variablesrr}r(hUhjubah"j ubj )r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]rj)r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]r(j)r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]rh)r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]r(h)r}r(hUh$}r(Ureftypej U reftargetXchannelsrU refdomainj,h)]h(]U refexplicith&]h']h,]uhjh]rj#)r}r(hjh$}r(h&]h']h(]h)]h,]uhjh]rh8Xchannelsrr}r(hUhjubah"j+ubah"hubh8X -- rr}r(hUhjubh)r}r(hXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rhjh j}h"hh$}r(h&]h']h(]h)]h,]uh.Kh]rh8Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rr}r(hjhjubaubh)r}r(hXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rhjh j}h"hh$}r(h&]h']h(]h)]h,]uh.Kh]rh8XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rr}r(hjhjubaubeh"hubah"j?ubj)r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]rh)r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]r(h)r}r(hUh$}r(Ureftypej U reftargetXvaluerU refdomainj,h)]h(]U refexplicith&]h']h,]uhjh]rj#)r}r(hjh$}r(h&]h']h(]h)]h,]uhjh]rh8Xvaluerr}r(hUhjubah"j+ubah"hubh8X -- rr}r(hUhjubh8X this is a rr}r(hX this is a hjubh)r}r(hX#:class:`circuits.core.values.Value`rhjh Nh"hh$}r(UreftypeXclasshhXcircuits.core.values.ValueU refdomainXpyrh)]h(]U refexplicith&]h']h,]hhhj7hhuh.Nh]r h)r }r (hjh$}r (h&]h']r (hjXpy-classreh(]h)]h,]uhjh]rh8Xcircuits.core.values.Valuerr}r(hUhj ubah"hubaubh8XN object that holds the results returned by the handlers invoked for the event.rr}r(hXN object that holds the results returned by the handlers invoked for the event.hjubeh"hubah"j?ubj)r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]rh)r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]r(h)r}r(hUh$}r (Ureftypej U reftargetXsuccessr!U refdomainj,h)]h(]U refexplicith&]h']h,]uhjh]r"j#)r#}r$(hj!h$}r%(h&]h']h(]h)]h,]uhjh]r&h8Xsuccessr'r(}r)(hUhj#ubah"j+ubah"hubh8X -- r*r+}r,(hUhjubh8X%if this optional attribute is set to r-r.}r/(hX%if this optional attribute is set to hjubh)r0}r1(hX``True``h$}r2(h&]h']h(]h)]h,]uhjh]r3h8XTruer4r5}r6(hUhj0ubah"hubh8X, an associated event r7r8}r9(hX, an associated event hjubh)r:}r;(hX ``success``h$}r<(h&]h']h(]h)]h,]uhjh]r=h8Xsuccessr>r?}r@(hUhj:ubah"hubh8X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rArB}rC(hX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.hjubeh"hubah"j?ubj)rD}rE(hUh$}rF(h&]h']h(]h)]h,]uhjh]rGh)rH}rI(hUh$}rJ(h&]h']h(]h)]h,]uhjDh]rK(h)rL}rM(hUh$}rN(Ureftypej U reftargetXsuccess_channelsrOU refdomainj,h)]h(]U refexplicith&]h']h,]uhjHh]rPj#)rQ}rR(hjOh$}rS(h&]h']h(]h)]h,]uhjLh]rTh8Xsuccess_channelsrUrV}rW(hUhjQubah"j+ubah"hubh8X -- rXrY}rZ(hUhjHubh8Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r[r\}r](hXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.hjHubeh"hubah"j?ubj)r^}r_(hUh$}r`(h&]h']h(]h)]h,]uhjh]rah)rb}rc(hUh$}rd(h&]h']h(]h)]h,]uhj^h]re(h)rf}rg(hUh$}rh(Ureftypej U reftargetXcompleteriU refdomainj,h)]h(]U refexplicith&]h']h,]uhjbh]rjj#)rk}rl(hjih$}rm(h&]h']h(]h)]h,]uhjfh]rnh8Xcompleterorp}rq(hUhjkubah"j+ubah"hubh8X -- rrrs}rt(hUhjbubh8X%if this optional attribute is set to rurv}rw(hX%if this optional attribute is set to hjbubh)rx}ry(hX``True``h$}rz(h&]h']h(]h)]h,]uhjbh]r{h8XTruer|r}}r~(hUhjxubah"hubh8X, an associated event rr}r(hX, an associated event hjbubh)r}r(hX ``complete``h$}r(h&]h']h(]h)]h,]uhjbh]rh8Xcompleterr}r(hUhjubah"hubh8X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rr}r(hX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.hjbubeh"hubah"j?ubj)r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]rh)r}r(hUh$}r(h&]h']h(]h)]h,]uhjh]r(h)r}r(hUh$}r(Ureftypej U reftargetXcomplete_channelsrU refdomainj,h)]h(]U refexplicith&]h']h,]uhjh]rj#)r}r(hjh$}r(h&]h']h(]h)]h,]uhjh]rh8Xcomplete_channelsrr}r(hUhjubah"j+ubah"hubh8X -- rr}r(hUhjubh8Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(hXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.hjubeh"hubah"j?ubeh"jubah"jubeh"jubaubh<)r}r(hUhj`h Nh"h@h$}r(h)]h(]h&]h']h,]Uentries]r(hCX1name (circuits.protocols.http.response attribute)h Utrauh.Nh/hh]ubhJ)r}r(hUhj`h Nh"hMh$}r(hOhPXpyh)]h(]h&]h']h,]hRX attributerhTjuh.Nh/hh]r(hV)r}r(hX response.namehjh j h"hZh$}r(h)]rh ah]h^Xcircuits.protocols.httprr}rbh(]h&]h']h,]rh ahcX response.namehej7hfuh.Nh/hh]r(hz)r}r(hXnamehjh j h"h}h$}r(h&]h']h(]h)]h,]uh.Nh/hh]rh8Xnamerr}r(hUhjubaubhh)r}r(hX = 'response'hjh j h"hkh$}r(h&]h']h(]h)]h,]uh.Nh/hh]rh8X = 'response'rr}r(hUhjubaubeubh)r}r(hUhjh j h"hh$}r(h&]h']h(]h)]h,]uh.Nh/hh]ubeubeubeubh<)r}r(hUhhh Nh"h@h$}r(h)]h(]h&]h']h,]Uentries]r(hCX1ResponseObject (class in circuits.protocols.http)hUtrauh.Nh/hh]ubhJ)r}r(hUhhh Nh"hMh$}r(hOhPXpyh)]h(]h&]h']h,]hRXclassrhTjuh.Nh/hh]r(hV)r}r(hX(ResponseObject(headers, status, version)hjh hYh"hZh$}r(h)]rhah]h^Xcircuits.protocols.httprr}rbh(]h&]h']h,]rhahcXResponseObjectrheUhfuh.Nh/hh]r(hh)r}r(hXclass hjh hYh"hkh$}r(h&]h']h(]h)]h,]uh.Nh/hh]rh8Xclass rr}r(hUhjubaubhq)r}r(hXcircuits.protocols.http.hjh hYh"hth$}r(h&]h']h(]h)]h,]uh.Nh/hh]rh8Xcircuits.protocols.http.rr}r(hUhjubaubhz)r}r(hjhjh hYh"h}h$}r(h&]h']h(]h)]h,]uh.Nh/hh]rh8XResponseObjectrr}r(hUhjubaubh)r}r(hUhjh hYh"hh$}r(h&]h']h(]h)]h,]uh.Nh/hh]r(h)r}r(hXheadersh$}r(h&]h']h(]h)]h,]uhjh]rh8Xheadersrr}r(hUhjubah"hubh)r}r(hXstatush$}r(h&]h']h(]h)]h,]uhjh]rh8Xstatusrr}r(hUhjubah"hubh)r}r(hXversionh$}r(h&]h']h(]h)]h,]uhjh]rh8Xversionr r }r (hUhjubah"hubeubeubh)r }r (hUhjh hYh"hh$}r(h&]h']h(]h)]h,]uh.Nh/hh]r(h)r}r(hXBases: :class:`object`hj h hh"hh$}r(h&]h']h(]h)]h,]uh.Kh/hh]r(h8XBases: rr}r(hXBases: hjubh)r}r(hX:class:`object`rhjh Nh"hh$}r(UreftypeXclasshhXobjectU refdomainXpyrh)]h(]U refexplicith&]h']h,]hhhjhhuh.Nh]rh)r}r(hjh$}r(h&]h']r (hjXpy-classr!eh(]h)]h,]uhjh]r"h8Xobjectr#r$}r%(hUhjubah"hubaubeubh<)r&}r'(hUhj h Nh"h@h$}r((h)]h(]h&]h']h,]Uentries]r)(hCX6read() (circuits.protocols.http.ResponseObject method)h Utr*auh.Nh/hh]ubhJ)r+}r,(hUhj h Nh"hMh$}r-(hOhPXpyh)]h(]h&]h']h,]hRXmethodr.hTj.uh.Nh/hh]r/(hV)r0}r1(hXResponseObject.read()hj+h hYh"hZh$}r2(h)]r3h ah]h^Xcircuits.protocols.httpr4r5}r6bh(]h&]h']h,]r7h ahcXResponseObject.readhejhfuh.Nh/hh]r8(hz)r9}r:(hXreadhj0h hYh"h}h$}r;(h&]h']h(]h)]h,]uh.Nh/hh]r<h8Xreadr=r>}r?(hUhj9ubaubh)r@}rA(hUhj0h hYh"hh$}rB(h&]h']h(]h)]h,]uh.Nh/hh]ubeubh)rC}rD(hUhj+h hYh"hh$}rE(h&]h']h(]h)]h,]uh.Nh/hh]ubeubeubeubh<)rF}rG(hUhhh Nh"h@h$}rH(h)]h(]h&]h']h,]Uentries]rI(hCX'HTTP (class in circuits.protocols.http)hUtrJauh.Nh/hh]ubhJ)rK}rL(hUhhh Nh"hMh$}rM(hOhPXpyh)]h(]h&]h']h,]hRXclassrNhTjNuh.Nh/hh]rO(hV)rP}rQ(hX%HTTP(encoding='utf-8', channel='web')hjKh hYh"hZh$}rR(h)]rShah]h^Xcircuits.protocols.httprTrU}rVbh(]h&]h']h,]rWhahcXHTTPrXheUhfuh.Nh/hh]rY(hh)rZ}r[(hXclass hjPh hYh"hkh$}r\(h&]h']h(]h)]h,]uh.Nh/hh]r]h8Xclass r^r_}r`(hUhjZubaubhq)ra}rb(hXcircuits.protocols.http.hjPh hYh"hth$}rc(h&]h']h(]h)]h,]uh.Nh/hh]rdh8Xcircuits.protocols.http.rerf}rg(hUhjaubaubhz)rh}ri(hjXhjPh hYh"h}h$}rj(h&]h']h(]h)]h,]uh.Nh/hh]rkh8XHTTPrlrm}rn(hUhjhubaubh)ro}rp(hUhjPh hYh"hh$}rq(h&]h']h(]h)]h,]uh.Nh/hh]rr(h)rs}rt(hXencoding='utf-8'h$}ru(h&]h']h(]h)]h,]uhjoh]rvh8Xencoding='utf-8'rwrx}ry(hUhjsubah"hubh)rz}r{(hX channel='web'h$}r|(h&]h']h(]h)]h,]uhjoh]r}h8X channel='web'r~r}r(hUhjzubah"hubeubeubh)r}r(hUhjKh hYh"hh$}r(h&]h']h(]h)]h,]uh.Nh/hh]r(h)r}r(hX6Bases: :class:`circuits.core.components.BaseComponent`rhjh hh"hh$}r(h&]h']h(]h)]h,]uh.Kh/hh]r(h8XBases: rr}r(hXBases: hjubh)r}r(hX/:class:`circuits.core.components.BaseComponent`rhjh Nh"hh$}r(UreftypeXclasshhX&circuits.core.components.BaseComponentU refdomainXpyrh)]h(]U refexplicith&]h']h,]hhhjXhhuh.Nh]rh)r}r(hjh$}r(h&]h']r(hjXpy-classreh(]h)]h,]uhjh]rh8X&circuits.core.components.BaseComponentrr}r(hUhjubah"hubaubeubh<)r}r(hUhjh Nh"h@h$}r(h)]h(]h&]h']h,]Uentries]r(hCX0channel (circuits.protocols.http.HTTP attribute)h Utrauh.Nh/hh]ubhJ)r}r(hUhjh Nh"hMh$}r(hOhPXpyh)]h(]h&]h']h,]hRX attributerhTjuh.Nh/hh]r(hV)r}r(hX HTTP.channelrhjh j h"hZh$}r(h)]rh ah]h^Xcircuits.protocols.httprr}rbh(]h&]h']h,]rh ahcX HTTP.channelhejXhfuh.Nh/hh]r(hz)r}r(hXchannelhjh j h"h}h$}r(h&]h']h(]h)]h,]uh.Nh/hh]rh8Xchannelrr}r(hUhjubaubhh)r}r(hX = 'web'hjh j h"hkh$}r(h&]h']h(]h)]h,]uh.Nh/hh]rh8X = 'web'rr}r(hUhjubaubeubh)r}r(hUhjh j h"hh$}r(h&]h']h(]h)]h,]uh.Nh/hh]ubeubeubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh/hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh5NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configr NU id_prefixr UU tab_widthr KUerror_encodingr UUTF-8r U_sourcerh!Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startr KUidsr!}r"(h j/hjh+cdocutils.nodes target r#)r$}r%(hUhhh h?h"Utargetr&h$}r'(h&]h)]r(h+ah(]Uismodh']h,]uh.Kh/hh]ubhjPh jhhh j h j0h jhhWuUsubstitution_namesr)}r*h"h/h$}r+(h&]h)]h(]Usourceh!h']h,]uU footnotesr,]r-Urefidsr.}r/ub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.dispatchers.doctree0000644000014400001440000001155712425011104027220 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xmodule contentsqNX circuits.web.dispatchers packageqNX submodulesqNuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hUmodule-contentsqhU circuits-web-dispatchers-packageqhU submodulesquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXI/home/prologic/work/circuits/docs/source/api/circuits.web.dispatchers.rstqUtagnameqUsectionqU attributesq }q!(Udupnamesq"]Uclassesq#]Ubackrefsq$]Uidsq%]q&haUnamesq']q(hauUlineq)KUdocumentq*hh]q+(cdocutils.nodes title q,)q-}q.(hX circuits.web.dispatchers packageq/hhhhhUtitleq0h }q1(h"]h#]h$]h%]h']uh)Kh*hh]q2cdocutils.nodes Text q3X circuits.web.dispatchers packageq4q5}q6(hh/hh-ubaubh)q7}q8(hUhhhhhhh }q9(h"]h#]h$]h%]q:hah']q;hauh)Kh*hh]q<(h,)q=}q>(hX Submodulesq?hh7hhhh0h }q@(h"]h#]h$]h%]h']uh)Kh*hh]qAh3X SubmodulesqBqC}qD(hh?hh=ubaubcdocutils.nodes compound qE)qF}qG(hUhh7hhhUcompoundqHh }qI(h"]h#]qJUtoctree-wrapperqKah$]h%]h']uh)Kh*hh]qLcsphinx.addnodes toctree qM)qN}qO(hUhhFhhhUtoctreeqPh }qQ(UnumberedqRKU includehiddenqShXapi/circuits.web.dispatchersqTU titlesonlyqUUglobqVh%]h$]h"]h#]h']UentriesqW]qX(NX'api/circuits.web.dispatchers.dispatcherqYqZNX$api/circuits.web.dispatchers.jsonrpcq[q\NX#api/circuits.web.dispatchers.staticq]q^NX)api/circuits.web.dispatchers.virtualhostsq_q`NX#api/circuits.web.dispatchers.xmlrpcqaqbeUhiddenqcU includefilesqd]qe(hYh[h]h_haeUmaxdepthqfJuh)Kh]ubaubeubh)qg}qh(hUhhhhhhh }qi(h"]h#]h$]h%]qj(Xmodule-circuits.web.dispatchersqkheh']qlhauh)Kh*hh]qm(h,)qn}qo(hXModule contentsqphhghhhh0h }qq(h"]h#]h$]h%]h']uh)Kh*hh]qrh3XModule contentsqsqt}qu(hhphhnubaubcsphinx.addnodes index qv)qw}qx(hUhhghU qyhUindexqzh }q{(h%]h$]h"]h#]h']Uentries]q|(Usingleq}X!circuits.web.dispatchers (module)Xmodule-circuits.web.dispatchersUtq~auh)Kh*hh]ubcdocutils.nodes paragraph q)q}q(hX DispatchersqhhghXg/home/prologic/work/circuits/circuits/web/dispatchers/__init__.py:docstring of circuits.web.dispatchersqhU paragraphqh }q(h"]h#]h$]h%]h']uh)Kh*hh]qh3X Dispatchersqq}q(hhhhubaubh)q}q(hXThis package contains various circuits.web dispatchers By default a ``circuits.web.Server`` Component uses the ``dispatcher.Dispatcher``hhghhhhh }q(h"]h#]h$]h%]h']uh)Kh*hh]q(h3XDThis package contains various circuits.web dispatchers By default a qq}q(hXDThis package contains various circuits.web dispatchers By default a hhubcdocutils.nodes literal q)q}q(hX``circuits.web.Server``h }q(h"]h#]h$]h%]h']uhhh]qh3Xcircuits.web.Serverqq}q(hUhhubahUliteralqubh3X Component uses the qq}q(hX Component uses the hhubh)q}q(hX``dispatcher.Dispatcher``h }q(h"]h#]h$]h%]h']uhhh]qh3Xdispatcher.Dispatcherqq}q(hUhhubahhubeubeubeubahUU 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 tracebackqĈUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh0NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqӉUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesq߈Utrim_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_sourceqhUgettext_compactqU 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_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hkcdocutils.nodes target r)r}r(hUhhghhyhUtargetr h }r (h"]h%]r hkah$]Uismodh#]h']uh)Kh*hh]ubhhhhghh7uUsubstitution_namesr }r hh*h }r(h"]h%]h$]Usourcehh#]h']uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.net.doctree0000644000014400001440000001243012425011103024707 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xmodule contentsqNXcircuits.net packageqNX submodulesqNuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hUmodule-contentsqhUcircuits-net-packageqhU submodulesquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqX=/home/prologic/work/circuits/docs/source/api/circuits.net.rstqUtagnameqUsectionqU attributesq }q!(Udupnamesq"]Uclassesq#]Ubackrefsq$]Uidsq%]q&haUnamesq']q(hauUlineq)KUdocumentq*hh]q+(cdocutils.nodes title q,)q-}q.(hXcircuits.net packageq/hhhhhUtitleq0h }q1(h"]h#]h$]h%]h']uh)Kh*hh]q2cdocutils.nodes Text q3Xcircuits.net packageq4q5}q6(hh/hh-ubaubh)q7}q8(hUhhhhhhh }q9(h"]h#]h$]h%]q:hah']q;hauh)Kh*hh]q<(h,)q=}q>(hX Submodulesq?hh7hhhh0h }q@(h"]h#]h$]h%]h']uh)Kh*hh]qAh3X SubmodulesqBqC}qD(hh?hh=ubaubcdocutils.nodes compound qE)qF}qG(hUhh7hhhUcompoundqHh }qI(h"]h#]qJUtoctree-wrapperqKah$]h%]h']uh)K h*hh]qLcsphinx.addnodes toctree qM)qN}qO(hUhhFhhhUtoctreeqPh }qQ(UnumberedqRKU includehiddenqShXapi/circuits.netqTU titlesonlyqUUglobqVh%]h$]h"]h#]h']UentriesqW]qX(NXapi/circuits.net.eventsqYqZNXapi/circuits.net.socketsq[q\eUhiddenq]U includefilesq^]q_(hYh[eUmaxdepthq`Juh)Kh]ubaubeubh)qa}qb(hUhhhhhhh }qc(h"]h#]h$]h%]qd(Xmodule-circuits.netqeheh']qfhauh)K h*hh]qg(h,)qh}qi(hXModule contentsqjhhahhhh0h }qk(h"]h#]h$]h%]h']uh)K h*hh]qlh3XModule contentsqmqn}qo(hhjhhhubaubcsphinx.addnodes index qp)qq}qr(hUhhahU qshUindexqth }qu(h%]h$]h"]h#]h']Uentries]qv(UsingleqwXcircuits.net (module)Xmodule-circuits.netUtqxauh)Kh*hh]ubcdocutils.nodes paragraph qy)qz}q{(hXNetworking Componentsq|hhahXO/home/prologic/work/circuits/circuits/net/__init__.py:docstring of circuits.netq}hU paragraphq~h }q(h"]h#]h$]h%]h']uh)Kh*hh]qh3XNetworking Componentsqq}q(hh|hhzubaubhy)q}q(hXThis package contains components that implement network sockets and protocols for implementing client and server network applications.qhhahh}hh~h }q(h"]h#]h$]h%]h']uh)Kh*hh]qh3XThis package contains components that implement network sockets and protocols for implementing client and server network applications.qq}q(hhhhubaubcdocutils.nodes field_list q)q}q(hUhhahh}hU field_listqh }q(h"]h#]h$]h%]h']uh)Kh*hh]q(cdocutils.nodes field q)q}q(hUhhhh}hUfieldqh }q(h"]h#]h$]h%]h']uh)Kh*hh]q(cdocutils.nodes field_name q)q}q(hX copyrightqh }q(h"]h#]h$]h%]h']uhhh]qh3X copyrightqq}q(hhhhubahU field_namequbcdocutils.nodes field_body q)q}q(hX&CopyRight (C) 2004-2013 by James Millsqh }q(h"]h#]h$]h%]h']uhhh]qhy)q}q(hhhhhh}hh~h }q(h"]h#]h$]h%]h']uh)Kh]qh3X&CopyRight (C) 2004-2013 by James Millsqq}q(hhhhubaubahU field_bodyqubeubh)q}q(hUhhhh}hhh }q(h"]h#]h$]h%]h']uh)Kh*hh]q(h)q}q(hXlicenseqh }q(h"]h#]h$]h%]h']uhhh]qh3Xlicenseqq}q(hhhhubahhubh)q}q(hXMIT (See: LICENSE) h }q(h"]h#]h$]h%]h']uhhh]qhy)q}q(hXMIT (See: LICENSE)qhhhh}hh~h }q(h"]h#]h$]h%]h']uh)Kh]qh3XMIT (See: LICENSE)qŅq}q(hhhhubaubahhubeubeubeubeubahUU 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_classesqNh0NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkr NUrfc_referencesr NUoutput_encodingr Uutf-8r U source_urlr NUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrhUauto_id_prefixrUidr Udoctitle_xformr!Ustrip_elements_with_classesr"NU _config_filesr#]r$Ufile_insertion_enabledr%U raw_enabledr&KU dump_settingsr'NubUsymbol_footnote_startr(KUidsr)}r*(hecdocutils.nodes target r+)r,}r-(hUhhahhshUtargetr.h }r/(h"]h%]r0heah$]Uismodh#]h']uh)Kh*hh]ubhhahhhh7uUsubstitution_namesr1}r2hh*h }r3(h"]h%]h$]Usourcehh#]h']uU footnotesr4]r5Urefidsr6}r7ub.circuits-3.1.0/docs/build/doctrees/api/index.doctree0000644000014400001440000001304212425011106023407 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}qXapi documentationqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUapi-documentationqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqX6/home/prologic/work/circuits/docs/source/api/index.rstqUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq ]Uidsq!]q"haUnamesq#]q$hauUlineq%KUdocumentq&hh]q'(cdocutils.nodes title q()q)}q*(hXAPI Documentationq+hhhhhUtitleq,h}q-(h]h]h ]h!]h#]uh%Kh&hh]q.cdocutils.nodes Text q/XAPI Documentationq0q1}q2(hh+hh)ubaubcdocutils.nodes compound q3)q4}q5(hUhhhhhUcompoundq6h}q7(h]h]q8Utoctree-wrapperq9ah ]h!]h#]uh%Nh&hh]q:csphinx.addnodes toctree q;)q<}q=(hUhh4hhhUtoctreeq>h}q?(Unumberedq@KU includehiddenqAhX api/indexqBU titlesonlyqCUglobqDh!]h ]h]h]h#]UentriesqE]qF(NX api/circuitsqGqHNXapi/circuits.appqIqJNXapi/circuits.app.daemonqKqLNXapi/circuits.coreqMqNNXapi/circuits.core.bridgeqOqPNXapi/circuits.core.componentsqQqRNXapi/circuits.core.debuggerqSqTNXapi/circuits.core.eventsqUqVNXapi/circuits.core.handlersqWqXNXapi/circuits.core.helpersqYqZNXapi/circuits.core.loaderq[q\NXapi/circuits.core.managerq]q^NXapi/circuits.core.pollersq_q`NXapi/circuits.core.timersqaqbNXapi/circuits.core.utilsqcqdNXapi/circuits.core.valuesqeqfNXapi/circuits.core.workersqgqhNXapi/circuits.ioqiqjNXapi/circuits.io.eventsqkqlNXapi/circuits.io.fileqmqnNXapi/circuits.io.notifyqoqpNXapi/circuits.io.processqqqrNXapi/circuits.io.serialqsqtNXapi/circuits.netquqvNXapi/circuits.net.eventsqwqxNXapi/circuits.net.socketsqyqzNXapi/circuits.nodeq{q|NXapi/circuits.node.clientq}q~NXapi/circuits.node.eventsqqNXapi/circuits.node.nodeqqNXapi/circuits.node.serverqqNXapi/circuits.node.utilsqqNXapi/circuits.protocolsqqNXapi/circuits.protocols.httpqqNXapi/circuits.protocols.ircqqNXapi/circuits.protocols.lineqqNX api/circuits.protocols.websocketqqNXapi/circuits.sixqqNXapi/circuits.toolsqqNXapi/circuits.versionqqNXapi/circuits.webqqNXapi/circuits.web.clientqqNXapi/circuits.web.constantsqqNXapi/circuits.web.controllersqqNXapi/circuits.web.dispatchersqqNX'api/circuits.web.dispatchers.dispatcherqqNX$api/circuits.web.dispatchers.jsonrpcqqNX#api/circuits.web.dispatchers.staticqqNX)api/circuits.web.dispatchers.virtualhostsqqNX#api/circuits.web.dispatchers.xmlrpcqqNXapi/circuits.web.errorsqqNXapi/circuits.web.eventsqqNXapi/circuits.web.exceptionsqqNXapi/circuits.web.headersqqNXapi/circuits.web.httpqqNXapi/circuits.web.loggersqqNXapi/circuits.web.mainqqNXapi/circuits.web.parsersqqNXapi/circuits.web.parsers.httpqqNX"api/circuits.web.parsers.multipartqqNX$api/circuits.web.parsers.querystringqqNXapi/circuits.web.processorsqqNXapi/circuits.web.serversqÆqNXapi/circuits.web.sessionsqņqNXapi/circuits.web.toolsqdžqNXapi/circuits.web.urlqɆqNXapi/circuits.web.utilsqˆqNXapi/circuits.web.websocketsq͆qNX"api/circuits.web.websockets.clientqφqNX&api/circuits.web.websockets.dispatcherqцqNXapi/circuits.web.wrappersqӆqNXapi/circuits.web.wsgiqՆqeUhiddenq׉U includefilesq]q(hGhIhKhMhOhQhShUhWhYh[h]h_hahchehghihkhmhohqhshuhwhyh{h}hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhheUmaxdepthqKuh%Kh]ubaubeubahUU 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_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh,NUerror_encoding_error_handlerrUbackslashreplacerUdebugr NUembed_stylesheetr Uoutput_encoding_error_handlerr Ustrictr U sectnum_xformr KUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlr NUinput_encodingr!U utf-8-sigr"U_disable_configr#NU id_prefixr$UU tab_widthr%KUerror_encodingr&UUTF-8r'U_sourcer(hUgettext_compactr)U generatorr*NUdump_internalsr+NU smart_quotesr,U pep_base_urlr-Uhttp://www.python.org/dev/peps/r.Usyntax_highlightr/Ulongr0Uinput_encoding_error_handlerr1j Uauto_id_prefixr2Uidr3Udoctitle_xformr4Ustrip_elements_with_classesr5NU _config_filesr6]Ufile_insertion_enabledr7U raw_enabledr8KU dump_settingsr9NubUsymbol_footnote_startr:KUidsr;}r<hhsUsubstitution_namesr=}r>hh&h}r?(h]h!]h ]Usourcehh]h#]uU footnotesr@]rAUrefidsrB}rCub.circuits-3.1.0/docs/build/doctrees/api/circuits.six.doctree0000644000014400001440000007505612425011104024742 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.six.remove_moveqXcircuits.six.add_moveqXcircuits.six.iteritemsqXcircuits.six.uq Xcircuits.six.Iteratorq Xcircuits.six.Iterator.nextq Xcircuits.six.MovedModuleq Xcircuits.six.itervaluesq Xcircuits.six.iterkeysqXcircuits.six.print_qXcircuits.six moduleqNXcircuits.six.with_metaclassqXcircuits.six.bqXcircuits.six.exec_qXcircuits.six.MovedAttributeqXcircuits.six.iterbytesqX circuits.six.create_bound_methodqXcircuits.six.byteindexqX!circuits.six.get_unbound_functionqXcircuits.six.reraiseqXcircuits.six.bytes_to_strquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationq NUautofootnote_startq!KUnameidsq"}q#(hhhhhhh h h h h h h h h h hhhhhUcircuits-six-moduleq$hhhhhhhhhhhhhhhhhhhhuUchildrenq%]q&cdocutils.nodes section q')q(}q)(U rawsourceq*UUparentq+hUsourceq,X=/home/prologic/work/circuits/docs/source/api/circuits.six.rstq-Utagnameq.Usectionq/U attributesq0}q1(Udupnamesq2]Uclassesq3]Ubackrefsq4]Uidsq5]q6(Xmodule-circuits.sixq7h$eUnamesq8]q9hauUlineq:KUdocumentq;hh%]q<(cdocutils.nodes title q=)q>}q?(h*Xcircuits.six moduleq@h+h(h,h-h.UtitleqAh0}qB(h2]h3]h4]h5]h8]uh:Kh;hh%]qCcdocutils.nodes Text qDXcircuits.six moduleqEqF}qG(h*h@h+h>ubaubcsphinx.addnodes index qH)qI}qJ(h*Uh+h(h,U qKh.UindexqLh0}qM(h5]h4]h2]h3]h8]Uentries]qN(UsingleqOXcircuits.six (module)Xmodule-circuits.sixUtqPauh:Kh;hh%]ubcdocutils.nodes paragraph qQ)qR}qS(h*X6Utilities for writing code that runs on Python 2 and 3qTh+h(h,XF/home/prologic/work/circuits/circuits/six.py:docstring of circuits.sixqUh.U paragraphqVh0}qW(h2]h3]h4]h5]h8]uh:Kh;hh%]qXhDX6Utilities for writing code that runs on Python 2 and 3qYqZ}q[(h*hTh+hRubaubhH)q\}q](h*Uh+h(h,Nh.hLh0}q^(h5]h4]h2]h3]h8]Uentries]q_(hOX$byteindex() (in module circuits.six)hUtq`auh:Nh;hh%]ubcsphinx.addnodes desc qa)qb}qc(h*Uh+h(h,Nh.Udescqdh0}qe(UnoindexqfUdomainqgXpyh5]h4]h2]h3]h8]UobjtypeqhXfunctionqiUdesctypeqjhiuh:Nh;hh%]qk(csphinx.addnodes desc_signature ql)qm}qn(h*Xbyteindex(data, index)h+hbh,U qoh.Udesc_signatureqph0}qq(h5]qrhaUmoduleqscdocutils.nodes reprunicode qtX circuits.sixquqv}qwbh4]h2]h3]h8]qxhaUfullnameqyX byteindexqzUclassq{UUfirstq|uh:Nh;hh%]q}(csphinx.addnodes desc_addname q~)q}q(h*X circuits.six.h+hmh,hoh.U desc_addnameqh0}q(h2]h3]h4]h5]h8]uh:Nh;hh%]qhDX circuits.six.qq}q(h*Uh+hubaubcsphinx.addnodes desc_name q)q}q(h*hzh+hmh,hoh.U desc_nameqh0}q(h2]h3]h4]h5]h8]uh:Nh;hh%]qhDX byteindexqq}q(h*Uh+hubaubcsphinx.addnodes desc_parameterlist q)q}q(h*Uh+hmh,hoh.Udesc_parameterlistqh0}q(h2]h3]h4]h5]h8]uh:Nh;hh%]q(csphinx.addnodes desc_parameter q)q}q(h*Xdatah0}q(h2]h3]h4]h5]h8]uh+hh%]qhDXdataqq}q(h*Uh+hubah.Udesc_parameterqubh)q}q(h*Xindexh0}q(h2]h3]h4]h5]h8]uh+hh%]qhDXindexqq}q(h*Uh+hubah.hubeubeubcsphinx.addnodes desc_content q)q}q(h*Uh+hbh,hoh.U desc_contentqh0}q(h2]h3]h4]h5]h8]uh:Nh;hh%]ubeubhH)q}q(h*Uh+h(h,Nh.hLh0}q(h5]h4]h2]h3]h8]Uentries]q(hOX$iterbytes() (in module circuits.six)hUtqauh:Nh;hh%]ubha)q}q(h*Uh+h(h,Nh.hdh0}q(hfhgXpyh5]h4]h2]h3]h8]hhXfunctionqhjhuh:Nh;hh%]q(hl)q}q(h*Xiterbytes(data)h+hh,hoh.hph0}q(h5]qhahshtX circuits.sixqq}qbh4]h2]h3]h8]qhahyX iterbytesqh{Uh|uh:Nh;hh%]q(h~)q}q(h*X circuits.six.h+hh,hoh.hh0}q(h2]h3]h4]h5]h8]uh:Nh;hh%]qhDX circuits.six.qÅq}q(h*Uh+hubaubh)q}q(h*hh+hh,hoh.hh0}q(h2]h3]h4]h5]h8]uh:Nh;hh%]qhDX iterbytesqʅq}q(h*Uh+hubaubh)q}q(h*Uh+hh,hoh.hh0}q(h2]h3]h4]h5]h8]uh:Nh;hh%]qh)q}q(h*Xdatah0}q(h2]h3]h4]h5]h8]uh+hh%]qhDXdataqՅq}q(h*Uh+hubah.hubaubeubh)q}q(h*Uh+hh,hoh.hh0}q(h2]h3]h4]h5]h8]uh:Nh;hh%]ubeubhH)q}q(h*Uh+h(h,U qh.hLh0}q(h5]h4]h2]h3]h8]Uentries]q(hOX#MovedModule (class in circuits.six)h Utqauh:Nh;hh%]ubha)q}q(h*Uh+h(h,hh.hdh0}q(hfhgXpyh5]h4]h2]h3]h8]hhXclassqhjhuh:Nh;hh%]q(hl)q}q(h*X MovedModule(name, old, new=None)h+hh,hoh.hph0}q(h5]qh ahshtX circuits.sixqꅁq}qbh4]h2]h3]h8]qh ahyX MovedModuleqh{Uh|uh:Nh;hh%]q(csphinx.addnodes desc_annotation q)q}q(h*Xclass h+hh,hoh.Udesc_annotationqh0}q(h2]h3]h4]h5]h8]uh:Nh;hh%]qhDXclass qq}q(h*Uh+hubaubh~)q}q(h*X circuits.six.h+hh,hoh.hh0}q(h2]h3]h4]h5]h8]uh:Nh;hh%]qhDX circuits.six.qq}q(h*Uh+hubaubh)r}r(h*hh+hh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDX MovedModulerr}r(h*Uh+jubaubh)r}r(h*Uh+hh,hoh.hh0}r (h2]h3]h4]h5]h8]uh:Nh;hh%]r (h)r }r (h*Xnameh0}r (h2]h3]h4]h5]h8]uh+jh%]rhDXnamerr}r(h*Uh+j ubah.hubh)r}r(h*Xoldh0}r(h2]h3]h4]h5]h8]uh+jh%]rhDXoldrr}r(h*Uh+jubah.hubh)r}r(h*Xnew=Noneh0}r(h2]h3]h4]h5]h8]uh+jh%]rhDXnew=Nonerr}r(h*Uh+jubah.hubeubeubh)r }r!(h*Uh+hh,hoh.hh0}r"(h2]h3]h4]h5]h8]uh:Nh;hh%]r#hQ)r$}r%(h*X'Bases: :class:`circuits.six._LazyDescr`h+j h,hh.hVh0}r&(h2]h3]h4]h5]h8]uh:Kh;hh%]r'(hDXBases: r(r)}r*(h*XBases: h+j$ubcsphinx.addnodes pending_xref r+)r,}r-(h*X :class:`circuits.six._LazyDescr`r.h+j$h,Nh.U pending_xrefr/h0}r0(UreftypeXclassUrefwarnr1U reftargetr2Xcircuits.six._LazyDescrU refdomainXpyr3h5]h4]U refexplicith2]h3]h8]Urefdocr4Xapi/circuits.sixr5Upy:classr6hU py:moduler7X circuits.sixr8uh:Nh%]r9cdocutils.nodes literal r:)r;}r<(h*j.h0}r=(h2]h3]r>(Uxrefr?j3Xpy-classr@eh4]h5]h8]uh+j,h%]rAhDXcircuits.six._LazyDescrrBrC}rD(h*Uh+j;ubah.UliteralrEubaubeubaubeubhH)rF}rG(h*Uh+h(h,hh.hLh0}rH(h5]h4]h2]h3]h8]Uentries]rI(hOX&MovedAttribute (class in circuits.six)hUtrJauh:Nh;hh%]ubha)rK}rL(h*Uh+h(h,hh.hdh0}rM(hfhgXpyh5]h4]h2]h3]h8]hhXclassrNhjjNuh:Nh;hh%]rO(hl)rP}rQ(h*XDMovedAttribute(name, old_mod, new_mod, old_attr=None, new_attr=None)h+jKh,hoh.hph0}rR(h5]rShahshtX circuits.sixrTrU}rVbh4]h2]h3]h8]rWhahyXMovedAttributerXh{Uh|uh:Nh;hh%]rY(h)rZ}r[(h*Xclass h+jPh,hoh.hh0}r\(h2]h3]h4]h5]h8]uh:Nh;hh%]r]hDXclass r^r_}r`(h*Uh+jZubaubh~)ra}rb(h*X circuits.six.h+jPh,hoh.hh0}rc(h2]h3]h4]h5]h8]uh:Nh;hh%]rdhDX circuits.six.rerf}rg(h*Uh+jaubaubh)rh}ri(h*jXh+jPh,hoh.hh0}rj(h2]h3]h4]h5]h8]uh:Nh;hh%]rkhDXMovedAttributerlrm}rn(h*Uh+jhubaubh)ro}rp(h*Uh+jPh,hoh.hh0}rq(h2]h3]h4]h5]h8]uh:Nh;hh%]rr(h)rs}rt(h*Xnameh0}ru(h2]h3]h4]h5]h8]uh+joh%]rvhDXnamerwrx}ry(h*Uh+jsubah.hubh)rz}r{(h*Xold_modh0}r|(h2]h3]h4]h5]h8]uh+joh%]r}hDXold_modr~r}r(h*Uh+jzubah.hubh)r}r(h*Xnew_modh0}r(h2]h3]h4]h5]h8]uh+joh%]rhDXnew_modrr}r(h*Uh+jubah.hubh)r}r(h*X old_attr=Noneh0}r(h2]h3]h4]h5]h8]uh+joh%]rhDX old_attr=Nonerr}r(h*Uh+jubah.hubh)r}r(h*X new_attr=Noneh0}r(h2]h3]h4]h5]h8]uh+joh%]rhDX new_attr=Nonerr}r(h*Uh+jubah.hubeubeubh)r}r(h*Uh+jKh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhQ)r}r(h*X'Bases: :class:`circuits.six._LazyDescr`h+jh,hh.hVh0}r(h2]h3]h4]h5]h8]uh:Kh;hh%]r(hDXBases: rr}r(h*XBases: h+jubj+)r}r(h*X :class:`circuits.six._LazyDescr`rh+jh,Nh.j/h0}r(UreftypeXclassj1j2Xcircuits.six._LazyDescrU refdomainXpyrh5]h4]U refexplicith2]h3]h8]j4j5j6jXj7j8uh:Nh%]rj:)r}r(h*jh0}r(h2]h3]r(j?jXpy-classreh4]h5]h8]uh+jh%]rhDXcircuits.six._LazyDescrrr}r(h*Uh+jubah.jEubaubeubaubeubhH)r}r(h*Uh+h(h,XO/home/prologic/work/circuits/circuits/six.py:docstring of circuits.six.add_moverh.hLh0}r(h5]h4]h2]h3]h8]Uentries]r(hOX#add_move() (in module circuits.six)hUtrauh:Nh;hh%]ubha)r}r(h*Uh+h(h,jh.hdh0}r(hfhgXpyh5]h4]h2]h3]h8]hhXfunctionrhjjuh:Nh;hh%]r(hl)r}r(h*Xadd_move(move)h+jh,hoh.hph0}r(h5]rhahshtX circuits.sixrr}rbh4]h2]h3]h8]rhahyXadd_moverh{Uh|uh:Nh;hh%]r(h~)r}r(h*X circuits.six.h+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDX circuits.six.rr}r(h*Uh+jubaubh)r}r(h*jh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDXadd_moverr}r(h*Uh+jubaubh)r}r(h*Uh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rh)r}r(h*Xmoveh0}r(h2]h3]h4]h5]h8]uh+jh%]rhDXmoverr}r(h*Uh+jubah.hubaubeubh)r}r(h*Uh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhQ)r}r(h*XAdd an item to six.moves.rh+jh,jh.hVh0}r(h2]h3]h4]h5]h8]uh:Kh;hh%]rhDXAdd an item to six.moves.rr}r(h*jh+jubaubaubeubhH)r}r(h*Uh+h(h,XR/home/prologic/work/circuits/circuits/six.py:docstring of circuits.six.remove_moverh.hLh0}r(h5]h4]h2]h3]h8]Uentries]r(hOX&remove_move() (in module circuits.six)hUtrauh:Nh;hh%]ubha)r}r(h*Uh+h(h,jh.hdh0}r(hfhgXpyh5]h4]h2]h3]h8]hhXfunctionrhjjuh:Nh;hh%]r(hl)r}r(h*Xremove_move(name)h+jh,hoh.hph0}r(h5]rhahshtX circuits.sixrr}rbh4]h2]h3]h8]rhahyX remove_moverh{Uh|uh:Nh;hh%]r(h~)r}r(h*X circuits.six.h+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDX circuits.six.rr}r(h*Uh+jubaubh)r}r(h*jh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]r hDX remove_mover r }r (h*Uh+jubaubh)r }r(h*Uh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rh)r}r(h*Xnameh0}r(h2]h3]h4]h5]h8]uh+j h%]rhDXnamerr}r(h*Uh+jubah.hubaubeubh)r}r(h*Uh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhQ)r}r(h*XRemove item from six.moves.rh+jh,jh.hVh0}r(h2]h3]h4]h5]h8]uh:Kh;hh%]r hDXRemove item from six.moves.r!r"}r#(h*jh+jubaubaubeubhH)r$}r%(h*Uh+h(h,Nh.hLh0}r&(h5]h4]h2]h3]h8]Uentries]r'(hOX.create_bound_method() (in module circuits.six)hUtr(auh:Nh;hh%]ubha)r)}r*(h*Uh+h(h,Nh.hdh0}r+(hfhgXpyh5]h4]h2]h3]h8]hhXfunctionr,hjj,uh:Nh;hh%]r-(hl)r.}r/(h*X'create_bound_method(function, instance)h+j)h,hoh.hph0}r0(h5]r1hahshtX circuits.sixr2r3}r4bh4]h2]h3]h8]r5hahyXcreate_bound_methodr6h{Uh|uh:Nh;hh%]r7(h~)r8}r9(h*X circuits.six.h+j.h,hoh.hh0}r:(h2]h3]h4]h5]h8]uh:Nh;hh%]r;hDX circuits.six.r<r=}r>(h*Uh+j8ubaubh)r?}r@(h*j6h+j.h,hoh.hh0}rA(h2]h3]h4]h5]h8]uh:Nh;hh%]rBhDXcreate_bound_methodrCrD}rE(h*Uh+j?ubaubh)rF}rG(h*Uh+j.h,hoh.hh0}rH(h2]h3]h4]h5]h8]uh:Nh;hh%]rI(h)rJ}rK(h*Xfunctionh0}rL(h2]h3]h4]h5]h8]uh+jFh%]rMhDXfunctionrNrO}rP(h*Uh+jJubah.hubh)rQ}rR(h*Xinstanceh0}rS(h2]h3]h4]h5]h8]uh+jFh%]rThDXinstancerUrV}rW(h*Uh+jQubah.hubeubeubh)rX}rY(h*Uh+j)h,hoh.hh0}rZ(h2]h3]h4]h5]h8]uh:Nh;hh%]ubeubhH)r[}r\(h*Uh+h(h,X[/home/prologic/work/circuits/circuits/six.py:docstring of circuits.six.get_unbound_functionr]h.hLh0}r^(h5]h4]h2]h3]h8]Uentries]r_(hOX/get_unbound_function() (in module circuits.six)hUtr`auh:Nh;hh%]ubha)ra}rb(h*Uh+h(h,j]h.hdh0}rc(hfhgXpyh5]h4]h2]h3]h8]hhXfunctionrdhjjduh:Nh;hh%]re(hl)rf}rg(h*Xget_unbound_function(unbound)h+jah,hoh.hph0}rh(h5]rihahshtX circuits.sixrjrk}rlbh4]h2]h3]h8]rmhahyXget_unbound_functionrnh{Uh|uh:Nh;hh%]ro(h~)rp}rq(h*X circuits.six.h+jfh,hoh.hh0}rr(h2]h3]h4]h5]h8]uh:Nh;hh%]rshDX circuits.six.rtru}rv(h*Uh+jpubaubh)rw}rx(h*jnh+jfh,hoh.hh0}ry(h2]h3]h4]h5]h8]uh:Nh;hh%]rzhDXget_unbound_functionr{r|}r}(h*Uh+jwubaubh)r~}r(h*Uh+jfh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rh)r}r(h*Xunboundh0}r(h2]h3]h4]h5]h8]uh+j~h%]rhDXunboundrr}r(h*Uh+jubah.hubaubeubh)r}r(h*Uh+jah,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhQ)r}r(h*X3Get the function out of a possibly unbound functionrh+jh,j]h.hVh0}r(h2]h3]h4]h5]h8]uh:Kh;hh%]rhDX3Get the function out of a possibly unbound functionrr}r(h*jh+jubaubaubeubhH)r}r(h*Uh+h(h,Nh.hLh0}r(h5]h4]h2]h3]h8]Uentries]r(hOX Iterator (class in circuits.six)h Utrauh:Nh;hh%]ubha)r}r(h*Uh+h(h,Nh.hdh0}r(hfhgXpyh5]h4]h2]h3]h8]hhXclassrhjjuh:Nh;hh%]r(hl)r}r(h*XIteratorrh+jh,hoh.hph0}r(h5]rh ahshtX circuits.sixrr}rbh4]h2]h3]h8]rh ahyjh{Uh|uh:Nh;hh%]r(h)r}r(h*Xclass h+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDXclass rr}r(h*Uh+jubaubh~)r}r(h*X circuits.six.h+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDX circuits.six.rr}r(h*Uh+jubaubh)r}r(h*jh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDXIteratorrr}r(h*Uh+jubaubeubh)r}r(h*Uh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]r(hQ)r}r(h*XBases: :class:`object`rh+jh,hh.hVh0}r(h2]h3]h4]h5]h8]uh:Kh;hh%]r(hDXBases: rr}r(h*XBases: h+jubj+)r}r(h*X:class:`object`rh+jh,Nh.j/h0}r(UreftypeXclassj1j2XobjectU refdomainXpyrh5]h4]U refexplicith2]h3]h8]j4j5j6jj7j8uh:Nh%]rj:)r}r(h*jh0}r(h2]h3]r(j?jXpy-classreh4]h5]h8]uh+jh%]rhDXobjectrr}r(h*Uh+jubah.jEubaubeubhH)r}r(h*Uh+jh,Nh.hLh0}r(h5]h4]h2]h3]h8]Uentries]r(hOX%next() (circuits.six.Iterator method)h Utrauh:Nh;hh%]ubha)r}r(h*Uh+jh,Nh.hdh0}r(hfhgXpyh5]h4]h2]h3]h8]hhXmethodrhjjuh:Nh;hh%]r(hl)r}r(h*XIterator.next()rh+jh,hoh.hph0}r(h5]rh ahshtX circuits.sixrr}rbh4]h2]h3]h8]rh ahyX Iterator.nexth{jh|uh:Nh;hh%]r(h)r}r(h*Xnexth+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDXnextrr}r(h*Uh+jubaubh)r}r(h*Uh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]ubeubh)r}r(h*Uh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]ubeubeubeubhH)r}r(h*Uh+h(h,XO/home/prologic/work/circuits/circuits/six.py:docstring of circuits.six.iterkeysrh.hLh0}r(h5]h4]h2]h3]h8]Uentries]r(hOX#iterkeys() (in module circuits.six)hUtrauh:Nh;hh%]ubha)r}r(h*Uh+h(h,jh.hdh0}r(hfhgXpyh5]h4]h2]h3]h8]hhXfunctionrhjjuh:Nh;hh%]r(hl)r}r(h*X iterkeys(d)h+jh,hoh.hph0}r(h5]rhahshtX circuits.sixr r }r bh4]h2]h3]h8]r hahyXiterkeysr h{Uh|uh:Nh;hh%]r(h~)r}r(h*X circuits.six.h+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDX circuits.six.rr}r(h*Uh+jubaubh)r}r(h*j h+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDXiterkeysrr}r(h*Uh+jubaubh)r}r(h*Uh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]r h)r!}r"(h*Xdh0}r#(h2]h3]h4]h5]h8]uh+jh%]r$hDXdr%}r&(h*Uh+j!ubah.hubaubeubh)r'}r((h*Uh+jh,hoh.hh0}r)(h2]h3]h4]h5]h8]uh:Nh;hh%]r*hQ)r+}r,(h*X1Return an iterator over the keys of a dictionary.r-h+j'h,jh.hVh0}r.(h2]h3]h4]h5]h8]uh:Kh;hh%]r/hDX1Return an iterator over the keys of a dictionary.r0r1}r2(h*j-h+j+ubaubaubeubhH)r3}r4(h*Uh+h(h,XQ/home/prologic/work/circuits/circuits/six.py:docstring of circuits.six.itervaluesr5h.hLh0}r6(h5]h4]h2]h3]h8]Uentries]r7(hOX%itervalues() (in module circuits.six)h Utr8auh:Nh;hh%]ubha)r9}r:(h*Uh+h(h,j5h.hdh0}r;(hfhgXpyh5]h4]h2]h3]h8]hhXfunctionr<hjj<uh:Nh;hh%]r=(hl)r>}r?(h*X itervalues(d)h+j9h,hoh.hph0}r@(h5]rAh ahshtX circuits.sixrBrC}rDbh4]h2]h3]h8]rEh ahyX itervaluesrFh{Uh|uh:Nh;hh%]rG(h~)rH}rI(h*X circuits.six.h+j>h,hoh.hh0}rJ(h2]h3]h4]h5]h8]uh:Nh;hh%]rKhDX circuits.six.rLrM}rN(h*Uh+jHubaubh)rO}rP(h*jFh+j>h,hoh.hh0}rQ(h2]h3]h4]h5]h8]uh:Nh;hh%]rRhDX itervaluesrSrT}rU(h*Uh+jOubaubh)rV}rW(h*Uh+j>h,hoh.hh0}rX(h2]h3]h4]h5]h8]uh:Nh;hh%]rYh)rZ}r[(h*Xdh0}r\(h2]h3]h4]h5]h8]uh+jVh%]r]hDXdr^}r_(h*Uh+jZubah.hubaubeubh)r`}ra(h*Uh+j9h,hoh.hh0}rb(h2]h3]h4]h5]h8]uh:Nh;hh%]rchQ)rd}re(h*X3Return an iterator over the values of a dictionary.rfh+j`h,j5h.hVh0}rg(h2]h3]h4]h5]h8]uh:Kh;hh%]rhhDX3Return an iterator over the values of a dictionary.rirj}rk(h*jfh+jdubaubaubeubhH)rl}rm(h*Uh+h(h,XP/home/prologic/work/circuits/circuits/six.py:docstring of circuits.six.iteritemsrnh.hLh0}ro(h5]h4]h2]h3]h8]Uentries]rp(hOX$iteritems() (in module circuits.six)hUtrqauh:Nh;hh%]ubha)rr}rs(h*Uh+h(h,jnh.hdh0}rt(hfhgXpyh5]h4]h2]h3]h8]hhXfunctionruhjjuuh:Nh;hh%]rv(hl)rw}rx(h*X iteritems(d)h+jrh,hoh.hph0}ry(h5]rzhahshtX circuits.sixr{r|}r}bh4]h2]h3]h8]r~hahyX iteritemsrh{Uh|uh:Nh;hh%]r(h~)r}r(h*X circuits.six.h+jwh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDX circuits.six.rr}r(h*Uh+jubaubh)r}r(h*jh+jwh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDX iteritemsrr}r(h*Uh+jubaubh)r}r(h*Uh+jwh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rh)r}r(h*Xdh0}r(h2]h3]h4]h5]h8]uh+jh%]rhDXdr}r(h*Uh+jubah.hubaubeubh)r}r(h*Uh+jrh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhQ)r}r(h*X?Return an iterator over the (key, value) pairs of a dictionary.rh+jh,jnh.hVh0}r(h2]h3]h4]h5]h8]uh:Kh;hh%]rhDX?Return an iterator over the (key, value) pairs of a dictionary.rr}r(h*jh+jubaubaubeubhH)r}r(h*Uh+h(h,XH/home/prologic/work/circuits/circuits/six.py:docstring of circuits.six.brh.hLh0}r(h5]h4]h2]h3]h8]Uentries]r(hOXb() (in module circuits.six)hUtrauh:Nh;hh%]ubha)r}r(h*Uh+h(h,jh.hdh0}r(hfhgXpyh5]h4]h2]h3]h8]hhXfunctionrhjjuh:Nh;hh%]r(hl)r}r(h*Xb(s, encoding='utf-8')h+jh,hoh.hph0}r(h5]rhahshtX circuits.sixrr}rbh4]h2]h3]h8]rhahyXbh{Uh|uh:Nh;hh%]r(h~)r}r(h*X circuits.six.h+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDX circuits.six.rr}r(h*Uh+jubaubh)r}r(h*Xbh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDXbr}r(h*Uh+jubaubh)r}r(h*Uh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]r(h)r}r(h*Xsh0}r(h2]h3]h4]h5]h8]uh+jh%]rhDXsr}r(h*Uh+jubah.hubh)r}r(h*Xencoding='utf-8'h0}r(h2]h3]h4]h5]h8]uh+jh%]rhDXencoding='utf-8'rr}r(h*Uh+jubah.hubeubeubh)r}r(h*Uh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhQ)r}r(h*X Byte literalrh+jh,jh.hVh0}r(h2]h3]h4]h5]h8]uh:Kh;hh%]rhDX Byte literalrr}r(h*jh+jubaubaubeubhH)r}r(h*Uh+h(h,XH/home/prologic/work/circuits/circuits/six.py:docstring of circuits.six.urh.hLh0}r(h5]h4]h2]h3]h8]Uentries]r(hOXu() (in module circuits.six)h Utrauh:Nh;hh%]ubha)r}r(h*Uh+h(h,jh.hdh0}r(hfhgXpyh5]h4]h2]h3]h8]hhXfunctionrhjjuh:Nh;hh%]r(hl)r}r(h*Xu(s, encoding='utf-8')h+jh,hoh.hph0}r(h5]rh ahshtX circuits.sixrr}rbh4]h2]h3]h8]rh ahyXuh{Uh|uh:Nh;hh%]r(h~)r}r(h*X circuits.six.h+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDX circuits.six.rr}r(h*Uh+jubaubh)r}r(h*Xuh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDXur}r(h*Uh+jubaubh)r}r(h*Uh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]r(h)r}r (h*Xsh0}r (h2]h3]h4]h5]h8]uh+jh%]r hDXsr }r (h*Uh+jubah.hubh)r}r(h*Xencoding='utf-8'h0}r(h2]h3]h4]h5]h8]uh+jh%]rhDXencoding='utf-8'rr}r(h*Uh+jubah.hubeubeubh)r}r(h*Uh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhQ)r}r(h*X Text literalrh+jh,jh.hVh0}r(h2]h3]h4]h5]h8]uh:Kh;hh%]rhDX Text literalrr}r (h*jh+jubaubaubeubhH)r!}r"(h*Uh+h(h,Nh.hLh0}r#(h5]h4]h2]h3]h8]Uentries]r$(hOX'bytes_to_str() (in module circuits.six)hUtr%auh:Nh;hh%]ubha)r&}r'(h*Uh+h(h,Nh.hdh0}r((hfhgXpyh5]h4]h2]h3]h8]hhXfunctionr)hjj)uh:Nh;hh%]r*(hl)r+}r,(h*Xbytes_to_str(s)h+j&h,hoh.hph0}r-(h5]r.hahshtX circuits.sixr/r0}r1bh4]h2]h3]h8]r2hahyX bytes_to_strr3h{Uh|uh:Nh;hh%]r4(h~)r5}r6(h*X circuits.six.h+j+h,hoh.hh0}r7(h2]h3]h4]h5]h8]uh:Nh;hh%]r8hDX circuits.six.r9r:}r;(h*Uh+j5ubaubh)r<}r=(h*j3h+j+h,hoh.hh0}r>(h2]h3]h4]h5]h8]uh:Nh;hh%]r?hDX bytes_to_strr@rA}rB(h*Uh+j<ubaubh)rC}rD(h*Uh+j+h,hoh.hh0}rE(h2]h3]h4]h5]h8]uh:Nh;hh%]rFh)rG}rH(h*Xsh0}rI(h2]h3]h4]h5]h8]uh+jCh%]rJhDXsrK}rL(h*Uh+jGubah.hubaubeubh)rM}rN(h*Uh+j&h,hoh.hh0}rO(h2]h3]h4]h5]h8]uh:Nh;hh%]ubeubhH)rP}rQ(h*Uh+h(h,XN/home/prologic/work/circuits/circuits/six.py:docstring of circuits.six.reraiserRh.hLh0}rS(h5]h4]h2]h3]h8]Uentries]rT(hOX"reraise() (in module circuits.six)hUtrUauh:Nh;hh%]ubha)rV}rW(h*Uh+h(h,jRh.hdh0}rX(hfhgXpyh5]h4]h2]h3]h8]hhXfunctionrYhjjYuh:Nh;hh%]rZ(hl)r[}r\(h*Xreraise(tp, value, tb=None)h+jVh,hoh.hph0}r](h5]r^hahshtX circuits.sixr_r`}rabh4]h2]h3]h8]rbhahyXreraiserch{Uh|uh:Nh;hh%]rd(h~)re}rf(h*X circuits.six.h+j[h,hoh.hh0}rg(h2]h3]h4]h5]h8]uh:Nh;hh%]rhhDX circuits.six.rirj}rk(h*Uh+jeubaubh)rl}rm(h*jch+j[h,hoh.hh0}rn(h2]h3]h4]h5]h8]uh:Nh;hh%]rohDXreraiserprq}rr(h*Uh+jlubaubh)rs}rt(h*Uh+j[h,hoh.hh0}ru(h2]h3]h4]h5]h8]uh:Nh;hh%]rv(h)rw}rx(h*Xtph0}ry(h2]h3]h4]h5]h8]uh+jsh%]rzhDXtpr{r|}r}(h*Uh+jwubah.hubh)r~}r(h*Xvalueh0}r(h2]h3]h4]h5]h8]uh+jsh%]rhDXvaluerr}r(h*Uh+j~ubah.hubh)r}r(h*Xtb=Noneh0}r(h2]h3]h4]h5]h8]uh+jsh%]rhDXtb=Nonerr}r(h*Uh+jubah.hubeubeubh)r}r(h*Uh+jVh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhQ)r}r(h*XReraise an exception.rh+jh,jRh.hVh0}r(h2]h3]h4]h5]h8]uh:Kh;hh%]rhDXReraise an exception.rr}r(h*jh+jubaubaubeubhH)r}r(h*Uh+h(h,XL/home/prologic/work/circuits/circuits/six.py:docstring of circuits.six.exec_rh.hLh0}r(h5]h4]h2]h3]h8]Uentries]r(hOX exec_() (in module circuits.six)hUtrauh:Nh;hh%]ubha)r}r(h*Uh+h(h,jh.hdh0}r(hfhgXpyh5]h4]h2]h3]h8]hhXfunctionrhjjuh:Nh;hh%]r(hl)r}r(h*X"exec_(code, globs=None, locs=None)h+jh,hoh.hph0}r(h5]rhahshtX circuits.sixrr}rbh4]h2]h3]h8]rhahyXexec_rh{Uh|uh:Nh;hh%]r(h~)r}r(h*X circuits.six.h+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDX circuits.six.rr}r(h*Uh+jubaubh)r}r(h*jh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDXexec_rr}r(h*Uh+jubaubh)r}r(h*Uh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]r(h)r}r(h*Xcodeh0}r(h2]h3]h4]h5]h8]uh+jh%]rhDXcoderr}r(h*Uh+jubah.hubh)r}r(h*X globs=Noneh0}r(h2]h3]h4]h5]h8]uh+jh%]rhDX globs=Nonerr}r(h*Uh+jubah.hubh)r}r(h*X locs=Noneh0}r(h2]h3]h4]h5]h8]uh+jh%]rhDX locs=Nonerr}r(h*Uh+jubah.hubeubeubh)r}r(h*Uh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhQ)r}r(h*XExecute code in a namespace.rh+jh,jh.hVh0}r(h2]h3]h4]h5]h8]uh:Kh;hh%]rhDXExecute code in a namespace.rr}r(h*jh+jubaubaubeubhH)r}r(h*Uh+h(h,XM/home/prologic/work/circuits/circuits/six.py:docstring of circuits.six.print_rh.hLh0}r(h5]h4]h2]h3]h8]Uentries]r(hOX!print_() (in module circuits.six)hUtrauh:Nh;hh%]ubha)r}r(h*Uh+h(h,jh.hdh0}r(hfhgXpyh5]h4]h2]h3]h8]hhXfunctionrhjjuh:Nh;hh%]r(hl)r}r(h*Xprint_(*args, **kwargs)h+jh,hoh.hph0}r(h5]rhahshtX circuits.sixrr}rbh4]h2]h3]h8]rhahyXprint_rh{Uh|uh:Nh;hh%]r(h~)r}r(h*X circuits.six.h+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDX circuits.six.rr}r(h*Uh+jubaubh)r}r(h*jh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhDXprint_rr}r(h*Uh+jubaubh)r}r(h*Uh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]r(h)r}r(h*X*argsh0}r (h2]h3]h4]h5]h8]uh+jh%]r hDX*argsr r }r (h*Uh+jubah.hubh)r}r(h*X**kwargsh0}r(h2]h3]h4]h5]h8]uh+jh%]rhDX**kwargsrr}r(h*Uh+jubah.hubeubeubh)r}r(h*Uh+jh,hoh.hh0}r(h2]h3]h4]h5]h8]uh:Nh;hh%]rhQ)r}r(h*XThe new-style print function.rh+jh,jh.hVh0}r(h2]h3]h4]h5]h8]uh:Kh;hh%]rhDXThe new-style print function.rr}r (h*jh+jubaubaubeubhH)r!}r"(h*Uh+h(h,XU/home/prologic/work/circuits/circuits/six.py:docstring of circuits.six.with_metaclassr#h.hLh0}r$(h5]h4]h2]h3]h8]Uentries]r%(hOX)with_metaclass() (in module circuits.six)hUtr&auh:Nh;hh%]ubha)r'}r((h*Uh+h(h,j#h.hdh0}r)(hfhgXpyh5]h4]h2]h3]h8]hhXfunctionr*hjj*uh:Nh;hh%]r+(hl)r,}r-(h*X*with_metaclass(meta, base=)h+j'h,hoh.hph0}r.(h5]r/hahshtX circuits.sixr0r1}r2bh4]h2]h3]h8]r3hahyXwith_metaclassr4h{Uh|uh:Nh;hh%]r5(h~)r6}r7(h*X circuits.six.h+j,h,hoh.hh0}r8(h2]h3]h4]h5]h8]uh:Nh;hh%]r9hDX circuits.six.r:r;}r<(h*Uh+j6ubaubh)r=}r>(h*j4h+j,h,hoh.hh0}r?(h2]h3]h4]h5]h8]uh:Nh;hh%]r@hDXwith_metaclassrArB}rC(h*Uh+j=ubaubh)rD}rE(h*Uh+j,h,hoh.hh0}rF(h2]h3]h4]h5]h8]uh:Nh;hh%]rG(h)rH}rI(h*Xmetah0}rJ(h2]h3]h4]h5]h8]uh+jDh%]rKhDXmetarLrM}rN(h*Uh+jHubah.hubh)rO}rP(h*Xbase=h0}rQ(h2]h3]h4]h5]h8]uh+jDh%]rRhDXbase=rSrT}rU(h*Uh+jOubah.hubeubeubh)rV}rW(h*Uh+j'h,hoh.hh0}rX(h2]h3]h4]h5]h8]uh:Nh;hh%]rYhQ)rZ}r[(h*X%Create a base class with a metaclass.r\h+jVh,j#h.hVh0}r](h2]h3]h4]h5]h8]uh:Kh;hh%]r^hDX%Create a base class with a metaclass.r_r`}ra(h*j\h+jZubaubaubeubeubah*UU transformerrbNU footnote_refsrc}rdUrefnamesre}rfUsymbol_footnotesrg]rhUautofootnote_refsri]rjUsymbol_footnote_refsrk]rlU citationsrm]rnh;hU current_lineroNUtransform_messagesrp]rqUreporterrrNUid_startrsKU autofootnotesrt]ruU citation_refsrv}rwUindirect_targetsrx]ryUsettingsrz(cdocutils.frontend Values r{or|}r}(Ufootnote_backlinksr~KUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNhANUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh-Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hjwh7cdocutils.nodes target r)r}r(h*Uh+h(h,hKh.Utargetrh0}r(h2]h5]rh7ah4]Uismodh3]h8]uh:Kh;hh%]ubhj.hhmh$h(h jhjh hhj,hjhhhjh jhj[hj+hjhjhjhjfh j>h jhjPuUsubstitution_namesr}rh.h;h0}r(h2]h5]h4]Usourceh-h3]h8]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.parsers.doctree0000644000014400001440000000772612425011105026372 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xmodule contentsqNXcircuits.web.parsers packageqNX submodulesqNuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hUmodule-contentsqhUcircuits-web-parsers-packageqhU submodulesquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXE/home/prologic/work/circuits/docs/source/api/circuits.web.parsers.rstqUtagnameqUsectionqU attributesq }q!(Udupnamesq"]Uclassesq#]Ubackrefsq$]Uidsq%]q&haUnamesq']q(hauUlineq)KUdocumentq*hh]q+(cdocutils.nodes title q,)q-}q.(hXcircuits.web.parsers packageq/hhhhhUtitleq0h }q1(h"]h#]h$]h%]h']uh)Kh*hh]q2cdocutils.nodes Text q3Xcircuits.web.parsers packageq4q5}q6(hh/hh-ubaubh)q7}q8(hUhhhhhhh }q9(h"]h#]h$]h%]q:hah']q;hauh)Kh*hh]q<(h,)q=}q>(hX Submodulesq?hh7hhhh0h }q@(h"]h#]h$]h%]h']uh)Kh*hh]qAh3X SubmodulesqBqC}qD(hh?hh=ubaubcdocutils.nodes compound qE)qF}qG(hUhh7hhhUcompoundqHh }qI(h"]h#]qJUtoctree-wrapperqKah$]h%]h']uh)K h*hh]qLcsphinx.addnodes toctree qM)qN}qO(hUhhFhhhUtoctreeqPh }qQ(UnumberedqRKU includehiddenqShXapi/circuits.web.parsersqTU titlesonlyqUUglobqVh%]h$]h"]h#]h']UentriesqW]qX(NXapi/circuits.web.parsers.httpqYqZNX"api/circuits.web.parsers.multipartq[q\NX$api/circuits.web.parsers.querystringq]q^eUhiddenq_U includefilesq`]qa(hYh[h]eUmaxdepthqbJuh)Kh]ubaubeubh)qc}qd(hUhhhhhhh }qe(h"]h#]h$]h%]qf(Xmodule-circuits.web.parsersqgheh']qhhauh)Kh*hh]qi(h,)qj}qk(hXModule contentsqlhhchhhh0h }qm(h"]h#]h$]h%]h']uh)Kh*hh]qnh3XModule contentsqoqp}qq(hhlhhjubaubcsphinx.addnodes index qr)qs}qt(hUhhchU quhUindexqvh }qw(h%]h$]h"]h#]h']Uentries]qx(UsingleqyXcircuits.web.parsers (module)Xmodule-circuits.web.parsersUtqzauh)Kh*hh]ubcdocutils.nodes paragraph q{)q|}q}(hXcircuits.web parsersq~hhchX_/home/prologic/work/circuits/circuits/web/parsers/__init__.py:docstring of circuits.web.parsersqhU paragraphqh }q(h"]h#]h$]h%]h']uh)Kh*hh]qh3Xcircuits.web parsersqq}q(hh~hh|ubaubeubeubahUU 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_classesqNh0NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_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_sourceqhUgettext_compactqԈU generatorqNUdump_internalsqNU smart_quotesq׉U pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformq߉Ustrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hgcdocutils.nodes target q)q}q(hUhhchhuhUtargetqh }q(h"]h%]qhgah$]Uismodh#]h']uh)Kh*hh]ubhhhhchh7uUsubstitution_namesq}qhh*h }q(h"]h%]h$]Usourcehh#]h']uU footnotesq]qUrefidsq}qub.circuits-3.1.0/docs/build/doctrees/api/circuits.tools.doctree0000644000014400001440000004242212425011104025266 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.tools.tryimportqXcircuits.tools.walkqXmodule contentsqNXcircuits.tools.inspectq Xcircuits.tools packageq NXcircuits.tools.killq Xcircuits.tools.graphq Xcircuits.tools.deprecatedq Xcircuits.tools.findrootqXcircuits.tools.edgesquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhUmodule-contentsqh h h Ucircuits-tools-packageqh h h h h h hhhhuUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceq UUparentq!hUsourceq"X?/home/prologic/work/circuits/docs/source/api/circuits.tools.rstq#Utagnameq$Usectionq%U attributesq&}q'(Udupnamesq(]Uclassesq)]Ubackrefsq*]Uidsq+]q,haUnamesq-]q.h auUlineq/KUdocumentq0hh]q1(cdocutils.nodes title q2)q3}q4(h Xcircuits.tools packageq5h!hh"h#h$Utitleq6h&}q7(h(]h)]h*]h+]h-]uh/Kh0hh]q8cdocutils.nodes Text q9Xcircuits.tools packageq:q;}q<(h h5h!h3ubaubh)q=}q>(h Uh!hh"h#h$h%h&}q?(h(]h)]h*]h+]q@(Xmodule-circuits.toolsqAheh-]qBhauh/Kh0hh]qC(h2)qD}qE(h XModule contentsqFh!h=h"h#h$h6h&}qG(h(]h)]h*]h+]h-]uh/Kh0hh]qHh9XModule contentsqIqJ}qK(h hFh!hDubaubcsphinx.addnodes index qL)qM}qN(h Uh!h=h"U qOh$UindexqPh&}qQ(h+]h*]h(]h)]h-]Uentries]qR(UsingleqSXcircuits.tools (module)Xmodule-circuits.toolsUtqTauh/Kh0hh]ubcdocutils.nodes paragraph qU)qV}qW(h XCircuits ToolsqXh!h=h"XS/home/prologic/work/circuits/circuits/tools/__init__.py:docstring of circuits.toolsqYh$U paragraphqZh&}q[(h(]h)]h*]h+]h-]uh/Kh0hh]q\h9XCircuits Toolsq]q^}q_(h hXh!hVubaubhU)q`}qa(h Xcircuits.tools contains a standard set of tools for circuits. These tools are installed as executables with a prefix of "circuits."qbh!h=h"hYh$hZh&}qc(h(]h)]h*]h+]h-]uh/Kh0hh]qdh9Xcircuits.tools contains a standard set of tools for circuits. These tools are installed as executables with a prefix of "circuits."qeqf}qg(h hbh!h`ubaubhL)qh}qi(h Uh!h=h"Nh$hPh&}qj(h+]h*]h(]h)]h-]Uentries]qk(hSX&tryimport() (in module circuits.tools)hUtqlauh/Nh0hh]ubcsphinx.addnodes desc qm)qn}qo(h Uh!h=h"Nh$Udescqph&}qq(UnoindexqrUdomainqsXpyh+]h*]h(]h)]h-]UobjtypeqtXfunctionquUdesctypeqvhuuh/Nh0hh]qw(csphinx.addnodes desc_signature qx)qy}qz(h X*tryimport(modules, obj=None, message=None)h!hnh"U q{h$Udesc_signatureq|h&}q}(h+]q~haUmoduleqcdocutils.nodes reprunicode qXcircuits.toolsqq}qbh*]h(]h)]h-]qhaUfullnameqX tryimportqUclassqUUfirstquh/Nh0hh]q(csphinx.addnodes desc_addname q)q}q(h Xcircuits.tools.h!hyh"h{h$U desc_addnameqh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]qh9Xcircuits.tools.qq}q(h Uh!hubaubcsphinx.addnodes desc_name q)q}q(h hh!hyh"h{h$U desc_nameqh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]qh9X tryimportqq}q(h Uh!hubaubcsphinx.addnodes desc_parameterlist q)q}q(h Uh!hyh"h{h$Udesc_parameterlistqh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]q(csphinx.addnodes desc_parameter q)q}q(h Xmodulesh&}q(h(]h)]h*]h+]h-]uh!hh]qh9Xmodulesqq}q(h Uh!hubah$Udesc_parameterqubh)q}q(h Xobj=Noneh&}q(h(]h)]h*]h+]h-]uh!hh]qh9Xobj=Noneqq}q(h Uh!hubah$hubh)q}q(h X message=Noneh&}q(h(]h)]h*]h+]h-]uh!hh]qh9X message=Noneqq}q(h Uh!hubah$hubeubeubcsphinx.addnodes desc_content q)q}q(h Uh!hnh"h{h$U desc_contentqh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]ubeubhL)q}q(h Uh!h=h"Nh$hPh&}q(h+]h*]h(]h)]h-]Uentries]q(hSX!walk() (in module circuits.tools)hUtqauh/Nh0hh]ubhm)q}q(h Uh!h=h"Nh$hph&}q(hrhsXpyh+]h*]h(]h)]h-]htXfunctionqhvhuh/Nh0hh]q(hx)q}q(h Xwalk(x, f, d=0, v=None)h!hh"h{h$h|h&}q(h+]qhahhXcircuits.toolsq̅q}qbh*]h(]h)]h-]qhahXwalkqhUhuh/Nh0hh]q(h)q}q(h Xcircuits.tools.h!hh"h{h$hh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]qh9Xcircuits.tools.qօq}q(h Uh!hubaubh)q}q(h hh!hh"h{h$hh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]qh9Xwalkq݅q}q(h Uh!hubaubh)q}q(h Uh!hh"h{h$hh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]q(h)q}q(h Xxh&}q(h(]h)]h*]h+]h-]uh!hh]qh9Xxq}q(h Uh!hubah$hubh)q}q(h Xfh&}q(h(]h)]h*]h+]h-]uh!hh]qh9Xfq}q(h Uh!hubah$hubh)q}q(h Xd=0h&}q(h(]h)]h*]h+]h-]uh!hh]qh9Xd=0qq}q(h Uh!hubah$hubh)q}q(h Xv=Noneh&}q(h(]h)]h*]h+]h-]uh!hh]qh9Xv=Noneqq}q(h Uh!hubah$hubeubeubh)q}q(h Uh!hh"h{h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]ubeubhL)r}r(h Uh!h=h"Nh$hPh&}r(h+]h*]h(]h)]h-]Uentries]r(hSX"edges() (in module circuits.tools)hUtrauh/Nh0hh]ubhm)r}r(h Uh!h=h"Nh$hph&}r(hrhsXpyh+]h*]h(]h)]h-]htXfunctionr hvj uh/Nh0hh]r (hx)r }r (h Xedges(x, e=None, v=None, d=0)h!jh"h{h$h|h&}r (h+]rhahhXcircuits.toolsrr}rbh*]h(]h)]h-]rhahXedgesrhUhuh/Nh0hh]r(h)r}r(h Xcircuits.tools.h!j h"h{h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]rh9Xcircuits.tools.rr}r(h Uh!jubaubh)r}r(h jh!j h"h{h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]rh9Xedgesr r!}r"(h Uh!jubaubh)r#}r$(h Uh!j h"h{h$hh&}r%(h(]h)]h*]h+]h-]uh/Nh0hh]r&(h)r'}r((h Xxh&}r)(h(]h)]h*]h+]h-]uh!j#h]r*h9Xxr+}r,(h Uh!j'ubah$hubh)r-}r.(h Xe=Noneh&}r/(h(]h)]h*]h+]h-]uh!j#h]r0h9Xe=Noner1r2}r3(h Uh!j-ubah$hubh)r4}r5(h Xv=Noneh&}r6(h(]h)]h*]h+]h-]uh!j#h]r7h9Xv=Noner8r9}r:(h Uh!j4ubah$hubh)r;}r<(h Xd=0h&}r=(h(]h)]h*]h+]h-]uh!j#h]r>h9Xd=0r?r@}rA(h Uh!j;ubah$hubeubeubh)rB}rC(h Uh!jh"h{h$hh&}rD(h(]h)]h*]h+]h-]uh/Nh0hh]ubeubhL)rE}rF(h Uh!h=h"Nh$hPh&}rG(h+]h*]h(]h)]h-]Uentries]rH(hSX%findroot() (in module circuits.tools)hUtrIauh/Nh0hh]ubhm)rJ}rK(h Uh!h=h"Nh$hph&}rL(hrhsXpyh+]h*]h(]h)]h-]htXfunctionrMhvjMuh/Nh0hh]rN(hx)rO}rP(h X findroot(x)h!jJh"h{h$h|h&}rQ(h+]rRhahhXcircuits.toolsrSrT}rUbh*]h(]h)]h-]rVhahXfindrootrWhUhuh/Nh0hh]rX(h)rY}rZ(h Xcircuits.tools.h!jOh"h{h$hh&}r[(h(]h)]h*]h+]h-]uh/Nh0hh]r\h9Xcircuits.tools.r]r^}r_(h Uh!jYubaubh)r`}ra(h jWh!jOh"h{h$hh&}rb(h(]h)]h*]h+]h-]uh/Nh0hh]rch9Xfindrootrdre}rf(h Uh!j`ubaubh)rg}rh(h Uh!jOh"h{h$hh&}ri(h(]h)]h*]h+]h-]uh/Nh0hh]rjh)rk}rl(h Xxh&}rm(h(]h)]h*]h+]h-]uh!jgh]rnh9Xxro}rp(h Uh!jkubah$hubaubeubh)rq}rr(h Uh!jJh"h{h$hh&}rs(h(]h)]h*]h+]h-]uh/Nh0hh]ubeubhL)rt}ru(h Uh!h=h"Nh$hPh&}rv(h+]h*]h(]h)]h-]Uentries]rw(hSX!kill() (in module circuits.tools)h Utrxauh/Nh0hh]ubhm)ry}rz(h Uh!h=h"Nh$hph&}r{(hrhsXpyh+]h*]h(]h)]h-]htXfunctionr|hvj|uh/Nh0hh]r}(hx)r~}r(h Xkill(x)h!jyh"h{h$h|h&}r(h+]rh ahhXcircuits.toolsrr}rbh*]h(]h)]h-]rh ahXkillrhUhuh/Nh0hh]r(h)r}r(h Xcircuits.tools.h!j~h"h{h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]rh9Xcircuits.tools.rr}r(h Uh!jubaubh)r}r(h jh!j~h"h{h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]rh9Xkillrr}r(h Uh!jubaubh)r}r(h Uh!j~h"h{h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]rh)r}r(h Xxh&}r(h(]h)]h*]h+]h-]uh!jh]rh9Xxr}r(h Uh!jubah$hubaubeubh)r}r(h Uh!jyh"h{h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]ubeubhL)r}r(h Uh!h=h"XY/home/prologic/work/circuits/circuits/tools/__init__.py:docstring of circuits.tools.graphrh$hPh&}r(h+]h*]h(]h)]h-]Uentries]r(hSX"graph() (in module circuits.tools)h Utrauh/Nh0hh]ubhm)r}r(h Uh!h=h"jh$hph&}r(hrhsXpyrh+]h*]h(]h)]h-]htXfunctionrhvjuh/Nh0hh]r(hx)r}r(h Xgraph(x, name=None)h!jh"h{h$h|h&}r(h+]rh ahhXcircuits.toolsrr}rbh*]h(]h)]h-]rh ahXgraphrhUhuh/Nh0hh]r(h)r}r(h Xcircuits.tools.h!jh"h{h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]rh9Xcircuits.tools.rr}r(h Uh!jubaubh)r}r(h jh!jh"h{h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]rh9Xgraphrr}r(h Uh!jubaubh)r}r(h Uh!jh"h{h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]r(h)r}r(h Xxh&}r(h(]h)]h*]h+]h-]uh!jh]rh9Xxr}r(h Uh!jubah$hubh)r}r(h X name=Noneh&}r(h(]h)]h*]h+]h-]uh!jh]rh9X name=Nonerr}r(h Uh!jubah$hubeubeubh)r}r(h Uh!jh"h{h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]r(hU)r}r(h X8Display a directed graph of the Component structure of xrh!jh"jh$hZh&}r(h(]h)]h*]h+]h-]uh/Kh0hh]rh9X8Display a directed graph of the Component structure of xrr}r(h jh!jubaubcdocutils.nodes field_list r)r}r(h Uh!jh"jh$U field_listrh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]rcdocutils.nodes field r)r}r(h Uh&}r(h(]h)]h*]h+]h-]uh!jh]r(cdocutils.nodes field_name r)r}r(h Uh&}r(h(]h)]h*]h+]h-]uh!jh]rh9X Parametersrr}r(h Uh!jubah$U field_namerubcdocutils.nodes field_body r)r}r(h Uh&}r(h(]h)]h*]h+]h-]uh!jh]rcdocutils.nodes bullet_list r)r}r(h Uh&}r(h(]h)]h*]h+]h-]uh!jh]r(cdocutils.nodes list_item r)r}r(h Uh&}r(h(]h)]h*]h+]h-]uh!jh]rhU)r}r(h Uh&}r (h(]h)]h*]h+]h-]uh!jh]r (cdocutils.nodes strong r )r }r (h Xxh&}r(h(]h)]h*]h+]h-]uh!jh]rh9Xxr}r(h Uh!j ubah$Ustrongrubh9X (rr}r(h Uh!jubcsphinx.addnodes pending_xref r)r}r(h Uh&}r(UreftypeUobjrU reftargetXComponent or ManagerrU refdomainjh+]h*]U refexplicith(]h)]h-]uh!jh]rcdocutils.nodes emphasis r)r}r(h jh&}r (h(]h)]h*]h+]h-]uh!jh]r!h9XComponent or Managerr"r#}r$(h Uh!jubah$Uemphasisr%ubah$U pending_xrefr&ubh9X)r'}r((h Uh!jubh9X -- r)r*}r+(h Uh!jubh9XA Component or Manager to graphr,r-}r.(h XA Component or Manager to graphr/h!jubeh$hZubah$U list_itemr0ubj)r1}r2(h Uh&}r3(h(]h)]h*]h+]h-]uh!jh]r4hU)r5}r6(h Uh&}r7(h(]h)]h*]h+]h-]uh!j1h]r8(j )r9}r:(h Xnameh&}r;(h(]h)]h*]h+]h-]uh!j5h]r<h9Xnamer=r>}r?(h Uh!j9ubah$jubh9X (r@rA}rB(h Uh!j5ubj)rC}rD(h Uh&}rE(UreftypejU reftargetXstrrFU refdomainjh+]h*]U refexplicith(]h)]h-]uh!j5h]rGj)rH}rI(h jFh&}rJ(h(]h)]h*]h+]h-]uh!jCh]rKh9XstrrLrM}rN(h Uh!jHubah$j%ubah$j&ubh9X)rO}rP(h Uh!j5ubh9X -- rQrR}rS(h Uh!j5ubh9X+A name for the graph (defaults to x's name)rTrU}rV(h X+A name for the graph (defaults to x's name)rWh!j5ubeh$hZubah$j0ubeh$U bullet_listrXubah$U field_bodyrYubeh$UfieldrZubaubhU)r[}r\(h XL@return: A directed graph representing x's Component structure. @rtype: strr]h!jh"jh$hZh&}r^(h(]h)]h*]h+]h-]uh/K h0hh]r_h9XL@return: A directed graph representing x's Component structure. @rtype: strr`ra}rb(h j]h!j[ubaubeubeubhL)rc}rd(h Uh!h=h"X[/home/prologic/work/circuits/circuits/tools/__init__.py:docstring of circuits.tools.inspectreh$hPh&}rf(h+]h*]h(]h)]h-]Uentries]rg(hSX$inspect() (in module circuits.tools)h Utrhauh/Nh0hh]ubhm)ri}rj(h Uh!h=h"jeh$hph&}rk(hrhsXpyrlh+]h*]h(]h)]h-]htXfunctionrmhvjmuh/Nh0hh]rn(hx)ro}rp(h X inspect(x)rqh!jih"h{h$h|h&}rr(h+]rsh ahhXcircuits.toolsrtru}rvbh*]h(]h)]h-]rwh ahXinspectrxhUhuh/Nh0hh]ry(h)rz}r{(h Xcircuits.tools.h!joh"h{h$hh&}r|(h(]h)]h*]h+]h-]uh/Nh0hh]r}h9Xcircuits.tools.r~r}r(h Uh!jzubaubh)r}r(h jxh!joh"h{h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]rh9Xinspectrr}r(h Uh!jubaubh)r}r(h Uh!joh"h{h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]rh)r}r(h Xxh&}r(h(]h)]h*]h+]h-]uh!jh]rh9Xxr}r(h Uh!jubah$hubaubeubh)r}r(h Uh!jih"h{h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]r(hU)r}r(h X:Display an inspection report of the Component or Manager xrh!jh"jeh$hZh&}r(h(]h)]h*]h+]h-]uh/Kh0hh]rh9X:Display an inspection report of the Component or Manager xrr}r(h jh!jubaubj)r}r(h Uh!jh"jeh$jh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]rj)r}r(h Uh&}r(h(]h)]h*]h+]h-]uh!jh]r(j)r}r(h Uh&}r(h(]h)]h*]h+]h-]uh!jh]rh9X Parametersrr}r(h Uh!jubah$jubj)r}r(h Uh&}r(h(]h)]h*]h+]h-]uh!jh]rhU)r}r(h Uh&}r(h(]h)]h*]h+]h-]uh!jh]r(j )r}r(h Xxh&}r(h(]h)]h*]h+]h-]uh!jh]rh9Xxr}r(h Uh!jubah$jubh9X (rr}r(h Uh!jubj)r}r(h Uh&}r(UreftypejU reftargetXComponent or ManagerrU refdomainjlh+]h*]U refexplicith(]h)]h-]uh!jh]rj)r}r(h jh&}r(h(]h)]h*]h+]h-]uh!jh]rh9XComponent or Managerrr}r(h Uh!jubah$j%ubah$j&ubh9X)r}r(h Uh!jubh9X -- rr}r(h Uh!jubh9XA Component or Manager to graphrr}r(h XA Component or Manager to graphrh!jubeh$hZubah$jYubeh$jZubaubhU)r}r(h X7@return: A detailed inspection report of x @rtype: strrh!jh"jeh$hZh&}r(h(]h)]h*]h+]h-]uh/Kh0hh]rh9X7@return: A detailed inspection report of x @rtype: strrr}r(h jh!jubaubeubeubhL)r}r(h Uh!h=h"Nh$hPh&}r(h+]h*]h(]h)]h-]Uentries]r(hSX'deprecated() (in module circuits.tools)h Utrauh/Nh0hh]ubhm)r}r(h Uh!h=h"Nh$hph&}r(hrhsXpyh+]h*]h(]h)]h-]htXfunctionrhvjuh/Nh0hh]r(hx)r}r(h X deprecated(f)rh!jh"h{h$h|h&}r(h+]rh ahhXcircuits.toolsrr}rbh*]h(]h)]h-]rh ahX deprecatedrhUhuh/Nh0hh]r(h)r}r(h Xcircuits.tools.h!jh"h{h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]rh9Xcircuits.tools.rr}r(h Uh!jubaubh)r}r(h jh!jh"h{h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]rh9X deprecatedrr}r(h Uh!jubaubh)r}r(h Uh!jh"h{h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]rh)r}r(h Xfh&}r(h(]h)]h*]h+]h-]uh!jh]rh9Xfr}r(h Uh!jubah$hubaubeubh)r}r (h Uh!jh"h{h$hh&}r (h(]h)]h*]h+]h-]uh/Nh0hh]ubeubeubeubah UU transformerr NU footnote_refsr }r Urefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh0hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU 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+Upep_referencesr,NUstrip_commentsr-NU toc_backlinksr.Uentryr/U language_coder0Uenr1U datestampr2NU report_levelr3KU _destinationr4NU halt_levelr5KU strip_classesr6Nh6NUerror_encoding_error_handlerr7Ubackslashreplacer8Udebugr9NUembed_stylesheetr:Uoutput_encoding_error_handlerr;Ustrictr<U sectnum_xformr=KUdump_transformsr>NU docinfo_xformr?KUwarning_streamr@NUpep_file_url_templaterAUpep-%04drBUexit_status_levelrCKUconfigrDNUstrict_visitorrENUcloak_email_addressesrFUtrim_footnote_reference_spacerGUenvrHNUdump_pseudo_xmlrINUexpose_internalsrJNUsectsubtitle_xformrKU source_linkrLNUrfc_referencesrMNUoutput_encodingrNUutf-8rOU source_urlrPNUinput_encodingrQU utf-8-sigrRU_disable_configrSNU id_prefixrTUU tab_widthrUKUerror_encodingrVUUTF-8rWU_sourcerXh#Ugettext_compactrYU generatorrZNUdump_internalsr[NU smart_quotesr\U pep_base_urlr]Uhttp://www.python.org/dev/peps/r^Usyntax_highlightr_Ulongr`Uinput_encoding_error_handlerraj<Uauto_id_prefixrbUidrcUdoctitle_xformrdUstrip_elements_with_classesreNU _config_filesrf]Ufile_insertion_enabledrgU raw_enabledrhKU dump_settingsriNubUsymbol_footnote_startrjKUidsrk}rl(hh=hhyhhh johhh j~h jh jhjOhAcdocutils.nodes target rm)rn}ro(h Uh!h=h"hOh$Utargetrph&}rq(h(]h+]rrhAah*]Uismodh)]h-]uh/Kh0hh]ubhj uUsubstitution_namesrs}rth$h0h&}ru(h(]h+]h*]Usourceh#h)]h-]uU footnotesrv]rwUrefidsrx}ryub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.websockets.doctree0000644000014400001440000000772512425011106027064 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.web.websockets packageqNXmodule contentsqNX submodulesqNuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hUcircuits-web-websockets-packageqhUmodule-contentsqhU submodulesquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXH/home/prologic/work/circuits/docs/source/api/circuits.web.websockets.rstqUtagnameqUsectionqU attributesq }q!(Udupnamesq"]Uclassesq#]Ubackrefsq$]Uidsq%]q&haUnamesq']q(hauUlineq)KUdocumentq*hh]q+(cdocutils.nodes title q,)q-}q.(hXcircuits.web.websockets packageq/hhhhhUtitleq0h }q1(h"]h#]h$]h%]h']uh)Kh*hh]q2cdocutils.nodes Text q3Xcircuits.web.websockets packageq4q5}q6(hh/hh-ubaubh)q7}q8(hUhhhhhhh }q9(h"]h#]h$]h%]q:hah']q;hauh)Kh*hh]q<(h,)q=}q>(hX Submodulesq?hh7hhhh0h }q@(h"]h#]h$]h%]h']uh)Kh*hh]qAh3X SubmodulesqBqC}qD(hh?hh=ubaubcdocutils.nodes compound qE)qF}qG(hUhh7hhhUcompoundqHh }qI(h"]h#]qJUtoctree-wrapperqKah$]h%]h']uh)K h*hh]qLcsphinx.addnodes toctree qM)qN}qO(hUhhFhhhUtoctreeqPh }qQ(UnumberedqRKU includehiddenqShXapi/circuits.web.websocketsqTU titlesonlyqUUglobqVh%]h$]h"]h#]h']UentriesqW]qX(NX"api/circuits.web.websockets.clientqYqZNX&api/circuits.web.websockets.dispatcherq[q\eUhiddenq]U includefilesq^]q_(hYh[eUmaxdepthq`Juh)Kh]ubaubeubh)qa}qb(hUhhhhhhh }qc(h"]h#]h$]h%]qd(Xmodule-circuits.web.websocketsqeheh']qfhauh)K h*hh]qg(h,)qh}qi(hXModule contentsqjhhahhhh0h }qk(h"]h#]h$]h%]h']uh)K h*hh]qlh3XModule contentsqmqn}qo(hhjhhhubaubcsphinx.addnodes index qp)qq}qr(hUhhahU qshUindexqth }qu(h%]h$]h"]h#]h']Uentries]qv(UsingleqwX circuits.web.websockets (module)Xmodule-circuits.web.websocketsUtqxauh)Kh*hh]ubcdocutils.nodes paragraph qy)qz}q{(hXcircuits.web websocketsq|hhahXe/home/prologic/work/circuits/circuits/web/websockets/__init__.py:docstring of circuits.web.websocketsq}hU paragraphq~h }q(h"]h#]h$]h%]h']uh)Kh*hh]qh3Xcircuits.web websocketsqq}q(hh|hhzubaubeubeubahUU 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_classesqNh0NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqĉU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqhUgettext_compactq҈U generatorqNUdump_internalsqNU smart_quotesqՉU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformq݉Ustrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hhhecdocutils.nodes target q)q}q(hUhhahhshUtargetqh }q(h"]h%]qheah$]Uismodh#]h']uh)Kh*hh]ubhhahh7uUsubstitution_namesq}qhh*h }q(h"]h%]h$]Usourcehh#]h']uU footnotesq]qUrefidsq}qub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.http.doctree0000644000014400001440000003161312425011105025662 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.web.http.HTTP.baseqXcircuits.web.http.HTTPqXcircuits.web.http.HTTP.protocolqXcircuits.web.http moduleq NXcircuits.web.http.HTTP.versionq Xcircuits.web.http.HTTP.channelq Xcircuits.web.http.HTTP.schemeq uUsubstitution_defsq }qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh Ucircuits-web-http-moduleqh h h h h h uUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXB/home/prologic/work/circuits/docs/source/api/circuits.web.http.rstqUtagnameq Usectionq!U attributesq"}q#(Udupnamesq$]Uclassesq%]Ubackrefsq&]Uidsq']q((Xmodule-circuits.web.httpq)heUnamesq*]q+h auUlineq,KUdocumentq-hh]q.(cdocutils.nodes title q/)q0}q1(hXcircuits.web.http moduleq2hhhhh Utitleq3h"}q4(h$]h%]h&]h']h*]uh,Kh-hh]q5cdocutils.nodes Text q6Xcircuits.web.http moduleq7q8}q9(hh2hh0ubaubcsphinx.addnodes index q:)q;}q<(hUhhhU q=h Uindexq>h"}q?(h']h&]h$]h%]h*]Uentries]q@(UsingleqAXcircuits.web.http (module)Xmodule-circuits.web.httpUtqBauh,Kh-hh]ubcdocutils.nodes paragraph qC)qD}qE(hXHyper Text Transfer ProtocolqFhhhXP/home/prologic/work/circuits/circuits/web/http.py:docstring of circuits.web.httpqGh U paragraphqHh"}qI(h$]h%]h&]h']h*]uh,Kh-hh]qJh6XHyper Text Transfer ProtocolqKqL}qM(hhFhhDubaubhC)qN}qO(hX^This module implements the server side Hyper Text Transfer Protocol or commonly known as HTTP.qPhhhhGh hHh"}qQ(h$]h%]h&]h']h*]uh,Kh-hh]qRh6X^This module implements the server side Hyper Text Transfer Protocol or commonly known as HTTP.qSqT}qU(hhPhhNubaubh:)qV}qW(hUhhhNh h>h"}qX(h']h&]h$]h%]h*]Uentries]qY(hAX!HTTP (class in circuits.web.http)hUtqZauh,Nh-hh]ubcsphinx.addnodes desc q[)q\}q](hUhhhNh Udescq^h"}q_(Unoindexq`UdomainqaXpyh']h&]h$]h%]h*]UobjtypeqbXclassqcUdesctypeqdhcuh,Nh-hh]qe(csphinx.addnodes desc_signature qf)qg}qh(hX-HTTP(server, encoding='utf-8', channel='web')hh\hU qih Udesc_signatureqjh"}qk(h']qlhaUmoduleqmcdocutils.nodes reprunicode qnXcircuits.web.httpqoqp}qqbh&]h$]h%]h*]qrhaUfullnameqsXHTTPqtUclassquUUfirstqvuh,Nh-hh]qw(csphinx.addnodes desc_annotation qx)qy}qz(hXclass hhghhih Udesc_annotationq{h"}q|(h$]h%]h&]h']h*]uh,Nh-hh]q}h6Xclass q~q}q(hUhhyubaubcsphinx.addnodes desc_addname q)q}q(hXcircuits.web.http.hhghhih U desc_addnameqh"}q(h$]h%]h&]h']h*]uh,Nh-hh]qh6Xcircuits.web.http.qq}q(hUhhubaubcsphinx.addnodes desc_name q)q}q(hhthhghhih U desc_nameqh"}q(h$]h%]h&]h']h*]uh,Nh-hh]qh6XHTTPqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhghhih Udesc_parameterlistqh"}q(h$]h%]h&]h']h*]uh,Nh-hh]q(csphinx.addnodes desc_parameter q)q}q(hXserverh"}q(h$]h%]h&]h']h*]uhhh]qh6Xserverqq}q(hUhhubah Udesc_parameterqubh)q}q(hXencoding='utf-8'h"}q(h$]h%]h&]h']h*]uhhh]qh6Xencoding='utf-8'qq}q(hUhhubah hubh)q}q(hX channel='web'h"}q(h$]h%]h&]h']h*]uhhh]qh6X channel='web'qq}q(hUhhubah hubeubeubcsphinx.addnodes desc_content q)q}q(hUhh\hhih U desc_contentqh"}q(h$]h%]h&]h']h*]uh,Nh-hh]q(hC)q}q(hX6Bases: :class:`circuits.core.components.BaseComponent`qhhhU qh hHh"}q(h$]h%]h&]h']h*]uh,Kh-hh]q(h6XBases: qq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX/:class:`circuits.core.components.BaseComponent`qhhhNh U pending_xrefqh"}q(UreftypeXclassUrefwarnqʼnU reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqh']h&]U refexplicith$]h%]h*]UrefdocqXapi/circuits.web.httpqUpy:classqhtU py:moduleqXcircuits.web.httpquh,Nh]qcdocutils.nodes literal q)q}q(hhh"}q(h$]h%]q(UxrefqhXpy-classqeh&]h']h*]uhhh]qh6X&circuits.core.components.BaseComponentqօq}q(hUhhubah UliteralqubaubeubhC)q}q(hXHTTP Protocol ComponentqhhhXU/home/prologic/work/circuits/circuits/web/http.py:docstring of circuits.web.http.HTTPqh hHh"}q(h$]h%]h&]h']h*]uh,Kh-hh]qh6XHTTP Protocol Componentqq}q(hhhhubaubhC)q}q(hXImplements the HTTP server protocol and parses and processes incoming HTTP messages, creating and sending an appropriate response.qhhhhh hHh"}q(h$]h%]h&]h']h*]uh,Kh-hh]qh6XImplements the HTTP server protocol and parses and processes incoming HTTP messages, creating and sending an appropriate response.q腁q}q(hhhhubaubhC)q}q(hXThe component handles :class:`~circuits.net.sockets.Read` events on its channel and collects the associated data until a complete HTTP request has been received. It parses the request's content and puts it in a :class:`~circuits.web.wrappers.Request` object and creates a corresponding :class:`~circuits.web.wrappers.Response` object. Then it emits a :class:`~circuits.web.events.Request` event with these objects as arguments.hhhhh hHh"}q(h$]h%]h&]h']h*]uh,Kh-hh]q(h6XThe component handles qq}q(hXThe component handles hhubh)q}q(hX#:class:`~circuits.net.sockets.Read`qhhhNh hh"}q(UreftypeXclasshʼnhXcircuits.net.sockets.ReadU refdomainXpyqh']h&]U refexplicith$]h%]h*]hhhhthhuh,Nh]qh)q}q(hhh"}q(h$]h%]q(hhXpy-classqeh&]h']h*]uhhh]qh6XReadqq}r(hUhhubah hubaubh6X events on its channel and collects the associated data until a complete HTTP request has been received. It parses the request's content and puts it in a rr}r(hX events on its channel and collects the associated data until a complete HTTP request has been received. It parses the request's content and puts it in a hhubh)r}r(hX':class:`~circuits.web.wrappers.Request`rhhhNh hh"}r(UreftypeXclasshʼnhXcircuits.web.wrappers.RequestU refdomainXpyrh']h&]U refexplicith$]h%]h*]hhhhthhuh,Nh]r h)r }r (hjh"}r (h$]h%]r (hjXpy-classreh&]h']h*]uhjh]rh6XRequestrr}r(hUhj ubah hubaubh6X$ object and creates a corresponding rr}r(hX$ object and creates a corresponding hhubh)r}r(hX(:class:`~circuits.web.wrappers.Response`rhhhNh hh"}r(UreftypeXclasshʼnhXcircuits.web.wrappers.ResponseU refdomainXpyrh']h&]U refexplicith$]h%]h*]hhhhthhuh,Nh]rh)r}r(hjh"}r(h$]h%]r(hjXpy-classr eh&]h']h*]uhjh]r!h6XResponser"r#}r$(hUhjubah hubaubh6X object. Then it emits a r%r&}r'(hX object. Then it emits a hhubh)r(}r)(hX%:class:`~circuits.web.events.Request`r*hhhNh hh"}r+(UreftypeXclasshʼnhXcircuits.web.events.RequestU refdomainXpyr,h']h&]U refexplicith$]h%]h*]hhhhthhuh,Nh]r-h)r.}r/(hj*h"}r0(h$]h%]r1(hj,Xpy-classr2eh&]h']h*]uhj(h]r3h6XRequestr4r5}r6(hUhj.ubah hubaubh6X' event with these objects as arguments.r7r8}r9(hX' event with these objects as arguments.hhubeubhC)r:}r;(hXOThe component defines several handlers that send a response back to the client.r<hhhhh hHh"}r=(h$]h%]h&]h']h*]uh,Kh-hh]r>h6XOThe component defines several handlers that send a response back to the client.r?r@}rA(hj<hj:ubaubh:)rB}rC(hUhhhNh h>h"}rD(h']h&]h$]h%]h*]Uentries]rE(hAX*channel (circuits.web.http.HTTP attribute)h UtrFauh,Nh-hh]ubh[)rG}rH(hUhhhNh h^h"}rI(h`haXpyh']h&]h$]h%]h*]hbX attributerJhdjJuh,Nh-hh]rK(hf)rL}rM(hX HTTP.channelhjGhU rNh hjh"}rO(h']rPh ahmhnXcircuits.web.httprQrR}rSbh&]h$]h%]h*]rTh ahsX HTTP.channelhuhthvuh,Nh-hh]rU(h)rV}rW(hXchannelhjLhjNh hh"}rX(h$]h%]h&]h']h*]uh,Nh-hh]rYh6XchannelrZr[}r\(hUhjVubaubhx)r]}r^(hX = 'web'hjLhjNh h{h"}r_(h$]h%]h&]h']h*]uh,Nh-hh]r`h6X = 'web'rarb}rc(hUhj]ubaubeubh)rd}re(hUhjGhjNh hh"}rf(h$]h%]h&]h']h*]uh,Nh-hh]ubeubh:)rg}rh(hUhhhNh h>h"}ri(h']h&]h$]h%]h*]Uentries]rj(hAX*version (circuits.web.http.HTTP attribute)h Utrkauh,Nh-hh]ubh[)rl}rm(hUhhhNh h^h"}rn(h`haXpyh']h&]h$]h%]h*]hbX attributerohdjouh,Nh-hh]rp(hf)rq}rr(hX HTTP.versionhjlhhih hjh"}rs(h']rth ahmhnXcircuits.web.httprurv}rwbh&]h$]h%]h*]rxh ahsX HTTP.versionhuhthvuh,Nh-hh]ryh)rz}r{(hXversionhjqhhih hh"}r|(h$]h%]h&]h']h*]uh,Nh-hh]r}h6Xversionr~r}r(hUhjzubaubaubh)r}r(hUhjlhhih hh"}r(h$]h%]h&]h']h*]uh,Nh-hh]ubeubh:)r}r(hUhhhNh h>h"}r(h']h&]h$]h%]h*]Uentries]r(hAX+protocol (circuits.web.http.HTTP attribute)hUtrauh,Nh-hh]ubh[)r}r(hUhhhNh h^h"}r(h`haXpyh']h&]h$]h%]h*]hbX attributerhdjuh,Nh-hh]r(hf)r}r(hX HTTP.protocolhjhhih hjh"}r(h']rhahmhnXcircuits.web.httprr}rbh&]h$]h%]h*]rhahsX HTTP.protocolhuhthvuh,Nh-hh]rh)r}r(hXprotocolhjhhih hh"}r(h$]h%]h&]h']h*]uh,Nh-hh]rh6Xprotocolrr}r(hUhjubaubaubh)r}r(hUhjhhih hh"}r(h$]h%]h&]h']h*]uh,Nh-hh]ubeubh:)r}r(hUhhhNh h>h"}r(h']h&]h$]h%]h*]Uentries]r(hAX)scheme (circuits.web.http.HTTP attribute)h Utrauh,Nh-hh]ubh[)r}r(hUhhhNh h^h"}r(h`haXpyh']h&]h$]h%]h*]hbX attributerhdjuh,Nh-hh]r(hf)r}r(hX HTTP.schemehjhhih hjh"}r(h']rh ahmhnXcircuits.web.httprr}rbh&]h$]h%]h*]rh ahsX HTTP.schemehuhthvuh,Nh-hh]rh)r}r(hXschemehjhhih hh"}r(h$]h%]h&]h']h*]uh,Nh-hh]rh6Xschemerr}r(hUhjubaubaubh)r}r(hUhjhhih hh"}r(h$]h%]h&]h']h*]uh,Nh-hh]ubeubh:)r}r(hUhhhNh h>h"}r(h']h&]h$]h%]h*]Uentries]r(hAX'base (circuits.web.http.HTTP attribute)hUtrauh,Nh-hh]ubh[)r}r(hUhhhNh h^h"}r(h`haXpyh']h&]h$]h%]h*]hbX attributerhdjuh,Nh-hh]r(hf)r}r(hX HTTP.baserhjhhih hjh"}r(h']rhahmhnXcircuits.web.httprr}rbh&]h$]h%]h*]rhahsX HTTP.basehuhthvuh,Nh-hh]rh)r}r(hXbasehjhhih hh"}r(h$]h%]h&]h']h*]uh,Nh-hh]rh6Xbaserr}r(hUhjubaubaubh)r}r(hUhjhhih hh"}r(h$]h%]h&]h']h*]uh,Nh-hh]ubeubeubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh-hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh3NUerror_encoding_error_handlerrUbackslashreplacer Udebugr NUembed_stylesheetr Uoutput_encoding_error_handlerr Ustrictr U sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_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)hUgettext_compactr*U generatorr+NUdump_internalsr,NU smart_quotesr-U pep_base_urlr.Uhttp://www.python.org/dev/peps/r/Usyntax_highlightr0Ulongr1Uinput_encoding_error_handlerr2j Uauto_id_prefixr3Uidr4Udoctitle_xformr5Ustrip_elements_with_classesr6NU _config_filesr7]Ufile_insertion_enabledr8U raw_enabledr9KU dump_settingsr:NubUsymbol_footnote_startr;KUidsr<}r=(h)cdocutils.nodes target r>)r?}r@(hUhhhh=h UtargetrAh"}rB(h$]h']rCh)ah&]Uismodh%]h*]uh,Kh-hh]ubhhghjh jqh jLhjhhh juUsubstitution_namesrD}rEh h-h"}rF(h$]h']h&]Usourcehh%]h*]uU footnotesrG]rHUrefidsrI}rJub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.tools.doctree0000644000014400001440000010744712425011106026055 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.web.tools.gzipqXcircuits.web.tools.expiresqXcircuits.web.tools.basic_authqX!circuits.web.tools.serve_downloadq Xcircuits.web.tools.serve_fileq Xcircuits.web.tools moduleq NX!circuits.web.tools.validate_etagsq Xcircuits.web.tools.digest_authq X!circuits.web.tools.validate_sinceqXcircuits.web.tools.check_authquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh h h h h Ucircuits-web-tools-moduleqh h h h hhhhuUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentq hUsourceq!XC/home/prologic/work/circuits/docs/source/api/circuits.web.tools.rstq"Utagnameq#Usectionq$U attributesq%}q&(Udupnamesq']Uclassesq(]Ubackrefsq)]Uidsq*]q+(Xmodule-circuits.web.toolsq,heUnamesq-]q.h auUlineq/KUdocumentq0hh]q1(cdocutils.nodes title q2)q3}q4(hXcircuits.web.tools moduleq5h hh!h"h#Utitleq6h%}q7(h']h(]h)]h*]h-]uh/Kh0hh]q8cdocutils.nodes Text q9Xcircuits.web.tools moduleq:q;}q<(hh5h h3ubaubcsphinx.addnodes index q=)q>}q?(hUh hh!U q@h#UindexqAh%}qB(h*]h)]h']h(]h-]Uentries]qC(UsingleqDXcircuits.web.tools (module)Xmodule-circuits.web.toolsUtqEauh/Kh0hh]ubcdocutils.nodes paragraph qF)qG}qH(hXToolsqIh hh!XR/home/prologic/work/circuits/circuits/web/tools.py:docstring of circuits.web.toolsqJh#U paragraphqKh%}qL(h']h(]h)]h*]h-]uh/Kh0hh]qMh9XToolsqNqO}qP(hhIh hGubaubhF)qQ}qR(hXThis module implements tools used throughout circuits.web. These tools can also be used within Controlelrs and request handlers.qSh hh!hJh#hKh%}qT(h']h(]h)]h*]h-]uh/Kh0hh]qUh9XThis module implements tools used throughout circuits.web. These tools can also be used within Controlelrs and request handlers.qVqW}qX(hhSh hQubaubh=)qY}qZ(hUh hh!XZ/home/prologic/work/circuits/circuits/web/tools.py:docstring of circuits.web.tools.expiresq[h#hAh%}q\(h*]h)]h']h(]h-]Uentries]q](hDX(expires() (in module circuits.web.tools)hUtq^auh/Nh0hh]ubcsphinx.addnodes desc q_)q`}qa(hUh hh!h[h#Udescqbh%}qc(UnoindexqdUdomainqeXpyh*]h)]h']h(]h-]UobjtypeqfXfunctionqgUdesctypeqhhguh/Nh0hh]qi(csphinx.addnodes desc_signature qj)qk}ql(hX/expires(request, response, secs=0, force=False)h h`h!U qmh#Udesc_signatureqnh%}qo(h*]qphaUmoduleqqcdocutils.nodes reprunicode qrXcircuits.web.toolsqsqt}qubh)]h']h(]h-]qvhaUfullnameqwXexpiresqxUclassqyUUfirstqzuh/Nh0hh]q{(csphinx.addnodes desc_addname q|)q}}q~(hXcircuits.web.tools.h hkh!hmh#U desc_addnameqh%}q(h']h(]h)]h*]h-]uh/Nh0hh]qh9Xcircuits.web.tools.qq}q(hUh h}ubaubcsphinx.addnodes desc_name q)q}q(hhxh hkh!hmh#U desc_nameqh%}q(h']h(]h)]h*]h-]uh/Nh0hh]qh9Xexpiresqq}q(hUh hubaubcsphinx.addnodes desc_parameterlist q)q}q(hUh hkh!hmh#Udesc_parameterlistqh%}q(h']h(]h)]h*]h-]uh/Nh0hh]q(csphinx.addnodes desc_parameter q)q}q(hXrequesth%}q(h']h(]h)]h*]h-]uh hh]qh9Xrequestqq}q(hUh hubah#Udesc_parameterqubh)q}q(hXresponseh%}q(h']h(]h)]h*]h-]uh hh]qh9Xresponseqq}q(hUh hubah#hubh)q}q(hXsecs=0h%}q(h']h(]h)]h*]h-]uh hh]qh9Xsecs=0qq}q(hUh hubah#hubh)q}q(hX force=Falseh%}q(h']h(]h)]h*]h-]uh hh]qh9X force=Falseqq}q(hUh hubah#hubeubeubcsphinx.addnodes desc_content q)q}q(hUh h`h!hmh#U desc_contentqh%}q(h']h(]h)]h*]h-]uh/Nh0hh]q(hF)q}q(hXATool for influencing cache mechanisms using the 'Expires' header.qh hh!h[h#hKh%}q(h']h(]h)]h*]h-]uh/Kh0hh]qh9XATool for influencing cache mechanisms using the 'Expires' header.qq}q(hhh hubaubhF)q}q(hX'secs' must be either an int or a datetime.timedelta, and indicates the number of seconds between response.time and when the response should expire. The 'Expires' header will be set to (response.time + secs).qh hh!h[h#hKh%}q(h']h(]h)]h*]h-]uh/Kh0hh]qh9X'secs' must be either an int or a datetime.timedelta, and indicates the number of seconds between response.time and when the response should expire. The 'Expires' header will be set to (response.time + secs).qŅq}q(hhh hubaubhF)q}q(hXIf 'secs' is zero, the 'Expires' header is set one year in the past, and the following "cache prevention" headers are also set: - 'Pragma': 'no-cache' - 'Cache-Control': 'no-cache, must-revalidate'qh hh!h[h#hKh%}q(h']h(]h)]h*]h-]uh/Kh0hh]qh9XIf 'secs' is zero, the 'Expires' header is set one year in the past, and the following "cache prevention" headers are also set: - 'Pragma': 'no-cache' - 'Cache-Control': 'no-cache, must-revalidate'qͅq}q(hhh hubaubhF)q}q(hXIf 'force' is False (the default), the following headers are checked: 'Etag', 'Last-Modified', 'Age', 'Expires'. If any are already present, none of the above response headers are set.qh hh!h[h#hKh%}q(h']h(]h)]h*]h-]uh/K h0hh]qh9XIf 'force' is False (the default), the following headers are checked: 'Etag', 'Last-Modified', 'Age', 'Expires'. If any are already present, none of the above response headers are set.qՅq}q(hhh hubaubeubeubh=)q}q(hUh hh!X]/home/prologic/work/circuits/circuits/web/tools.py:docstring of circuits.web.tools.serve_fileqh#hAh%}q(h*]h)]h']h(]h-]Uentries]q(hDX+serve_file() (in module circuits.web.tools)h Utqauh/Nh0hh]ubh_)q}q(hUh hh!hh#hbh%}q(hdheXpyh*]h)]h']h(]h-]hfXfunctionqhhhuh/Nh0hh]q(hj)q}q(hXKserve_file(request, response, path, type=None, disposition=None, name=None)h hh!hmh#hnh%}q(h*]qh ahqhrXcircuits.web.toolsq煁q}qbh)]h']h(]h-]qh ahwX serve_fileqhyUhzuh/Nh0hh]q(h|)q}q(hXcircuits.web.tools.h hh!hmh#hh%}q(h']h(]h)]h*]h-]uh/Nh0hh]qh9Xcircuits.web.tools.qq}q(hUh hubaubh)q}q(hhh hh!hmh#hh%}q(h']h(]h)]h*]h-]uh/Nh0hh]qh9X serve_fileqq}q(hUh hubaubh)q}q(hUh hh!hmh#hh%}q(h']h(]h)]h*]h-]uh/Nh0hh]q(h)q}r(hXrequesth%}r(h']h(]h)]h*]h-]uh hh]rh9Xrequestrr}r(hUh hubah#hubh)r}r(hXresponseh%}r(h']h(]h)]h*]h-]uh hh]r h9Xresponser r }r (hUh jubah#hubh)r }r(hXpathh%}r(h']h(]h)]h*]h-]uh hh]rh9Xpathrr}r(hUh j ubah#hubh)r}r(hX type=Noneh%}r(h']h(]h)]h*]h-]uh hh]rh9X type=Nonerr}r(hUh jubah#hubh)r}r(hXdisposition=Noneh%}r(h']h(]h)]h*]h-]uh hh]rh9Xdisposition=Nonerr }r!(hUh jubah#hubh)r"}r#(hX name=Noneh%}r$(h']h(]h)]h*]h-]uh hh]r%h9X name=Noner&r'}r((hUh j"ubah#hubeubeubh)r)}r*(hUh hh!hmh#hh%}r+(h']h(]h)]h*]h-]uh/Nh0hh]r,(hF)r-}r.(hX?Set status, headers, and body in order to serve the given file.r/h j)h!hh#hKh%}r0(h']h(]h)]h*]h-]uh/Kh0hh]r1h9X?Set status, headers, and body in order to serve the given file.r2r3}r4(hj/h j-ubaubhF)r5}r6(hXThe Content-Type header will be set to the type arg, if provided. If not provided, the Content-Type will be guessed by the file extension of the 'path' argument.r7h j)h!hh#hKh%}r8(h']h(]h)]h*]h-]uh/Kh0hh]r9h9XThe Content-Type header will be set to the type arg, if provided. If not provided, the Content-Type will be guessed by the file extension of the 'path' argument.r:r;}r<(hj7h j5ubaubhF)r=}r>(hXIf disposition is not None, the Content-Disposition header will be set to "; filename=". If name is None, it will be set to the basename of path. If disposition is None, no Content-Disposition header will be written.r?h j)h!hh#hKh%}r@(h']h(]h)]h*]h-]uh/Kh0hh]rAh9XIf disposition is not None, the Content-Disposition header will be set to "; filename=". If name is None, it will be set to the basename of path. If disposition is None, no Content-Disposition header will be written.rBrC}rD(hj?h j=ubaubeubeubh=)rE}rF(hUh hh!Xa/home/prologic/work/circuits/circuits/web/tools.py:docstring of circuits.web.tools.serve_downloadrGh#hAh%}rH(h*]h)]h']h(]h-]Uentries]rI(hDX/serve_download() (in module circuits.web.tools)h UtrJauh/Nh0hh]ubh_)rK}rL(hUh hh!jGh#hbh%}rM(hdheXpyh*]h)]h']h(]h-]hfXfunctionrNhhjNuh/Nh0hh]rO(hj)rP}rQ(hX2serve_download(request, response, path, name=None)h jKh!hmh#hnh%}rR(h*]rSh ahqhrXcircuits.web.toolsrTrU}rVbh)]h']h(]h-]rWh ahwXserve_downloadrXhyUhzuh/Nh0hh]rY(h|)rZ}r[(hXcircuits.web.tools.h jPh!hmh#hh%}r\(h']h(]h)]h*]h-]uh/Nh0hh]r]h9Xcircuits.web.tools.r^r_}r`(hUh jZubaubh)ra}rb(hjXh jPh!hmh#hh%}rc(h']h(]h)]h*]h-]uh/Nh0hh]rdh9Xserve_downloadrerf}rg(hUh jaubaubh)rh}ri(hUh jPh!hmh#hh%}rj(h']h(]h)]h*]h-]uh/Nh0hh]rk(h)rl}rm(hXrequesth%}rn(h']h(]h)]h*]h-]uh jhh]roh9Xrequestrprq}rr(hUh jlubah#hubh)rs}rt(hXresponseh%}ru(h']h(]h)]h*]h-]uh jhh]rvh9Xresponserwrx}ry(hUh jsubah#hubh)rz}r{(hXpathh%}r|(h']h(]h)]h*]h-]uh jhh]r}h9Xpathr~r}r(hUh jzubah#hubh)r}r(hX name=Noneh%}r(h']h(]h)]h*]h-]uh jhh]rh9X name=Nonerr}r(hUh jubah#hubeubeubh)r}r(hUh jKh!hmh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]rhF)r}r(hX5Serve 'path' as an application/x-download attachment.rh jh!jGh#hKh%}r(h']h(]h)]h*]h-]uh/Kh0hh]rh9X5Serve 'path' as an application/x-download attachment.rr}r(hjh jubaubaubeubh=)r}r(hUh hh!Xa/home/prologic/work/circuits/circuits/web/tools.py:docstring of circuits.web.tools.validate_etagsrh#hAh%}r(h*]h)]h']h(]h-]Uentries]r(hDX/validate_etags() (in module circuits.web.tools)h Utrauh/Nh0hh]ubh_)r}r(hUh hh!jh#hbh%}r(hdheXpyh*]h)]h']h(]h-]hfXfunctionrhhjuh/Nh0hh]r(hj)r}r(hX1validate_etags(request, response, autotags=False)h jh!hmh#hnh%}r(h*]rh ahqhrXcircuits.web.toolsrr}rbh)]h']h(]h-]rh ahwXvalidate_etagsrhyUhzuh/Nh0hh]r(h|)r}r(hXcircuits.web.tools.h jh!hmh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]rh9Xcircuits.web.tools.rr}r(hUh jubaubh)r}r(hjh jh!hmh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]rh9Xvalidate_etagsrr}r(hUh jubaubh)r}r(hUh jh!hmh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]r(h)r}r(hXrequesth%}r(h']h(]h)]h*]h-]uh jh]rh9Xrequestrr}r(hUh jubah#hubh)r}r(hXresponseh%}r(h']h(]h)]h*]h-]uh jh]rh9Xresponserr}r(hUh jubah#hubh)r}r(hXautotags=Falseh%}r(h']h(]h)]h*]h-]uh jh]rh9Xautotags=Falserr}r(hUh jubah#hubeubeubh)r}r(hUh jh!hmh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]r(hF)r}r(hXBValidate the current ETag against If-Match, If-None-Match headers.rh jh!jh#hKh%}r(h']h(]h)]h*]h-]uh/Kh0hh]rh9XBValidate the current ETag against If-Match, If-None-Match headers.rr}r(hjh jubaubhF)r}r(hXIf autotags is True, an ETag response-header value will be provided from an MD5 hash of the response body (unless some other code has already provided an ETag header). If False (the default), the ETag will not be automatic.rh jh!jh#hKh%}r(h']h(]h)]h*]h-]uh/Kh0hh]rh9XIf autotags is True, an ETag response-header value will be provided from an MD5 hash of the response body (unless some other code has already provided an ETag header). If False (the default), the ETag will not be automatic.rr}r(hjh jubaubhF)r}r(hXWARNING: the autotags feature is not designed for URL's which allow methods other than GET. For example, if a POST to the same URL returns no content, the automatic ETag will be incorrect, breaking a fundamental use for entity tags in a possibly destructive fashion. Likewise, if you raise 304 Not Modified, the response body will be empty, the ETag hash will be incorrect, and your application will break. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.24h jh!jh#hKh%}r(h']h(]h)]h*]h-]uh/Kh0hh]r(h9XWARNING: the autotags feature is not designed for URL's which allow methods other than GET. For example, if a POST to the same URL returns no content, the automatic ETag will be incorrect, breaking a fundamental use for entity tags in a possibly destructive fashion. Likewise, if you raise 304 Not Modified, the response body will be empty, the ETag hash will be incorrect, and your application will break. See rr}r(hXWARNING: the autotags feature is not designed for URL's which allow methods other than GET. For example, if a POST to the same URL returns no content, the automatic ETag will be incorrect, breaking a fundamental use for entity tags in a possibly destructive fashion. Likewise, if you raise 304 Not Modified, the response body will be empty, the ETag hash will be incorrect, and your application will break. See h jubcdocutils.nodes reference r)r}r(hX?http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.24rh%}r(Urefurijh*]h)]h']h(]h-]uh jh]rh9X?http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.24rr}r(hUh jubah#U referencerubeubeubeubh=)r}r(hUh hh!Xa/home/prologic/work/circuits/circuits/web/tools.py:docstring of circuits.web.tools.validate_sincerh#hAh%}r(h*]h)]h']h(]h-]Uentries]r(hDX/validate_since() (in module circuits.web.tools)hUtrauh/Nh0hh]ubh_)r}r(hUh hh!jh#hbh%}r(hdheXpyh*]h)]h']h(]h-]hfXfunctionrhhjuh/Nh0hh]r(hj)r}r(hX!validate_since(request, response)h jh!hmh#hnh%}r(h*]rhahqhrXcircuits.web.toolsrr}rbh)]h']h(]h-]rhahwXvalidate_sincerhyUhzuh/Nh0hh]r (h|)r }r (hXcircuits.web.tools.h jh!hmh#hh%}r (h']h(]h)]h*]h-]uh/Nh0hh]r h9Xcircuits.web.tools.rr}r(hUh j ubaubh)r}r(hjh jh!hmh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]rh9Xvalidate_sincerr}r(hUh jubaubh)r}r(hUh jh!hmh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]r(h)r}r(hXrequesth%}r(h']h(]h)]h*]h-]uh jh]rh9Xrequestr r!}r"(hUh jubah#hubh)r#}r$(hXresponseh%}r%(h']h(]h)]h*]h-]uh jh]r&h9Xresponser'r(}r)(hUh j#ubah#hubeubeubh)r*}r+(hUh jh!hmh#hh%}r,(h']h(]h)]h*]h-]uh/Nh0hh]r-(hF)r.}r/(hXEValidate the current Last-Modified against If-Modified-Since headers.r0h j*h!jh#hKh%}r1(h']h(]h)]h*]h-]uh/Kh0hh]r2h9XEValidate the current Last-Modified against If-Modified-Since headers.r3r4}r5(hj0h j.ubaubhF)r6}r7(hX[If no code has set the Last-Modified response header, then no validation will be performed.r8h j*h!jh#hKh%}r9(h']h(]h)]h*]h-]uh/Kh0hh]r:h9X[If no code has set the Last-Modified response header, then no validation will be performed.r;r<}r=(hj8h j6ubaubeubeubh=)r>}r?(hUh hh!Nh#hAh%}r@(h*]h)]h']h(]h-]Uentries]rA(hDX+check_auth() (in module circuits.web.tools)hUtrBauh/Nh0hh]ubh_)rC}rD(hUh hh!Nh#hbh%}rE(hdheXpyrFh*]h)]h']h(]h-]hfXfunctionrGhhjGuh/Nh0hh]rH(hj)rI}rJ(hX9check_auth(request, response, realm, users, encrypt=None)h jCh!hmh#hnh%}rK(h*]rLhahqhrXcircuits.web.toolsrMrN}rObh)]h']h(]h-]rPhahwX check_authrQhyUhzuh/Nh0hh]rR(h|)rS}rT(hXcircuits.web.tools.h jIh!hmh#hh%}rU(h']h(]h)]h*]h-]uh/Nh0hh]rVh9Xcircuits.web.tools.rWrX}rY(hUh jSubaubh)rZ}r[(hjQh jIh!hmh#hh%}r\(h']h(]h)]h*]h-]uh/Nh0hh]r]h9X check_authr^r_}r`(hUh jZubaubh)ra}rb(hUh jIh!hmh#hh%}rc(h']h(]h)]h*]h-]uh/Nh0hh]rd(h)re}rf(hXrequesth%}rg(h']h(]h)]h*]h-]uh jah]rhh9Xrequestrirj}rk(hUh jeubah#hubh)rl}rm(hXresponseh%}rn(h']h(]h)]h*]h-]uh jah]roh9Xresponserprq}rr(hUh jlubah#hubh)rs}rt(hXrealmh%}ru(h']h(]h)]h*]h-]uh jah]rvh9Xrealmrwrx}ry(hUh jsubah#hubh)rz}r{(hXusersh%}r|(h']h(]h)]h*]h-]uh jah]r}h9Xusersr~r}r(hUh jzubah#hubh)r}r(hX encrypt=Noneh%}r(h']h(]h)]h*]h-]uh jah]rh9X encrypt=Nonerr}r(hUh jubah#hubeubeubh)r}r(hUh jCh!hmh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]r(hF)r}r(hXCheck Authenticationrh jh!X]/home/prologic/work/circuits/circuits/web/tools.py:docstring of circuits.web.tools.check_authrh#hKh%}r(h']h(]h)]h*]h-]uh/Kh0hh]rh9XCheck Authenticationrr}r(hjh jubaubhF)r}r(hXIIf an Authorization header contains credentials, return True, else False.rh jh!jh#hKh%}r(h']h(]h)]h*]h-]uh/Kh0hh]rh9XIIf an Authorization header contains credentials, return True, else False.rr}r(hjh jubaubcdocutils.nodes field_list r)r}r(hUh jh!Nh#U field_listrh%}r(h']h(]h)]h*]h-]uh/Nh0hh]rcdocutils.nodes field r)r}r(hUh%}r(h']h(]h)]h*]h-]uh jh]r(cdocutils.nodes field_name r)r}r(hUh%}r(h']h(]h)]h*]h-]uh jh]rh9X Parametersrr}r(hUh jubah#U field_namerubcdocutils.nodes field_body r)r}r(hUh%}r(h']h(]h)]h*]h-]uh jh]rcdocutils.nodes bullet_list r)r}r(hUh%}r(h']h(]h)]h*]h-]uh jh]r(cdocutils.nodes list_item r)r}r(hUh%}r(h']h(]h)]h*]h-]uh jh]rhF)r}r(hUh%}r(h']h(]h)]h*]h-]uh jh]r(cdocutils.nodes strong r)r}r(hXrealmh%}r(h']h(]h)]h*]h-]uh jh]rh9Xrealmrr}r(hUh jubah#Ustrongrubh9X (rr}r(hUh jubcsphinx.addnodes pending_xref r)r}r(hUh%}r(UreftypeUobjrU reftargetXstrrU refdomainjFh*]h)]U refexplicith']h(]h-]uh jh]rcdocutils.nodes emphasis r)r}r(hjh%}r(h']h(]h)]h*]h-]uh jh]rh9Xstrrr}r(hUh jubah#Uemphasisrubah#U pending_xrefrubh9X)r}r(hUh jubh9X -- rr}r(hUh jubh9XThe authentication realm.rr}r(hXThe authentication realm.h jubeh#hKubah#U list_itemrubj)r}r(hUh%}r(h']h(]h)]h*]h-]uh jh]rhF)r}r(hUh%}r(h']h(]h)]h*]h-]uh jh]r(j)r}r(hXusersh%}r(h']h(]h)]h*]h-]uh jh]rh9Xusersrr}r(hUh jubah#jubh9X (rr}r(hUh jubj)r}r(hUh%}r(UreftypejU reftargetXdict or callablerU refdomainjFh*]h)]U refexplicith']h(]h-]uh jh]rj)r}r(hjh%}r(h']h(]h)]h*]h-]uh jh]rh9Xdict or callablerr}r(hUh jubah#jubah#jubh9X)r}r (hUh jubh9X -- r r }r (hUh jubh9XHA dict of the form: {username: password} or a callable returning a dict.r r}r(hXHA dict of the form: {username: password} or a callable returning a dict.h jubeh#hKubah#jubj)r}r(hUh%}r(h']h(]h)]h*]h-]uh jh]rhF)r}r(hUh%}r(h']h(]h)]h*]h-]uh jh]r(j)r}r(hXencrypth%}r(h']h(]h)]h*]h-]uh jh]rh9Xencryptrr}r(hUh jubah#jubh9X (rr }r!(hUh jubj)r"}r#(hUh%}r$(UreftypejU reftargetXcallabler%U refdomainjFh*]h)]U refexplicith']h(]h-]uh jh]r&j)r'}r((hj%h%}r)(h']h(]h)]h*]h-]uh j"h]r*h9Xcallabler+r,}r-(hUh j'ubah#jubah#jubh9X)r.}r/(hUh jubh9X -- r0r1}r2(hUh jubh9XlCallable used to encrypt the password returned from the user-agent. if None it defaults to a md5 encryption.r3r4}r5(hXlCallable used to encrypt the password returned from the user-agent. if None it defaults to a md5 encryption.h jubeh#hKubah#jubeh#U bullet_listr6ubah#U field_bodyr7ubeh#Ufieldr8ubaubeubeubh=)r9}r:(hUh hh!Nh#hAh%}r;(h*]h)]h']h(]h-]Uentries]r<(hDX+basic_auth() (in module circuits.web.tools)hUtr=auh/Nh0hh]ubh_)r>}r?(hUh hh!Nh#hbh%}r@(hdheXpyrAh*]h)]h']h(]h-]hfXfunctionrBhhjBuh/Nh0hh]rC(hj)rD}rE(hX9basic_auth(request, response, realm, users, encrypt=None)h j>h!hmh#hnh%}rF(h*]rGhahqhrXcircuits.web.toolsrHrI}rJbh)]h']h(]h-]rKhahwX basic_authrLhyUhzuh/Nh0hh]rM(h|)rN}rO(hXcircuits.web.tools.h jDh!hmh#hh%}rP(h']h(]h)]h*]h-]uh/Nh0hh]rQh9Xcircuits.web.tools.rRrS}rT(hUh jNubaubh)rU}rV(hjLh jDh!hmh#hh%}rW(h']h(]h)]h*]h-]uh/Nh0hh]rXh9X basic_authrYrZ}r[(hUh jUubaubh)r\}r](hUh jDh!hmh#hh%}r^(h']h(]h)]h*]h-]uh/Nh0hh]r_(h)r`}ra(hXrequesth%}rb(h']h(]h)]h*]h-]uh j\h]rch9Xrequestrdre}rf(hUh j`ubah#hubh)rg}rh(hXresponseh%}ri(h']h(]h)]h*]h-]uh j\h]rjh9Xresponserkrl}rm(hUh jgubah#hubh)rn}ro(hXrealmh%}rp(h']h(]h)]h*]h-]uh j\h]rqh9Xrealmrrrs}rt(hUh jnubah#hubh)ru}rv(hXusersh%}rw(h']h(]h)]h*]h-]uh j\h]rxh9Xusersryrz}r{(hUh juubah#hubh)r|}r}(hX encrypt=Noneh%}r~(h']h(]h)]h*]h-]uh j\h]rh9X encrypt=Nonerr}r(hUh j|ubah#hubeubeubh)r}r(hUh j>h!hmh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]r(hF)r}r(hXPerform Basic Authenticationrh jh!X]/home/prologic/work/circuits/circuits/web/tools.py:docstring of circuits.web.tools.basic_authrh#hKh%}r(h']h(]h)]h*]h-]uh/Kh0hh]rh9XPerform Basic Authenticationrr}r(hjh jubaubhF)r}r(hXQIf auth fails, returns an Unauthorized error with a basic authentication header.rh jh!jh#hKh%}r(h']h(]h)]h*]h-]uh/Kh0hh]rh9XQIf auth fails, returns an Unauthorized error with a basic authentication header.rr}r(hjh jubaubj)r}r(hUh jh!Nh#jh%}r(h']h(]h)]h*]h-]uh/Nh0hh]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]rh9X Parametersrr}r(hUh 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]r(j)r}r(hUh%}r(h']h(]h)]h*]h-]uh jh]rhF)r}r(hUh%}r(h']h(]h)]h*]h-]uh jh]r(j)r}r(hXrealmh%}r(h']h(]h)]h*]h-]uh jh]rh9Xrealmrr}r(hUh jubah#jubh9X (rr}r(hUh jubj)r}r(hUh%}r(UreftypejU reftargetXstrrU refdomainjAh*]h)]U refexplicith']h(]h-]uh jh]rj)r}r(hjh%}r(h']h(]h)]h*]h-]uh jh]rh9Xstrrr}r(hUh jubah#jubah#jubh9X)r}r(hUh jubh9X -- rr}r(hUh jubh9XThe authentication realm.rr}r(hXThe authentication realm.h jubeh#hKubah#jubj)r}r(hUh%}r(h']h(]h)]h*]h-]uh jh]rhF)r}r(hUh%}r(h']h(]h)]h*]h-]uh jh]r(j)r}r(hXusersh%}r(h']h(]h)]h*]h-]uh jh]rh9Xusersrr}r(hUh jubah#jubh9X (rr}r(hUh jubj)r}r(hUh%}r(UreftypejU reftargetXdict or callablerU refdomainjAh*]h)]U refexplicith']h(]h-]uh jh]rj)r}r(hjh%}r(h']h(]h)]h*]h-]uh jh]rh9Xdict or callablerr}r(hUh jubah#jubah#jubh9X)r}r(hUh jubh9X -- rr}r(hUh jubh9XHA dict of the form: {username: password} or a callable returning a dict.rr}r(hXHA dict of the form: {username: password} or a callable returning a dict.h jubeh#hKubah#jubj)r}r(hUh%}r(h']h(]h)]h*]h-]uh jh]rhF)r}r(hUh%}r(h']h(]h)]h*]h-]uh jh]r(j)r}r(hXencrypth%}r(h']h(]h)]h*]h-]uh jh]rh9Xencryptrr}r (hUh jubah#jubh9X (r r }r (hUh jubj)r }r(hUh%}r(UreftypejU reftargetXcallablerU refdomainjAh*]h)]U refexplicith']h(]h-]uh jh]rj)r}r(hjh%}r(h']h(]h)]h*]h-]uh j h]rh9Xcallablerr}r(hUh jubah#jubah#jubh9X)r}r(hUh jubh9X -- rr}r(hUh jubh9XlCallable used to encrypt the password returned from the user-agent. if None it defaults to a md5 encryption.rr}r (hXlCallable used to encrypt the password returned from the user-agent. if None it defaults to a md5 encryption.h jubeh#hKubah#jubeh#j6ubah#j7ubeh#j8ubaubeubeubh=)r!}r"(hUh hh!Nh#hAh%}r#(h*]h)]h']h(]h-]Uentries]r$(hDX,digest_auth() (in module circuits.web.tools)h Utr%auh/Nh0hh]ubh_)r&}r'(hUh hh!Nh#hbh%}r((hdheXpyr)h*]h)]h']h(]h-]hfXfunctionr*hhj*uh/Nh0hh]r+(hj)r,}r-(hX,digest_auth(request, response, realm, users)h j&h!hmh#hnh%}r.(h*]r/h ahqhrXcircuits.web.toolsr0r1}r2bh)]h']h(]h-]r3h ahwX digest_authr4hyUhzuh/Nh0hh]r5(h|)r6}r7(hXcircuits.web.tools.h j,h!hmh#hh%}r8(h']h(]h)]h*]h-]uh/Nh0hh]r9h9Xcircuits.web.tools.r:r;}r<(hUh j6ubaubh)r=}r>(hj4h j,h!hmh#hh%}r?(h']h(]h)]h*]h-]uh/Nh0hh]r@h9X digest_authrArB}rC(hUh j=ubaubh)rD}rE(hUh j,h!hmh#hh%}rF(h']h(]h)]h*]h-]uh/Nh0hh]rG(h)rH}rI(hXrequesth%}rJ(h']h(]h)]h*]h-]uh jDh]rKh9XrequestrLrM}rN(hUh jHubah#hubh)rO}rP(hXresponseh%}rQ(h']h(]h)]h*]h-]uh jDh]rRh9XresponserSrT}rU(hUh jOubah#hubh)rV}rW(hXrealmh%}rX(h']h(]h)]h*]h-]uh jDh]rYh9XrealmrZr[}r\(hUh jVubah#hubh)r]}r^(hXusersh%}r_(h']h(]h)]h*]h-]uh jDh]r`h9Xusersrarb}rc(hUh j]ubah#hubeubeubh)rd}re(hUh j&h!hmh#hh%}rf(h']h(]h)]h*]h-]uh/Nh0hh]rg(hF)rh}ri(hXPerform Digest Authenticationrjh jdh!X^/home/prologic/work/circuits/circuits/web/tools.py:docstring of circuits.web.tools.digest_authrkh#hKh%}rl(h']h(]h)]h*]h-]uh/Kh0hh]rmh9XPerform Digest Authenticationrnro}rp(hjjh jhubaubhF)rq}rr(hX=If auth fails, raise 401 with a digest authentication header.rsh jdh!jkh#hKh%}rt(h']h(]h)]h*]h-]uh/Kh0hh]ruh9X=If auth fails, raise 401 with a digest authentication header.rvrw}rx(hjsh jqubaubj)ry}rz(hUh jdh!Nh#jh%}r{(h']h(]h)]h*]h-]uh/Nh0hh]r|j)r}}r~(hUh%}r(h']h(]h)]h*]h-]uh jyh]r(j)r}r(hUh%}r(h']h(]h)]h*]h-]uh j}h]rh9X Parametersrr}r(hUh jubah#jubj)r}r(hUh%}r(h']h(]h)]h*]h-]uh j}h]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]rhF)r}r(hUh%}r(h']h(]h)]h*]h-]uh jh]r(j)r}r(hXrealmh%}r(h']h(]h)]h*]h-]uh jh]rh9Xrealmrr}r(hUh jubah#jubh9X (rr}r(hUh jubj)r}r(hUh%}r(UreftypejU reftargetXstrrU refdomainj)h*]h)]U refexplicith']h(]h-]uh jh]rj)r}r(hjh%}r(h']h(]h)]h*]h-]uh jh]rh9Xstrrr}r(hUh jubah#jubah#jubh9X)r}r(hUh jubh9X -- rr}r(hUh jubh9XThe authentication realm.rr}r(hXThe authentication realm.h jubeh#hKubah#jubj)r}r(hUh%}r(h']h(]h)]h*]h-]uh jh]rhF)r}r(hUh%}r(h']h(]h)]h*]h-]uh jh]r(j)r}r(hXusersh%}r(h']h(]h)]h*]h-]uh jh]rh9Xusersrr}r(hUh jubah#jubh9X (rr}r(hUh jubj)r}r(hUh%}r(UreftypejU reftargetXdict or callablerU refdomainj)h*]h)]U refexplicith']h(]h-]uh jh]rj)r}r(hjh%}r(h']h(]h)]h*]h-]uh jh]rh9Xdict or callablerr}r(hUh jubah#jubah#jubh9X)r}r(hUh jubh9X -- rr}r(hUh jubh9XHA dict of the form: {username: password} or a callable returning a dict.rr}r(hXHA dict of the form: {username: password} or a callable returning a dict.h jubeh#hKubah#jubeh#j6ubah#j7ubeh#j8ubaubeubeubh=)r}r(hUh hh!Nh#hAh%}r(h*]h)]h']h(]h-]Uentries]r(hDX%gzip() (in module circuits.web.tools)hUtrauh/Nh0hh]ubh_)r}r(hUh hh!Nh#hbh%}r(hdheXpyh*]h)]h']h(]h-]hfXfunctionrhhjuh/Nh0hh]r(hj)r}r(hX?gzip(response, level=4, mime_types=['text/html', 'text/plain'])h jh!hmh#hnh%}r(h*]rhahqhrXcircuits.web.toolsrr}rbh)]h']h(]h-]rhahwXgziprhyUhzuh/Nh0hh]r(h|)r}r(hXcircuits.web.tools.h jh!hmh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]rh9Xcircuits.web.tools.rr}r(hUh jubaubh)r}r(hjh jh!hmh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]rh9Xgziprr}r(hUh jubaubh)r}r(hUh jh!hmh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]rh)r}r(hX9response, level=4, mime_types=['text/html', 'text/plain']h jh!hmh#hh%}r(h']h(]h)]h*]h-]uh/Nh0hh]rh9X9response, level=4, mime_types=['text/html', 'text/plain']rr}r(hUh jubaubaubeubh)r }r (hUh jh!hmh#hh%}r (h']h(]h)]h*]h-]uh/Nh0hh]r (hF)r }r(hX<Try to gzip the response body if Content-Type in mime_types.rh j h!XW/home/prologic/work/circuits/circuits/web/tools.py:docstring of circuits.web.tools.gziprh#hKh%}r(h']h(]h)]h*]h-]uh/Kh0hh]rh9X<Try to gzip the response body if Content-Type in mime_types.rr}r(hjh j ubaubhF)r}r(hXuresponse.headers['Content-Type'] must be set to one of the values in the mime_types arg before calling this function.rh j h!jh#hKh%}r(h']h(]h)]h*]h-]uh/Kh0hh]rh9Xuresponse.headers['Content-Type'] must be set to one of the values in the mime_types arg before calling this function.rr}r(hjh jubaubcdocutils.nodes definition_list r)r}r (hUh j h!Nh#Udefinition_listr!h%}r"(h']h(]h)]h*]h-]uh/Nh0hh]r#cdocutils.nodes definition_list_item r$)r%}r&(hXNo compression is performed if any of the following hold: * The client sends no Accept-Encoding request header * No 'gzip' or 'x-gzip' is present in the Accept-Encoding header * No 'gzip' or 'x-gzip' with a qvalue > 0 is present * The 'identity' value is given with a qvalue > 0.h jh!jh#Udefinition_list_itemr'h%}r((h']h(]h)]h*]h-]uh/K h]r)(cdocutils.nodes term r*)r+}r,(hX9No compression is performed if any of the following hold:r-h j%h!jh#Utermr.h%}r/(h']h(]h)]h*]h-]uh/K h]r0h9X9No compression is performed if any of the following hold:r1r2}r3(hj-h j+ubaubcdocutils.nodes definition r4)r5}r6(hUh%}r7(h']h(]h)]h*]h-]uh j%h]r8j)r9}r:(hUh%}r;(Ubulletr<X*h*]h)]h']h(]h-]uh j5h]r=(j)r>}r?(hX2The client sends no Accept-Encoding request headerr@h%}rA(h']h(]h)]h*]h-]uh j9h]rBhF)rC}rD(hj@h j>h!jh#hKh%}rE(h']h(]h)]h*]h-]uh/Kh]rFh9X2The client sends no Accept-Encoding request headerrGrH}rI(hj@h jCubaubah#jubj)rJ}rK(hX>No 'gzip' or 'x-gzip' is present in the Accept-Encoding headerrLh%}rM(h']h(]h)]h*]h-]uh j9h]rNhF)rO}rP(hjLh jJh!jh#hKh%}rQ(h']h(]h)]h*]h-]uh/Kh]rRh9X>No 'gzip' or 'x-gzip' is present in the Accept-Encoding headerrSrT}rU(hjLh jOubaubah#jubj)rV}rW(hX2No 'gzip' or 'x-gzip' with a qvalue > 0 is presentrXh%}rY(h']h(]h)]h*]h-]uh j9h]rZhF)r[}r\(hjXh jVh!jh#hKh%}r](h']h(]h)]h*]h-]uh/K h]r^h9X2No 'gzip' or 'x-gzip' with a qvalue > 0 is presentr_r`}ra(hjXh j[ubaubah#jubj)rb}rc(hX0The 'identity' value is given with a qvalue > 0.rdh%}re(h']h(]h)]h*]h-]uh j9h]rfhF)rg}rh(hjdh jbh!jh#hKh%}ri(h']h(]h)]h*]h-]uh/K h]rjh9X0The 'identity' value is given with a qvalue > 0.rkrl}rm(hjdh jgubaubah#jubeh#j6ubah#U definitionrnubeubaubeubeubeubahUU transformerroNU footnote_refsrp}rqUrefnamesrr}rsUsymbol_footnotesrt]ruUautofootnote_refsrv]rwUsymbol_footnote_refsrx]ryU citationsrz]r{h0hU current_liner|NUtransform_messagesr}]r~UreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh6NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh"Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hjhhkhjDhhh jPh hhjh jh j,h,cdocutils.nodes target r)r}r(hUh hh!h@h#Utargetrh%}r(h']h*]rh,ah)]Uismodh(]h-]uh/Kh0hh]ubhjIuUsubstitution_namesr}rh#h0h%}r(h']h*]h)]Usourceh"h(]h-]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.controllers.doctree0000644000014400001440000007675512425011104027270 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X,circuits.web.controllers.ExposeJSONMetaClassqX'circuits.web.controllers.JSONControllerqX1circuits.web.controllers.BaseController.forbiddenqX/circuits.web.controllers.BaseController.channelq X0circuits.web.controllers.BaseController.redirectq X0circuits.web.controllers.BaseController.notfoundq X'circuits.web.controllers.BaseControllerq X#circuits.web.controllers.exposeJSONq X(circuits.web.controllers.ExposeMetaClassqX/circuits.web.controllers.BaseController.expiresqX+circuits.web.controllers.BaseController.uriqX#circuits.web.controllers.ControllerqXcircuits.web.controllers moduleqNX6circuits.web.controllers.BaseController.serve_downloadqX2circuits.web.controllers.BaseController.serve_fileqXcircuits.web.controllers.exposequUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh h h h h h h h h h hhhhhhhhhUcircuits-web-controllers-moduleqhhhhhhuUchildrenq ]q!cdocutils.nodes section q")q#}q$(U rawsourceq%UUparentq&hUsourceq'XI/home/prologic/work/circuits/docs/source/api/circuits.web.controllers.rstq(Utagnameq)Usectionq*U attributesq+}q,(Udupnamesq-]Uclassesq.]Ubackrefsq/]Uidsq0]q1(Xmodule-circuits.web.controllersq2heUnamesq3]q4hauUlineq5KUdocumentq6hh ]q7(cdocutils.nodes title q8)q9}q:(h%Xcircuits.web.controllers moduleq;h&h#h'h(h)Utitleqcdocutils.nodes Text q?Xcircuits.web.controllers moduleq@qA}qB(h%h;h&h9ubaubcsphinx.addnodes index qC)qD}qE(h%Uh&h#h'U qFh)UindexqGh+}qH(h0]h/]h-]h.]h3]Uentries]qI(UsingleqJX!circuits.web.controllers (module)Xmodule-circuits.web.controllersUtqKauh5Kh6hh ]ubcdocutils.nodes paragraph qL)qM}qN(h%X ControllersqOh&h#h'X^/home/prologic/work/circuits/circuits/web/controllers.py:docstring of circuits.web.controllersqPh)U paragraphqQh+}qR(h-]h.]h/]h0]h3]uh5Kh6hh ]qSh?X ControllersqTqU}qV(h%hOh&hMubaubhL)qW}qX(h%XThis module implements ...qYh&h#h'hPh)hQh+}qZ(h-]h.]h/]h0]h3]uh5Kh6hh ]q[h?XThis module implements ...q\q]}q^(h%hYh&hWubaubhC)q_}q`(h%Uh&h#h'Nh)hGh+}qa(h0]h/]h-]h.]h3]Uentries]qb(hJX-expose() (in module circuits.web.controllers)hUtqcauh5Nh6hh ]ubcsphinx.addnodes desc qd)qe}qf(h%Uh&h#h'Nh)Udescqgh+}qh(UnoindexqiUdomainqjXpyh0]h/]h-]h.]h3]UobjtypeqkXfunctionqlUdesctypeqmhluh5Nh6hh ]qn(csphinx.addnodes desc_signature qo)qp}qq(h%Xexpose(*channels, **config)h&heh'U qrh)Udesc_signatureqsh+}qt(h0]quhaUmoduleqvcdocutils.nodes reprunicode qwXcircuits.web.controllersqxqy}qzbh/]h-]h.]h3]q{haUfullnameq|Xexposeq}Uclassq~UUfirstquh5Nh6hh ]q(csphinx.addnodes desc_addname q)q}q(h%Xcircuits.web.controllers.h&hph'hrh)U desc_addnameqh+}q(h-]h.]h/]h0]h3]uh5Nh6hh ]qh?Xcircuits.web.controllers.qq}q(h%Uh&hubaubcsphinx.addnodes desc_name q)q}q(h%h}h&hph'hrh)U desc_nameqh+}q(h-]h.]h/]h0]h3]uh5Nh6hh ]qh?Xexposeqq}q(h%Uh&hubaubcsphinx.addnodes desc_parameterlist q)q}q(h%Uh&hph'hrh)Udesc_parameterlistqh+}q(h-]h.]h/]h0]h3]uh5Nh6hh ]q(csphinx.addnodes desc_parameter q)q}q(h%X *channelsh+}q(h-]h.]h/]h0]h3]uh&hh ]qh?X *channelsqq}q(h%Uh&hubah)Udesc_parameterqubh)q}q(h%X**configh+}q(h-]h.]h/]h0]h3]uh&hh ]qh?X**configqq}q(h%Uh&hubah)hubeubeubcsphinx.addnodes desc_content q)q}q(h%Uh&heh'hrh)U desc_contentqh+}q(h-]h.]h/]h0]h3]uh5Nh6hh ]ubeubhC)q}q(h%Uh&h#h'U qh)hGh+}q(h0]h/]h-]h.]h3]Uentries]q(hJX3ExposeMetaClass (class in circuits.web.controllers)hUtqauh5Nh6hh ]ubhd)q}q(h%Uh&h#h'hh)hgh+}q(hihjXpyh0]h/]h-]h.]h3]hkXclassqhmhuh5Nh6hh ]q(ho)q}q(h%X!ExposeMetaClass(name, bases, dct)h&hh'hrh)hsh+}q(h0]qhahvhwXcircuits.web.controllersqq}qbh/]h-]h.]h3]qhah|XExposeMetaClassqh~Uhuh5Nh6hh ]q(csphinx.addnodes desc_annotation q)q}q(h%Xclass h&hh'hrh)Udesc_annotationqh+}q(h-]h.]h/]h0]h3]uh5Nh6hh ]qh?Xclass qɅq}q(h%Uh&hubaubh)q}q(h%Xcircuits.web.controllers.h&hh'hrh)hh+}q(h-]h.]h/]h0]h3]uh5Nh6hh ]qh?Xcircuits.web.controllers.qЅq}q(h%Uh&hubaubh)q}q(h%hh&hh'hrh)hh+}q(h-]h.]h/]h0]h3]uh5Nh6hh ]qh?XExposeMetaClassqׅq}q(h%Uh&hubaubh)q}q(h%Uh&hh'hrh)hh+}q(h-]h.]h/]h0]h3]uh5Nh6hh ]q(h)q}q(h%Xnameh+}q(h-]h.]h/]h0]h3]uh&hh ]qh?Xnameq⅁q}q(h%Uh&hubah)hubh)q}q(h%Xbasesh+}q(h-]h.]h/]h0]h3]uh&hh ]qh?Xbasesq酁q}q(h%Uh&hubah)hubh)q}q(h%Xdcth+}q(h-]h.]h/]h0]h3]uh&hh ]qh?Xdctqq}q(h%Uh&hubah)hubeubeubh)q}q(h%Uh&hh'hrh)hh+}q(h-]h.]h/]h0]h3]uh5Nh6hh ]qhL)q}q(h%XBases: :class:`type`h&hh'hh)hQh+}q(h-]h.]h/]h0]h3]uh5Kh6hh ]q(h?XBases: qq}q(h%XBases: h&hubcsphinx.addnodes pending_xref q)q}r(h%X :class:`type`rh&hh'Nh)U pending_xrefrh+}r(UreftypeXclassUrefwarnrU reftargetrXtypeU refdomainXpyrh0]h/]U refexplicith-]h.]h3]UrefdocrXapi/circuits.web.controllersrUpy:classr hU py:moduler Xcircuits.web.controllersr uh5Nh ]r cdocutils.nodes literal r )r}r(h%jh+}r(h-]h.]r(UxrefrjXpy-classreh/]h0]h3]uh&hh ]rh?Xtyperr}r(h%Uh&jubah)UliteralrubaubeubaubeubhC)r}r(h%Uh&h#h'Nh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJX2BaseController (class in circuits.web.controllers)h Utrauh5Nh6hh ]ubhd)r}r(h%Uh&h#h'Nh)hgh+}r (hihjXpyh0]h/]h-]h.]h3]hkXclassr!hmj!uh5Nh6hh ]r"(ho)r#}r$(h%XBaseController(*args, **kwargs)h&jh'hrh)hsh+}r%(h0]r&h ahvhwXcircuits.web.controllersr'r(}r)bh/]h-]h.]h3]r*h ah|XBaseControllerr+h~Uhuh5Nh6hh ]r,(h)r-}r.(h%Xclass h&j#h'hrh)hh+}r/(h-]h.]h/]h0]h3]uh5Nh6hh ]r0h?Xclass r1r2}r3(h%Uh&j-ubaubh)r4}r5(h%Xcircuits.web.controllers.h&j#h'hrh)hh+}r6(h-]h.]h/]h0]h3]uh5Nh6hh ]r7h?Xcircuits.web.controllers.r8r9}r:(h%Uh&j4ubaubh)r;}r<(h%j+h&j#h'hrh)hh+}r=(h-]h.]h/]h0]h3]uh5Nh6hh ]r>h?XBaseControllerr?r@}rA(h%Uh&j;ubaubh)rB}rC(h%Uh&j#h'hrh)hh+}rD(h-]h.]h/]h0]h3]uh5Nh6hh ]rE(h)rF}rG(h%X*argsh+}rH(h-]h.]h/]h0]h3]uh&jBh ]rIh?X*argsrJrK}rL(h%Uh&jFubah)hubh)rM}rN(h%X**kwargsh+}rO(h-]h.]h/]h0]h3]uh&jBh ]rPh?X**kwargsrQrR}rS(h%Uh&jMubah)hubeubeubh)rT}rU(h%Uh&jh'hrh)hh+}rV(h-]h.]h/]h0]h3]uh5Nh6hh ]rW(hL)rX}rY(h%X6Bases: :class:`circuits.core.components.BaseComponent`rZh&jTh'hh)hQh+}r[(h-]h.]h/]h0]h3]uh5Kh6hh ]r\(h?XBases: r]r^}r_(h%XBases: h&jXubh)r`}ra(h%X/:class:`circuits.core.components.BaseComponent`rbh&jXh'Nh)jh+}rc(UreftypeXclassjjX&circuits.core.components.BaseComponentU refdomainXpyrdh0]h/]U refexplicith-]h.]h3]jjj j+j j uh5Nh ]rej )rf}rg(h%jbh+}rh(h-]h.]ri(jjdXpy-classrjeh/]h0]h3]uh&j`h ]rkh?X&circuits.core.components.BaseComponentrlrm}rn(h%Uh&jfubah)jubaubeubhL)ro}rp(h%X4initializes x; see x.__class__.__doc__ for signaturerqh&jTh'Xm/home/prologic/work/circuits/circuits/web/controllers.py:docstring of circuits.web.controllers.BaseControllerrrh)hQh+}rs(h-]h.]h/]h0]h3]uh5Kh6hh ]rth?X4initializes x; see x.__class__.__doc__ for signaturerurv}rw(h%jqh&joubaubhC)rx}ry(h%Uh&jTh'Nh)hGh+}rz(h0]h/]h-]h.]h3]Uentries]r{(hJX;channel (circuits.web.controllers.BaseController attribute)h Utr|auh5Nh6hh ]ubhd)r}}r~(h%Uh&jTh'Nh)hgh+}r(hihjXpyh0]h/]h-]h.]h3]hkX attributerhmjuh5Nh6hh ]r(ho)r}r(h%XBaseController.channelh&j}h'U rh)hsh+}r(h0]rh ahvhwXcircuits.web.controllersrr}rbh/]h-]h.]h3]rh ah|XBaseController.channelh~j+huh5Nh6hh ]r(h)r}r(h%Xchannelh&jh'jh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xchannelrr}r(h%Uh&jubaubh)r}r(h%X = '/'h&jh'jh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?X = '/'rr}r(h%Uh&jubaubeubh)r}r(h%Uh&j}h'jh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]ubeubhC)r}r(h%Uh&jTh'Nh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJX7uri (circuits.web.controllers.BaseController attribute)hUtrauh5Nh6hh ]ubhd)r}r(h%Uh&jTh'Nh)hgh+}r(hihjXpyh0]h/]h-]h.]h3]hkX attributerhmjuh5Nh6hh ]r(ho)r}r(h%XBaseController.urih&jh'hrh)hsh+}r(h0]rhahvhwXcircuits.web.controllersrr}rbh/]h-]h.]h3]rhah|XBaseController.urih~j+huh5Nh6hh ]rh)r}r(h%Xurih&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xurirr}r(h%Uh&jubaubaubh)r}r(h%Uh&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]r(hL)r}r(h%XReturn the current Request URIrh&jh'Xq/home/prologic/work/circuits/circuits/web/controllers.py:docstring of circuits.web.controllers.BaseController.urirh)hQh+}r(h-]h.]h/]h0]h3]uh5Kh6hh ]rh?XReturn the current Request URIrr}r(h%jh&jubaubcsphinx.addnodes seealso r)r}r(h%X :py:class:`circuits.web.url.URL`rh&jh'jh)Useealsorh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rhL)r}r(h%jh&jh'jh)hQh+}r(h-]h.]h/]h0]h3]uh5Kh ]rh)r}r(h%jh&jh'Nh)jh+}r(UreftypeXclassjjXcircuits.web.url.URLU refdomainXpyrh0]h/]U refexplicith-]h.]h3]jjj j+j j uh5Nh ]rj )r}r(h%jh+}r(h-]h.]r(jjXpy-classreh/]h0]h3]uh&jh ]rh?Xcircuits.web.url.URLrr}r(h%Uh&jubah)jubaubaubaubeubeubhC)r}r(h%Uh&jTh'Nh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJX<forbidden() (circuits.web.controllers.BaseController method)hUtrauh5Nh6hh ]ubhd)r}r(h%Uh&jTh'Nh)hgh+}r(hihjXpyrh0]h/]h-]h.]h3]hkXmethodrhmjuh5Nh6hh ]r(ho)r}r(h%X*BaseController.forbidden(description=None)h&jh'hrh)hsh+}r(h0]rhahvhwXcircuits.web.controllersrr}rbh/]h-]h.]h3]rhah|XBaseController.forbiddenh~j+huh5Nh6hh ]r(h)r}r(h%X forbiddenh&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?X forbiddenrr}r(h%Uh&jubaubh)r}r(h%Uh&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh)r}r(h%Xdescription=Noneh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?Xdescription=Nonerr}r(h%Uh&jubah)hubaubeubh)r}r(h%Uh&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]r(hL)r}r(h%X!Return a 403 (Forbidden) responser h&jh'Xw/home/prologic/work/circuits/circuits/web/controllers.py:docstring of circuits.web.controllers.BaseController.forbiddenr h)hQh+}r (h-]h.]h/]h0]h3]uh5Kh6hh ]r h?X!Return a 403 (Forbidden) responser r}r(h%j h&jubaubcdocutils.nodes field_list r)r}r(h%Uh&jh'Nh)U field_listrh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rcdocutils.nodes field r)r}r(h%Uh+}r(h-]h.]h/]h0]h3]uh&jh ]r(cdocutils.nodes field_name r)r}r(h%Uh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?X Parametersr r!}r"(h%Uh&jubah)U field_namer#ubcdocutils.nodes field_body r$)r%}r&(h%Uh+}r'(h-]h.]h/]h0]h3]uh&jh ]r(hL)r)}r*(h%Uh+}r+(h-]h.]h/]h0]h3]uh&j%h ]r,(cdocutils.nodes strong r-)r.}r/(h%X descriptionh+}r0(h-]h.]h/]h0]h3]uh&j)h ]r1h?X descriptionr2r3}r4(h%Uh&j.ubah)Ustrongr5ubh?X (r6r7}r8(h%Uh&j)ubh)r9}r:(h%Uh+}r;(UreftypeUobjr<U reftargetXstrr=U refdomainjh0]h/]U refexplicith-]h.]h3]uh&j)h ]r>cdocutils.nodes emphasis r?)r@}rA(h%j=h+}rB(h-]h.]h/]h0]h3]uh&j9h ]rCh?XstrrDrE}rF(h%Uh&j@ubah)UemphasisrGubah)jubh?X)rH}rI(h%Uh&j)ubh?X -- rJrK}rL(h%Uh&j)ubh?XMessage to displayrMrN}rO(h%XMessage to displayh&j)ubeh)hQubah)U field_bodyrPubeh)UfieldrQubaubeubeubhC)rR}rS(h%Uh&jTh'Nh)hGh+}rT(h0]h/]h-]h.]h3]Uentries]rU(hJX;notfound() (circuits.web.controllers.BaseController method)h UtrVauh5Nh6hh ]ubhd)rW}rX(h%Uh&jTh'Nh)hgh+}rY(hihjXpyrZh0]h/]h-]h.]h3]hkXmethodr[hmj[uh5Nh6hh ]r\(ho)r]}r^(h%X)BaseController.notfound(description=None)h&jWh'hrh)hsh+}r_(h0]r`h ahvhwXcircuits.web.controllersrarb}rcbh/]h-]h.]h3]rdh ah|XBaseController.notfoundh~j+huh5Nh6hh ]re(h)rf}rg(h%Xnotfoundh&j]h'hrh)hh+}rh(h-]h.]h/]h0]h3]uh5Nh6hh ]rih?Xnotfoundrjrk}rl(h%Uh&jfubaubh)rm}rn(h%Uh&j]h'hrh)hh+}ro(h-]h.]h/]h0]h3]uh5Nh6hh ]rph)rq}rr(h%Xdescription=Noneh+}rs(h-]h.]h/]h0]h3]uh&jmh ]rth?Xdescription=Nonerurv}rw(h%Uh&jqubah)hubaubeubh)rx}ry(h%Uh&jWh'hrh)hh+}rz(h-]h.]h/]h0]h3]uh5Nh6hh ]r{(hL)r|}r}(h%X!Return a 404 (Not Found) responser~h&jxh'Xv/home/prologic/work/circuits/circuits/web/controllers.py:docstring of circuits.web.controllers.BaseController.notfoundrh)hQh+}r(h-]h.]h/]h0]h3]uh5Kh6hh ]rh?X!Return a 404 (Not Found) responserr}r(h%j~h&j|ubaubj)r}r(h%Uh&jxh'Nh)jh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rj)r}r(h%Uh+}r(h-]h.]h/]h0]h3]uh&jh ]r(j)r}r(h%Uh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?X Parametersrr}r(h%Uh&jubah)j#ubj$)r}r(h%Uh+}r(h-]h.]h/]h0]h3]uh&jh ]rhL)r}r(h%Uh+}r(h-]h.]h/]h0]h3]uh&jh ]r(j-)r}r(h%X descriptionh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?X descriptionrr}r(h%Uh&jubah)j5ubh?X (rr}r(h%Uh&jubh)r}r(h%Uh+}r(Ureftypej<U reftargetXstrrU refdomainjZh0]h/]U refexplicith-]h.]h3]uh&jh ]rj?)r}r(h%jh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?Xstrrr}r(h%Uh&jubah)jGubah)jubh?X)r}r(h%Uh&jubh?X -- rr}r(h%Uh&jubh?XMessage to displayrr}r(h%XMessage to displayrh&jubeh)hQubah)jPubeh)jQubaubeubeubhC)r}r(h%Uh&jTh'Nh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJX;redirect() (circuits.web.controllers.BaseController method)h Utrauh5Nh6hh ]ubhd)r}r(h%Uh&jTh'Nh)hgh+}r(hihjXpyrh0]h/]h-]h.]h3]hkXmethodrhmjuh5Nh6hh ]r(ho)r}r(h%X(BaseController.redirect(urls, code=None)h&jh'hrh)hsh+}r(h0]rh ahvhwXcircuits.web.controllersrr}rbh/]h-]h.]h3]rh ah|XBaseController.redirecth~j+huh5Nh6hh ]r(h)r}r(h%Xredirecth&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xredirectrr}r(h%Uh&jubaubh)r}r(h%Uh&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]r(h)r}r(h%Xurlsh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?Xurlsrr}r(h%Uh&jubah)hubh)r}r(h%X code=Noneh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?X code=Nonerr}r(h%Uh&jubah)hubeubeubh)r}r(h%Uh&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]r(hL)r}r(h%X Return a 30x (Redirect) responserh&jh'Xv/home/prologic/work/circuits/circuits/web/controllers.py:docstring of circuits.web.controllers.BaseController.redirectrh)hQh+}r(h-]h.]h/]h0]h3]uh5Kh6hh ]rh?X Return a 30x (Redirect) responserr}r(h%jh&jubaubhL)r}r(h%XURedirect to another location specified by urls with an optional custom response code.rh&jh'jh)hQh+}r(h-]h.]h/]h0]h3]uh5Kh6hh ]rh?XURedirect to another location specified by urls with an optional custom response code.rr}r(h%jh&jubaubj)r}r(h%Uh&jh'Nh)jh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rj)r}r(h%Uh+}r(h-]h.]h/]h0]h3]uh&jh ]r(j)r}r(h%Uh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?X Parametersr r }r (h%Uh&jubah)j#ubj$)r }r (h%Uh+}r(h-]h.]h/]h0]h3]uh&jh ]rcdocutils.nodes bullet_list r)r}r(h%Uh+}r(h-]h.]h/]h0]h3]uh&j h ]r(cdocutils.nodes list_item r)r}r(h%Uh+}r(h-]h.]h/]h0]h3]uh&jh ]rhL)r}r(h%Uh+}r(h-]h.]h/]h0]h3]uh&jh ]r(j-)r}r(h%Xurlsh+}r (h-]h.]h/]h0]h3]uh&jh ]r!h?Xurlsr"r#}r$(h%Uh&jubah)j5ubh?X (r%r&}r'(h%Uh&jubh)r(}r)(h%Uh+}r*(Ureftypej<U reftargetX str or listr+U refdomainjh0]h/]U refexplicith-]h.]h3]uh&jh ]r,j?)r-}r.(h%j+h+}r/(h-]h.]h/]h0]h3]uh&j(h ]r0h?X str or listr1r2}r3(h%Uh&j-ubah)jGubah)jubh?X)r4}r5(h%Uh&jubh?X -- r6r7}r8(h%Uh&jubh?XA single URL or list of URLsr9r:}r;(h%XA single URL or list of URLsr<h&jubeh)hQubah)U list_itemr=ubj)r>}r?(h%Uh+}r@(h-]h.]h/]h0]h3]uh&jh ]rAhL)rB}rC(h%Uh+}rD(h-]h.]h/]h0]h3]uh&j>h ]rE(j-)rF}rG(h%Xcodeh+}rH(h-]h.]h/]h0]h3]uh&jBh ]rIh?XcoderJrK}rL(h%Uh&jFubah)j5ubh?X (rMrN}rO(h%Uh&jBubh)rP}rQ(h%Uh+}rR(Ureftypej<U reftargetXintrSU refdomainjh0]h/]U refexplicith-]h.]h3]uh&jBh ]rTj?)rU}rV(h%jSh+}rW(h-]h.]h/]h0]h3]uh&jPh ]rXh?XintrYrZ}r[(h%Uh&jUubah)jGubah)jubh?X)r\}r](h%Uh&jBubh?X -- r^r_}r`(h%Uh&jBubh?XHTTP Redirect coderarb}rc(h%XHTTP Redirect coderdh&jBubeh)hQubah)j=ubeh)U bullet_listreubah)jPubeh)jQubaubeubeubhC)rf}rg(h%Uh&jTh'Nh)hGh+}rh(h0]h/]h-]h.]h3]Uentries]ri(hJX=serve_file() (circuits.web.controllers.BaseController method)hUtrjauh5Nh6hh ]ubhd)rk}rl(h%Uh&jTh'Nh)hgh+}rm(hihjXpyh0]h/]h-]h.]h3]hkXmethodrnhmjnuh5Nh6hh ]ro(ho)rp}rq(h%XGBaseController.serve_file(path, type=None, disposition=None, name=None)h&jkh'hrh)hsh+}rr(h0]rshahvhwXcircuits.web.controllersrtru}rvbh/]h-]h.]h3]rwhah|XBaseController.serve_fileh~j+huh5Nh6hh ]rx(h)ry}rz(h%X serve_fileh&jph'hrh)hh+}r{(h-]h.]h/]h0]h3]uh5Nh6hh ]r|h?X serve_filer}r~}r(h%Uh&jyubaubh)r}r(h%Uh&jph'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]r(h)r}r(h%Xpathh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?Xpathrr}r(h%Uh&jubah)hubh)r}r(h%X type=Noneh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?X type=Nonerr}r(h%Uh&jubah)hubh)r}r(h%Xdisposition=Noneh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?Xdisposition=Nonerr}r(h%Uh&jubah)hubh)r}r(h%X name=Noneh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?X name=Nonerr}r(h%Uh&jubah)hubeubeubh)r}r(h%Uh&jkh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]ubeubhC)r}r(h%Uh&jTh'Nh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJXAserve_download() (circuits.web.controllers.BaseController method)hUtrauh5Nh6hh ]ubhd)r}r(h%Uh&jTh'Nh)hgh+}r(hihjXpyh0]h/]h-]h.]h3]hkXmethodrhmjuh5Nh6hh ]r(ho)r}r(h%X.BaseController.serve_download(path, name=None)h&jh'hrh)hsh+}r(h0]rhahvhwXcircuits.web.controllersrr}rbh/]h-]h.]h3]rhah|XBaseController.serve_downloadh~j+huh5Nh6hh ]r(h)r}r(h%Xserve_downloadh&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xserve_downloadrr}r(h%Uh&jubaubh)r}r(h%Uh&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]r(h)r}r(h%Xpathh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?Xpathrr}r(h%Uh&jubah)hubh)r}r(h%X name=Noneh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?X name=Nonerr}r(h%Uh&jubah)hubeubeubh)r}r(h%Uh&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]ubeubhC)r}r(h%Uh&jTh'Nh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJX:expires() (circuits.web.controllers.BaseController method)hUtrauh5Nh6hh ]ubhd)r}r(h%Uh&jTh'Nh)hgh+}r(hihjXpyh0]h/]h-]h.]h3]hkXmethodrhmjuh5Nh6hh ]r(ho)r}r(h%X+BaseController.expires(secs=0, force=False)h&jh'hrh)hsh+}r(h0]rhahvhwXcircuits.web.controllersrr}rbh/]h-]h.]h3]rhah|XBaseController.expiresh~j+huh5Nh6hh ]r(h)r}r(h%Xexpiresh&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xexpiresrr}r(h%Uh&jubaubh)r}r(h%Uh&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]r(h)r}r(h%Xsecs=0h+}r(h-]h.]h/]h0]h3]uh&jh ]rh?Xsecs=0rr}r(h%Uh&jubah)hubh)r}r(h%X force=Falseh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?X force=Falserr}r(h%Uh&jubah)hubeubeubh)r}r(h%Uh&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]ubeubeubeubhC)r}r(h%Uh&h#h'Xi/home/prologic/work/circuits/circuits/web/controllers.py:docstring of circuits.web.controllers.Controllerrh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJX.Controller (class in circuits.web.controllers)hUtrauh5Nh6hh ]ubhd)r}r(h%Uh&h#h'jh)hgh+}r (hihjXpyh0]h/]h-]h.]h3]hkXclassr hmj uh5Nh6hh ]r (ho)r }r (h%XController(*args, **kwargs)h&jh'hrh)hsh+}r(h0]rhahvhwXcircuits.web.controllersrr}rbh/]h-]h.]h3]rhah|X Controllerrh~Uhuh5Nh6hh ]r(h)r}r(h%Xclass h&j h'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xclass rr}r(h%Uh&jubaubh)r}r(h%Xcircuits.web.controllers.h&j h'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]r h?Xcircuits.web.controllers.r!r"}r#(h%Uh&jubaubh)r$}r%(h%jh&j h'hrh)hh+}r&(h-]h.]h/]h0]h3]uh5Nh6hh ]r'h?X Controllerr(r)}r*(h%Uh&j$ubaubh)r+}r,(h%Uh&j h'hrh)hh+}r-(h-]h.]h/]h0]h3]uh5Nh6hh ]r.(h)r/}r0(h%X*argsh+}r1(h-]h.]h/]h0]h3]uh&j+h ]r2h?X*argsr3r4}r5(h%Uh&j/ubah)hubh)r6}r7(h%X**kwargsh+}r8(h-]h.]h/]h0]h3]uh&j+h ]r9h?X**kwargsr:r;}r<(h%Uh&j6ubah)hubeubeubh)r=}r>(h%Uh&jh'hrh)hh+}r?(h-]h.]h/]h0]h3]uh5Nh6hh ]r@(hL)rA}rB(h%X7Bases: :class:`circuits.web.controllers.BaseController`h&j=h'hh)hQh+}rC(h-]h.]h/]h0]h3]uh5Kh6hh ]rD(h?XBases: rErF}rG(h%XBases: h&jAubh)rH}rI(h%X0:class:`circuits.web.controllers.BaseController`rJh&jAh'Nh)jh+}rK(UreftypeXclassjjX'circuits.web.controllers.BaseControllerU refdomainXpyrLh0]h/]U refexplicith-]h.]h3]jjj jj j uh5Nh ]rMj )rN}rO(h%jJh+}rP(h-]h.]rQ(jjLXpy-classrReh/]h0]h3]uh&jHh ]rSh?X'circuits.web.controllers.BaseControllerrTrU}rV(h%Uh&jNubah)jubaubeubhL)rW}rX(h%X4initializes x; see x.__class__.__doc__ for signaturerYh&j=h'jh)hQh+}rZ(h-]h.]h/]h0]h3]uh5Kh6hh ]r[h?X4initializes x; see x.__class__.__doc__ for signaturer\r]}r^(h%jYh&jWubaubeubeubhC)r_}r`(h%Uh&h#h'Nh)hGh+}ra(h0]h/]h-]h.]h3]Uentries]rb(hJX1exposeJSON() (in module circuits.web.controllers)h Utrcauh5Nh6hh ]ubhd)rd}re(h%Uh&h#h'Nh)hgh+}rf(hihjXpyh0]h/]h-]h.]h3]hkXfunctionrghmjguh5Nh6hh ]rh(ho)ri}rj(h%XexposeJSON(*channels, **config)h&jdh'hrh)hsh+}rk(h0]rlh ahvhwXcircuits.web.controllersrmrn}robh/]h-]h.]h3]rph ah|X exposeJSONrqh~Uhuh5Nh6hh ]rr(h)rs}rt(h%Xcircuits.web.controllers.h&jih'hrh)hh+}ru(h-]h.]h/]h0]h3]uh5Nh6hh ]rvh?Xcircuits.web.controllers.rwrx}ry(h%Uh&jsubaubh)rz}r{(h%jqh&jih'hrh)hh+}r|(h-]h.]h/]h0]h3]uh5Nh6hh ]r}h?X exposeJSONr~r}r(h%Uh&jzubaubh)r}r(h%Uh&jih'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]r(h)r}r(h%X *channelsh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?X *channelsrr}r(h%Uh&jubah)hubh)r}r(h%X**configh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?X**configrr}r(h%Uh&jubah)hubeubeubh)r}r(h%Uh&jdh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]ubeubhC)r}r(h%Uh&h#h'hh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJX7ExposeJSONMetaClass (class in circuits.web.controllers)hUtrauh5Nh6hh ]ubhd)r}r(h%Uh&h#h'hh)hgh+}r(hihjXpyh0]h/]h-]h.]h3]hkXclassrhmjuh5Nh6hh ]r(ho)r}r(h%X%ExposeJSONMetaClass(name, bases, dct)h&jh'hrh)hsh+}r(h0]rhahvhwXcircuits.web.controllersrr}rbh/]h-]h.]h3]rhah|XExposeJSONMetaClassrh~Uhuh5Nh6hh ]r(h)r}r(h%Xclass h&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xclass rr}r(h%Uh&jubaubh)r}r(h%Xcircuits.web.controllers.h&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xcircuits.web.controllers.rr}r(h%Uh&jubaubh)r}r(h%jh&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?XExposeJSONMetaClassrr}r(h%Uh&jubaubh)r}r(h%Uh&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]r(h)r}r(h%Xnameh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?Xnamerr}r(h%Uh&jubah)hubh)r}r(h%Xbasesh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?Xbasesrr}r(h%Uh&jubah)hubh)r}r(h%Xdcth+}r(h-]h.]h/]h0]h3]uh&jh ]rh?Xdctrr}r(h%Uh&jubah)hubeubeubh)r}r(h%Uh&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rhL)r}r(h%XBases: :class:`type`h&jh'hh)hQh+}r(h-]h.]h/]h0]h3]uh5Kh6hh ]r(h?XBases: rr}r(h%XBases: h&jubh)r}r(h%X :class:`type`rh&jh'Nh)jh+}r(UreftypeXclassjjXtypeU refdomainXpyrh0]h/]U refexplicith-]h.]h3]jjj jj j uh5Nh ]rj )r}r(h%jh+}r(h-]h.]r(jjXpy-classreh/]h0]h3]uh&jh ]rh?Xtyperr}r(h%Uh&jubah)jubaubeubaubeubhC)r}r(h%Uh&h#h'Xm/home/prologic/work/circuits/circuits/web/controllers.py:docstring of circuits.web.controllers.JSONControllerrh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJX2JSONController (class in circuits.web.controllers)hUtrauh5Nh6hh ]ubhd)r}r(h%Uh&h#h'jh)hgh+}r(hihjXpyh0]h/]h-]h.]h3]hkXclassrhmjuh5Nh6hh ]r(ho)r}r(h%XJSONController(*args, **kwargs)h&jh'hrh)hsh+}r(h0]rhahvhwXcircuits.web.controllersrr}rbh/]h-]h.]h3]rhah|XJSONControllerrh~Uhuh5Nh6hh ]r(h)r}r(h%Xclass h&jh'hrh)hh+}r (h-]h.]h/]h0]h3]uh5Nh6hh ]r h?Xclass r r }r (h%Uh&jubaubh)r}r(h%Xcircuits.web.controllers.h&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xcircuits.web.controllers.rr}r(h%Uh&jubaubh)r}r(h%jh&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?XJSONControllerrr}r(h%Uh&jubaubh)r}r(h%Uh&jh'hrh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]r(h)r }r!(h%X*argsh+}r"(h-]h.]h/]h0]h3]uh&jh ]r#h?X*argsr$r%}r&(h%Uh&j ubah)hubh)r'}r((h%X**kwargsh+}r)(h-]h.]h/]h0]h3]uh&jh ]r*h?X**kwargsr+r,}r-(h%Uh&j'ubah)hubeubeubh)r.}r/(h%Uh&jh'hrh)hh+}r0(h-]h.]h/]h0]h3]uh5Nh6hh ]r1(hL)r2}r3(h%X7Bases: :class:`circuits.web.controllers.BaseController`r4h&j.h'hh)hQh+}r5(h-]h.]h/]h0]h3]uh5Kh6hh ]r6(h?XBases: r7r8}r9(h%XBases: h&j2ubh)r:}r;(h%X0:class:`circuits.web.controllers.BaseController`r<h&j2h'Nh)jh+}r=(UreftypeXclassjjX'circuits.web.controllers.BaseControllerU refdomainXpyr>h0]h/]U refexplicith-]h.]h3]jjj jj j uh5Nh ]r?j )r@}rA(h%j<h+}rB(h-]h.]rC(jj>Xpy-classrDeh/]h0]h3]uh&j:h ]rEh?X'circuits.web.controllers.BaseControllerrFrG}rH(h%Uh&j@ubah)jubaubeubhL)rI}rJ(h%X4initializes x; see x.__class__.__doc__ for signaturerKh&j.h'jh)hQh+}rL(h-]h.]h/]h0]h3]uh5Kh6hh ]rMh?X4initializes x; see x.__class__.__doc__ for signaturerNrO}rP(h%jKh&jIubaubeubeubeubah%UU transformerrQNU footnote_refsrR}rSUrefnamesrT}rUUsymbol_footnotesrV]rWUautofootnote_refsrX]rYUsymbol_footnote_refsrZ]r[U citationsr\]r]h6hU current_liner^NUtransform_messagesr_]r`UreporterraNUid_startrbKU autofootnotesrc]rdU citation_refsre}rfUindirect_targetsrg]rhUsettingsri(cdocutils.frontend Values rjork}rl(Ufootnote_backlinksrmKUrecord_dependenciesrnNU rfc_base_urlroUhttp://tools.ietf.org/html/rpU tracebackrqUpep_referencesrrNUstrip_commentsrsNU toc_backlinksrtUentryruU language_codervUenrwU datestamprxNU report_levelryKU _destinationrzNU halt_levelr{KU strip_classesr|Nhq=hUindexq>h }q?(h%]h$]h"]h#]h)]Uentries]q@(UsingleqAXcircuits.node.node (module)Xmodule-circuits.node.nodeUtqBauh+Kh,hh-]ubcdocutils.nodes paragraph qC)qD}qE(hXNodeqFhhhXR/home/prologic/work/circuits/circuits/node/node.py:docstring of circuits.node.nodeqGhU paragraphqHh }qI(h"]h#]h$]h%]h)]uh+Kh,hh-]qJh6XNodeqKqL}qM(hhFhhDubaubhC)qN}qO(hX...qPhhhhGhhHh }qQ(h"]h#]h$]h%]h)]uh+Kh,hh-]qRh6X...qSqT}qU(hhPhhNubaubh:)qV}qW(hUhhhNhh>h }qX(h%]h$]h"]h#]h)]Uentries]qY(hAX"Node (class in circuits.node.node)hUtqZauh+Nh,hh-]ubheubhNhUdescq[h }q\(Unoindexq]Udomainq^Xpyh%]h$]h"]h#]h)]Uobjtypeq_Xclassq`Udesctypeqah`uh+Nh,hh-]qb(csphinx.addnodes desc_signature qc)qd}qe(hX)Node(bind=None, channel='node', **kwargs)hhhU qfhUdesc_signatureqgh }qh(h%]qihaUmoduleqjcdocutils.nodes reprunicode qkXcircuits.node.nodeqlqm}qnbh$]h"]h#]h)]qohaUfullnameqpXNodeqqUclassqrUUfirstqsuh+Nh,hh-]qt(csphinx.addnodes desc_annotation qu)qv}qw(hXclass hhdhhfhUdesc_annotationqxh }qy(h"]h#]h$]h%]h)]uh+Nh,hh-]qzh6Xclass q{q|}q}(hUhhvubaubcsphinx.addnodes desc_addname q~)q}q(hXcircuits.node.node.hhdhhfhU desc_addnameqh }q(h"]h#]h$]h%]h)]uh+Nh,hh-]qh6Xcircuits.node.node.qq}q(hUhhubaubcsphinx.addnodes desc_name q)q}q(hhqhhdhhfhU desc_nameqh }q(h"]h#]h$]h%]h)]uh+Nh,hh-]qh6XNodeqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhdhhfhUdesc_parameterlistqh }q(h"]h#]h$]h%]h)]uh+Nh,hh-]q(csphinx.addnodes desc_parameter q)q}q(hX bind=Noneh }q(h"]h#]h$]h%]h)]uhhh-]qh6X bind=Noneqq}q(hUhhubahUdesc_parameterqubh)q}q(hXchannel='node'h }q(h"]h#]h$]h%]h)]uhhh-]qh6Xchannel='node'qq}q(hUhhubahhubh)q}q(hX**kwargsh }q(h"]h#]h$]h%]h)]uhhh-]qh6X**kwargsqq}q(hUhhubahhubeubeubheubhhfhU desc_contentqh }q(h"]h#]h$]h%]h)]uh+Nh,hh-]q(hC)q}q(hX6Bases: :class:`circuits.core.components.BaseComponent`qhhhU qhhHh }q(h"]h#]h$]h%]h)]uh+Kh,hh-]q(h6XBases: qq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX/:class:`circuits.core.components.BaseComponent`qhhhNhU pending_xrefqh }q(UreftypeXclassUrefwarnqU reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqh%]h$]U refexplicith"]h#]h)]UrefdocqXapi/circuits.node.nodeqUpy:classqhqU py:moduleqXcircuits.node.nodequh+Nh-]qcdocutils.nodes literal q)q}q(hhh }q(h"]h#]q(UxrefqhXpy-classqeh$]h%]h)]uhhh-]qh6X&circuits.core.components.BaseComponentqЅq}q(hUhhubahUliteralqubaubeubhC)q}q(hXNodeqhhhXW/home/prologic/work/circuits/circuits/node/node.py:docstring of circuits.node.node.NodeqhhHh }q(h"]h#]h$]h%]h)]uh+Kh,hh-]qh6XNodeqڅq}q(hhhhubaubhC)q}q(hX...qhhhhhhHh }q(h"]h#]h$]h%]h)]uh+Kh,hh-]qh6X...q⅁q}q(hhhhubaubh:)q}q(hUhhhNhh>h }q(h%]h$]h"]h#]h)]Uentries]q(hAX+channel (circuits.node.node.Node attribute)hUtqauh+Nh,hh-]ubh)q}q(hUhhhNhh[h }q(h]h^Xpyh%]h$]h"]h#]h)]h_X attributeqhahuh+Nh,hh-]q(hc)q}q(hX Node.channelhhhU qhhgh }q(h%]qhahjhkXcircuits.node.nodeqq}qbh$]h"]h#]h)]qhahpX Node.channelhrhqhsuh+Nh,hh-]q(h)q}q(hXchannelhhhhhhh }q(h"]h#]h$]h%]h)]uh+Nh,hh-]qh6Xchannelqq}q(hUhhubaubhu)r}r(hX = 'node'hhhhhhxh }r(h"]h#]h$]h%]h)]uh+Nh,hh-]rh6X = 'node'rr}r(hUhjubaubeubh)r}r(hUhhhhhhh }r (h"]h#]h$]h%]h)]uh+Nh,hh-]ubeubh:)r }r (hUhhhNhh>h }r (h%]h$]h"]h#]h)]Uentries]r (hAX&add() (circuits.node.node.Node method)h Utrauh+Nh,hh-]ubh)r}r(hUhhhNhh[h }r(h]h^Xpyh%]h$]h"]h#]h)]h_Xmethodrhajuh+Nh,hh-]r(hc)r}r(hX$Node.add(name, host, port, **kwargs)hjhhfhhgh }r(h%]rh ahjhkXcircuits.node.noderr}rbh$]h"]h#]h)]rh ahpXNode.addhrhqhsuh+Nh,hh-]r(h)r}r(hXaddhjhhfhhh }r(h"]h#]h$]h%]h)]uh+Nh,hh-]r h6Xaddr!r"}r#(hUhjubaubh)r$}r%(hUhjhhfhhh }r&(h"]h#]h$]h%]h)]uh+Nh,hh-]r'(h)r(}r)(hXnameh }r*(h"]h#]h$]h%]h)]uhj$h-]r+h6Xnamer,r-}r.(hUhj(ubahhubh)r/}r0(hXhosth }r1(h"]h#]h$]h%]h)]uhj$h-]r2h6Xhostr3r4}r5(hUhj/ubahhubh)r6}r7(hXporth }r8(h"]h#]h$]h%]h)]uhj$h-]r9h6Xportr:r;}r<(hUhj6ubahhubh)r=}r>(hX**kwargsh }r?(h"]h#]h$]h%]h)]uhj$h-]r@h6X**kwargsrArB}rC(hUhj=ubahhubeubeubh)rD}rE(hUhjhhfhhh }rF(h"]h#]h$]h%]h)]uh+Nh,hh-]ubeubeubhhhUsystem_messagerGh }rH(h"]UlevelKh%]h$]Usourcehh#]h)]UlineKUtypeUINFOrIuh+Kh,hh-]rJhC)rK}rL(hUh }rM(h"]h#]h$]h%]h)]uhhh-]rNh6XeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.rOrP}rQ(hUhjKubahhHubaubaUcurrent_sourcerRNU decorationrSNUautofootnote_startrTKUnameidsrU}rV(hhhhhh(h h uh-]rWhahUU transformerrXNU footnote_refsrY}rZUrefnamesr[}r\Usymbol_footnotesr]]r^Uautofootnote_refsr_]r`Usymbol_footnote_refsra]rbU citationsrc]rdh,hU current_linereNUtransform_messagesrf]rgUreporterrhNUid_startriKU autofootnotesrj]rkU citation_refsrl}rmUindirect_targetsrn]roUsettingsrp(cdocutils.frontend Values rqorr}rs(Ufootnote_backlinksrtKUrecord_dependenciesruNU rfc_base_urlrvUhttp://tools.ietf.org/html/rwU tracebackrxUpep_referencesryNUstrip_commentsrzNU toc_backlinksr{Uentryr|U language_coder}Uenr~U datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh3NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhdhhh'cdocutils.nodes target r)r}r(hUhhhh=hUtargetrh }r(h"]h%]rh'ah$]Uismodh#]h)]uh+Kh,hh-]ubh jh(huUsubstitution_namesr}rhh,h }r(h"]h%]h$]Usourcehh#]h)]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.exceptions.doctree0000644000014400001440000031607112425011105027070 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X-circuits.web.exceptions.Forbidden.descriptionqX*circuits.web.exceptions.NotAcceptable.codeqX*circuits.web.exceptions.HTTPException.nameqX/circuits.web.exceptions.RangeUnsatisfiable.codeq X*circuits.web.exceptions.HTTPException.codeq X%circuits.web.exceptions.Redirect.codeq X+circuits.web.exceptions.InternalServerErrorq X.circuits.web.exceptions.BadRequest.descriptionq X1circuits.web.exceptions.HTTPException.descriptionqX*circuits.web.exceptions.PreconditionFailedqX-circuits.web.exceptions.RequestEntityTooLargeqX2circuits.web.exceptions.NotImplemented.descriptionqX0circuits.web.exceptions.Unauthorized.descriptionqX'circuits.web.exceptions.BadRequest.codeqX,circuits.web.exceptions.NotFound.descriptionqX6circuits.web.exceptions.ServiceUnavailable.descriptionqX&circuits.web.exceptions.LengthRequiredqX(circuits.web.exceptions.Gone.descriptionqX!circuits.web.exceptions.Gone.codeqX6circuits.web.exceptions.PreconditionFailed.descriptionqX6circuits.web.exceptions.RequestURITooLarge.descriptionqX/circuits.web.exceptions.PreconditionFailed.codeqX*circuits.web.exceptions.RequestURITooLargeqX*circuits.web.exceptions.ServiceUnavailableqX2circuits.web.exceptions.LengthRequired.descriptionqX$circuits.web.exceptions.UnauthorizedqX2circuits.web.exceptions.RequestEntityTooLarge.codeq X*circuits.web.exceptions.RangeUnsatisfiableq!X$circuits.web.exceptions.UnicodeErrorq"X(circuits.web.exceptions.MethodNotAllowedq#X/circuits.web.exceptions.HTTPException.tracebackq$X6circuits.web.exceptions.RangeUnsatisfiable.descriptionq%X!circuits.web.exceptions.Forbiddenq&X&circuits.web.exceptions.NotImplementedq'X7circuits.web.exceptions.InternalServerError.descriptionq(X2circuits.web.exceptions.RequestTimeout.descriptionq)X"circuits.web.exceptions.BadGatewayq*X&circuits.web.exceptions.RequestTimeoutq+Xcircuits.web.exceptions.Goneq,X%circuits.web.exceptions.HTTPExceptionq-X,circuits.web.exceptions.UnsupportedMediaTypeq.Xcircuits.web.exceptions moduleq/NX&circuits.web.exceptions.Forbidden.codeq0X+circuits.web.exceptions.LengthRequired.codeq1X+circuits.web.exceptions.NotImplemented.codeq2X1circuits.web.exceptions.NotAcceptable.descriptionq3X"circuits.web.exceptions.BadRequestq4X/circuits.web.exceptions.RequestURITooLarge.codeq5X/circuits.web.exceptions.ServiceUnavailable.codeq6X.circuits.web.exceptions.BadGateway.descriptionq7X'circuits.web.exceptions.BadGateway.codeq8X)circuits.web.exceptions.Unauthorized.codeq9X%circuits.web.exceptions.NotAcceptableq:X8circuits.web.exceptions.UnsupportedMediaType.descriptionq;X-circuits.web.exceptions.MethodNotAllowed.codeqX1circuits.web.exceptions.UnsupportedMediaType.codeq?X9circuits.web.exceptions.RequestEntityTooLarge.descriptionq@X0circuits.web.exceptions.InternalServerError.codeqAX+circuits.web.exceptions.RequestTimeout.codeqBX circuits.web.exceptions.NotFoundqCuUsubstitution_defsqD}qEUparse_messagesqF]qGUcurrent_sourceqHNU decorationqINUautofootnote_startqJKUnameidsqK}qL(hhhhhhh h h h h h h h h h hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh h h!h!h"h"h#h#h$h$h%h%h&h&h'h'h(h(h)h)h*h*h+h+h,h,h-h-h.h.h/Ucircuits-web-exceptions-moduleqMh0h0h1h1h2h2h3h3h4h4h5h5h6h6h7h7h8h8h9h9h:h:h;h;hh>h?h?h@h@hAhAhBhBhChCuUchildrenqN]qOcdocutils.nodes section qP)qQ}qR(U rawsourceqSUUparentqThUsourceqUXH/home/prologic/work/circuits/docs/source/api/circuits.web.exceptions.rstqVUtagnameqWUsectionqXU attributesqY}qZ(Udupnamesq[]Uclassesq\]Ubackrefsq]]Uidsq^]q_(Xmodule-circuits.web.exceptionsq`hMeUnamesqa]qbh/auUlineqcKUdocumentqdhhN]qe(cdocutils.nodes title qf)qg}qh(hSXcircuits.web.exceptions moduleqihThQhUhVhWUtitleqjhY}qk(h[]h\]h]]h^]ha]uhcKhdhhN]qlcdocutils.nodes Text qmXcircuits.web.exceptions moduleqnqo}qp(hShihThgubaubcsphinx.addnodes index qq)qr}qs(hSUhThQhUU qthWUindexquhY}qv(h^]h]]h[]h\]ha]Uentries]qw(UsingleqxX circuits.web.exceptions (module)Xmodule-circuits.web.exceptionsUtqyauhcKhdhhN]ubcdocutils.nodes paragraph qz)q{}q|(hSX Exceptionsq}hThQhUX\/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptionsq~hWU paragraphqhY}q(h[]h\]h]]h^]ha]uhcKhdhhN]qhmX Exceptionsqq}q(hSh}hTh{ubaubhz)q}q(hSXJThis module implements a set of standard HTTP Errors as Python Exceptions.qhThQhUh~hWhhY}q(h[]h\]h]]h^]ha]uhcKhdhhN]qhmXJThis module implements a set of standard HTTP Errors as Python Exceptions.qq}q(hShhThubaubhz)q}q(hSXMNote: This code is mostly borrowed from werkzeug and adapted for circuits.webqhThQhUh~hWhhY}q(h[]h\]h]]h^]ha]uhcKhdhhN]qhmXMNote: This code is mostly borrowed from werkzeug and adapted for circuits.webqq}q(hShhThubaubhq)q}q(hSUhThQhUNhWhuhY}q(h^]h]]h[]h\]ha]Uentries]q(hxX HTTPExceptionqh-UtqauhcNhdhhN]ubcsphinx.addnodes desc q)q}q(hSUhThQhUNhWUdescqhY}q(UnoindexqUdomainqXpyh^]h]]h[]h\]ha]UobjtypeqX exceptionqUdesctypeqhuhcNhdhhN]q(csphinx.addnodes desc_signature q)q}q(hSX/HTTPException(description=None, traceback=None)hThhUU qhWUdesc_signatureqhY}q(h^]qh-aUmoduleqcdocutils.nodes reprunicode qXcircuits.web.exceptionsqq}qbh]]h[]h\]ha]qh-aUfullnameqhUclassqUUfirstquhcNhdhhN]q(csphinx.addnodes desc_annotation q)q}q(hSX exception hThhUhhWUdesc_annotationqhY}q(h[]h\]h]]h^]ha]uhcNhdhhN]qhmX exception qq}q(hSUhThubaubcsphinx.addnodes desc_addname q)q}q(hSXcircuits.web.exceptions.hThhUhhWU desc_addnameqhY}q(h[]h\]h]]h^]ha]uhcNhdhhN]qhmXcircuits.web.exceptions.qƅq}q(hSUhThubaubcsphinx.addnodes desc_name q)q}q(hShhThhUhhWU desc_nameqhY}q(h[]h\]h]]h^]ha]uhcNhdhhN]qhmX HTTPExceptionqυq}q(hSUhThubaubcsphinx.addnodes desc_parameterlist q)q}q(hSUhThhUhhWUdesc_parameterlistqhY}q(h[]h\]h]]h^]ha]uhcNhdhhN]q(csphinx.addnodes desc_parameter q)q}q(hSXdescription=NonehY}q(h[]h\]h]]h^]ha]uhThhN]qhmXdescription=Noneq݅q}q(hSUhThubahWUdesc_parameterqubh)q}q(hSXtraceback=NonehY}q(h[]h\]h]]h^]ha]uhThhN]qhmXtraceback=Noneq允q}q(hSUhThubahWhubeubeubcsphinx.addnodes desc_content q)q}q(hSUhThhUhhWU desc_contentqhY}q(h[]h\]h]]h^]ha]uhcNhdhhN]q(hz)q}q(hSX$Bases: :class:`exceptions.Exception`hThhUU qhWhhY}q(h[]h\]h]]h^]ha]uhcKhdhhN]q(hmXBases: qq}q(hSXBases: hThubcsphinx.addnodes pending_xref q)q}q(hSX:class:`exceptions.Exception`qhThhUNhWU pending_xrefqhY}q(UreftypeXclassUrefwarnqU reftargetqXexceptions.ExceptionU refdomainXpyqh^]h]]U refexplicith[]h\]ha]UrefdocqXapi/circuits.web.exceptionsrUpy:classrhU py:modulerXcircuits.web.exceptionsruhcNhN]rcdocutils.nodes literal r)r}r(hShhY}r(h[]h\]r (Uxrefr hXpy-classr eh]]h^]ha]uhThhN]r hmXexceptions.Exceptionr r}r(hSUhTjubahWUliteralrubaubeubhz)r}r(hSXBaseclass for all HTTP exceptions. This exception can be called by WSGI applications to render a default error page or you can catch the subclasses of it independently and render nicer error messages.rhThhUXj/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.HTTPExceptionrhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]rhmXBaseclass for all HTTP exceptions. This exception can be called by WSGI applications to render a default error page or you can catch the subclasses of it independently and render nicer error messages.rr}r(hSjhTjubaubhq)r}r(hSUhThhUNhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxX6code (circuits.web.exceptions.HTTPException attribute)h UtrauhcNhdhhN]ubh)r}r (hSUhThhUNhWhhY}r!(hhXpyh^]h]]h[]h\]ha]hX attributer"hj"uhcNhdhhN]r#(h)r$}r%(hSXHTTPException.codehTjhUU r&hWhhY}r'(h^]r(h ahhXcircuits.web.exceptionsr)r*}r+bh]]h[]h\]ha]r,h ahXHTTPException.codehhhuhcNhdhhN]r-(h)r.}r/(hSXcodehTj$hUj&hWhhY}r0(h[]h\]h]]h^]ha]uhcNhdhhN]r1hmXcoder2r3}r4(hSUhTj.ubaubh)r5}r6(hSX = NonehTj$hUj&hWhhY}r7(h[]h\]h]]h^]ha]uhcNhdhhN]r8hmX = Noner9r:}r;(hSUhTj5ubaubeubh)r<}r=(hSUhTjhUj&hWhhY}r>(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubhq)r?}r@(hSUhThhUNhWhuhY}rA(h^]h]]h[]h\]ha]Uentries]rB(hxX=description (circuits.web.exceptions.HTTPException attribute)hUtrCauhcNhdhhN]ubh)rD}rE(hSUhThhUNhWhhY}rF(hhXpyh^]h]]h[]h\]ha]hX attributerGhjGuhcNhdhhN]rH(h)rI}rJ(hSXHTTPException.descriptionhTjDhUj&hWhhY}rK(h^]rLhahhXcircuits.web.exceptionsrMrN}rObh]]h[]h\]ha]rPhahXHTTPException.descriptionhhhuhcNhdhhN]rQ(h)rR}rS(hSX descriptionhTjIhUj&hWhhY}rT(h[]h\]h]]h^]ha]uhcNhdhhN]rUhmX descriptionrVrW}rX(hSUhTjRubaubh)rY}rZ(hSX = NonehTjIhUj&hWhhY}r[(h[]h\]h]]h^]ha]uhcNhdhhN]r\hmX = Noner]r^}r_(hSUhTjYubaubeubh)r`}ra(hSUhTjDhUj&hWhhY}rb(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubhq)rc}rd(hSUhThhUNhWhuhY}re(h^]h]]h[]h\]ha]Uentries]rf(hxX;traceback (circuits.web.exceptions.HTTPException attribute)h$UtrgauhcNhdhhN]ubh)rh}ri(hSUhThhUNhWhhY}rj(hhXpyh^]h]]h[]h\]ha]hX attributerkhjkuhcNhdhhN]rl(h)rm}rn(hSXHTTPException.tracebackhTjhhUj&hWhhY}ro(h^]rph$ahhXcircuits.web.exceptionsrqrr}rsbh]]h[]h\]ha]rth$ahXHTTPException.tracebackhhhuhcNhdhhN]ru(h)rv}rw(hSX tracebackhTjmhUj&hWhhY}rx(h[]h\]h]]h^]ha]uhcNhdhhN]ryhmX tracebackrzr{}r|(hSUhTjvubaubh)r}}r~(hSX = TruehTjmhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX = Truerr}r(hSUhTj}ubaubeubh)r}r(hSUhTjhhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubhq)r}r(hSUhThhUXo/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.HTTPException.namerhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxX6name (circuits.web.exceptions.HTTPException attribute)hUtrauhcNhdhhN]ubh)r}r(hSUhThhUjhWhhY}r(hhXpyh^]h]]h[]h\]ha]hX attributerhjuhcNhdhhN]r(h)r}r(hSXHTTPException.namehTjhUhhWhhY}r(h^]rhahhXcircuits.web.exceptionsrr}rbh]]h[]h\]ha]rhahXHTTPException.namehhhuhcNhdhhN]rh)r}r(hSXnamehTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXnamerr}r(hSUhTjubaubaubh)r}r(hSUhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhz)r}r(hSXThe status name.rhTjhUjhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]rhmXThe status name.rr}r(hSjhTjubaubaubeubeubeubhq)r}r(hSUhThQhUNhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxX BadRequestrh4UtrauhcNhdhhN]ubh)r}r(hSUhThQhUNhWhhY}r(hhXpyh^]h]]h[]h\]ha]hX exceptionrhjuhcNhdhhN]r(h)r}r(hSX,BadRequest(description=None, traceback=None)hTjhUhhWhhY}r(h^]rh4ahhXcircuits.web.exceptionsrr}rbh]]h[]h\]ha]rh4ahjhUhuhcNhdhhN]r(h)r}r(hSX exception hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX exception rr}r(hSUhTjubaubh)r}r(hSXcircuits.web.exceptions.hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXcircuits.web.exceptions.rr}r(hSUhTjubaubh)r}r(hSjhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX BadRequestrr}r(hSUhTjubaubh)r}r(hSUhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]r(h)r}r(hSXdescription=NonehY}r(h[]h\]h]]h^]ha]uhTjhN]rhmXdescription=Nonerr}r(hSUhTjubahWhubh)r}r(hSXtraceback=NonehY}r(h[]h\]h]]h^]ha]uhTjhN]rhmXtraceback=Nonerr}r(hSUhTjubahWhubeubeubh)r}r(hSUhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]r(hz)r}r(hSX5Bases: :class:`circuits.web.exceptions.HTTPException`hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]r(hmXBases: rr}r(hSXBases: hTjubh)r}r(hSX.:class:`circuits.web.exceptions.HTTPException`rhTjhUNhWhhY}r(UreftypeXclasshhX%circuits.web.exceptions.HTTPExceptionU refdomainXpyrh^]h]]U refexplicith[]h\]ha]hjjjjjuhcNhN]rj)r}r(hSjhY}r(h[]h\]r(j jXpy-classreh]]h^]ha]uhTjhN]rhmX%circuits.web.exceptions.HTTPExceptionrr}r(hSUhTjubahWjubaubeubhz)r}r(hSX*400* `Bad Request`hTjhUXg/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.BadRequestrhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]r(cdocutils.nodes emphasis r)r }r (hSX*400*hY}r (h[]h\]h]]h^]ha]uhTjhN]r hmX400r r}r(hSUhTj ubahWUemphasisrubhmX r}r(hSX hTjubcdocutils.nodes title_reference r)r}r(hSX `Bad Request`hY}r(h[]h\]h]]h^]ha]uhTjhN]rhmX Bad Requestrr}r(hSUhTjubahWUtitle_referencerubeubhz)r}r(hSX`Raise if the browser sends something to the application the application or server cannot handle.rhTjhUjhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]r hmX`Raise if the browser sends something to the application the application or server cannot handle.r!r"}r#(hSjhTjubaubhq)r$}r%(hSUhTjhUNhWhuhY}r&(h^]h]]h[]h\]ha]Uentries]r'(hxX3code (circuits.web.exceptions.BadRequest attribute)hUtr(auhcNhdhhN]ubh)r)}r*(hSUhTjhUNhWhhY}r+(hhXpyh^]h]]h[]h\]ha]hX attributer,hj,uhcNhdhhN]r-(h)r.}r/(hSXBadRequest.codehTj)hUj&hWhhY}r0(h^]r1hahhXcircuits.web.exceptionsr2r3}r4bh]]h[]h\]ha]r5hahXBadRequest.codehjhuhcNhdhhN]r6(h)r7}r8(hSXcodehTj.hUj&hWhhY}r9(h[]h\]h]]h^]ha]uhcNhdhhN]r:hmXcoder;r<}r=(hSUhTj7ubaubh)r>}r?(hSX = 400hTj.hUj&hWhhY}r@(h[]h\]h]]h^]ha]uhcNhdhhN]rAhmX = 400rBrC}rD(hSUhTj>ubaubeubh)rE}rF(hSUhTj)hUj&hWhhY}rG(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubhq)rH}rI(hSUhTjhUNhWhuhY}rJ(h^]h]]h[]h\]ha]Uentries]rK(hxX:description (circuits.web.exceptions.BadRequest attribute)h UtrLauhcNhdhhN]ubh)rM}rN(hSUhTjhUNhWhhY}rO(hhXpyh^]h]]h[]h\]ha]hX attributerPhjPuhcNhdhhN]rQ(h)rR}rS(hSXBadRequest.descriptionhTjMhUj&hWhhY}rT(h^]rUh ahhXcircuits.web.exceptionsrVrW}rXbh]]h[]h\]ha]rYh ahXBadRequest.descriptionhjhuhcNhdhhN]rZ(h)r[}r\(hSX descriptionhTjRhUj&hWhhY}r](h[]h\]h]]h^]ha]uhcNhdhhN]r^hmX descriptionr_r`}ra(hSUhTj[ubaubh)rb}rc(hSXX = '

    The browser (or proxy) sent a request that this server could not understand.

    'hTjRhUj&hWhhY}rd(h[]h\]h]]h^]ha]uhcNhdhhN]rehmXX = '

    The browser (or proxy) sent a request that this server could not understand.

    'rfrg}rh(hSUhTjbubaubeubh)ri}rj(hSUhTjMhUj&hWhhY}rk(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubeubeubhq)rl}rm(hSUhThQhUXi/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.UnicodeErrorrnhWhuhY}ro(h^]h]]h[]h\]ha]Uentries]rp(hxX UnicodeErrorrqh"UtrrauhcNhdhhN]ubh)rs}rt(hSUhThQhUjnhWhhY}ru(hhXpyh^]h]]h[]h\]ha]hX exceptionrvhjvuhcNhdhhN]rw(h)rx}ry(hSX.UnicodeError(description=None, traceback=None)hTjshUhhWhhY}rz(h^]r{h"ahhXcircuits.web.exceptionsr|r}}r~bh]]h[]h\]ha]rh"ahjqhUhuhcNhdhhN]r(h)r}r(hSX exception hTjxhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX exception rr}r(hSUhTjubaubh)r}r(hSXcircuits.web.exceptions.hTjxhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXcircuits.web.exceptions.rr}r(hSUhTjubaubh)r}r(hSjqhTjxhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX UnicodeErrorrr}r(hSUhTjubaubh)r}r(hSUhTjxhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]r(h)r}r(hSXdescription=NonehY}r(h[]h\]h]]h^]ha]uhTjhN]rhmXdescription=Nonerr}r(hSUhTjubahWhubh)r}r(hSXtraceback=NonehY}r(h[]h\]h]]h^]ha]uhTjhN]rhmXtraceback=Nonerr}r(hSUhTjubahWhubeubeubh)r}r(hSUhTjshUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]r(hz)r}r(hSX5Bases: :class:`circuits.web.exceptions.HTTPException`hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]r(hmXBases: rr}r(hSXBases: hTjubh)r}r(hSX.:class:`circuits.web.exceptions.HTTPException`rhTjhUNhWhhY}r(UreftypeXclasshhX%circuits.web.exceptions.HTTPExceptionU refdomainXpyrh^]h]]U refexplicith[]h\]ha]hjjjqjjuhcNhN]rj)r}r(hSjhY}r(h[]h\]r(j jXpy-classreh]]h^]ha]uhTjhN]rhmX%circuits.web.exceptions.HTTPExceptionrr}r(hSUhTjubahWjubaubeubhz)r}r(hSXYraised by the request functions if they were unable to decode the incoming data properly.rhTjhUjnhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]rhmXYraised by the request functions if they were unable to decode the incoming data properly.rr}r(hSjhTjubaubeubeubhq)r}r(hSUhThQhUNhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxX UnauthorizedrhUtrauhcNhdhhN]ubh)r}r(hSUhThQhUNhWhhY}r(hhXpyh^]h]]h[]h\]ha]hX exceptionrhjuhcNhdhhN]r(h)r}r(hSX.Unauthorized(description=None, traceback=None)hTjhUhhWhhY}r(h^]rhahhXcircuits.web.exceptionsrr}rbh]]h[]h\]ha]rhahjhUhuhcNhdhhN]r(h)r}r(hSX exception hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX exception rr}r(hSUhTjubaubh)r}r(hSXcircuits.web.exceptions.hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXcircuits.web.exceptions.rr}r(hSUhTjubaubh)r}r(hSjhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX Unauthorizedrr}r(hSUhTjubaubh)r}r(hSUhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]r(h)r}r(hSXdescription=NonehY}r(h[]h\]h]]h^]ha]uhTjhN]rhmXdescription=Nonerr}r(hSUhTjubahWhubh)r}r(hSXtraceback=NonehY}r(h[]h\]h]]h^]ha]uhTjhN]rhmXtraceback=Nonerr}r(hSUhTjubahWhubeubeubh)r}r(hSUhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]r(hz)r }r (hSX5Bases: :class:`circuits.web.exceptions.HTTPException`hTjhUhhWhhY}r (h[]h\]h]]h^]ha]uhcKhdhhN]r (hmXBases: r r}r(hSXBases: hTj ubh)r}r(hSX.:class:`circuits.web.exceptions.HTTPException`rhTj hUNhWhhY}r(UreftypeXclasshhX%circuits.web.exceptions.HTTPExceptionU refdomainXpyrh^]h]]U refexplicith[]h\]ha]hjjjjjuhcNhN]rj)r}r(hSjhY}r(h[]h\]r(j jXpy-classreh]]h^]ha]uhTjhN]rhmX%circuits.web.exceptions.HTTPExceptionrr}r(hSUhTjubahWjubaubeubhz)r}r (hSX*401* `Unauthorized`hTjhUXi/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.Unauthorizedr!hWhhY}r"(h[]h\]h]]h^]ha]uhcKhdhhN]r#(j)r$}r%(hSX*401*hY}r&(h[]h\]h]]h^]ha]uhTjhN]r'hmX401r(r)}r*(hSUhTj$ubahWjubhmX r+}r,(hSX hTjubj)r-}r.(hSX`Unauthorized`hY}r/(h[]h\]h]]h^]ha]uhTjhN]r0hmX Unauthorizedr1r2}r3(hSUhTj-ubahWjubeubhz)r4}r5(hSXSRaise if the user is not authorized. Also used if you want to use HTTP basic auth.r6hTjhUj!hWhhY}r7(h[]h\]h]]h^]ha]uhcKhdhhN]r8hmXSRaise if the user is not authorized. Also used if you want to use HTTP basic auth.r9r:}r;(hSj6hTj4ubaubhq)r<}r=(hSUhTjhUNhWhuhY}r>(h^]h]]h[]h\]ha]Uentries]r?(hxX5code (circuits.web.exceptions.Unauthorized attribute)h9Utr@auhcNhdhhN]ubh)rA}rB(hSUhTjhUNhWhhY}rC(hhXpyh^]h]]h[]h\]ha]hX attributerDhjDuhcNhdhhN]rE(h)rF}rG(hSXUnauthorized.codehTjAhUj&hWhhY}rH(h^]rIh9ahhXcircuits.web.exceptionsrJrK}rLbh]]h[]h\]ha]rMh9ahXUnauthorized.codehjhuhcNhdhhN]rN(h)rO}rP(hSXcodehTjFhUj&hWhhY}rQ(h[]h\]h]]h^]ha]uhcNhdhhN]rRhmXcoderSrT}rU(hSUhTjOubaubh)rV}rW(hSX = 401hTjFhUj&hWhhY}rX(h[]h\]h]]h^]ha]uhcNhdhhN]rYhmX = 401rZr[}r\(hSUhTjVubaubeubh)r]}r^(hSUhTjAhUj&hWhhY}r_(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubhq)r`}ra(hSUhTjhUNhWhuhY}rb(h^]h]]h[]h\]ha]Uentries]rc(hxX<description (circuits.web.exceptions.Unauthorized attribute)hUtrdauhcNhdhhN]ubh)re}rf(hSUhTjhUNhWhhY}rg(hhXpyh^]h]]h[]h\]ha]hX attributerhhjhuhcNhdhhN]ri(h)rj}rk(hSXUnauthorized.descriptionhTjehUj&hWhhY}rl(h^]rmhahhXcircuits.web.exceptionsrnro}rpbh]]h[]h\]ha]rqhahXUnauthorized.descriptionhjhuhcNhdhhN]rr(h)rs}rt(hSX descriptionhTjjhUj&hWhhY}ru(h[]h\]h]]h^]ha]uhcNhdhhN]rvhmX descriptionrwrx}ry(hSUhTjsubaubh)rz}r{(hSXV = "

    The server could not verify that you are authorized to access the URL requested. You either supplied the wrong credentials (e.g. a bad password), or your browser doesn't understand how to supply the credentials required.

    In case you are allowed to request the document, please check your user-id and password and try again.

    "hTjjhUj&hWhhY}r|(h[]h\]h]]h^]ha]uhcNhdhhN]r}hmXV = "

    The server could not verify that you are authorized to access the URL requested. You either supplied the wrong credentials (e.g. a bad password), or your browser doesn't understand how to supply the credentials required.

    In case you are allowed to request the document, please check your user-id and password and try again.

    "r~r}r(hSUhTjzubaubeubh)r}r(hSUhTjehUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubeubeubhq)r}r(hSUhThQhUNhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxX Forbiddenrh&UtrauhcNhdhhN]ubh)r}r(hSUhThQhUNhWhhY}r(hhXpyh^]h]]h[]h\]ha]hX exceptionrhjuhcNhdhhN]r(h)r}r(hSX+Forbidden(description=None, traceback=None)hTjhUhhWhhY}r(h^]rh&ahhXcircuits.web.exceptionsrr}rbh]]h[]h\]ha]rh&ahjhUhuhcNhdhhN]r(h)r}r(hSX exception hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX exception rr}r(hSUhTjubaubh)r}r(hSXcircuits.web.exceptions.hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXcircuits.web.exceptions.rr}r(hSUhTjubaubh)r}r(hSjhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX Forbiddenrr}r(hSUhTjubaubh)r}r(hSUhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]r(h)r}r(hSXdescription=NonehY}r(h[]h\]h]]h^]ha]uhTjhN]rhmXdescription=Nonerr}r(hSUhTjubahWhubh)r}r(hSXtraceback=NonehY}r(h[]h\]h]]h^]ha]uhTjhN]rhmXtraceback=Nonerr}r(hSUhTjubahWhubeubeubh)r}r(hSUhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]r(hz)r}r(hSX5Bases: :class:`circuits.web.exceptions.HTTPException`hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]r(hmXBases: rr}r(hSXBases: hTjubh)r}r(hSX.:class:`circuits.web.exceptions.HTTPException`rhTjhUNhWhhY}r(UreftypeXclasshhX%circuits.web.exceptions.HTTPExceptionU refdomainXpyrh^]h]]U refexplicith[]h\]ha]hjjjjjuhcNhN]rj)r}r(hSjhY}r(h[]h\]r(j jXpy-classreh]]h^]ha]uhTjhN]rhmX%circuits.web.exceptions.HTTPExceptionrr}r(hSUhTjubahWjubaubeubhz)r}r(hSX*403* `Forbidden`hTjhUXf/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.ForbiddenrhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]r(j)r}r(hSX*403*hY}r(h[]h\]h]]h^]ha]uhTjhN]rhmX403rr}r(hSUhTjubahWjubhmX r}r(hSX hTjubj)r}r(hSX `Forbidden`hY}r(h[]h\]h]]h^]ha]uhTjhN]rhmX Forbiddenrr}r(hSUhTjubahWjubeubhz)r}r(hSX_Raise if the user doesn't have the permission for the requested resource but was authenticated.rhTjhUjhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]rhmX_Raise if the user doesn't have the permission for the requested resource but was authenticated.rr}r(hSjhTjubaubhq)r}r(hSUhTjhUNhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxX2code (circuits.web.exceptions.Forbidden attribute)h0UtrauhcNhdhhN]ubh)r}r(hSUhTjhUNhWhhY}r(hhXpyh^]h]]h[]h\]ha]hX attributerhjuhcNhdhhN]r(h)r}r(hSXForbidden.codehTjhUj&hWhhY}r(h^]rh0ahhXcircuits.web.exceptionsrr}rbh]]h[]h\]ha]rh0ahXForbidden.codehjhuhcNhdhhN]r(h)r }r (hSXcodehTjhUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmXcoder r}r(hSUhTj ubaubh)r}r(hSX = 403hTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX = 403rr}r(hSUhTjubaubeubh)r}r(hSUhTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubhq)r}r(hSUhTjhUNhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxX9description (circuits.web.exceptions.Forbidden attribute)hUtrauhcNhdhhN]ubh)r}r (hSUhTjhUNhWhhY}r!(hhXpyh^]h]]h[]h\]ha]hX attributer"hj"uhcNhdhhN]r#(h)r$}r%(hSXForbidden.descriptionhTjhUj&hWhhY}r&(h^]r'hahhXcircuits.web.exceptionsr(r)}r*bh]]h[]h\]ha]r+hahXForbidden.descriptionhjhuhcNhdhhN]r,(h)r-}r.(hSX descriptionhTj$hUj&hWhhY}r/(h[]h\]h]]h^]ha]uhcNhdhhN]r0hmX descriptionr1r2}r3(hSUhTj-ubaubh)r4}r5(hSX = "

    You don't have the permission to access the requested resource. It is either read-protected or not readable by the server.

    "hTj$hUj&hWhhY}r6(h[]h\]h]]h^]ha]uhcNhdhhN]r7hmX = "

    You don't have the permission to access the requested resource. It is either read-protected or not readable by the server.

    "r8r9}r:(hSUhTj4ubaubeubh)r;}r<(hSUhTjhUj&hWhhY}r=(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubeubeubhq)r>}r?(hSUhThQhUNhWhuhY}r@(h^]h]]h[]h\]ha]Uentries]rA(hxXNotFoundrBhCUtrCauhcNhdhhN]ubh)rD}rE(hSUhThQhUNhWhhY}rF(hhXpyh^]h]]h[]h\]ha]hX exceptionrGhjGuhcNhdhhN]rH(h)rI}rJ(hSX*NotFound(description=None, traceback=None)hTjDhUhhWhhY}rK(h^]rLhCahhXcircuits.web.exceptionsrMrN}rObh]]h[]h\]ha]rPhCahjBhUhuhcNhdhhN]rQ(h)rR}rS(hSX exception hTjIhUhhWhhY}rT(h[]h\]h]]h^]ha]uhcNhdhhN]rUhmX exception rVrW}rX(hSUhTjRubaubh)rY}rZ(hSXcircuits.web.exceptions.hTjIhUhhWhhY}r[(h[]h\]h]]h^]ha]uhcNhdhhN]r\hmXcircuits.web.exceptions.r]r^}r_(hSUhTjYubaubh)r`}ra(hSjBhTjIhUhhWhhY}rb(h[]h\]h]]h^]ha]uhcNhdhhN]rchmXNotFoundrdre}rf(hSUhTj`ubaubh)rg}rh(hSUhTjIhUhhWhhY}ri(h[]h\]h]]h^]ha]uhcNhdhhN]rj(h)rk}rl(hSXdescription=NonehY}rm(h[]h\]h]]h^]ha]uhTjghN]rnhmXdescription=Nonerorp}rq(hSUhTjkubahWhubh)rr}rs(hSXtraceback=NonehY}rt(h[]h\]h]]h^]ha]uhTjghN]ruhmXtraceback=Nonervrw}rx(hSUhTjrubahWhubeubeubh)ry}rz(hSUhTjDhUhhWhhY}r{(h[]h\]h]]h^]ha]uhcNhdhhN]r|(hz)r}}r~(hSX5Bases: :class:`circuits.web.exceptions.HTTPException`hTjyhUhhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]r(hmXBases: rr}r(hSXBases: hTj}ubh)r}r(hSX.:class:`circuits.web.exceptions.HTTPException`rhTj}hUNhWhhY}r(UreftypeXclasshhX%circuits.web.exceptions.HTTPExceptionU refdomainXpyrh^]h]]U refexplicith[]h\]ha]hjjjBjjuhcNhN]rj)r}r(hSjhY}r(h[]h\]r(j jXpy-classreh]]h^]ha]uhTjhN]rhmX%circuits.web.exceptions.HTTPExceptionrr}r(hSUhTjubahWjubaubeubhz)r}r(hSX*404* `Not Found`hTjyhUXe/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.NotFoundrhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]r(j)r}r(hSX*404*hY}r(h[]h\]h]]h^]ha]uhTjhN]rhmX404rr}r(hSUhTjubahWjubhmX r}r(hSX hTjubj)r}r(hSX `Not Found`hY}r(h[]h\]h]]h^]ha]uhTjhN]rhmX Not Foundrr}r(hSUhTjubahWjubeubhz)r}r(hSX5Raise if a resource does not exist and never existed.rhTjyhUjhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]rhmX5Raise if a resource does not exist and never existed.rr}r(hSjhTjubaubhq)r}r(hSUhTjyhUNhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxX1code (circuits.web.exceptions.NotFound attribute)h=UtrauhcNhdhhN]ubh)r}r(hSUhTjyhUNhWhhY}r(hhXpyh^]h]]h[]h\]ha]hX attributerhjuhcNhdhhN]r(h)r}r(hSX NotFound.codehTjhUj&hWhhY}r(h^]rh=ahhXcircuits.web.exceptionsrr}rbh]]h[]h\]ha]rh=ahX NotFound.codehjBhuhcNhdhhN]r(h)r}r(hSXcodehTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXcoderr}r(hSUhTjubaubh)r}r(hSX = 404hTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX = 404rr}r(hSUhTjubaubeubh)r}r(hSUhTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubhq)r}r(hSUhTjyhUNhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxX8description (circuits.web.exceptions.NotFound attribute)hUtrauhcNhdhhN]ubh)r}r(hSUhTjyhUNhWhhY}r(hhXpyh^]h]]h[]h\]ha]hX attributerhjuhcNhdhhN]r(h)r}r(hSXNotFound.descriptionhTjhUj&hWhhY}r(h^]rhahhXcircuits.web.exceptionsrr}rbh]]h[]h\]ha]rhahXNotFound.descriptionhjBhuhcNhdhhN]r(h)r}r(hSX descriptionhTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX descriptionrr}r(hSUhTjubaubh)r}r(hSX = '

    The requested URL was not found on the server.

    If you entered the URL manually please check your spelling and try again.

    'hTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX = '

    The requested URL was not found on the server.

    If you entered the URL manually please check your spelling and try again.

    'rr}r(hSUhTjubaubeubh)r}r(hSUhTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubeubeubhq)r}r(hSUhThQhUNhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxXMethodNotAllowedrh#UtrauhcNhdhhN]ubh)r}r(hSUhThQhUNhWhhY}r(hhXpyh^]h]]h[]h\]ha]hX exceptionrhjuhcNhdhhN]r(h)r}r(hSX*MethodNotAllowed(method, description=None)hTjhUhhWhhY}r(h^]rh#ahhXcircuits.web.exceptionsrr}r bh]]h[]h\]ha]r h#ahjhUhuhcNhdhhN]r (h)r }r (hSX exception hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX exception rr}r(hSUhTj ubaubh)r}r(hSXcircuits.web.exceptions.hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXcircuits.web.exceptions.rr}r(hSUhTjubaubh)r}r(hSjhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXMethodNotAllowedrr}r (hSUhTjubaubh)r!}r"(hSUhTjhUhhWhhY}r#(h[]h\]h]]h^]ha]uhcNhdhhN]r$(h)r%}r&(hSXmethodhY}r'(h[]h\]h]]h^]ha]uhTj!hN]r(hmXmethodr)r*}r+(hSUhTj%ubahWhubh)r,}r-(hSXdescription=NonehY}r.(h[]h\]h]]h^]ha]uhTj!hN]r/hmXdescription=Noner0r1}r2(hSUhTj,ubahWhubeubeubh)r3}r4(hSUhTjhUhhWhhY}r5(h[]h\]h]]h^]ha]uhcNhdhhN]r6(hz)r7}r8(hSX5Bases: :class:`circuits.web.exceptions.HTTPException`hTj3hUhhWhhY}r9(h[]h\]h]]h^]ha]uhcKhdhhN]r:(hmXBases: r;r<}r=(hSXBases: hTj7ubh)r>}r?(hSX.:class:`circuits.web.exceptions.HTTPException`r@hTj7hUNhWhhY}rA(UreftypeXclasshhX%circuits.web.exceptions.HTTPExceptionU refdomainXpyrBh^]h]]U refexplicith[]h\]ha]hjjjjjuhcNhN]rCj)rD}rE(hSj@hY}rF(h[]h\]rG(j jBXpy-classrHeh]]h^]ha]uhTj>hN]rIhmX%circuits.web.exceptions.HTTPExceptionrJrK}rL(hSUhTjDubahWjubaubeubhz)rM}rN(hSX*405* `Method Not Allowed`hTj3hUXm/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.MethodNotAllowedrOhWhhY}rP(h[]h\]h]]h^]ha]uhcKhdhhN]rQ(j)rR}rS(hSX*405*hY}rT(h[]h\]h]]h^]ha]uhTjMhN]rUhmX405rVrW}rX(hSUhTjRubahWjubhmX rY}rZ(hSX hTjMubj)r[}r\(hSX`Method Not Allowed`hY}r](h[]h\]h]]h^]ha]uhTjMhN]r^hmXMethod Not Allowedr_r`}ra(hSUhTj[ubahWjubeubhz)rb}rc(hSXRaise if the server used a method the resource does not handle. For example `POST` if the resource is view only. Especially useful for REST.hTj3hUjOhWhhY}rd(h[]h\]h]]h^]ha]uhcKhdhhN]re(hmXMRaise if the server used a method the resource does not handle. For example rfrg}rh(hSXMRaise if the server used a method the resource does not handle. For example hTjbubj)ri}rj(hSX`POST`hY}rk(h[]h\]h]]h^]ha]uhTjbhN]rlhmXPOSTrmrn}ro(hSUhTjiubahWjubhmX; if the resource is view only. Especially useful for REST.rprq}rr(hSX; if the resource is view only. Especially useful for REST.hTjbubeubhz)rs}rt(hSXThe first argument for this exception should be a list of allowed methods. Strictly speaking the response would be invalid if you don't provide valid methods in the header which you can do with that list.ruhTj3hUjOhWhhY}rv(h[]h\]h]]h^]ha]uhcKhdhhN]rwhmXThe first argument for this exception should be a list of allowed methods. Strictly speaking the response would be invalid if you don't provide valid methods in the header which you can do with that list.rxry}rz(hSjuhTjsubaubhq)r{}r|(hSUhTj3hUNhWhuhY}r}(h^]h]]h[]h\]ha]Uentries]r~(hxX9code (circuits.web.exceptions.MethodNotAllowed attribute)h}r?(hSUhTjhUNhWhuhY}r@(h^]h]]h[]h\]ha]Uentries]rA(hxX=description (circuits.web.exceptions.NotAcceptable attribute)h3UtrBauhcNhdhhN]ubh)rC}rD(hSUhTjhUNhWhhY}rE(hhXpyh^]h]]h[]h\]ha]hX attributerFhjFuhcNhdhhN]rG(h)rH}rI(hSXNotAcceptable.descriptionhTjChUj&hWhhY}rJ(h^]rKh3ahhXcircuits.web.exceptionsrLrM}rNbh]]h[]h\]ha]rOh3ahXNotAcceptable.descriptionhjhuhcNhdhhN]rP(h)rQ}rR(hSX descriptionhTjHhUj&hWhhY}rS(h[]h\]h]]h^]ha]uhcNhdhhN]rThmX descriptionrUrV}rW(hSUhTjQubaubh)rX}rY(hSX = '

    The resource identified by the request is only capable of generating response entities which have content characteristics not acceptable according to the accept headers sent in the request.

    'hTjHhUj&hWhhY}rZ(h[]h\]h]]h^]ha]uhcNhdhhN]r[hmX = '

    The resource identified by the request is only capable of generating response entities which have content characteristics not acceptable according to the accept headers sent in the request.

    'r\r]}r^(hSUhTjXubaubeubh)r_}r`(hSUhTjChUj&hWhhY}ra(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubeubeubhq)rb}rc(hSUhThQhUNhWhuhY}rd(h^]h]]h[]h\]ha]Uentries]re(hxXRequestTimeoutrfh+UtrgauhcNhdhhN]ubh)rh}ri(hSUhThQhUNhWhhY}rj(hhXpyh^]h]]h[]h\]ha]hX exceptionrkhjkuhcNhdhhN]rl(h)rm}rn(hSX0RequestTimeout(description=None, traceback=None)hTjhhUhhWhhY}ro(h^]rph+ahhXcircuits.web.exceptionsrqrr}rsbh]]h[]h\]ha]rth+ahjfhUhuhcNhdhhN]ru(h)rv}rw(hSX exception hTjmhUhhWhhY}rx(h[]h\]h]]h^]ha]uhcNhdhhN]ryhmX exception rzr{}r|(hSUhTjvubaubh)r}}r~(hSXcircuits.web.exceptions.hTjmhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXcircuits.web.exceptions.rr}r(hSUhTj}ubaubh)r}r(hSjfhTjmhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXRequestTimeoutrr}r(hSUhTjubaubh)r}r(hSUhTjmhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]r(h)r}r(hSXdescription=NonehY}r(h[]h\]h]]h^]ha]uhTjhN]rhmXdescription=Nonerr}r(hSUhTjubahWhubh)r}r(hSXtraceback=NonehY}r(h[]h\]h]]h^]ha]uhTjhN]rhmXtraceback=Nonerr}r(hSUhTjubahWhubeubeubh)r}r(hSUhTjhhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]r(hz)r}r(hSX5Bases: :class:`circuits.web.exceptions.HTTPException`hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]r(hmXBases: rr}r(hSXBases: hTjubh)r}r(hSX.:class:`circuits.web.exceptions.HTTPException`rhTjhUNhWhhY}r(UreftypeXclasshhX%circuits.web.exceptions.HTTPExceptionU refdomainXpyrh^]h]]U refexplicith[]h\]ha]hjjjfjjuhcNhN]rj)r}r(hSjhY}r(h[]h\]r(j jXpy-classreh]]h^]ha]uhTjhN]rhmX%circuits.web.exceptions.HTTPExceptionrr}r(hSUhTjubahWjubaubeubhz)r}r(hSX*408* `Request Timeout`hTjhUXk/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.RequestTimeoutrhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]r(j)r}r(hSX*408*hY}r(h[]h\]h]]h^]ha]uhTjhN]rhmX408rr}r(hSUhTjubahWjubhmX r}r(hSX hTjubj)r}r(hSX`Request Timeout`hY}r(h[]h\]h]]h^]ha]uhTjhN]rhmXRequest Timeoutrr}r(hSUhTjubahWjubeubhz)r}r(hSXRaise to signalize a timeout.rhTjhUjhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]rhmXRaise to signalize a timeout.rr}r(hSjhTjubaubhq)r}r(hSUhTjhUNhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxX7code (circuits.web.exceptions.RequestTimeout attribute)hBUtrauhcNhdhhN]ubh)r}r(hSUhTjhUNhWhhY}r(hhXpyh^]h]]h[]h\]ha]hX attributerhjuhcNhdhhN]r(h)r}r(hSXRequestTimeout.codehTjhUj&hWhhY}r(h^]rhBahhXcircuits.web.exceptionsrr}rbh]]h[]h\]ha]rhBahXRequestTimeout.codehjfhuhcNhdhhN]r(h)r}r(hSXcodehTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXcoderr}r(hSUhTjubaubh)r}r(hSX = 408hTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX = 408rr}r(hSUhTjubaubeubh)r}r(hSUhTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubhq)r}r(hSUhTjhUNhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxX>description (circuits.web.exceptions.RequestTimeout attribute)h)UtrauhcNhdhhN]ubh)r}r(hSUhTjhUNhWhhY}r(hhXpyh^]h]]h[]h\]ha]hX attributerhjuhcNhdhhN]r(h)r}r(hSXRequestTimeout.descriptionhTjhUj&hWhhY}r(h^]rh)ahhXcircuits.web.exceptionsrr}rbh]]h[]h\]ha]r h)ahXRequestTimeout.descriptionhjfhuhcNhdhhN]r (h)r }r (hSX descriptionhTjhUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]rhmX descriptionrr}r(hSUhTj ubaubh)r}r(hSX} = "

    The server closed the network connection because the browser didn't finish the request within the specified time.

    "hTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX} = "

    The server closed the network connection because the browser didn't finish the request within the specified time.

    "rr}r(hSUhTjubaubeubh)r}r(hSUhTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubeubeubhq)r}r(hSUhThQhUNhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxXGoner h,Utr!auhcNhdhhN]ubh)r"}r#(hSUhThQhUNhWhhY}r$(hhXpyh^]h]]h[]h\]ha]hX exceptionr%hj%uhcNhdhhN]r&(h)r'}r((hSX&Gone(description=None, traceback=None)hTj"hUhhWhhY}r)(h^]r*h,ahhXcircuits.web.exceptionsr+r,}r-bh]]h[]h\]ha]r.h,ahj hUhuhcNhdhhN]r/(h)r0}r1(hSX exception hTj'hUhhWhhY}r2(h[]h\]h]]h^]ha]uhcNhdhhN]r3hmX exception r4r5}r6(hSUhTj0ubaubh)r7}r8(hSXcircuits.web.exceptions.hTj'hUhhWhhY}r9(h[]h\]h]]h^]ha]uhcNhdhhN]r:hmXcircuits.web.exceptions.r;r<}r=(hSUhTj7ubaubh)r>}r?(hSj hTj'hUhhWhhY}r@(h[]h\]h]]h^]ha]uhcNhdhhN]rAhmXGonerBrC}rD(hSUhTj>ubaubh)rE}rF(hSUhTj'hUhhWhhY}rG(h[]h\]h]]h^]ha]uhcNhdhhN]rH(h)rI}rJ(hSXdescription=NonehY}rK(h[]h\]h]]h^]ha]uhTjEhN]rLhmXdescription=NonerMrN}rO(hSUhTjIubahWhubh)rP}rQ(hSXtraceback=NonehY}rR(h[]h\]h]]h^]ha]uhTjEhN]rShmXtraceback=NonerTrU}rV(hSUhTjPubahWhubeubeubh)rW}rX(hSUhTj"hUhhWhhY}rY(h[]h\]h]]h^]ha]uhcNhdhhN]rZ(hz)r[}r\(hSX5Bases: :class:`circuits.web.exceptions.HTTPException`hTjWhUhhWhhY}r](h[]h\]h]]h^]ha]uhcKhdhhN]r^(hmXBases: r_r`}ra(hSXBases: hTj[ubh)rb}rc(hSX.:class:`circuits.web.exceptions.HTTPException`rdhTj[hUNhWhhY}re(UreftypeXclasshhX%circuits.web.exceptions.HTTPExceptionU refdomainXpyrfh^]h]]U refexplicith[]h\]ha]hjjj jjuhcNhN]rgj)rh}ri(hSjdhY}rj(h[]h\]rk(j jfXpy-classrleh]]h^]ha]uhTjbhN]rmhmX%circuits.web.exceptions.HTTPExceptionrnro}rp(hSUhTjhubahWjubaubeubhz)rq}rr(hSX *410* `Gone`hTjWhUXa/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.GonershWhhY}rt(h[]h\]h]]h^]ha]uhcKhdhhN]ru(j)rv}rw(hSX*410*hY}rx(h[]h\]h]]h^]ha]uhTjqhN]ryhmX410rzr{}r|(hSUhTjvubahWjubhmX r}}r~(hSX hTjqubj)r}r(hSX`Gone`hY}r(h[]h\]h]]h^]ha]uhTjqhN]rhmXGonerr}r(hSUhTjubahWjubeubhz)r}r(hSXJRaise if a resource existed previously and went away without new location.rhTjWhUjshWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]rhmXJRaise if a resource existed previously and went away without new location.rr}r(hSjhTjubaubhq)r}r(hSUhTjWhUNhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxX-code (circuits.web.exceptions.Gone attribute)hUtrauhcNhdhhN]ubh)r}r(hSUhTjWhUNhWhhY}r(hhXpyh^]h]]h[]h\]ha]hX attributerhjuhcNhdhhN]r(h)r}r(hSX Gone.codehTjhUj&hWhhY}r(h^]rhahhXcircuits.web.exceptionsrr}rbh]]h[]h\]ha]rhahX Gone.codehj huhcNhdhhN]r(h)r}r(hSXcodehTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXcoderr}r(hSUhTjubaubh)r}r(hSX = 410hTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX = 410rr}r(hSUhTjubaubeubh)r}r(hSUhTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubhq)r}r(hSUhTjWhUNhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxX4description (circuits.web.exceptions.Gone attribute)hUtrauhcNhdhhN]ubh)r}r(hSUhTjWhUNhWhhY}r(hhXpyh^]h]]h[]h\]ha]hX attributerhjuhcNhdhhN]r(h)r}r(hSXGone.descriptionhTjhUj&hWhhY}r(h^]rhahhXcircuits.web.exceptionsrr}rbh]]h[]h\]ha]rhahXGone.descriptionhj huhcNhdhhN]r(h)r}r(hSX descriptionhTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX descriptionrr}r(hSUhTjubaubh)r}r(hSX = '

    The requested URL is no longer available on this server and there is no forwarding address.

    If you followed a link from a foreign page, please contact the author of this page.'hTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX = '

    The requested URL is no longer available on this server and there is no forwarding address.

    If you followed a link from a foreign page, please contact the author of this page.'rr}r(hSUhTjubaubeubh)r}r(hSUhTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubeubeubhq)r}r(hSUhThQhUNhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxXLengthRequiredrhUtrauhcNhdhhN]ubh)r}r(hSUhThQhUNhWhhY}r(hhXpyh^]h]]h[]h\]ha]hX exceptionrhjuhcNhdhhN]r(h)r}r(hSX0LengthRequired(description=None, traceback=None)hTjhUhhWhhY}r(h^]rhahhXcircuits.web.exceptionsrr}rbh]]h[]h\]ha]rhahjhUhuhcNhdhhN]r(h)r}r(hSX exception hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX exception rr}r(hSUhTjubaubh)r}r(hSXcircuits.web.exceptions.hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXcircuits.web.exceptions.rr}r(hSUhTjubaubh)r}r(hSjhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXLengthRequiredrr}r(hSUhTjubaubh)r}r(hSUhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]r(h)r}r(hSXdescription=NonehY}r(h[]h\]h]]h^]ha]uhTjhN]rhmXdescription=Nonerr}r (hSUhTjubahWhubh)r }r (hSXtraceback=NonehY}r (h[]h\]h]]h^]ha]uhTjhN]r hmXtraceback=Nonerr}r(hSUhTj ubahWhubeubeubh)r}r(hSUhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]r(hz)r}r(hSX5Bases: :class:`circuits.web.exceptions.HTTPException`hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]r(hmXBases: rr}r(hSXBases: hTjubh)r}r(hSX.:class:`circuits.web.exceptions.HTTPException`rhTjhUNhWhhY}r(UreftypeXclasshhX%circuits.web.exceptions.HTTPExceptionU refdomainXpyr h^]h]]U refexplicith[]h\]ha]hjjjjjuhcNhN]r!j)r"}r#(hSjhY}r$(h[]h\]r%(j j Xpy-classr&eh]]h^]ha]uhTjhN]r'hmX%circuits.web.exceptions.HTTPExceptionr(r)}r*(hSUhTj"ubahWjubaubeubhz)r+}r,(hSX*411* `Length Required`hTjhUXk/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.LengthRequiredr-hWhhY}r.(h[]h\]h]]h^]ha]uhcKhdhhN]r/(j)r0}r1(hSX*411*hY}r2(h[]h\]h]]h^]ha]uhTj+hN]r3hmX411r4r5}r6(hSUhTj0ubahWjubhmX r7}r8(hSX hTj+ubj)r9}r:(hSX`Length Required`hY}r;(h[]h\]h]]h^]ha]uhTj+hN]r<hmXLength Requiredr=r>}r?(hSUhTj9ubahWjubeubhz)r@}rA(hSXRaise if the browser submitted data but no ``Content-Length`` header which is required for the kind of processing the server does.hTjhUj-hWhhY}rB(h[]h\]h]]h^]ha]uhcKhdhhN]rC(hmX+Raise if the browser submitted data but no rDrE}rF(hSX+Raise if the browser submitted data but no hTj@ubj)rG}rH(hSX``Content-Length``hY}rI(h[]h\]h]]h^]ha]uhTj@hN]rJhmXContent-LengthrKrL}rM(hSUhTjGubahWjubhmXE header which is required for the kind of processing the server does.rNrO}rP(hSXE header which is required for the kind of processing the server does.hTj@ubeubhq)rQ}rR(hSUhTjhUNhWhuhY}rS(h^]h]]h[]h\]ha]Uentries]rT(hxX7code (circuits.web.exceptions.LengthRequired attribute)h1UtrUauhcNhdhhN]ubh)rV}rW(hSUhTjhUNhWhhY}rX(hhXpyh^]h]]h[]h\]ha]hX attributerYhjYuhcNhdhhN]rZ(h)r[}r\(hSXLengthRequired.codehTjVhUj&hWhhY}r](h^]r^h1ahhXcircuits.web.exceptionsr_r`}rabh]]h[]h\]ha]rbh1ahXLengthRequired.codehjhuhcNhdhhN]rc(h)rd}re(hSXcodehTj[hUj&hWhhY}rf(h[]h\]h]]h^]ha]uhcNhdhhN]rghmXcoderhri}rj(hSUhTjdubaubh)rk}rl(hSX = 411hTj[hUj&hWhhY}rm(h[]h\]h]]h^]ha]uhcNhdhhN]rnhmX = 411rorp}rq(hSUhTjkubaubeubh)rr}rs(hSUhTjVhUj&hWhhY}rt(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubhq)ru}rv(hSUhTjhUNhWhuhY}rw(h^]h]]h[]h\]ha]Uentries]rx(hxX>description (circuits.web.exceptions.LengthRequired attribute)hUtryauhcNhdhhN]ubh)rz}r{(hSUhTjhUNhWhhY}r|(hhXpyh^]h]]h[]h\]ha]hX attributer}hj}uhcNhdhhN]r~(h)r}r(hSXLengthRequired.descriptionhTjzhUj&hWhhY}r(h^]rhahhXcircuits.web.exceptionsrr}rbh]]h[]h\]ha]rhahXLengthRequired.descriptionhjhuhcNhdhhN]r(h)r}r(hSX descriptionhTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX descriptionrr}r(hSUhTjubaubh)r}r(hSX[ = '

    A request with this method requires a valid Content-Length header.

    'hTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX[ = '

    A request with this method requires a valid Content-Length header.

    'rr}r(hSUhTjubaubeubh)r}r(hSUhTjzhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubeubeubhq)r}r(hSUhThQhUNhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxXPreconditionFailedrhUtrauhcNhdhhN]ubh)r}r(hSUhThQhUNhWhhY}r(hhXpyh^]h]]h[]h\]ha]hX exceptionrhjuhcNhdhhN]r(h)r}r(hSX4PreconditionFailed(description=None, traceback=None)hTjhUhhWhhY}r(h^]rhahhXcircuits.web.exceptionsrr}rbh]]h[]h\]ha]rhahjhUhuhcNhdhhN]r(h)r}r(hSX exception hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX exception rr}r(hSUhTjubaubh)r}r(hSXcircuits.web.exceptions.hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXcircuits.web.exceptions.rr}r(hSUhTjubaubh)r}r(hSjhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXPreconditionFailedrr}r(hSUhTjubaubh)r}r(hSUhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]r(h)r}r(hSXdescription=NonehY}r(h[]h\]h]]h^]ha]uhTjhN]rhmXdescription=Nonerr}r(hSUhTjubahWhubh)r}r(hSXtraceback=NonehY}r(h[]h\]h]]h^]ha]uhTjhN]rhmXtraceback=Nonerr}r(hSUhTjubahWhubeubeubh)r}r(hSUhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]r(hz)r}r(hSX5Bases: :class:`circuits.web.exceptions.HTTPException`hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]r(hmXBases: rr}r(hSXBases: hTjubh)r}r(hSX.:class:`circuits.web.exceptions.HTTPException`rhTjhUNhWhhY}r(UreftypeXclasshhX%circuits.web.exceptions.HTTPExceptionU refdomainXpyrh^]h]]U refexplicith[]h\]ha]hjjjjjuhcNhN]rj)r}r(hSjhY}r(h[]h\]r(j jXpy-classreh]]h^]ha]uhTjhN]rhmX%circuits.web.exceptions.HTTPExceptionrr}r(hSUhTjubahWjubaubeubhz)r}r(hSX*412* `Precondition Failed`hTjhUXo/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.PreconditionFailedrhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]r(j)r}r(hSX*412*hY}r(h[]h\]h]]h^]ha]uhTjhN]rhmX412rr}r(hSUhTjubahWjubhmX r}r(hSX hTjubj)r}r(hSX`Precondition Failed`hY}r(h[]h\]h]]h^]ha]uhTjhN]rhmXPrecondition Failedr r }r (hSUhTjubahWjubeubhz)r }r (hSXaStatus code used in combination with ``If-Match``, ``If-None-Match``, or ``If-Unmodified-Since``.hTjhUjhWhhY}r (h[]h\]h]]h^]ha]uhcKhdhhN]r (hmX%Status code used in combination with r r }r (hSX%Status code used in combination with hTj ubj)r }r (hSX ``If-Match``hY}r (h[]h\]h]]h^]ha]uhTj hN]r hmXIf-Matchr r }r (hSUhTj ubahWjubhmX, r r }r (hSX, hTj ubj)r }r (hSX``If-None-Match``hY}r (h[]h\]h]]h^]ha]uhTj hN]r hmX If-None-Matchr r }r (hSUhTj ubahWjubhmX, or r r }r (hSX, or hTj ubj)r }r (hSX``If-Unmodified-Since``hY}r (h[]h\]h]]h^]ha]uhTj hN]r! hmXIf-Unmodified-Sincer" r# }r$ (hSUhTj ubahWjubhmX.r% }r& (hSX.hTj ubeubhq)r' }r( (hSUhTjhUNhWhuhY}r) (h^]h]]h[]h\]ha]Uentries]r* (hxX;code (circuits.web.exceptions.PreconditionFailed attribute)hUtr+ auhcNhdhhN]ubh)r, }r- (hSUhTjhUNhWhhY}r. (hhXpyh^]h]]h[]h\]ha]hX attributer/ hj/ uhcNhdhhN]r0 (h)r1 }r2 (hSXPreconditionFailed.codehTj, hUj&hWhhY}r3 (h^]r4 hahhXcircuits.web.exceptionsr5 r6 }r7 bh]]h[]h\]ha]r8 hahXPreconditionFailed.codehjhuhcNhdhhN]r9 (h)r: }r; (hSXcodehTj1 hUj&hWhhY}r< (h[]h\]h]]h^]ha]uhcNhdhhN]r= hmXcoder> r? }r@ (hSUhTj: ubaubh)rA }rB (hSX = 412hTj1 hUj&hWhhY}rC (h[]h\]h]]h^]ha]uhcNhdhhN]rD hmX = 412rE rF }rG (hSUhTjA ubaubeubh)rH }rI (hSUhTj, hUj&hWhhY}rJ (h[]h\]h]]h^]ha]uhcNhdhhN]ubeubhq)rK }rL (hSUhTjhUNhWhuhY}rM (h^]h]]h[]h\]ha]Uentries]rN (hxXBdescription (circuits.web.exceptions.PreconditionFailed attribute)hUtrO auhcNhdhhN]ubh)rP }rQ (hSUhTjhUNhWhhY}rR (hhXpyh^]h]]h[]h\]ha]hX attributerS hjS uhcNhdhhN]rT (h)rU }rV (hSXPreconditionFailed.descriptionhTjP hUj&hWhhY}rW (h^]rX hahhXcircuits.web.exceptionsrY rZ }r[ bh]]h[]h\]ha]r\ hahXPreconditionFailed.descriptionhjhuhcNhdhhN]r] (h)r^ }r_ (hSX descriptionhTjU hUj&hWhhY}r` (h[]h\]h]]h^]ha]uhcNhdhhN]ra hmX descriptionrb rc }rd (hSUhTj^ ubaubh)re }rf (hSXS = '

    The precondition on the request for the URL failed positive evaluation.

    'hTjU hUj&hWhhY}rg (h[]h\]h]]h^]ha]uhcNhdhhN]rh hmXS = '

    The precondition on the request for the URL failed positive evaluation.

    'ri rj }rk (hSUhTje ubaubeubh)rl }rm (hSUhTjP hUj&hWhhY}rn (h[]h\]h]]h^]ha]uhcNhdhhN]ubeubeubeubhq)ro }rp (hSUhThQhUNhWhuhY}rq (h^]h]]h[]h\]ha]Uentries]rr (hxXRequestEntityTooLargers hUtrt auhcNhdhhN]ubh)ru }rv (hSUhThQhUNhWhhY}rw (hhXpyh^]h]]h[]h\]ha]hX exceptionrx hjx uhcNhdhhN]ry (h)rz }r{ (hSX7RequestEntityTooLarge(description=None, traceback=None)hTju hUhhWhhY}r| (h^]r} hahhXcircuits.web.exceptionsr~ r }r bh]]h[]h\]ha]r hahjs hUhuhcNhdhhN]r (h)r }r (hSX exception hTjz hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmX exception r r }r (hSUhTj ubaubh)r }r (hSXcircuits.web.exceptions.hTjz hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmXcircuits.web.exceptions.r r }r (hSUhTj ubaubh)r }r (hSjs hTjz hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmXRequestEntityTooLarger r }r (hSUhTj ubaubh)r }r (hSUhTjz hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r (h)r }r (hSXdescription=NonehY}r (h[]h\]h]]h^]ha]uhTj hN]r hmXdescription=Noner r }r (hSUhTj ubahWhubh)r }r (hSXtraceback=NonehY}r (h[]h\]h]]h^]ha]uhTj hN]r hmXtraceback=Noner r }r (hSUhTj ubahWhubeubeubh)r }r (hSUhTju hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r (hz)r }r (hSX5Bases: :class:`circuits.web.exceptions.HTTPException`hTj hUhhWhhY}r (h[]h\]h]]h^]ha]uhcKhdhhN]r (hmXBases: r r }r (hSXBases: hTj ubh)r }r (hSX.:class:`circuits.web.exceptions.HTTPException`r hTj hUNhWhhY}r (UreftypeXclasshhX%circuits.web.exceptions.HTTPExceptionU refdomainXpyr h^]h]]U refexplicith[]h\]ha]hjjjs jjuhcNhN]r j)r }r (hSj hY}r (h[]h\]r (j j Xpy-classr eh]]h^]ha]uhTj hN]r hmX%circuits.web.exceptions.HTTPExceptionr r }r (hSUhTj ubahWjubaubeubhz)r }r (hSX *413* `Request Entity Too Large`hTj hUXr/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.RequestEntityTooLarger hWhhY}r (h[]h\]h]]h^]ha]uhcKhdhhN]r (j)r }r (hSX*413*hY}r (h[]h\]h]]h^]ha]uhTj hN]r hmX413r r }r (hSUhTj ubahWjubhmX r }r (hSX hTj ubj)r }r (hSX`Request Entity Too Large`hY}r (h[]h\]h]]h^]ha]uhTj hN]r hmXRequest Entity Too Larger r }r (hSUhTj ubahWjubeubhz)r }r (hSXOThe status code one should return if the data submitted exceeded a given limit.r hTj hUj hWhhY}r (h[]h\]h]]h^]ha]uhcKhdhhN]r hmXOThe status code one should return if the data submitted exceeded a given limit.r r }r (hSj hTj ubaubhq)r }r (hSUhTj hUNhWhuhY}r (h^]h]]h[]h\]ha]Uentries]r (hxX>code (circuits.web.exceptions.RequestEntityTooLarge attribute)h Utr auhcNhdhhN]ubh)r }r (hSUhTj hUNhWhhY}r (hhXpyh^]h]]h[]h\]ha]hX attributer hj uhcNhdhhN]r (h)r }r (hSXRequestEntityTooLarge.codehTj hUj&hWhhY}r (h^]r h ahhXcircuits.web.exceptionsr r }r bh]]h[]h\]ha]r h ahXRequestEntityTooLarge.codehjs huhcNhdhhN]r (h)r }r (hSXcodehTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmXcoder r }r (hSUhTj ubaubh)r }r (hSX = 413hTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmX = 413r r }r (hSUhTj ubaubeubh)r }r (hSUhTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]ubeubhq)r }r (hSUhTj hUNhWhuhY}r (h^]h]]h[]h\]ha]Uentries]r (hxXEdescription (circuits.web.exceptions.RequestEntityTooLarge attribute)h@Utr auhcNhdhhN]ubh)r }r (hSUhTj hUNhWhhY}r (hhXpyh^]h]]h[]h\]ha]hX attributer hj uhcNhdhhN]r (h)r }r (hSX!RequestEntityTooLarge.descriptionhTj hUj&hWhhY}r (h^]r h@ahhXcircuits.web.exceptionsr r }r bh]]h[]h\]ha]r h@ahX!RequestEntityTooLarge.descriptionhjs huhcNhdhhN]r (h)r }r (hSX descriptionhTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmX descriptionr r }r (hSUhTj ubaubh)r }r (hSXB = '

    The data value transmitted exceeds the capacity limit.

    'hTj hUj&hWhhY}r! (h[]h\]h]]h^]ha]uhcNhdhhN]r" hmXB = '

    The data value transmitted exceeds the capacity limit.

    'r# r$ }r% (hSUhTj ubaubeubh)r& }r' (hSUhTj hUj&hWhhY}r( (h[]h\]h]]h^]ha]uhcNhdhhN]ubeubeubeubhq)r) }r* (hSUhThQhUNhWhuhY}r+ (h^]h]]h[]h\]ha]Uentries]r, (hxXRequestURITooLarger- hUtr. auhcNhdhhN]ubh)r/ }r0 (hSUhThQhUNhWhhY}r1 (hhXpyh^]h]]h[]h\]ha]hX exceptionr2 hj2 uhcNhdhhN]r3 (h)r4 }r5 (hSX4RequestURITooLarge(description=None, traceback=None)hTj/ hUhhWhhY}r6 (h^]r7 hahhXcircuits.web.exceptionsr8 r9 }r: bh]]h[]h\]ha]r; hahj- hUhuhcNhdhhN]r< (h)r= }r> (hSX exception hTj4 hUhhWhhY}r? (h[]h\]h]]h^]ha]uhcNhdhhN]r@ hmX exception rA rB }rC (hSUhTj= ubaubh)rD }rE (hSXcircuits.web.exceptions.hTj4 hUhhWhhY}rF (h[]h\]h]]h^]ha]uhcNhdhhN]rG hmXcircuits.web.exceptions.rH rI }rJ (hSUhTjD ubaubh)rK }rL (hSj- hTj4 hUhhWhhY}rM (h[]h\]h]]h^]ha]uhcNhdhhN]rN hmXRequestURITooLargerO rP }rQ (hSUhTjK ubaubh)rR }rS (hSUhTj4 hUhhWhhY}rT (h[]h\]h]]h^]ha]uhcNhdhhN]rU (h)rV }rW (hSXdescription=NonehY}rX (h[]h\]h]]h^]ha]uhTjR hN]rY hmXdescription=NonerZ r[ }r\ (hSUhTjV ubahWhubh)r] }r^ (hSXtraceback=NonehY}r_ (h[]h\]h]]h^]ha]uhTjR hN]r` hmXtraceback=Nonera rb }rc (hSUhTj] ubahWhubeubeubh)rd }re (hSUhTj/ hUhhWhhY}rf (h[]h\]h]]h^]ha]uhcNhdhhN]rg (hz)rh }ri (hSX5Bases: :class:`circuits.web.exceptions.HTTPException`hTjd hUhhWhhY}rj (h[]h\]h]]h^]ha]uhcKhdhhN]rk (hmXBases: rl rm }rn (hSXBases: hTjh ubh)ro }rp (hSX.:class:`circuits.web.exceptions.HTTPException`rq hTjh hUNhWhhY}rr (UreftypeXclasshhX%circuits.web.exceptions.HTTPExceptionU refdomainXpyrs h^]h]]U refexplicith[]h\]ha]hjjj- jjuhcNhN]rt j)ru }rv (hSjq hY}rw (h[]h\]rx (j js Xpy-classry eh]]h^]ha]uhTjo hN]rz hmX%circuits.web.exceptions.HTTPExceptionr{ r| }r} (hSUhTju ubahWjubaubeubhz)r~ }r (hSX*414* `Request URI Too Large`hTjd hUXo/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.RequestURITooLarger hWhhY}r (h[]h\]h]]h^]ha]uhcKhdhhN]r (j)r }r (hSX*414*hY}r (h[]h\]h]]h^]ha]uhTj~ hN]r hmX414r r }r (hSUhTj ubahWjubhmX r }r (hSX hTj~ ubj)r }r (hSX`Request URI Too Large`hY}r (h[]h\]h]]h^]ha]uhTj~ hN]r hmXRequest URI Too Larger r }r (hSUhTj ubahWjubeubhz)r }r (hSX!Like *413* but for too long URLs.hTjd hUj hWhhY}r (h[]h\]h]]h^]ha]uhcKhdhhN]r (hmXLike r r }r (hSXLike hTj ubj)r }r (hSX*413*hY}r (h[]h\]h]]h^]ha]uhTj hN]r hmX413r r }r (hSUhTj ubahWjubhmX but for too long URLs.r r }r (hSX but for too long URLs.hTj ubeubhq)r }r (hSUhTjd hUNhWhuhY}r (h^]h]]h[]h\]ha]Uentries]r (hxX;code (circuits.web.exceptions.RequestURITooLarge attribute)h5Utr auhcNhdhhN]ubh)r }r (hSUhTjd hUNhWhhY}r (hhXpyh^]h]]h[]h\]ha]hX attributer hj uhcNhdhhN]r (h)r }r (hSXRequestURITooLarge.codehTj hUj&hWhhY}r (h^]r h5ahhXcircuits.web.exceptionsr r }r bh]]h[]h\]ha]r h5ahXRequestURITooLarge.codehj- huhcNhdhhN]r (h)r }r (hSXcodehTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmXcoder r }r (hSUhTj ubaubh)r }r (hSX = 414hTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmX = 414r r }r (hSUhTj ubaubeubh)r }r (hSUhTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]ubeubhq)r }r (hSUhTjd hUNhWhuhY}r (h^]h]]h[]h\]ha]Uentries]r (hxXBdescription (circuits.web.exceptions.RequestURITooLarge attribute)hUtr auhcNhdhhN]ubh)r }r (hSUhTjd hUNhWhhY}r (hhXpyh^]h]]h[]h\]ha]hX attributer hj uhcNhdhhN]r (h)r }r (hSXRequestURITooLarge.descriptionhTj hUj&hWhhY}r (h^]r hahhXcircuits.web.exceptionsr r }r bh]]h[]h\]ha]r hahXRequestURITooLarge.descriptionhj- huhcNhdhhN]r (h)r }r (hSX descriptionhTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmX descriptionr r }r (hSUhTj ubaubh)r }r (hSXy = '

    The length of the requested URL exceeds the capacity limit for this server. The request cannot be processed.

    'hTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmXy = '

    The length of the requested URL exceeds the capacity limit for this server. The request cannot be processed.

    'r r }r (hSUhTj ubaubeubh)r }r (hSUhTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]ubeubeubeubhq)r }r (hSUhThQhUNhWhuhY}r (h^]h]]h[]h\]ha]Uentries]r (hxXUnsupportedMediaTyper h.Utr auhcNhdhhN]ubh)r }r (hSUhThQhUNhWhhY}r (hhXpyh^]h]]h[]h\]ha]hX exceptionr hj uhcNhdhhN]r (h)r }r (hSX6UnsupportedMediaType(description=None, traceback=None)hTj hUhhWhhY}r (h^]r h.ahhXcircuits.web.exceptionsr r }r bh]]h[]h\]ha]r h.ahj hUhuhcNhdhhN]r (h)r }r (hSX exception hTj hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmX exception r r }r (hSUhTj ubaubh)r }r (hSXcircuits.web.exceptions.hTj hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmXcircuits.web.exceptions.r r }r (hSUhTj ubaubh)r }r (hSj hTj hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmXUnsupportedMediaTyper r }r (hSUhTj ubaubh)r }r (hSUhTj hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r (h)r }r (hSXdescription=NonehY}r (h[]h\]h]]h^]ha]uhTj hN]r hmXdescription=Noner r }r (hSUhTj ubahWhubh)r }r! (hSXtraceback=NonehY}r" (h[]h\]h]]h^]ha]uhTj hN]r# hmXtraceback=Noner$ r% }r& (hSUhTj ubahWhubeubeubh)r' }r( (hSUhTj hUhhWhhY}r) (h[]h\]h]]h^]ha]uhcNhdhhN]r* (hz)r+ }r, (hSX5Bases: :class:`circuits.web.exceptions.HTTPException`hTj' hUhhWhhY}r- (h[]h\]h]]h^]ha]uhcKhdhhN]r. (hmXBases: r/ r0 }r1 (hSXBases: hTj+ ubh)r2 }r3 (hSX.:class:`circuits.web.exceptions.HTTPException`r4 hTj+ hUNhWhhY}r5 (UreftypeXclasshhX%circuits.web.exceptions.HTTPExceptionU refdomainXpyr6 h^]h]]U refexplicith[]h\]ha]hjjj jjuhcNhN]r7 j)r8 }r9 (hSj4 hY}r: (h[]h\]r; (j j6 Xpy-classr< eh]]h^]ha]uhTj2 hN]r= hmX%circuits.web.exceptions.HTTPExceptionr> r? }r@ (hSUhTj8 ubahWjubaubeubhz)rA }rB (hSX*415* `Unsupported Media Type`hTj' hUXq/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.UnsupportedMediaTyperC hWhhY}rD (h[]h\]h]]h^]ha]uhcKhdhhN]rE (j)rF }rG (hSX*415*hY}rH (h[]h\]h]]h^]ha]uhTjA hN]rI hmX415rJ rK }rL (hSUhTjF ubahWjubhmX rM }rN (hSX hTjA ubj)rO }rP (hSX`Unsupported Media Type`hY}rQ (h[]h\]h]]h^]ha]uhTjA hN]rR hmXUnsupported Media TyperS rT }rU (hSUhTjO ubahWjubeubhz)rV }rW (hSXaThe status code returned if the server is unable to handle the media type the client transmitted.rX hTj' hUjC hWhhY}rY (h[]h\]h]]h^]ha]uhcKhdhhN]rZ hmXaThe status code returned if the server is unable to handle the media type the client transmitted.r[ r\ }r] (hSjX hTjV ubaubhq)r^ }r_ (hSUhTj' hUNhWhuhY}r` (h^]h]]h[]h\]ha]Uentries]ra (hxX=code (circuits.web.exceptions.UnsupportedMediaType attribute)h?Utrb auhcNhdhhN]ubh)rc }rd (hSUhTj' hUNhWhhY}re (hhXpyh^]h]]h[]h\]ha]hX attributerf hjf uhcNhdhhN]rg (h)rh }ri (hSXUnsupportedMediaType.codehTjc hUj&hWhhY}rj (h^]rk h?ahhXcircuits.web.exceptionsrl rm }rn bh]]h[]h\]ha]ro h?ahXUnsupportedMediaType.codehj huhcNhdhhN]rp (h)rq }rr (hSXcodehTjh hUj&hWhhY}rs (h[]h\]h]]h^]ha]uhcNhdhhN]rt hmXcoderu rv }rw (hSUhTjq ubaubh)rx }ry (hSX = 415hTjh hUj&hWhhY}rz (h[]h\]h]]h^]ha]uhcNhdhhN]r{ hmX = 415r| r} }r~ (hSUhTjx ubaubeubh)r }r (hSUhTjc hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]ubeubhq)r }r (hSUhTj' hUNhWhuhY}r (h^]h]]h[]h\]ha]Uentries]r (hxXDdescription (circuits.web.exceptions.UnsupportedMediaType attribute)h;Utr auhcNhdhhN]ubh)r }r (hSUhTj' hUNhWhhY}r (hhXpyh^]h]]h[]h\]ha]hX attributer hj uhcNhdhhN]r (h)r }r (hSX UnsupportedMediaType.descriptionhTj hUj&hWhhY}r (h^]r h;ahhXcircuits.web.exceptionsr r }r bh]]h[]h\]ha]r h;ahX UnsupportedMediaType.descriptionhj huhcNhdhhN]r (h)r }r (hSX descriptionhTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmX descriptionr r }r (hSUhTj ubaubh)r }r (hSXR = '

    The server does not support the media type transmitted in the request.

    'hTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmXR = '

    The server does not support the media type transmitted in the request.

    'r r }r (hSUhTj ubaubeubh)r }r (hSUhTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]ubeubeubeubhq)r }r (hSUhThQhUNhWhuhY}r (h^]h]]h[]h\]ha]Uentries]r (hxXRangeUnsatisfiabler h!Utr auhcNhdhhN]ubh)r }r (hSUhThQhUNhWhhY}r (hhXpyh^]h]]h[]h\]ha]hX exceptionr hj uhcNhdhhN]r (h)r }r (hSX4RangeUnsatisfiable(description=None, traceback=None)hTj hUhhWhhY}r (h^]r h!ahhXcircuits.web.exceptionsr r }r bh]]h[]h\]ha]r h!ahj hUhuhcNhdhhN]r (h)r }r (hSX exception hTj hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmX exception r r }r (hSUhTj ubaubh)r }r (hSXcircuits.web.exceptions.hTj hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmXcircuits.web.exceptions.r r }r (hSUhTj ubaubh)r }r (hSj hTj hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmXRangeUnsatisfiabler r }r (hSUhTj ubaubh)r }r (hSUhTj hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r (h)r }r (hSXdescription=NonehY}r (h[]h\]h]]h^]ha]uhTj hN]r hmXdescription=Noner r }r (hSUhTj ubahWhubh)r }r (hSXtraceback=NonehY}r (h[]h\]h]]h^]ha]uhTj hN]r hmXtraceback=Noner r }r (hSUhTj ubahWhubeubeubh)r }r (hSUhTj hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r (hz)r }r (hSX5Bases: :class:`circuits.web.exceptions.HTTPException`hTj hUhhWhhY}r (h[]h\]h]]h^]ha]uhcKhdhhN]r (hmXBases: r r }r (hSXBases: hTj ubh)r }r (hSX.:class:`circuits.web.exceptions.HTTPException`r hTj hUNhWhhY}r (UreftypeXclasshhX%circuits.web.exceptions.HTTPExceptionU refdomainXpyr h^]h]]U refexplicith[]h\]ha]hjjj jjuhcNhN]r j)r }r (hSj hY}r (h[]h\]r (j j Xpy-classr eh]]h^]ha]uhTj hN]r hmX%circuits.web.exceptions.HTTPExceptionr r }r (hSUhTj ubahWjubaubeubhz)r }r (hSX*416* `Range Unsatisfiable`hTj hUXo/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.RangeUnsatisfiabler hWhhY}r (h[]h\]h]]h^]ha]uhcKhdhhN]r (j)r }r (hSX*416*hY}r (h[]h\]h]]h^]ha]uhTj hN]r hmX416r r }r (hSUhTj ubahWjubhmX r }r (hSX hTj ubj)r }r (hSX`Range Unsatisfiable`hY}r (h[]h\]h]]h^]ha]uhTj hN]r hmXRange Unsatisfiabler r }r (hSUhTj ubahWjubeubhz)r }r (hSXMThe status code returned if the server is unable to satisfy the request ranger hTj hUj hWhhY}r (h[]h\]h]]h^]ha]uhcKhdhhN]r hmXMThe status code returned if the server is unable to satisfy the request ranger r }r (hSj hTj ubaubhq)r }r (hSUhTj hUNhWhuhY}r (h^]h]]h[]h\]ha]Uentries]r (hxX;code (circuits.web.exceptions.RangeUnsatisfiable attribute)h Utr auhcNhdhhN]ubh)r }r (hSUhTj hUNhWhhY}r (hhXpyh^]h]]h[]h\]ha]hX attributer hj uhcNhdhhN]r! (h)r" }r# (hSXRangeUnsatisfiable.codehTj hUj&hWhhY}r$ (h^]r% h ahhXcircuits.web.exceptionsr& r' }r( bh]]h[]h\]ha]r) h ahXRangeUnsatisfiable.codehj huhcNhdhhN]r* (h)r+ }r, (hSXcodehTj" hUj&hWhhY}r- (h[]h\]h]]h^]ha]uhcNhdhhN]r. hmXcoder/ r0 }r1 (hSUhTj+ ubaubh)r2 }r3 (hSX = 416hTj" hUj&hWhhY}r4 (h[]h\]h]]h^]ha]uhcNhdhhN]r5 hmX = 416r6 r7 }r8 (hSUhTj2 ubaubeubh)r9 }r: (hSUhTj hUj&hWhhY}r; (h[]h\]h]]h^]ha]uhcNhdhhN]ubeubhq)r< }r= (hSUhTj hUNhWhuhY}r> (h^]h]]h[]h\]ha]Uentries]r? (hxXBdescription (circuits.web.exceptions.RangeUnsatisfiable attribute)h%Utr@ auhcNhdhhN]ubh)rA }rB (hSUhTj hUNhWhhY}rC (hhXpyh^]h]]h[]h\]ha]hX attributerD hjD uhcNhdhhN]rE (h)rF }rG (hSXRangeUnsatisfiable.descriptionhTjA hUj&hWhhY}rH (h^]rI h%ahhXcircuits.web.exceptionsrJ rK }rL bh]]h[]h\]ha]rM h%ahXRangeUnsatisfiable.descriptionhj huhcNhdhhN]rN (h)rO }rP (hSX descriptionhTjF hUj&hWhhY}rQ (h[]h\]h]]h^]ha]uhcNhdhhN]rR hmX descriptionrS rT }rU (hSUhTjO ubaubh)rV }rW (hSX; = '

    The server cannot satisfy the request range(s).

    'hTjF hUj&hWhhY}rX (h[]h\]h]]h^]ha]uhcNhdhhN]rY hmX; = '

    The server cannot satisfy the request range(s).

    'rZ r[ }r\ (hSUhTjV ubaubeubh)r] }r^ (hSUhTjA hUj&hWhhY}r_ (h[]h\]h]]h^]ha]uhcNhdhhN]ubeubeubeubhq)r` }ra (hSUhThQhUNhWhuhY}rb (h^]h]]h[]h\]ha]Uentries]rc (hxXInternalServerErrorrd h Utre auhcNhdhhN]ubh)rf }rg (hSUhThQhUNhWhhY}rh (hhXpyh^]h]]h[]h\]ha]hX exceptionri hji uhcNhdhhN]rj (h)rk }rl (hSX5InternalServerError(description=None, traceback=None)hTjf hUhhWhhY}rm (h^]rn h ahhXcircuits.web.exceptionsro rp }rq bh]]h[]h\]ha]rr h ahjd hUhuhcNhdhhN]rs (h)rt }ru (hSX exception hTjk hUhhWhhY}rv (h[]h\]h]]h^]ha]uhcNhdhhN]rw hmX exception rx ry }rz (hSUhTjt ubaubh)r{ }r| (hSXcircuits.web.exceptions.hTjk hUhhWhhY}r} (h[]h\]h]]h^]ha]uhcNhdhhN]r~ hmXcircuits.web.exceptions.r r }r (hSUhTj{ ubaubh)r }r (hSjd hTjk hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmXInternalServerErrorr r }r (hSUhTj ubaubh)r }r (hSUhTjk hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r (h)r }r (hSXdescription=NonehY}r (h[]h\]h]]h^]ha]uhTj hN]r hmXdescription=Noner r }r (hSUhTj ubahWhubh)r }r (hSXtraceback=NonehY}r (h[]h\]h]]h^]ha]uhTj hN]r hmXtraceback=Noner r }r (hSUhTj ubahWhubeubeubh)r }r (hSUhTjf hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r (hz)r }r (hSX5Bases: :class:`circuits.web.exceptions.HTTPException`hTj hUhhWhhY}r (h[]h\]h]]h^]ha]uhcKhdhhN]r (hmXBases: r r }r (hSXBases: hTj ubh)r }r (hSX.:class:`circuits.web.exceptions.HTTPException`r hTj hUNhWhhY}r (UreftypeXclasshhX%circuits.web.exceptions.HTTPExceptionU refdomainXpyr h^]h]]U refexplicith[]h\]ha]hjjjd jjuhcNhN]r j)r }r (hSj hY}r (h[]h\]r (j j Xpy-classr eh]]h^]ha]uhTj hN]r hmX%circuits.web.exceptions.HTTPExceptionr r }r (hSUhTj ubahWjubaubeubhz)r }r (hSX*500* `Internal Server Error`hTj hUXp/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.InternalServerErrorr hWhhY}r (h[]h\]h]]h^]ha]uhcKhdhhN]r (j)r }r (hSX*500*hY}r (h[]h\]h]]h^]ha]uhTj hN]r hmX500r r }r (hSUhTj ubahWjubhmX r }r (hSX hTj ubj)r }r (hSX`Internal Server Error`hY}r (h[]h\]h]]h^]ha]uhTj hN]r hmXInternal Server Errorr r }r (hSUhTj ubahWjubeubhz)r }r (hSXtRaise if an internal server error occurred. This is a good fallback if an unknown error occurred in the dispatcher.r hTj hUj hWhhY}r (h[]h\]h]]h^]ha]uhcKhdhhN]r hmXtRaise if an internal server error occurred. This is a good fallback if an unknown error occurred in the dispatcher.r r }r (hSj hTj ubaubhq)r }r (hSUhTj hUNhWhuhY}r (h^]h]]h[]h\]ha]Uentries]r (hxX<code (circuits.web.exceptions.InternalServerError attribute)hAUtr auhcNhdhhN]ubh)r }r (hSUhTj hUNhWhhY}r (hhXpyh^]h]]h[]h\]ha]hX attributer hj uhcNhdhhN]r (h)r }r (hSXInternalServerError.codehTj hUj&hWhhY}r (h^]r hAahhXcircuits.web.exceptionsr r }r bh]]h[]h\]ha]r hAahXInternalServerError.codehjd huhcNhdhhN]r (h)r }r (hSXcodehTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmXcoder r }r (hSUhTj ubaubh)r }r (hSX = 500hTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmX = 500r r }r (hSUhTj ubaubeubh)r }r (hSUhTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]ubeubhq)r }r (hSUhTj hUNhWhuhY}r (h^]h]]h[]h\]ha]Uentries]r (hxXCdescription (circuits.web.exceptions.InternalServerError attribute)h(Utr auhcNhdhhN]ubh)r }r (hSUhTj hUNhWhhY}r (hhXpyh^]h]]h[]h\]ha]hX attributer hj uhcNhdhhN]r (h)r }r (hSXInternalServerError.descriptionhTj hUj&hWhhY}r (h^]r h(ahhXcircuits.web.exceptionsr r }r bh]]h[]h\]ha]r h(ahXInternalServerError.descriptionhjd huhcNhdhhN]r (h)r }r (hSX descriptionhTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmX descriptionr r }r (hSUhTj ubaubh)r }r (hSX = '

    The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

    'hTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmX = '

    The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

    'r r }r (hSUhTj ubaubeubh)r }r (hSUhTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]ubeubeubeubhq)r }r (hSUhThQhUNhWhuhY}r (h^]h]]h[]h\]ha]Uentries]r (hxXNotImplementedr h'Utr auhcNhdhhN]ubh)r }r! (hSUhThQhUNhWhhY}r" (hhXpyh^]h]]h[]h\]ha]hX exceptionr# hj# uhcNhdhhN]r$ (h)r% }r& (hSX0NotImplemented(description=None, traceback=None)hTj hUhhWhhY}r' (h^]r( h'ahhXcircuits.web.exceptionsr) r* }r+ bh]]h[]h\]ha]r, h'ahj hUhuhcNhdhhN]r- (h)r. }r/ (hSX exception hTj% hUhhWhhY}r0 (h[]h\]h]]h^]ha]uhcNhdhhN]r1 hmX exception r2 r3 }r4 (hSUhTj. ubaubh)r5 }r6 (hSXcircuits.web.exceptions.hTj% hUhhWhhY}r7 (h[]h\]h]]h^]ha]uhcNhdhhN]r8 hmXcircuits.web.exceptions.r9 r: }r; (hSUhTj5 ubaubh)r< }r= (hSj hTj% hUhhWhhY}r> (h[]h\]h]]h^]ha]uhcNhdhhN]r? hmXNotImplementedr@ rA }rB (hSUhTj< ubaubh)rC }rD (hSUhTj% hUhhWhhY}rE (h[]h\]h]]h^]ha]uhcNhdhhN]rF (h)rG }rH (hSXdescription=NonehY}rI (h[]h\]h]]h^]ha]uhTjC hN]rJ hmXdescription=NonerK rL }rM (hSUhTjG ubahWhubh)rN }rO (hSXtraceback=NonehY}rP (h[]h\]h]]h^]ha]uhTjC hN]rQ hmXtraceback=NonerR rS }rT (hSUhTjN ubahWhubeubeubh)rU }rV (hSUhTj hUhhWhhY}rW (h[]h\]h]]h^]ha]uhcNhdhhN]rX (hz)rY }rZ (hSX5Bases: :class:`circuits.web.exceptions.HTTPException`hTjU hUhhWhhY}r[ (h[]h\]h]]h^]ha]uhcKhdhhN]r\ (hmXBases: r] r^ }r_ (hSXBases: hTjY ubh)r` }ra (hSX.:class:`circuits.web.exceptions.HTTPException`rb hTjY hUNhWhhY}rc (UreftypeXclasshhX%circuits.web.exceptions.HTTPExceptionU refdomainXpyrd h^]h]]U refexplicith[]h\]ha]hjjj jjuhcNhN]re j)rf }rg (hSjb hY}rh (h[]h\]ri (j jd Xpy-classrj eh]]h^]ha]uhTj` hN]rk hmX%circuits.web.exceptions.HTTPExceptionrl rm }rn (hSUhTjf ubahWjubaubeubhz)ro }rp (hSX*501* `Not Implemented`hTjU hUXk/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.NotImplementedrq hWhhY}rr (h[]h\]h]]h^]ha]uhcKhdhhN]rs (j)rt }ru (hSX*501*hY}rv (h[]h\]h]]h^]ha]uhTjo hN]rw hmX501rx ry }rz (hSUhTjt ubahWjubhmX r{ }r| (hSX hTjo ubj)r} }r~ (hSX`Not Implemented`hY}r (h[]h\]h]]h^]ha]uhTjo hN]r hmXNot Implementedr r }r (hSUhTj} ubahWjubeubhz)r }r (hSXNRaise if the application does not support the action requested by the browser.r hTjU hUjq hWhhY}r (h[]h\]h]]h^]ha]uhcKhdhhN]r hmXNRaise if the application does not support the action requested by the browser.r r }r (hSj hTj ubaubhq)r }r (hSUhTjU hUNhWhuhY}r (h^]h]]h[]h\]ha]Uentries]r (hxX7code (circuits.web.exceptions.NotImplemented attribute)h2Utr auhcNhdhhN]ubh)r }r (hSUhTjU hUNhWhhY}r (hhXpyh^]h]]h[]h\]ha]hX attributer hj uhcNhdhhN]r (h)r }r (hSXNotImplemented.codehTj hUj&hWhhY}r (h^]r h2ahhXcircuits.web.exceptionsr r }r bh]]h[]h\]ha]r h2ahXNotImplemented.codehj huhcNhdhhN]r (h)r }r (hSXcodehTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmXcoder r }r (hSUhTj ubaubh)r }r (hSX = 501hTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmX = 501r r }r (hSUhTj ubaubeubh)r }r (hSUhTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]ubeubhq)r }r (hSUhTjU hUNhWhuhY}r (h^]h]]h[]h\]ha]Uentries]r (hxX>description (circuits.web.exceptions.NotImplemented attribute)hUtr auhcNhdhhN]ubh)r }r (hSUhTjU hUNhWhhY}r (hhXpyh^]h]]h[]h\]ha]hX attributer hj uhcNhdhhN]r (h)r }r (hSXNotImplemented.descriptionhTj hUj&hWhhY}r (h^]r hahhXcircuits.web.exceptionsr r }r bh]]h[]h\]ha]r hahXNotImplemented.descriptionhj huhcNhdhhN]r (h)r }r (hSX descriptionhTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmX descriptionr r }r (hSUhTj ubaubh)r }r (hSXL = '

    The server does not support the action requested by the browser.

    'hTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmXL = '

    The server does not support the action requested by the browser.

    'r r }r (hSUhTj ubaubeubh)r }r (hSUhTj hUj&hWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]ubeubeubeubhq)r }r (hSUhThQhUNhWhuhY}r (h^]h]]h[]h\]ha]Uentries]r (hxX BadGatewayr h*Utr auhcNhdhhN]ubh)r }r (hSUhThQhUNhWhhY}r (hhXpyh^]h]]h[]h\]ha]hX exceptionr hj uhcNhdhhN]r (h)r }r (hSX,BadGateway(description=None, traceback=None)hTj hUhhWhhY}r (h^]r h*ahhXcircuits.web.exceptionsr r }r bh]]h[]h\]ha]r h*ahj hUhuhcNhdhhN]r (h)r }r (hSX exception hTj hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmX exception r r }r (hSUhTj ubaubh)r }r (hSXcircuits.web.exceptions.hTj hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmXcircuits.web.exceptions.r r }r (hSUhTj ubaubh)r }r (hSj hTj hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r hmX BadGatewayr r }r (hSUhTj ubaubh)r }r (hSUhTj hUhhWhhY}r (h[]h\]h]]h^]ha]uhcNhdhhN]r(h)r}r(hSXdescription=NonehY}r(h[]h\]h]]h^]ha]uhTj hN]rhmXdescription=Nonerr}r(hSUhTjubahWhubh)r}r (hSXtraceback=NonehY}r (h[]h\]h]]h^]ha]uhTj hN]r hmXtraceback=Noner r }r(hSUhTjubahWhubeubeubh)r}r(hSUhTj hUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]r(hz)r}r(hSX5Bases: :class:`circuits.web.exceptions.HTTPException`hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]r(hmXBases: rr}r(hSXBases: hTjubh)r}r(hSX.:class:`circuits.web.exceptions.HTTPException`rhTjhUNhWhhY}r(UreftypeXclasshhX%circuits.web.exceptions.HTTPExceptionU refdomainXpyrh^]h]]U refexplicith[]h\]ha]hjjj jjuhcNhN]rj)r }r!(hSjhY}r"(h[]h\]r#(j jXpy-classr$eh]]h^]ha]uhTjhN]r%hmX%circuits.web.exceptions.HTTPExceptionr&r'}r((hSUhTj ubahWjubaubeubhz)r)}r*(hSX*502* `Bad Gateway`hTjhUXg/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.BadGatewayr+hWhhY}r,(h[]h\]h]]h^]ha]uhcKhdhhN]r-(j)r.}r/(hSX*502*hY}r0(h[]h\]h]]h^]ha]uhTj)hN]r1hmX502r2r3}r4(hSUhTj.ubahWjubhmX r5}r6(hSX hTj)ubj)r7}r8(hSX `Bad Gateway`hY}r9(h[]h\]h]]h^]ha]uhTj)hN]r:hmX Bad Gatewayr;r<}r=(hSUhTj7ubahWjubeubhz)r>}r?(hSXIf you do proxying in your application you should return this status code if you received an invalid response from the upstream server it accessed in attempting to fulfill the request.r@hTjhUj+hWhhY}rA(h[]h\]h]]h^]ha]uhcKhdhhN]rBhmXIf you do proxying in your application you should return this status code if you received an invalid response from the upstream server it accessed in attempting to fulfill the request.rCrD}rE(hSj@hTj>ubaubhq)rF}rG(hSUhTjhUNhWhuhY}rH(h^]h]]h[]h\]ha]Uentries]rI(hxX3code (circuits.web.exceptions.BadGateway attribute)h8UtrJauhcNhdhhN]ubh)rK}rL(hSUhTjhUNhWhhY}rM(hhXpyh^]h]]h[]h\]ha]hX attributerNhjNuhcNhdhhN]rO(h)rP}rQ(hSXBadGateway.codehTjKhUj&hWhhY}rR(h^]rSh8ahhXcircuits.web.exceptionsrTrU}rVbh]]h[]h\]ha]rWh8ahXBadGateway.codehj huhcNhdhhN]rX(h)rY}rZ(hSXcodehTjPhUj&hWhhY}r[(h[]h\]h]]h^]ha]uhcNhdhhN]r\hmXcoder]r^}r_(hSUhTjYubaubh)r`}ra(hSX = 502hTjPhUj&hWhhY}rb(h[]h\]h]]h^]ha]uhcNhdhhN]rchmX = 502rdre}rf(hSUhTj`ubaubeubh)rg}rh(hSUhTjKhUj&hWhhY}ri(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubhq)rj}rk(hSUhTjhUNhWhuhY}rl(h^]h]]h[]h\]ha]Uentries]rm(hxX:description (circuits.web.exceptions.BadGateway attribute)h7UtrnauhcNhdhhN]ubh)ro}rp(hSUhTjhUNhWhhY}rq(hhXpyh^]h]]h[]h\]ha]hX attributerrhjruhcNhdhhN]rs(h)rt}ru(hSXBadGateway.descriptionhTjohUj&hWhhY}rv(h^]rwh7ahhXcircuits.web.exceptionsrxry}rzbh]]h[]h\]ha]r{h7ahXBadGateway.descriptionhj huhcNhdhhN]r|(h)r}}r~(hSX descriptionhTjthUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX descriptionrr}r(hSUhTj}ubaubh)r}r(hSXR = '

    The proxy server received an invalid response from an upstream server.

    'hTjthUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXR = '

    The proxy server received an invalid response from an upstream server.

    'rr}r(hSUhTjubaubeubh)r}r(hSUhTjohUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubeubeubhq)r}r(hSUhThQhUNhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxXServiceUnavailablerhUtrauhcNhdhhN]ubh)r}r(hSUhThQhUNhWhhY}r(hhXpyh^]h]]h[]h\]ha]hX exceptionrhjuhcNhdhhN]r(h)r}r(hSX4ServiceUnavailable(description=None, traceback=None)hTjhUhhWhhY}r(h^]rhahhXcircuits.web.exceptionsrr}rbh]]h[]h\]ha]rhahjhUhuhcNhdhhN]r(h)r}r(hSX exception hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX exception rr}r(hSUhTjubaubh)r}r(hSXcircuits.web.exceptions.hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXcircuits.web.exceptions.rr}r(hSUhTjubaubh)r}r(hSjhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXServiceUnavailablerr}r(hSUhTjubaubh)r}r(hSUhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]r(h)r}r(hSXdescription=NonehY}r(h[]h\]h]]h^]ha]uhTjhN]rhmXdescription=Nonerr}r(hSUhTjubahWhubh)r}r(hSXtraceback=NonehY}r(h[]h\]h]]h^]ha]uhTjhN]rhmXtraceback=Nonerr}r(hSUhTjubahWhubeubeubh)r}r(hSUhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]r(hz)r}r(hSX5Bases: :class:`circuits.web.exceptions.HTTPException`hTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]r(hmXBases: rr}r(hSXBases: hTjubh)r}r(hSX.:class:`circuits.web.exceptions.HTTPException`rhTjhUNhWhhY}r(UreftypeXclasshhX%circuits.web.exceptions.HTTPExceptionU refdomainXpyrh^]h]]U refexplicith[]h\]ha]hjjjjjuhcNhN]rj)r}r(hSjhY}r(h[]h\]r(j jXpy-classreh]]h^]ha]uhTjhN]rhmX%circuits.web.exceptions.HTTPExceptionrr}r(hSUhTjubahWjubaubeubhz)r}r(hSX*503* `Service Unavailable`hTjhUXo/home/prologic/work/circuits/circuits/web/exceptions.py:docstring of circuits.web.exceptions.ServiceUnavailablerhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]r(j)r}r(hSX*503*hY}r(h[]h\]h]]h^]ha]uhTjhN]rhmX503rr}r(hSUhTjubahWjubhmX r}r(hSX hTjubj)r}r(hSX`Service Unavailable`hY}r(h[]h\]h]]h^]ha]uhTjhN]rhmXService Unavailablerr}r(hSUhTjubahWjubeubhz)r}r(hSXFStatus code you should return if a service is temporarily unavailable.rhTjhUjhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]rhmXFStatus code you should return if a service is temporarily unavailable.rr}r(hSjhTjubaubhq)r}r(hSUhTjhUNhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxX;code (circuits.web.exceptions.ServiceUnavailable attribute)h6UtrauhcNhdhhN]ubh)r}r(hSUhTjhUNhWhhY}r(hhXpyh^]h]]h[]h\]ha]hX attributerhjuhcNhdhhN]r (h)r }r (hSXServiceUnavailable.codehTjhUj&hWhhY}r (h^]r h6ahhXcircuits.web.exceptionsrr}rbh]]h[]h\]ha]rh6ahXServiceUnavailable.codehjhuhcNhdhhN]r(h)r}r(hSXcodehTj hUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXcoderr}r(hSUhTjubaubh)r}r(hSX = 503hTj hUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX = 503rr}r (hSUhTjubaubeubh)r!}r"(hSUhTjhUj&hWhhY}r#(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubhq)r$}r%(hSUhTjhUNhWhuhY}r&(h^]h]]h[]h\]ha]Uentries]r'(hxXBdescription (circuits.web.exceptions.ServiceUnavailable attribute)hUtr(auhcNhdhhN]ubh)r)}r*(hSUhTjhUNhWhhY}r+(hhXpyh^]h]]h[]h\]ha]hX attributer,hj,uhcNhdhhN]r-(h)r.}r/(hSXServiceUnavailable.descriptionhTj)hUj&hWhhY}r0(h^]r1hahhXcircuits.web.exceptionsr2r3}r4bh]]h[]h\]ha]r5hahXServiceUnavailable.descriptionhjhuhcNhdhhN]r6(h)r7}r8(hSX descriptionhTj.hUj&hWhhY}r9(h[]h\]h]]h^]ha]uhcNhdhhN]r:hmX descriptionr;r<}r=(hSUhTj7ubaubh)r>}r?(hSX = '

    The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

    'hTj.hUj&hWhhY}r@(h[]h\]h]]h^]ha]uhcNhdhhN]rAhmX = '

    The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

    'rBrC}rD(hSUhTj>ubaubeubh)rE}rF(hSUhTj)hUj&hWhhY}rG(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubeubeubhq)rH}rI(hSUhThQhUNhWhuhY}rJ(h^]h]]h[]h\]ha]Uentries]rK(hxXRedirectrLh>UtrMauhcNhdhhN]ubh)rN}rO(hSUhThQhUNhWhhY}rP(hhXpyh^]h]]h[]h\]ha]hX exceptionrQhjQuhcNhdhhN]rR(h)rS}rT(hSXRedirect(urls, status=None)hTjNhUhhWhhY}rU(h^]rVh>ahhXcircuits.web.exceptionsrWrX}rYbh]]h[]h\]ha]rZh>ahjLhUhuhcNhdhhN]r[(h)r\}r](hSX exception hTjShUhhWhhY}r^(h[]h\]h]]h^]ha]uhcNhdhhN]r_hmX exception r`ra}rb(hSUhTj\ubaubh)rc}rd(hSXcircuits.web.exceptions.hTjShUhhWhhY}re(h[]h\]h]]h^]ha]uhcNhdhhN]rfhmXcircuits.web.exceptions.rgrh}ri(hSUhTjcubaubh)rj}rk(hSjLhTjShUhhWhhY}rl(h[]h\]h]]h^]ha]uhcNhdhhN]rmhmXRedirectrnro}rp(hSUhTjjubaubh)rq}rr(hSUhTjShUhhWhhY}rs(h[]h\]h]]h^]ha]uhcNhdhhN]rt(h)ru}rv(hSXurlshY}rw(h[]h\]h]]h^]ha]uhTjqhN]rxhmXurlsryrz}r{(hSUhTjuubahWhubh)r|}r}(hSX status=NonehY}r~(h[]h\]h]]h^]ha]uhTjqhN]rhmX status=Nonerr}r(hSUhTj|ubahWhubeubeubh)r}r(hSUhTjNhUhhWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]r(hz)r}r(hSX5Bases: :class:`circuits.web.exceptions.HTTPException`rhTjhUhhWhhY}r(h[]h\]h]]h^]ha]uhcKhdhhN]r(hmXBases: rr}r(hSXBases: hTjubh)r}r(hSX.:class:`circuits.web.exceptions.HTTPException`rhTjhUNhWhhY}r(UreftypeXclasshhX%circuits.web.exceptions.HTTPExceptionU refdomainXpyrh^]h]]U refexplicith[]h\]ha]hjjjLjjuhcNhN]rj)r}r(hSjhY}r(h[]h\]r(j jXpy-classreh]]h^]ha]uhTjhN]rhmX%circuits.web.exceptions.HTTPExceptionrr}r(hSUhTjubahWjubaubeubhq)r}r(hSUhTjhUNhWhuhY}r(h^]h]]h[]h\]ha]Uentries]r(hxX1code (circuits.web.exceptions.Redirect attribute)h UtrauhcNhdhhN]ubh)r}r(hSUhTjhUNhWhhY}r(hhXpyh^]h]]h[]h\]ha]hX attributerhjuhcNhdhhN]r(h)r}r(hSX Redirect.coderhTjhUj&hWhhY}r(h^]rh ahhXcircuits.web.exceptionsrr}rbh]]h[]h\]ha]rh ahX Redirect.codehjLhuhcNhdhhN]r(h)r}r(hSXcodehTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmXcoderr}r(hSUhTjubaubh)r}r(hSX = 303hTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]rhmX = 303rr}r(hSUhTjubaubeubh)r}r(hSUhTjhUj&hWhhY}r(h[]h\]h]]h^]ha]uhcNhdhhN]ubeubeubeubeubahSUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rhdhU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNhjNUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingr U utf-8-sigr U_disable_configr NU id_prefixr UU tab_widthr KUerror_encodingrUUTF-8rU_sourcerhVUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledr KU dump_settingsr!NubUsymbol_footnote_startr"KUidsr#}r$(hj$hj$hjh j" h j$h jh jk h jRhjIhjhjz hj hjjhj.hjhj.hjhjh`cdocutils.nodes target r%)r&}r'(hSUhThQhUhthWUtargetr(hY}r)(h[]h^]r*h`ah]]Uismodh\]ha]uhcKhdhhN]ubhjU hj hj1 hj4 hjhjh*j hjhjh j h!j h"jxh#jh$jmh%jF h&jh'j% h(j h)jhMhQh+jmh,j'h-hh.j h0jh1j[h2j h3jHh4jh5j h6j h7jth8jPh9jFh:jh;j hjSh?jh h@j hAj hBjhCjIuUsubstitution_namesr+}r,hWhdhY}r-(h[]h^]h]]UsourcehVh\]ha]uU footnotesr.]r/Urefidsr0}r1ub.circuits-3.1.0/docs/build/doctrees/api/circuits.node.server.doctree0000644000014400001440000002256612425011104026367 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.node.server moduleqNXcircuits.node.server.ServerqX circuits.node.server.Server.hostqX circuits.node.server.Server.sendq X#circuits.node.server.Server.channelq X circuits.node.server.Server.portq uUsubstitution_defsq }q Uparse_messagesq]qcdocutils.nodes system_message q)q}q(U rawsourceqUUparentqcsphinx.addnodes desc_content q)q}q(hUhcsphinx.addnodes desc q)q}q(hUhcdocutils.nodes section q)q}q(hUhhUsourceqXE/home/prologic/work/circuits/docs/source/api/circuits.node.server.rstqUtagnameq Usectionq!U attributesq"}q#(Udupnamesq$]Uclassesq%]Ubackrefsq&]Uidsq']q((Xmodule-circuits.node.serverq)Ucircuits-node-server-moduleq*eUnamesq+]q,hauUlineq-KUdocumentq.hUchildrenq/]q0(cdocutils.nodes title q1)q2}q3(hXcircuits.node.server moduleq4hhhhh Utitleq5h"}q6(h$]h%]h&]h']h+]uh-Kh.hh/]q7cdocutils.nodes Text q8Xcircuits.node.server moduleq9q:}q;(hh4hh2ubaubcsphinx.addnodes index q<)q=}q>(hUhhhU q?h Uindexq@h"}qA(h']h&]h$]h%]h+]Uentries]qB(UsingleqCXcircuits.node.server (module)Xmodule-circuits.node.serverUtqDauh-Kh.hh/]ubcdocutils.nodes paragraph qE)qF}qG(hXServerqHhhhXV/home/prologic/work/circuits/circuits/node/server.py:docstring of circuits.node.serverqIh U paragraphqJh"}qK(h$]h%]h&]h']h+]uh-Kh.hh/]qLh8XServerqMqN}qO(hhHhhFubaubhE)qP}qQ(hX...qRhhhhIh hJh"}qS(h$]h%]h&]h']h+]uh-Kh.hh/]qTh8X...qUqV}qW(hhRhhPubaubh<)qX}qY(hUhhhNh h@h"}qZ(h']h&]h$]h%]h+]Uentries]q[(hCX&Server (class in circuits.node.server)hUtq\auh-Nh.hh/]ubheubhNh Udescq]h"}q^(Unoindexq_Udomainq`Xpyh']h&]h$]h%]h+]UobjtypeqaXclassqbUdesctypeqchbuh-Nh.hh/]qd(csphinx.addnodes desc_signature qe)qf}qg(hX&Server(bind, channel='node', **kwargs)hhhU qhh Udesc_signatureqih"}qj(h']qkhaUmoduleqlcdocutils.nodes reprunicode qmXcircuits.node.serverqnqo}qpbh&]h$]h%]h+]qqhaUfullnameqrXServerqsUclassqtUUfirstquuh-Nh.hh/]qv(csphinx.addnodes desc_annotation qw)qx}qy(hXclass hhfhhhh Udesc_annotationqzh"}q{(h$]h%]h&]h']h+]uh-Nh.hh/]q|h8Xclass q}q~}q(hUhhxubaubcsphinx.addnodes desc_addname q)q}q(hXcircuits.node.server.hhfhhhh U desc_addnameqh"}q(h$]h%]h&]h']h+]uh-Nh.hh/]qh8Xcircuits.node.server.qq}q(hUhhubaubcsphinx.addnodes desc_name q)q}q(hhshhfhhhh U desc_nameqh"}q(h$]h%]h&]h']h+]uh-Nh.hh/]qh8XServerqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhfhhhh Udesc_parameterlistqh"}q(h$]h%]h&]h']h+]uh-Nh.hh/]q(csphinx.addnodes desc_parameter q)q}q(hXbindh"}q(h$]h%]h&]h']h+]uhhh/]qh8Xbindqq}q(hUhhubah Udesc_parameterqubh)q}q(hXchannel='node'h"}q(h$]h%]h&]h']h+]uhhh/]qh8Xchannel='node'qq}q(hUhhubah hubh)q}q(hX**kwargsh"}q(h$]h%]h&]h']h+]uhhh/]qh8X**kwargsqq}q(hUhhubah hubeubeubheubhhhh U desc_contentqh"}q(h$]h%]h&]h']h+]uh-Nh.hh/]q(hE)q}q(hX6Bases: :class:`circuits.core.components.BaseComponent`qhhhU qh hJh"}q(h$]h%]h&]h']h+]uh-Kh.hh/]q(h8XBases: qq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX/:class:`circuits.core.components.BaseComponent`qhhhNh U pending_xrefqh"}q(UreftypeXclassUrefwarnqU reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqh']h&]U refexplicith$]h%]h+]UrefdocqXapi/circuits.node.serverqUpy:classqhsU py:moduleqXcircuits.node.serverquh-Nh/]qcdocutils.nodes literal q)q}q(hhh"}q(h$]h%]q(UxrefqhXpy-classqeh&]h']h+]uhhh/]qh8X&circuits.core.components.BaseComponentq҅q}q(hUhhubah UliteralqubaubeubhE)q}q(hXServerqhhhX]/home/prologic/work/circuits/circuits/node/server.py:docstring of circuits.node.server.Serverqh hJh"}q(h$]h%]h&]h']h+]uh-Kh.hh/]qh8XServerq܅q}q(hhhhubaubhE)q}q(hX...qhhhhh hJh"}q(h$]h%]h&]h']h+]uh-Kh.hh/]qh8X...q䅁q}q(hhhhubaubh<)q}q(hUhhhNh h@h"}q(h']h&]h$]h%]h+]Uentries]q(hCX/channel (circuits.node.server.Server attribute)h Utqauh-Nh.hh/]ubh)q}q(hUhhhNh h]h"}q(h_h`Xpyh']h&]h$]h%]h+]haX attributeqhchuh-Nh.hh/]q(he)q}q(hXServer.channelhhhU qh hih"}q(h']qh ahlhmXcircuits.node.serverqq}qbh&]h$]h%]h+]qh ahrXServer.channelhthshuuh-Nh.hh/]q(h)q}q(hXchannelhhhhh hh"}q(h$]h%]h&]h']h+]uh-Nh.hh/]qh8Xchannelqr}r(hUhhubaubhw)r}r(hX = 'node'hhhhh hzh"}r(h$]h%]h&]h']h+]uh-Nh.hh/]rh8X = 'node'rr}r(hUhjubaubeubh)r }r (hUhhhhh hh"}r (h$]h%]h&]h']h+]uh-Nh.hh/]ubeubh<)r }r (hUhhhNh h@h"}r(h']h&]h$]h%]h+]Uentries]r(hCX+send() (circuits.node.server.Server method)h Utrauh-Nh.hh/]ubh)r}r(hUhhhNh h]h"}r(h_h`Xpyh']h&]h$]h%]h+]haXmethodrhcjuh-Nh.hh/]r(he)r}r(hXServer.send(v)hjhhhh hih"}r(h']rh ahlhmXcircuits.node.serverrr}rbh&]h$]h%]h+]rh ahrX Server.sendhthshuuh-Nh.hh/]r(h)r}r (hXsendhjhhhh hh"}r!(h$]h%]h&]h']h+]uh-Nh.hh/]r"h8Xsendr#r$}r%(hUhjubaubh)r&}r'(hUhjhhhh hh"}r((h$]h%]h&]h']h+]uh-Nh.hh/]r)h)r*}r+(hXvh"}r,(h$]h%]h&]h']h+]uhj&h/]r-h8Xvr.}r/(hUhj*ubah hubaubeubh)r0}r1(hUhjhhhh hh"}r2(h$]h%]h&]h']h+]uh-Nh.hh/]ubeubh<)r3}r4(hUhhhNh h@h"}r5(h']h&]h$]h%]h+]Uentries]r6(hCX,host (circuits.node.server.Server attribute)hUtr7auh-Nh.hh/]ubh)r8}r9(hUhhhNh h]h"}r:(h_h`Xpyh']h&]h$]h%]h+]haX attributer;hcj;uh-Nh.hh/]r<(he)r=}r>(hX Server.hosthj8hhhh hih"}r?(h']r@hahlhmXcircuits.node.serverrArB}rCbh&]h$]h%]h+]rDhahrX Server.hosththshuuh-Nh.hh/]rEh)rF}rG(hXhosthj=hhhh hh"}rH(h$]h%]h&]h']h+]uh-Nh.hh/]rIh8XhostrJrK}rL(hUhjFubaubaubh)rM}rN(hUhj8hhhh hh"}rO(h$]h%]h&]h']h+]uh-Nh.hh/]ubeubh<)rP}rQ(hUhhhNh h@h"}rR(h']h&]h$]h%]h+]Uentries]rS(hCX,port (circuits.node.server.Server attribute)h UtrTauh-Nh.hh/]ubh)rU}rV(hUhhhNh h]h"}rW(h_h`Xpyh']h&]h$]h%]h+]haX attributerXhcjXuh-Nh.hh/]rY(he)rZ}r[(hX Server.portr\hjUhhhh hih"}r](h']r^h ahlhmXcircuits.node.serverr_r`}rabh&]h$]h%]h+]rbh ahrX Server.porththshuuh-Nh.hh/]rch)rd}re(hXporthjZhhhh hh"}rf(h$]h%]h&]h']h+]uh-Nh.hh/]rgh8Xportrhri}rj(hUhjdubaubaubh)rk}rl(hUhjUhhhh hh"}rm(h$]h%]h&]h']h+]uh-Nh.hh/]ubeubeubhhh Usystem_messagernh"}ro(h$]UlevelKh']h&]Usourcehh%]h+]UlineKUtypeUINFOrpuh-Kh.hh/]rqhE)rr}rs(hUh"}rt(h$]h%]h&]h']h+]uhhh/]ruh8XeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.rvrw}rx(hUhjrubah hJubaubaUcurrent_sourceryNU decorationrzNUautofootnote_startr{KUnameidsr|}r}(hh*hhhhh h h h h h uh/]r~hahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh.hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh5NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(h*hhhfhj=h jh)cdocutils.nodes target r)r}r(hUhhhh?h Utargetrh"}r(h$]h']rh)ah&]Uismodh%]h+]uh-Kh.hh/]ubh hh jZuUsubstitution_namesr}rh h.h"}r(h$]h']h&]Usourcehh%]h+]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.net.sockets.doctree0000644000014400001440000016610012425011103026365 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X%circuits.net.sockets.UNIXClient.readyqXcircuits.net.sockets.TCPClientqX%circuits.net.sockets.Server.connectedqX)circuits.net.sockets.parse_ipv6_parameterq X$circuits.net.sockets.UDPServer.writeq X!circuits.net.sockets.Server.writeq X,circuits.net.sockets.UDPServer.socket_familyq X circuits.net.sockets.Server.hostq X-circuits.net.sockets.TCP6Server.socket_familyqX!circuits.net.sockets.Server.closeqX4circuits.net.sockets.TCP6Server.parse_bind_parameterqX4circuits.net.sockets.TCP6Client.parse_bind_parameterqXcircuits.net.sockets.TCP6ServerqX&circuits.net.sockets.TCPClient.connectqX4circuits.net.sockets.UDP6Server.parse_bind_parameterqX-circuits.net.sockets.UDP6Server.socket_familyqX'circuits.net.sockets.UNIXClient.connectqX(circuits.net.sockets.UDPServer.broadcastqX3circuits.net.sockets.TCPServer.parse_bind_parameterqX#circuits.net.sockets.Server.channelqXcircuits.net.sockets.UNIXServerqX0circuits.net.sockets.Server.parse_bind_parameterqXcircuits.net.sockets moduleqNXcircuits.net.sockets.TCPServerqX,circuits.net.sockets.TCPClient.socket_familyqX#circuits.net.sockets.Client.channelqX!circuits.net.sockets.Client.closeq X!circuits.net.sockets.Client.writeq!Xcircuits.net.sockets.Pipeq"X)circuits.net.sockets.parse_ipv4_parameterq#Xcircuits.net.sockets.TCP6Clientq$Xcircuits.net.sockets.Serverq%Xcircuits.net.sockets.UDP6Clientq&X0circuits.net.sockets.Client.parse_bind_parameterq'X$circuits.net.sockets.UDPServer.closeq(Xcircuits.net.sockets.Clientq)Xcircuits.net.sockets.UNIXClientq*Xcircuits.net.sockets.UDP6Serverq+X circuits.net.sockets.Server.portq,Xcircuits.net.sockets.UDPServerq-X%circuits.net.sockets.Client.connectedq.Xcircuits.net.sockets.UDPClientq/X-circuits.net.sockets.TCP6Client.socket_familyq0X,circuits.net.sockets.TCPServer.socket_familyq1uUsubstitution_defsq2}q3Uparse_messagesq4]q5Ucurrent_sourceq6NU decorationq7NUautofootnote_startq8KUnameidsq9}q:(hhhhhhh h h h h h h h h h hhhhhhhhhhhhhhhhhhhhhhhhhhhhhUcircuits-net-sockets-moduleq;hhhhhhh h h!h!h"h"h#h#h$h$h%h%h&h&h'h'h(h(h)h)h*h*h+h+h,h,h-h-h.h.h/h/h0h0h1h1uUchildrenq<]q=cdocutils.nodes section q>)q?}q@(U rawsourceqAUUparentqBhUsourceqCXE/home/prologic/work/circuits/docs/source/api/circuits.net.sockets.rstqDUtagnameqEUsectionqFU attributesqG}qH(UdupnamesqI]UclassesqJ]UbackrefsqK]UidsqL]qM(Xmodule-circuits.net.socketsqNh;eUnamesqO]qPhauUlineqQKUdocumentqRhh<]qS(cdocutils.nodes title qT)qU}qV(hAXcircuits.net.sockets moduleqWhBh?hChDhEUtitleqXhG}qY(hI]hJ]hK]hL]hO]uhQKhRhh<]qZcdocutils.nodes Text q[Xcircuits.net.sockets moduleq\q]}q^(hAhWhBhUubaubcsphinx.addnodes index q_)q`}qa(hAUhBh?hCU qbhEUindexqchG}qd(hL]hK]hI]hJ]hO]Uentries]qe(UsingleqfXcircuits.net.sockets (module)Xmodule-circuits.net.socketsUtqgauhQKhRhh<]ubcdocutils.nodes paragraph qh)qi}qj(hAXSocket ComponentsqkhBh?hCXV/home/prologic/work/circuits/circuits/net/sockets.py:docstring of circuits.net.socketsqlhEU paragraphqmhG}qn(hI]hJ]hK]hL]hO]uhQKhRhh<]qoh[XSocket Componentsqpqq}qr(hAhkhBhiubaubhh)qs}qt(hAXGThis module contains various Socket Components for use with Networking.quhBh?hChlhEhmhG}qv(hI]hJ]hK]hL]hO]uhQKhRhh<]qwh[XGThis module contains various Socket Components for use with Networking.qxqy}qz(hAhuhBhsubaubh_)q{}q|(hAUhBh?hCNhEhchG}q}(hL]hK]hI]hJ]hO]Uentries]q~(hfX&Client (class in circuits.net.sockets)h)UtqauhQNhRhh<]ubcsphinx.addnodes desc q)q}q(hAUhBh?hCNhEUdescqhG}q(UnoindexqUdomainqXpyhL]hK]hI]hJ]hO]UobjtypeqXclassqUdesctypeqhuhQNhRhh<]q(csphinx.addnodes desc_signature q)q}q(hAX1Client(bind=None, bufsize=4096, channel='client')hBhhCU qhEUdesc_signatureqhG}q(hL]qh)aUmoduleqcdocutils.nodes reprunicode qXcircuits.net.socketsqq}qbhK]hI]hJ]hO]qh)aUfullnameqXClientqUclassqUUfirstquhQNhRhh<]q(csphinx.addnodes desc_annotation q)q}q(hAXclass hBhhChhEUdesc_annotationqhG}q(hI]hJ]hK]hL]hO]uhQNhRhh<]qh[Xclass qq}q(hAUhBhubaubcsphinx.addnodes desc_addname q)q}q(hAXcircuits.net.sockets.hBhhChhEU desc_addnameqhG}q(hI]hJ]hK]hL]hO]uhQNhRhh<]qh[Xcircuits.net.sockets.qq}q(hAUhBhubaubcsphinx.addnodes desc_name q)q}q(hAhhBhhChhEU desc_nameqhG}q(hI]hJ]hK]hL]hO]uhQNhRhh<]qh[XClientqq}q(hAUhBhubaubcsphinx.addnodes desc_parameterlist q)q}q(hAUhBhhChhEUdesc_parameterlistqhG}q(hI]hJ]hK]hL]hO]uhQNhRhh<]q(csphinx.addnodes desc_parameter q)q}q(hAX bind=NonehG}q(hI]hJ]hK]hL]hO]uhBhh<]qh[X bind=NoneqÅq}q(hAUhBhubahEUdesc_parameterqubh)q}q(hAX bufsize=4096hG}q(hI]hJ]hK]hL]hO]uhBhh<]qh[X bufsize=4096q˅q}q(hAUhBhubahEhubh)q}q(hAXchannel='client'hG}q(hI]hJ]hK]hL]hO]uhBhh<]qh[Xchannel='client'q҅q}q(hAUhBhubahEhubeubeubcsphinx.addnodes desc_content q)q}q(hAUhBhhChhEU desc_contentqhG}q(hI]hJ]hK]hL]hO]uhQNhRhh<]q(hh)q}q(hAX6Bases: :class:`circuits.core.components.BaseComponent`hBhhCU qhEhmhG}q(hI]hJ]hK]hL]hO]uhQKhRhh<]q(h[XBases: qq}q(hAXBases: hBhubcsphinx.addnodes pending_xref q)q}q(hAX/:class:`circuits.core.components.BaseComponent`qhBhhCNhEU pending_xrefqhG}q(UreftypeXclassUrefwarnqU reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqhL]hK]U refexplicithI]hJ]hO]UrefdocqXapi/circuits.net.socketsqUpy:classqhU py:moduleqXcircuits.net.socketsquhQNh<]qcdocutils.nodes literal q)q}q(hAhhG}q(hI]hJ]q(UxrefqhXpy-classqehK]hL]hO]uhBhh<]qh[X&circuits.core.components.BaseComponentqq}q(hAUhBhubahEUliteralqubaubeubh_)q}q(hAUhBhhCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX/channel (circuits.net.sockets.Client attribute)hUtrauhQNhRhh<]ubh)r}r(hAUhBhhCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hX attributerhjuhQNhRhh<]r(h)r}r (hAXClient.channelhBjhCU r hEhhG}r (hL]r hahhXcircuits.net.socketsr r}rbhK]hI]hJ]hO]rhahXClient.channelhhhuhQNhRhh<]r(h)r}r(hAXchannelhBjhCj hEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xchannelrr}r(hAUhBjubaubh)r}r(hAX = 'client'hBjhCj hEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[X = 'client'rr}r(hAUhBjubaubeubh)r }r!(hAUhBjhCj hEhhG}r"(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)r#}r$(hAUhBhhCNhEhchG}r%(hL]hK]hI]hJ]hO]Uentries]r&(hfX;parse_bind_parameter() (circuits.net.sockets.Client method)h'Utr'auhQNhRhh<]ubh)r(}r)(hAUhBhhCNhEhhG}r*(hhXpyhL]hK]hI]hJ]hO]hXmethodr+hj+uhQNhRhh<]r,(h)r-}r.(hAX+Client.parse_bind_parameter(bind_parameter)hBj(hChhEhhG}r/(hL]r0h'ahhXcircuits.net.socketsr1r2}r3bhK]hI]hJ]hO]r4h'ahXClient.parse_bind_parameterhhhuhQNhRhh<]r5(h)r6}r7(hAXparse_bind_parameterhBj-hChhEhhG}r8(hI]hJ]hK]hL]hO]uhQNhRhh<]r9h[Xparse_bind_parameterr:r;}r<(hAUhBj6ubaubh)r=}r>(hAUhBj-hChhEhhG}r?(hI]hJ]hK]hL]hO]uhQNhRhh<]r@h)rA}rB(hAXbind_parameterhG}rC(hI]hJ]hK]hL]hO]uhBj=h<]rDh[Xbind_parameterrErF}rG(hAUhBjAubahEhubaubeubh)rH}rI(hAUhBj(hChhEhhG}rJ(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)rK}rL(hAUhBhhCNhEhchG}rM(hL]hK]hI]hJ]hO]Uentries]rN(hfX1connected (circuits.net.sockets.Client attribute)h.UtrOauhQNhRhh<]ubh)rP}rQ(hAUhBhhCNhEhhG}rR(hhXpyhL]hK]hI]hJ]hO]hX attributerShjSuhQNhRhh<]rT(h)rU}rV(hAXClient.connectedhBjPhChhEhhG}rW(hL]rXh.ahhXcircuits.net.socketsrYrZ}r[bhK]hI]hJ]hO]r\h.ahXClient.connectedhhhuhQNhRhh<]r]h)r^}r_(hAX connectedhBjUhChhEhhG}r`(hI]hJ]hK]hL]hO]uhQNhRhh<]rah[X connectedrbrc}rd(hAUhBj^ubaubaubh)re}rf(hAUhBjPhChhEhhG}rg(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)rh}ri(hAUhBhhCNhEhchG}rj(hL]hK]hI]hJ]hO]Uentries]rk(hfX,close() (circuits.net.sockets.Client method)h UtrlauhQNhRhh<]ubh)rm}rn(hAUhBhhCNhEhhG}ro(hhXpyhL]hK]hI]hJ]hO]hXmethodrphjpuhQNhRhh<]rq(h)rr}rs(hAXClient.close()hBjmhChhEhhG}rt(hL]ruh ahhXcircuits.net.socketsrvrw}rxbhK]hI]hJ]hO]ryh ahX Client.closehhhuhQNhRhh<]rz(h)r{}r|(hAXclosehBjrhChhEhhG}r}(hI]hJ]hK]hL]hO]uhQNhRhh<]r~h[Xcloserr}r(hAUhBj{ubaubh)r}r(hAUhBjrhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh)r}r(hAUhBjmhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)r}r(hAUhBhhCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX,write() (circuits.net.sockets.Client method)h!UtrauhQNhRhh<]ubh)r}r(hAUhBhhCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hXmethodrhjuhQNhRhh<]r(h)r}r(hAXClient.write(data)hBjhChhEhhG}r(hL]rh!ahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rh!ahX Client.writehhhuhQNhRhh<]r(h)r}r(hAXwritehBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xwriterr}r(hAUhBjubaubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh)r}r(hAXdatahG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[Xdatarr}r(hAUhBjubahEhubaubeubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubeubeubh_)r}r(hAUhBh?hCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX)TCPClient (class in circuits.net.sockets)hUtrauhQNhRhh<]ubh)r}r(hAUhBh?hCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hXclassrhjuhQNhRhh<]r(h)r}r(hAX4TCPClient(bind=None, bufsize=4096, channel='client')hBjhChhEhhG}r(hL]rhahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rhahX TCPClientrhUhuhQNhRhh<]r(h)r}r(hAXclass hBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xclass rr}r(hAUhBjubaubh)r}r(hAXcircuits.net.sockets.hBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xcircuits.net.sockets.rr}r(hAUhBjubaubh)r}r(hAjhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[X TCPClientrr}r(hAUhBjubaubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]r(h)r}r(hAX bind=NonehG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[X bind=Nonerr}r(hAUhBjubahEhubh)r}r(hAX bufsize=4096hG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[X bufsize=4096rr}r(hAUhBjubahEhubh)r}r(hAXchannel='client'hG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[Xchannel='client'rr}r(hAUhBjubahEhubeubeubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]r(hh)r}r(hAX+Bases: :class:`circuits.net.sockets.Client`hBjhChhEhmhG}r(hI]hJ]hK]hL]hO]uhQKhRhh<]r(h[XBases: rr}r(hAXBases: hBjubh)r}r(hAX$:class:`circuits.net.sockets.Client`rhBjhCNhEhhG}r(UreftypeXclasshhXcircuits.net.sockets.ClientU refdomainXpyrhL]hK]U refexplicithI]hJ]hO]hhhjhhuhQNh<]rh)r}r(hAjhG}r(hI]hJ]r(hjXpy-classrehK]hL]hO]uhBjh<]rh[Xcircuits.net.sockets.Clientr r }r (hAUhBjubahEhubaubeubh_)r }r (hAUhBjhCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX8socket_family (circuits.net.sockets.TCPClient attribute)hUtrauhQNhRhh<]ubh)r}r(hAUhBjhCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hX attributerhjuhQNhRhh<]r(h)r}r(hAXTCPClient.socket_familyhBjhCj hEhhG}r(hL]rhahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rhahXTCPClient.socket_familyhjhuhQNhRhh<]r(h)r}r (hAX socket_familyhBjhCj hEhhG}r!(hI]hJ]hK]hL]hO]uhQNhRhh<]r"h[X socket_familyr#r$}r%(hAUhBjubaubh)r&}r'(hAX = 2hBjhCj hEhhG}r((hI]hJ]hK]hL]hO]uhQNhRhh<]r)h[X = 2r*r+}r,(hAUhBj&ubaubeubh)r-}r.(hAUhBjhCj hEhhG}r/(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)r0}r1(hAUhBjhCNhEhchG}r2(hL]hK]hI]hJ]hO]Uentries]r3(hfX1connect() (circuits.net.sockets.TCPClient method)hUtr4auhQNhRhh<]ubh)r5}r6(hAUhBjhCNhEhhG}r7(hhXpyhL]hK]hI]hJ]hO]hXmethodr8hj8uhQNhRhh<]r9(h)r:}r;(hAX5TCPClient.connect(host, port, secure=False, **kwargs)hBj5hChhEhhG}r<(hL]r=hahhXcircuits.net.socketsr>r?}r@bhK]hI]hJ]hO]rAhahXTCPClient.connecthjhuhQNhRhh<]rB(h)rC}rD(hAXconnecthBj:hChhEhhG}rE(hI]hJ]hK]hL]hO]uhQNhRhh<]rFh[XconnectrGrH}rI(hAUhBjCubaubh)rJ}rK(hAUhBj:hChhEhhG}rL(hI]hJ]hK]hL]hO]uhQNhRhh<]rM(h)rN}rO(hAXhosthG}rP(hI]hJ]hK]hL]hO]uhBjJh<]rQh[XhostrRrS}rT(hAUhBjNubahEhubh)rU}rV(hAXporthG}rW(hI]hJ]hK]hL]hO]uhBjJh<]rXh[XportrYrZ}r[(hAUhBjUubahEhubh)r\}r](hAX secure=FalsehG}r^(hI]hJ]hK]hL]hO]uhBjJh<]r_h[X secure=Falser`ra}rb(hAUhBj\ubahEhubh)rc}rd(hAX**kwargshG}re(hI]hJ]hK]hL]hO]uhBjJh<]rfh[X**kwargsrgrh}ri(hAUhBjcubahEhubeubeubh)rj}rk(hAUhBj5hChhEhhG}rl(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubeubeubh_)rm}rn(hAUhBh?hCNhEhchG}ro(hL]hK]hI]hJ]hO]Uentries]rp(hfX*TCP6Client (class in circuits.net.sockets)h$UtrqauhQNhRhh<]ubh)rr}rs(hAUhBh?hCNhEhhG}rt(hhXpyhL]hK]hI]hJ]hO]hXclassruhjuuhQNhRhh<]rv(h)rw}rx(hAX5TCP6Client(bind=None, bufsize=4096, channel='client')hBjrhChhEhhG}ry(hL]rzh$ahhXcircuits.net.socketsr{r|}r}bhK]hI]hJ]hO]r~h$ahX TCP6ClientrhUhuhQNhRhh<]r(h)r}r(hAXclass hBjwhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xclass rr}r(hAUhBjubaubh)r}r(hAXcircuits.net.sockets.hBjwhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xcircuits.net.sockets.rr}r(hAUhBjubaubh)r}r(hAjhBjwhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[X TCP6Clientrr}r(hAUhBjubaubh)r}r(hAUhBjwhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]r(h)r}r(hAX bind=NonehG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[X bind=Nonerr}r(hAUhBjubahEhubh)r}r(hAX bufsize=4096hG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[X bufsize=4096rr}r(hAUhBjubahEhubh)r}r(hAXchannel='client'hG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[Xchannel='client'rr}r(hAUhBjubahEhubeubeubh)r}r(hAUhBjrhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]r(hh)r}r(hAX.Bases: :class:`circuits.net.sockets.TCPClient`hBjhChhEhmhG}r(hI]hJ]hK]hL]hO]uhQKhRhh<]r(h[XBases: rr}r(hAXBases: hBjubh)r}r(hAX':class:`circuits.net.sockets.TCPClient`rhBjhCNhEhhG}r(UreftypeXclasshhXcircuits.net.sockets.TCPClientU refdomainXpyrhL]hK]U refexplicithI]hJ]hO]hhhjhhuhQNh<]rh)r}r(hAjhG}r(hI]hJ]r(hjXpy-classrehK]hL]hO]uhBjh<]rh[Xcircuits.net.sockets.TCPClientrr}r(hAUhBjubahEhubaubeubh_)r}r(hAUhBjhCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX9socket_family (circuits.net.sockets.TCP6Client attribute)h0UtrauhQNhRhh<]ubh)r}r(hAUhBjhCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hX attributerhjuhQNhRhh<]r(h)r}r(hAXTCP6Client.socket_familyhBjhCj hEhhG}r(hL]rh0ahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rh0ahXTCP6Client.socket_familyhjhuhQNhRhh<]r(h)r}r(hAX socket_familyhBjhCj hEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[X socket_familyrr}r(hAUhBjubaubh)r}r(hAX = 10hBjhCj hEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[X = 10rr}r(hAUhBjubaubeubh)r}r(hAUhBjhCj hEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)r}r(hAUhBjhCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX?parse_bind_parameter() (circuits.net.sockets.TCP6Client method)hUtrauhQNhRhh<]ubh)r}r(hAUhBjhCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hXmethodrhjuhQNhRhh<]r(h)r}r(hAX/TCP6Client.parse_bind_parameter(bind_parameter)hBjhChhEhhG}r(hL]rhahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rhahXTCP6Client.parse_bind_parameterhjhuhQNhRhh<]r(h)r}r(hAXparse_bind_parameterhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xparse_bind_parameterrr}r(hAUhBjubaubh)r}r(hAUhBjhChhEhhG}r (hI]hJ]hK]hL]hO]uhQNhRhh<]r h)r }r (hAXbind_parameterhG}r (hI]hJ]hK]hL]hO]uhBjh<]rh[Xbind_parameterrr}r(hAUhBj ubahEhubaubeubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubeubeubh_)r}r(hAUhBh?hCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX*UNIXClient (class in circuits.net.sockets)h*UtrauhQNhRhh<]ubh)r}r(hAUhBh?hCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hXclassrhjuhQNhRhh<]r(h)r}r (hAX5UNIXClient(bind=None, bufsize=4096, channel='client')hBjhChhEhhG}r!(hL]r"h*ahhXcircuits.net.socketsr#r$}r%bhK]hI]hJ]hO]r&h*ahX UNIXClientr'hUhuhQNhRhh<]r((h)r)}r*(hAXclass hBjhChhEhhG}r+(hI]hJ]hK]hL]hO]uhQNhRhh<]r,h[Xclass r-r.}r/(hAUhBj)ubaubh)r0}r1(hAXcircuits.net.sockets.hBjhChhEhhG}r2(hI]hJ]hK]hL]hO]uhQNhRhh<]r3h[Xcircuits.net.sockets.r4r5}r6(hAUhBj0ubaubh)r7}r8(hAj'hBjhChhEhhG}r9(hI]hJ]hK]hL]hO]uhQNhRhh<]r:h[X UNIXClientr;r<}r=(hAUhBj7ubaubh)r>}r?(hAUhBjhChhEhhG}r@(hI]hJ]hK]hL]hO]uhQNhRhh<]rA(h)rB}rC(hAX bind=NonehG}rD(hI]hJ]hK]hL]hO]uhBj>h<]rEh[X bind=NonerFrG}rH(hAUhBjBubahEhubh)rI}rJ(hAX bufsize=4096hG}rK(hI]hJ]hK]hL]hO]uhBj>h<]rLh[X bufsize=4096rMrN}rO(hAUhBjIubahEhubh)rP}rQ(hAXchannel='client'hG}rR(hI]hJ]hK]hL]hO]uhBj>h<]rSh[Xchannel='client'rTrU}rV(hAUhBjPubahEhubeubeubh)rW}rX(hAUhBjhChhEhhG}rY(hI]hJ]hK]hL]hO]uhQNhRhh<]rZ(hh)r[}r\(hAX+Bases: :class:`circuits.net.sockets.Client`hBjWhChhEhmhG}r](hI]hJ]hK]hL]hO]uhQKhRhh<]r^(h[XBases: r_r`}ra(hAXBases: hBj[ubh)rb}rc(hAX$:class:`circuits.net.sockets.Client`rdhBj[hCNhEhhG}re(UreftypeXclasshhXcircuits.net.sockets.ClientU refdomainXpyrfhL]hK]U refexplicithI]hJ]hO]hhhj'hhuhQNh<]rgh)rh}ri(hAjdhG}rj(hI]hJ]rk(hjfXpy-classrlehK]hL]hO]uhBjbh<]rmh[Xcircuits.net.sockets.Clientrnro}rp(hAUhBjhubahEhubaubeubh_)rq}rr(hAUhBjWhCNhEhchG}rs(hL]hK]hI]hJ]hO]Uentries]rt(hfX0ready() (circuits.net.sockets.UNIXClient method)hUtruauhQNhRhh<]ubh)rv}rw(hAUhBjWhCNhEhhG}rx(hhXpyhL]hK]hI]hJ]hO]hXmethodryhjyuhQNhRhh<]rz(h)r{}r|(hAXUNIXClient.ready(component)hBjvhChhEhhG}r}(hL]r~hahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rhahXUNIXClient.readyhj'huhQNhRhh<]r(h)r}r(hAXreadyhBj{hChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xreadyrr}r(hAUhBjubaubh)r}r(hAUhBj{hChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh)r}r(hAX componenthG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[X componentrr}r(hAUhBjubahEhubaubeubh)r}r(hAUhBjvhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)r}r(hAUhBjWhCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX2connect() (circuits.net.sockets.UNIXClient method)hUtrauhQNhRhh<]ubh)r}r(hAUhBjWhCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hXmethodrhjuhQNhRhh<]r(h)r}r(hAX0UNIXClient.connect(path, secure=False, **kwargs)hBjhChhEhhG}r(hL]rhahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rhahXUNIXClient.connecthj'huhQNhRhh<]r(h)r}r(hAXconnecthBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xconnectrr}r(hAUhBjubaubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]r(h)r}r(hAXpathhG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[Xpathrr}r(hAUhBjubahEhubh)r}r(hAX secure=FalsehG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[X secure=Falserr}r(hAUhBjubahEhubh)r}r(hAX**kwargshG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[X**kwargsrr}r(hAUhBjubahEhubeubeubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubeubeubh_)r}r(hAUhBh?hCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX&Server (class in circuits.net.sockets)h%UtrauhQNhRhh<]ubh)r}r(hAUhBh?hCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hXclassrhjuhQNhRhh<]r(h)r}r(hAXRServer(bind, secure=False, backlog=5000, bufsize=4096, channel='server', **kwargs)hBjhChhEhhG}r(hL]rh%ahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rh%ahXServerrhUhuhQNhRhh<]r(h)r}r(hAXclass hBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xclass rr}r(hAUhBjubaubh)r}r(hAXcircuits.net.sockets.hBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xcircuits.net.sockets.rr}r(hAUhBjubaubh)r}r(hAjhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[XServerrr}r(hAUhBjubaubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]r(h)r}r(hAXbindhG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[Xbindrr}r(hAUhBjubahEhubh)r}r(hAX secure=FalsehG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[X secure=Falserr}r (hAUhBjubahEhubh)r }r (hAX backlog=5000hG}r (hI]hJ]hK]hL]hO]uhBjh<]r h[X backlog=5000rr}r(hAUhBj ubahEhubh)r}r(hAX bufsize=4096hG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[X bufsize=4096rr}r(hAUhBjubahEhubh)r}r(hAXchannel='server'hG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[Xchannel='server'rr}r(hAUhBjubahEhubh)r}r (hAX**kwargshG}r!(hI]hJ]hK]hL]hO]uhBjh<]r"h[X**kwargsr#r$}r%(hAUhBjubahEhubeubeubh)r&}r'(hAUhBjhChhEhhG}r((hI]hJ]hK]hL]hO]uhQNhRhh<]r)(hh)r*}r+(hAX6Bases: :class:`circuits.core.components.BaseComponent`hBj&hChhEhmhG}r,(hI]hJ]hK]hL]hO]uhQKhRhh<]r-(h[XBases: r.r/}r0(hAXBases: hBj*ubh)r1}r2(hAX/:class:`circuits.core.components.BaseComponent`r3hBj*hCNhEhhG}r4(UreftypeXclasshhX&circuits.core.components.BaseComponentU refdomainXpyr5hL]hK]U refexplicithI]hJ]hO]hhhjhhuhQNh<]r6h)r7}r8(hAj3hG}r9(hI]hJ]r:(hj5Xpy-classr;ehK]hL]hO]uhBj1h<]r<h[X&circuits.core.components.BaseComponentr=r>}r?(hAUhBj7ubahEhubaubeubh_)r@}rA(hAUhBj&hCNhEhchG}rB(hL]hK]hI]hJ]hO]Uentries]rC(hfX/channel (circuits.net.sockets.Server attribute)hUtrDauhQNhRhh<]ubh)rE}rF(hAUhBj&hCNhEhhG}rG(hhXpyhL]hK]hI]hJ]hO]hX attributerHhjHuhQNhRhh<]rI(h)rJ}rK(hAXServer.channelhBjEhCj hEhhG}rL(hL]rMhahhXcircuits.net.socketsrNrO}rPbhK]hI]hJ]hO]rQhahXServer.channelhjhuhQNhRhh<]rR(h)rS}rT(hAXchannelhBjJhCj hEhhG}rU(hI]hJ]hK]hL]hO]uhQNhRhh<]rVh[XchannelrWrX}rY(hAUhBjSubaubh)rZ}r[(hAX = 'server'hBjJhCj hEhhG}r\(hI]hJ]hK]hL]hO]uhQNhRhh<]r]h[X = 'server'r^r_}r`(hAUhBjZubaubeubh)ra}rb(hAUhBjEhCj hEhhG}rc(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)rd}re(hAUhBj&hCNhEhchG}rf(hL]hK]hI]hJ]hO]Uentries]rg(hfX;parse_bind_parameter() (circuits.net.sockets.Server method)hUtrhauhQNhRhh<]ubh)ri}rj(hAUhBj&hCNhEhhG}rk(hhXpyhL]hK]hI]hJ]hO]hXmethodrlhjluhQNhRhh<]rm(h)rn}ro(hAX+Server.parse_bind_parameter(bind_parameter)hBjihChhEhhG}rp(hL]rqhahhXcircuits.net.socketsrrrs}rtbhK]hI]hJ]hO]ruhahXServer.parse_bind_parameterhjhuhQNhRhh<]rv(h)rw}rx(hAXparse_bind_parameterhBjnhChhEhhG}ry(hI]hJ]hK]hL]hO]uhQNhRhh<]rzh[Xparse_bind_parameterr{r|}r}(hAUhBjwubaubh)r~}r(hAUhBjnhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh)r}r(hAXbind_parameterhG}r(hI]hJ]hK]hL]hO]uhBj~h<]rh[Xbind_parameterrr}r(hAUhBjubahEhubaubeubh)r}r(hAUhBjihChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)r}r(hAUhBj&hCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX1connected (circuits.net.sockets.Server attribute)hUtrauhQNhRhh<]ubh)r}r(hAUhBj&hCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hX attributerhjuhQNhRhh<]r(h)r}r(hAXServer.connectedhBjhChhEhhG}r(hL]rhahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rhahXServer.connectedhjhuhQNhRhh<]rh)r}r(hAX connectedhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[X connectedrr}r(hAUhBjubaubaubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)r}r(hAUhBj&hCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX,host (circuits.net.sockets.Server attribute)h UtrauhQNhRhh<]ubh)r}r(hAUhBj&hCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hX attributerhjuhQNhRhh<]r(h)r}r(hAX Server.hosthBjhChhEhhG}r(hL]rh ahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rh ahX Server.hosthjhuhQNhRhh<]rh)r}r(hAXhosthBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xhostrr}r(hAUhBjubaubaubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)r}r(hAUhBj&hCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX,port (circuits.net.sockets.Server attribute)h,UtrauhQNhRhh<]ubh)r}r(hAUhBj&hCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hX attributerhjuhQNhRhh<]r(h)r}r(hAX Server.porthBjhChhEhhG}r(hL]rh,ahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rh,ahX Server.porthjhuhQNhRhh<]rh)r}r(hAXporthBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xportrr}r(hAUhBjubaubaubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)r}r(hAUhBj&hCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX,close() (circuits.net.sockets.Server method)hUtrauhQNhRhh<]ubh)r}r(hAUhBj&hCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hXmethodrhjuhQNhRhh<]r(h)r}r(hAXServer.close(sock=None)hBjhChhEhhG}r(hL]rhahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rhahX Server.closehjhuhQNhRhh<]r(h)r}r(hAXclosehBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xcloserr}r(hAUhBjubaubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh)r}r(hAX sock=NonehG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[X sock=Nonerr}r(hAUhBjubahEhubaubeubh)r}r (hAUhBjhChhEhhG}r (hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)r }r (hAUhBj&hCNhEhchG}r (hL]hK]hI]hJ]hO]Uentries]r(hfX,write() (circuits.net.sockets.Server method)h UtrauhQNhRhh<]ubh)r}r(hAUhBj&hCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hXmethodrhjuhQNhRhh<]r(h)r}r(hAXServer.write(sock, data)hBjhChhEhhG}r(hL]rh ahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rh ahX Server.writehjhuhQNhRhh<]r(h)r}r(hAXwritehBjhChhEhhG}r (hI]hJ]hK]hL]hO]uhQNhRhh<]r!h[Xwriter"r#}r$(hAUhBjubaubh)r%}r&(hAUhBjhChhEhhG}r'(hI]hJ]hK]hL]hO]uhQNhRhh<]r((h)r)}r*(hAXsockhG}r+(hI]hJ]hK]hL]hO]uhBj%h<]r,h[Xsockr-r.}r/(hAUhBj)ubahEhubh)r0}r1(hAXdatahG}r2(hI]hJ]hK]hL]hO]uhBj%h<]r3h[Xdatar4r5}r6(hAUhBj0ubahEhubeubeubh)r7}r8(hAUhBjhChhEhhG}r9(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubeubeubh_)r:}r;(hAUhBh?hCNhEhchG}r<(hL]hK]hI]hJ]hO]Uentries]r=(hfX)TCPServer (class in circuits.net.sockets)hUtr>auhQNhRhh<]ubh)r?}r@(hAUhBh?hCNhEhhG}rA(hhXpyhL]hK]hI]hJ]hO]hXclassrBhjBuhQNhRhh<]rC(h)rD}rE(hAXUTCPServer(bind, secure=False, backlog=5000, bufsize=4096, channel='server', **kwargs)hBj?hChhEhhG}rF(hL]rGhahhXcircuits.net.socketsrHrI}rJbhK]hI]hJ]hO]rKhahX TCPServerrLhUhuhQNhRhh<]rM(h)rN}rO(hAXclass hBjDhChhEhhG}rP(hI]hJ]hK]hL]hO]uhQNhRhh<]rQh[Xclass rRrS}rT(hAUhBjNubaubh)rU}rV(hAXcircuits.net.sockets.hBjDhChhEhhG}rW(hI]hJ]hK]hL]hO]uhQNhRhh<]rXh[Xcircuits.net.sockets.rYrZ}r[(hAUhBjUubaubh)r\}r](hAjLhBjDhChhEhhG}r^(hI]hJ]hK]hL]hO]uhQNhRhh<]r_h[X TCPServerr`ra}rb(hAUhBj\ubaubh)rc}rd(hAUhBjDhChhEhhG}re(hI]hJ]hK]hL]hO]uhQNhRhh<]rf(h)rg}rh(hAXbindhG}ri(hI]hJ]hK]hL]hO]uhBjch<]rjh[Xbindrkrl}rm(hAUhBjgubahEhubh)rn}ro(hAX secure=FalsehG}rp(hI]hJ]hK]hL]hO]uhBjch<]rqh[X secure=Falserrrs}rt(hAUhBjnubahEhubh)ru}rv(hAX backlog=5000hG}rw(hI]hJ]hK]hL]hO]uhBjch<]rxh[X backlog=5000ryrz}r{(hAUhBjuubahEhubh)r|}r}(hAX bufsize=4096hG}r~(hI]hJ]hK]hL]hO]uhBjch<]rh[X bufsize=4096rr}r(hAUhBj|ubahEhubh)r}r(hAXchannel='server'hG}r(hI]hJ]hK]hL]hO]uhBjch<]rh[Xchannel='server'rr}r(hAUhBjubahEhubh)r}r(hAX**kwargshG}r(hI]hJ]hK]hL]hO]uhBjch<]rh[X**kwargsrr}r(hAUhBjubahEhubeubeubh)r}r(hAUhBj?hChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]r(hh)r}r(hAX+Bases: :class:`circuits.net.sockets.Server`hBjhChhEhmhG}r(hI]hJ]hK]hL]hO]uhQKhRhh<]r(h[XBases: rr}r(hAXBases: hBjubh)r}r(hAX$:class:`circuits.net.sockets.Server`rhBjhCNhEhhG}r(UreftypeXclasshhXcircuits.net.sockets.ServerU refdomainXpyrhL]hK]U refexplicithI]hJ]hO]hhhjLhhuhQNh<]rh)r}r(hAjhG}r(hI]hJ]r(hjXpy-classrehK]hL]hO]uhBjh<]rh[Xcircuits.net.sockets.Serverrr}r(hAUhBjubahEhubaubeubh_)r}r(hAUhBjhCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX8socket_family (circuits.net.sockets.TCPServer attribute)h1UtrauhQNhRhh<]ubh)r}r(hAUhBjhCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hX attributerhjuhQNhRhh<]r(h)r}r(hAXTCPServer.socket_familyhBjhCj hEhhG}r(hL]rh1ahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rh1ahXTCPServer.socket_familyhjLhuhQNhRhh<]r(h)r}r(hAX socket_familyhBjhCj hEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[X socket_familyrr}r(hAUhBjubaubh)r}r(hAX = 2hBjhCj hEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[X = 2rr}r(hAUhBjubaubeubh)r}r(hAUhBjhCj hEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)r}r(hAUhBjhCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX>parse_bind_parameter() (circuits.net.sockets.TCPServer method)hUtrauhQNhRhh<]ubh)r}r(hAUhBjhCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hXmethodrhjuhQNhRhh<]r(h)r}r(hAX.TCPServer.parse_bind_parameter(bind_parameter)hBjhChhEhhG}r(hL]rhahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rhahXTCPServer.parse_bind_parameterhjLhuhQNhRhh<]r(h)r}r(hAXparse_bind_parameterhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xparse_bind_parameterrr}r(hAUhBjubaubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh)r}r(hAXbind_parameterhG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[Xbind_parameterrr}r(hAUhBjubahEhubaubeubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubeubeubh_)r}r(hAUhBh?hCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX7parse_ipv4_parameter() (in module circuits.net.sockets)h#UtrauhQNhRhh<]ubh)r}r(hAUhBh?hCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hXfunctionrhjuhQNhRhh<]r(h)r}r(hAX$parse_ipv4_parameter(bind_parameter)hBjhChhEhhG}r(hL]rh#ahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rh#ahXparse_ipv4_parameterr hUhuhQNhRhh<]r (h)r }r (hAXcircuits.net.sockets.hBjhChhEhhG}r (hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xcircuits.net.sockets.rr}r(hAUhBj ubaubh)r}r(hAj hBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xparse_ipv4_parameterrr}r(hAUhBjubaubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh)r}r(hAXbind_parameterhG}r(hI]hJ]hK]hL]hO]uhBjh<]r h[Xbind_parameterr!r"}r#(hAUhBjubahEhubaubeubh)r$}r%(hAUhBjhChhEhhG}r&(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)r'}r((hAUhBh?hCNhEhchG}r)(hL]hK]hI]hJ]hO]Uentries]r*(hfX7parse_ipv6_parameter() (in module circuits.net.sockets)h Utr+auhQNhRhh<]ubh)r,}r-(hAUhBh?hCNhEhhG}r.(hhXpyhL]hK]hI]hJ]hO]hXfunctionr/hj/uhQNhRhh<]r0(h)r1}r2(hAX$parse_ipv6_parameter(bind_parameter)hBj,hChhEhhG}r3(hL]r4h ahhXcircuits.net.socketsr5r6}r7bhK]hI]hJ]hO]r8h ahXparse_ipv6_parameterr9hUhuhQNhRhh<]r:(h)r;}r<(hAXcircuits.net.sockets.hBj1hChhEhhG}r=(hI]hJ]hK]hL]hO]uhQNhRhh<]r>h[Xcircuits.net.sockets.r?r@}rA(hAUhBj;ubaubh)rB}rC(hAj9hBj1hChhEhhG}rD(hI]hJ]hK]hL]hO]uhQNhRhh<]rEh[Xparse_ipv6_parameterrFrG}rH(hAUhBjBubaubh)rI}rJ(hAUhBj1hChhEhhG}rK(hI]hJ]hK]hL]hO]uhQNhRhh<]rLh)rM}rN(hAXbind_parameterhG}rO(hI]hJ]hK]hL]hO]uhBjIh<]rPh[Xbind_parameterrQrR}rS(hAUhBjMubahEhubaubeubh)rT}rU(hAUhBj,hChhEhhG}rV(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)rW}rX(hAUhBh?hCNhEhchG}rY(hL]hK]hI]hJ]hO]Uentries]rZ(hfX*TCP6Server (class in circuits.net.sockets)hUtr[auhQNhRhh<]ubh)r\}r](hAUhBh?hCNhEhhG}r^(hhXpyhL]hK]hI]hJ]hO]hXclassr_hj_uhQNhRhh<]r`(h)ra}rb(hAXVTCP6Server(bind, secure=False, backlog=5000, bufsize=4096, channel='server', **kwargs)hBj\hChhEhhG}rc(hL]rdhahhXcircuits.net.socketsrerf}rgbhK]hI]hJ]hO]rhhahX TCP6ServerrihUhuhQNhRhh<]rj(h)rk}rl(hAXclass hBjahChhEhhG}rm(hI]hJ]hK]hL]hO]uhQNhRhh<]rnh[Xclass rorp}rq(hAUhBjkubaubh)rr}rs(hAXcircuits.net.sockets.hBjahChhEhhG}rt(hI]hJ]hK]hL]hO]uhQNhRhh<]ruh[Xcircuits.net.sockets.rvrw}rx(hAUhBjrubaubh)ry}rz(hAjihBjahChhEhhG}r{(hI]hJ]hK]hL]hO]uhQNhRhh<]r|h[X TCP6Serverr}r~}r(hAUhBjyubaubh)r}r(hAUhBjahChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]r(h)r}r(hAXbindhG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[Xbindrr}r(hAUhBjubahEhubh)r}r(hAX secure=FalsehG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[X secure=Falserr}r(hAUhBjubahEhubh)r}r(hAX backlog=5000hG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[X backlog=5000rr}r(hAUhBjubahEhubh)r}r(hAX bufsize=4096hG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[X bufsize=4096rr}r(hAUhBjubahEhubh)r}r(hAXchannel='server'hG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[Xchannel='server'rr}r(hAUhBjubahEhubh)r}r(hAX**kwargshG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[X**kwargsrr}r(hAUhBjubahEhubeubeubh)r}r(hAUhBj\hChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]r(hh)r}r(hAX.Bases: :class:`circuits.net.sockets.TCPServer`hBjhChhEhmhG}r(hI]hJ]hK]hL]hO]uhQKhRhh<]r(h[XBases: rr}r(hAXBases: hBjubh)r}r(hAX':class:`circuits.net.sockets.TCPServer`rhBjhCNhEhhG}r(UreftypeXclasshhXcircuits.net.sockets.TCPServerU refdomainXpyrhL]hK]U refexplicithI]hJ]hO]hhhjihhuhQNh<]rh)r}r(hAjhG}r(hI]hJ]r(hjXpy-classrehK]hL]hO]uhBjh<]rh[Xcircuits.net.sockets.TCPServerrr}r(hAUhBjubahEhubaubeubh_)r}r(hAUhBjhCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX9socket_family (circuits.net.sockets.TCP6Server attribute)hUtrauhQNhRhh<]ubh)r}r(hAUhBjhCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hX attributerhjuhQNhRhh<]r(h)r}r(hAXTCP6Server.socket_familyhBjhCj hEhhG}r(hL]rhahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rhahXTCP6Server.socket_familyhjihuhQNhRhh<]r(h)r}r(hAX socket_familyhBjhCj hEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[X socket_familyrr}r(hAUhBjubaubh)r}r(hAX = 10hBjhCj hEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[X = 10rr}r(hAUhBjubaubeubh)r}r(hAUhBjhCj hEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)r}r(hAUhBjhCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX?parse_bind_parameter() (circuits.net.sockets.TCP6Server method)hUtrauhQNhRhh<]ubh)r}r(hAUhBjhCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hXmethodrhjuhQNhRhh<]r(h)r}r(hAX/TCP6Server.parse_bind_parameter(bind_parameter)hBjhChhEhhG}r(hL]rhahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rhahXTCP6Server.parse_bind_parameterhjihuhQNhRhh<]r(h)r}r(hAXparse_bind_parameterhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xparse_bind_parameterrr}r(hAUhBjubaubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]r h)r }r (hAXbind_parameterhG}r (hI]hJ]hK]hL]hO]uhBjh<]r h[Xbind_parameterrr}r(hAUhBj ubahEhubaubeubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubeubeubh_)r}r(hAUhBh?hChhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX*UNIXServer (class in circuits.net.sockets)hUtrauhQNhRhh<]ubh)r}r(hAUhBh?hChhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hXclassrhjuhQNhRhh<]r(h)r}r(hAXVUNIXServer(bind, secure=False, backlog=5000, bufsize=4096, channel='server', **kwargs)hBjhChhEhhG}r (hL]r!hahhXcircuits.net.socketsr"r#}r$bhK]hI]hJ]hO]r%hahX UNIXServerr&hUhuhQNhRhh<]r'(h)r(}r)(hAXclass hBjhChhEhhG}r*(hI]hJ]hK]hL]hO]uhQNhRhh<]r+h[Xclass r,r-}r.(hAUhBj(ubaubh)r/}r0(hAXcircuits.net.sockets.hBjhChhEhhG}r1(hI]hJ]hK]hL]hO]uhQNhRhh<]r2h[Xcircuits.net.sockets.r3r4}r5(hAUhBj/ubaubh)r6}r7(hAj&hBjhChhEhhG}r8(hI]hJ]hK]hL]hO]uhQNhRhh<]r9h[X UNIXServerr:r;}r<(hAUhBj6ubaubh)r=}r>(hAUhBjhChhEhhG}r?(hI]hJ]hK]hL]hO]uhQNhRhh<]r@(h)rA}rB(hAXbindhG}rC(hI]hJ]hK]hL]hO]uhBj=h<]rDh[XbindrErF}rG(hAUhBjAubahEhubh)rH}rI(hAX secure=FalsehG}rJ(hI]hJ]hK]hL]hO]uhBj=h<]rKh[X secure=FalserLrM}rN(hAUhBjHubahEhubh)rO}rP(hAX backlog=5000hG}rQ(hI]hJ]hK]hL]hO]uhBj=h<]rRh[X backlog=5000rSrT}rU(hAUhBjOubahEhubh)rV}rW(hAX bufsize=4096hG}rX(hI]hJ]hK]hL]hO]uhBj=h<]rYh[X bufsize=4096rZr[}r\(hAUhBjVubahEhubh)r]}r^(hAXchannel='server'hG}r_(hI]hJ]hK]hL]hO]uhBj=h<]r`h[Xchannel='server'rarb}rc(hAUhBj]ubahEhubh)rd}re(hAX**kwargshG}rf(hI]hJ]hK]hL]hO]uhBj=h<]rgh[X**kwargsrhri}rj(hAUhBjdubahEhubeubeubh)rk}rl(hAUhBjhChhEhhG}rm(hI]hJ]hK]hL]hO]uhQNhRhh<]rnhh)ro}rp(hAX+Bases: :class:`circuits.net.sockets.Server`hBjkhChhEhmhG}rq(hI]hJ]hK]hL]hO]uhQKhRhh<]rr(h[XBases: rsrt}ru(hAXBases: hBjoubh)rv}rw(hAX$:class:`circuits.net.sockets.Server`rxhBjohCNhEhhG}ry(UreftypeXclasshhXcircuits.net.sockets.ServerU refdomainXpyrzhL]hK]U refexplicithI]hJ]hO]hhhj&hhuhQNh<]r{h)r|}r}(hAjxhG}r~(hI]hJ]r(hjzXpy-classrehK]hL]hO]uhBjvh<]rh[Xcircuits.net.sockets.Serverrr}r(hAUhBj|ubahEhubaubeubaubeubh_)r}r(hAUhBh?hCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX)UDPServer (class in circuits.net.sockets)h-UtrauhQNhRhh<]ubh)r}r(hAUhBh?hCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hXclassrhjuhQNhRhh<]r(h)r}r(hAXUUDPServer(bind, secure=False, backlog=5000, bufsize=4096, channel='server', **kwargs)hBjhChhEhhG}r(hL]rh-ahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rh-ahX UDPServerrhUhuhQNhRhh<]r(h)r}r(hAXclass hBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xclass rr}r(hAUhBjubaubh)r}r(hAXcircuits.net.sockets.hBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xcircuits.net.sockets.rr}r(hAUhBjubaubh)r}r(hAjhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[X UDPServerrr}r(hAUhBjubaubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]r(h)r}r(hAXbindhG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[Xbindrr}r(hAUhBjubahEhubh)r}r(hAX secure=FalsehG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[X secure=Falserr}r(hAUhBjubahEhubh)r}r(hAX backlog=5000hG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[X backlog=5000rr}r(hAUhBjubahEhubh)r}r(hAX bufsize=4096hG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[X bufsize=4096rr}r(hAUhBjubahEhubh)r}r(hAXchannel='server'hG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[Xchannel='server'rr}r(hAUhBjubahEhubh)r}r(hAX**kwargshG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[X**kwargsrr}r(hAUhBjubahEhubeubeubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]r(hh)r}r(hAX+Bases: :class:`circuits.net.sockets.Server`hBjhChhEhmhG}r(hI]hJ]hK]hL]hO]uhQKhRhh<]r(h[XBases: rr}r(hAXBases: hBjubh)r}r(hAX$:class:`circuits.net.sockets.Server`rhBjhCNhEhhG}r(UreftypeXclasshhXcircuits.net.sockets.ServerU refdomainXpyrhL]hK]U refexplicithI]hJ]hO]hhhjhhuhQNh<]rh)r}r(hAjhG}r(hI]hJ]r(hjXpy-classrehK]hL]hO]uhBjh<]rh[Xcircuits.net.sockets.Serverrr}r(hAUhBjubahEhubaubeubh_)r}r(hAUhBjhCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX8socket_family (circuits.net.sockets.UDPServer attribute)h UtrauhQNhRhh<]ubh)r}r(hAUhBjhCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hX attributerhjuhQNhRhh<]r(h)r}r(hAXUDPServer.socket_familyhBjhCj hEhhG}r(hL]rh ahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rh ahXUDPServer.socket_familyhjhuhQNhRhh<]r(h)r }r (hAX socket_familyhBjhCj hEhhG}r (hI]hJ]hK]hL]hO]uhQNhRhh<]r h[X socket_familyr r}r(hAUhBj ubaubh)r}r(hAX = 2hBjhCj hEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[X = 2rr}r(hAUhBjubaubeubh)r}r(hAUhBjhCj hEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)r}r(hAUhBjhCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX/close() (circuits.net.sockets.UDPServer method)h(UtrauhQNhRhh<]ubh)r}r (hAUhBjhCNhEhhG}r!(hhXpyhL]hK]hI]hJ]hO]hXmethodr"hj"uhQNhRhh<]r#(h)r$}r%(hAXUDPServer.close()hBjhChhEhhG}r&(hL]r'h(ahhXcircuits.net.socketsr(r)}r*bhK]hI]hJ]hO]r+h(ahXUDPServer.closehjhuhQNhRhh<]r,(h)r-}r.(hAXclosehBj$hChhEhhG}r/(hI]hJ]hK]hL]hO]uhQNhRhh<]r0h[Xcloser1r2}r3(hAUhBj-ubaubh)r4}r5(hAUhBj$hChhEhhG}r6(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh)r7}r8(hAUhBjhChhEhhG}r9(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)r:}r;(hAUhBjhCNhEhchG}r<(hL]hK]hI]hJ]hO]Uentries]r=(hfX/write() (circuits.net.sockets.UDPServer method)h Utr>auhQNhRhh<]ubh)r?}r@(hAUhBjhCNhEhhG}rA(hhXpyhL]hK]hI]hJ]hO]hXmethodrBhjBuhQNhRhh<]rC(h)rD}rE(hAXUDPServer.write(address, data)hBj?hChhEhhG}rF(hL]rGh ahhXcircuits.net.socketsrHrI}rJbhK]hI]hJ]hO]rKh ahXUDPServer.writehjhuhQNhRhh<]rL(h)rM}rN(hAXwritehBjDhChhEhhG}rO(hI]hJ]hK]hL]hO]uhQNhRhh<]rPh[XwriterQrR}rS(hAUhBjMubaubh)rT}rU(hAUhBjDhChhEhhG}rV(hI]hJ]hK]hL]hO]uhQNhRhh<]rW(h)rX}rY(hAXaddresshG}rZ(hI]hJ]hK]hL]hO]uhBjTh<]r[h[Xaddressr\r]}r^(hAUhBjXubahEhubh)r_}r`(hAXdatahG}ra(hI]hJ]hK]hL]hO]uhBjTh<]rbh[Xdatarcrd}re(hAUhBj_ubahEhubeubeubh)rf}rg(hAUhBj?hChhEhhG}rh(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)ri}rj(hAUhBjhCNhEhchG}rk(hL]hK]hI]hJ]hO]Uentries]rl(hfX3broadcast() (circuits.net.sockets.UDPServer method)hUtrmauhQNhRhh<]ubh)rn}ro(hAUhBjhCNhEhhG}rp(hhXpyhL]hK]hI]hJ]hO]hXmethodrqhjquhQNhRhh<]rr(h)rs}rt(hAXUDPServer.broadcast(data, port)hBjnhChhEhhG}ru(hL]rvhahhXcircuits.net.socketsrwrx}rybhK]hI]hJ]hO]rzhahXUDPServer.broadcasthjhuhQNhRhh<]r{(h)r|}r}(hAX broadcasthBjshChhEhhG}r~(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[X broadcastrr}r(hAUhBj|ubaubh)r}r(hAUhBjshChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]r(h)r}r(hAXdatahG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[Xdatarr}r(hAUhBjubahEhubh)r}r(hAXporthG}r(hI]hJ]hK]hL]hO]uhBjh<]rh[Xportrr}r(hAUhBjubahEhubeubeubh)r}r(hAUhBjnhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubeubeubh_)r}r(hAUhBh?hCUhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX*UDPClient (in module circuits.net.sockets)h/UtrauhQNhRhh<]ubh)r}r(hAUhBh?hCUhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hX attributerhjuhQNhRhh<]r(h)r}r(hAX UDPClientrhBjhChhEhhG}r(hL]rh/ahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rh/ahjhUhuhQNhRhh<]r(h)r}r(hAXcircuits.net.sockets.hBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xcircuits.net.sockets.rr}r(hAUhBjubaubh)r}r(hAjhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[X UDPClientrr}r(hAUhBjubaubeubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rhh)r}r(hAXalias of :class:`UDPServer`hBjhCUhEhmhG}r(hI]hJ]hK]hL]hO]uhQKhRhh<]r(h[X alias of rr}r(hAX alias of hBjubh)r}r(hAX:class:`UDPServer`rhBjhCNhEhhG}r(UreftypeXclasshhX UDPServerU refdomainXpyrhL]hK]U refexplicithI]hJ]hO]hhhNhhuhQNh<]rh)r}r(hAjhG}r(hI]hJ]r(hjXpy-classrehK]hL]hO]uhBjh<]rh[X UDPServerrr}r(hAUhBjubahEhubaubeubaubeubh_)r}r(hAUhBh?hCNhEhchG}r(hL]hK]hI]hJ]hO]Uentries]r(hfX*UDP6Server (class in circuits.net.sockets)h+UtrauhQNhRhh<]ubh)r}r(hAUhBh?hCNhEhhG}r(hhXpyhL]hK]hI]hJ]hO]hXclassrhjuhQNhRhh<]r(h)r}r(hAXVUDP6Server(bind, secure=False, backlog=5000, bufsize=4096, channel='server', **kwargs)hBjhChhEhhG}r(hL]rh+ahhXcircuits.net.socketsrr}rbhK]hI]hJ]hO]rh+ahX UDP6ServerrhUhuhQNhRhh<]r(h)r}r(hAXclass hBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xclass rr}r(hAUhBjubaubh)r}r(hAXcircuits.net.sockets.hBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[Xcircuits.net.sockets.rr}r(hAUhBjubaubh)r}r(hAjhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]rh[X UDP6Serverrr}r(hAUhBjubaubh)r}r(hAUhBjhChhEhhG}r(hI]hJ]hK]hL]hO]uhQNhRhh<]r (h)r }r (hAXbindhG}r (hI]hJ]hK]hL]hO]uhBjh<]r h[Xbindr r }r (hAUhBj ubahEhubh)r }r (hAX secure=FalsehG}r (hI]hJ]hK]hL]hO]uhBjh<]r h[X secure=Falser r }r (hAUhBj ubahEhubh)r }r (hAX backlog=5000hG}r (hI]hJ]hK]hL]hO]uhBjh<]r h[X backlog=5000r r }r (hAUhBj ubahEhubh)r }r (hAX bufsize=4096hG}r (hI]hJ]hK]hL]hO]uhBjh<]r h[X bufsize=4096r r }r (hAUhBj ubahEhubh)r }r (hAXchannel='server'hG}r (hI]hJ]hK]hL]hO]uhBjh<]r h[Xchannel='server'r! r" }r# (hAUhBj ubahEhubh)r$ }r% (hAX**kwargshG}r& (hI]hJ]hK]hL]hO]uhBjh<]r' h[X**kwargsr( r) }r* (hAUhBj$ ubahEhubeubeubh)r+ }r, (hAUhBjhChhEhhG}r- (hI]hJ]hK]hL]hO]uhQNhRhh<]r. (hh)r/ }r0 (hAX.Bases: :class:`circuits.net.sockets.UDPServer`r1 hBj+ hChhEhmhG}r2 (hI]hJ]hK]hL]hO]uhQKhRhh<]r3 (h[XBases: r4 r5 }r6 (hAXBases: hBj/ ubh)r7 }r8 (hAX':class:`circuits.net.sockets.UDPServer`r9 hBj/ hCNhEhhG}r: (UreftypeXclasshhXcircuits.net.sockets.UDPServerU refdomainXpyr; hL]hK]U refexplicithI]hJ]hO]hhhjhhuhQNh<]r< h)r= }r> (hAj9 hG}r? (hI]hJ]r@ (hj; Xpy-classrA ehK]hL]hO]uhBj7 h<]rB h[Xcircuits.net.sockets.UDPServerrC rD }rE (hAUhBj= ubahEhubaubeubh_)rF }rG (hAUhBj+ hCNhEhchG}rH (hL]hK]hI]hJ]hO]Uentries]rI (hfX9socket_family (circuits.net.sockets.UDP6Server attribute)hUtrJ auhQNhRhh<]ubh)rK }rL (hAUhBj+ hCNhEhhG}rM (hhXpyhL]hK]hI]hJ]hO]hX attributerN hjN uhQNhRhh<]rO (h)rP }rQ (hAXUDP6Server.socket_familyhBjK hCj hEhhG}rR (hL]rS hahhXcircuits.net.socketsrT rU }rV bhK]hI]hJ]hO]rW hahXUDP6Server.socket_familyhjhuhQNhRhh<]rX (h)rY }rZ (hAX socket_familyhBjP hCj hEhhG}r[ (hI]hJ]hK]hL]hO]uhQNhRhh<]r\ h[X socket_familyr] r^ }r_ (hAUhBjY ubaubh)r` }ra (hAX = 10hBjP hCj hEhhG}rb (hI]hJ]hK]hL]hO]uhQNhRhh<]rc h[X = 10rd re }rf (hAUhBj` ubaubeubh)rg }rh (hAUhBjK hCj hEhhG}ri (hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubh_)rj }rk (hAUhBj+ hCNhEhchG}rl (hL]hK]hI]hJ]hO]Uentries]rm (hfX?parse_bind_parameter() (circuits.net.sockets.UDP6Server method)hUtrn auhQNhRhh<]ubh)ro }rp (hAUhBj+ hCNhEhhG}rq (hhXpyhL]hK]hI]hJ]hO]hXmethodrr hjr uhQNhRhh<]rs (h)rt }ru (hAX/UDP6Server.parse_bind_parameter(bind_parameter)rv hBjo hChhEhhG}rw (hL]rx hahhXcircuits.net.socketsry rz }r{ bhK]hI]hJ]hO]r| hahXUDP6Server.parse_bind_parameterhjhuhQNhRhh<]r} (h)r~ }r (hAXparse_bind_parameterhBjt hChhEhhG}r (hI]hJ]hK]hL]hO]uhQNhRhh<]r h[Xparse_bind_parameterr r }r (hAUhBj~ ubaubh)r }r (hAUhBjt hChhEhhG}r (hI]hJ]hK]hL]hO]uhQNhRhh<]r h)r }r (hAXbind_parameterhG}r (hI]hJ]hK]hL]hO]uhBj h<]r h[Xbind_parameterr r }r (hAUhBj ubahEhubaubeubh)r }r (hAUhBjo hChhEhhG}r (hI]hJ]hK]hL]hO]uhQNhRhh<]ubeubeubeubh_)r }r (hAUhBh?hCUhEhchG}r (hL]hK]hI]hJ]hO]Uentries]r (hfX+UDP6Client (in module circuits.net.sockets)h&Utr auhQNhRhh<]ubh)r }r (hAUhBh?hCUhEhhG}r (hhXpyhL]hK]hI]hJ]hO]hX attributer hj uhQNhRhh<]r (h)r }r (hAX UDP6Clientr hBj hChhEhhG}r (hL]r h&ahhXcircuits.net.socketsr r }r bhK]hI]hJ]hO]r h&ahj hUhuhQNhRhh<]r (h)r }r (hAXcircuits.net.sockets.hBj hChhEhhG}r (hI]hJ]hK]hL]hO]uhQNhRhh<]r h[Xcircuits.net.sockets.r r }r (hAUhBj ubaubh)r }r (hAj hBj hChhEhhG}r (hI]hJ]hK]hL]hO]uhQNhRhh<]r h[X UDP6Clientr r }r (hAUhBj ubaubeubh)r }r (hAUhBj hChhEhhG}r (hI]hJ]hK]hL]hO]uhQNhRhh<]r hh)r }r (hAXalias of :class:`UDP6Server`hBj hCUhEhmhG}r (hI]hJ]hK]hL]hO]uhQKhRhh<]r (h[X alias of r r }r (hAX alias of hBj ubh)r }r (hAX:class:`UDP6Server`r hBj hCNhEhhG}r (UreftypeXclasshhX UDP6ServerU refdomainXpyr hL]hK]U refexplicithI]hJ]hO]hhhNhhuhQNh<]r h)r }r (hAj hG}r (hI]hJ]r (hj Xpy-classr ehK]hL]hO]uhBj h<]r h[X UDP6Serverr r }r (hAUhBj ubahEhubaubeubaubeubh_)r }r (hAUhBh?hCX[/home/prologic/work/circuits/circuits/net/sockets.py:docstring of circuits.net.sockets.Piper hEhchG}r (hL]hK]hI]hJ]hO]Uentries]r (hfX'Pipe() (in module circuits.net.sockets)h"Utr auhQNhRhh<]ubh)r }r (hAUhBh?hCj hEhhG}r (hhXpyhL]hK]hI]hJ]hO]hXfunctionr hj uhQNhRhh<]r (h)r }r (hAXPipe(*channels, **kwargs)hBj hChhEhhG}r (hL]r h"ahhXcircuits.net.socketsr r }r bhK]hI]hJ]hO]r h"ahXPiper hUhuhQNhRhh<]r (h)r }r (hAXcircuits.net.sockets.hBj hChhEhhG}r (hI]hJ]hK]hL]hO]uhQNhRhh<]r h[Xcircuits.net.sockets.r r }r (hAUhBj ubaubh)r }r (hAj hBj hChhEhhG}r (hI]hJ]hK]hL]hO]uhQNhRhh<]r h[XPiper r }r (hAUhBj ubaubh)r }r (hAUhBj hChhEhhG}r (hI]hJ]hK]hL]hO]uhQNhRhh<]r (h)r }r (hAX *channelshG}r (hI]hJ]hK]hL]hO]uhBj h<]r h[X *channelsr r }r (hAUhBj ubahEhubh)r }r (hAX**kwargshG}r (hI]hJ]hK]hL]hO]uhBj h<]r h[X**kwargsr r }r (hAUhBj ubahEhubeubeubh)r }r (hAUhBj hChhEhhG}r (hI]hJ]hK]hL]hO]uhQNhRhh<]r (hh)r }r (hAXCreate a new full duplex Piper hBj hCj hEhmhG}r (hI]hJ]hK]hL]hO]uhQKhRhh<]r h[XCreate a new full duplex Piper r }r (hAj hBj ubaubhh)r }r (hAXLReturns a pair of UNIXClient instances connected on either side of the pipe.r hBj hCj hEhmhG}r (hI]hJ]hK]hL]hO]uhQKhRhh<]r h[XLReturns a pair of UNIXClient instances connected on either side of the pipe.r r }r (hAj hBj ubaubeubeubeubahAUU transformerr NU footnote_refsr }r Urefnamesr }r Usymbol_footnotesr ]r Uautofootnote_refsr ]r Usymbol_footnote_refsr! ]r" U citationsr# ]r$ hRhU current_liner% NUtransform_messagesr& ]r' Ureporterr( NUid_startr) KU autofootnotesr* ]r+ U citation_refsr, }r- Uindirect_targetsr. ]r/ Usettingsr0 (cdocutils.frontend Values r1 or2 }r3 (Ufootnote_backlinksr4 KUrecord_dependenciesr5 NU rfc_base_urlr6 Uhttp://tools.ietf.org/html/r7 U tracebackr8 Upep_referencesr9 NUstrip_commentsr: NU toc_backlinksr; Uentryr< U language_coder= Uenr> U datestampr? NU report_levelr@ KU _destinationrA NU halt_levelrB KU strip_classesrC NhXNUerror_encoding_error_handlerrD UbackslashreplacerE UdebugrF NUembed_stylesheetrG Uoutput_encoding_error_handlerrH UstrictrI U sectnum_xformrJ KUdump_transformsrK NU docinfo_xformrL KUwarning_streamrM NUpep_file_url_templaterN Upep-%04drO Uexit_status_levelrP KUconfigrQ NUstrict_visitorrR NUcloak_email_addressesrS Utrim_footnote_reference_spacerT UenvrU NUdump_pseudo_xmlrV NUexpose_internalsrW NUsectsubtitle_xformrX U source_linkrY NUrfc_referencesrZ NUoutput_encodingr[ Uutf-8r\ U source_urlr] NUinput_encodingr^ U utf-8-sigr_ U_disable_configr` NU id_prefixra UU tab_widthrb KUerror_encodingrc UUTF-8rd U_sourcere hDUgettext_compactrf U generatorrg NUdump_internalsrh NU smart_quotesri U pep_base_urlrj Uhttp://www.python.org/dev/peps/rk Usyntax_highlightrl Ulongrm Uinput_encoding_error_handlerrn jI Uauto_id_prefixro Uidrp Udoctitle_xformrq Ustrip_elements_with_classesrr NU _config_filesrs ]Ufile_insertion_enabledrt U raw_enabledru KU dump_settingsrv NubUsymbol_footnote_startrw KUidsrx }ry (hj{hjhjh j1h jDh jh jh jhjhjhjhjhjhjahj:hjt hjP hjhjsh;h?hjJhjhjnhjDhjhjh jrh!jhNcdocutils.nodes target rz )r{ }r| (hAUhBh?hChbhEUtargetr} hG}r~ (hI]hL]r hNahK]UismodhJ]hO]uhQKhRhh<]ubh"j h#jh$jwh%jh&j h'j-h(j$h)hh*jh+jh,jh-jh.jUh/jh0jh1juUsubstitution_namesr }r hEhRhG}r (hI]hL]hK]UsourcehDhJ]hO]uU footnotesr ]r Urefidsr }r ub.circuits-3.1.0/docs/build/doctrees/api/circuits.core.loader.doctree0000644000014400001440000002151512425011102026321 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.core.loader moduleqNXcircuits.core.loader.LoaderqX circuits.core.loader.Loader.loadqX#circuits.core.loader.Loader.channelq uUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUcircuits-core-loader-moduleqhhhhh h uUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXE/home/prologic/work/circuits/docs/source/api/circuits.core.loader.rstqUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%(Xmodule-circuits.core.loaderq&heUnamesq']q(hauUlineq)KUdocumentq*hh]q+(cdocutils.nodes title q,)q-}q.(hXcircuits.core.loader moduleq/hhhhhUtitleq0h}q1(h!]h"]h#]h$]h']uh)Kh*hh]q2cdocutils.nodes Text q3Xcircuits.core.loader moduleq4q5}q6(hh/hh-ubaubcsphinx.addnodes index q7)q8}q9(hUhhhU q:hUindexq;h}q<(h$]h#]h!]h"]h']Uentries]q=(Usingleq>Xcircuits.core.loader (module)Xmodule-circuits.core.loaderUtq?auh)Kh*hh]ubcdocutils.nodes paragraph q@)qA}qB(hXThis module implements a generic Loader suitable for dynamically loading components from other modules. This supports loading from local paths, eggs and zip archives. Both setuptools and distribute are fully supported.qChhhXV/home/prologic/work/circuits/circuits/core/loader.py:docstring of circuits.core.loaderqDhU paragraphqEh}qF(h!]h"]h#]h$]h']uh)Kh*hh]qGh3XThis module implements a generic Loader suitable for dynamically loading components from other modules. This supports loading from local paths, eggs and zip archives. Both setuptools and distribute are fully supported.qHqI}qJ(hhChhAubaubh7)qK}qL(hUhhhNhh;h}qM(h$]h#]h!]h"]h']Uentries]qN(h>X&Loader (class in circuits.core.loader)hUtqOauh)Nh*hh]ubcsphinx.addnodes desc qP)qQ}qR(hUhhhNhUdescqSh}qT(UnoindexqUUdomainqVXpyh$]h#]h!]h"]h']UobjtypeqWXclassqXUdesctypeqYhXuh)Nh*hh]qZ(csphinx.addnodes desc_signature q[)q\}q](hXZLoader(auto_register=True, init_args=None, init_kwargs=None, paths=None, channel='loader')hhQhU q^hUdesc_signatureq_h}q`(h$]qahaUmoduleqbcdocutils.nodes reprunicode qcXcircuits.core.loaderqdqe}qfbh#]h!]h"]h']qghaUfullnameqhXLoaderqiUclassqjUUfirstqkuh)Nh*hh]ql(csphinx.addnodes desc_annotation qm)qn}qo(hXclass hh\hh^hUdesc_annotationqph}qq(h!]h"]h#]h$]h']uh)Nh*hh]qrh3Xclass qsqt}qu(hUhhnubaubcsphinx.addnodes desc_addname qv)qw}qx(hXcircuits.core.loader.hh\hh^hU desc_addnameqyh}qz(h!]h"]h#]h$]h']uh)Nh*hh]q{h3Xcircuits.core.loader.q|q}}q~(hUhhwubaubcsphinx.addnodes desc_name q)q}q(hhihh\hh^hU desc_nameqh}q(h!]h"]h#]h$]h']uh)Nh*hh]qh3XLoaderqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhh\hh^hUdesc_parameterlistqh}q(h!]h"]h#]h$]h']uh)Nh*hh]q(csphinx.addnodes desc_parameter q)q}q(hXauto_register=Trueh}q(h!]h"]h#]h$]h']uhhh]qh3Xauto_register=Trueqq}q(hUhhubahUdesc_parameterqubh)q}q(hXinit_args=Noneh}q(h!]h"]h#]h$]h']uhhh]qh3Xinit_args=Noneqq}q(hUhhubahhubh)q}q(hXinit_kwargs=Noneh}q(h!]h"]h#]h$]h']uhhh]qh3Xinit_kwargs=Noneqq}q(hUhhubahhubh)q}q(hX paths=Noneh}q(h!]h"]h#]h$]h']uhhh]qh3X paths=Noneqq}q(hUhhubahhubh)q}q(hXchannel='loader'h}q(h!]h"]h#]h$]h']uhhh]qh3Xchannel='loader'qq}q(hUhhubahhubeubeubcsphinx.addnodes desc_content q)q}q(hUhhQhh^hU desc_contentqh}q(h!]h"]h#]h$]h']uh)Nh*hh]q(h@)q}q(hX6Bases: :class:`circuits.core.components.BaseComponent`qhhhU qhhEh}q(h!]h"]h#]h$]h']uh)Kh*hh]q(h3XBases: qq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX/:class:`circuits.core.components.BaseComponent`qhhhNhU pending_xrefqh}q(UreftypeXclassUrefwarnqȉU reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqh$]h#]U refexplicith!]h"]h']UrefdocqXapi/circuits.core.loaderqUpy:classqhiU py:moduleqXcircuits.core.loaderquh)Nh]qcdocutils.nodes literal q)q}q(hhh}q(h!]h"]q(UxrefqhXpy-classqeh#]h$]h']uhhh]qh3X&circuits.core.components.BaseComponentqمq}q(hUhhubahUliteralqubaubeubh@)q}q(hXCreate a new Loader ComponentqhhhX]/home/prologic/work/circuits/circuits/core/loader.py:docstring of circuits.core.loader.LoaderqhhEh}q(h!]h"]h#]h$]h']uh)Kh*hh]qh3XCreate a new Loader Componentqㅁq}q(hhhhubaubh@)q}q(hXCreates a new Loader Component that enables dynamic loading of components from modules either in local paths, eggs or zip archives.qhhhhhhEh}q(h!]h"]h#]h$]h']uh)Kh*hh]qh3XCreates a new Loader Component that enables dynamic loading of components from modules either in local paths, eggs or zip archives.q녁q}q(hhhhubaubh@)q}q(hX4initializes x; see x.__class__.__doc__ for signatureqhhhhhhEh}q(h!]h"]h#]h$]h']uh)Kh*hh]qh3X4initializes x; see x.__class__.__doc__ for signatureqq}q(hhhhubaubh7)q}q(hUhhhNhh;h}q(h$]h#]h!]h"]h']Uentries]q(h>X/channel (circuits.core.loader.Loader attribute)h Utqauh)Nh*hh]ubhP)q}q(hUhhhNhhSh}q(hUhVXpyh$]h#]h!]h"]h']hWX attributeqhYhuh)Nh*hh]q(h[)r}r(hXLoader.channelhhhU rhh_h}r(h$]rh ahbhcXcircuits.core.loaderrr}rbh#]h!]h"]h']rh ahhXLoader.channelhjhihkuh)Nh*hh]r (h)r }r (hXchannelhjhjhhh}r (h!]h"]h#]h$]h']uh)Nh*hh]r h3Xchannelrr}r(hUhj ubaubhm)r}r(hX = 'loader'hjhjhhph}r(h!]h"]h#]h$]h']uh)Nh*hh]rh3X = 'loader'rr}r(hUhjubaubeubh)r}r(hUhhhjhhh}r(h!]h"]h#]h$]h']uh)Nh*hh]ubeubh7)r}r(hUhhhNhh;h}r(h$]h#]h!]h"]h']Uentries]r(h>X+load() (circuits.core.loader.Loader method)hUtrauh)Nh*hh]ubhP)r }r!(hUhhhNhhSh}r"(hUhVXpyh$]h#]h!]h"]h']hWXmethodr#hYj#uh)Nh*hh]r$(h[)r%}r&(hXLoader.load(name)r'hj hh^hh_h}r((h$]r)hahbhcXcircuits.core.loaderr*r+}r,bh#]h!]h"]h']r-hahhX Loader.loadhjhihkuh)Nh*hh]r.(h)r/}r0(hXloadhj%hh^hhh}r1(h!]h"]h#]h$]h']uh)Nh*hh]r2h3Xloadr3r4}r5(hUhj/ubaubh)r6}r7(hUhj%hh^hhh}r8(h!]h"]h#]h$]h']uh)Nh*hh]r9h)r:}r;(hXnameh}r<(h!]h"]h#]h$]h']uhj6h]r=h3Xnamer>r?}r@(hUhj:ubahhubaubeubh)rA}rB(hUhj hh^hhh}rC(h!]h"]h#]h$]h']uh)Nh*hh]ubeubeubeubeubahUU transformerrDNU footnote_refsrE}rFUrefnamesrG}rHUsymbol_footnotesrI]rJUautofootnote_refsrK]rLUsymbol_footnote_refsrM]rNU citationsrO]rPh*hU current_linerQNUtransform_messagesrR]rSUreporterrTNUid_startrUKU autofootnotesrV]rWU citation_refsrX}rYUindirect_targetsrZ]r[Usettingsr\(cdocutils.frontend Values r]or^}r_(Ufootnote_backlinksr`KUrecord_dependenciesraNU rfc_base_urlrbUhttp://tools.ietf.org/html/rcU tracebackrdUpep_referencesreNUstrip_commentsrfNU toc_backlinksrgUentryrhU language_coderiUenrjU datestamprkNU report_levelrlKU _destinationrmNU halt_levelrnKU strip_classesroNh0NUerror_encoding_error_handlerrpUbackslashreplacerqUdebugrrNUembed_stylesheetrsUoutput_encoding_error_handlerrtUstrictruU sectnum_xformrvKUdump_transformsrwNU docinfo_xformrxKUwarning_streamryNUpep_file_url_templaterzUpep-%04dr{Uexit_status_levelr|KUconfigr}NUstrict_visitorr~NUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjuUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(h jhhh&cdocutils.nodes target r)r}r(hUhhhh:hUtargetrh}r(h!]h$]rh&ah#]Uismodh"]h']uh)Kh*hh]ubhh\hj%uUsubstitution_namesr}rhh*h}r(h!]h$]h#]Usourcehh"]h']uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.websockets.client.doctree0000644000014400001440000004036212425011106030333 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X6circuits.web.websockets.client.WebSocketClient.channelqX8circuits.web.websockets.client.WebSocketClient.connectedqX%circuits.web.websockets.client moduleqNX.circuits.web.websockets.client.WebSocketClientq X4circuits.web.websockets.client.WebSocketClient.closeq uUsubstitution_defsq }q Uparse_messagesq ]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhU%circuits-web-websockets-client-moduleqh h h h uUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXO/home/prologic/work/circuits/docs/source/api/circuits.web.websockets.client.rstqUtagnameqUsectionqU attributesq }q!(Udupnamesq"]Uclassesq#]Ubackrefsq$]Uidsq%]q&(X%module-circuits.web.websockets.clientq'heUnamesq(]q)hauUlineq*KUdocumentq+hh]q,(cdocutils.nodes title q-)q.}q/(hX%circuits.web.websockets.client moduleq0hhhhhUtitleq1h }q2(h"]h#]h$]h%]h(]uh*Kh+hh]q3cdocutils.nodes Text q4X%circuits.web.websockets.client moduleq5q6}q7(hh0hh.ubaubcsphinx.addnodes index q8)q9}q:(hUhhhU q;hUindexq(Usingleq?X'circuits.web.websockets.client (module)X%module-circuits.web.websockets.clientUtq@auh*Kh+hh]ubh8)qA}qB(hUhhhNhhqThUdesc_signatureqUh }qV(h%]qWh aUmoduleqXcdocutils.nodes reprunicode qYXcircuits.web.websockets.clientqZq[}q\bh$]h"]h#]h(]q]h aUfullnameq^XWebSocketClientq_Uclassq`UUfirstqauh*Nh+hh]qb(csphinx.addnodes desc_annotation qc)qd}qe(hXclass hhRhhThUdesc_annotationqfh }qg(h"]h#]h$]h%]h(]uh*Nh+hh]qhh4Xclass qiqj}qk(hUhhdubaubcsphinx.addnodes desc_addname ql)qm}qn(hXcircuits.web.websockets.client.hhRhhThU desc_addnameqoh }qp(h"]h#]h$]h%]h(]uh*Nh+hh]qqh4Xcircuits.web.websockets.client.qrqs}qt(hUhhmubaubcsphinx.addnodes desc_name qu)qv}qw(hh_hhRhhThU desc_nameqxh }qy(h"]h#]h$]h%]h(]uh*Nh+hh]qzh4XWebSocketClientq{q|}q}(hUhhvubaubcsphinx.addnodes desc_parameterlist q~)q}q(hUhhRhhThUdesc_parameterlistqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]q(csphinx.addnodes desc_parameter q)q}q(hXurlh }q(h"]h#]h$]h%]h(]uhhh]qh4Xurlqq}q(hUhhubahUdesc_parameterqubh)q}q(hXchannel='wsclient'h }q(h"]h#]h$]h%]h(]uhhh]qh4Xchannel='wsclient'qq}q(hUhhubahhubh)q}q(hXwschannel='ws'h }q(h"]h#]h$]h%]h(]uhhh]qh4Xwschannel='ws'qq}q(hUhhubahhubh)q}q(hX headers={}h }q(h"]h#]h$]h%]h(]uhhh]qh4X headers={}qq}q(hUhhubahhubeubeubcsphinx.addnodes desc_content q)q}q(hUhhGhhThU desc_contentqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]q(cdocutils.nodes paragraph q)q}q(hX6Bases: :class:`circuits.core.components.BaseComponent`qhhhU qhU paragraphqh }q(h"]h#]h$]h%]h(]uh*Kh+hh]q(h4XBases: qq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX/:class:`circuits.core.components.BaseComponent`qhhhhhU pending_xrefqh }q(UreftypeXclassUrefwarnqU reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqh%]h$]U refexplicith"]h#]h(]UrefdocqX"api/circuits.web.websockets.clientqUpy:classqh_U py:moduleqXcircuits.web.websockets.clientquh*Kh]qcdocutils.nodes literal q)q}q(hhh }q(h"]h#]q(UxrefqhXpy-classqeh$]h%]h(]uhhh]qh4X&circuits.core.components.BaseComponentqʅq}q(hUhhubahUliteralqubaubeubh)q}q(hXAn RFC 6455 compliant WebSocket client component. Upon receiving a :class:`circuits.web.client.Connect` event, the component tries to establish the connection to the server in a two stage process. First, a :class:`circuits.net.events.connect` event is sent to a child :class:`~.sockets.TCPClient`. When the TCP connection has been established, the HTTP request for opening the WebSocket is sent to the server. A failure in this setup process is signaled by raising an :class:`~.client.NotConnected` exception.hhhXz/home/prologic/work/circuits/circuits/web/websockets/client.py:docstring of circuits.web.websockets.client.WebSocketClientqhhh }q(h"]h#]h$]h%]h(]uh*Kh+hh]q(h4XCAn RFC 6455 compliant WebSocket client component. Upon receiving a qӅq}q(hXCAn RFC 6455 compliant WebSocket client component. Upon receiving a hhubh)q}q(hX$:class:`circuits.web.client.Connect`qhhhNhhh }q(UreftypeXclasshhXcircuits.web.client.ConnectU refdomainXpyqh%]h$]U refexplicith"]h#]h(]hhhh_hhuh*Nh]qh)q}q(hhh }q(h"]h#]q(hhXpy-classqeh$]h%]h(]uhhh]qh4Xcircuits.web.client.Connectq⅁q}q(hUhhubahhubaubh4Xg event, the component tries to establish the connection to the server in a two stage process. First, a q允q}q(hXg event, the component tries to establish the connection to the server in a two stage process. First, a hhubh)q}q(hX$:class:`circuits.net.events.connect`qhhhNhhh }q(UreftypeXclasshhXcircuits.net.events.connectU refdomainXpyqh%]h$]U refexplicith"]h#]h(]hhhh_hhuh*Nh]qh)q}q(hhh }q(h"]h#]q(hhXpy-classqeh$]h%]h(]uhhh]qh4Xcircuits.net.events.connectqq}q(hUhhubahhubaubh4X event is sent to a child qq}q(hX event is sent to a child hhubh)q}q(hX:class:`~.sockets.TCPClient`qhhhNhhh }q(UreftypeXclassU refspecificqhhXsockets.TCPClientU refdomainXpyqh%]h$]U refexplicith"]h#]h(]hhhh_hhuh*Nh]rh)r}r(hhh }r(h"]h#]r(hhXpy-classreh$]h%]h(]uhhh]rh4X TCPClientrr}r (hUhjubahhubaubh4X. When the TCP connection has been established, the HTTP request for opening the WebSocket is sent to the server. A failure in this setup process is signaled by raising an r r }r (hX. When the TCP connection has been established, the HTTP request for opening the WebSocket is sent to the server. A failure in this setup process is signaled by raising an hhubh)r }r(hX:class:`~.client.NotConnected`rhhhNhhh }r(UreftypeXclasshhhXclient.NotConnectedU refdomainXpyrh%]h$]U refexplicith"]h#]h(]hhhh_hhuh*Nh]rh)r}r(hjh }r(h"]h#]r(hjXpy-classreh$]h%]h(]uhj h]rh4X NotConnectedrr}r(hUhjubahhubaubh4X exception.rr}r(hX exception.hhubeubh)r}r (hXWhen the server accepts the request, the WebSocket connection is established and can be used very much like an ordinary socket by handling :class:`~.net.events.read` events on and sending :class:`~.net.events.write` events to the channel specified as the ``wschannel`` parameter of the constructor. Firing a :class:`~.net.events.close` event on that channel closes the connection in an orderly fashion (i.e. as specified by the WebSocket protocol).hhhhhhh }r!(h"]h#]h$]h%]h(]uh*K h+hh]r"(h4XWhen the server accepts the request, the WebSocket connection is established and can be used very much like an ordinary socket by handling r#r$}r%(hXWhen the server accepts the request, the WebSocket connection is established and can be used very much like an ordinary socket by handling hjubh)r&}r'(hX:class:`~.net.events.read`r(hjhNhhh }r)(UreftypeXclasshhhXnet.events.readU refdomainXpyr*h%]h$]U refexplicith"]h#]h(]hhhh_hhuh*Nh]r+h)r,}r-(hj(h }r.(h"]h#]r/(hj*Xpy-classr0eh$]h%]h(]uhj&h]r1h4Xreadr2r3}r4(hUhj,ubahhubaubh4X events on and sending r5r6}r7(hX events on and sending hjubh)r8}r9(hX:class:`~.net.events.write`r:hjhNhhh }r;(UreftypeXclasshhhXnet.events.writeU refdomainXpyr<h%]h$]U refexplicith"]h#]h(]hhhh_hhuh*Nh]r=h)r>}r?(hj:h }r@(h"]h#]rA(hj<Xpy-classrBeh$]h%]h(]uhj8h]rCh4XwriterDrE}rF(hUhj>ubahhubaubh4X( events to the channel specified as the rGrH}rI(hX( events to the channel specified as the hjubh)rJ}rK(hX ``wschannel``h }rL(h"]h#]h$]h%]h(]uhjh]rMh4X wschannelrNrO}rP(hUhjJubahhubh4X( parameter of the constructor. Firing a rQrR}rS(hX( parameter of the constructor. Firing a hjubh)rT}rU(hX:class:`~.net.events.close`rVhjhNhhh }rW(UreftypeXclasshhhXnet.events.closeU refdomainXpyrXh%]h$]U refexplicith"]h#]h(]hhhh_hhuh*Nh]rYh)rZ}r[(hjVh }r\(h"]h#]r](hjXXpy-classr^eh$]h%]h(]uhjTh]r_h4Xcloser`ra}rb(hUhjZubahhubaubh4Xq event on that channel closes the connection in an orderly fashion (i.e. as specified by the WebSocket protocol).rcrd}re(hXq event on that channel closes the connection in an orderly fashion (i.e. as specified by the WebSocket protocol).hjubeubcdocutils.nodes field_list rf)rg}rh(hUhhhNhU field_listrih }rj(h"]h#]h$]h%]h(]uh*Nh+hh]rkcdocutils.nodes field rl)rm}rn(hUh }ro(h"]h#]h$]h%]h(]uhjgh]rp(cdocutils.nodes field_name rq)rr}rs(hUh }rt(h"]h#]h$]h%]h(]uhjmh]ruh4X Parametersrvrw}rx(hUhjrubahU field_nameryubcdocutils.nodes field_body rz)r{}r|(hUh }r}(h"]h#]h$]h%]h(]uhjmh]r~cdocutils.nodes bullet_list r)r}r(hUh }r(h"]h#]h$]h%]h(]uhj{h]r(cdocutils.nodes list_item r)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]rh)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]r(cdocutils.nodes strong r)r}r(hXurlh }r(h"]h#]h$]h%]h(]uhjh]rh4Xurlrr}r(hUhjubahUstrongrubh4X -- rr}r(hUhjubh4Xthe URL to connect to.rr}r(hXthe URL to connect to.rhjubehhubahU list_itemrubj)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]rh)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]r(j)r}r(hXchannelh }r(h"]h#]h$]h%]h(]uhjh]rh4Xchannelrr}r(hUhjubahjubh4X -- rr}r(hUhjubh4X"the channel used by this componentrr}r(hX"the channel used by this componentrhjubehhubahjubj)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]rh)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]r(j)r}r(hX wschannelh }r(h"]h#]h$]h%]h(]uhjh]rh4X wschannelrr}r(hUhjubahjubh4X -- rr}r(hUhjubh4XSthe channel used for the actual WebSocket communication (read, write, close events)rr}r(hXSthe channel used for the actual WebSocket communication (read, write, close events)rhjubehhubahjubj)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]rh)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]r(j)r}r(hXheadersh }r(h"]h#]h$]h%]h(]uhjh]rh4Xheadersrr}r(hUhjubahjubh4X -- rr}r(hUhjubh4XEadditional headers to be passed with the WebSocket setup HTTP requestrr}r(hXEadditional headers to be passed with the WebSocket setup HTTP requestrhjubehhubahjubehU bullet_listrubahU field_bodyrubehUfieldrubaubh8)r}r(hUhhhNhhrhhUh }r(h%]rhahXhYXcircuits.web.websockets.clientrr}rbh$]h"]h#]h(]rhah^XWebSocketClient.channelh`h_hauh*Nh+hh]r(hu)r}r(hXchannelhjhjhhxh }r(h"]h#]h$]h%]h(]uh*Nh+hh]rh4Xchannelrr}r(hUhjubaubhc)r}r(hX = 'wsclient'hjhjhhfh }r(h"]h#]h$]h%]h(]uh*Nh+hh]rh4X = 'wsclient'rr}r(hUhjubaubeubh)r}r(hUhjhjhhh }r(h"]h#]h$]h%]h(]uh*Nh+hh]ubeubh8)r}r (hUhhhNhh(h"]h#]h$]h%]h(]uh*Nh+hh]r?h4X connectedr@rA}rB(hUhj<ubaubaubh)rC}rD(hUhj-hhThhh }rE(h"]h#]h$]h%]h(]uh*Nh+hh]ubeubeubeubeubahUU transformerrFNU footnote_refsrG}rHUrefnamesrI}rJUsymbol_footnotesrK]rLUautofootnote_refsrM]rNUsymbol_footnote_refsrO]rPU citationsrQ]rRh+hU current_linerSNUtransform_messagesrT]rUUreporterrVNUid_startrWKU autofootnotesrX]rYU citation_refsrZ}r[Uindirect_targetsr\]r]Usettingsr^(cdocutils.frontend Values r_or`}ra(Ufootnote_backlinksrbKUrecord_dependenciesrcNU rfc_base_urlrdUhttp://tools.ietf.org/html/reU tracebackrfUpep_referencesrgNUstrip_commentsrhNU toc_backlinksriUentryrjU language_coderkUenrlU datestamprmNU report_levelrnKU _destinationroNU halt_levelrpKU strip_classesrqNh1NUerror_encoding_error_handlerrrUbackslashreplacersUdebugrtNUembed_stylesheetruUoutput_encoding_error_handlerrvUstrictrwU sectnum_xformrxKUdump_transformsryNU docinfo_xformrzKUwarning_streamr{NUpep_file_url_templater|Upep-%04dr}Uexit_status_levelr~KUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjwUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(h'cdocutils.nodes target r)r}r(hUhhhh;hUtargetrh }r(h"]h%]rh'ah$]Uismodh#]h(]uh*Kh+hh]ubh jhj2h hRhjhhuUsubstitution_namesr}rhh+h }r(h"]h%]h$]Usourcehh#]h(]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.client.doctree0000644000014400001440000005250512425011104026163 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X circuits.web.client.Client.closeqX"circuits.web.client.Client.channelqX!circuits.web.client.HTTPExceptionqX"circuits.web.client.Client.connectq Xcircuits.web.client.requestq Xcircuits.web.client.parse_urlq Xcircuits.web.client moduleq NXcircuits.web.client.Clientq X$circuits.web.client.Client.connectedqX circuits.web.client.NotConnectedqX circuits.web.client.request.nameqX#circuits.web.client.Client.responseqX circuits.web.client.Client.writeqX"circuits.web.client.Client.requestquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh h h h h h h Ucircuits-web-client-moduleqh h hhhhhhhhhhhhuUchildrenq]qcdocutils.nodes section q )q!}q"(U rawsourceq#UUparentq$hUsourceq%XD/home/prologic/work/circuits/docs/source/api/circuits.web.client.rstq&Utagnameq'Usectionq(U attributesq)}q*(Udupnamesq+]Uclassesq,]Ubackrefsq-]Uidsq.]q/(Xmodule-circuits.web.clientq0heUnamesq1]q2h auUlineq3KUdocumentq4hh]q5(cdocutils.nodes title q6)q7}q8(h#Xcircuits.web.client moduleq9h$h!h%h&h'Utitleq:h)}q;(h+]h,]h-]h.]h1]uh3Kh4hh]qq?}q@(h#h9h$h7ubaubcsphinx.addnodes index qA)qB}qC(h#Uh$h!h%U qDh'UindexqEh)}qF(h.]h-]h+]h,]h1]Uentries]qG(UsingleqHXcircuits.web.client (module)Xmodule-circuits.web.clientUtqIauh3Kh4hh]ubhA)qJ}qK(h#Uh$h!h%Nh'hEh)}qL(h.]h-]h+]h,]h1]Uentries]qM(hHX+parse_url() (in module circuits.web.client)h UtqNauh3Nh4hh]ubcsphinx.addnodes desc qO)qP}qQ(h#Uh$h!h%Nh'UdescqRh)}qS(UnoindexqTUdomainqUXpyh.]h-]h+]h,]h1]UobjtypeqVXfunctionqWUdesctypeqXhWuh3Nh4hh]qY(csphinx.addnodes desc_signature qZ)q[}q\(h#Xparse_url(url)h$hPh%U q]h'Udesc_signatureq^h)}q_(h.]q`h aUmoduleqacdocutils.nodes reprunicode qbXcircuits.web.clientqcqd}qebh-]h+]h,]h1]qfh aUfullnameqgX parse_urlqhUclassqiUUfirstqjuh3Nh4hh]qk(csphinx.addnodes desc_addname ql)qm}qn(h#Xcircuits.web.client.h$h[h%h]h'U desc_addnameqoh)}qp(h+]h,]h-]h.]h1]uh3Nh4hh]qqh=Xcircuits.web.client.qrqs}qt(h#Uh$hmubaubcsphinx.addnodes desc_name qu)qv}qw(h#hhh$h[h%h]h'U desc_nameqxh)}qy(h+]h,]h-]h.]h1]uh3Nh4hh]qzh=X parse_urlq{q|}q}(h#Uh$hvubaubcsphinx.addnodes desc_parameterlist q~)q}q(h#Uh$h[h%h]h'Udesc_parameterlistqh)}q(h+]h,]h-]h.]h1]uh3Nh4hh]qcsphinx.addnodes desc_parameter q)q}q(h#Xurlh)}q(h+]h,]h-]h.]h1]uh$hh]qh=Xurlqq}q(h#Uh$hubah'Udesc_parameterqubaubeubcsphinx.addnodes desc_content q)q}q(h#Uh$hPh%h]h'U desc_contentqh)}q(h+]h,]h-]h.]h1]uh3Nh4hh]ubeubhA)q}q(h#Uh$h!h%U qh'hEh)}q(h.]h-]h+]h,]h1]Uentries]q(hHX HTTPExceptionqhUtqauh3Nh4hh]ubhO)q}q(h#Uh$h!h%hh'hRh)}q(hThUXpyh.]h-]h+]h,]h1]hVX exceptionqhXhuh3Nh4hh]q(hZ)q}q(h#hh$hh%h]h'h^h)}q(h.]qhahahbXcircuits.web.clientqq}qbh-]h+]h,]h1]qhahghhiUhjuh3Nh4hh]q(csphinx.addnodes desc_annotation q)q}q(h#X exception h$hh%h]h'Udesc_annotationqh)}q(h+]h,]h-]h.]h1]uh3Nh4hh]qh=X exception qq}q(h#Uh$hubaubhl)q}q(h#Xcircuits.web.client.h$hh%h]h'hoh)}q(h+]h,]h-]h.]h1]uh3Nh4hh]qh=Xcircuits.web.client.qq}q(h#Uh$hubaubhu)q}q(h#hh$hh%h]h'hxh)}q(h+]h,]h-]h.]h1]uh3Nh4hh]qh=X HTTPExceptionqq}q(h#Uh$hubaubeubh)q}q(h#Uh$hh%h]h'hh)}q(h+]h,]h-]h.]h1]uh3Nh4hh]qcdocutils.nodes paragraph q)q}q(h#X$Bases: :class:`exceptions.Exception`h$hh%hh'U paragraphqh)}q(h+]h,]h-]h.]h1]uh3Kh4hh]q(h=XBases: qȅq}q(h#XBases: h$hubcsphinx.addnodes pending_xref q)q}q(h#X:class:`exceptions.Exception`qh$hh%Nh'U pending_xrefqh)}q(UreftypeXclassUrefwarnqщU reftargetqXexceptions.ExceptionU refdomainXpyqh.]h-]U refexplicith+]h,]h1]UrefdocqXapi/circuits.web.clientqUpy:classqhU py:moduleqXcircuits.web.clientquh3Nh]qcdocutils.nodes literal q)q}q(h#hh)}q(h+]h,]q(UxrefqhXpy-classqeh-]h.]h1]uh$hh]qh=Xexceptions.Exceptionq⅁q}q(h#Uh$hubah'UliteralqubaubeubaubeubhA)q}q(h#Uh$h!h%hh'hEh)}q(h.]h-]h+]h,]h1]Uentries]q(hHX NotConnectedqhUtqauh3Nh4hh]ubhO)q}q(h#Uh$h!h%hh'hRh)}q(hThUXpyh.]h-]h+]h,]h1]hVX exceptionqhXhuh3Nh4hh]q(hZ)q}q(h#hh$hh%h]h'h^h)}q(h.]qhahahbXcircuits.web.clientqq}qbh-]h+]h,]h1]qhahghhiUhjuh3Nh4hh]q(h)q}q(h#X exception h$hh%h]h'hh)}q(h+]h,]h-]h.]h1]uh3Nh4hh]qh=X exception qq}r(h#Uh$hubaubhl)r}r(h#Xcircuits.web.client.h$hh%h]h'hoh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=Xcircuits.web.client.rr}r(h#Uh$jubaubhu)r}r (h#hh$hh%h]h'hxh)}r (h+]h,]h-]h.]h1]uh3Nh4hh]r h=X NotConnectedr r }r(h#Uh$jubaubeubh)r}r(h#Uh$hh%h]h'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh)r}r(h#X1Bases: :class:`circuits.web.client.HTTPException`h$jh%hh'hh)}r(h+]h,]h-]h.]h1]uh3Kh4hh]r(h=XBases: rr}r(h#XBases: h$jubh)r}r(h#X*:class:`circuits.web.client.HTTPException`rh$jh%Nh'hh)}r(UreftypeXclasshщhX!circuits.web.client.HTTPExceptionU refdomainXpyrh.]h-]U refexplicith+]h,]h1]hhhhhhuh3Nh]rh)r }r!(h#jh)}r"(h+]h,]r#(hjXpy-classr$eh-]h.]h1]uh$jh]r%h=X!circuits.web.client.HTTPExceptionr&r'}r((h#Uh$j ubah'hubaubeubaubeubhA)r)}r*(h#Uh$h!h%Nh'hEh)}r+(h.]h-]h+]h,]h1]Uentries]r,(hHX&request (class in circuits.web.client)h Utr-auh3Nh4hh]ubhO)r.}r/(h#Uh$h!h%Nh'hRh)}r0(hThUXpyr1h.]h-]h+]h,]h1]hVXclassr2hXj2uh3Nh4hh]r3(hZ)r4}r5(h#X,request(method, path, body=None, headers={})h$j.h%h]h'h^h)}r6(h.]r7h ahahbXcircuits.web.clientr8r9}r:bh-]h+]h,]h1]r;h ahgXrequestr<hiUhjuh3Nh4hh]r=(h)r>}r?(h#Xclass h$j4h%h]h'hh)}r@(h+]h,]h-]h.]h1]uh3Nh4hh]rAh=Xclass rBrC}rD(h#Uh$j>ubaubhl)rE}rF(h#Xcircuits.web.client.h$j4h%h]h'hoh)}rG(h+]h,]h-]h.]h1]uh3Nh4hh]rHh=Xcircuits.web.client.rIrJ}rK(h#Uh$jEubaubhu)rL}rM(h#j<h$j4h%h]h'hxh)}rN(h+]h,]h-]h.]h1]uh3Nh4hh]rOh=XrequestrPrQ}rR(h#Uh$jLubaubh~)rS}rT(h#Uh$j4h%h]h'hh)}rU(h+]h,]h-]h.]h1]uh3Nh4hh]rV(h)rW}rX(h#Xmethodh)}rY(h+]h,]h-]h.]h1]uh$jSh]rZh=Xmethodr[r\}r](h#Uh$jWubah'hubh)r^}r_(h#Xpathh)}r`(h+]h,]h-]h.]h1]uh$jSh]rah=Xpathrbrc}rd(h#Uh$j^ubah'hubh)re}rf(h#X body=Noneh)}rg(h+]h,]h-]h.]h1]uh$jSh]rhh=X body=Nonerirj}rk(h#Uh$jeubah'hubh)rl}rm(h#X headers={}h)}rn(h+]h,]h-]h.]h1]uh$jSh]roh=X headers={}rprq}rr(h#Uh$jlubah'hubeubeubh)rs}rt(h#Uh$j.h%h]h'hh)}ru(h+]h,]h-]h.]h1]uh3Nh4hh]rv(h)rw}rx(h#X*Bases: :class:`circuits.core.events.Event`h$jsh%hh'hh)}ry(h+]h,]h-]h.]h1]uh3Kh4hh]rz(h=XBases: r{r|}r}(h#XBases: h$jwubh)r~}r(h#X#:class:`circuits.core.events.Event`rh$jwh%Nh'hh)}r(UreftypeXclasshщhXcircuits.core.events.EventU refdomainXpyrh.]h-]U refexplicith+]h,]h1]hhhj<hhuh3Nh]rh)r}r(h#jh)}r(h+]h,]r(hjXpy-classreh-]h.]h1]uh$j~h]rh=Xcircuits.core.events.Eventrr}r(h#Uh$jubah'hubaubeubh)r}r(h#X request Eventrh$jsh%X\/home/prologic/work/circuits/circuits/web/client.py:docstring of circuits.web.client.requestrh'hh)}r(h+]h,]h-]h.]h1]uh3Kh4hh]rh=X request Eventrr}r(h#jh$jubaubh)r}r(h#X-This Event is used to initiate a new request.rh$jsh%jh'hh)}r(h+]h,]h-]h.]h1]uh3Kh4hh]rh=X-This Event is used to initiate a new request.rr}r(h#jh$jubaubcdocutils.nodes field_list r)r}r(h#Uh$jsh%Nh'U field_listrh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rcdocutils.nodes field r)r}r(h#Uh)}r(h+]h,]h-]h.]h1]uh$jh]r(cdocutils.nodes field_name r)r}r(h#Uh)}r(h+]h,]h-]h.]h1]uh$jh]rh=X Parametersrr}r(h#Uh$jubah'U field_namerubcdocutils.nodes field_body r)r}r(h#Uh)}r(h+]h,]h-]h.]h1]uh$jh]rcdocutils.nodes bullet_list r)r}r(h#Uh)}r(h+]h,]h-]h.]h1]uh$jh]r(cdocutils.nodes list_item r)r}r(h#Uh)}r(h+]h,]h-]h.]h1]uh$jh]rh)r}r(h#Uh)}r(h+]h,]h-]h.]h1]uh$jh]r(cdocutils.nodes strong r)r}r(h#Xmethodh)}r(h+]h,]h-]h.]h1]uh$jh]rh=Xmethodrr}r(h#Uh$jubah'Ustrongrubh=X (rr}r(h#Uh$jubh)r}r(h#Uh)}r(UreftypeUobjrU reftargetXstrrU refdomainj1h.]h-]U refexplicith+]h,]h1]uh$jh]rcdocutils.nodes emphasis r)r}r(h#jh)}r(h+]h,]h-]h.]h1]uh$jh]rh=Xstrrr}r(h#Uh$jubah'Uemphasisrubah'hubh=X)r}r(h#Uh$jubh=X -- rr}r(h#Uh$jubh=X$HTTP Method (PUT, GET, POST, DELETE)rr}r(h#X$HTTP Method (PUT, GET, POST, DELETE)rh$jubeh'hubah'U list_itemrubj)r}r(h#Uh)}r(h+]h,]h-]h.]h1]uh$jh]rh)r}r(h#Uh)}r(h+]h,]h-]h.]h1]uh$jh]r(j)r}r(h#Xurlh)}r(h+]h,]h-]h.]h1]uh$jh]rh=Xurlrr}r(h#Uh$jubah'jubh=X (rr}r(h#Uh$jubh)r}r(h#Uh)}r(UreftypejU reftargetXstrrU refdomainj1h.]h-]U refexplicith+]h,]h1]uh$jh]rj)r}r(h#jh)}r(h+]h,]h-]h.]h1]uh$jh]rh=Xstrrr}r(h#Uh$jubah'jubah'hubh=X)r}r (h#Uh$jubh=X -- r r }r (h#Uh$jubh=X Request URLr r}r(h#X Request URLrh$jubeh'hubah'jubeh'U bullet_listrubah'U field_bodyrubeh'Ufieldrubaubh)r}r(h#XDx.__init__(...) initializes x; see x.__class__.__doc__ for signaturerh$jsh%jh'hh)}r(h+]h,]h-]h.]h1]uh3K h4hh]rh=XDx.__init__(...) initializes x; see x.__class__.__doc__ for signaturerr}r(h#jh$jubaubhA)r}r(h#Uh$jsh%Nh'hEh)}r(h.]h-]h+]h,]h1]Uentries]r(hHX,name (circuits.web.client.request attribute)hUtr auh3Nh4hh]ubhO)r!}r"(h#Uh$jsh%Nh'hRh)}r#(hThUXpyh.]h-]h+]h,]h1]hVX attributer$hXj$uh3Nh4hh]r%(hZ)r&}r'(h#X request.nameh$j!h%U r(h'h^h)}r)(h.]r*hahahbXcircuits.web.clientr+r,}r-bh-]h+]h,]h1]r.hahgX request.namehij<hjuh3Nh4hh]r/(hu)r0}r1(h#Xnameh$j&h%j(h'hxh)}r2(h+]h,]h-]h.]h1]uh3Nh4hh]r3h=Xnamer4r5}r6(h#Uh$j0ubaubh)r7}r8(h#X = 'request'h$j&h%j(h'hh)}r9(h+]h,]h-]h.]h1]uh3Nh4hh]r:h=X = 'request'r;r<}r=(h#Uh$j7ubaubeubh)r>}r?(h#Uh$j!h%j(h'hh)}r@(h+]h,]h-]h.]h1]uh3Nh4hh]ubeubeubeubhA)rA}rB(h#Uh$h!h%Nh'hEh)}rC(h.]h-]h+]h,]h1]Uentries]rD(hHX%Client (class in circuits.web.client)h UtrEauh3Nh4hh]ubhO)rF}rG(h#Uh$h!h%Nh'hRh)}rH(hThUXpyh.]h-]h+]h,]h1]hVXclassrIhXjIuh3Nh4hh]rJ(hZ)rK}rL(h#XClient(channel='client')rMh$jFh%h]h'h^h)}rN(h.]rOh ahahbXcircuits.web.clientrPrQ}rRbh-]h+]h,]h1]rSh ahgXClientrThiUhjuh3Nh4hh]rU(h)rV}rW(h#Xclass h$jKh%h]h'hh)}rX(h+]h,]h-]h.]h1]uh3Nh4hh]rYh=Xclass rZr[}r\(h#Uh$jVubaubhl)r]}r^(h#Xcircuits.web.client.h$jKh%h]h'hoh)}r_(h+]h,]h-]h.]h1]uh3Nh4hh]r`h=Xcircuits.web.client.rarb}rc(h#Uh$j]ubaubhu)rd}re(h#jTh$jKh%h]h'hxh)}rf(h+]h,]h-]h.]h1]uh3Nh4hh]rgh=XClientrhri}rj(h#Uh$jdubaubh~)rk}rl(h#Uh$jKh%h]h'hh)}rm(h+]h,]h-]h.]h1]uh3Nh4hh]rnh)ro}rp(h#Xchannel='client'h)}rq(h+]h,]h-]h.]h1]uh$jkh]rrh=Xchannel='client'rsrt}ru(h#Uh$joubah'hubaubeubh)rv}rw(h#Uh$jFh%h]h'hh)}rx(h+]h,]h-]h.]h1]uh3Nh4hh]ry(h)rz}r{(h#X6Bases: :class:`circuits.core.components.BaseComponent`r|h$jvh%hh'hh)}r}(h+]h,]h-]h.]h1]uh3Kh4hh]r~(h=XBases: rr}r(h#XBases: h$jzubh)r}r(h#X/:class:`circuits.core.components.BaseComponent`rh$jzh%Nh'hh)}r(UreftypeXclasshщhX&circuits.core.components.BaseComponentU refdomainXpyrh.]h-]U refexplicith+]h,]h1]hhhjThhuh3Nh]rh)r}r(h#jh)}r(h+]h,]r(hjXpy-classreh-]h.]h1]uh$jh]rh=X&circuits.core.components.BaseComponentrr}r(h#Uh$jubah'hubaubeubhA)r}r(h#Uh$jvh%Nh'hEh)}r(h.]h-]h+]h,]h1]Uentries]r(hHX.channel (circuits.web.client.Client attribute)hUtrauh3Nh4hh]ubhO)r}r(h#Uh$jvh%Nh'hRh)}r(hThUXpyh.]h-]h+]h,]h1]hVX attributerhXjuh3Nh4hh]r(hZ)r}r(h#XClient.channelh$jh%j(h'h^h)}r(h.]rhahahbXcircuits.web.clientrr}rbh-]h+]h,]h1]rhahgXClient.channelhijThjuh3Nh4hh]r(hu)r}r(h#Xchannelh$jh%j(h'hxh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=Xchannelrr}r(h#Uh$jubaubh)r}r(h#X = 'client'h$jh%j(h'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=X = 'client'rr}r(h#Uh$jubaubeubh)r}r(h#Uh$jh%j(h'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]ubeubhA)r}r(h#Uh$jvh%Nh'hEh)}r(h.]h-]h+]h,]h1]Uentries]r(hHX+write() (circuits.web.client.Client method)hUtrauh3Nh4hh]ubhO)r}r(h#Uh$jvh%Nh'hRh)}r(hThUXpyh.]h-]h+]h,]h1]hVXmethodrhXjuh3Nh4hh]r(hZ)r}r(h#XClient.write(data)h$jh%h]h'h^h)}r(h.]rhahahbXcircuits.web.clientrr}rbh-]h+]h,]h1]rhahgX Client.writehijThjuh3Nh4hh]r(hu)r}r(h#Xwriteh$jh%h]h'hxh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=Xwriterr}r(h#Uh$jubaubh~)r}r(h#Uh$jh%h]h'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh)r}r(h#Xdatah)}r(h+]h,]h-]h.]h1]uh$jh]rh=Xdatarr}r(h#Uh$jubah'hubaubeubh)r}r(h#Uh$jh%h]h'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]ubeubhA)r}r(h#Uh$jvh%Nh'hEh)}r(h.]h-]h+]h,]h1]Uentries]r(hHX+close() (circuits.web.client.Client method)hUtrauh3Nh4hh]ubhO)r}r(h#Uh$jvh%Nh'hRh)}r(hThUXpyh.]h-]h+]h,]h1]hVXmethodrhXjuh3Nh4hh]r(hZ)r}r(h#XClient.close()h$jh%h]h'h^h)}r(h.]rhahahbXcircuits.web.clientrr}rbh-]h+]h,]h1]rhahgX Client.closehijThjuh3Nh4hh]r(hu)r}r(h#Xcloseh$jh%h]h'hxh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=Xcloserr}r(h#Uh$jubaubh~)r}r(h#Uh$jh%h]h'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]ubeubh)r}r(h#Uh$jh%h]h'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]ubeubhA)r}r(h#Uh$jvh%Nh'hEh)}r(h.]h-]h+]h,]h1]Uentries]r(hHX-connect() (circuits.web.client.Client method)h Utrauh3Nh4hh]ubhO)r}r(h#Uh$jvh%Nh'hRh)}r(hThUXpyh.]h-]h+]h,]h1]hVXmethodrhXjuh3Nh4hh]r(hZ)r}r(h#X8Client.connect(event, host=None, port=None, secure=None)h$jh%h]h'h^h)}r (h.]r h ahahbXcircuits.web.clientr r }r bh-]h+]h,]h1]rh ahgXClient.connecthijThjuh3Nh4hh]r(hu)r}r(h#Xconnecth$jh%h]h'hxh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=Xconnectrr}r(h#Uh$jubaubh~)r}r(h#Uh$jh%h]h'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]r(h)r}r(h#Xeventh)}r(h+]h,]h-]h.]h1]uh$jh]rh=Xeventrr }r!(h#Uh$jubah'hubh)r"}r#(h#X host=Noneh)}r$(h+]h,]h-]h.]h1]uh$jh]r%h=X host=Noner&r'}r((h#Uh$j"ubah'hubh)r)}r*(h#X port=Noneh)}r+(h+]h,]h-]h.]h1]uh$jh]r,h=X port=Noner-r.}r/(h#Uh$j)ubah'hubh)r0}r1(h#X secure=Noneh)}r2(h+]h,]h-]h.]h1]uh$jh]r3h=X secure=Noner4r5}r6(h#Uh$j0ubah'hubeubeubh)r7}r8(h#Uh$jh%h]h'hh)}r9(h+]h,]h-]h.]h1]uh3Nh4hh]ubeubhA)r:}r;(h#Uh$jvh%Nh'hEh)}r<(h.]h-]h+]h,]h1]Uentries]r=(hHX-request() (circuits.web.client.Client method)hUtr>auh3Nh4hh]ubhO)r?}r@(h#Uh$jvh%Nh'hRh)}rA(hThUXpyh.]h-]h+]h,]h1]hVXmethodrBhXjBuh3Nh4hh]rC(hZ)rD}rE(h#X2Client.request(method, url, body=None, headers={})h$j?h%h]h'h^h)}rF(h.]rGhahahbXcircuits.web.clientrHrI}rJbh-]h+]h,]h1]rKhahgXClient.requesthijThjuh3Nh4hh]rL(hu)rM}rN(h#Xrequesth$jDh%h]h'hxh)}rO(h+]h,]h-]h.]h1]uh3Nh4hh]rPh=XrequestrQrR}rS(h#Uh$jMubaubh~)rT}rU(h#Uh$jDh%h]h'hh)}rV(h+]h,]h-]h.]h1]uh3Nh4hh]rW(h)rX}rY(h#Xmethodh)}rZ(h+]h,]h-]h.]h1]uh$jTh]r[h=Xmethodr\r]}r^(h#Uh$jXubah'hubh)r_}r`(h#Xurlh)}ra(h+]h,]h-]h.]h1]uh$jTh]rbh=Xurlrcrd}re(h#Uh$j_ubah'hubh)rf}rg(h#X body=Noneh)}rh(h+]h,]h-]h.]h1]uh$jTh]rih=X body=Nonerjrk}rl(h#Uh$jfubah'hubh)rm}rn(h#X headers={}h)}ro(h+]h,]h-]h.]h1]uh$jTh]rph=X headers={}rqrr}rs(h#Uh$jmubah'hubeubeubh)rt}ru(h#Uh$j?h%h]h'hh)}rv(h+]h,]h-]h.]h1]uh3Nh4hh]ubeubhA)rw}rx(h#Uh$jvh%Nh'hEh)}ry(h.]h-]h+]h,]h1]Uentries]rz(hHX0connected (circuits.web.client.Client attribute)hUtr{auh3Nh4hh]ubhO)r|}r}(h#Uh$jvh%Nh'hRh)}r~(hThUXpyh.]h-]h+]h,]h1]hVX attributerhXjuh3Nh4hh]r(hZ)r}r(h#XClient.connectedh$j|h%h]h'h^h)}r(h.]rhahahbXcircuits.web.clientrr}rbh-]h+]h,]h1]rhahgXClient.connectedhijThjuh3Nh4hh]rhu)r}r(h#X connectedh$jh%h]h'hxh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=X connectedrr}r(h#Uh$jubaubaubh)r}r(h#Uh$j|h%h]h'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]ubeubhA)r}r(h#Uh$jvh%Nh'hEh)}r(h.]h-]h+]h,]h1]Uentries]r(hHX/response (circuits.web.client.Client attribute)hUtrauh3Nh4hh]ubhO)r}r(h#Uh$jvh%Nh'hRh)}r(hThUXpyh.]h-]h+]h,]h1]hVX attributerhXjuh3Nh4hh]r(hZ)r}r(h#XClient.responserh$jh%h]h'h^h)}r(h.]rhahahbXcircuits.web.clientrr}rbh-]h+]h,]h1]rhahgXClient.responsehijThjuh3Nh4hh]rhu)r}r(h#Xresponseh$jh%h]h'hxh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=Xresponserr}r(h#Uh$jubaubaubh)r}r(h#Uh$jh%h]h'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]ubeubeubeubeubah#UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh4hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh:NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh&Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixr Uidr Udoctitle_xformr Ustrip_elements_with_classesr NU _config_filesr ]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hjhh!hjhhh jh j4h h[h0cdocutils.nodes target r)r}r(h#Uh$h!h%hDh'Utargetrh)}r(h+]h.]rh0ah-]Uismodh,]h1]uh3Kh4hh]ubh jKhjhhhj&hjhjhjDuUsubstitution_namesr}rh'h4h)}r(h+]h.]h-]Usourceh&h,]h1]uU footnotesr]rUrefidsr}r ub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.loggers.doctree0000644000014400001440000002453212425011105026347 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X"circuits.web.loggers.Logger.formatqXcircuits.web.loggers moduleqNXcircuits.web.loggers.formattimeqXcircuits.web.loggers.Logger.logq X(circuits.web.loggers.Logger.log_responseq X#circuits.web.loggers.Logger.channelq Xcircuits.web.loggers.Loggerq uUsubstitution_defsq }qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhUcircuits-web-loggers-moduleqhhh h h h h h h h uUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXE/home/prologic/work/circuits/docs/source/api/circuits.web.loggers.rstqUtagnameq Usectionq!U attributesq"}q#(Udupnamesq$]Uclassesq%]Ubackrefsq&]Uidsq']q((Xmodule-circuits.web.loggersq)heUnamesq*]q+hauUlineq,KUdocumentq-hh]q.(cdocutils.nodes title q/)q0}q1(hXcircuits.web.loggers moduleq2hhhhh Utitleq3h"}q4(h$]h%]h&]h']h*]uh,Kh-hh]q5cdocutils.nodes Text q6Xcircuits.web.loggers moduleq7q8}q9(hh2hh0ubaubcsphinx.addnodes index q:)q;}q<(hUhhhU q=h Uindexq>h"}q?(h']h&]h$]h%]h*]Uentries]q@(UsingleqAXcircuits.web.loggers (module)Xmodule-circuits.web.loggersUtqBauh,Kh-hh]ubcdocutils.nodes paragraph qC)qD}qE(hXLogger ComponentqFhhhXV/home/prologic/work/circuits/circuits/web/loggers.py:docstring of circuits.web.loggersqGh U paragraphqHh"}qI(h$]h%]h&]h']h*]uh,Kh-hh]qJh6XLogger ComponentqKqL}qM(hhFhhDubaubhC)qN}qO(hX)This module implements Logger Components.qPhhhhGh hHh"}qQ(h$]h%]h&]h']h*]uh,Kh-hh]qRh6X)This module implements Logger Components.qSqT}qU(hhPhhNubaubh:)qV}qW(hUhhhNh h>h"}qX(h']h&]h$]h%]h*]Uentries]qY(hAX-formattime() (in module circuits.web.loggers)hUtqZauh,Nh-hh]ubcsphinx.addnodes desc q[)q\}q](hUhhhNh Udescq^h"}q_(Unoindexq`UdomainqaXpyh']h&]h$]h%]h*]UobjtypeqbXfunctionqcUdesctypeqdhcuh,Nh-hh]qe(csphinx.addnodes desc_signature qf)qg}qh(hX formattime()hh\hU qih Udesc_signatureqjh"}qk(h']qlhaUmoduleqmcdocutils.nodes reprunicode qnXcircuits.web.loggersqoqp}qqbh&]h$]h%]h*]qrhaUfullnameqsX formattimeqtUclassquUUfirstqvuh,Nh-hh]qw(csphinx.addnodes desc_addname qx)qy}qz(hXcircuits.web.loggers.hhghhih U desc_addnameq{h"}q|(h$]h%]h&]h']h*]uh,Nh-hh]q}h6Xcircuits.web.loggers.q~q}q(hUhhyubaubcsphinx.addnodes desc_name q)q}q(hhthhghhih U desc_nameqh"}q(h$]h%]h&]h']h*]uh,Nh-hh]qh6X formattimeqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhghhih Udesc_parameterlistqh"}q(h$]h%]h&]h']h*]uh,Nh-hh]ubeubcsphinx.addnodes desc_content q)q}q(hUhh\hhih U desc_contentqh"}q(h$]h%]h&]h']h*]uh,Nh-hh]ubeubh:)q}q(hUhhhNh h>h"}q(h']h&]h$]h%]h*]Uentries]q(hAX&Logger (class in circuits.web.loggers)h Utqauh,Nh-hh]ubh[)q}q(hUhhhNh h^h"}q(h`haXpyh']h&]h$]h%]h*]hbXclassqhdhuh,Nh-hh]q(hf)q}q(hX(Logger(file=None, logger=None, **kwargs)hhhhih hjh"}q(h']qh ahmhnXcircuits.web.loggersqq}qbh&]h$]h%]h*]qh ahsXLoggerqhuUhvuh,Nh-hh]q(csphinx.addnodes desc_annotation q)q}q(hXclass hhhhih Udesc_annotationqh"}q(h$]h%]h&]h']h*]uh,Nh-hh]qh6Xclass qq}q(hUhhubaubhx)q}q(hXcircuits.web.loggers.hhhhih h{h"}q(h$]h%]h&]h']h*]uh,Nh-hh]qh6Xcircuits.web.loggers.qq}q(hUhhubaubh)q}q(hhhhhhih hh"}q(h$]h%]h&]h']h*]uh,Nh-hh]qh6XLoggerqq}q(hUhhubaubh)q}q(hUhhhhih hh"}q(h$]h%]h&]h']h*]uh,Nh-hh]q(csphinx.addnodes desc_parameter q)q}q(hX file=Noneh"}q(h$]h%]h&]h']h*]uhhh]qh6X file=Noneqȅq}q(hUhhubah Udesc_parameterqubh)q}q(hX logger=Noneh"}q(h$]h%]h&]h']h*]uhhh]qh6X logger=NoneqЅq}q(hUhhubah hubh)q}q(hX**kwargsh"}q(h$]h%]h&]h']h*]uhhh]qh6X**kwargsqׅq}q(hUhhubah hubeubeubh)q}q(hUhhhhih hh"}q(h$]h%]h&]h']h*]uh,Nh-hh]q(hC)q}q(hX6Bases: :class:`circuits.core.components.BaseComponent`qhhhU qh hHh"}q(h$]h%]h&]h']h*]uh,Kh-hh]q(h6XBases: q䅁q}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX/:class:`circuits.core.components.BaseComponent`qhhhNh U pending_xrefqh"}q(UreftypeXclassUrefwarnqU reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqh']h&]U refexplicith$]h%]h*]UrefdocqXapi/circuits.web.loggersqUpy:classqhU py:moduleqXcircuits.web.loggersquh,Nh]qcdocutils.nodes literal q)q}q(hhh"}q(h$]h%]q(UxrefqhXpy-classqeh&]h']h*]uhhh]qh6X&circuits.core.components.BaseComponentqq}r(hUhhubah Uliteralrubaubeubh:)r}r(hUhhhNh h>h"}r(h']h&]h$]h%]h*]Uentries]r(hAX/channel (circuits.web.loggers.Logger attribute)h Utrauh,Nh-hh]ubh[)r}r(hUhhhNh h^h"}r (h`haXpyh']h&]h$]h%]h*]hbX attributer hdj uh,Nh-hh]r (hf)r }r (hXLogger.channelhjhU rh hjh"}r(h']rh ahmhnXcircuits.web.loggersrr}rbh&]h$]h%]h*]rh ahsXLogger.channelhuhhvuh,Nh-hh]r(h)r}r(hXchannelhj hjh hh"}r(h$]h%]h&]h']h*]uh,Nh-hh]rh6Xchannelrr}r(hUhjubaubh)r}r(hX = 'web'hj hjh hh"}r(h$]h%]h&]h']h*]uh,Nh-hh]r h6X = 'web'r!r"}r#(hUhjubaubeubh)r$}r%(hUhjhjh hh"}r&(h$]h%]h&]h']h*]uh,Nh-hh]ubeubh:)r'}r((hUhhhNh h>h"}r)(h']h&]h$]h%]h*]Uentries]r*(hAX.format (circuits.web.loggers.Logger attribute)hUtr+auh,Nh-hh]ubh[)r,}r-(hUhhhNh h^h"}r.(h`haXpyh']h&]h$]h%]h*]hbX attributer/hdj/uh,Nh-hh]r0(hf)r1}r2(hX Logger.formathj,hjh hjh"}r3(h']r4hahmhnXcircuits.web.loggersr5r6}r7bh&]h$]h%]h*]r8hahsX Logger.formathuhhvuh,Nh-hh]r9(h)r:}r;(hXformathj1hjh hh"}r<(h$]h%]h&]h']h*]uh,Nh-hh]r=h6Xformatr>r?}r@(hUhj:ubaubh)rA}rB(hX@ = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"'hj1hjh hh"}rC(h$]h%]h&]h']h*]uh,Nh-hh]rDh6X@ = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"'rErF}rG(hUhjAubaubeubh)rH}rI(hUhj,hjh hh"}rJ(h$]h%]h&]h']h*]uh,Nh-hh]ubeubh:)rK}rL(hUhhhNh h>h"}rM(h']h&]h$]h%]h*]Uentries]rN(hAX3log_response() (circuits.web.loggers.Logger method)h UtrOauh,Nh-hh]ubh[)rP}rQ(hUhhhNh h^h"}rR(h`haXpyh']h&]h$]h%]h*]hbXmethodrShdjSuh,Nh-hh]rT(hf)rU}rV(hX*Logger.log_response(response_event, value)hjPhhih hjh"}rW(h']rXh ahmhnXcircuits.web.loggersrYrZ}r[bh&]h$]h%]h*]r\h ahsXLogger.log_responsehuhhvuh,Nh-hh]r](h)r^}r_(hX log_responsehjUhhih hh"}r`(h$]h%]h&]h']h*]uh,Nh-hh]rah6X log_responserbrc}rd(hUhj^ubaubh)re}rf(hUhjUhhih hh"}rg(h$]h%]h&]h']h*]uh,Nh-hh]rh(h)ri}rj(hXresponse_eventh"}rk(h$]h%]h&]h']h*]uhjeh]rlh6Xresponse_eventrmrn}ro(hUhjiubah hubh)rp}rq(hXvalueh"}rr(h$]h%]h&]h']h*]uhjeh]rsh6Xvaluertru}rv(hUhjpubah hubeubeubh)rw}rx(hUhjPhhih hh"}ry(h$]h%]h&]h']h*]uh,Nh-hh]ubeubh:)rz}r{(hUhhhNh h>h"}r|(h']h&]h$]h%]h*]Uentries]r}(hAX*log() (circuits.web.loggers.Logger method)h Utr~auh,Nh-hh]ubh[)r}r(hUhhhNh h^h"}r(h`haXpyh']h&]h$]h%]h*]hbXmethodrhdjuh,Nh-hh]r(hf)r}r(hXLogger.log(response)rhjhhih hjh"}r(h']rh ahmhnXcircuits.web.loggersrr}rbh&]h$]h%]h*]rh ahsX Logger.loghuhhvuh,Nh-hh]r(h)r}r(hXloghjhhih hh"}r(h$]h%]h&]h']h*]uh,Nh-hh]rh6Xlogrr}r(hUhjubaubh)r}r(hUhjhhih hh"}r(h$]h%]h&]h']h*]uh,Nh-hh]rh)r}r(hXresponseh"}r(h$]h%]h&]h']h*]uhjh]rh6Xresponserr}r(hUhjubah hubaubeubh)r}r(hUhjhhih hh"}r(h$]h%]h&]h']h*]uh,Nh-hh]ubeubeubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh-hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh3NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hj1h)cdocutils.nodes target r)r}r(hUhhhh=h Utargetrh"}r (h$]h']r h)ah&]Uismodh%]h*]uh,Kh-hh]ubhhgh jh jUhhh j h huUsubstitution_namesr }r h h-h"}r (h$]h']h&]Usourcehh%]h*]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.dispatchers.static.doctree0000644000014400001440000001634612425011104030507 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X&circuits.web.dispatchers.static moduleqNX&circuits.web.dispatchers.static.StaticqX.circuits.web.dispatchers.static.Static.channelquUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hU&circuits-web-dispatchers-static-moduleqhhhhuUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXP/home/prologic/work/circuits/docs/source/api/circuits.web.dispatchers.static.rstqUtagnameqUsectionqU attributesq}q(Udupnamesq ]Uclassesq!]Ubackrefsq"]Uidsq#]q$(X&module-circuits.web.dispatchers.staticq%heUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hX&circuits.web.dispatchers.static moduleq.hhhhhUtitleq/h}q0(h ]h!]h"]h#]h&]uh(Kh)hh]q1cdocutils.nodes Text q2X&circuits.web.dispatchers.static moduleq3q4}q5(hh.hh,ubaubcsphinx.addnodes index q6)q7}q8(hUhhhU q9hUindexq:h}q;(h#]h"]h ]h!]h&]Uentries]q<(Usingleq=X(circuits.web.dispatchers.static (module)X&module-circuits.web.dispatchers.staticUtq>auh(Kh)hh]ubcdocutils.nodes paragraph q?)q@}qA(hXStaticqBhhhXl/home/prologic/work/circuits/circuits/web/dispatchers/static.py:docstring of circuits.web.dispatchers.staticqChU paragraphqDh}qE(h ]h!]h"]h#]h&]uh(Kh)hh]qFh2XStaticqGqH}qI(hhBhh@ubaubh?)qJ}qK(hXThis modStatic implements a Static dispatcher used to serve up static resources and an optional apache-style directory listing.qLhhhhChhDh}qM(h ]h!]h"]h#]h&]uh(Kh)hh]qNh2XThis modStatic implements a Static dispatcher used to serve up static resources and an optional apache-style directory listing.qOqP}qQ(hhLhhJubaubh6)qR}qS(hUhhhNhh:h}qT(h#]h"]h ]h!]h&]Uentries]qU(h=X1Static (class in circuits.web.dispatchers.static)hUtqVauh(Nh)hh]ubcsphinx.addnodes desc qW)qX}qY(hUhhhNhUdescqZh}q[(Unoindexq\Udomainq]Xpyh#]h"]h ]h!]h&]Uobjtypeq^Xclassq_Udesctypeq`h_uh(Nh)hh]qa(csphinx.addnodes desc_signature qb)qc}qd(hXYStatic(path=None, docroot=None, defaults=('index.html', 'index.xhtml'), dirlisting=False)hhXhU qehUdesc_signatureqfh}qg(h#]qhhaUmoduleqicdocutils.nodes reprunicode qjXcircuits.web.dispatchers.staticqkql}qmbh"]h ]h!]h&]qnhaUfullnameqoXStaticqpUclassqqUUfirstqruh(Nh)hh]qs(csphinx.addnodes desc_annotation qt)qu}qv(hXclass hhchhehUdesc_annotationqwh}qx(h ]h!]h"]h#]h&]uh(Nh)hh]qyh2Xclass qzq{}q|(hUhhuubaubcsphinx.addnodes desc_addname q})q~}q(hX circuits.web.dispatchers.static.hhchhehU desc_addnameqh}q(h ]h!]h"]h#]h&]uh(Nh)hh]qh2X circuits.web.dispatchers.static.qq}q(hUhh~ubaubcsphinx.addnodes desc_name q)q}q(hhphhchhehU desc_nameqh}q(h ]h!]h"]h#]h&]uh(Nh)hh]qh2XStaticqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhchhehUdesc_parameterlistqh}q(h ]h!]h"]h#]h&]uh(Nh)hh]q(csphinx.addnodes desc_parameter q)q}q(hX path=Noneh}q(h ]h!]h"]h#]h&]uhhh]qh2X path=Noneqq}q(hUhhubahUdesc_parameterqubh)q}q(hX docroot=Noneh}q(h ]h!]h"]h#]h&]uhhh]qh2X docroot=Noneqq}q(hUhhubahhubh)q}q(hXdefaults=('index.html'h}q(h ]h!]h"]h#]h&]uhhh]qh2Xdefaults=('index.html'qq}q(hUhhubahhubh)q}q(hX'index.xhtml')h}q(h ]h!]h"]h#]h&]uhhh]qh2X'index.xhtml')qq}q(hUhhubahhubh)q}q(hXdirlisting=Falseh}q(h ]h!]h"]h#]h&]uhhh]qh2Xdirlisting=Falseqq}q(hUhhubahhubeubeubcsphinx.addnodes desc_content q)q}q(hUhhXhhehU desc_contentqh}q(h ]h!]h"]h#]h&]uh(Nh)hh]q(h?)q}q(hX6Bases: :class:`circuits.core.components.BaseComponent`qhhhU qhhDh}q(h ]h!]h"]h#]h&]uh(Kh)hh]q(h2XBases: qƅq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX/:class:`circuits.core.components.BaseComponent`qhhhNhU pending_xrefqh}q(UreftypeXclassUrefwarnqωU reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqh#]h"]U refexplicith ]h!]h&]UrefdocqX#api/circuits.web.dispatchers.staticqUpy:classqhpU py:moduleqXcircuits.web.dispatchers.staticquh(Nh]qcdocutils.nodes literal q)q}q(hhh}q(h ]h!]q(UxrefqhXpy-classqeh"]h#]h&]uhhh]qh2X&circuits.core.components.BaseComponentqq}q(hUhhubahUliteralqubaubeubh6)q}q(hUhhhNhh:h}q(h#]h"]h ]h!]h&]Uentries]q(h=X:channel (circuits.web.dispatchers.static.Static attribute)hUtqauh(Nh)hh]ubhW)q}q(hUhhhNhhZh}q(h\h]Xpyh#]h"]h ]h!]h&]h^X attributeqh`huh(Nh)hh]q(hb)q}q(hXStatic.channelqhhhU qhhfh}q(h#]qhahihjXcircuits.web.dispatchers.staticqq}qbh"]h ]h!]h&]qhahoXStatic.channelhqhphruh(Nh)hh]q(h)q}q(hXchannelhhhhhhh}q(h ]h!]h"]h#]h&]uh(Nh)hh]qh2Xchannelqq}q(hUhhubaubht)r}r(hX = 'web'hhhhhhwh}r(h ]h!]h"]h#]h&]uh(Nh)hh]rh2X = 'web'rr}r(hUhjubaubeubh)r}r(hUhhhhhhh}r (h ]h!]h"]h#]h&]uh(Nh)hh]ubeubeubeubeubahUU transformerr NU footnote_refsr }r Urefnamesr }rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh)hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_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*Upep_referencesr+NUstrip_commentsr,NU toc_backlinksr-Uentryr.U language_coder/Uenr0U datestampr1NU report_levelr2KU _destinationr3NU halt_levelr4KU strip_classesr5Nh/NUerror_encoding_error_handlerr6Ubackslashreplacer7Udebugr8NUembed_stylesheetr9Uoutput_encoding_error_handlerr:Ustrictr;U sectnum_xformr<KUdump_transformsr=NU docinfo_xformr>KUwarning_streamr?NUpep_file_url_templater@Upep-%04drAUexit_status_levelrBKUconfigrCNUstrict_visitorrDNUcloak_email_addressesrEUtrim_footnote_reference_spacerFUenvrGNUdump_pseudo_xmlrHNUexpose_internalsrINUsectsubtitle_xformrJU source_linkrKNUrfc_referencesrLNUoutput_encodingrMUutf-8rNU source_urlrONUinput_encodingrPU utf-8-sigrQU_disable_configrRNU id_prefixrSUU tab_widthrTKUerror_encodingrUUUTF-8rVU_sourcerWhUgettext_compactrXU generatorrYNUdump_internalsrZNU smart_quotesr[U pep_base_urlr\Uhttp://www.python.org/dev/peps/r]Usyntax_highlightr^Ulongr_Uinput_encoding_error_handlerr`j;Uauto_id_prefixraUidrbUdoctitle_xformrcUstrip_elements_with_classesrdNU _config_filesre]Ufile_insertion_enabledrfU raw_enabledrgKU dump_settingsrhNubUsymbol_footnote_startriKUidsrj}rk(hhchhh%cdocutils.nodes target rl)rm}rn(hUhhhh9hUtargetroh}rp(h ]h#]rqh%ah"]Uismodh!]h&]uh(Kh)hh]ubhhuUsubstitution_namesrr}rshh)h}rt(h ]h#]h"]Usourcehh!]h&]uU footnotesru]rvUrefidsrw}rxub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.main.doctree0000644000014400001440000005142612425011105025633 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.web.main.parse_bindqXcircuits.web.main.HelloWorldqX$circuits.web.main.HelloWorld.channelqX(circuits.web.main.Authentication.requestq X$circuits.web.main.HelloWorld.requestq Xcircuits.web.main.parse_optionsq X&circuits.web.main.Authentication.realmq X&circuits.web.main.Authentication.usersq X(circuits.web.main.Authentication.channelqXcircuits.web.main moduleqNXcircuits.web.main.RootqXcircuits.web.main.Root.helloqXcircuits.web.main.select_pollerqX circuits.web.main.AuthenticationqXcircuits.web.main.mainquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh h h h h h h h h h hhhUcircuits-web-main-moduleqhhhhhhhhhhuUchildrenq]q cdocutils.nodes section q!)q"}q#(U rawsourceq$UUparentq%hUsourceq&XB/home/prologic/work/circuits/docs/source/api/circuits.web.main.rstq'Utagnameq(Usectionq)U attributesq*}q+(Udupnamesq,]Uclassesq-]Ubackrefsq.]Uidsq/]q0(Xmodule-circuits.web.mainq1heUnamesq2]q3hauUlineq4KUdocumentq5hh]q6(cdocutils.nodes title q7)q8}q9(h$Xcircuits.web.main moduleq:h%h"h&h'h(Utitleq;h*}q<(h,]h-]h.]h/]h2]uh4Kh5hh]q=cdocutils.nodes Text q>Xcircuits.web.main moduleq?q@}qA(h$h:h%h8ubaubcsphinx.addnodes index qB)qC}qD(h$Uh%h"h&U qEh(UindexqFh*}qG(h/]h.]h,]h-]h2]Uentries]qH(UsingleqIXcircuits.web.main (module)Xmodule-circuits.web.mainUtqJauh4Kh5hh]ubcdocutils.nodes paragraph qK)qL}qM(h$XMainqNh%h"h&XP/home/prologic/work/circuits/circuits/web/main.py:docstring of circuits.web.mainqOh(U paragraphqPh*}qQ(h,]h-]h.]h/]h2]uh4Kh5hh]qRh>XMainqSqT}qU(h$hNh%hLubaubhK)qV}qW(h$X)circutis.web Web Server and Testing Tool.qXh%h"h&hOh(hPh*}qY(h,]h-]h.]h/]h2]uh4Kh5hh]qZh>X)circutis.web Web Server and Testing Tool.q[q\}q](h$hXh%hVubaubhB)q^}q_(h$Uh%h"h&Nh(hFh*}q`(h/]h.]h,]h-]h2]Uentries]qa(hIX-parse_options() (in module circuits.web.main)h Utqbauh4Nh5hh]ubcsphinx.addnodes desc qc)qd}qe(h$Uh%h"h&Nh(Udescqfh*}qg(UnoindexqhUdomainqiXpyh/]h.]h,]h-]h2]UobjtypeqjXfunctionqkUdesctypeqlhkuh4Nh5hh]qm(csphinx.addnodes desc_signature qn)qo}qp(h$Xparse_options()h%hdh&U qqh(Udesc_signatureqrh*}qs(h/]qth aUmodulequcdocutils.nodes reprunicode qvXcircuits.web.mainqwqx}qybh.]h,]h-]h2]qzh aUfullnameq{X parse_optionsq|Uclassq}UUfirstq~uh4Nh5hh]q(csphinx.addnodes desc_addname q)q}q(h$Xcircuits.web.main.h%hoh&hqh(U desc_addnameqh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]qh>Xcircuits.web.main.qq}q(h$Uh%hubaubcsphinx.addnodes desc_name q)q}q(h$h|h%hoh&hqh(U desc_nameqh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]qh>X parse_optionsqq}q(h$Uh%hubaubcsphinx.addnodes desc_parameterlist q)q}q(h$Uh%hoh&hqh(Udesc_parameterlistqh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubcsphinx.addnodes desc_content q)q}q(h$Uh%hdh&hqh(U desc_contentqh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)q}q(h$Uh%h"h&Nh(hFh*}q(h/]h.]h,]h-]h2]Uentries]q(hIX+Authentication (class in circuits.web.main)hUtqauh4Nh5hh]ubhc)q}q(h$Uh%h"h&Nh(hfh*}q(hhhiXpyh/]h.]h,]h-]h2]hjXclassqhlhuh4Nh5hh]q(hn)q}q(h$X6Authentication(channel='web', realm=None, passwd=None)h%hh&hqh(hrh*}q(h/]qhahuhvXcircuits.web.mainqq}qbh.]h,]h-]h2]qhah{XAuthenticationqh}Uh~uh4Nh5hh]q(csphinx.addnodes desc_annotation q)q}q(h$Xclass h%hh&hqh(Udesc_annotationqh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]qh>Xclass qq}q(h$Uh%hubaubh)q}q(h$Xcircuits.web.main.h%hh&hqh(hh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]qh>Xcircuits.web.main.qq}q(h$Uh%hubaubh)q}q(h$hh%hh&hqh(hh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]qh>XAuthenticationqąq}q(h$Uh%hubaubh)q}q(h$Uh%hh&hqh(hh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]q(csphinx.addnodes desc_parameter q)q}q(h$X channel='web'h*}q(h,]h-]h.]h/]h2]uh%hh]qh>X channel='web'qЅq}q(h$Uh%hubah(Udesc_parameterqubh)q}q(h$X realm=Noneh*}q(h,]h-]h.]h/]h2]uh%hh]qh>X realm=Noneq؅q}q(h$Uh%hubah(hubh)q}q(h$X passwd=Noneh*}q(h,]h-]h.]h/]h2]uh%hh]qh>X passwd=Noneq߅q}q(h$Uh%hubah(hubeubeubh)q}q(h$Uh%hh&hqh(hh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]q(hK)q}q(h$X2Bases: :class:`circuits.core.components.Component`h%hh&U qh(hPh*}q(h,]h-]h.]h/]h2]uh4Kh5hh]q(h>XBases: q녁q}q(h$XBases: h%hubcsphinx.addnodes pending_xref q)q}q(h$X+:class:`circuits.core.components.Component`qh%hh&Nh(U pending_xrefqh*}q(UreftypeXclassUrefwarnqU reftargetqX"circuits.core.components.ComponentU refdomainXpyqh/]h.]U refexplicith,]h-]h2]UrefdocqXapi/circuits.web.mainqUpy:classqhU py:moduleqXcircuits.web.mainquh4Nh]qcdocutils.nodes literal q)q}q(h$hh*}r(h,]h-]r(UxrefrhXpy-classreh.]h/]h2]uh%hh]rh>X"circuits.core.components.Componentrr}r(h$Uh%hubah(UliteralrubaubeubhB)r }r (h$Uh%hh&Nh(hFh*}r (h/]h.]h,]h-]h2]Uentries]r (hIX4channel (circuits.web.main.Authentication attribute)hUtr auh4Nh5hh]ubhc)r}r(h$Uh%hh&Nh(hfh*}r(hhhiXpyh/]h.]h,]h-]h2]hjX attributerhljuh4Nh5hh]r(hn)r}r(h$XAuthentication.channelh%jh&U rh(hrh*}r(h/]rhahuhvXcircuits.web.mainrr}rbh.]h,]h-]h2]rhah{XAuthentication.channelh}hh~uh4Nh5hh]r(h)r}r(h$Xchannelh%jh&jh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]r h>Xchannelr!r"}r#(h$Uh%jubaubh)r$}r%(h$X = 'web'h%jh&jh(hh*}r&(h,]h-]h.]h/]h2]uh4Nh5hh]r'h>X = 'web'r(r)}r*(h$Uh%j$ubaubeubh)r+}r,(h$Uh%jh&jh(hh*}r-(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)r.}r/(h$Uh%hh&Nh(hFh*}r0(h/]h.]h,]h-]h2]Uentries]r1(hIX2realm (circuits.web.main.Authentication attribute)h Utr2auh4Nh5hh]ubhc)r3}r4(h$Uh%hh&Nh(hfh*}r5(hhhiXpyh/]h.]h,]h-]h2]hjX attributer6hlj6uh4Nh5hh]r7(hn)r8}r9(h$XAuthentication.realmh%j3h&jh(hrh*}r:(h/]r;h ahuhvXcircuits.web.mainr<r=}r>bh.]h,]h-]h2]r?h ah{XAuthentication.realmh}hh~uh4Nh5hh]r@(h)rA}rB(h$Xrealmh%j8h&jh(hh*}rC(h,]h-]h.]h/]h2]uh4Nh5hh]rDh>XrealmrErF}rG(h$Uh%jAubaubh)rH}rI(h$X = 'Secure Area'h%j8h&jh(hh*}rJ(h,]h-]h.]h/]h2]uh4Nh5hh]rKh>X = 'Secure Area'rLrM}rN(h$Uh%jHubaubeubh)rO}rP(h$Uh%j3h&jh(hh*}rQ(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)rR}rS(h$Uh%hh&Nh(hFh*}rT(h/]h.]h,]h-]h2]Uentries]rU(hIX2users (circuits.web.main.Authentication attribute)h UtrVauh4Nh5hh]ubhc)rW}rX(h$Uh%hh&Nh(hfh*}rY(hhhiXpyh/]h.]h,]h-]h2]hjX attributerZhljZuh4Nh5hh]r[(hn)r\}r](h$XAuthentication.usersh%jWh&jh(hrh*}r^(h/]r_h ahuhvXcircuits.web.mainr`ra}rbbh.]h,]h-]h2]rch ah{XAuthentication.usersh}hh~uh4Nh5hh]rd(h)re}rf(h$Xusersh%j\h&jh(hh*}rg(h,]h-]h.]h/]h2]uh4Nh5hh]rhh>Xusersrirj}rk(h$Uh%jeubaubh)rl}rm(h$X0 = {'admin': '21232f297a57a5a743894a0e4a801fc3'}h%j\h&jh(hh*}rn(h,]h-]h.]h/]h2]uh4Nh5hh]roh>X0 = {'admin': '21232f297a57a5a743894a0e4a801fc3'}rprq}rr(h$Uh%jlubaubeubh)rs}rt(h$Uh%jWh&jh(hh*}ru(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)rv}rw(h$Uh%hh&Nh(hFh*}rx(h/]h.]h,]h-]h2]Uentries]ry(hIX3request() (circuits.web.main.Authentication method)h Utrzauh4Nh5hh]ubhc)r{}r|(h$Uh%hh&Nh(hfh*}r}(hhhiXpyh/]h.]h,]h-]h2]hjXmethodr~hlj~uh4Nh5hh]r(hn)r}r(h$X0Authentication.request(event, request, response)h%j{h&hqh(hrh*}r(h/]rh ahuhvXcircuits.web.mainrr}rbh.]h,]h-]h2]rh ah{XAuthentication.requesth}hh~uh4Nh5hh]r(h)r}r(h$Xrequesth%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>Xrequestrr}r(h$Uh%jubaubh)r}r(h$Uh%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]r(h)r}r(h$Xeventh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xeventrr}r(h$Uh%jubah(hubh)r}r(h$Xrequesth*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xrequestrr}r(h$Uh%jubah(hubh)r}r(h$Xresponseh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xresponserr}r(h$Uh%jubah(hubeubeubh)r}r(h$Uh%j{h&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubeubeubhB)r}r(h$Uh%h"h&Nh(hFh*}r(h/]h.]h,]h-]h2]Uentries]r(hIX'HelloWorld (class in circuits.web.main)hUtrauh4Nh5hh]ubhc)r}r(h$Uh%h"h&Nh(hfh*}r(hhhiXpyh/]h.]h,]h-]h2]hjXclassrhljuh4Nh5hh]r(hn)r}r(h$XHelloWorld(*args, **kwargs)h%jh&hqh(hrh*}r(h/]rhahuhvXcircuits.web.mainrr}rbh.]h,]h-]h2]rhah{X HelloWorldrh}Uh~uh4Nh5hh]r(h)r}r(h$Xclass h%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>Xclass rr}r(h$Uh%jubaubh)r}r(h$Xcircuits.web.main.h%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>Xcircuits.web.main.rr}r(h$Uh%jubaubh)r}r(h$jh%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>X HelloWorldrr}r(h$Uh%jubaubh)r}r(h$Uh%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]r(h)r}r(h$X*argsh*}r(h,]h-]h.]h/]h2]uh%jh]rh>X*argsrr}r(h$Uh%jubah(hubh)r}r(h$X**kwargsh*}r(h,]h-]h.]h/]h2]uh%jh]rh>X**kwargsrr}r(h$Uh%jubah(hubeubeubh)r}r(h$Uh%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]r(hK)r}r(h$X2Bases: :class:`circuits.core.components.Component`h%jh&hh(hPh*}r(h,]h-]h.]h/]h2]uh4Kh5hh]r(h>XBases: rr}r(h$XBases: h%jubh)r}r(h$X+:class:`circuits.core.components.Component`rh%jh&Nh(hh*}r(UreftypeXclasshhX"circuits.core.components.ComponentU refdomainXpyrh/]h.]U refexplicith,]h-]h2]hhhjhhuh4Nh]rh)r}r(h$jh*}r(h,]h-]r(jjXpy-classreh.]h/]h2]uh%jh]rh>X"circuits.core.components.Componentrr}r(h$Uh%jubah(jubaubeubhK)r}r(h$X4initializes x; see x.__class__.__doc__ for signaturerh%jh&X[/home/prologic/work/circuits/circuits/web/main.py:docstring of circuits.web.main.HelloWorldrh(hPh*}r(h,]h-]h.]h/]h2]uh4Kh5hh]rh>X4initializes x; see x.__class__.__doc__ for signaturerr}r (h$jh%jubaubhB)r }r (h$Uh%jh&Nh(hFh*}r (h/]h.]h,]h-]h2]Uentries]r (hIX0channel (circuits.web.main.HelloWorld attribute)hUtrauh4Nh5hh]ubhc)r}r(h$Uh%jh&Nh(hfh*}r(hhhiXpyh/]h.]h,]h-]h2]hjX attributerhljuh4Nh5hh]r(hn)r}r(h$XHelloWorld.channelh%jh&jh(hrh*}r(h/]rhahuhvXcircuits.web.mainrr}rbh.]h,]h-]h2]rhah{XHelloWorld.channelh}jh~uh4Nh5hh]r(h)r}r(h$Xchannelh%jh&jh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]r h>Xchannelr!r"}r#(h$Uh%jubaubh)r$}r%(h$X = 'web'h%jh&jh(hh*}r&(h,]h-]h.]h/]h2]uh4Nh5hh]r'h>X = 'web'r(r)}r*(h$Uh%j$ubaubeubh)r+}r,(h$Uh%jh&jh(hh*}r-(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)r.}r/(h$Uh%jh&Nh(hFh*}r0(h/]h.]h,]h-]h2]Uentries]r1(hIX/request() (circuits.web.main.HelloWorld method)h Utr2auh4Nh5hh]ubhc)r3}r4(h$Uh%jh&Nh(hfh*}r5(hhhiXpyh/]h.]h,]h-]h2]hjXmethodr6hlj6uh4Nh5hh]r7(hn)r8}r9(h$X%HelloWorld.request(request, response)h%j3h&hqh(hrh*}r:(h/]r;h ahuhvXcircuits.web.mainr<r=}r>bh.]h,]h-]h2]r?h ah{XHelloWorld.requesth}jh~uh4Nh5hh]r@(h)rA}rB(h$Xrequesth%j8h&hqh(hh*}rC(h,]h-]h.]h/]h2]uh4Nh5hh]rDh>XrequestrErF}rG(h$Uh%jAubaubh)rH}rI(h$Uh%j8h&hqh(hh*}rJ(h,]h-]h.]h/]h2]uh4Nh5hh]rK(h)rL}rM(h$Xrequesth*}rN(h,]h-]h.]h/]h2]uh%jHh]rOh>XrequestrPrQ}rR(h$Uh%jLubah(hubh)rS}rT(h$Xresponseh*}rU(h,]h-]h.]h/]h2]uh%jHh]rVh>XresponserWrX}rY(h$Uh%jSubah(hubeubeubh)rZ}r[(h$Uh%j3h&hqh(hh*}r\(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubeubeubhB)r]}r^(h$Uh%h"h&Nh(hFh*}r_(h/]h.]h,]h-]h2]Uentries]r`(hIX!Root (class in circuits.web.main)hUtraauh4Nh5hh]ubhc)rb}rc(h$Uh%h"h&Nh(hfh*}rd(hhhiXpyh/]h.]h,]h-]h2]hjXclassrehljeuh4Nh5hh]rf(hn)rg}rh(h$XRoot(*args, **kwargs)h%jbh&hqh(hrh*}ri(h/]rjhahuhvXcircuits.web.mainrkrl}rmbh.]h,]h-]h2]rnhah{XRootroh}Uh~uh4Nh5hh]rp(h)rq}rr(h$Xclass h%jgh&hqh(hh*}rs(h,]h-]h.]h/]h2]uh4Nh5hh]rth>Xclass rurv}rw(h$Uh%jqubaubh)rx}ry(h$Xcircuits.web.main.h%jgh&hqh(hh*}rz(h,]h-]h.]h/]h2]uh4Nh5hh]r{h>Xcircuits.web.main.r|r}}r~(h$Uh%jxubaubh)r}r(h$joh%jgh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>XRootrr}r(h$Uh%jubaubh)r}r(h$Uh%jgh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]r(h)r}r(h$X*argsh*}r(h,]h-]h.]h/]h2]uh%jh]rh>X*argsrr}r(h$Uh%jubah(hubh)r}r(h$X**kwargsh*}r(h,]h-]h.]h/]h2]uh%jh]rh>X**kwargsrr}r(h$Uh%jubah(hubeubeubh)r}r(h$Uh%jbh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]r(hK)r}r(h$X3Bases: :class:`circuits.web.controllers.Controller`rh%jh&hh(hPh*}r(h,]h-]h.]h/]h2]uh4Kh5hh]r(h>XBases: rr}r(h$XBases: h%jubh)r}r(h$X,:class:`circuits.web.controllers.Controller`rh%jh&Nh(hh*}r(UreftypeXclasshhX#circuits.web.controllers.ControllerU refdomainXpyrh/]h.]U refexplicith,]h-]h2]hhhjohhuh4Nh]rh)r}r(h$jh*}r(h,]h-]r(jjXpy-classreh.]h/]h2]uh%jh]rh>X#circuits.web.controllers.Controllerrr}r(h$Uh%jubah(jubaubeubhK)r}r(h$X4initializes x; see x.__class__.__doc__ for signaturerh%jh&XU/home/prologic/work/circuits/circuits/web/main.py:docstring of circuits.web.main.Rootrh(hPh*}r(h,]h-]h.]h/]h2]uh4Kh5hh]rh>X4initializes x; see x.__class__.__doc__ for signaturerr}r(h$jh%jubaubhB)r}r(h$Uh%jh&Nh(hFh*}r(h/]h.]h,]h-]h2]Uentries]r(hIX'hello() (circuits.web.main.Root method)hUtrauh4Nh5hh]ubhc)r}r(h$Uh%jh&Nh(hfh*}r(hhhiXpyh/]h.]h,]h-]h2]hjXmethodrhljuh4Nh5hh]r(hn)r}r(h$X"Root.hello(event, *args, **kwargs)h%jh&hqh(hrh*}r(h/]rhahuhvXcircuits.web.mainrr}rbh.]h,]h-]h2]rhah{X Root.helloh}joh~uh4Nh5hh]r(h)r}r(h$Xhelloh%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>Xhellorr}r(h$Uh%jubaubh)r}r(h$Uh%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]r(h)r}r(h$Xeventh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xeventrr}r(h$Uh%jubah(hubh)r}r(h$X*argsh*}r(h,]h-]h.]h/]h2]uh%jh]rh>X*argsrr}r(h$Uh%jubah(hubh)r}r(h$X**kwargsh*}r(h,]h-]h.]h/]h2]uh%jh]rh>X**kwargsrr}r(h$Uh%jubah(hubeubeubh)r}r(h$Uh%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubeubeubhB)r}r(h$Uh%h"h&Nh(hFh*}r(h/]h.]h,]h-]h2]Uentries]r(hIX-select_poller() (in module circuits.web.main)hUtrauh4Nh5hh]ubhc)r}r(h$Uh%h"h&Nh(hfh*}r(hhhiXpyh/]h.]h,]h-]h2]hjXfunctionrhljuh4Nh5hh]r(hn)r}r(h$Xselect_poller(poller)h%jh&hqh(hrh*}r(h/]rhahuhvXcircuits.web.mainrr}rbh.]h,]h-]h2]rhah{X select_pollerrh}Uh~uh4Nh5hh]r(h)r}r(h$Xcircuits.web.main.h%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]r h>Xcircuits.web.main.r r }r (h$Uh%jubaubh)r }r(h$jh%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>X select_pollerrr}r(h$Uh%j ubaubh)r}r(h$Uh%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh)r}r(h$Xpollerh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xpollerrr}r(h$Uh%jubah(hubaubeubh)r}r (h$Uh%jh&hqh(hh*}r!(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)r"}r#(h$Uh%h"h&Nh(hFh*}r$(h/]h.]h,]h-]h2]Uentries]r%(hIX*parse_bind() (in module circuits.web.main)hUtr&auh4Nh5hh]ubhc)r'}r((h$Uh%h"h&Nh(hfh*}r)(hhhiXpyh/]h.]h,]h-]h2]hjXfunctionr*hlj*uh4Nh5hh]r+(hn)r,}r-(h$Xparse_bind(bind)h%j'h&hqh(hrh*}r.(h/]r/hahuhvXcircuits.web.mainr0r1}r2bh.]h,]h-]h2]r3hah{X parse_bindr4h}Uh~uh4Nh5hh]r5(h)r6}r7(h$Xcircuits.web.main.h%j,h&hqh(hh*}r8(h,]h-]h.]h/]h2]uh4Nh5hh]r9h>Xcircuits.web.main.r:r;}r<(h$Uh%j6ubaubh)r=}r>(h$j4h%j,h&hqh(hh*}r?(h,]h-]h.]h/]h2]uh4Nh5hh]r@h>X parse_bindrArB}rC(h$Uh%j=ubaubh)rD}rE(h$Uh%j,h&hqh(hh*}rF(h,]h-]h.]h/]h2]uh4Nh5hh]rGh)rH}rI(h$Xbindh*}rJ(h,]h-]h.]h/]h2]uh%jDh]rKh>XbindrLrM}rN(h$Uh%jHubah(hubaubeubh)rO}rP(h$Uh%j'h&hqh(hh*}rQ(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)rR}rS(h$Uh%h"h&Nh(hFh*}rT(h/]h.]h,]h-]h2]Uentries]rU(hIX$main() (in module circuits.web.main)hUtrVauh4Nh5hh]ubhc)rW}rX(h$Uh%h"h&Nh(hfh*}rY(hhhiXpyh/]h.]h,]h-]h2]hjXfunctionrZhljZuh4Nh5hh]r[(hn)r\}r](h$Xmain()r^h%jWh&hqh(hrh*}r_(h/]r`hahuhvXcircuits.web.mainrarb}rcbh.]h,]h-]h2]rdhah{Xmainreh}Uh~uh4Nh5hh]rf(h)rg}rh(h$Xcircuits.web.main.h%j\h&hqh(hh*}ri(h,]h-]h.]h/]h2]uh4Nh5hh]rjh>Xcircuits.web.main.rkrl}rm(h$Uh%jgubaubh)rn}ro(h$jeh%j\h&hqh(hh*}rp(h,]h-]h.]h/]h2]uh4Nh5hh]rqh>Xmainrrrs}rt(h$Uh%jnubaubh)ru}rv(h$Uh%j\h&hqh(hh*}rw(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubh)rx}ry(h$Uh%jWh&hqh(hh*}rz(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubeubah$UU transformerr{NU footnote_refsr|}r}Urefnamesr~}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh5hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh;NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh'Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hj,hjhjh jhh"h j8h hoh j8h j\hjhjghjhjh1cdocutils.nodes target r)r}r(h$Uh%h"h&hEh(Utargetrh*}r(h,]h/]rh1ah.]Uismodh-]h2]uh4Kh5hh]ubhhhj\uUsubstitution_namesr}rh(h5h*}r(h,]h/]h.]Usourceh'h-]h2]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.url.doctree0000644000014400001440000007077712425011106025524 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.web.url.URLqXcircuits.web.url.URL.absoluteqXcircuits.web.url.URL.punycodeqXcircuits.web.url.URL.lowerq Xcircuits.web.url.URL.unicodeq Xcircuits.web.url.URL.equivq Xcircuits.web.url.URL.sanitizeq Xcircuits.web.url.URL.escapeq Xcircuits.web.url.URL.parseqXcircuits.web.url.URL.encodeqXcircuits.web.url.URL.canonicalqXcircuits.web.url.URL.relativeqXcircuits.web.url.URL.defragqXcircuits.web.url.URL.utf8qXcircuits.web.url.URL.deparamqXcircuits.web.url.parse_urlqXcircuits.web.url.URL.abspathqXcircuits.web.url moduleqNXcircuits.web.url.URL.unpunycodeqXcircuits.web.url.URL.unescapequUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startq KUnameidsq!}q"(hhhhhhh h h h h h h h h h hhhhhhhhhhhhhhhhhhhUcircuits-web-url-moduleq#hhhhuUchildrenq$]q%cdocutils.nodes section q&)q'}q((U rawsourceq)UUparentq*hUsourceq+XA/home/prologic/work/circuits/docs/source/api/circuits.web.url.rstq,Utagnameq-Usectionq.U attributesq/}q0(Udupnamesq1]Uclassesq2]Ubackrefsq3]Uidsq4]q5(Xmodule-circuits.web.urlq6h#eUnamesq7]q8hauUlineq9KUdocumentq:hh$]q;(cdocutils.nodes title q<)q=}q>(h)Xcircuits.web.url moduleq?h*h'h+h,h-Utitleq@h/}qA(h1]h2]h3]h4]h7]uh9Kh:hh$]qBcdocutils.nodes Text qCXcircuits.web.url moduleqDqE}qF(h)h?h*h=ubaubcsphinx.addnodes index qG)qH}qI(h)Uh*h'h+U qJh-UindexqKh/}qL(h4]h3]h1]h2]h7]Uentries]qM(UsingleqNXcircuits.web.url (module)Xmodule-circuits.web.urlUtqOauh9Kh:hh$]ubcdocutils.nodes paragraph qP)qQ}qR(h)XGThis is a module for dealing with urls. In particular, sanitizing them.qSh*h'h+XN/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.urlqTh-U paragraphqUh/}qV(h1]h2]h3]h4]h7]uh9Kh:hh$]qWhCXGThis is a module for dealing with urls. In particular, sanitizing them.qXqY}qZ(h)hSh*hQubaubhG)q[}q\(h)Uh*h'h+XX/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.url.parse_urlq]h-hKh/}q^(h4]h3]h1]h2]h7]Uentries]q_(hNX(parse_url() (in module circuits.web.url)hUtq`auh9Nh:hh$]ubcsphinx.addnodes desc qa)qb}qc(h)Uh*h'h+h]h-Udescqdh/}qe(UnoindexqfUdomainqgXpyh4]h3]h1]h2]h7]UobjtypeqhXfunctionqiUdesctypeqjhiuh9Nh:hh$]qk(csphinx.addnodes desc_signature ql)qm}qn(h)X parse_url(url, encoding='utf-8')h*hbh+U qoh-Udesc_signatureqph/}qq(h4]qrhaUmoduleqscdocutils.nodes reprunicode qtXcircuits.web.urlquqv}qwbh3]h1]h2]h7]qxhaUfullnameqyX parse_urlqzUclassq{UUfirstq|uh9Nh:hh$]q}(csphinx.addnodes desc_addname q~)q}q(h)Xcircuits.web.url.h*hmh+hoh-U desc_addnameqh/}q(h1]h2]h3]h4]h7]uh9Nh:hh$]qhCXcircuits.web.url.qq}q(h)Uh*hubaubcsphinx.addnodes desc_name q)q}q(h)hzh*hmh+hoh-U desc_nameqh/}q(h1]h2]h3]h4]h7]uh9Nh:hh$]qhCX parse_urlqq}q(h)Uh*hubaubcsphinx.addnodes desc_parameterlist q)q}q(h)Uh*hmh+hoh-Udesc_parameterlistqh/}q(h1]h2]h3]h4]h7]uh9Nh:hh$]q(csphinx.addnodes desc_parameter q)q}q(h)Xurlh/}q(h1]h2]h3]h4]h7]uh*hh$]qhCXurlqq}q(h)Uh*hubah-Udesc_parameterqubh)q}q(h)Xencoding='utf-8'h/}q(h1]h2]h3]h4]h7]uh*hh$]qhCXencoding='utf-8'qq}q(h)Uh*hubah-hubeubeubcsphinx.addnodes desc_content q)q}q(h)Uh*hbh+hoh-U desc_contentqh/}q(h1]h2]h3]h4]h7]uh9Nh:hh$]qhP)q}q(h)X6Parse the provided url string and return an URL objectqh*hh+h]h-hUh/}q(h1]h2]h3]h4]h7]uh9Kh:hh$]qhCX6Parse the provided url string and return an URL objectqq}q(h)hh*hubaubaubeubhG)q}q(h)Uh*h'h+Nh-hKh/}q(h4]h3]h1]h2]h7]Uentries]q(hNXURL (class in circuits.web.url)hUtqauh9Nh:hh$]ubha)q}q(h)Uh*h'h+Nh-hdh/}q(hfhgXpyh4]h3]h1]h2]h7]hhXclassqhjhuh9Nh:hh$]q(hl)q}q(h)X?URL(scheme, host, port, path, params='', query='', fragment='')h*hh+hoh-hph/}q(h4]qhahshtXcircuits.web.urlq…q}qbh3]h1]h2]h7]qhahyXURLqh{Uh|uh9Nh:hh$]q(csphinx.addnodes desc_annotation q)q}q(h)Xclass h*hh+hoh-Udesc_annotationqh/}q(h1]h2]h3]h4]h7]uh9Nh:hh$]qhCXclass q΅q}q(h)Uh*hubaubh~)q}q(h)Xcircuits.web.url.h*hh+hoh-hh/}q(h1]h2]h3]h4]h7]uh9Nh:hh$]qhCXcircuits.web.url.qՅq}q(h)Uh*hubaubh)q}q(h)hh*hh+hoh-hh/}q(h1]h2]h3]h4]h7]uh9Nh:hh$]qhCXURLq܅q}q(h)Uh*hubaubh)q}q(h)Uh*hh+hoh-hh/}q(h1]h2]h3]h4]h7]uh9Nh:hh$]q(h)q}q(h)Xschemeh/}q(h1]h2]h3]h4]h7]uh*hh$]qhCXschemeq煁q}q(h)Uh*hubah-hubh)q}q(h)Xhosth/}q(h1]h2]h3]h4]h7]uh*hh$]qhCXhostqq}q(h)Uh*hubah-hubh)q}q(h)Xporth/}q(h1]h2]h3]h4]h7]uh*hh$]qhCXportqq}q(h)Uh*hubah-hubh)q}q(h)Xpathh/}q(h1]h2]h3]h4]h7]uh*hh$]qhCXpathqq}q(h)Uh*hubah-hubh)q}r(h)X params=''h/}r(h1]h2]h3]h4]h7]uh*hh$]rhCX params=''rr}r(h)Uh*hubah-hubh)r}r(h)Xquery=''h/}r(h1]h2]h3]h4]h7]uh*hh$]r hCXquery=''r r }r (h)Uh*jubah-hubh)r }r(h)X fragment=''h/}r(h1]h2]h3]h4]h7]uh*hh$]rhCX fragment=''rr}r(h)Uh*j ubah-hubeubeubh)r}r(h)Uh*hh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]r(hP)r}r(h)XBases: :class:`object`rh*jh+U rh-hUh/}r(h1]h2]h3]h4]h7]uh9Kh:hh$]r(hCXBases: rr}r (h)XBases: h*jubcsphinx.addnodes pending_xref r!)r"}r#(h)X:class:`object`r$h*jh+Nh-U pending_xrefr%h/}r&(UreftypeXclassUrefwarnr'U reftargetr(XobjectU refdomainXpyr)h4]h3]U refexplicith1]h2]h7]Urefdocr*Xapi/circuits.web.urlr+Upy:classr,hU py:moduler-Xcircuits.web.urlr.uh9Nh$]r/cdocutils.nodes literal r0)r1}r2(h)j$h/}r3(h1]h2]r4(Uxrefr5j)Xpy-classr6eh3]h4]h7]uh*j"h$]r7hCXobjectr8r9}r:(h)Uh*j1ubah-Uliteralr;ubaubeubcdocutils.nodes definition_list r<)r=}r>(h)Uh*jh+XR/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.url.URLr?h-Udefinition_listr@h/}rA(h1]h2]h3]h4]h7]uh9Nh:hh$]rB(cdocutils.nodes definition_list_item rC)rD}rE(h)XaFor more information on how and what we parse / sanitize: http://tools.ietf.org/html/rfc1808.htmlh*j=h+j?h-Udefinition_list_itemrFh/}rG(h1]h2]h3]h4]h7]uh9Kh$]rH(cdocutils.nodes term rI)rJ}rK(h)X9For more information on how and what we parse / sanitize:rLh*jDh+j?h-UtermrMh/}rN(h1]h2]h3]h4]h7]uh9Kh$]rOhCX9For more information on how and what we parse / sanitize:rPrQ}rR(h)jLh*jJubaubcdocutils.nodes definition rS)rT}rU(h)Uh/}rV(h1]h2]h3]h4]h7]uh*jDh$]rWhP)rX}rY(h)X'http://tools.ietf.org/html/rfc1808.htmlrZh*jTh+j?h-hUh/}r[(h1]h2]h3]h4]h7]uh9Kh$]r\cdocutils.nodes reference r])r^}r_(h)jZh/}r`(UrefurijZh4]h3]h1]h2]h7]uh*jXh$]rahCX'http://tools.ietf.org/html/rfc1808.htmlrbrc}rd(h)Uh*j^ubah-U referencereubaubah-U definitionrfubeubjC)rg}rh(h)XJThe more up-to-date RFC is this one: http://www.ietf.org/rfc/rfc3986.txt h*j=h+j?h-jFh/}ri(h1]h2]h3]h4]h7]uh9Kh:hh$]rj(jI)rk}rl(h)X$The more up-to-date RFC is this one:rmh*jgh+j?h-jMh/}rn(h1]h2]h3]h4]h7]uh9Kh$]rohCX$The more up-to-date RFC is this one:rprq}rr(h)jmh*jkubaubjS)rs}rt(h)Uh/}ru(h1]h2]h3]h4]h7]uh*jgh$]rvhP)rw}rx(h)X#http://www.ietf.org/rfc/rfc3986.txtryh*jsh+j?h-hUh/}rz(h1]h2]h3]h4]h7]uh9Kh$]r{j])r|}r}(h)jyh/}r~(Urefurijyh4]h3]h1]h2]h7]uh*jwh$]rhCX#http://www.ietf.org/rfc/rfc3986.txtrr}r(h)Uh*j|ubah-jeubaubah-jfubeubeubhG)r}r(h)Uh*jh+XX/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.url.URL.parserh-hKh/}r(h4]h3]h1]h2]h7]Uentries]r(hNX+parse() (circuits.web.url.URL class method)hUtrauh9Nh:hh$]ubha)r}r(h)Uh*jh+jh-hdh/}r(hfhgXpyh4]h3]h1]h2]h7]hhX classmethodrhjjuh9Nh:hh$]r(hl)r}r(h)XURL.parse(url, encoding)h*jh+hoh-hph/}r(h4]rhahshtXcircuits.web.urlrr}rbh3]h1]h2]h7]rhahyX URL.parseh{hh|uh9Nh:hh$]r(h)r}r(h)U classmethod rh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhCX classmethod rr}r(h)Uh*jubaubh)r}r(h)Xparseh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhCXparserr}r(h)Uh*jubaubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]r(h)r}r(h)Xurlh/}r(h1]h2]h3]h4]h7]uh*jh$]rhCXurlrr}r(h)Uh*jubah-hubh)r}r(h)Xencodingh/}r(h1]h2]h3]h4]h7]uh*jh$]rhCXencodingrr}r(h)Uh*jubah-hubeubeubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhP)r}r(h)X1Parse the provided url, and return a URL instancerh*jh+jh-hUh/}r(h1]h2]h3]h4]h7]uh9Kh:hh$]rhCX1Parse the provided url, and return a URL instancerr}r(h)jh*jubaubaubeubhG)r}r(h)Uh*jh+XX/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.url.URL.equivrh-hKh/}r(h4]h3]h1]h2]h7]Uentries]r(hNX%equiv() (circuits.web.url.URL method)h Utrauh9Nh:hh$]ubha)r}r(h)Uh*jh+jh-hdh/}r(hfhgXpyh4]h3]h1]h2]h7]hhXmethodrhjjuh9Nh:hh$]r(hl)r}r(h)XURL.equiv(other)h*jh+hoh-hph/}r(h4]rh ahshtXcircuits.web.urlrr}rbh3]h1]h2]h7]rh ahyX URL.equivh{hh|uh9Nh:hh$]r(h)r}r(h)Xequivh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhCXequivrr}r(h)Uh*jubaubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rh)r}r(h)Xotherh/}r(h1]h2]h3]h4]h7]uh*jh$]rhCXotherrr}r(h)Uh*jubah-hubaubeubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhP)r}r(h)X0Return true if this url is equivalent to anotherrh*jh+jh-hUh/}r(h1]h2]h3]h4]h7]uh9Kh:hh$]rhCX0Return true if this url is equivalent to anotherrr}r(h)jh*jubaubaubeubhG)r}r(h)Uh*jh+X\/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.url.URL.canonicalrh-hKh/}r(h4]h3]h1]h2]h7]Uentries]r(hNX)canonical() (circuits.web.url.URL method)hUtrauh9Nh:hh$]ubha)r}r(h)Uh*jh+jh-hdh/}r(hfhgXpyh4]h3]h1]h2]h7]hhXmethodrhjjuh9Nh:hh$]r(hl)r}r(h)XURL.canonical()h*jh+hoh-hph/}r(h4]rhahshtXcircuits.web.urlrr}rbh3]h1]h2]h7]rhahyX URL.canonicalh{hh|uh9Nh:hh$]r (h)r }r (h)X canonicalh*jh+hoh-hh/}r (h1]h2]h3]h4]h7]uh9Nh:hh$]r hCX canonicalrr}r(h)Uh*j ubaubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]ubeubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhP)r}r(h)XaCanonicalize this url. This includes reordering parameters and args to have a consistent orderingrh*jh+jh-hUh/}r(h1]h2]h3]h4]h7]uh9Kh:hh$]rhCXaCanonicalize this url. This includes reordering parameters and args to have a consistent orderingrr}r(h)jh*jubaubaubeubhG)r }r!(h)Uh*jh+XY/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.url.URL.defragr"h-hKh/}r#(h4]h3]h1]h2]h7]Uentries]r$(hNX&defrag() (circuits.web.url.URL method)hUtr%auh9Nh:hh$]ubha)r&}r'(h)Uh*jh+j"h-hdh/}r((hfhgXpyh4]h3]h1]h2]h7]hhXmethodr)hjj)uh9Nh:hh$]r*(hl)r+}r,(h)X URL.defrag()h*j&h+hoh-hph/}r-(h4]r.hahshtXcircuits.web.urlr/r0}r1bh3]h1]h2]h7]r2hahyX URL.defragh{hh|uh9Nh:hh$]r3(h)r4}r5(h)Xdefragh*j+h+hoh-hh/}r6(h1]h2]h3]h4]h7]uh9Nh:hh$]r7hCXdefragr8r9}r:(h)Uh*j4ubaubh)r;}r<(h)Uh*j+h+hoh-hh/}r=(h1]h2]h3]h4]h7]uh9Nh:hh$]ubeubh)r>}r?(h)Uh*j&h+hoh-hh/}r@(h1]h2]h3]h4]h7]uh9Nh:hh$]rAhP)rB}rC(h)X!Remove the fragment from this urlrDh*j>h+j"h-hUh/}rE(h1]h2]h3]h4]h7]uh9Kh:hh$]rFhCX!Remove the fragment from this urlrGrH}rI(h)jDh*jBubaubaubeubhG)rJ}rK(h)Uh*jh+XZ/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.url.URL.deparamrLh-hKh/}rM(h4]h3]h1]h2]h7]Uentries]rN(hNX'deparam() (circuits.web.url.URL method)hUtrOauh9Nh:hh$]ubha)rP}rQ(h)Uh*jh+jLh-hdh/}rR(hfhgXpyh4]h3]h1]h2]h7]hhXmethodrShjjSuh9Nh:hh$]rT(hl)rU}rV(h)XURL.deparam(params=None)h*jPh+hoh-hph/}rW(h4]rXhahshtXcircuits.web.urlrYrZ}r[bh3]h1]h2]h7]r\hahyX URL.deparamh{hh|uh9Nh:hh$]r](h)r^}r_(h)Xdeparamh*jUh+hoh-hh/}r`(h1]h2]h3]h4]h7]uh9Nh:hh$]rahCXdeparamrbrc}rd(h)Uh*j^ubaubh)re}rf(h)Uh*jUh+hoh-hh/}rg(h1]h2]h3]h4]h7]uh9Nh:hh$]rhh)ri}rj(h)X params=Noneh/}rk(h1]h2]h3]h4]h7]uh*jeh$]rlhCX params=Nonermrn}ro(h)Uh*jiubah-hubaubeubh)rp}rq(h)Uh*jPh+hoh-hh/}rr(h1]h2]h3]h4]h7]uh9Nh:hh$]rshP)rt}ru(h)X3Strip any of the provided parameters out of the urlrvh*jph+jLh-hUh/}rw(h1]h2]h3]h4]h7]uh9Kh:hh$]rxhCX3Strip any of the provided parameters out of the urlryrz}r{(h)jvh*jtubaubaubeubhG)r|}r}(h)Uh*jh+XZ/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.url.URL.abspathr~h-hKh/}r(h4]h3]h1]h2]h7]Uentries]r(hNX'abspath() (circuits.web.url.URL method)hUtrauh9Nh:hh$]ubha)r}r(h)Uh*jh+j~h-hdh/}r(hfhgXpyh4]h3]h1]h2]h7]hhXmethodrhjjuh9Nh:hh$]r(hl)r}r(h)X URL.abspath()h*jh+hoh-hph/}r(h4]rhahshtXcircuits.web.urlrr}rbh3]h1]h2]h7]rhahyX URL.abspathh{hh|uh9Nh:hh$]r(h)r}r(h)Xabspathh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhCXabspathrr}r(h)Uh*jubaubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]ubeubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhP)r}r(h)X6Clear out any '..' and excessive slashes from the pathrh*jh+j~h-hUh/}r(h1]h2]h3]h4]h7]uh9Kh:hh$]rhCX6Clear out any '..' and excessive slashes from the pathrr}r(h)jh*jubaubaubeubhG)r}r(h)Uh*jh+XX/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.url.URL.lowerrh-hKh/}r(h4]h3]h1]h2]h7]Uentries]r(hNX%lower() (circuits.web.url.URL method)h Utrauh9Nh:hh$]ubha)r}r(h)Uh*jh+jh-hdh/}r(hfhgXpyh4]h3]h1]h2]h7]hhXmethodrhjjuh9Nh:hh$]r(hl)r}r(h)X URL.lower()h*jh+hoh-hph/}r(h4]rh ahshtXcircuits.web.urlrr}rbh3]h1]h2]h7]rh ahyX URL.lowerh{hh|uh9Nh:hh$]r(h)r}r(h)Xlowerh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhCXlowerrr}r(h)Uh*jubaubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]ubeubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhP)r}r(h)XLowercase the hostnamerh*jh+jh-hUh/}r(h1]h2]h3]h4]h7]uh9Kh:hh$]rhCXLowercase the hostnamerr}r(h)jh*jubaubaubeubhG)r}r(h)Uh*jh+X[/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.url.URL.sanitizerh-hKh/}r(h4]h3]h1]h2]h7]Uentries]r(hNX(sanitize() (circuits.web.url.URL method)h Utrauh9Nh:hh$]ubha)r}r(h)Uh*jh+jh-hdh/}r(hfhgXpyh4]h3]h1]h2]h7]hhXmethodrhjjuh9Nh:hh$]r(hl)r}r(h)XURL.sanitize()h*jh+hoh-hph/}r(h4]rh ahshtXcircuits.web.urlrr}rbh3]h1]h2]h7]rh ahyX URL.sanitizeh{hh|uh9Nh:hh$]r(h)r}r(h)Xsanitizeh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhCXsanitizerr}r(h)Uh*jubaubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]ubeubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhP)r}r(h)X+A shortcut to abspath, escape and lowercaserh*jh+jh-hUh/}r(h1]h2]h3]h4]h7]uh9Kh:hh$]rhCX+A shortcut to abspath, escape and lowercaserr}r(h)jh*jubaubaubeubhG)r}r(h)Uh*jh+XY/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.url.URL.escaperh-hKh/}r(h4]h3]h1]h2]h7]Uentries]r(hNX&escape() (circuits.web.url.URL method)h Utrauh9Nh:hh$]ubha)r}r(h)Uh*jh+jh-hdh/}r(hfhgXpyh4]h3]h1]h2]h7]hhXmethodrhjjuh9Nh:hh$]r(hl)r}r(h)X URL.escape()h*jh+hoh-hph/}r(h4]rh ahshtXcircuits.web.urlr r }r bh3]h1]h2]h7]r h ahyX URL.escapeh{hh|uh9Nh:hh$]r (h)r}r(h)Xescapeh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhCXescaperr}r(h)Uh*jubaubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]ubeubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhP)r}r(h)X,Make sure that the path is correctly escapedrh*jh+jh-hUh/}r(h1]h2]h3]h4]h7]uh9Kh:hh$]r hCX,Make sure that the path is correctly escapedr!r"}r#(h)jh*jubaubaubeubhG)r$}r%(h)Uh*jh+X[/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.url.URL.unescaper&h-hKh/}r'(h4]h3]h1]h2]h7]Uentries]r((hNX(unescape() (circuits.web.url.URL method)hUtr)auh9Nh:hh$]ubha)r*}r+(h)Uh*jh+j&h-hdh/}r,(hfhgXpyh4]h3]h1]h2]h7]hhXmethodr-hjj-uh9Nh:hh$]r.(hl)r/}r0(h)XURL.unescape()h*j*h+hoh-hph/}r1(h4]r2hahshtXcircuits.web.urlr3r4}r5bh3]h1]h2]h7]r6hahyX URL.unescapeh{hh|uh9Nh:hh$]r7(h)r8}r9(h)Xunescapeh*j/h+hoh-hh/}r:(h1]h2]h3]h4]h7]uh9Nh:hh$]r;hCXunescaper<r=}r>(h)Uh*j8ubaubh)r?}r@(h)Uh*j/h+hoh-hh/}rA(h1]h2]h3]h4]h7]uh9Nh:hh$]ubeubh)rB}rC(h)Uh*j*h+hoh-hh/}rD(h1]h2]h3]h4]h7]uh9Nh:hh$]rEhP)rF}rG(h)XUnescape the pathrHh*jBh+j&h-hUh/}rI(h1]h2]h3]h4]h7]uh9Kh:hh$]rJhCXUnescape the pathrKrL}rM(h)jHh*jFubaubaubeubhG)rN}rO(h)Uh*jh+XY/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.url.URL.encoderPh-hKh/}rQ(h4]h3]h1]h2]h7]Uentries]rR(hNX&encode() (circuits.web.url.URL method)hUtrSauh9Nh:hh$]ubha)rT}rU(h)Uh*jh+jPh-hdh/}rV(hfhgXpyh4]h3]h1]h2]h7]hhXmethodrWhjjWuh9Nh:hh$]rX(hl)rY}rZ(h)XURL.encode(encoding)h*jTh+hoh-hph/}r[(h4]r\hahshtXcircuits.web.urlr]r^}r_bh3]h1]h2]h7]r`hahyX URL.encodeh{hh|uh9Nh:hh$]ra(h)rb}rc(h)Xencodeh*jYh+hoh-hh/}rd(h1]h2]h3]h4]h7]uh9Nh:hh$]rehCXencoderfrg}rh(h)Uh*jbubaubh)ri}rj(h)Uh*jYh+hoh-hh/}rk(h1]h2]h3]h4]h7]uh9Nh:hh$]rlh)rm}rn(h)Xencodingh/}ro(h1]h2]h3]h4]h7]uh*jih$]rphCXencodingrqrr}rs(h)Uh*jmubah-hubaubeubh)rt}ru(h)Uh*jTh+hoh-hh/}rv(h1]h2]h3]h4]h7]uh9Nh:hh$]rwhP)rx}ry(h)X'Return the url in an arbitrary encodingrzh*jth+jPh-hUh/}r{(h1]h2]h3]h4]h7]uh9Kh:hh$]r|hCX'Return the url in an arbitrary encodingr}r~}r(h)jzh*jxubaubaubeubhG)r}r(h)Uh*jh+X[/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.url.URL.relativerh-hKh/}r(h4]h3]h1]h2]h7]Uentries]r(hNX(relative() (circuits.web.url.URL method)hUtrauh9Nh:hh$]ubha)r}r(h)Uh*jh+jh-hdh/}r(hfhgXpyh4]h3]h1]h2]h7]hhXmethodrhjjuh9Nh:hh$]r(hl)r}r(h)X$URL.relative(path, encoding='utf-8')h*jh+hoh-hph/}r(h4]rhahshtXcircuits.web.urlrr}rbh3]h1]h2]h7]rhahyX URL.relativeh{hh|uh9Nh:hh$]r(h)r}r(h)Xrelativeh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhCXrelativerr}r(h)Uh*jubaubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]r(h)r}r(h)Xpathh/}r(h1]h2]h3]h4]h7]uh*jh$]rhCXpathrr}r(h)Uh*jubah-hubh)r}r(h)Xencoding='utf-8'h/}r(h1]h2]h3]h4]h7]uh*jh$]rhCXencoding='utf-8'rr}r(h)Uh*jubah-hubeubeubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhP)r}r(h)X1Evaluate the new path relative to the current urlrh*jh+jh-hUh/}r(h1]h2]h3]h4]h7]uh9Kh:hh$]rhCX1Evaluate the new path relative to the current urlrr}r(h)jh*jubaubaubeubhG)r}r(h)Uh*jh+X[/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.url.URL.punycoderh-hKh/}r(h4]h3]h1]h2]h7]Uentries]r(hNX(punycode() (circuits.web.url.URL method)hUtrauh9Nh:hh$]ubha)r}r(h)Uh*jh+jh-hdh/}r(hfhgXpyh4]h3]h1]h2]h7]hhXmethodrhjjuh9Nh:hh$]r(hl)r}r(h)XURL.punycode()h*jh+hoh-hph/}r(h4]rhahshtXcircuits.web.urlrr}rbh3]h1]h2]h7]rhahyX URL.punycodeh{hh|uh9Nh:hh$]r(h)r}r(h)Xpunycodeh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhCXpunycoderr}r(h)Uh*jubaubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]ubeubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhP)r}r(h)XConvert to punycode hostnamerh*jh+jh-hUh/}r(h1]h2]h3]h4]h7]uh9Kh:hh$]rhCXConvert to punycode hostnamerr}r(h)jh*jubaubaubeubhG)r}r(h)Uh*jh+X]/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.url.URL.unpunycoderh-hKh/}r(h4]h3]h1]h2]h7]Uentries]r(hNX*unpunycode() (circuits.web.url.URL method)hUtrauh9Nh:hh$]ubha)r}r(h)Uh*jh+jh-hdh/}r(hfhgXpyh4]h3]h1]h2]h7]hhXmethodrhjjuh9Nh:hh$]r(hl)r}r(h)XURL.unpunycode()h*jh+hoh-hph/}r(h4]rhahshtXcircuits.web.urlrr}rbh3]h1]h2]h7]rhahyXURL.unpunycodeh{hh|uh9Nh:hh$]r(h)r}r(h)X unpunycodeh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhCX unpunycoderr}r(h)Uh*jubaubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]ubeubh)r}r(h)Uh*jh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhP)r}r(h)X"Convert to an unpunycoded hostnamerh*jh+jh-hUh/}r(h1]h2]h3]h4]h7]uh9Kh:hh$]r hCX"Convert to an unpunycoded hostnamer r }r (h)jh*jubaubaubeubhG)r }r(h)Uh*jh+X[/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.url.URL.absoluterh-hKh/}r(h4]h3]h1]h2]h7]Uentries]r(hNX(absolute() (circuits.web.url.URL method)hUtrauh9Nh:hh$]ubha)r}r(h)Uh*jh+jh-hdh/}r(hfhgXpyh4]h3]h1]h2]h7]hhXmethodrhjjuh9Nh:hh$]r(hl)r}r(h)XURL.absolute()h*jh+hoh-hph/}r(h4]rhahshtXcircuits.web.urlrr}rbh3]h1]h2]h7]rhahyX URL.absoluteh{hh|uh9Nh:hh$]r (h)r!}r"(h)Xabsoluteh*jh+hoh-hh/}r#(h1]h2]h3]h4]h7]uh9Nh:hh$]r$hCXabsoluter%r&}r'(h)Uh*j!ubaubh)r(}r)(h)Uh*jh+hoh-hh/}r*(h1]h2]h3]h4]h7]uh9Nh:hh$]ubeubh)r+}r,(h)Uh*jh+hoh-hh/}r-(h1]h2]h3]h4]h7]uh9Nh:hh$]r.hP)r/}r0(h)XKReturn True if this is a fully-qualified URL with a hostname and everythingr1h*j+h+jh-hUh/}r2(h1]h2]h3]h4]h7]uh9Kh:hh$]r3hCXKReturn True if this is a fully-qualified URL with a hostname and everythingr4r5}r6(h)j1h*j/ubaubaubeubhG)r7}r8(h)Uh*jh+XZ/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.url.URL.unicoder9h-hKh/}r:(h4]h3]h1]h2]h7]Uentries]r;(hNX'unicode() (circuits.web.url.URL method)h Utr<auh9Nh:hh$]ubha)r=}r>(h)Uh*jh+j9h-hdh/}r?(hfhgXpyh4]h3]h1]h2]h7]hhXmethodr@hjj@uh9Nh:hh$]rA(hl)rB}rC(h)X URL.unicode()h*j=h+hoh-hph/}rD(h4]rEh ahshtXcircuits.web.urlrFrG}rHbh3]h1]h2]h7]rIh ahyX URL.unicodeh{hh|uh9Nh:hh$]rJ(h)rK}rL(h)Xunicodeh*jBh+hoh-hh/}rM(h1]h2]h3]h4]h7]uh9Nh:hh$]rNhCXunicoderOrP}rQ(h)Uh*jKubaubh)rR}rS(h)Uh*jBh+hoh-hh/}rT(h1]h2]h3]h4]h7]uh9Nh:hh$]ubeubh)rU}rV(h)Uh*j=h+hoh-hh/}rW(h1]h2]h3]h4]h7]uh9Nh:hh$]rXhP)rY}rZ(h)X$Return a unicode version of this urlr[h*jUh+j9h-hUh/}r\(h1]h2]h3]h4]h7]uh9Kh:hh$]r]hCX$Return a unicode version of this urlr^r_}r`(h)j[h*jYubaubaubeubhG)ra}rb(h)Uh*jh+XW/home/prologic/work/circuits/circuits/web/url.py:docstring of circuits.web.url.URL.utf8rch-hKh/}rd(h4]h3]h1]h2]h7]Uentries]re(hNX$utf8() (circuits.web.url.URL method)hUtrfauh9Nh:hh$]ubha)rg}rh(h)Uh*jh+jch-hdh/}ri(hfhgXpyh4]h3]h1]h2]h7]hhXmethodrjhjjjuh9Nh:hh$]rk(hl)rl}rm(h)X URL.utf8()rnh*jgh+hoh-hph/}ro(h4]rphahshtXcircuits.web.urlrqrr}rsbh3]h1]h2]h7]rthahyXURL.utf8h{hh|uh9Nh:hh$]ru(h)rv}rw(h)Xutf8h*jlh+hoh-hh/}rx(h1]h2]h3]h4]h7]uh9Nh:hh$]ryhCXutf8rzr{}r|(h)Uh*jvubaubh)r}}r~(h)Uh*jlh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]ubeubh)r}r(h)Uh*jgh+hoh-hh/}r(h1]h2]h3]h4]h7]uh9Nh:hh$]rhP)r}r(h)X"Return a utf-8 version of this urlrh*jh+jch-hUh/}r(h1]h2]h3]h4]h7]uh9Kh:hh$]rhCX"Return a utf-8 version of this urlrr}r(h)jh*jubaubaubeubeubeubeubah)UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh:hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh@NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh,Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhh#h'h jh jhjh jh6cdocutils.nodes target r)r}r(h)Uh*h'h+hJh-Utargetrh/}r(h1]h4]rh6ah3]Uismodh2]h7]uh9Kh:hh$]ubh jhjhjYhjhjhjh jBhjUhhmhjhj+hjhjlhj/uUsubstitution_namesr}rh-h:h/}r(h1]h4]h3]Usourceh,h2]h7]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.core.doctree0000644000014400001440000051773512425011101025071 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X.circuits.core.BaseComponent.unregister_pendingqX submodulesqNXcircuits.core.Bridge.initqXcircuits.core.BaseComponentq Xcircuits.core.Componentq Xcircuits.core.Event.notifyq Xcircuits.core.Event.completeq X!circuits.core.Manager.processTaskq Xcircuits.core.Manager.flushqXcircuits.core.Event.alert_doneqXcircuits.core.TimeoutErrorqXcircuits.core.Event.stopqXcircuits.core.DebuggerqXcircuits.core.Event.cancelqXcircuits.core.Event.nameqXcircuits.core.Event.successqXcircuits.core.Event.parentqXcircuits.core.Manager.fireEventqXcircuits.core.Manager.nameqX#circuits.core.Event.waitingHandlersqX%circuits.core.Debugger.IgnoreChannelsqXcircuits.core.Manager.waitEventqXcircuits.core.task.successqXmodule contentsqNX#circuits.core.Debugger.IgnoreEventsqXcircuits.core.Timer.resetqX circuits.core.Manager.addHandlerq Xcircuits.core.Manager.runningq!Xcircuits.core.Manager.callEventq"X"circuits.core.Manager.registerTaskq#Xcircuits.core.task.failureq$X&circuits.core.BaseComponent.unregisterq%Xcircuits.core.Bridgeq&Xcircuits.core.Manager.pidq'Xcircuits.core.Eventq(Xcircuits.core.Bridge.ignoreq)Xcircuits.core.Manager.stopq*Xcircuits.core.Timerq+X#circuits.core.BaseComponent.handlesq,Xcircuits.core.taskq-Xcircuits.core.Manager.waitq.Xcircuits.core.Timer.expiryq/Xcircuits.core.Bridge.sendq0Xcircuits.core.Worker.channelq1X#circuits.core.BaseComponent.channelq2X#circuits.core.Manager.removeHandlerq3X"circuits.core.BaseComponent.eventsq4X$circuits.core.BaseComponent.handlersq5X$circuits.core.Manager.unregisterTaskq6Xcircuits.core.task.nameq7X%circuits.core.Manager.unregisterChildq8Xcircuits.core.Managerq9Xcircuits.core.Event.failureq:Xcircuits.core.Manager.startq;Xcircuits.core.handlerqXcircuits.core.Event.childq?Xcircuits.core.Workerq@Xcircuits.core.Bridge.channelqAXcircuits.core.Manager.callqBXcircuits.core packageqCNX!circuits.core.Manager.flushEventsqDXcircuits.core.Event.createqEXcircuits.core.Manager.fireqFXcircuits.core.Worker.initqGXcircuits.core.Manager.runqHXcircuits.core.Event.channelsqIX$circuits.core.BaseComponent.registerqJX!circuits.core.Manager.getHandlersqKXcircuits.core.Manager.tickqLuUsubstitution_defsqM}qNUparse_messagesqO]qPUcurrent_sourceqQNU decorationqRNUautofootnote_startqSKUnameidsqT}qU(hhhU submodulesqVhhh h h h h h h h h h hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhUmodule-contentsqWhhhhh h h!h!h"h"h#h#h$h$h%h%h&h&h'h'h(h(h)h)h*h*h+h+h,h,h-h-h.h.h/h/h0h0h1h1h2h2h3h3h4h4h5h5h6h6h7h7h8h8h9h9h:h:h;h;hh>h?h?h@h@hAhAhBhBhCUcircuits-core-packageqXhDhDhEhEhFhFhGhGhHhHhIhIhJhJhKhKhLhLuUchildrenqY]qZcdocutils.nodes section q[)q\}q](U rawsourceq^UUparentq_hUsourceq`X>/home/prologic/work/circuits/docs/source/api/circuits.core.rstqaUtagnameqbUsectionqcU attributesqd}qe(Udupnamesqf]Uclassesqg]Ubackrefsqh]Uidsqi]qjhXaUnamesqk]qlhCauUlineqmKUdocumentqnhhY]qo(cdocutils.nodes title qp)qq}qr(h^Xcircuits.core packageqsh_h\h`hahbUtitleqthd}qu(hf]hg]hh]hi]hk]uhmKhnhhY]qvcdocutils.nodes Text qwXcircuits.core packageqxqy}qz(h^hsh_hqubaubh[)q{}q|(h^Uh_h\h`hahbhchd}q}(hf]hg]hh]hi]q~hVahk]qhauhmKhnhhY]q(hp)q}q(h^X Submodulesqh_h{h`hahbhthd}q(hf]hg]hh]hi]hk]uhmKhnhhY]qhwX Submodulesqq}q(h^hh_hubaubcdocutils.nodes compound q)q}q(h^Uh_h{h`hahbUcompoundqhd}q(hf]hg]qUtoctree-wrapperqahh]hi]hk]uhmKhnhhY]qcsphinx.addnodes toctree q)q}q(h^Uh_hh`hahbUtoctreeqhd}q(UnumberedqKU includehiddenqh_Xapi/circuits.coreqU titlesonlyqUglobqhi]hh]hf]hg]hk]Uentriesq]q(NXapi/circuits.core.bridgeqqNXapi/circuits.core.componentsqqNXapi/circuits.core.debuggerqqNXapi/circuits.core.eventsqqNXapi/circuits.core.handlersqqNXapi/circuits.core.helpersqqNXapi/circuits.core.loaderqqNXapi/circuits.core.managerqqNXapi/circuits.core.pollersqqNXapi/circuits.core.timersqqNXapi/circuits.core.utilsqqNXapi/circuits.core.valuesqqNXapi/circuits.core.workersqqeUhiddenqU includefilesq]q(hhhhhhhhhhhhheUmaxdepthqJuhmKhY]ubaubeubh[)q}q(h^Uh_h\h`hahbhchd}q(hf]hg]hh]hi]q(Xmodule-circuits.coreqhWehk]qhauhmKhnhhY]q(hp)q}q(h^XModule contentsqh_hh`hahbhthd}q(hf]hg]hh]hi]hk]uhmKhnhhY]qhwXModule contentsqDžq}q(h^hh_hubaubcsphinx.addnodes index q)q}q(h^Uh_hh`U qhbUindexqhd}q(hi]hh]hf]hg]hk]Uentries]q(UsingleqXcircuits.core (module)Xmodule-circuits.coreUtqauhmKhnhhY]ubcdocutils.nodes paragraph q)q}q(h^XCoreqh_hh`XQ/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.coreqhbU paragraphqhd}q(hf]hg]hh]hi]hk]uhmKhnhhY]qhwXCoreqۅq}q(h^hh_hubaubh)q}q(h^XIThis package contains the essential core parts of the circuits framework.qh_hh`hhbhhd}q(hf]hg]hh]hi]hk]uhmKhnhhY]qhwXIThis package contains the essential core parts of the circuits framework.qㅁq}q(h^hh_hubaubh)q}q(h^Uh_hh`XY/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.handlerqhbhhd}q(hi]hh]hf]hg]hk]Uentries]q(hX#handler() (in module circuits.core)hqhbUdesc_signatureqhd}q(hi]qh(h^j9h_j7ubaubh)r?}r@(h^XThis decorator can be applied to methods of classes derived from :class:`circuits.core.components.BaseComponent`. It marks the method as a handler for the events passed as arguments to the ``@handler`` decorator. The events are specified by their name.h_j2h`hhbhhd}rA(hf]hg]hh]hi]hk]uhmKhnhhY]rB(hwXAThis decorator can be applied to methods of classes derived from rCrD}rE(h^XAThis decorator can be applied to methods of classes derived from h_j?ubcsphinx.addnodes pending_xref rF)rG}rH(h^X/:class:`circuits.core.components.BaseComponent`rIh_j?h`hahbU pending_xrefrJhd}rK(UreftypeXclassUrefwarnrLU reftargetrMX&circuits.core.components.BaseComponentU refdomainXpyrNhi]hh]U refexplicithf]hg]hk]UrefdocrOhUpy:classrPNU py:modulerQX circuits.corerRuhmKhY]rScdocutils.nodes literal rT)rU}rV(h^jIhd}rW(hf]hg]rX(UxrefrYjNXpy-classrZehh]hi]hk]uh_jGhY]r[hwX&circuits.core.components.BaseComponentr\r]}r^(h^Uh_jUubahbUliteralr_ubaubhwXM. It marks the method as a handler for the events passed as arguments to the r`ra}rb(h^XM. It marks the method as a handler for the events passed as arguments to the h_j?ubjT)rc}rd(h^X ``@handler``hd}re(hf]hg]hh]hi]hk]uh_j?hY]rfhwX@handlerrgrh}ri(h^Uh_jcubahbj_ubhwX3 decorator. The events are specified by their name.rjrk}rl(h^X3 decorator. The events are specified by their name.h_j?ubeubh)rm}rn(h^XThe decorated method's arguments must match the arguments passed to the :class:`circuits.core.events.Event` on creation. Optionally, the method may have an additional first argument named *event*. If declared, the event object that caused the handler to be invoked is assigned to it.h_j2h`hhbhhd}ro(hf]hg]hh]hi]hk]uhmKhnhhY]rp(hwXHThe decorated method's arguments must match the arguments passed to the rqrr}rs(h^XHThe decorated method's arguments must match the arguments passed to the h_jmubjF)rt}ru(h^X#:class:`circuits.core.events.Event`rvh_jmh`hahbjJhd}rw(UreftypeXclassjLjMXcircuits.core.events.EventU refdomainXpyrxhi]hh]U refexplicithf]hg]hk]jOhjPNjQjRuhmKhY]ryjT)rz}r{(h^jvhd}r|(hf]hg]r}(jYjxXpy-classr~ehh]hi]hk]uh_jthY]rhwXcircuits.core.events.Eventrr}r(h^Uh_jzubahbj_ubaubhwXQ on creation. Optionally, the method may have an additional first argument named rr}r(h^XQ on creation. Optionally, the method may have an additional first argument named h_jmubcdocutils.nodes emphasis r)r}r(h^X*event*hd}r(hf]hg]hh]hi]hk]uh_jmhY]rhwXeventrr}r(h^Uh_jubahbUemphasisrubhwXX. If declared, the event object that caused the handler to be invoked is assigned to it.rr}r(h^XX. If declared, the event object that caused the handler to be invoked is assigned to it.h_jmubeubh)r}r(h^X.By default, the handler is invoked by the component's root :class:`~.manager.Manager` for events that are propagated on the channel determined by the BaseComponent's *channel* attribute. This may be overridden by specifying a different channel as a keyword parameter of the decorator (``channel=...``).h_j2h`hhbhhd}r(hf]hg]hh]hi]hk]uhmK hnhhY]r(hwX;By default, the handler is invoked by the component's root rr}r(h^X;By default, the handler is invoked by the component's root h_jubjF)r}r(h^X:class:`~.manager.Manager`rh_jh`hahbjJhd}r(UreftypeXclassU refspecificrjLjMXmanager.ManagerU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPNjQjRuhmKhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-classrehh]hi]hk]uh_jhY]rhwXManagerrr}r(h^Uh_jubahbj_ubaubhwXQ for events that are propagated on the channel determined by the BaseComponent's rr}r(h^XQ for events that are propagated on the channel determined by the BaseComponent's h_jubj)r}r(h^X *channel*hd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXchannelrr}r(h^Uh_jubahbjubhwXn attribute. This may be overridden by specifying a different channel as a keyword parameter of the decorator (rr}r(h^Xn attribute. This may be overridden by specifying a different channel as a keyword parameter of the decorator (h_jubjT)r}r(h^X``channel=...``hd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX channel=...rr}r(h^Uh_jubahbj_ubhwX).rr}r(h^X).h_jubeubh)r}r(h^XKeyword argument ``priority`` influences the order in which handlers for a specific event are invoked. The higher the priority, the earlier the handler is executed.h_j2h`hhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]r(hwXKeyword argument rr}r(h^XKeyword argument h_jubjT)r}r(h^X ``priority``hd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXpriorityrr}r(h^Uh_jubahbj_ubhwX influences the order in which handlers for a specific event are invoked. The higher the priority, the earlier the handler is executed.rr}r(h^X influences the order in which handlers for a specific event are invoked. The higher the priority, the earlier the handler is executed.h_jubeubh)r}r(h^XIf you want to override a handler defined in a base class of your component, you must specify ``override=True``, else your method becomes an additional handler for the event.h_j2h`hhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]r(hwX^If you want to override a handler defined in a base class of your component, you must specify rr}r(h^X^If you want to override a handler defined in a base class of your component, you must specify h_jubjT)r}r(h^X``override=True``hd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX override=Truerr}r(h^Uh_jubahbj_ubhwX?, else your method becomes an additional handler for the event.rr}r(h^X?, else your method becomes an additional handler for the event.h_jubeubh)r}r(h^X**Return value**rh_j2h`hhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]rcdocutils.nodes strong r)r}r(h^jhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX Return valuerr}r(h^Uh_jubahbUstrongrubaubh)r}r(h^XNormally, the results returned by the handlers for an event are simply collected in the :class:`circuits.core.events.Event`'s :attr:`value` attribute. As a special case, a handler may return a :class:`types.GeneratorType`. This signals to the dispatcher that the handler isn't ready to deliver a result yet. Rather, it has interrupted it's execution with a ``yield None`` statement, thus preserving its current execution state.h_j2h`hhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]r(hwXXNormally, the results returned by the handlers for an event are simply collected in the rr}r(h^XXNormally, the results returned by the handlers for an event are simply collected in the h_jubjF)r}r(h^X#:class:`circuits.core.events.Event`rh_jh`NhbjJhd}r(UreftypeXclassjLjMXcircuits.core.events.EventU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPNjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-classrehh]hi]hk]uh_jhY]rhwXcircuits.core.events.Eventrr}r(h^Uh_jubahbj_ubaubhwX's rr}r(h^X's h_jubjF)r }r (h^X :attr:`value`r h_jh`NhbjJhd}r (UreftypeXattrjLjMXvalueU refdomainXpyr hi]hh]U refexplicithf]hg]hk]jOhjPNjQjRuhmNhY]rjT)r}r(h^j hd}r(hf]hg]r(jYj Xpy-attrrehh]hi]hk]uh_j hY]rhwXvaluerr}r(h^Uh_jubahbj_ubaubhwX6 attribute. As a special case, a handler may return a rr}r(h^X6 attribute. As a special case, a handler may return a h_jubjF)r}r(h^X:class:`types.GeneratorType`rh_jh`NhbjJhd}r(UreftypeXclassjLjMXtypes.GeneratorTypeU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPNjQjRuhmNhY]r jT)r!}r"(h^jhd}r#(hf]hg]r$(jYjXpy-classr%ehh]hi]hk]uh_jhY]r&hwXtypes.GeneratorTyper'r(}r)(h^Uh_j!ubahbj_ubaubhwX. This signals to the dispatcher that the handler isn't ready to deliver a result yet. Rather, it has interrupted it's execution with a r*r+}r,(h^X. This signals to the dispatcher that the handler isn't ready to deliver a result yet. Rather, it has interrupted it's execution with a h_jubjT)r-}r.(h^X``yield None``hd}r/(hf]hg]hh]hi]hk]uh_jhY]r0hwX yield Noner1r2}r3(h^Uh_j-ubahbj_ubhwX8 statement, thus preserving its current execution state.r4r5}r6(h^X8 statement, thus preserving its current execution state.h_jubeubh)r7}r8(h^XThe dispatcher saves the returned generator object as a task. All tasks are reexamined (i.e. their :meth:`next()` method is invoked) when the pending events have been executed.h_j2h`hhbhhd}r9(hf]hg]hh]hi]hk]uhmK%hnhhY]r:(hwXcThe dispatcher saves the returned generator object as a task. All tasks are reexamined (i.e. their r;r<}r=(h^XcThe dispatcher saves the returned generator object as a task. All tasks are reexamined (i.e. their h_j7ubjF)r>}r?(h^X:meth:`next()`r@h_j7h`NhbjJhd}rA(UreftypeXmethjLjMXnextU refdomainXpyrBhi]hh]U refexplicithf]hg]hk]jOhjPNjQjRuhmNhY]rCjT)rD}rE(h^j@hd}rF(hf]hg]rG(jYjBXpy-methrHehh]hi]hk]uh_j>hY]rIhwXnext()rJrK}rL(h^Uh_jDubahbj_ubaubhwX? method is invoked) when the pending events have been executed.rMrN}rO(h^X? method is invoked) when the pending events have been executed.h_j7ubeubh)rP}rQ(h^XThis feature avoids an unnecessarily complicated chaining of event handlers. Imagine a handler A that needs the results from firing an event E in order to complete. Then without this feature, the final action of A would be to fire event E, and another handler for an event ``SuccessE`` would be required to complete handler A's operation, now having the result from invoking E available (actually it's even a bit more complicated).h_j2h`hhbhhd}rR(hf]hg]hh]hi]hk]uhmK)hnhhY]rS(hwXThis feature avoids an unnecessarily complicated chaining of event handlers. Imagine a handler A that needs the results from firing an event E in order to complete. Then without this feature, the final action of A would be to fire event E, and another handler for an event rTrU}rV(h^XThis feature avoids an unnecessarily complicated chaining of event handlers. Imagine a handler A that needs the results from firing an event E in order to complete. Then without this feature, the final action of A would be to fire event E, and another handler for an event h_jPubjT)rW}rX(h^X ``SuccessE``hd}rY(hf]hg]hh]hi]hk]uh_jPhY]rZhwXSuccessEr[r\}r](h^Uh_jWubahbj_ubhwX would be required to complete handler A's operation, now having the result from invoking E available (actually it's even a bit more complicated).r^r_}r`(h^X would be required to complete handler A's operation, now having the result from invoking E available (actually it's even a bit more complicated).h_jPubeubh)ra}rb(h^X Using this "suspend" feature, the handler simply fires event E and then yields ``None`` until e.g. it finds a result in E's :attr:`value` attribute. For the simplest scenario, there even is a utility method :meth:`circuits.core.manager.Manager.callEvent` that combines firing and waiting.h_j2h`hhbhhd}rc(hf]hg]hh]hi]hk]uhmK1hnhhY]rd(hwXOUsing this "suspend" feature, the handler simply fires event E and then yields rerf}rg(h^XOUsing this "suspend" feature, the handler simply fires event E and then yields h_jaubjT)rh}ri(h^X``None``hd}rj(hf]hg]hh]hi]hk]uh_jahY]rkhwXNonerlrm}rn(h^Uh_jhubahbj_ubhwX% until e.g. it finds a result in E's rorp}rq(h^X% until e.g. it finds a result in E's h_jaubjF)rr}rs(h^X :attr:`value`rth_jah`NhbjJhd}ru(UreftypeXattrjLjMXvalueU refdomainXpyrvhi]hh]U refexplicithf]hg]hk]jOhjPNjQjRuhmNhY]rwjT)rx}ry(h^jthd}rz(hf]hg]r{(jYjvXpy-attrr|ehh]hi]hk]uh_jrhY]r}hwXvaluer~r}r(h^Uh_jxubahbj_ubaubhwXF attribute. For the simplest scenario, there even is a utility method rr}r(h^XF attribute. For the simplest scenario, there even is a utility method h_jaubjF)r}r(h^X/:meth:`circuits.core.manager.Manager.callEvent`rh_jah`NhbjJhd}r(UreftypeXmethjLjMX'circuits.core.manager.Manager.callEventU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPNjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-methrehh]hi]hk]uh_jhY]rhwX)circuits.core.manager.Manager.callEvent()rr}r(h^Uh_jubahbj_ubaubhwX" that combines firing and waiting.rr}r(h^X" that combines firing and waiting.h_jaubeubeubeubh)r}r(h^Uh_hh`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX&BaseComponent (class in circuits.core)h UtrauhmNhnhhY]ubh)r}r(h^Uh_hh`Nhbhhd}r(hhXpyrhi]hh]hf]hg]hk]hXclassrhjuhmNhnhhY]r(h)r}r(h^XBaseComponent(*args, **kwargs)h_jh`hhbhhd}r(hi]rh ahhX circuits.corerr}rbhh]hf]hg]hk]rh ajX BaseComponentrjUjuhmNhnhhY]r(csphinx.addnodes desc_annotation r)r}r(h^Xclass h_jh`hhbUdesc_annotationrhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXclass rr}r(h^Uh_jubaubj )r}r(h^Xcircuits.core.h_jh`hhbj hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXcircuits.core.rr}r(h^Uh_jubaubj)r}r(h^jh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwX BaseComponentrr}r(h^Uh_jubaubj)r}r(h^Uh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r(j!)r}r(h^X*argshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX*argsrr}r(h^Uh_jubahbj)ubj!)r}r(h^X**kwargshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX**kwargsrr}r(h^Uh_jubahbj)ubeubeubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r(h)r}r(h^X-Bases: :class:`circuits.core.manager.Manager`h_jh`U rhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]r(hwXBases: rr}r(h^XBases: h_jubjF)r}r(h^X&:class:`circuits.core.manager.Manager`rh_jh`NhbjJhd}r(UreftypeXclassjLjMXcircuits.core.manager.ManagerU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-classrehh]hi]hk]uh_jhY]rhwXcircuits.core.manager.Managerrr}r(h^Uh_jubahbj_ubaubeubh)r}r(h^XThis is the base class for all components in a circuits based application. Components can (and should, except for root components) be registered with a parent component.rh_jh`X_/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.BaseComponentrhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]rhwXThis is the base class for all components in a circuits based application. Components can (and should, except for root components) be registered with a parent component.rr}r(h^jh_jubaubh)r}r(h^XBaseComponents can declare methods as event handlers using the handler decoration (see :func:`circuits.core.handlers.handler`). The handlers are invoked for matching events from the component's channel (specified as the component's ``channel`` attribute).h_jh`jhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]r(hwXWBaseComponents can declare methods as event handlers using the handler decoration (see rr}r(h^XWBaseComponents can declare methods as event handlers using the handler decoration (see h_jubjF)r}r(h^X&:func:`circuits.core.handlers.handler`rh_jh`NhbjJhd}r(UreftypeXfuncjLjMXcircuits.core.handlers.handlerU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-funcr ehh]hi]hk]uh_jhY]r hwX circuits.core.handlers.handler()r r }r (h^Uh_jubahbj_ubaubhwXk). The handlers are invoked for matching events from the component's channel (specified as the component's rr}r(h^Xk). The handlers are invoked for matching events from the component's channel (specified as the component's h_jubjT)r}r(h^X ``channel``hd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXchannelrr}r(h^Uh_jubahbj_ubhwX attribute).rr}r(h^X attribute).h_jubeubh)r}r(h^XBaseComponents inherit from :class:`circuits.core.manager.Manager`. This provides components with the :func:`circuits.core.manager.Manager.fireEvent` method that can be used to fire events as the result of some computation.h_jh`jhbhhd}r(hf]hg]hh]hi]hk]uhmK hnhhY]r(hwXBaseComponents inherit from rr }r!(h^XBaseComponents inherit from h_jubjF)r"}r#(h^X&:class:`circuits.core.manager.Manager`r$h_jh`NhbjJhd}r%(UreftypeXclassjLjMXcircuits.core.manager.ManagerU refdomainXpyr&hi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]r'jT)r(}r)(h^j$hd}r*(hf]hg]r+(jYj&Xpy-classr,ehh]hi]hk]uh_j"hY]r-hwXcircuits.core.manager.Managerr.r/}r0(h^Uh_j(ubahbj_ubaubhwX$. This provides components with the r1r2}r3(h^X$. This provides components with the h_jubjF)r4}r5(h^X/:func:`circuits.core.manager.Manager.fireEvent`r6h_jh`NhbjJhd}r7(UreftypeXfuncjLjMX'circuits.core.manager.Manager.fireEventU refdomainXpyr8hi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]r9jT)r:}r;(h^j6hd}r<(hf]hg]r=(jYj8Xpy-funcr>ehh]hi]hk]uh_j4hY]r?hwX)circuits.core.manager.Manager.fireEvent()r@rA}rB(h^Uh_j:ubahbj_ubaubhwXJ method that can be used to fire events as the result of some computation.rCrD}rE(h^XJ method that can be used to fire events as the result of some computation.h_jubeubh)rF}rG(h^XsApart from the ``fireEvent()`` method, the Manager nature is important for root components that are started or run.h_jh`jhbhhd}rH(hf]hg]hh]hi]hk]uhmKhnhhY]rI(hwXApart from the rJrK}rL(h^XApart from the h_jFubjT)rM}rN(h^X``fireEvent()``hd}rO(hf]hg]hh]hi]hk]uh_jFhY]rPhwX fireEvent()rQrR}rS(h^Uh_jMubahbj_ubhwXU method, the Manager nature is important for root components that are started or run.rTrU}rV(h^XU method, the Manager nature is important for root components that are started or run.h_jFubeubcdocutils.nodes field_list rW)rX}rY(h^Uh_jh`NhbU field_listrZhd}r[(hf]hg]hh]hi]hk]uhmNhnhhY]r\cdocutils.nodes field r])r^}r_(h^Uhd}r`(hf]hg]hh]hi]hk]uh_jXhY]ra(cdocutils.nodes field_name rb)rc}rd(h^Uhd}re(hf]hg]hh]hi]hk]uh_j^hY]rfhwX Variablesrgrh}ri(h^Uh_jcubahbU field_namerjubcdocutils.nodes field_body rk)rl}rm(h^Uhd}rn(hf]hg]hh]hi]hk]uh_j^hY]roh)rp}rq(h^Uhd}rr(hf]hg]hh]hi]hk]uh_jlhY]rs(jF)rt}ru(h^Uhd}rv(UreftypeUobjrwU reftargetXchannelrxU refdomainjhi]hh]U refexplicithf]hg]hk]uh_jphY]ryj)rz}r{(h^jxhd}r|(hf]hg]hh]hi]hk]uh_jthY]r}hwXchannelr~r}r(h^Uh_jzubahbjubahbjJubhwX -- rr}r(h^Uh_jpubhwXa component can be associated with a specific channel by setting this attribute. This should either be done by specifying a class attribute rr}r(h^Xa component can be associated with a specific channel by setting this attribute. This should either be done by specifying a class attribute h_jpubj)r}r(h^X *channel*hd}r(hf]hg]hh]hi]hk]uh_jphY]rhwXchannelrr}r(h^Uh_jubahbjubhwX8 in the derived class or by passing a keyword parameter rr}r(h^X8 in the derived class or by passing a keyword parameter h_jpubj)r}r(h^X*channel="..."*hd}r(hf]hg]hh]hi]hk]uh_jphY]rhwX channel="..."rr}r(h^Uh_jubahbjubhwX to rr}r(h^X to h_jpubj)r}r(h^X *__init__*hd}r(hf]hg]hh]hi]hk]uh_jphY]rhwX__init__rr}r(h^Uh_jubahbjubhwX. If specified, the component's handlers receive events on the specified channel only, and events fired by the component will be sent on the specified channel (this behavior may be overridden, see rr}r(h^X. If specified, the component's handlers receive events on the specified channel only, and events fired by the component will be sent on the specified channel (this behavior may be overridden, see h_jpubjF)r}r(h^X$:class:`~circuits.core.events.Event`rh_jph`NhbjJhd}r(UreftypeXclassjLjMXcircuits.core.events.EventU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-classrehh]hi]hk]uh_jhY]rhwXEventrr}r(h^Uh_jubahbj_ubaubhwX, rr}r(h^X, h_jpubjF)r}r(h^X:meth:`~.fireEvent`rh_jph`NhbjJhd}r(UreftypeXmethjjLjMX fireEventU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-methrehh]hi]hk]uh_jhY]rhwX fireEvent()rr}r(h^Uh_jubahbj_ubaubhwX and rr}r(h^X and h_jpubjF)r}r(h^X':func:`~circuits.core.handlers.handler`rh_jph`NhbjJhd}r(UreftypeXfuncjLjMXcircuits.core.handlers.handlerU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-funcrehh]hi]hk]uh_jhY]rhwX handler()rr}r(h^Uh_jubahbj_ubaubhwX). By default, the channel attribute is set to "*", meaning that events are fired on all channels and received from all channels.rr}r(h^X). By default, the channel attribute is set to "*", meaning that events are fired on all channels and received from all channels.h_jpubehbhubahbU field_bodyrubehbUfieldrubaubh)r}r(h^X4initializes x; see x.__class__.__doc__ for signaturerh_jh`jhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]rhwX4initializes x; see x.__class__.__doc__ for signaturerr}r(h^jh_jubaubh)r}r(h^Uh_jh`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX/channel (circuits.core.BaseComponent attribute)h2UtrauhmNhnhhY]ubh)r}r(h^Uh_jh`Nhbhhd}r(hhXpyhi]hh]hf]hg]hk]hX attributerhjuhmNhnhhY]r(h)r}r(h^XBaseComponent.channelh_jh`U rhbhhd}r(hi]rh2ahhX circuits.corerr}rbhh]hf]hg]hk]rh2ajXBaseComponent.channeljjjuhmNhnhhY]r(j)r}r(h^Xchannelh_jh`jhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXchannelrr}r(h^Uh_jubaubj)r}r(h^X = '*'h_jh`jhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwX = '*'rr}r(h^Uh_jubaubeubj1)r}r(h^Uh_jh`jhbj4hd}r (hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r }r (h^Uh_jh`Xf/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.BaseComponent.eventsr hbhhd}r (hi]hh]hf]hg]hk]Uentries]r(hX3events() (circuits.core.BaseComponent class method)h4UtrauhmNhnhhY]ubh)r}r(h^Uh_jh`j hbhhd}r(hhXpyhi]hh]hf]hg]hk]hX classmethodrhjuhmNhnhhY]r(h)r}r(h^XBaseComponent.events()h_jh`hhbhhd}r(hi]rh4ahhX circuits.corerr}rbhh]hf]hg]hk]rh4ajXBaseComponent.eventsjjjuhmNhnhhY]r(j)r}r(h^U classmethod r h_jh`hhbjhd}r!(hf]hg]hh]hi]hk]uhmNhnhhY]r"hwX classmethod r#r$}r%(h^Uh_jubaubj)r&}r'(h^Xeventsh_jh`hhbjhd}r((hf]hg]hh]hi]hk]uhmNhnhhY]r)hwXeventsr*r+}r,(h^Uh_j&ubaubj)r-}r.(h^Uh_jh`hhbjhd}r/(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubj1)r0}r1(h^Uh_jh`hhbj4hd}r2(hf]hg]hh]hi]hk]uhmNhnhhY]r3h)r4}r5(h^X6Returns a list of all events this Component listens tor6h_j0h`j hbhhd}r7(hf]hg]hh]hi]hk]uhmKhnhhY]r8hwX6Returns a list of all events this Component listens tor9r:}r;(h^j6h_j4ubaubaubeubh)r<}r=(h^Uh_jh`Xh/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.BaseComponent.handlersr>hbhhd}r?(hi]hh]hf]hg]hk]Uentries]r@(hX5handlers() (circuits.core.BaseComponent class method)h5UtrAauhmNhnhhY]ubh)rB}rC(h^Uh_jh`j>hbhhd}rD(hhXpyhi]hh]hf]hg]hk]hX classmethodrEhjEuhmNhnhhY]rF(h)rG}rH(h^XBaseComponent.handlers()h_jBh`hhbhhd}rI(hi]rJh5ahhX circuits.corerKrL}rMbhh]hf]hg]hk]rNh5ajXBaseComponent.handlersjjjuhmNhnhhY]rO(j)rP}rQ(h^j h_jGh`hhbjhd}rR(hf]hg]hh]hi]hk]uhmNhnhhY]rShwX classmethod rTrU}rV(h^Uh_jPubaubj)rW}rX(h^Xhandlersh_jGh`hhbjhd}rY(hf]hg]hh]hi]hk]uhmNhnhhY]rZhwXhandlersr[r\}r](h^Uh_jWubaubj)r^}r_(h^Uh_jGh`hhbjhd}r`(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubj1)ra}rb(h^Uh_jBh`hhbj4hd}rc(hf]hg]hh]hi]hk]uhmNhnhhY]rdh)re}rf(h^X7Returns a list of all event handlers for this Componentrgh_jah`j>hbhhd}rh(hf]hg]hh]hi]hk]uhmKhnhhY]rihwX7Returns a list of all event handlers for this Componentrjrk}rl(h^jgh_jeubaubaubeubh)rm}rn(h^Uh_jh`Xg/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.BaseComponent.handlesrohbhhd}rp(hi]hh]hf]hg]hk]Uentries]rq(hX4handles() (circuits.core.BaseComponent class method)h,UtrrauhmNhnhhY]ubh)rs}rt(h^Uh_jh`johbhhd}ru(hhXpyhi]hh]hf]hg]hk]hX classmethodrvhjvuhmNhnhhY]rw(h)rx}ry(h^XBaseComponent.handles(*names)h_jsh`hhbhhd}rz(hi]r{h,ahhX circuits.corer|r}}r~bhh]hf]hg]hk]rh,ajXBaseComponent.handlesjjjuhmNhnhhY]r(j)r}r(h^j h_jxh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwX classmethod rr}r(h^Uh_jubaubj)r}r(h^Xhandlesh_jxh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXhandlesrr}r(h^Uh_jubaubj)r}r(h^Uh_jxh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rj!)r}r(h^X*nameshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX*namesrr}r(h^Uh_jubahbj)ubaubeubj1)r}r(h^Uh_jsh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rh)r}r(h^X>Returns True if all names are event handlers of this Componentrh_jh`johbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]rhwX>Returns True if all names are event handlers of this Componentrr}r(h^jh_jubaubaubeubh)r}r(h^Uh_jh`Xh/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.BaseComponent.registerrhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX/register() (circuits.core.BaseComponent method)hJUtrauhmNhnhhY]ubh)r}r(h^Uh_jh`jhbhhd}r(hhXpyhi]hh]hf]hg]hk]hXmethodrhjuhmNhnhhY]r(h)r}r(h^XBaseComponent.register(parent)h_jh`hhbhhd}r(hi]rhJahhX circuits.corerr}rbhh]hf]hg]hk]rhJajXBaseComponent.registerjjjuhmNhnhhY]r(j)r}r(h^Xregisterh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXregisterrr}r(h^Uh_jubaubj)r}r(h^Uh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rj!)r}r(h^Xparenthd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXparentrr}r(h^Uh_jubahbj)ubaubeubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r(h)r}r(h^XSInserts this component in the component tree as a child of the given *parent* node.h_jh`jhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]r(hwXEInserts this component in the component tree as a child of the given rr}r(h^XEInserts this component in the component tree as a child of the given h_jubj)r}r(h^X*parent*hd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXparentrr}r(h^Uh_jubahbjubhwX node.rr}r(h^X node.h_jubeubjW)r}r(h^Uh_jh`jhbjZhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rj])r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]r(jb)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX Parametersrr}r(h^Uh_jubahbjjubjk)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]rh)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]r(j)r}r(h^Xparenthd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXparentrr}r(h^Uh_jubahbjubhwX (rr}r(h^Uh_jubjF)r}r(h^X:class:`~.manager.Manager`rh_jh`NhbjJhd}r(UreftypeXclassjjLjMXmanager.ManagerU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r (h^jhd}r (hf]hg]r (jYjXpy-classr ehh]hi]hk]uh_jhY]r hwXManagerrr}r(h^Uh_jubahbj_ubaubhwX)r}r(h^Uh_jubhwX -- rr}r(h^Uh_jubhwX6the parent component after registration has completed.rr}r(h^X6the parent component after registration has completed.rh_jubehbhubahbjubehbjubaubh)r}r(h^XsThis method fires a :class:`~.events.Registered` event to inform other components in the tree about the new member.h_jh`jhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]r(hwXThis method fires a rr}r (h^XThis method fires a h_jubjF)r!}r"(h^X:class:`~.events.Registered`r#h_jh`NhbjJhd}r$(UreftypeXclassjjLjMXevents.RegisteredU refdomainXpyr%hi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]r&jT)r'}r((h^j#hd}r)(hf]hg]r*(jYj%Xpy-classr+ehh]hi]hk]uh_j!hY]r,hwX Registeredr-r.}r/(h^Uh_j'ubahbj_ubaubhwXC event to inform other components in the tree about the new member.r0r1}r2(h^XC event to inform other components in the tree about the new member.h_jubeubeubeubh)r3}r4(h^Uh_jh`Xj/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.BaseComponent.unregisterr5hbhhd}r6(hi]hh]hf]hg]hk]Uentries]r7(hX1unregister() (circuits.core.BaseComponent method)h%Utr8auhmNhnhhY]ubh)r9}r:(h^Uh_jh`j5hbhhd}r;(hhXpyhi]hh]hf]hg]hk]hXmethodr<hj<uhmNhnhhY]r=(h)r>}r?(h^XBaseComponent.unregister()h_j9h`hhbhhd}r@(hi]rAh%ahhX circuits.corerBrC}rDbhh]hf]hg]hk]rEh%ajXBaseComponent.unregisterjjjuhmNhnhhY]rF(j)rG}rH(h^X unregisterh_j>h`hhbjhd}rI(hf]hg]hh]hi]hk]uhmNhnhhY]rJhwX unregisterrKrL}rM(h^Uh_jGubaubj)rN}rO(h^Uh_j>h`hhbjhd}rP(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubj1)rQ}rR(h^Uh_j9h`hhbj4hd}rS(hf]hg]hh]hi]hk]uhmNhnhhY]rT(h)rU}rV(h^X/Removes this component from the component tree.rWh_jQh`j5hbhhd}rX(hf]hg]hh]hi]hk]uhmKhnhhY]rYhwX/Removes this component from the component tree.rZr[}r\(h^jWh_jUubaubh)r]}r^(h^XsRemoving a component from the component tree is a two stage process. First, the component is marked as to be removed, which prevents it from receiving further events, and a :class:`~.components.prepare_unregister` event is fired. This allows other components to e.g. release references to the component to be removed before it is actually removed from the component tree.h_jQh`j5hbhhd}r_(hf]hg]hh]hi]hk]uhmKhnhhY]r`(hwXRemoving a component from the component tree is a two stage process. First, the component is marked as to be removed, which prevents it from receiving further events, and a rarb}rc(h^XRemoving a component from the component tree is a two stage process. First, the component is marked as to be removed, which prevents it from receiving further events, and a h_j]ubjF)rd}re(h^X(:class:`~.components.prepare_unregister`rfh_j]h`NhbjJhd}rg(UreftypeXclassjjLjMXcomponents.prepare_unregisterU refdomainXpyrhhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rijT)rj}rk(h^jfhd}rl(hf]hg]rm(jYjhXpy-classrnehh]hi]hk]uh_jdhY]rohwXprepare_unregisterrprq}rr(h^Uh_jjubahbj_ubaubhwX event is fired. This allows other components to e.g. release references to the component to be removed before it is actually removed from the component tree.rsrt}ru(h^X event is fired. This allows other components to e.g. release references to the component to be removed before it is actually removed from the component tree.h_j]ubeubh)rv}rw(h^XAfter the processing of the ``prepare_unregister`` event has completed, the component is removed from the tree and an :class:`~.events.unregistered` event is fired.h_jQh`j5hbhhd}rx(hf]hg]hh]hi]hk]uhmK hnhhY]ry(hwXAfter the processing of the rzr{}r|(h^XAfter the processing of the h_jvubjT)r}}r~(h^X``prepare_unregister``hd}r(hf]hg]hh]hi]hk]uh_jvhY]rhwXprepare_unregisterrr}r(h^Uh_j}ubahbj_ubhwXD event has completed, the component is removed from the tree and an rr}r(h^XD event has completed, the component is removed from the tree and an h_jvubjF)r}r(h^X:class:`~.events.unregistered`rh_jvh`NhbjJhd}r(UreftypeXclassjjLjMXevents.unregisteredU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-classrehh]hi]hk]uh_jhY]rhwX unregisteredrr}r(h^Uh_jubahbj_ubaubhwX event is fired.rr}r(h^X event is fired.h_jvubeubeubeubh)r}r(h^Uh_jh`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX:unregister_pending (circuits.core.BaseComponent attribute)hUtrauhmNhnhhY]ubh)r}r(h^Uh_jh`Nhbhhd}r(hhXpyhi]hh]hf]hg]hk]hX attributerhjuhmNhnhhY]r(h)r}r(h^X BaseComponent.unregister_pendingh_jh`hhbhhd}r(hi]rhahhX circuits.corerr}rbhh]hf]hg]hk]rhajX BaseComponent.unregister_pendingjjjuhmNhnhhY]rj)r}r(h^Xunregister_pendingh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXunregister_pendingrr}r(h^Uh_jubaubaubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubeubeubh)r}r(h^Uh_hh`X[/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Componentrhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX"Component (class in circuits.core)h UtrauhmNhnhhY]ubh)r}r(h^Uh_hh`jhbhhd}r(hhXpyhi]hh]hf]hg]hk]hXclassrhjuhmNhnhhY]r(h)r}r(h^XComponent(*args, **kwargs)h_jh`hhbhhd}r(hi]rh ahhX circuits.corerr}rbhh]hf]hg]hk]rh ajX ComponentrjUjuhmNhnhhY]r(j)r}r(h^Xclass h_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXclass rr}r(h^Uh_jubaubj )r}r(h^Xcircuits.core.h_jh`hhbj hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXcircuits.core.rr}r(h^Uh_jubaubj)r}r(h^jh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwX Componentrr}r(h^Uh_jubaubj)r}r(h^Uh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r(j!)r}r(h^X*argshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX*argsrr}r(h^Uh_jubahbj)ubj!)r}r(h^X**kwargshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX**kwargsrr}r(h^Uh_jubahbj)ubeubeubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r(h)r}r(h^X6Bases: :class:`circuits.core.components.BaseComponent`h_jh`jhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]r(hwXBases: rr}r(h^XBases: h_jubjF)r}r(h^X/:class:`circuits.core.components.BaseComponent`rh_jh`NhbjJhd}r(UreftypeXclassjLjMX&circuits.core.components.BaseComponentU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-classrehh]hi]hk]uh_jhY]rhwX&circuits.core.components.BaseComponentr r }r (h^Uh_jubahbj_ubaubeubh)r }r (h^X4initializes x; see x.__class__.__doc__ for signaturerh_jh`jhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]rhwX4initializes x; see x.__class__.__doc__ for signaturerr}r(h^jh_j ubaubeubeubh)r}r(h^Uh_hh`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hXEvent (class in circuits.core)h(UtrauhmNhnhhY]ubh)r}r(h^Uh_hh`Nhbhhd}r(hhXpyrhi]hh]hf]hg]hk]hXclassrhjuhmNhnhhY]r(h)r}r (h^XEvent(*args, **kwargs)h_jh`hhbhhd}r!(hi]r"h(ahhX circuits.corer#r$}r%bhh]hf]hg]hk]r&h(ajXEventr'jUjuhmNhnhhY]r((j)r)}r*(h^Xclass h_jh`hhbjhd}r+(hf]hg]hh]hi]hk]uhmNhnhhY]r,hwXclass r-r.}r/(h^Uh_j)ubaubj )r0}r1(h^Xcircuits.core.h_jh`hhbj hd}r2(hf]hg]hh]hi]hk]uhmNhnhhY]r3hwXcircuits.core.r4r5}r6(h^Uh_j0ubaubj)r7}r8(h^j'h_jh`hhbjhd}r9(hf]hg]hh]hi]hk]uhmNhnhhY]r:hwXEventr;r<}r=(h^Uh_j7ubaubj)r>}r?(h^Uh_jh`hhbjhd}r@(hf]hg]hh]hi]hk]uhmNhnhhY]rA(j!)rB}rC(h^X*argshd}rD(hf]hg]hh]hi]hk]uh_j>hY]rEhwX*argsrFrG}rH(h^Uh_jBubahbj)ubj!)rI}rJ(h^X**kwargshd}rK(hf]hg]hh]hi]hk]uh_j>hY]rLhwX**kwargsrMrN}rO(h^Uh_jIubahbj)ubeubeubj1)rP}rQ(h^Uh_jh`hhbj4hd}rR(hf]hg]hh]hi]hk]uhmNhnhhY]rS(h)rT}rU(h^XBases: :class:`object`h_jPh`jhbhhd}rV(hf]hg]hh]hi]hk]uhmKhnhhY]rW(hwXBases: rXrY}rZ(h^XBases: h_jTubjF)r[}r\(h^X:class:`object`r]h_jTh`NhbjJhd}r^(UreftypeXclassjLjMXobjectU refdomainXpyr_hi]hh]U refexplicithf]hg]hk]jOhjPj'jQjRuhmNhY]r`jT)ra}rb(h^j]hd}rc(hf]hg]rd(jYj_Xpy-classreehh]hi]hk]uh_j[hY]rfhwXobjectrgrh}ri(h^Uh_jaubahbj_ubaubeubh)rj}rk(h^XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rlh_jPh`XW/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Eventrmhbhhd}rn(hf]hg]hh]hi]hk]uhmKhnhhY]rohwXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rprq}rr(h^jlh_jjubaubh)rs}rt(h^XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.ruh_jPh`jmhbhhd}rv(hf]hg]hh]hi]hk]uhmKhnhhY]rwhwXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rxry}rz(h^juh_jsubaubh)r{}r|(h^X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h_jPh`jmhbhhd}r}(hf]hg]hh]hi]hk]uhmK hnhhY]r~(hwXEvery event has a rr}r(h^XEvery event has a h_j{ubjF)r}r(h^X :attr:`name`rh_j{h`NhbjJhd}r(UreftypeXattrjLjMXnameU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPj'jQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-attrrehh]hi]hk]uh_jhY]rhwXnamerr}r(h^Uh_jubahbj_ubaubhwXA attribute that is used for matching the event with the handlers.rr}r(h^XA attribute that is used for matching the event with the handlers.h_j{ubeubjW)r}r(h^Uh_jPh`NhbjZhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rj])r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]r(jb)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX Variablesrr}r(h^Uh_jubahbjjubjk)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]rcdocutils.nodes bullet_list r)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]r(cdocutils.nodes list_item r)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]rh)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]r(jF)r}r(h^Uhd}r(UreftypejwU reftargetXchannelsrU refdomainjhi]hh]U refexplicithf]hg]hk]uh_jhY]rj)r}r(h^jhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXchannelsrr}r(h^Uh_jubahbjubahbjJubhwX -- rr}r(h^Uh_jubh)r}r(h^Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rh_jh`jmhbhhd}r(hf]hg]hh]hi]hk]uhmK hY]rhwXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rr}r(h^jh_jubaubh)r}r(h^XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rh_jh`jmhbhhd}r(hf]hg]hh]hi]hk]uhmKhY]rhwXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rr}r(h^jh_jubaubehbhubahbU list_itemrubj)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]rh)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]r(jF)r}r(h^Uhd}r(UreftypejwU reftargetXvaluerU refdomainjhi]hh]U refexplicithf]hg]hk]uh_jhY]rj)r}r(h^jhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXvaluerr}r(h^Uh_jubahbjubahbjJubhwX -- rr}r(h^Uh_jubhwX this is a rr}r(h^X this is a h_jubjF)r}r(h^X#:class:`circuits.core.values.Value`rh_jh`NhbjJhd}r(UreftypeXclassjLjMXcircuits.core.values.ValueU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPj'jQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-classrehh]hi]hk]uh_jhY]rhwXcircuits.core.values.Valuerr}r(h^Uh_jubahbj_ubaubhwXN object that holds the results returned by the handlers invoked for the event.rr}r(h^XN object that holds the results returned by the handlers invoked for the event.h_jubehbhubahbjubj)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]rh)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]r(jF)r }r (h^Uhd}r (UreftypejwU reftargetXsuccessr U refdomainjhi]hh]U refexplicithf]hg]hk]uh_jhY]r j)r}r(h^j hd}r(hf]hg]hh]hi]hk]uh_j hY]rhwXsuccessrr}r(h^Uh_jubahbjubahbjJubhwX -- rr}r(h^Uh_jubhwX%if this optional attribute is set to rr}r(h^X%if this optional attribute is set to h_jubjT)r}r(h^X``True``hd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXTruerr }r!(h^Uh_jubahbj_ubhwX, an associated event r"r#}r$(h^X, an associated event h_jubjT)r%}r&(h^X ``success``hd}r'(hf]hg]hh]hi]hk]uh_jhY]r(hwXsuccessr)r*}r+(h^Uh_j%ubahbj_ubhwX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.r,r-}r.(h^X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h_jubehbhubahbjubj)r/}r0(h^Uhd}r1(hf]hg]hh]hi]hk]uh_jhY]r2h)r3}r4(h^Uhd}r5(hf]hg]hh]hi]hk]uh_j/hY]r6(jF)r7}r8(h^Uhd}r9(UreftypejwU reftargetXsuccess_channelsr:U refdomainjhi]hh]U refexplicithf]hg]hk]uh_j3hY]r;j)r<}r=(h^j:hd}r>(hf]hg]hh]hi]hk]uh_j7hY]r?hwXsuccess_channelsr@rA}rB(h^Uh_j<ubahbjubahbjJubhwX -- rCrD}rE(h^Uh_j3ubhwXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rFrG}rH(h^Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h_j3ubehbhubahbjubj)rI}rJ(h^Uhd}rK(hf]hg]hh]hi]hk]uh_jhY]rLh)rM}rN(h^Uhd}rO(hf]hg]hh]hi]hk]uh_jIhY]rP(jF)rQ}rR(h^Uhd}rS(UreftypejwU reftargetXcompleterTU refdomainjhi]hh]U refexplicithf]hg]hk]uh_jMhY]rUj)rV}rW(h^jThd}rX(hf]hg]hh]hi]hk]uh_jQhY]rYhwXcompleterZr[}r\(h^Uh_jVubahbjubahbjJubhwX -- r]r^}r_(h^Uh_jMubhwX%if this optional attribute is set to r`ra}rb(h^X%if this optional attribute is set to h_jMubjT)rc}rd(h^X``True``hd}re(hf]hg]hh]hi]hk]uh_jMhY]rfhwXTruergrh}ri(h^Uh_jcubahbj_ubhwX, an associated event rjrk}rl(h^X, an associated event h_jMubjT)rm}rn(h^X ``complete``hd}ro(hf]hg]hh]hi]hk]uh_jMhY]rphwXcompleterqrr}rs(h^Uh_jmubahbj_ubhwX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rtru}rv(h^X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h_jMubehbhubahbjubj)rw}rx(h^Uhd}ry(hf]hg]hh]hi]hk]uh_jhY]rzh)r{}r|(h^Uhd}r}(hf]hg]hh]hi]hk]uh_jwhY]r~(jF)r}r(h^Uhd}r(UreftypejwU reftargetXcomplete_channelsrU refdomainjhi]hh]U refexplicithf]hg]hk]uh_j{hY]rj)r}r(h^jhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXcomplete_channelsrr}r(h^Uh_jubahbjubahbjJubhwX -- rr}r(h^Uh_j{ubhwXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h^Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h_j{ubehbhubahbjubehbU bullet_listrubahbjubehbjubaubh)r}r(h^Uh_jPh`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX*alert_done (circuits.core.Event attribute)hUtrauhmNhnhhY]ubh)r}r(h^Uh_jPh`Nhbhhd}r(hhXpyhi]hh]hf]hg]hk]hX attributerhjuhmNhnhhY]r(h)r}r(h^XEvent.alert_doneh_jh`jhbhhd}r(hi]rhahhX circuits.corerr}rbhh]hf]hg]hk]rhajXEvent.alert_donejj'juhmNhnhhY]r(j)r}r(h^X alert_doneh_jh`jhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwX alert_donerr}r(h^Uh_jubaubj)r}r(h^X = Falseh_jh`jhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwX = Falserr}r(h^Uh_jubaubeubj1)r}r(h^Uh_jh`jhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r}r(h^Uh_jPh`X^/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Event.cancelrhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX%cancel() (circuits.core.Event method)hUtrauhmNhnhhY]ubh)r}r(h^Uh_jPh`jhbhhd}r(hhXpyhi]hh]hf]hg]hk]hXmethodrhjuhmNhnhhY]r(h)r}r(h^XEvent.cancel()h_jh`hhbhhd}r(hi]rhahhX circuits.corerr}rbhh]hf]hg]hk]rhajX Event.canceljj'juhmNhnhhY]r(j)r}r(h^Xcancelh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXcancelrr}r(h^Uh_jubaubj)r}r(h^Uh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rh)r}r(h^X6Cancel the event from being processed (if not already)rh_jh`jhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]rhwX6Cancel the event from being processed (if not already)rr}r(h^jh_jubaubaubeubh)r}r(h^Uh_jPh`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX(channels (circuits.core.Event attribute)hIUtrauhmNhnhhY]ubh)r}r(h^Uh_jPh`Nhbhhd}r(hhXpyhi]hh]hf]hg]hk]hX attributerhjuhmNhnhhY]r(h)r}r(h^XEvent.channelsh_jh`jhbhhd}r(hi]rhIahhX circuits.corerr}rbhh]hf]hg]hk]rhIajXEvent.channelsjj'juhmNhnhhY]r(j)r}r(h^Xchannelsh_jh`jhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXchannelsrr}r(h^Uh_jubaubj)r}r(h^X = ()h_jh`jhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwX = ()rr}r(h^Uh_jubaubeubj1)r}r(h^Uh_jh`jhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r}r(h^Uh_jPh`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX$child() (circuits.core.Event method)h?UtrauhmNhnhhY]ubh)r }r (h^Uh_jPh`Nhbhhd}r (hhXpyhi]hh]hf]hg]hk]hXmethodr hj uhmNhnhhY]r (h)r}r(h^X"Event.child(name, *args, **kwargs)h_j h`hhbhhd}r(hi]rh?ahhX circuits.corerr}rbhh]hf]hg]hk]rh?ajX Event.childjj'juhmNhnhhY]r(j)r}r(h^Xchildh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXchildrr}r(h^Uh_jubaubj)r}r(h^Uh_jh`hhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r!(j!)r"}r#(h^Xnamehd}r$(hf]hg]hh]hi]hk]uh_jhY]r%hwXnamer&r'}r((h^Uh_j"ubahbj)ubj!)r)}r*(h^X*argshd}r+(hf]hg]hh]hi]hk]uh_jhY]r,hwX*argsr-r.}r/(h^Uh_j)ubahbj)ubj!)r0}r1(h^X**kwargshd}r2(hf]hg]hh]hi]hk]uh_jhY]r3hwX**kwargsr4r5}r6(h^Uh_j0ubahbj)ubeubeubj1)r7}r8(h^Uh_j h`hhbj4hd}r9(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r:}r;(h^Uh_jPh`Nhbhhd}r<(hi]hh]hf]hg]hk]Uentries]r=(hX(complete (circuits.core.Event attribute)h Utr>auhmNhnhhY]ubh)r?}r@(h^Uh_jPh`Nhbhhd}rA(hhXpyhi]hh]hf]hg]hk]hX attributerBhjBuhmNhnhhY]rC(h)rD}rE(h^XEvent.completeh_j?h`jhbhhd}rF(hi]rGh ahhX circuits.corerHrI}rJbhh]hf]hg]hk]rKh ajXEvent.completejj'juhmNhnhhY]rL(j)rM}rN(h^Xcompleteh_jDh`jhbjhd}rO(hf]hg]hh]hi]hk]uhmNhnhhY]rPhwXcompleterQrR}rS(h^Uh_jMubaubj)rT}rU(h^X = Falseh_jDh`jhbjhd}rV(hf]hg]hh]hi]hk]uhmNhnhhY]rWhwX = FalserXrY}rZ(h^Uh_jTubaubeubj1)r[}r\(h^Uh_j?h`jhbj4hd}r](hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r^}r_(h^Uh_jPh`Nhbhhd}r`(hi]hh]hf]hg]hk]Uentries]ra(hX+create() (circuits.core.Event class method)hEUtrbauhmNhnhhY]ubh)rc}rd(h^Uh_jPh`Nhbhhd}re(hhXpyhi]hh]hf]hg]hk]hX classmethodrfhjfuhmNhnhhY]rg(h)rh}ri(h^X#Event.create(name, *args, **kwargs)h_jch`hhbhhd}rj(hi]rkhEahhX circuits.corerlrm}rnbhh]hf]hg]hk]rohEajX Event.createjj'juhmNhnhhY]rp(j)rq}rr(h^j h_jhh`hhbjhd}rs(hf]hg]hh]hi]hk]uhmNhnhhY]rthwX classmethod rurv}rw(h^Uh_jqubaubj)rx}ry(h^Xcreateh_jhh`hhbjhd}rz(hf]hg]hh]hi]hk]uhmNhnhhY]r{hwXcreater|r}}r~(h^Uh_jxubaubj)r}r(h^Uh_jhh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r(j!)r}r(h^Xnamehd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXnamerr}r(h^Uh_jubahbj)ubj!)r}r(h^X*argshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX*argsrr}r(h^Uh_jubahbj)ubj!)r}r(h^X**kwargshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX**kwargsrr}r(h^Uh_jubahbj)ubeubeubj1)r}r(h^Uh_jch`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r}r(h^Uh_jPh`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX'failure (circuits.core.Event attribute)h:UtrauhmNhnhhY]ubh)r}r(h^Uh_jPh`Nhbhhd}r(hhXpyhi]hh]hf]hg]hk]hX attributerhjuhmNhnhhY]r(h)r}r(h^X Event.failureh_jh`jhbhhd}r(hi]rh:ahhX circuits.corerr}rbhh]hf]hg]hk]rh:ajX Event.failurejj'juhmNhnhhY]r(j)r}r(h^Xfailureh_jh`jhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXfailurerr}r(h^Uh_jubaubj)r}r(h^X = Falseh_jh`jhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwX = Falserr}r(h^Uh_jubaubeubj1)r}r(h^Uh_jh`jhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r}r(h^Uh_jPh`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX$name (circuits.core.Event attribute)hUtrauhmNhnhhY]ubh)r}r(h^Uh_jPh`Nhbhhd}r(hhXpyhi]hh]hf]hg]hk]hX attributerhjuhmNhnhhY]r(h)r}r(h^X Event.nameh_jh`jhbhhd}r(hi]rhahhX circuits.corerr}rbhh]hf]hg]hk]rhajX Event.namejj'juhmNhnhhY]r(j)r}r(h^Xnameh_jh`jhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXnamerr}r(h^Uh_jubaubj)r}r(h^X = 'Event'h_jh`jhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwX = 'Event'rr}r(h^Uh_jubaubeubj1)r}r(h^Uh_jh`jhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r}r(h^Uh_jPh`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX&notify (circuits.core.Event attribute)h UtrauhmNhnhhY]ubh)r}r(h^Uh_jPh`Nhbhhd}r(hhXpyhi]hh]hf]hg]hk]hX attributerhjuhmNhnhhY]r(h)r}r(h^X Event.notifyh_jh`jhbhhd}r(hi]rh ahhX circuits.corerr}rbhh]hf]hg]hk]rh ajX Event.notifyjj'juhmNhnhhY]r(j)r}r(h^Xnotifyh_jh`jhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXnotifyrr}r(h^Uh_jubaubj)r}r(h^X = Falseh_jh`jhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r hwX = Falser r }r (h^Uh_jubaubeubj1)r }r (h^Uh_jh`jhbj4hd}r (hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r }r (h^Uh_jPh`Nhbhhd}r (hi]hh]hf]hg]hk]Uentries]r (hX&parent (circuits.core.Event attribute)hUtr auhmNhnhhY]ubh)r }r (h^Uh_jPh`Nhbhhd}r (hhXpyhi]hh]hf]hg]hk]hX attributer hj uhmNhnhhY]r (h)r }r (h^X Event.parenth_j h`jhbhhd}r (hi]r hahhX circuits.corer r }r bhh]hf]hg]hk]r hajX Event.parentjj'juhmNhnhhY]r (j)r }r (h^Xparenth_j h`jhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwXparentr r }r (h^Uh_j ubaubj)r! }r" (h^X = Noneh_j h`jhbjhd}r# (hf]hg]hh]hi]hk]uhmNhnhhY]r$ hwX = Noner% r& }r' (h^Uh_j! ubaubeubj1)r( }r) (h^Uh_j h`jhbj4hd}r* (hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r+ }r, (h^Uh_jPh`X\/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Event.stopr- hbhhd}r. (hi]hh]hf]hg]hk]Uentries]r/ (hX#stop() (circuits.core.Event method)hUtr0 auhmNhnhhY]ubh)r1 }r2 (h^Uh_jPh`j- hbhhd}r3 (hhXpyhi]hh]hf]hg]hk]hXmethodr4 hj4 uhmNhnhhY]r5 (h)r6 }r7 (h^X Event.stop()h_j1 h`hhbhhd}r8 (hi]r9 hahhX circuits.corer: r; }r< bhh]hf]hg]hk]r= hajX Event.stopjj'juhmNhnhhY]r> (j)r? }r@ (h^Xstoph_j6 h`hhbjhd}rA (hf]hg]hh]hi]hk]uhmNhnhhY]rB hwXstoprC rD }rE (h^Uh_j? ubaubj)rF }rG (h^Uh_j6 h`hhbjhd}rH (hf]hg]hh]hi]hk]uhmNhnhhY]ubeubj1)rI }rJ (h^Uh_j1 h`hhbj4hd}rK (hf]hg]hh]hi]hk]uhmNhnhhY]rL h)rM }rN (h^X%Stop further processing of this eventrO h_jI h`j- hbhhd}rP (hf]hg]hh]hi]hk]uhmKhnhhY]rQ hwX%Stop further processing of this eventrR rS }rT (h^jO h_jM ubaubaubeubh)rU }rV (h^Uh_jPh`Nhbhhd}rW (hi]hh]hf]hg]hk]Uentries]rX (hX'success (circuits.core.Event attribute)hUtrY auhmNhnhhY]ubh)rZ }r[ (h^Uh_jPh`Nhbhhd}r\ (hhXpyhi]hh]hf]hg]hk]hX attributer] hj] uhmNhnhhY]r^ (h)r_ }r` (h^X Event.successh_jZ h`jhbhhd}ra (hi]rb hahhX circuits.corerc rd }re bhh]hf]hg]hk]rf hajX Event.successjj'juhmNhnhhY]rg (j)rh }ri (h^Xsuccessh_j_ h`jhbjhd}rj (hf]hg]hh]hi]hk]uhmNhnhhY]rk hwXsuccessrl rm }rn (h^Uh_jh ubaubj)ro }rp (h^X = Falseh_j_ h`jhbjhd}rq (hf]hg]hh]hi]hk]uhmNhnhhY]rr hwX = Falsers rt }ru (h^Uh_jo ubaubeubj1)rv }rw (h^Uh_jZ h`jhbj4hd}rx (hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)ry }rz (h^Uh_jPh`Nhbhhd}r{ (hi]hh]hf]hg]hk]Uentries]r| (hX/waitingHandlers (circuits.core.Event attribute)hUtr} auhmNhnhhY]ubh)r~ }r (h^Uh_jPh`Nhbhhd}r (hhXpyhi]hh]hf]hg]hk]hX attributer hj uhmNhnhhY]r (h)r }r (h^XEvent.waitingHandlersh_j~ h`jhbhhd}r (hi]r hahhX circuits.corer r }r bhh]hf]hg]hk]r hajXEvent.waitingHandlersjj'juhmNhnhhY]r (j)r }r (h^XwaitingHandlersh_j h`jhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwXwaitingHandlersr r }r (h^Uh_j ubaubj)r }r (h^X = 0h_j h`jhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwX = 0r r }r (h^Uh_j ubaubeubj1)r }r (h^Uh_j~ h`jhbj4hd}r (hf]hg]hh]hi]hk]uhmNhnhhY]ubeubeubeubh)r }r (h^Uh_hh`Nhbhhd}r (hi]hh]hf]hg]hk]Uentries]r (hXtask (class in circuits.core)h-Utr auhmNhnhhY]ubh)r }r (h^Uh_hh`Nhbhhd}r (hhXpyr hi]hh]hf]hg]hk]hXclassr hj uhmNhnhhY]r (h)r }r (h^Xtask(f, *args, **kwargs)h_j h`hhbhhd}r (hi]r h-ahhX circuits.corer r }r bhh]hf]hg]hk]r h-ajXtaskr jUjuhmNhnhhY]r (j)r }r (h^Xclass h_j h`hhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwXclass r r }r (h^Uh_j ubaubj )r }r (h^Xcircuits.core.h_j h`hhbj hd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwXcircuits.core.r r }r (h^Uh_j ubaubj)r }r (h^j h_j h`hhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwXtaskr r }r (h^Uh_j ubaubj)r }r (h^Uh_j h`hhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r (j!)r }r (h^Xfhd}r (hf]hg]hh]hi]hk]uh_j hY]r hwXfr }r (h^Uh_j ubahbj)ubj!)r }r (h^X*argshd}r (hf]hg]hh]hi]hk]uh_j hY]r hwX*argsr r }r (h^Uh_j ubahbj)ubj!)r }r (h^X**kwargshd}r (hf]hg]hh]hi]hk]uh_j hY]r hwX**kwargsr r }r (h^Uh_j ubahbj)ubeubeubj1)r }r (h^Uh_j h`hhbj4hd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r (h)r }r (h^X*Bases: :class:`circuits.core.events.Event`h_j h`jhbhhd}r (hf]hg]hh]hi]hk]uhmKhnhhY]r (hwXBases: r r }r (h^XBases: h_j ubjF)r }r (h^X#:class:`circuits.core.events.Event`r h_j h`NhbjJhd}r (UreftypeXclassjLjMXcircuits.core.events.EventU refdomainXpyr hi]hh]U refexplicithf]hg]hk]jOhjPj jQjRuhmNhY]r jT)r }r (h^j hd}r (hf]hg]r (jYj Xpy-classr ehh]hi]hk]uh_j hY]r hwXcircuits.core.events.Eventr r }r (h^Uh_j ubahbj_ubaubeubh)r }r (h^X task Eventr h_j h`XV/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.taskr hbhhd}r (hf]hg]hh]hi]hk]uhmKhnhhY]r hwX task Eventr r }r (h^j h_j ubaubh)r }r (h^X]This Event is used to initiate a new task to be performed by a Worker or a Pool of Worker(s).r h_j h`j hbhhd}r (hf]hg]hh]hi]hk]uhmKhnhhY]r hwX]This Event is used to initiate a new task to be performed by a Worker or a Pool of Worker(s).r r }r (h^j h_j ubaubjW)r }r (h^Uh_j h`NhbjZhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r j])r }r (h^Uhd}r (hf]hg]hh]hi]hk]uh_j hY]r (jb)r }r (h^Uhd}r (hf]hg]hh]hi]hk]uh_j hY]r hwX Parametersr r }r (h^Uh_j ubahbjjubjk)r }r (h^Uhd}r (hf]hg]hh]hi]hk]uh_j hY]r j)r }r (h^Uhd}r (hf]hg]hh]hi]hk]uh_j hY]r (j)r! }r" (h^Uhd}r# (hf]hg]hh]hi]hk]uh_j hY]r$ h)r% }r& (h^Uhd}r' (hf]hg]hh]hi]hk]uh_j! hY]r( (j)r) }r* (h^Xfhd}r+ (hf]hg]hh]hi]hk]uh_j% hY]r, hwXfr- }r. (h^Uh_j) ubahbjubhwX (r/ r0 }r1 (h^Uh_j% ubjF)r2 }r3 (h^Uhd}r4 (UreftypejwU reftargetXfunctionr5 U refdomainj hi]hh]U refexplicithf]hg]hk]uh_j% hY]r6 j)r7 }r8 (h^j5 hd}r9 (hf]hg]hh]hi]hk]uh_j2 hY]r: hwXfunctionr; r< }r= (h^Uh_j7 ubahbjubahbjJubhwX)r> }r? (h^Uh_j% ubhwX -- r@ rA }rB (h^Uh_j% ubhwXThe function to be executed.rC rD }rE (h^XThe function to be executed.rF h_j% ubehbhubahbjubj)rG }rH (h^Uhd}rI (hf]hg]hh]hi]hk]uh_j hY]rJ h)rK }rL (h^Uhd}rM (hf]hg]hh]hi]hk]uh_jG hY]rN (j)rO }rP (h^Xargshd}rQ (hf]hg]hh]hi]hk]uh_jK hY]rR hwXargsrS rT }rU (h^Uh_jO ubahbjubhwX (rV rW }rX (h^Uh_jK ubjF)rY }rZ (h^Uhd}r[ (UreftypejwU reftargetXtupler\ U refdomainj hi]hh]U refexplicithf]hg]hk]uh_jK hY]r] j)r^ }r_ (h^j\ hd}r` (hf]hg]hh]hi]hk]uh_jY hY]ra hwXtuplerb rc }rd (h^Uh_j^ ubahbjubahbjJubhwX)re }rf (h^Uh_jK ubhwX -- rg rh }ri (h^Uh_jK ubhwX!Arguments to pass to the functionrj rk }rl (h^X!Arguments to pass to the functionrm h_jK ubehbhubahbjubj)rn }ro (h^Uhd}rp (hf]hg]hh]hi]hk]uh_j hY]rq h)rr }rs (h^Uhd}rt (hf]hg]hh]hi]hk]uh_jn hY]ru (j)rv }rw (h^Xkwargshd}rx (hf]hg]hh]hi]hk]uh_jr hY]ry hwXkwargsrz r{ }r| (h^Uh_jv ubahbjubhwX (r} r~ }r (h^Uh_jr ubjF)r }r (h^Uhd}r (UreftypejwU reftargetXdictr U refdomainj hi]hh]U refexplicithf]hg]hk]uh_jr hY]r j)r }r (h^j hd}r (hf]hg]hh]hi]hk]uh_j hY]r hwXdictr r }r (h^Uh_j ubahbjubahbjJubhwX)r }r (h^Uh_jr ubhwX -- r r }r (h^Uh_jr ubhwX)Keyword Arguments to pass to the functionr r }r (h^X)Keyword Arguments to pass to the functionr h_jr ubehbhubahbjubehbjubahbjubehbjubaubh)r }r (h^XDx.__init__(...) initializes x; see x.__class__.__doc__ for signaturer h_j h`j hbhhd}r (hf]hg]hh]hi]hk]uhmKhnhhY]r hwXDx.__init__(...) initializes x; see x.__class__.__doc__ for signaturer r }r (h^j h_j ubaubh)r }r (h^Uh_j h`Nhbhhd}r (hi]hh]hf]hg]hk]Uentries]r (hX&failure (circuits.core.task attribute)h$Utr auhmNhnhhY]ubh)r }r (h^Uh_j h`Nhbhhd}r (hhXpyhi]hh]hf]hg]hk]hX attributer hj uhmNhnhhY]r (h)r }r (h^X task.failureh_j h`jhbhhd}r (hi]r h$ahhX circuits.corer r }r bhh]hf]hg]hk]r h$ajX task.failurejj juhmNhnhhY]r (j)r }r (h^Xfailureh_j h`jhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwXfailurer r }r (h^Uh_j ubaubj)r }r (h^X = Trueh_j h`jhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwX = Truer r }r (h^Uh_j ubaubeubj1)r }r (h^Uh_j h`jhbj4hd}r (hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r }r (h^Uh_j h`Nhbhhd}r (hi]hh]hf]hg]hk]Uentries]r (hX#name (circuits.core.task attribute)h7Utr auhmNhnhhY]ubh)r }r (h^Uh_j h`Nhbhhd}r (hhXpyhi]hh]hf]hg]hk]hX attributer hj uhmNhnhhY]r (h)r }r (h^X task.nameh_j h`jhbhhd}r (hi]r h7ahhX circuits.corer r }r bhh]hf]hg]hk]r h7ajX task.namejj juhmNhnhhY]r (j)r }r (h^Xnameh_j h`jhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwXnamer r }r (h^Uh_j ubaubj)r }r (h^X = 'task'h_j h`jhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwX = 'task'r r }r (h^Uh_j ubaubeubj1)r }r (h^Uh_j h`jhbj4hd}r (hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r }r (h^Uh_j h`Nhbhhd}r (hi]hh]hf]hg]hk]Uentries]r (hX&success (circuits.core.task attribute)hUtr auhmNhnhhY]ubh)r }r (h^Uh_j h`Nhbhhd}r (hhXpyhi]hh]hf]hg]hk]hX attributer hj uhmNhnhhY]r (h)r }r (h^X task.successh_j h`jhbhhd}r (hi]r hahhX circuits.corer r }r bhh]hf]hg]hk]r hajX task.successjj juhmNhnhhY]r (j)r }r (h^Xsuccessh_j h`jhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwXsuccessr r }r (h^Uh_j ubaubj)r }r (h^X = Trueh_j h`jhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwX = Truer r }r (h^Uh_j ubaubeubj1)r }r (h^Uh_j h`jhbj4hd}r (hf]hg]hh]hi]hk]uhmNhnhhY]ubeubeubeubh)r }r (h^Uh_hh`Nhbhhd}r (hi]hh]hf]hg]hk]Uentries]r (hXWorker (class in circuits.core)h@Utr auhmNhnhhY]ubh)r }r (h^Uh_hh`Nhbhhd}r (hhXpyr hi]hh]hf]hg]hk]hXclassr hj uhmNhnhhY]r (h)r }r (h^XWorker(*args, **kwargs)h_j h`hhbhhd}r (hi]r h@ahhX circuits.corer r }r bhh]hf]hg]hk]r h@ajXWorkerr jUjuhmNhnhhY]r (j)r }r (h^Xclass h_j h`hhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r! hwXclass r" r# }r$ (h^Uh_j ubaubj )r% }r& (h^Xcircuits.core.h_j h`hhbj hd}r' (hf]hg]hh]hi]hk]uhmNhnhhY]r( hwXcircuits.core.r) r* }r+ (h^Uh_j% ubaubj)r, }r- (h^j h_j h`hhbjhd}r. (hf]hg]hh]hi]hk]uhmNhnhhY]r/ hwXWorkerr0 r1 }r2 (h^Uh_j, ubaubj)r3 }r4 (h^Uh_j h`hhbjhd}r5 (hf]hg]hh]hi]hk]uhmNhnhhY]r6 (j!)r7 }r8 (h^X*argshd}r9 (hf]hg]hh]hi]hk]uh_j3 hY]r: hwX*argsr; r< }r= (h^Uh_j7 ubahbj)ubj!)r> }r? (h^X**kwargshd}r@ (hf]hg]hh]hi]hk]uh_j3 hY]rA hwX**kwargsrB rC }rD (h^Uh_j> ubahbj)ubeubeubj1)rE }rF (h^Uh_j h`hhbj4hd}rG (hf]hg]hh]hi]hk]uhmNhnhhY]rH (h)rI }rJ (h^X6Bases: :class:`circuits.core.components.BaseComponent`h_jE h`jhbhhd}rK (hf]hg]hh]hi]hk]uhmKhnhhY]rL (hwXBases: rM rN }rO (h^XBases: h_jI ubjF)rP }rQ (h^X/:class:`circuits.core.components.BaseComponent`rR h_jI h`NhbjJhd}rS (UreftypeXclassjLjMX&circuits.core.components.BaseComponentU refdomainXpyrT hi]hh]U refexplicithf]hg]hk]jOhjPj jQjRuhmNhY]rU jT)rV }rW (h^jR hd}rX (hf]hg]rY (jYjT Xpy-classrZ ehh]hi]hk]uh_jP hY]r[ hwX&circuits.core.components.BaseComponentr\ r] }r^ (h^Uh_jV ubahbj_ubaubeubh)r_ }r` (h^X!A thread/process Worker Componentra h_jE h`XX/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Workerrb hbhhd}rc (hf]hg]hh]hi]hk]uhmKhnhhY]rd hwX!A thread/process Worker Componentre rf }rg (h^ja h_j_ ubaubh)rh }ri (h^XThis Component creates a Worker (either a thread or process) which when given a ``Task``, will execute the given function in the task in the background in its thread/process.h_jE h`jb hbhhd}rj (hf]hg]hh]hi]hk]uhmKhnhhY]rk (hwXPThis Component creates a Worker (either a thread or process) which when given a rl rm }rn (h^XPThis Component creates a Worker (either a thread or process) which when given a h_jh ubjT)ro }rp (h^X``Task``hd}rq (hf]hg]hh]hi]hk]uh_jh hY]rr hwXTaskrs rt }ru (h^Uh_jo ubahbj_ubhwXV, will execute the given function in the task in the background in its thread/process.rv rw }rx (h^XV, will execute the given function in the task in the background in its thread/process.h_jh ubeubjW)ry }rz (h^Uh_jE h`NhbjZhd}r{ (hf]hg]hh]hi]hk]uhmNhnhhY]r| j])r} }r~ (h^Uhd}r (hf]hg]hh]hi]hk]uh_jy hY]r (jb)r }r (h^Uhd}r (hf]hg]hh]hi]hk]uh_j} hY]r hwX Parametersr r }r (h^Uh_j ubahbjjubjk)r }r (h^Uhd}r (hf]hg]hh]hi]hk]uh_j} hY]r h)r }r (h^Uhd}r (hf]hg]hh]hi]hk]uh_j hY]r (j)r }r (h^Xprocesshd}r (hf]hg]hh]hi]hk]uh_j hY]r hwXprocessr r }r (h^Uh_j ubahbjubhwX (r r }r (h^Uh_j ubjF)r }r (h^Uhd}r (UreftypejwU reftargetXboolr U refdomainj hi]hh]U refexplicithf]hg]hk]uh_j hY]r j)r }r (h^j hd}r (hf]hg]hh]hi]hk]uh_j hY]r hwXboolr r }r (h^Uh_j ubahbjubahbjJubhwX)r }r (h^Uh_j ubhwX -- r r }r (h^Uh_j ubhwX9True to start this Worker as a process (Thread otherwise)r r }r (h^X9True to start this Worker as a process (Thread otherwise)h_j ubehbhubahbjubehbjubaubh)r }r (h^X4initializes x; see x.__class__.__doc__ for signaturer h_jE h`jb hbhhd}r (hf]hg]hh]hi]hk]uhmK hnhhY]r hwX4initializes x; see x.__class__.__doc__ for signaturer r }r (h^j h_j ubaubh)r }r (h^Uh_jE h`Nhbhhd}r (hi]hh]hf]hg]hk]Uentries]r (hX(channel (circuits.core.Worker attribute)h1Utr auhmNhnhhY]ubh)r }r (h^Uh_jE h`Nhbhhd}r (hhXpyhi]hh]hf]hg]hk]hX attributer hj uhmNhnhhY]r (h)r }r (h^XWorker.channelh_j h`jhbhhd}r (hi]r h1ahhX circuits.corer r }r bhh]hf]hg]hk]r h1ajXWorker.channeljj juhmNhnhhY]r (j)r }r (h^Xchannelh_j h`jhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwXchannelr r }r (h^Uh_j ubaubj)r }r (h^X = 'worker'h_j h`jhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwX = 'worker'r r }r (h^Uh_j ubaubeubj1)r }r (h^Uh_j h`jhbj4hd}r (hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r }r (h^Uh_jE h`Nhbhhd}r (hi]hh]hf]hg]hk]Uentries]r (hX$init() (circuits.core.Worker method)hGUtr auhmNhnhhY]ubh)r }r (h^Uh_jE h`Nhbhhd}r (hhXpyhi]hh]hf]hg]hk]hXmethodr hj uhmNhnhhY]r (h)r }r (h^X:Worker.init(process=False, workers=None, channel='worker')h_j h`hhbhhd}r (hi]r hGahhX circuits.corer r }r bhh]hf]hg]hk]r hGajX Worker.initjj juhmNhnhhY]r (j)r }r (h^Xinith_j h`hhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwXinitr r }r (h^Uh_j ubaubj)r }r (h^Uh_j h`hhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r (j!)r }r (h^X process=Falsehd}r (hf]hg]hh]hi]hk]uh_j hY]r hwX process=Falser r }r (h^Uh_j ubahbj)ubj!)r }r (h^X workers=Nonehd}r (hf]hg]hh]hi]hk]uh_j hY]r hwX workers=Noner r }r (h^Uh_j ubahbj)ubj!)r }r (h^Xchannel='worker'hd}r (hf]hg]hh]hi]hk]uh_j hY]r hwXchannel='worker'r r }r (h^Uh_j ubahbj)ubeubeubj1)r }r (h^Uh_j h`hhbj4hd}r (hf]hg]hh]hi]hk]uhmNhnhhY]ubeubeubeubh)r }r (h^Uh_hh`Nhbhhd}r (hi]hh]hf]hg]hk]Uentries]r (hXBridge (class in circuits.core)h&Utr auhmNhnhhY]ubh)r }r (h^Uh_hh`Nhbhhd}r (hhXpyhi]hh]hf]hg]hk]hXclassr hj uhmNhnhhY]r (h)r }r (h^XBridge(*args, **kwargs)h_j h`hhbhhd}r (hi]r h&ahhX circuits.corer r }r bhh]hf]hg]hk]r! h&ajXBridger" jUjuhmNhnhhY]r# (j)r$ }r% (h^Xclass h_j h`hhbjhd}r& (hf]hg]hh]hi]hk]uhmNhnhhY]r' hwXclass r( r) }r* (h^Uh_j$ ubaubj )r+ }r, (h^Xcircuits.core.h_j h`hhbj hd}r- (hf]hg]hh]hi]hk]uhmNhnhhY]r. hwXcircuits.core.r/ r0 }r1 (h^Uh_j+ ubaubj)r2 }r3 (h^j" h_j h`hhbjhd}r4 (hf]hg]hh]hi]hk]uhmNhnhhY]r5 hwXBridger6 r7 }r8 (h^Uh_j2 ubaubj)r9 }r: (h^Uh_j h`hhbjhd}r; (hf]hg]hh]hi]hk]uhmNhnhhY]r< (j!)r= }r> (h^X*argshd}r? (hf]hg]hh]hi]hk]uh_j9 hY]r@ hwX*argsrA rB }rC (h^Uh_j= ubahbj)ubj!)rD }rE (h^X**kwargshd}rF (hf]hg]hh]hi]hk]uh_j9 hY]rG hwX**kwargsrH rI }rJ (h^Uh_jD ubahbj)ubeubeubj1)rK }rL (h^Uh_j h`hhbj4hd}rM (hf]hg]hh]hi]hk]uhmNhnhhY]rN (h)rO }rP (h^X6Bases: :class:`circuits.core.components.BaseComponent`h_jK h`jhbhhd}rQ (hf]hg]hh]hi]hk]uhmKhnhhY]rR (hwXBases: rS rT }rU (h^XBases: h_jO ubjF)rV }rW (h^X/:class:`circuits.core.components.BaseComponent`rX h_jO h`NhbjJhd}rY (UreftypeXclassjLjMX&circuits.core.components.BaseComponentU refdomainXpyrZ hi]hh]U refexplicithf]hg]hk]jOhjPj" jQjRuhmNhY]r[ jT)r\ }r] (h^jX hd}r^ (hf]hg]r_ (jYjZ Xpy-classr` ehh]hi]hk]uh_jV hY]ra hwX&circuits.core.components.BaseComponentrb rc }rd (h^Uh_j\ ubahbj_ubaubeubh)re }rf (h^X4initializes x; see x.__class__.__doc__ for signaturerg h_jK h`XX/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Bridgerh hbhhd}ri (hf]hg]hh]hi]hk]uhmKhnhhY]rj hwX4initializes x; see x.__class__.__doc__ for signaturerk rl }rm (h^jg h_je ubaubh)rn }ro (h^Uh_jK h`Nhbhhd}rp (hi]hh]hf]hg]hk]Uentries]rq (hX(channel (circuits.core.Bridge attribute)hAUtrr auhmNhnhhY]ubh)rs }rt (h^Uh_jK h`Nhbhhd}ru (hhXpyhi]hh]hf]hg]hk]hX attributerv hjv uhmNhnhhY]rw (h)rx }ry (h^XBridge.channelh_js h`jhbhhd}rz (hi]r{ hAahhX circuits.corer| r} }r~ bhh]hf]hg]hk]r hAajXBridge.channeljj" juhmNhnhhY]r (j)r }r (h^Xchannelh_jx h`jhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwXchannelr r }r (h^Uh_j ubaubj)r }r (h^X = 'bridge'h_jx h`jhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwX = 'bridge'r r }r (h^Uh_j ubaubeubj1)r }r (h^Uh_js h`jhbj4hd}r (hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r }r (h^Uh_jK h`Nhbhhd}r (hi]hh]hf]hg]hk]Uentries]r (hX'ignore (circuits.core.Bridge attribute)h)Utr auhmNhnhhY]ubh)r }r (h^Uh_jK h`Nhbhhd}r (hhXpyhi]hh]hf]hg]hk]hX attributer hj uhmNhnhhY]r (h)r }r (h^X Bridge.ignoreh_j h`jhbhhd}r (hi]r h)ahhX circuits.corer r }r bhh]hf]hg]hk]r h)ajX Bridge.ignorejj" juhmNhnhhY]r (j)r }r (h^Xignoreh_j h`jhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwXignorer r }r (h^Uh_j ubaubj)r }r (h^X = ['registered', 'unregistered', 'started', 'stopped', 'error', 'value_changed', 'generate_events', 'read', 'write', 'close', 'connected', 'connect', 'disconnect', 'disconnected', '_read', '_write', 'ready', 'read_value_changed', 'prepare_unregister']h_j h`jhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwX = ['registered', 'unregistered', 'started', 'stopped', 'error', 'value_changed', 'generate_events', 'read', 'write', 'close', 'connected', 'connect', 'disconnect', 'disconnected', '_read', '_write', 'ready', 'read_value_changed', 'prepare_unregister']r r }r (h^Uh_j ubaubeubj1)r }r (h^Uh_j h`jhbj4hd}r (hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r }r (h^Uh_jK h`Nhbhhd}r (hi]hh]hf]hg]hk]Uentries]r (hX$init() (circuits.core.Bridge method)hUtr auhmNhnhhY]ubh)r }r (h^Uh_jK h`Nhbhhd}r (hhXpyhi]hh]hf]hg]hk]hXmethodr hj uhmNhnhhY]r (h)r }r (h^X%Bridge.init(socket, channel='bridge')h_j h`hhbhhd}r (hi]r hahhX circuits.corer r }r bhh]hf]hg]hk]r hajX Bridge.initjj" juhmNhnhhY]r (j)r }r (h^Xinith_j h`hhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwXinitr r }r (h^Uh_j ubaubj)r }r (h^Uh_j h`hhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r (j!)r }r (h^Xsockethd}r (hf]hg]hh]hi]hk]uh_j hY]r hwXsocketr r }r (h^Uh_j ubahbj)ubj!)r }r (h^Xchannel='bridge'hd}r (hf]hg]hh]hi]hk]uh_j hY]r hwXchannel='bridge'r r }r (h^Uh_j ubahbj)ubeubeubj1)r }r (h^Uh_j h`hhbj4hd}r (hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r }r (h^Uh_jK h`Nhbhhd}r (hi]hh]hf]hg]hk]Uentries]r (hX$send() (circuits.core.Bridge method)h0Utr auhmNhnhhY]ubh)r }r (h^Uh_jK h`Nhbhhd}r (hhXpyhi]hh]hf]hg]hk]hXmethodr hj uhmNhnhhY]r (h)r }r (h^XBridge.send(eid, event)h_j h`hhbhhd}r (hi]r h0ahhX circuits.corer r }r bhh]hf]hg]hk]r h0ajX Bridge.sendjj" juhmNhnhhY]r (j)r }r (h^Xsendh_j h`hhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwXsendr r }r (h^Uh_j ubaubj)r }r (h^Uh_j h`hhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r (j!)r }r (h^Xeidhd}r (hf]hg]hh]hi]hk]uh_j hY]r hwXeidr r }r (h^Uh_j ubahbj)ubj!)r }r (h^Xeventhd}r (hf]hg]hh]hi]hk]uh_j hY]r hwXeventr r }r (h^Uh_j ubahbj)ubeubeubj1)r }r (h^Uh_j h`hhbj4hd}r (hf]hg]hh]hi]hk]uhmNhnhhY]ubeubeubeubh)r }r (h^Uh_hh`Nhbhhd}r (hi]hh]hf]hg]hk]Uentries]r (hX!Debugger (class in circuits.core)hUtr auhmNhnhhY]ubh)r }r (h^Uh_hh`Nhbhhd}r (hhXpyr hi]hh]hf]hg]hk]hXclassr hj uhmNhnhhY]r (h)r }r (h^X\Debugger(errors=True, events=True, file=None, logger=None, prefix=None, trim=None, **kwargs)h_j h`hhbhhd}r! (hi]r" hahhX circuits.corer# r$ }r% bhh]hf]hg]hk]r& hajXDebuggerr' jUjuhmNhnhhY]r( (j)r) }r* (h^Xclass h_j h`hhbjhd}r+ (hf]hg]hh]hi]hk]uhmNhnhhY]r, hwXclass r- r. }r/ (h^Uh_j) ubaubj )r0 }r1 (h^Xcircuits.core.h_j h`hhbj hd}r2 (hf]hg]hh]hi]hk]uhmNhnhhY]r3 hwXcircuits.core.r4 r5 }r6 (h^Uh_j0 ubaubj)r7 }r8 (h^j' h_j h`hhbjhd}r9 (hf]hg]hh]hi]hk]uhmNhnhhY]r: hwXDebuggerr; r< }r= (h^Uh_j7 ubaubj)r> }r? (h^Uh_j h`hhbjhd}r@ (hf]hg]hh]hi]hk]uhmNhnhhY]rA (j!)rB }rC (h^X errors=Truehd}rD (hf]hg]hh]hi]hk]uh_j> hY]rE hwX errors=TruerF rG }rH (h^Uh_jB ubahbj)ubj!)rI }rJ (h^X events=Truehd}rK (hf]hg]hh]hi]hk]uh_j> hY]rL hwX events=TruerM rN }rO (h^Uh_jI ubahbj)ubj!)rP }rQ (h^X file=Nonehd}rR (hf]hg]hh]hi]hk]uh_j> hY]rS hwX file=NonerT rU }rV (h^Uh_jP ubahbj)ubj!)rW }rX (h^X logger=Nonehd}rY (hf]hg]hh]hi]hk]uh_j> hY]rZ hwX logger=Noner[ r\ }r] (h^Uh_jW ubahbj)ubj!)r^ }r_ (h^X prefix=Nonehd}r` (hf]hg]hh]hi]hk]uh_j> hY]ra hwX prefix=Nonerb rc }rd (h^Uh_j^ ubahbj)ubj!)re }rf (h^X trim=Nonehd}rg (hf]hg]hh]hi]hk]uh_j> hY]rh hwX trim=Noneri rj }rk (h^Uh_je ubahbj)ubj!)rl }rm (h^X**kwargshd}rn (hf]hg]hh]hi]hk]uh_j> hY]ro hwX**kwargsrp rq }rr (h^Uh_jl ubahbj)ubeubeubj1)rs }rt (h^Uh_j h`hhbj4hd}ru (hf]hg]hh]hi]hk]uhmNhnhhY]rv (h)rw }rx (h^X6Bases: :class:`circuits.core.components.BaseComponent`h_js h`jhbhhd}ry (hf]hg]hh]hi]hk]uhmKhnhhY]rz (hwXBases: r{ r| }r} (h^XBases: h_jw ubjF)r~ }r (h^X/:class:`circuits.core.components.BaseComponent`r h_jw h`NhbjJhd}r (UreftypeXclassjLjMX&circuits.core.components.BaseComponentU refdomainXpyr hi]hh]U refexplicithf]hg]hk]jOhjPj' jQjRuhmNhY]r jT)r }r (h^j hd}r (hf]hg]r (jYj Xpy-classr ehh]hi]hk]uh_j~ hY]r hwX&circuits.core.components.BaseComponentr r }r (h^Uh_j ubahbj_ubaubeubh)r }r (h^XCreate a new Debugger Componentr h_js h`XZ/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Debuggerr hbhhd}r (hf]hg]hh]hi]hk]uhmKhnhhY]r hwXCreate a new Debugger Componentr r }r (h^j h_j ubaubh)r }r (h^XCreates a new Debugger Component that listens to all events in the system printing each event to sys.stderr or a Logger Component.r h_js h`j hbhhd}r (hf]hg]hh]hi]hk]uhmKhnhhY]r hwXCreates a new Debugger Component that listens to all events in the system printing each event to sys.stderr or a Logger Component.r r }r (h^j h_j ubaubjW)r }r (h^Uh_js h`NhbjZhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r (j])r }r (h^Uhd}r (hf]hg]hh]hi]hk]uh_j hY]r (jb)r }r (h^Uhd}r (hf]hg]hh]hi]hk]uh_j hY]r hwX Variablesr r }r (h^Uh_j ubahbjjubjk)r }r (h^Uhd}r (hf]hg]hh]hi]hk]uh_j hY]r j)r }r (h^Uhd}r (hf]hg]hh]hi]hk]uh_j hY]r (j)r }r (h^Uhd}r (hf]hg]hh]hi]hk]uh_j hY]r h)r }r (h^Uhd}r (hf]hg]hh]hi]hk]uh_j hY]r (jF)r }r (h^Uhd}r (UreftypejwU reftargetX IgnoreEventsr U refdomainj hi]hh]U refexplicithf]hg]hk]uh_j hY]r j)r }r (h^j hd}r (hf]hg]hh]hi]hk]uh_j hY]r hwX IgnoreEventsr r }r (h^Uh_j ubahbjubahbjJubhwX -- r r }r (h^Uh_j ubhwXlist of events (str) to ignorer r }r (h^Xlist of events (str) to ignoreh_j ubehbhubahbjubj)r }r (h^Uhd}r (hf]hg]hh]hi]hk]uh_j hY]r h)r }r (h^Uhd}r (hf]hg]hh]hi]hk]uh_j hY]r (jF)r }r (h^Uhd}r (UreftypejwU reftargetXIgnoreChannelsr U refdomainj hi]hh]U refexplicithf]hg]hk]uh_j hY]r j)r }r (h^j hd}r (hf]hg]hh]hi]hk]uh_j hY]r hwXIgnoreChannelsr r }r (h^Uh_j ubahbjubahbjJubhwX -- r r }r (h^Uh_j ubhwX list of channels (str) to ignorer r }r (h^X list of channels (str) to ignoreh_j ubehbhubahbjubj)r }r (h^Uhd}r (hf]hg]hh]hi]hk]uh_j hY]r h)r }r (h^Uhd}r (hf]hg]hh]hi]hk]uh_j hY]r (jF)r }r (h^Uhd}r (UreftypejwU reftargetXenabledr U refdomainj hi]hh]U refexplicithf]hg]hk]uh_j hY]r j)r }r (h^j hd}r (hf]hg]hh]hi]hk]uh_j hY]r hwXenabledr r }r (h^Uh_j ubahbjubahbjJubhwX -- r r }r (h^Uh_j ubhwXEnabled/Disabled flagrr}r(h^XEnabled/Disabled flagh_j ubehbhubahbjubehbjubahbjubehbjubj])r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_j hY]r(jb)r}r(h^Uhd}r (hf]hg]hh]hi]hk]uh_jhY]r hwX Parametersr r }r (h^Uh_jubahbjjubjk)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]rh)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]r(j)r}r(h^Xloghd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXlogrr}r(h^Uh_jubahbjubhwX -- rr}r(h^Uh_jubhwX#Logger Component instance or None (r r!}r"(h^X#Logger Component instance or None (h_jubj)r#}r$(h^X *default*hd}r%(hf]hg]hh]hi]hk]uh_jhY]r&hwXdefaultr'r(}r)(h^Uh_j#ubahbjubhwX)r*}r+(h^X)h_jubehbhubahbjubehbjubeubh)r,}r-(h^X4initializes x; see x.__class__.__doc__ for signaturer.h_js h`j hbhhd}r/(hf]hg]hh]hi]hk]uhmK hnhhY]r0hwX4initializes x; see x.__class__.__doc__ for signaturer1r2}r3(h^j.h_j,ubaubh)r4}r5(h^Uh_js h`Nhbhhd}r6(hi]hh]hf]hg]hk]Uentries]r7(hX1IgnoreChannels (circuits.core.Debugger attribute)hUtr8auhmNhnhhY]ubh)r9}r:(h^Uh_js h`Nhbhhd}r;(hhXpyhi]hh]hf]hg]hk]hX attributer<hj<uhmNhnhhY]r=(h)r>}r?(h^XDebugger.IgnoreChannelsh_j9h`jhbhhd}r@(hi]rAhahhX circuits.corerBrC}rDbhh]hf]hg]hk]rEhajXDebugger.IgnoreChannelsjj' juhmNhnhhY]rF(j)rG}rH(h^XIgnoreChannelsh_j>h`jhbjhd}rI(hf]hg]hh]hi]hk]uhmNhnhhY]rJhwXIgnoreChannelsrKrL}rM(h^Uh_jGubaubj)rN}rO(h^X = []h_j>h`jhbjhd}rP(hf]hg]hh]hi]hk]uhmNhnhhY]rQhwX = []rRrS}rT(h^Uh_jNubaubeubj1)rU}rV(h^Uh_j9h`jhbj4hd}rW(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)rX}rY(h^Uh_js h`Nhbhhd}rZ(hi]hh]hf]hg]hk]Uentries]r[(hX/IgnoreEvents (circuits.core.Debugger attribute)hUtr\auhmNhnhhY]ubh)r]}r^(h^Uh_js h`Nhbhhd}r_(hhXpyhi]hh]hf]hg]hk]hX attributer`hj`uhmNhnhhY]ra(h)rb}rc(h^XDebugger.IgnoreEventsh_j]h`jhbhhd}rd(hi]rehahhX circuits.corerfrg}rhbhh]hf]hg]hk]rihajXDebugger.IgnoreEventsjj' juhmNhnhhY]rj(j)rk}rl(h^X IgnoreEventsh_jbh`jhbjhd}rm(hf]hg]hh]hi]hk]uhmNhnhhY]rnhwX IgnoreEventsrorp}rq(h^Uh_jkubaubj)rr}rs(h^X = ['generate_events']h_jbh`jhbjhd}rt(hf]hg]hh]hi]hk]uhmNhnhhY]ruhwX = ['generate_events']rvrw}rx(h^Uh_jrubaubeubj1)ry}rz(h^Uh_j]h`jhbj4hd}r{(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubeubeubh)r|}r}(h^Uh_hh`Nhbhhd}r~(hi]hh]hf]hg]hk]Uentries]r(hXTimer (class in circuits.core)h+UtrauhmNhnhhY]ubh)r}r(h^Uh_hh`Nhbhhd}r(hhXpyhi]hh]hf]hg]hk]hXclassrhjuhmNhnhhY]r(h)r}r(h^X+Timer(interval, event, *channels, **kwargs)h_jh`hhbhhd}r(hi]rh+ahhX circuits.corerr}rbhh]hf]hg]hk]rh+ajXTimerrjUjuhmNhnhhY]r(j)r}r(h^Xclass h_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXclass rr}r(h^Uh_jubaubj )r}r(h^Xcircuits.core.h_jh`hhbj hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXcircuits.core.rr}r(h^Uh_jubaubj)r}r(h^jh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXTimerrr}r(h^Uh_jubaubj)r}r(h^Uh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r(j!)r}r(h^Xintervalhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXintervalrr}r(h^Uh_jubahbj)ubj!)r}r(h^Xeventhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXeventrr}r(h^Uh_jubahbj)ubj!)r}r(h^X *channelshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX *channelsrr}r(h^Uh_jubahbj)ubj!)r}r(h^X**kwargshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX**kwargsrr}r(h^Uh_jubahbj)ubeubeubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r(h)r}r(h^X6Bases: :class:`circuits.core.components.BaseComponent`h_jh`jhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]r(hwXBases: rr}r(h^XBases: h_jubjF)r}r(h^X/:class:`circuits.core.components.BaseComponent`rh_jh`NhbjJhd}r(UreftypeXclassjLjMX&circuits.core.components.BaseComponentU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-classrehh]hi]hk]uh_jhY]rhwX&circuits.core.components.BaseComponentrr}r(h^Uh_jubahbj_ubaubeubh)r}r(h^XTimer Componentrh_jh`XW/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Timerrhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]rhwXTimer Componentrr}r(h^jh_jubaubh)r}r(h^XlA timer is a component that fires an event once after a certain delay or periodically at a regular interval.rh_jh`jhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]rhwXlA timer is a component that fires an event once after a certain delay or periodically at a regular interval.rr}r(h^jh_jubaubjW)r}r(h^Uh_jh`NhbjZhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rj])r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]r(jb)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX Parametersrr}r(h^Uh_jubahbjjubjk)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]rj)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]r(j)r}r(h^Uhd}r (hf]hg]hh]hi]hk]uh_jhY]r h)r }r (h^Uhd}r (hf]hg]hh]hi]hk]uh_jhY]r(j)r}r(h^Xintervalhd}r(hf]hg]hh]hi]hk]uh_j hY]rhwXintervalrr}r(h^Uh_jubahbjubhwX (rr}r(h^Uh_j ubjT)r}r(h^X ``datetime``hd}r(hf]hg]hh]hi]hk]uh_j hY]rhwXdatetimerr}r(h^Uh_jubahbj_ubhwX or number of seconds as a r r!}r"(h^X or number of seconds as a h_j ubjT)r#}r$(h^X ``float``hd}r%(hf]hg]hh]hi]hk]uh_j hY]r&hwXfloatr'r(}r)(h^Uh_j#ubahbj_ubhwX)r*}r+(h^Uh_j ubhwX -- r,r-}r.(h^Uh_j ubhwXthe delay or interval to wait for until the event is fired. If interval is specified as datetime, the interval is recalculated as the time span from now to the given datetime.r/r0}r1(h^Xthe delay or interval to wait for until the event is fired. If interval is specified as datetime, the interval is recalculated as the time span from now to the given datetime.h_j ubehbhubahbjubj)r2}r3(h^Uhd}r4(hf]hg]hh]hi]hk]uh_jhY]r5h)r6}r7(h^Uhd}r8(hf]hg]hh]hi]hk]uh_j2hY]r9(j)r:}r;(h^Xeventhd}r<(hf]hg]hh]hi]hk]uh_j6hY]r=hwXeventr>r?}r@(h^Uh_j:ubahbjubhwX (rArB}rC(h^Uh_j6ubjF)rD}rE(h^X:class:`~.events.Event`rFh_j6h`NhbjJhd}rG(UreftypeXclassjjLjMX events.EventU refdomainXpyrHhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rIjT)rJ}rK(h^jFhd}rL(hf]hg]rM(jYjHXpy-classrNehh]hi]hk]uh_jDhY]rOhwXEventrPrQ}rR(h^Uh_jJubahbj_ubaubhwX)rS}rT(h^Uh_j6ubhwX -- rUrV}rW(h^Uh_j6ubhwXthe event to fire.rXrY}rZ(h^Xthe event to fire.h_j6ubehbhubahbjubj)r[}r\(h^Uhd}r](hf]hg]hh]hi]hk]uh_jhY]r^h)r_}r`(h^Uhd}ra(hf]hg]hh]hi]hk]uh_j[hY]rb(j)rc}rd(h^Xpersisthd}re(hf]hg]hh]hi]hk]uh_j_hY]rfhwXpersistrgrh}ri(h^Uh_jcubahbjubhwX (rjrk}rl(h^Uh_j_ubjT)rm}rn(h^X``bool``hd}ro(hf]hg]hh]hi]hk]uh_j_hY]rphwXboolrqrr}rs(h^Uh_jmubahbj_ubhwX)rt}ru(h^Uh_j_ubhwX -- rvrw}rx(h^Uh_j_ubhwX&An optional keyword argument which if ryrz}r{(h^X&An optional keyword argument which if h_j_ubjT)r|}r}(h^X``True``hd}r~(hf]hg]hh]hi]hk]uh_j_hY]rhwXTruerr}r(h^Uh_j|ubahbj_ubhwXk will cause the event to be fired repeatedly once per configured interval until the timer is unregistered. rr}r(h^Xk will cause the event to be fired repeatedly once per configured interval until the timer is unregistered. h_j_ubj)r}r(h^X **Default:**hd}r(hf]hg]hh]hi]hk]uh_j_hY]rhwXDefault:rr}r(h^Uh_jubahbjubhwX r}r(h^X h_j_ubjT)r}r(h^X ``False``hd}r(hf]hg]hh]hi]hk]uh_j_hY]rhwXFalserr}r(h^Uh_jubahbj_ubehbhubahbjubehbjubahbjubehbjubaubh)r}r(h^Uh_jh`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX&expiry (circuits.core.Timer attribute)h/UtrauhmNhnhhY]ubh)r}r(h^Uh_jh`Nhbhhd}r(hhXpyhi]hh]hf]hg]hk]hX attributerhjuhmNhnhhY]r(h)r}r(h^X Timer.expiryh_jh`hhbhhd}r(hi]rh/ahhX circuits.corerr}rbhh]hf]hg]hk]rh/ajX Timer.expiryjjjuhmNhnhhY]rj)r}r(h^Xexpiryh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXexpiryrr}r(h^Uh_jubaubaubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r}r(h^Uh_jh`X]/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Timer.resetrhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX$reset() (circuits.core.Timer method)hUtrauhmNhnhhY]ubh)r}r(h^Uh_jh`jhbhhd}r(hhXpyhi]hh]hf]hg]hk]hXmethodrhjuhmNhnhhY]r(h)r}r(h^XTimer.reset(interval=None)h_jh`hhbhhd}r(hi]rhahhX circuits.corerr}rbhh]hf]hg]hk]rhajX Timer.resetjjjuhmNhnhhY]r(j)r}r(h^Xreseth_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXresetrr}r(h^Uh_jubaubj)r}r(h^Uh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rj!)r}r(h^X interval=Nonehd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX interval=Nonerr}r(h^Uh_jubahbj)ubaubeubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rh)r}r(h^XBReset the timer, i.e. clear the amount of time already waited for.rh_jh`jhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]rhwXBReset the timer, i.e. clear the amount of time already waited for.rr}r(h^jh_jubaubaubeubeubeubh)r}r(h^Uh_hh`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX Manager (class in circuits.core)h9UtrauhmNhnhhY]ubh)r}r(h^Uh_hh`Nhbhhd}r(hhXpyhi]hh]hf]hg]hk]hXclassrhjuhmNhnhhY]r(h)r}r(h^XManager(*args, **kwargs)h_jh`hhbhhd}r(hi]rh9ahhX circuits.corerr}rbhh]hf]hg]hk]rh9ajXManagerrjUjuhmNhnhhY]r(j)r}r(h^Xclass h_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXclass rr}r(h^Uh_jubaubj )r}r(h^Xcircuits.core.h_jh`hhbj hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXcircuits.core.rr}r(h^Uh_jubaubj)r}r(h^jh_jh`hhbjhd}r (hf]hg]hh]hi]hk]uhmNhnhhY]r hwXManagerr r }r (h^Uh_jubaubj)r}r(h^Uh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r(j!)r}r(h^X*argshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX*argsrr}r(h^Uh_jubahbj)ubj!)r}r(h^X**kwargshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX**kwargsrr}r(h^Uh_jubahbj)ubeubeubj1)r }r!(h^Uh_jh`hhbj4hd}r"(hf]hg]hh]hi]hk]uhmNhnhhY]r#(h)r$}r%(h^XBases: :class:`object`r&h_j h`jhbhhd}r'(hf]hg]hh]hi]hk]uhmKhnhhY]r((hwXBases: r)r*}r+(h^XBases: h_j$ubjF)r,}r-(h^X:class:`object`r.h_j$h`NhbjJhd}r/(UreftypeXclassjLjMXobjectU refdomainXpyr0hi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]r1jT)r2}r3(h^j.hd}r4(hf]hg]r5(jYj0Xpy-classr6ehh]hi]hk]uh_j,hY]r7hwXobjectr8r9}r:(h^Uh_j2ubahbj_ubaubeubh)r;}r<(h^XThe manager class has two roles. As a base class for component implementation, it provides methods for event and handler management. The method :meth:`.fireEvent` appends a new event at the end of the event queue for later execution. :meth:`.waitEvent` suspends the execution of a handler until all handlers for a given event have been invoked. :meth:`.callEvent` combines the last two methods in a single method.h_j h`XY/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Managerr=hbhhd}r>(hf]hg]hh]hi]hk]uhmKhnhhY]r?(hwXThe manager class has two roles. As a base class for component implementation, it provides methods for event and handler management. The method r@rA}rB(h^XThe manager class has two roles. As a base class for component implementation, it provides methods for event and handler management. The method h_j;ubjF)rC}rD(h^X:meth:`.fireEvent`rEh_j;h`NhbjJhd}rF(UreftypeXmethjjLjMX fireEventU refdomainXpyrGhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rHjT)rI}rJ(h^jEhd}rK(hf]hg]rL(jYjGXpy-methrMehh]hi]hk]uh_jChY]rNhwX fireEvent()rOrP}rQ(h^Uh_jIubahbj_ubaubhwXH appends a new event at the end of the event queue for later execution. rRrS}rT(h^XH appends a new event at the end of the event queue for later execution. h_j;ubjF)rU}rV(h^X:meth:`.waitEvent`rWh_j;h`NhbjJhd}rX(UreftypeXmethjjLjMX waitEventU refdomainXpyrYhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rZjT)r[}r\(h^jWhd}r](hf]hg]r^(jYjYXpy-methr_ehh]hi]hk]uh_jUhY]r`hwX waitEvent()rarb}rc(h^Uh_j[ubahbj_ubaubhwX] suspends the execution of a handler until all handlers for a given event have been invoked. rdre}rf(h^X] suspends the execution of a handler until all handlers for a given event have been invoked. h_j;ubjF)rg}rh(h^X:meth:`.callEvent`rih_j;h`NhbjJhd}rj(UreftypeXmethjjLjMX callEventU refdomainXpyrkhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rljT)rm}rn(h^jihd}ro(hf]hg]rp(jYjkXpy-methrqehh]hi]hk]uh_jghY]rrhwX callEvent()rsrt}ru(h^Uh_jmubahbj_ubaubhwX2 combines the last two methods in a single method.rvrw}rx(h^X2 combines the last two methods in a single method.h_j;ubeubh)ry}rz(h^XThe methods :meth:`.addHandler` and :meth:`.removeHandler` allow handlers for events to be added and removed dynamically. (The more common way to register a handler is to use the :func:`~.handlers.handler` decorator or derive the class from :class:`~.components.Component`.)h_j h`j=hbhhd}r{(hf]hg]hh]hi]hk]uhmKhnhhY]r|(hwX The methods r}r~}r(h^X The methods h_jyubjF)r}r(h^X:meth:`.addHandler`rh_jyh`NhbjJhd}r(UreftypeXmethjjLjMX addHandlerU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-methrehh]hi]hk]uh_jhY]rhwX addHandler()rr}r(h^Uh_jubahbj_ubaubhwX and rr}r(h^X and h_jyubjF)r}r(h^X:meth:`.removeHandler`rh_jyh`NhbjJhd}r(UreftypeXmethjjLjMX removeHandlerU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-methrehh]hi]hk]uh_jhY]rhwXremoveHandler()rr}r(h^Uh_jubahbj_ubaubhwXy allow handlers for events to be added and removed dynamically. (The more common way to register a handler is to use the rr}r(h^Xy allow handlers for events to be added and removed dynamically. (The more common way to register a handler is to use the h_jyubjF)r}r(h^X:func:`~.handlers.handler`rh_jyh`NhbjJhd}r(UreftypeXfuncjjLjMXhandlers.handlerU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-funcrehh]hi]hk]uh_jhY]rhwX handler()rr}r(h^Uh_jubahbj_ubaubhwX$ decorator or derive the class from rr}r(h^X$ decorator or derive the class from h_jyubjF)r}r(h^X:class:`~.components.Component`rh_jyh`NhbjJhd}r(UreftypeXclassjjLjMXcomponents.ComponentU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-classrehh]hi]hk]uh_jhY]rhwX Componentrr}r(h^Uh_jubahbj_ubaubhwX.)rr}r(h^X.)h_jyubeubh)r}r(h^XIn its second role, the :class:`.Manager` takes the role of the event executor. Every component hierarchy has a root component that maintains a queue of events. Firing an event effectively means appending it to the event queue maintained by the root manager. The :meth:`.flush` method removes all pending events from the queue and, for each event, invokes all the handlers. Usually, :meth:`.flush` is indirectly invoked by :meth:`run`.h_j h`j=hbhhd}r(hf]hg]hh]hi]hk]uhmK hnhhY]r(hwXIn its second role, the rr}r(h^XIn its second role, the h_jubjF)r}r(h^X:class:`.Manager`rh_jh`NhbjJhd}r(UreftypeXclassjjLjMXManagerU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-classrehh]hi]hk]uh_jhY]rhwXManagerrr}r(h^Uh_jubahbj_ubaubhwX takes the role of the event executor. Every component hierarchy has a root component that maintains a queue of events. Firing an event effectively means appending it to the event queue maintained by the root manager. The rr}r(h^X takes the role of the event executor. Every component hierarchy has a root component that maintains a queue of events. Firing an event effectively means appending it to the event queue maintained by the root manager. The h_jubjF)r}r(h^X:meth:`.flush`rh_jh`NhbjJhd}r(UreftypeXmethjjLjMXflushU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-methrehh]hi]hk]uh_jhY]rhwXflush()rr}r(h^Uh_jubahbj_ubaubhwXj method removes all pending events from the queue and, for each event, invokes all the handlers. Usually, rr}r(h^Xj method removes all pending events from the queue and, for each event, invokes all the handlers. Usually, h_jubjF)r}r(h^X:meth:`.flush`rh_jh`NhbjJhd}r(UreftypeXmethjjLjMXflushU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-methrehh]hi]hk]uh_jhY]rhwXflush()rr}r(h^Uh_jubahbj_ubaubhwX is indirectly invoked by rr}r(h^X is indirectly invoked by h_jubjF)r}r(h^X :meth:`run`rh_jh`NhbjJhd}r(UreftypeXmethjLjMXrunU refdomainXpyr hi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]r jT)r }r (h^jhd}r (hf]hg]r(jYj Xpy-methrehh]hi]hk]uh_jhY]rhwXrun()rr}r(h^Uh_j ubahbj_ubaubhwX.r}r(h^X.h_jubeubh)r}r(h^XKThe manager optionally provides information about the execution of events as automatically generated events. If an :class:`~.events.Event` has its :attr:`success` attribute set to True, the manager fires a :class:`~.events.Success` event if all handlers have been executed without error. Note that this event will be enqueued (and dispatched) immediately after the events that have been fired by the event's handlers. So the success event indicates both the successful invocation of all handlers for the event and the processing of the immediate follow-up events fired by those handlers.h_j h`j=hbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]r(hwXsThe manager optionally provides information about the execution of events as automatically generated events. If an rr}r(h^XsThe manager optionally provides information about the execution of events as automatically generated events. If an h_jubjF)r}r(h^X:class:`~.events.Event`rh_jh`NhbjJhd}r (UreftypeXclassjjLjMX events.EventU refdomainXpyr!hi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]r"jT)r#}r$(h^jhd}r%(hf]hg]r&(jYj!Xpy-classr'ehh]hi]hk]uh_jhY]r(hwXEventr)r*}r+(h^Uh_j#ubahbj_ubaubhwX has its r,r-}r.(h^X has its h_jubjF)r/}r0(h^X:attr:`success`r1h_jh`NhbjJhd}r2(UreftypeXattrjLjMXsuccessU refdomainXpyr3hi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]r4jT)r5}r6(h^j1hd}r7(hf]hg]r8(jYj3Xpy-attrr9ehh]hi]hk]uh_j/hY]r:hwXsuccessr;r<}r=(h^Uh_j5ubahbj_ubaubhwX, attribute set to True, the manager fires a r>r?}r@(h^X, attribute set to True, the manager fires a h_jubjF)rA}rB(h^X:class:`~.events.Success`rCh_jh`NhbjJhd}rD(UreftypeXclassjjLjMXevents.SuccessU refdomainXpyrEhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rFjT)rG}rH(h^jChd}rI(hf]hg]rJ(jYjEXpy-classrKehh]hi]hk]uh_jAhY]rLhwXSuccessrMrN}rO(h^Uh_jGubahbj_ubaubhwXd event if all handlers have been executed without error. Note that this event will be enqueued (and dispatched) immediately after the events that have been fired by the event's handlers. So the success event indicates both the successful invocation of all handlers for the event and the processing of the immediate follow-up events fired by those handlers.rPrQ}rR(h^Xd event if all handlers have been executed without error. Note that this event will be enqueued (and dispatched) immediately after the events that have been fired by the event's handlers. So the success event indicates both the successful invocation of all handlers for the event and the processing of the immediate follow-up events fired by those handlers.h_jubeubh)rS}rT(h^XSometimes it is not sufficient to know that an event and its immediate follow-up events have been processed. Rather, it is important to know when all state changes triggered by an event, directly or indirectly, have been performed. This also includes the processing of events that have been fired when invoking the handlers for the follow-up events and the processing of events that have again been fired by those handlers and so on. The completion of the processing of an event and all its direct or indirect follow-up events may be indicated by a :class:`~.events.Complete` event. This event is generated by the manager if :class:`~.events.Event` has its :attr:`complete` attribute set to True.h_j h`j=hbhhd}rU(hf]hg]hh]hi]hk]uhmKhnhhY]rV(hwX%Sometimes it is not sufficient to know that an event and its immediate follow-up events have been processed. Rather, it is important to know when all state changes triggered by an event, directly or indirectly, have been performed. This also includes the processing of events that have been fired when invoking the handlers for the follow-up events and the processing of events that have again been fired by those handlers and so on. The completion of the processing of an event and all its direct or indirect follow-up events may be indicated by a rWrX}rY(h^X%Sometimes it is not sufficient to know that an event and its immediate follow-up events have been processed. Rather, it is important to know when all state changes triggered by an event, directly or indirectly, have been performed. This also includes the processing of events that have been fired when invoking the handlers for the follow-up events and the processing of events that have again been fired by those handlers and so on. The completion of the processing of an event and all its direct or indirect follow-up events may be indicated by a h_jSubjF)rZ}r[(h^X:class:`~.events.Complete`r\h_jSh`NhbjJhd}r](UreftypeXclassjjLjMXevents.CompleteU refdomainXpyr^hi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]r_jT)r`}ra(h^j\hd}rb(hf]hg]rc(jYj^Xpy-classrdehh]hi]hk]uh_jZhY]rehwXCompleterfrg}rh(h^Uh_j`ubahbj_ubaubhwX2 event. This event is generated by the manager if rirj}rk(h^X2 event. This event is generated by the manager if h_jSubjF)rl}rm(h^X:class:`~.events.Event`rnh_jSh`NhbjJhd}ro(UreftypeXclassjjLjMX events.EventU refdomainXpyrphi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rqjT)rr}rs(h^jnhd}rt(hf]hg]ru(jYjpXpy-classrvehh]hi]hk]uh_jlhY]rwhwXEventrxry}rz(h^Uh_jrubahbj_ubaubhwX has its r{r|}r}(h^X has its h_jSubjF)r~}r(h^X:attr:`complete`rh_jSh`NhbjJhd}r(UreftypeXattrjLjMXcompleteU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-attrrehh]hi]hk]uh_j~hY]rhwXcompleterr}r(h^Uh_jubahbj_ubaubhwX attribute set to True.rr}r(h^X attribute set to True.h_jSubeubh)r}r(h^XApart from the event queue, the root manager also maintains a list of tasks, actually Python generators, that are updated when the event queue has been flushed.rh_j h`j=hbhhd}r(hf]hg]hh]hi]hk]uhmK+hnhhY]rhwXApart from the event queue, the root manager also maintains a list of tasks, actually Python generators, that are updated when the event queue has been flushed.rr}r(h^jh_jubaubh)r}r(h^X4initializes x; see x.__class__.__doc__ for signaturerh_j h`j=hbhhd}r(hf]hg]hh]hi]hk]uhmK/hnhhY]rhwX4initializes x; see x.__class__.__doc__ for signaturerr}r(h^jh_jubaubh)r}r(h^Uh_j h`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX+addHandler() (circuits.core.Manager method)h UtrauhmNhnhhY]ubh)r}r(h^Uh_j h`Nhbhhd}r(hhXpyhi]hh]hf]hg]hk]hXmethodrhjuhmNhnhhY]r(h)r}r(h^XManager.addHandler(f)h_jh`hhbhhd}r(hi]rh ahhX circuits.corerr}rbhh]hf]hg]hk]rh ajXManager.addHandlerjjjuhmNhnhhY]r(j)r}r(h^X addHandlerh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwX addHandlerrr}r(h^Uh_jubaubj)r}r(h^Uh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rj!)r}r(h^Xfhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXfr}r(h^Uh_jubahbj)ubaubeubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r}r(h^Uh_j h`X^/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Manager.callrhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX%call() (circuits.core.Manager method)hBUtrauhmNhnhhY]ubh)r}r(h^Uh_j h`jhbhhd}r(hhXpyhi]hh]hf]hg]hk]hXmethodrhjuhmNhnhhY]r(h)r}r(h^X(Manager.call(event, *channels, **kwargs)h_jh`hhbhhd}r(hi]rhBahhX circuits.corerr}rbhh]hf]hg]hk]rhBajX Manager.calljjjuhmNhnhhY]r(j)r}r(h^Xcallh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXcallrr}r(h^Uh_jubaubj)r}r(h^Uh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r(j!)r}r(h^Xeventhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXeventrr}r(h^Uh_jubahbj)ubj!)r}r(h^X *channelshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX *channelsrr}r(h^Uh_jubahbj)ubj!)r}r(h^X**kwargshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX**kwargsrr}r(h^Uh_jubahbj)ubeubeubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rh)r}r(h^XFire the given event to the specified channels and suspend execution until it has been dispatched. This method may only be invoked as argument to a ``yield`` on the top execution level of a handler (e.g. "``yield self.callEvent(event)``"). It effectively creates and returns a generator that will be invoked by the main loop until the event has been dispatched (see :func:`circuits.core.handlers.handler`).h_jh`jhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]r(hwXFire the given event to the specified channels and suspend execution until it has been dispatched. This method may only be invoked as argument to a rr}r(h^XFire the given event to the specified channels and suspend execution until it has been dispatched. This method may only be invoked as argument to a h_jubjT)r}r(h^X ``yield``hd}r(hf]hg]hh]hi]hk]uh_jhY]r hwXyieldr r }r (h^Uh_jubahbj_ubhwX0 on the top execution level of a handler (e.g. "r r}r(h^X0 on the top execution level of a handler (e.g. "h_jubjT)r}r(h^X``yield self.callEvent(event)``hd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXyield self.callEvent(event)rr}r(h^Uh_jubahbj_ubhwX"). It effectively creates and returns a generator that will be invoked by the main loop until the event has been dispatched (see rr}r(h^X"). It effectively creates and returns a generator that will be invoked by the main loop until the event has been dispatched (see h_jubjF)r}r(h^X&:func:`circuits.core.handlers.handler`rh_jh`NhbjJhd}r(UreftypeXfuncjLjMXcircuits.core.handlers.handlerU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r }r!(h^jhd}r"(hf]hg]r#(jYjXpy-funcr$ehh]hi]hk]uh_jhY]r%hwX circuits.core.handlers.handler()r&r'}r((h^Uh_j ubahbj_ubaubhwX).r)r*}r+(h^X).h_jubeubaubeubh)r,}r-(h^Uh_j h`Xc/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Manager.callEventr.hbhhd}r/(hi]hh]hf]hg]hk]Uentries]r0(hX*callEvent() (circuits.core.Manager method)h"Utr1auhmNhnhhY]ubh)r2}r3(h^Uh_j h`j.hbhhd}r4(hhXpyhi]hh]hf]hg]hk]hXmethodr5hj5uhmNhnhhY]r6(h)r7}r8(h^X-Manager.callEvent(event, *channels, **kwargs)h_j2h`hhbhhd}r9(hi]r:h"ahhX circuits.corer;r<}r=bhh]hf]hg]hk]r>h"ajXManager.callEventjjjuhmNhnhhY]r?(j)r@}rA(h^X callEventh_j7h`hhbjhd}rB(hf]hg]hh]hi]hk]uhmNhnhhY]rChwX callEventrDrE}rF(h^Uh_j@ubaubj)rG}rH(h^Uh_j7h`hhbjhd}rI(hf]hg]hh]hi]hk]uhmNhnhhY]rJ(j!)rK}rL(h^Xeventhd}rM(hf]hg]hh]hi]hk]uh_jGhY]rNhwXeventrOrP}rQ(h^Uh_jKubahbj)ubj!)rR}rS(h^X *channelshd}rT(hf]hg]hh]hi]hk]uh_jGhY]rUhwX *channelsrVrW}rX(h^Uh_jRubahbj)ubj!)rY}rZ(h^X**kwargshd}r[(hf]hg]hh]hi]hk]uh_jGhY]r\hwX**kwargsr]r^}r_(h^Uh_jYubahbj)ubeubeubj1)r`}ra(h^Uh_j2h`hhbj4hd}rb(hf]hg]hh]hi]hk]uhmNhnhhY]rch)rd}re(h^XFire the given event to the specified channels and suspend execution until it has been dispatched. This method may only be invoked as argument to a ``yield`` on the top execution level of a handler (e.g. "``yield self.callEvent(event)``"). It effectively creates and returns a generator that will be invoked by the main loop until the event has been dispatched (see :func:`circuits.core.handlers.handler`).h_j`h`j.hbhhd}rf(hf]hg]hh]hi]hk]uhmKhnhhY]rg(hwXFire the given event to the specified channels and suspend execution until it has been dispatched. This method may only be invoked as argument to a rhri}rj(h^XFire the given event to the specified channels and suspend execution until it has been dispatched. This method may only be invoked as argument to a h_jdubjT)rk}rl(h^X ``yield``hd}rm(hf]hg]hh]hi]hk]uh_jdhY]rnhwXyieldrorp}rq(h^Uh_jkubahbj_ubhwX0 on the top execution level of a handler (e.g. "rrrs}rt(h^X0 on the top execution level of a handler (e.g. "h_jdubjT)ru}rv(h^X``yield self.callEvent(event)``hd}rw(hf]hg]hh]hi]hk]uh_jdhY]rxhwXyield self.callEvent(event)ryrz}r{(h^Uh_juubahbj_ubhwX"). It effectively creates and returns a generator that will be invoked by the main loop until the event has been dispatched (see r|r}}r~(h^X"). It effectively creates and returns a generator that will be invoked by the main loop until the event has been dispatched (see h_jdubjF)r}r(h^X&:func:`circuits.core.handlers.handler`rh_jdh`NhbjJhd}r(UreftypeXfuncjLjMXcircuits.core.handlers.handlerU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-funcrehh]hi]hk]uh_jhY]rhwX circuits.core.handlers.handler()rr}r(h^Uh_jubahbj_ubaubhwX).rr}r(h^X).h_jdubeubaubeubh)r}r(h^Uh_j h`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX%fire() (circuits.core.Manager method)hFUtrauhmNhnhhY]ubh)r}r(h^Uh_j h`Nhbhhd}r(hhXpyhi]hh]hf]hg]hk]hXmethodrhjuhmNhnhhY]r(h)r}r(h^X(Manager.fire(event, *channels, **kwargs)h_jh`hhbhhd}r(hi]rhFahhX circuits.corerr}rbhh]hf]hg]hk]rhFajX Manager.firejjjuhmNhnhhY]r(j)r}r(h^Xfireh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXfirerr}r(h^Uh_jubaubj)r}r(h^Uh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r(j!)r}r(h^Xeventhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXeventrr}r(h^Uh_jubahbj)ubj!)r}r(h^X *channelshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX *channelsrr}r(h^Uh_jubahbj)ubj!)r}r(h^X**kwargshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX**kwargsrr}r(h^Uh_jubahbj)ubeubeubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r(h)r}r(h^XFire an event into the system.rh_jh`X^/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Manager.firerhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]rhwXFire an event into the system.rr}r(h^jh_jubaubjW)r}r(h^Uh_jh`NhbjZhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rj])r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]r(jb)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX Parametersrr}r(h^Uh_jubahbjjubjk)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]rj)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]r(j)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]rh)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]r(j)r}r(h^Xeventhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXeventrr}r(h^Uh_jubahbjubhwX -- rr}r(h^Uh_jubhwXThe event that is to be fired.rr}r(h^XThe event that is to be fired.rh_jubehbhubahbjubj)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]rh)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]r(j)r}r(h^Xchannelshd}r(hf]hg]hh]hi]hk]uh_jhY]r hwXchannelsr r }r (h^Uh_jubahbjubhwX -- r r}r(h^Uh_jubhwXThe channels that this event is delivered on. If no channels are specified, the event is delivered to the channels found in the event's rr}r(h^XThe channels that this event is delivered on. If no channels are specified, the event is delivered to the channels found in the event's h_jubjF)r}r(h^X:attr:`channel`rh_jh`NhbjJhd}r(UreftypeXattrjLjMXchannelU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-attrrehh]hi]hk]uh_jhY]rhwXchannelrr }r!(h^Uh_jubahbj_ubaubhwX attribute. If this attribute is not set, the event is delivered to the firing component's channel. And eventually, when set neither, the event is delivered on all channels ("*").r"r#}r$(h^X attribute. If this attribute is not set, the event is delivered to the firing component's channel. And eventually, when set neither, the event is delivered on all channels ("*").h_jubehbhubahbjubehbjubahbjubehbjubaubeubeubh)r%}r&(h^Uh_j h`Nhbhhd}r'(hi]hh]hf]hg]hk]Uentries]r((hX*fireEvent() (circuits.core.Manager method)hUtr)auhmNhnhhY]ubh)r*}r+(h^Uh_j h`Nhbhhd}r,(hhXpyhi]hh]hf]hg]hk]hXmethodr-hj-uhmNhnhhY]r.(h)r/}r0(h^X-Manager.fireEvent(event, *channels, **kwargs)h_j*h`hhbhhd}r1(hi]r2hahhX circuits.corer3r4}r5bhh]hf]hg]hk]r6hajXManager.fireEventjjjuhmNhnhhY]r7(j)r8}r9(h^X fireEventh_j/h`hhbjhd}r:(hf]hg]hh]hi]hk]uhmNhnhhY]r;hwX fireEventr<r=}r>(h^Uh_j8ubaubj)r?}r@(h^Uh_j/h`hhbjhd}rA(hf]hg]hh]hi]hk]uhmNhnhhY]rB(j!)rC}rD(h^Xeventhd}rE(hf]hg]hh]hi]hk]uh_j?hY]rFhwXeventrGrH}rI(h^Uh_jCubahbj)ubj!)rJ}rK(h^X *channelshd}rL(hf]hg]hh]hi]hk]uh_j?hY]rMhwX *channelsrNrO}rP(h^Uh_jJubahbj)ubj!)rQ}rR(h^X**kwargshd}rS(hf]hg]hh]hi]hk]uh_j?hY]rThwX**kwargsrUrV}rW(h^Uh_jQubahbj)ubeubeubj1)rX}rY(h^Uh_j*h`hhbj4hd}rZ(hf]hg]hh]hi]hk]uhmNhnhhY]r[(h)r\}r](h^XFire an event into the system.r^h_jXh`Xc/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Manager.fireEventr_hbhhd}r`(hf]hg]hh]hi]hk]uhmKhnhhY]rahwXFire an event into the system.rbrc}rd(h^j^h_j\ubaubjW)re}rf(h^Uh_jXh`NhbjZhd}rg(hf]hg]hh]hi]hk]uhmNhnhhY]rhj])ri}rj(h^Uhd}rk(hf]hg]hh]hi]hk]uh_jehY]rl(jb)rm}rn(h^Uhd}ro(hf]hg]hh]hi]hk]uh_jihY]rphwX Parametersrqrr}rs(h^Uh_jmubahbjjubjk)rt}ru(h^Uhd}rv(hf]hg]hh]hi]hk]uh_jihY]rwj)rx}ry(h^Uhd}rz(hf]hg]hh]hi]hk]uh_jthY]r{(j)r|}r}(h^Uhd}r~(hf]hg]hh]hi]hk]uh_jxhY]rh)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_j|hY]r(j)r}r(h^Xeventhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXeventrr}r(h^Uh_jubahbjubhwX -- rr}r(h^Uh_jubhwXThe event that is to be fired.rr}r(h^XThe event that is to be fired.h_jubehbhubahbjubj)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jxhY]rh)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]r(j)r}r(h^Xchannelshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXchannelsrr}r(h^Uh_jubahbjubhwX -- rr}r(h^Uh_jubhwXThe channels that this event is delivered on. If no channels are specified, the event is delivered to the channels found in the event's rr}r(h^XThe channels that this event is delivered on. If no channels are specified, the event is delivered to the channels found in the event's h_jubjF)r}r(h^X:attr:`channel`rh_jh`NhbjJhd}r(UreftypeXattrjLjMXchannelU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-attrrehh]hi]hk]uh_jhY]rhwXchannelrr}r(h^Uh_jubahbj_ubaubhwX attribute. If this attribute is not set, the event is delivered to the firing component's channel. And eventually, when set neither, the event is delivered on all channels ("*").rr}r(h^X attribute. If this attribute is not set, the event is delivered to the firing component's channel. And eventually, when set neither, the event is delivered on all channels ("*").h_jubehbhubahbjubehbjubahbjubehbjubaubeubeubh)r}r(h^Uh_j h`X_/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Manager.flushrhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX&flush() (circuits.core.Manager method)hUtrauhmNhnhhY]ubh)r}r(h^Uh_j h`jhbhhd}r(hhXpyhi]hh]hf]hg]hk]hXmethodrhjuhmNhnhhY]r(h)r}r(h^XManager.flush()h_jh`hhbhhd}r(hi]rhahhX circuits.corerr}rbhh]hf]hg]hk]rhajX Manager.flushjjjuhmNhnhhY]r(j)r}r(h^Xflushh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXflushrr}r(h^Uh_jubaubj)r}r(h^Uh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rh)r}r(h^XFlush all Events in the Event Queue. If called on a manager that is not the root of an object hierarchy, the invocation is delegated to the root manager.rh_jh`jhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]rhwXFlush all Events in the Event Queue. If called on a manager that is not the root of an object hierarchy, the invocation is delegated to the root manager.rr}r(h^jh_jubaubaubeubh)r}r(h^Uh_j h`Xe/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Manager.flushEventsrhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX,flushEvents() (circuits.core.Manager method)hDUtrauhmNhnhhY]ubh)r}r(h^Uh_j h`jhbhhd}r(hhXpyhi]hh]hf]hg]hk]hXmethodrhjuhmNhnhhY]r(h)r}r(h^XManager.flushEvents()h_jh`hhbhhd}r(hi]rhDahhX circuits.corerr}rbhh]hf]hg]hk]rhDajXManager.flushEventsjjjuhmNhnhhY]r(j)r}r(h^X flushEventsh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwX flushEventsrr}r(h^Uh_jubaubj)r}r(h^Uh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rh)r}r(h^XFlush all Events in the Event Queue. If called on a manager that is not the root of an object hierarchy, the invocation is delegated to the root manager.rh_jh`jhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]rhwXFlush all Events in the Event Queue. If called on a manager that is not the root of an object hierarchy, the invocation is delegated to the root manager.r r }r (h^jh_jubaubaubeubh)r }r (h^Uh_j h`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX,getHandlers() (circuits.core.Manager method)hKUtrauhmNhnhhY]ubh)r}r(h^Uh_j h`Nhbhhd}r(hhXpyhi]hh]hf]hg]hk]hXmethodrhjuhmNhnhhY]r(h)r}r(h^X-Manager.getHandlers(event, channel, **kwargs)h_jh`hhbhhd}r(hi]rhKahhX circuits.corerr}rbhh]hf]hg]hk]rhKajXManager.getHandlersjjjuhmNhnhhY]r(j)r}r (h^X getHandlersh_jh`hhbjhd}r!(hf]hg]hh]hi]hk]uhmNhnhhY]r"hwX getHandlersr#r$}r%(h^Uh_jubaubj)r&}r'(h^Uh_jh`hhbjhd}r((hf]hg]hh]hi]hk]uhmNhnhhY]r)(j!)r*}r+(h^Xeventhd}r,(hf]hg]hh]hi]hk]uh_j&hY]r-hwXeventr.r/}r0(h^Uh_j*ubahbj)ubj!)r1}r2(h^Xchannelhd}r3(hf]hg]hh]hi]hk]uh_j&hY]r4hwXchannelr5r6}r7(h^Uh_j1ubahbj)ubj!)r8}r9(h^X**kwargshd}r:(hf]hg]hh]hi]hk]uh_j&hY]r;hwX**kwargsr<r=}r>(h^Uh_j8ubahbj)ubeubeubj1)r?}r@(h^Uh_jh`hhbj4hd}rA(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)rB}rC(h^Uh_j h`Nhbhhd}rD(hi]hh]hf]hg]hk]Uentries]rE(hX%join() (circuits.core.Manager method)h=UtrFauhmNhnhhY]ubh)rG}rH(h^Uh_j h`Nhbhhd}rI(hhXpyhi]hh]hf]hg]hk]hXmethodrJhjJuhmNhnhhY]rK(h)rL}rM(h^XManager.join()h_jGh`hhbhhd}rN(hi]rOh=ahhX circuits.corerPrQ}rRbhh]hf]hg]hk]rSh=ajX Manager.joinjjjuhmNhnhhY]rT(j)rU}rV(h^Xjoinh_jLh`hhbjhd}rW(hf]hg]hh]hi]hk]uhmNhnhhY]rXhwXjoinrYrZ}r[(h^Uh_jUubaubj)r\}r](h^Uh_jLh`hhbjhd}r^(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubj1)r_}r`(h^Uh_jGh`hhbj4hd}ra(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)rb}rc(h^Uh_j h`X^/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Manager.namerdhbhhd}re(hi]hh]hf]hg]hk]Uentries]rf(hX&name (circuits.core.Manager attribute)hUtrgauhmNhnhhY]ubh)rh}ri(h^Uh_j h`jdhbhhd}rj(hhXpyhi]hh]hf]hg]hk]hX attributerkhjkuhmNhnhhY]rl(h)rm}rn(h^X Manager.nameh_jhh`hhbhhd}ro(hi]rphahhX circuits.corerqrr}rsbhh]hf]hg]hk]rthajX Manager.namejjjuhmNhnhhY]ruj)rv}rw(h^Xnameh_jmh`hhbjhd}rx(hf]hg]hh]hi]hk]uhmNhnhhY]ryhwXnamerzr{}r|(h^Uh_jvubaubaubj1)r}}r~(h^Uh_jhh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rh)r}r(h^X)Return the name of this Component/Managerrh_j}h`jdhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]rhwX)Return the name of this Component/Managerrr}r(h^jh_jubaubaubeubh)r}r(h^Uh_j h`X]/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Manager.pidrhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX%pid (circuits.core.Manager attribute)h'UtrauhmNhnhhY]ubh)r}r(h^Uh_j h`jhbhhd}r(hhXpyhi]hh]hf]hg]hk]hX attributerhjuhmNhnhhY]r(h)r}r(h^X Manager.pidh_jh`hhbhhd}r(hi]rh'ahhX circuits.corerr}rbhh]hf]hg]hk]rh'ajX Manager.pidjjjuhmNhnhhY]rj)r}r(h^Xpidh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXpidrr}r(h^Uh_jubaubaubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rh)r}r(h^X/Return the process id of this Component/Managerrh_jh`jhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]rhwX/Return the process id of this Component/Managerrr}r(h^jh_jubaubaubeubh)r}r(h^Uh_j h`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX,processTask() (circuits.core.Manager method)h UtrauhmNhnhhY]ubh)r}r(h^Uh_j h`Nhbhhd}r(hhXpyhi]hh]hf]hg]hk]hXmethodrhjuhmNhnhhY]r(h)r}r(h^X-Manager.processTask(event, task, parent=None)h_jh`hhbhhd}r(hi]rh ahhX circuits.corerr}rbhh]hf]hg]hk]rh ajXManager.processTaskjjjuhmNhnhhY]r(j)r}r(h^X processTaskh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwX processTaskrr}r(h^Uh_jubaubj)r}r(h^Uh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r(j!)r}r(h^Xeventhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXeventrr}r(h^Uh_jubahbj)ubj!)r}r(h^Xtaskhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXtaskrr}r(h^Uh_jubahbj)ubj!)r}r(h^X parent=Nonehd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX parent=Nonerr}r(h^Uh_jubahbj)ubeubeubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r}r(h^Uh_j h`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX.registerChild() (circuits.core.Manager method)h>UtrauhmNhnhhY]ubh)r}r(h^Uh_j h`Nhbhhd}r(hhXpyhi]hh]hf]hg]hk]hXmethodrhjuhmNhnhhY]r(h)r}r(h^X Manager.registerChild(component)h_jh`hhbhhd}r(hi]rh>ahhX circuits.corerr}rbhh]hf]hg]hk]rh>ajXManager.registerChildjjjuhmNhnhhY]r(j)r}r(h^X registerChildh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwX registerChildrr}r(h^Uh_jubaubj)r}r(h^Uh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rj!)r}r(h^X componenthd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX componentrr }r (h^Uh_jubahbj)ubaubeubj1)r }r (h^Uh_jh`hhbj4hd}r (hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r}r(h^Uh_j h`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX-registerTask() (circuits.core.Manager method)h#UtrauhmNhnhhY]ubh)r}r(h^Uh_j h`Nhbhhd}r(hhXpyhi]hh]hf]hg]hk]hXmethodrhjuhmNhnhhY]r(h)r}r(h^XManager.registerTask(g)h_jh`hhbhhd}r(hi]rh#ahhX circuits.corerr}rbhh]hf]hg]hk]rh#ajXManager.registerTaskjjjuhmNhnhhY]r (j)r!}r"(h^X registerTaskh_jh`hhbjhd}r#(hf]hg]hh]hi]hk]uhmNhnhhY]r$hwX registerTaskr%r&}r'(h^Uh_j!ubaubj)r(}r)(h^Uh_jh`hhbjhd}r*(hf]hg]hh]hi]hk]uhmNhnhhY]r+j!)r,}r-(h^Xghd}r.(hf]hg]hh]hi]hk]uh_j(hY]r/hwXgr0}r1(h^Uh_j,ubahbj)ubaubeubj1)r2}r3(h^Uh_jh`hhbj4hd}r4(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r5}r6(h^Uh_j h`Nhbhhd}r7(hi]hh]hf]hg]hk]Uentries]r8(hX.removeHandler() (circuits.core.Manager method)h3Utr9auhmNhnhhY]ubh)r:}r;(h^Uh_j h`Nhbhhd}r<(hhXpyhi]hh]hf]hg]hk]hXmethodr=hj=uhmNhnhhY]r>(h)r?}r@(h^X)Manager.removeHandler(method, event=None)h_j:h`hhbhhd}rA(hi]rBh3ahhX circuits.corerCrD}rEbhh]hf]hg]hk]rFh3ajXManager.removeHandlerjjjuhmNhnhhY]rG(j)rH}rI(h^X removeHandlerh_j?h`hhbjhd}rJ(hf]hg]hh]hi]hk]uhmNhnhhY]rKhwX removeHandlerrLrM}rN(h^Uh_jHubaubj)rO}rP(h^Uh_j?h`hhbjhd}rQ(hf]hg]hh]hi]hk]uhmNhnhhY]rR(j!)rS}rT(h^Xmethodhd}rU(hf]hg]hh]hi]hk]uh_jOhY]rVhwXmethodrWrX}rY(h^Uh_jSubahbj)ubj!)rZ}r[(h^X event=Nonehd}r\(hf]hg]hh]hi]hk]uh_jOhY]r]hwX event=Noner^r_}r`(h^Uh_jZubahbj)ubeubeubj1)ra}rb(h^Uh_j:h`hhbj4hd}rc(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)rd}re(h^Uh_j h`X]/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Manager.runrfhbhhd}rg(hi]hh]hf]hg]hk]Uentries]rh(hX$run() (circuits.core.Manager method)hHUtriauhmNhnhhY]ubh)rj}rk(h^Uh_j h`jfhbhhd}rl(hhXpyhi]hh]hf]hg]hk]hXmethodrmhjmuhmNhnhhY]rn(h)ro}rp(h^XManager.run(socket=None)h_jjh`hhbhhd}rq(hi]rrhHahhX circuits.corersrt}rubhh]hf]hg]hk]rvhHajX Manager.runjjjuhmNhnhhY]rw(j)rx}ry(h^Xrunh_joh`hhbjhd}rz(hf]hg]hh]hi]hk]uhmNhnhhY]r{hwXrunr|r}}r~(h^Uh_jxubaubj)r}r(h^Uh_joh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rj!)r}r(h^X socket=Nonehd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX socket=Nonerr}r(h^Uh_jubahbj)ubaubeubj1)r}r(h^Uh_jjh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r(h)r}r(h^XrRun this manager. The method fires the :class:`~.events.Started` event and then continuously calls :meth:`~.tick`.h_jh`jfhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]r(hwX'Run this manager. The method fires the rr}r(h^X'Run this manager. The method fires the h_jubjF)r}r(h^X:class:`~.events.Started`rh_jh`NhbjJhd}r(UreftypeXclassjjLjMXevents.StartedU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-classrehh]hi]hk]uh_jhY]rhwXStartedrr}r(h^Uh_jubahbj_ubaubhwX# event and then continuously calls rr}r(h^X# event and then continuously calls h_jubjF)r}r(h^X:meth:`~.tick`rh_jh`NhbjJhd}r(UreftypeXmethjjLjMXtickU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-methrehh]hi]hk]uh_jhY]rhwXtick()rr}r(h^Uh_jubahbj_ubaubhwX.r}r(h^X.h_jubeubh)r}r(h^XGThe method returns when the manager's :meth:`~.stop` method is invoked.h_jh`jfhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]r(hwX&The method returns when the manager's rr}r(h^X&The method returns when the manager's h_jubjF)r}r(h^X:meth:`~.stop`rh_jh`NhbjJhd}r(UreftypeXmethjjLjMXstopU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-methrehh]hi]hk]uh_jhY]rhwXstop()rr}r(h^Uh_jubahbj_ubaubhwX method is invoked.rr}r(h^X method is invoked.h_jubeubh)r}r(h^XIf invoked by a programs main thread, a signal handler for the ``INT`` and ``TERM`` signals is installed. This handler fires the corresponding :class:`~.events.Signal` events and then calls :meth:`~.stop` for the manager.h_jh`jfhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]r(hwX?If invoked by a programs main thread, a signal handler for the rr}r(h^X?If invoked by a programs main thread, a signal handler for the h_jubjT)r}r(h^X``INT``hd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXINTrr}r(h^Uh_jubahbj_ubhwX and rr}r(h^X and h_jubjT)r}r(h^X``TERM``hd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXTERMrr}r(h^Uh_jubahbj_ubhwX< signals is installed. This handler fires the corresponding rr}r(h^X< signals is installed. This handler fires the corresponding h_jubjF)r}r(h^X:class:`~.events.Signal`rh_jh`NhbjJhd}r(UreftypeXclassjjLjMX events.SignalU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-classrehh]hi]hk]uh_jhY]rhwXSignalrr}r(h^Uh_jubahbj_ubaubhwX events and then calls rr}r(h^X events and then calls h_jubjF)r}r(h^X:meth:`~.stop`rh_jh`NhbjJhd}r(UreftypeXmethjjLjMXstopU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-methrehh]hi]hk]uh_jhY]r hwXstop()r r }r (h^Uh_jubahbj_ubaubhwX for the manager.r r}r(h^X for the manager.h_jubeubeubeubh)r}r(h^Uh_j h`Xa/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Manager.runningrhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX)running (circuits.core.Manager attribute)h!UtrauhmNhnhhY]ubh)r}r(h^Uh_j h`jhbhhd}r(hhXpyhi]hh]hf]hg]hk]hX attributerhjuhmNhnhhY]r(h)r}r(h^XManager.runningh_jh`hhbhhd}r(hi]rh!ahhX circuits.corerr }r!bhh]hf]hg]hk]r"h!ajXManager.runningjjjuhmNhnhhY]r#j)r$}r%(h^Xrunningh_jh`hhbjhd}r&(hf]hg]hh]hi]hk]uhmNhnhhY]r'hwXrunningr(r)}r*(h^Uh_j$ubaubaubj1)r+}r,(h^Uh_jh`hhbj4hd}r-(hf]hg]hh]hi]hk]uhmNhnhhY]r.h)r/}r0(h^X2Return the running state of this Component/Managerr1h_j+h`jhbhhd}r2(hf]hg]hh]hi]hk]uhmKhnhhY]r3hwX2Return the running state of this Component/Managerr4r5}r6(h^j1h_j/ubaubaubeubh)r7}r8(h^Uh_j h`X_/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Manager.startr9hbhhd}r:(hi]hh]hf]hg]hk]Uentries]r;(hX&start() (circuits.core.Manager method)h;Utr<auhmNhnhhY]ubh)r=}r>(h^Uh_j h`j9hbhhd}r?(hhXpyhi]hh]hf]hg]hk]hXmethodr@hj@uhmNhnhhY]rA(h)rB}rC(h^X'Manager.start(process=False, link=None)h_j=h`hhbhhd}rD(hi]rEh;ahhX circuits.corerFrG}rHbhh]hf]hg]hk]rIh;ajX Manager.startjjjuhmNhnhhY]rJ(j)rK}rL(h^Xstarth_jBh`hhbjhd}rM(hf]hg]hh]hi]hk]uhmNhnhhY]rNhwXstartrOrP}rQ(h^Uh_jKubaubj)rR}rS(h^Uh_jBh`hhbjhd}rT(hf]hg]hh]hi]hk]uhmNhnhhY]rU(j!)rV}rW(h^X process=Falsehd}rX(hf]hg]hh]hi]hk]uh_jRhY]rYhwX process=FalserZr[}r\(h^Uh_jVubahbj)ubj!)r]}r^(h^X link=Nonehd}r_(hf]hg]hh]hi]hk]uh_jRhY]r`hwX link=Nonerarb}rc(h^Uh_j]ubahbj)ubeubeubj1)rd}re(h^Uh_j=h`hhbj4hd}rf(hf]hg]hh]hi]hk]uhmNhnhhY]rgh)rh}ri(h^XStart a new thread or process that invokes this manager's ``run()`` method. The invocation of this method returns immediately after the task or process has been started.h_jdh`j9hbhhd}rj(hf]hg]hh]hi]hk]uhmKhnhhY]rk(hwX:Start a new thread or process that invokes this manager's rlrm}rn(h^X:Start a new thread or process that invokes this manager's h_jhubjT)ro}rp(h^X ``run()``hd}rq(hf]hg]hh]hi]hk]uh_jhhY]rrhwXrun()rsrt}ru(h^Uh_joubahbj_ubhwXf method. The invocation of this method returns immediately after the task or process has been started.rvrw}rx(h^Xf method. The invocation of this method returns immediately after the task or process has been started.h_jhubeubaubeubh)ry}rz(h^Uh_j h`X^/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Manager.stopr{hbhhd}r|(hi]hh]hf]hg]hk]Uentries]r}(hX%stop() (circuits.core.Manager method)h*Utr~auhmNhnhhY]ubh)r}r(h^Uh_j h`j{hbhhd}r(hhXpyhi]hh]hf]hg]hk]hXmethodrhjuhmNhnhhY]r(h)r}r(h^XManager.stop()h_jh`hhbhhd}r(hi]rh*ahhX circuits.corerr}rbhh]hf]hg]hk]rh*ajX Manager.stopjjjuhmNhnhhY]r(j)r}r(h^Xstoph_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXstoprr}r(h^Uh_jubaubj)r}r(h^Uh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rh)r}r(h^XTStop this manager. Invoking this method causes an invocation of ``run()`` to return.h_jh`j{hbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]r(hwX@Stop this manager. Invoking this method causes an invocation of rr}r(h^X@Stop this manager. Invoking this method causes an invocation of h_jubjT)r}r(h^X ``run()``hd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXrun()rr}r(h^Uh_jubahbj_ubhwX to return.rr}r(h^X to return.h_jubeubaubeubh)r}r(h^Uh_j h`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX%tick() (circuits.core.Manager method)hLUtrauhmNhnhhY]ubh)r}r(h^Uh_j h`Nhbhhd}r(hhXpyrhi]hh]hf]hg]hk]hXmethodrhjuhmNhnhhY]r(h)r}r(h^XManager.tick(timeout=-1)rh_jh`hhbhhd}r(hi]rhLahhX circuits.corerr}rbhh]hf]hg]hk]rhLajX Manager.tickjjjuhmNhnhhY]r(j)r}r(h^Xtickh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXtickrr}r(h^Uh_jubaubj)r}r(h^Uh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rj!)r}r(h^X timeout=-1hd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX timeout=-1rr}r(h^Uh_jubahbj)ubaubeubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r(h)r}r(h^XExecute all possible actions once. Process all registered tasks and flush the event queue. If the application is running fire a GenerateEvents to get new events from sources.rh_jh`X^/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.Manager.tickrhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]rhwXExecute all possible actions once. Process all registered tasks and flush the event queue. If the application is running fire a GenerateEvents to get new events from sources.rr}r(h^jh_jubaubh)r}r(h^XrThis method is usually invoked from :meth:`~.run`. It may also be used to build an application specific main loop.h_jh`jhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]r(hwX$This method is usually invoked from rr}r(h^X$This method is usually invoked from h_jubjF)r}r(h^X :meth:`~.run`rh_jh`NhbjJhd}r(UreftypeXmethjjLjMXrunU refdomainXpyrhi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]rjT)r}r(h^jhd}r(hf]hg]r(jYjXpy-methrehh]hi]hk]uh_jhY]rhwXrun()rr}r(h^Uh_jubahbj_ubaubhwXA. It may also be used to build an application specific main loop.rr}r(h^XA. It may also be used to build an application specific main loop.h_jubeubjW)r}r(h^Uh_jh`NhbjZhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rj])r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]r(jb)r}r(h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX Parametersrr}r(h^Uh_jubahbjjubjk)r}r (h^Uhd}r (hf]hg]hh]hi]hk]uh_jhY]r h)r }r (h^Uhd}r(hf]hg]hh]hi]hk]uh_jhY]r(j)r}r(h^Xtimeouthd}r(hf]hg]hh]hi]hk]uh_j hY]rhwXtimeoutrr}r(h^Uh_jubahbjubhwX (rr}r(h^Uh_j ubjF)r}r(h^Uhd}r(UreftypejwU reftargetXfloat, measuring secondsrU refdomainjhi]hh]U refexplicithf]hg]hk]uh_j hY]rj)r}r (h^jhd}r!(hf]hg]hh]hi]hk]uh_jhY]r"hwXfloat, measuring secondsr#r$}r%(h^Uh_jubahbjubahbjJubhwX)r&}r'(h^Uh_j ubhwX -- r(r)}r*(h^Uh_j ubhwXzthe maximum waiting time spent in this method. If negative, the method may block until at least one action has been taken.r+r,}r-(h^Xzthe maximum waiting time spent in this method. If negative, the method may block until at least one action has been taken.r.h_j ubehbhubahbjubehbjubaubeubeubh)r/}r0(h^Uh_j h`Nhbhhd}r1(hi]hh]hf]hg]hk]Uentries]r2(hX0unregisterChild() (circuits.core.Manager method)h8Utr3auhmNhnhhY]ubh)r4}r5(h^Uh_j h`Nhbhhd}r6(hhXpyhi]hh]hf]hg]hk]hXmethodr7hj7uhmNhnhhY]r8(h)r9}r:(h^X"Manager.unregisterChild(component)h_j4h`hhbhhd}r;(hi]r<h8ahhX circuits.corer=r>}r?bhh]hf]hg]hk]r@h8ajXManager.unregisterChildjjjuhmNhnhhY]rA(j)rB}rC(h^XunregisterChildh_j9h`hhbjhd}rD(hf]hg]hh]hi]hk]uhmNhnhhY]rEhwXunregisterChildrFrG}rH(h^Uh_jBubaubj)rI}rJ(h^Uh_j9h`hhbjhd}rK(hf]hg]hh]hi]hk]uhmNhnhhY]rLj!)rM}rN(h^X componenthd}rO(hf]hg]hh]hi]hk]uh_jIhY]rPhwX componentrQrR}rS(h^Uh_jMubahbj)ubaubeubj1)rT}rU(h^Uh_j4h`hhbj4hd}rV(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)rW}rX(h^Uh_j h`Nhbhhd}rY(hi]hh]hf]hg]hk]Uentries]rZ(hX/unregisterTask() (circuits.core.Manager method)h6Utr[auhmNhnhhY]ubh)r\}r](h^Uh_j h`Nhbhhd}r^(hhXpyhi]hh]hf]hg]hk]hXmethodr_hj_uhmNhnhhY]r`(h)ra}rb(h^XManager.unregisterTask(g)h_j\h`hhbhhd}rc(hi]rdh6ahhX circuits.corererf}rgbhh]hf]hg]hk]rhh6ajXManager.unregisterTaskjjjuhmNhnhhY]ri(j)rj}rk(h^XunregisterTaskh_jah`hhbjhd}rl(hf]hg]hh]hi]hk]uhmNhnhhY]rmhwXunregisterTaskrnro}rp(h^Uh_jjubaubj)rq}rr(h^Uh_jah`hhbjhd}rs(hf]hg]hh]hi]hk]uhmNhnhhY]rtj!)ru}rv(h^Xghd}rw(hf]hg]hh]hi]hk]uh_jqhY]rxhwXgry}rz(h^Uh_juubahbj)ubaubeubj1)r{}r|(h^Uh_j\h`hhbj4hd}r}(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r~}r(h^Uh_j h`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX%wait() (circuits.core.Manager method)h.UtrauhmNhnhhY]ubh)r}r(h^Uh_j h`Nhbhhd}r(hhXpyhi]hh]hf]hg]hk]hXmethodrhjuhmNhnhhY]r(h)r}r(h^X(Manager.wait(event, *channels, **kwargs)h_jh`hhbhhd}r(hi]rh.ahhX circuits.corerr}rbhh]hf]hg]hk]rh.ajX Manager.waitjjjuhmNhnhhY]r(j)r}r(h^Xwaith_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwXwaitrr}r(h^Uh_jubaubj)r}r(h^Uh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r(j!)r}r(h^Xeventhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXeventrr}r(h^Uh_jubahbj)ubj!)r}r(h^X *channelshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX *channelsrr}r(h^Uh_jubahbj)ubj!)r}r(h^X**kwargshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX**kwargsrr}r(h^Uh_jubahbj)ubeubeubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubh)r}r(h^Uh_j h`Nhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX*waitEvent() (circuits.core.Manager method)hUtrauhmNhnhhY]ubh)r}r(h^Uh_j h`Nhbhhd}r(hhXpyhi]hh]hf]hg]hk]hXmethodrhjuhmNhnhhY]r(h)r}r(h^X-Manager.waitEvent(event, *channels, **kwargs)h_jh`hhbhhd}r(hi]rhahhX circuits.corerr}rbhh]hf]hg]hk]rhajXManager.waitEventjjjuhmNhnhhY]r(j)r}r(h^X waitEventh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwX waitEventrr}r(h^Uh_jubaubj)r}r(h^Uh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r(j!)r}r(h^Xeventhd}r(hf]hg]hh]hi]hk]uh_jhY]rhwXeventrr}r(h^Uh_jubahbj)ubj!)r}r(h^X *channelshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX *channelsrr}r(h^Uh_jubahbj)ubj!)r}r(h^X**kwargshd}r(hf]hg]hh]hi]hk]uh_jhY]rhwX**kwargsrr}r(h^Uh_jubahbj)ubeubeubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]ubeubeubeubh)r}r(h^Uh_hh`X^/home/prologic/work/circuits/circuits/core/__init__.py:docstring of circuits.core.TimeoutErrorrhbhhd}r(hi]hh]hf]hg]hk]Uentries]r(hX TimeoutErrorrhUtrauhmNhnhhY]ubh)r}r(h^Uh_hh`jhbhhd}r(hhXpyhi]hh]hf]hg]hk]hX exceptionrhjuhmNhnhhY]r(h)r}r(h^jh_jh`hhbhhd}r(hi]rhahhX circuits.corerr}rbhh]hf]hg]hk]rhajjjUjuhmNhnhhY]r(j)r}r(h^X exception h_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwX exception rr}r(h^Uh_jubaubj )r}r(h^Xcircuits.core.h_jh`hhbj hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r hwXcircuits.core.r r }r (h^Uh_jubaubj)r }r(h^jh_jh`hhbjhd}r(hf]hg]hh]hi]hk]uhmNhnhhY]rhwX TimeoutErrorrr}r(h^Uh_j ubaubeubj1)r}r(h^Uh_jh`hhbj4hd}r(hf]hg]hh]hi]hk]uhmNhnhhY]r(h)r}r(h^X$Bases: :class:`exceptions.Exception`rh_jh`jhbhhd}r(hf]hg]hh]hi]hk]uhmKhnhhY]r(hwXBases: rr}r(h^XBases: h_jubjF)r }r!(h^X:class:`exceptions.Exception`r"h_jh`NhbjJhd}r#(UreftypeXclassjLjMXexceptions.ExceptionU refdomainXpyr$hi]hh]U refexplicithf]hg]hk]jOhjPjjQjRuhmNhY]r%jT)r&}r'(h^j"hd}r((hf]hg]r)(jYj$Xpy-classr*ehh]hi]hk]uh_j hY]r+hwXexceptions.Exceptionr,r-}r.(h^Uh_j&ubahbj_ubaubeubh)r/}r0(h^X%Raised if wait event timeout occurredr1h_jh`jhbhhd}r2(hf]hg]hh]hi]hk]uhmKhnhhY]r3hwX%Raised if wait event timeout occurredr4r5}r6(h^j1h_j/ubaubeubeubeubeubah^UU transformerr7NU footnote_refsr8}r9Urefnamesr:}r;Usymbol_footnotesr<]r=Uautofootnote_refsr>]r?Usymbol_footnote_refsr@]rAU citationsrB]rChnhU current_linerDNUtransform_messagesrE]rFUreporterrGNUid_startrHKU autofootnotesrI]rJU citation_refsrK}rLUindirect_targetsrM]rNUsettingsrO(cdocutils.frontend Values rPorQ}rR(Ufootnote_backlinksrSKUrecord_dependenciesrTNU rfc_base_urlrUUhttp://tools.ietf.org/html/rVU tracebackrWUpep_referencesrXNUstrip_commentsrYNU toc_backlinksrZUentryr[U language_coder\Uenr]U datestampr^NU report_levelr_KU _destinationr`NU halt_levelraKU strip_classesrbNhtNUerror_encoding_error_handlerrcUbackslashreplacerdUdebugreNUembed_stylesheetrfUoutput_encoding_error_handlerrgUstrictrhU sectnum_xformriKUdump_transformsrjNU docinfo_xformrkKUwarning_streamrlNUpep_file_url_templatermUpep-%04drnUexit_status_levelroKUconfigrpNUstrict_visitorrqNUcloak_email_addressesrrUtrim_footnote_reference_spacersUenvrtNUdump_pseudo_xmlruNUexpose_internalsrvNUsectsubtitle_xformrwU source_linkrxNUrfc_referencesryNUoutput_encodingrzUutf-8r{U source_urlr|NUinput_encodingr}U utf-8-sigr~U_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhaUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjhUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hjhVh{hj h jh jh jh jDh jhjh*jhjhjhj6 hj hjhjhj_ hj hj/hjmhj hj>hjhj hjbhjh jh!jh"j7h#jh$j h%j>h&j h'jh(jh)j h1j h+jh,jxh-j h.jh/jh0j hXh\h2jh3j?h4jh7j h5jGh6jah?jh8j9h9jh:jh;jBhjhWhh@j hAjx hBjhDjhEjhhFjhGj hcdocutils.nodes target r)r}r(h^Uh_hh`hhbUtargetrhd}r(hf]hi]rhahh]Uismodhg]hk]uhmKhnhhY]ubhHjohIjhJjhKjhLjuUsubstitution_namesr}rhbhnhd}r(hf]hi]hh]Usourcehahg]hk]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.protocols.line.doctree0000644000014400001440000007064212425011104027105 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X!circuits.protocols.line.line.nameqXcircuits.protocols.line.LineqX"circuits.protocols.line.splitLinesqXcircuits.protocols.line.lineq Xcircuits.protocols.line moduleq NuUsubstitution_defsq }q Uparse_messagesq ]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh h h Ucircuits-protocols-line-modulequUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXH/home/prologic/work/circuits/docs/source/api/circuits.protocols.line.rstqUtagnameqUsectionqU attributesq }q!(Udupnamesq"]Uclassesq#]Ubackrefsq$]Uidsq%]q&(Xmodule-circuits.protocols.lineq'heUnamesq(]q)h auUlineq*KUdocumentq+hh]q,(cdocutils.nodes title q-)q.}q/(hXcircuits.protocols.line moduleq0hhhhhUtitleq1h }q2(h"]h#]h$]h%]h(]uh*Kh+hh]q3cdocutils.nodes Text q4Xcircuits.protocols.line moduleq5q6}q7(hh0hh.ubaubcsphinx.addnodes index q8)q9}q:(hUhhhU q;hUindexq(Usingleq?X circuits.protocols.line (module)Xmodule-circuits.protocols.lineUtq@auh*Kh+hh]ubcdocutils.nodes paragraph qA)qB}qC(hX Line ProtocolqDhhhX\/home/prologic/work/circuits/circuits/protocols/line.py:docstring of circuits.protocols.lineqEhU paragraphqFh }qG(h"]h#]h$]h%]h(]uh*Kh+hh]qHh4X Line ProtocolqIqJ}qK(hhDhhBubaubhA)qL}qM(hX/This module implements the basic Line protocol.qNhhhhEhhFh }qO(h"]h#]h$]h%]h(]uh*Kh+hh]qPh4X/This module implements the basic Line protocol.qQqR}qS(hhNhhLubaubhA)qT}qU(hXBThis module can be used in both server and client implementations.qVhhhhEhhFh }qW(h"]h#]h$]h%]h(]uh*Kh+hh]qXh4XBThis module can be used in both server and client implementations.qYqZ}q[(hhVhhTubaubh8)q\}q](hUhhhXg/home/prologic/work/circuits/circuits/protocols/line.py:docstring of circuits.protocols.line.splitLinesq^hh lines, bufferhhchU qphUdesc_signatureqqh }qr(h%]qshaUmoduleqtcdocutils.nodes reprunicode quXcircuits.protocols.lineqvqw}qxbh$]h"]h#]h(]qyhaUfullnameqzX splitLinesq{Uclassq|UUfirstq}uh*Nh+hh]q~(csphinx.addnodes desc_addname q)q}q(hXcircuits.protocols.line.hhnhhphU desc_addnameqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qh4Xcircuits.protocols.line.qq}q(hUhhubaubcsphinx.addnodes desc_name q)q}q(hh{hhnhhphU desc_nameqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qh4X splitLinesqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhnhhphUdesc_parameterlistqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]q(csphinx.addnodes desc_parameter q)q}q(hXsh }q(h"]h#]h$]h%]h(]uhhh]qh4Xsq}q(hUhhubahUdesc_parameterqubh)q}q(hXbufferh }q(h"]h#]h$]h%]h(]uhhh]qh4Xbufferqq}q(hUhhubahhubeubcsphinx.addnodes desc_returns q)q}q(hX lines, bufferhhnhhphU desc_returnsqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qh4X lines, bufferqq}q(hUhhubaubeubcsphinx.addnodes desc_content q)q}q(hUhhchhphU desc_contentqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qhA)q}q(hXAppend s to buffer and find any new lines of text in the string splitting at the standard IRC delimiter CRLF. Any new lines found, return them as a list and the remaining buffer for further processing.qhhhh^hhFh }q(h"]h#]h$]h%]h(]uh*Kh+hh]qh4XAppend s to buffer and find any new lines of text in the string splitting at the standard IRC delimiter CRLF. Any new lines found, return them as a list and the remaining buffer for further processing.qq}q(hhhhubaubaubeubh8)q}q(hUhhhNhhrhhFh }r(h"]h#]h$]h%]h(]uh*Kh+hh]r(h4XBases: rr}r(hXBases: hhubcsphinx.addnodes pending_xref r)r}r (hX#:class:`circuits.core.events.Event`r hhhNhU pending_xrefr h }r (UreftypeXclassUrefwarnr U reftargetrXcircuits.core.events.EventU refdomainXpyrh%]h$]U refexplicith"]h#]h(]UrefdocrXapi/circuits.protocols.linerUpy:classrhU py:modulerXcircuits.protocols.lineruh*Nh]rcdocutils.nodes literal r)r}r(hj h }r(h"]h#]r(UxrefrjXpy-classreh$]h%]h(]uhjh]rh4Xcircuits.core.events.Eventrr}r (hUhjubahUliteralr!ubaubeubhA)r"}r#(hX line Eventr$hhhXa/home/prologic/work/circuits/circuits/protocols/line.py:docstring of circuits.protocols.line.liner%hhFh }r&(h"]h#]h$]h%]h(]uh*Kh+hh]r'h4X line Eventr(r)}r*(hj$hj"ubaubhA)r+}r,(hXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r-hhhj%hhFh }r.(h"]h#]h$]h%]h(]uh*Kh+hh]r/h4XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r0r1}r2(hj-hj+ubaubhA)r3}r4(hXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.r5hhhj%hhFh }r6(h"]h#]h$]h%]h(]uh*Kh+hh]r7h4XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.r8r9}r:(hj5hj3ubaubhA)r;}r<(hX_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.hhhj%hhFh }r=(h"]h#]h$]h%]h(]uh*K h+hh]r>(h4XEvery event has a r?r@}rA(hXEvery event has a hj;ubj)rB}rC(hX :attr:`name`rDhj;hNhj h }rE(UreftypeXattrj jXnameU refdomainXpyrFh%]h$]U refexplicith"]h#]h(]jjjhjjuh*Nh]rGj)rH}rI(hjDh }rJ(h"]h#]rK(jjFXpy-attrrLeh$]h%]h(]uhjBh]rMh4XnamerNrO}rP(hUhjHubahj!ubaubh4XA attribute that is used for matching the event with the handlers.rQrR}rS(hXA attribute that is used for matching the event with the handlers.hj;ubeubcdocutils.nodes field_list rT)rU}rV(hUhhhNhU field_listrWh }rX(h"]h#]h$]h%]h(]uh*Nh+hh]rYcdocutils.nodes field rZ)r[}r\(hUh }r](h"]h#]h$]h%]h(]uhjUh]r^(cdocutils.nodes field_name r_)r`}ra(hUh }rb(h"]h#]h$]h%]h(]uhj[h]rch4X Variablesrdre}rf(hUhj`ubahU field_namergubcdocutils.nodes field_body rh)ri}rj(hUh }rk(h"]h#]h$]h%]h(]uhj[h]rlcdocutils.nodes bullet_list rm)rn}ro(hUh }rp(h"]h#]h$]h%]h(]uhjih]rq(cdocutils.nodes list_item rr)rs}rt(hUh }ru(h"]h#]h$]h%]h(]uhjnh]rvhA)rw}rx(hUh }ry(h"]h#]h$]h%]h(]uhjsh]rz(j)r{}r|(hUh }r}(UreftypeUobjr~U reftargetXchannelsrU refdomainhh%]h$]U refexplicith"]h#]h(]uhjwh]rcdocutils.nodes strong r)r}r(hjh }r(h"]h#]h$]h%]h(]uhj{h]rh4Xchannelsrr}r(hUhjubahUstrongrubahj ubh4X -- rr}r(hUhjwubhA)r}r(hXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rhjwhj%hhFh }r(h"]h#]h$]h%]h(]uh*Kh]rh4Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rr}r(hjhjubaubhA)r}r(hXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rhjwhj%hhFh }r(h"]h#]h$]h%]h(]uh*Kh]rh4XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rr}r(hjhjubaubehhFubahU list_itemrubjr)r}r(hUh }r(h"]h#]h$]h%]h(]uhjnh]rhA)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]r(j)r}r(hUh }r(Ureftypej~U reftargetXvaluerU refdomainhh%]h$]U refexplicith"]h#]h(]uhjh]rj)r}r(hjh }r(h"]h#]h$]h%]h(]uhjh]rh4Xvaluerr}r(hUhjubahjubahj ubh4X -- rr}r(hUhjubh4X this is a rr}r(hX this is a hjubj)r}r(hX#:class:`circuits.core.values.Value`rhjhNhj h }r(UreftypeXclassj jXcircuits.core.values.ValueU refdomainXpyrh%]h$]U refexplicith"]h#]h(]jjjhjjuh*Nh]rj)r}r(hjh }r(h"]h#]r(jjXpy-classreh$]h%]h(]uhjh]rh4Xcircuits.core.values.Valuerr}r(hUhjubahj!ubaubh4XN object that holds the results returned by the handlers invoked for the event.rr}r(hXN object that holds the results returned by the handlers invoked for the event.hjubehhFubahjubjr)r}r(hUh }r(h"]h#]h$]h%]h(]uhjnh]rhA)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]r(j)r}r(hUh }r(Ureftypej~U reftargetXsuccessrU refdomainhh%]h$]U refexplicith"]h#]h(]uhjh]rj)r}r(hjh }r(h"]h#]h$]h%]h(]uhjh]rh4Xsuccessrr}r(hUhjubahjubahj ubh4X -- rr}r(hUhjubh4X%if this optional attribute is set to rr}r(hX%if this optional attribute is set to hjubj)r}r(hX``True``h }r(h"]h#]h$]h%]h(]uhjh]rh4XTruerr}r(hUhjubahj!ubh4X, an associated event rr}r(hX, an associated event hjubj)r}r(hX ``success``h }r(h"]h#]h$]h%]h(]uhjh]rh4Xsuccessrr}r(hUhjubahj!ubh4X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(hX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.hjubehhFubahjubjr)r}r(hUh }r(h"]h#]h$]h%]h(]uhjnh]rhA)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]r(j)r}r(hUh }r(Ureftypej~U reftargetXsuccess_channelsrU refdomainhh%]h$]U refexplicith"]h#]h(]uhjh]rj)r}r(hjh }r(h"]h#]h$]h%]h(]uhjh]rh4Xsuccess_channelsr r }r (hUhjubahjubahj ubh4X -- r r }r(hUhjubh4Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(hXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.hjubehhFubahjubjr)r}r(hUh }r(h"]h#]h$]h%]h(]uhjnh]rhA)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]r(j)r}r(hUh }r(Ureftypej~U reftargetXcompleterU refdomainhh%]h$]U refexplicith"]h#]h(]uhjh]rj)r}r (hjh }r!(h"]h#]h$]h%]h(]uhjh]r"h4Xcompleter#r$}r%(hUhjubahjubahj ubh4X -- r&r'}r((hUhjubh4X%if this optional attribute is set to r)r*}r+(hX%if this optional attribute is set to hjubj)r,}r-(hX``True``h }r.(h"]h#]h$]h%]h(]uhjh]r/h4XTruer0r1}r2(hUhj,ubahj!ubh4X, an associated event r3r4}r5(hX, an associated event hjubj)r6}r7(hX ``complete``h }r8(h"]h#]h$]h%]h(]uhjh]r9h4Xcompleter:r;}r<(hUhj6ubahj!ubh4X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.r=r>}r?(hX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.hjubehhFubahjubjr)r@}rA(hUh }rB(h"]h#]h$]h%]h(]uhjnh]rChA)rD}rE(hUh }rF(h"]h#]h$]h%]h(]uhj@h]rG(j)rH}rI(hUh }rJ(Ureftypej~U reftargetXcomplete_channelsrKU refdomainhh%]h$]U refexplicith"]h#]h(]uhjDh]rLj)rM}rN(hjKh }rO(h"]h#]h$]h%]h(]uhjHh]rPh4Xcomplete_channelsrQrR}rS(hUhjMubahjubahj ubh4X -- rTrU}rV(hUhjDubh4Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rWrX}rY(hXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.hjDubehhFubahjubehU bullet_listrZubahU field_bodyr[ubehUfieldr\ubaubh8)r]}r^(hUhhhNhhrihhqh }rj(h%]rkhahthuXcircuits.protocols.linerlrm}rnbh$]h"]h#]h(]rohahzX line.nameh|hh}uh*Nh+hh]rp(h)rq}rr(hXnamehjghjihhh }rs(h"]h#]h$]h%]h(]uh*Nh+hh]rth4Xnamerurv}rw(hUhjqubaubh)rx}ry(hX = 'line'hjghjihhh }rz(h"]h#]h$]h%]h(]uh*Nh+hh]r{h4X = 'line'r|r}}r~(hUhjxubaubeubh)r}r(hUhjbhjihhh }r(h"]h#]h$]h%]h(]uh*Nh+hh]ubeubeubeubh8)r}r(hUhhhXa/home/prologic/work/circuits/circuits/protocols/line.py:docstring of circuits.protocols.line.Linerhhh4X0The second mode of operation works with circuits.net.sockets.Server components such as TCPServer, UNIXServer, etc. It's expected that two arguments exist in the Read Event, sock and data. The following two arguments can be passed to affect how unfinished data is stored and retrieved for such components:r?r@}rA(hj<hj:ubaubjT)rB}rC(hUhjhjhjWh }rD(h"]h#]h$]h%]h(]uh*Nh+hh]rEjZ)rF}rG(hUh }rH(h"]h#]h$]h%]h(]uhjBh]rI(j_)rJ}rK(hUh }rL(h"]h#]h$]h%]h(]uhjFh]rMh4X ParametersrNrO}rP(hUhjJubahjgubjh)rQ}rR(hUh }rS(h"]h#]h$]h%]h(]uhjFh]rThA)rU}rV(hUh }rW(h"]h#]h$]h%]h(]uhjQh]rX(j)rY}rZ(hX getBufferh }r[(h"]h#]h$]h%]h(]uhjUh]r\h4X getBufferr]r^}r_(hUhjYubahjubh4X (r`ra}rb(hUhjUubj)rc}rd(hUh }re(Ureftypej~U reftargetXfunctionrfU refdomainjh%]h$]U refexplicith"]h#]h(]uhjUh]rgj )rh}ri(hjfh }rj(h"]h#]h$]h%]h(]uhjch]rkh4Xfunctionrlrm}rn(hUhjhubahj(ubahj ubh4X)ro}rp(hUhjUubh4X -- rqrr}rs(hUhjUubh4X1function to retrieve the buffer for a client sockrtru}rv(hX1function to retrieve the buffer for a client sockrwhjUubehhFubahj[ubehj\ubaubhA)rx}ry(hXbThis function must accept one argument (sock,) the client socket whoose buffer is to be retrieved.rzhjhjhhFh }r{(h"]h#]h$]h%]h(]uh*K"h+hh]r|h4XbThis function must accept one argument (sock,) the client socket whoose buffer is to be retrieved.r}r~}r(hjzhjxubaubjT)r}r(hUhjhjhjWh }r(h"]h#]h$]h%]h(]uh*Nh+hh]rjZ)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]r(j_)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]rh4X Parametersrr}r(hUhjubahjgubjh)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]rhA)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]r(j)r}r(hX updateBufferh }r(h"]h#]h$]h%]h(]uhjh]rh4X updateBufferrr}r(hUhjubahjubh4X (rr}r(hUhjubj)r}r(hUh }r(Ureftypej~U reftargetXfunctionrU refdomainjh%]h$]U refexplicith"]h#]h(]uhjh]rj )r}r(hjh }r(h"]h#]h$]h%]h(]uhjh]rh4Xfunctionrr}r(hUhjubahj(ubahj ubh4X)r}r(hUhjubh4X -- rr}r(hUhjubh4X/function to update the buffer for a client sockrr}r(hX/function to update the buffer for a client sockrhjubehhFubahj[ubehj\ubaubhA)r}r(hXqThis function must accept two arguments (sock, buffer,) the client socket and the left over buffer to be updated.rhjhjhhFh }r(h"]h#]h$]h%]h(]uh*K(h+hh]rh4XqThis function must accept two arguments (sock, buffer,) the client socket and the left over buffer to be updated.rr}r(hjhjubaubcdocutils.nodes definition_list r)r}r(hUhjhjhUdefinition_listrh }r(h"]h#]h$]h%]h(]uh*Nh+hh]rcdocutils.nodes definition_list_item r)r}r(hXq@note: This Component must be used in conjunction with a Component that exposes Read events on a "read" Channel. hjhjhUdefinition_list_itemrh }r(h"]h#]h$]h%]h(]uh*K,h]r(cdocutils.nodes term r)r}r(hXG@note: This Component must be used in conjunction with a Component thatrhjhjhUtermrh }r(h"]h#]h$]h%]h(]uh*K,h]rh4XG@note: This Component must be used in conjunction with a Component thatrr}r(hjhjubaubcdocutils.nodes definition r)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]rhA)r}r(hX(exposes Read events on a "read" Channel.rhjhjhhFh }r(h"]h#]h$]h%]h(]uh*K,h]rh4X(exposes Read events on a "read" Channel.rr}r(hjhjubaubahU definitionrubeubaubhA)r}r(hX4initializes x; see x.__class__.__doc__ for signaturerhjhjhhFh }r(h"]h#]h$]h%]h(]uh*K.h+hh]rh4X4initializes x; see x.__class__.__doc__ for signaturerr}r(hjhjubaubeubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh+hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/r U tracebackr Upep_referencesr NUstrip_commentsr NU toc_backlinksr UentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh1NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_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_referencesr,NUoutput_encodingr-Uutf-8r.U source_urlr/NUinput_encodingr0U utf-8-sigr1U_disable_configr2NU id_prefixr3UU tab_widthr4KUerror_encodingr5UUTF-8r6U_sourcer7hUgettext_compactr8U generatorr9NUdump_internalsr:NU smart_quotesr;U pep_base_urlr<Uhttp://www.python.org/dev/peps/r=Usyntax_highlightr>Ulongr?Uinput_encoding_error_handlerr@jUauto_id_prefixrAUidrBUdoctitle_xformrCUstrip_elements_with_classesrDNU _config_filesrE]Ufile_insertion_enabledrFU raw_enabledrGKU dump_settingsrHNubUsymbol_footnote_startrIKUidsrJ}rK(h'cdocutils.nodes target rL)rM}rN(hUhhhh;hUtargetrOh }rP(h"]h%]rQh'ah$]Uismodh#]h(]uh*Kh+hh]ubhjghhh hhhnhjuUsubstitution_namesrR}rShh+h }rT(h"]h%]h$]Usourcehh#]h(]uU footnotesrU]rVUrefidsrW}rXub.circuits-3.1.0/docs/build/doctrees/api/circuits.node.utils.doctree0000644000014400001440000001666312425011104026222 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.node.utils.load_eventqXcircuits.node.utils.dump_valueqXcircuits.node.utils.dump_eventqXcircuits.node.utils moduleq NXcircuits.node.utils.load_valueq uUsubstitution_defsq }q Uparse_messagesq ]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh Ucircuits-node-utils-moduleqh h uUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXD/home/prologic/work/circuits/docs/source/api/circuits.node.utils.rstqUtagnameqUsectionqU attributesq }q!(Udupnamesq"]Uclassesq#]Ubackrefsq$]Uidsq%]q&(Xmodule-circuits.node.utilsq'heUnamesq(]q)h auUlineq*KUdocumentq+hh]q,(cdocutils.nodes title q-)q.}q/(hXcircuits.node.utils moduleq0hhhhhUtitleq1h }q2(h"]h#]h$]h%]h(]uh*Kh+hh]q3cdocutils.nodes Text q4Xcircuits.node.utils moduleq5q6}q7(hh0hh.ubaubcsphinx.addnodes index q8)q9}q:(hUhhhU q;hUindexq(Usingleq?Xcircuits.node.utils (module)Xmodule-circuits.node.utilsUtq@auh*Kh+hh]ubcdocutils.nodes paragraph qA)qB}qC(hXUtilsqDhhhXT/home/prologic/work/circuits/circuits/node/utils.py:docstring of circuits.node.utilsqEhU paragraphqFh }qG(h"]h#]h$]h%]h(]uh*Kh+hh]qHh4XUtilsqIqJ}qK(hhDhhBubaubhA)qL}qM(hX...qNhhhhEhhFh }qO(h"]h#]h$]h%]h(]uh*Kh+hh]qPh4X...qQqR}qS(hhNhhLubaubh8)qT}qU(hUhhhNhhqghUdesc_signatureqhh }qi(h%]qjhaUmoduleqkcdocutils.nodes reprunicode qlXcircuits.node.utilsqmqn}qobh$]h"]h#]h(]qphaUfullnameqqX load_eventqrUclassqsUUfirstqtuh*Nh+hh]qu(csphinx.addnodes desc_addname qv)qw}qx(hXcircuits.node.utils.hhehhghU desc_addnameqyh }qz(h"]h#]h$]h%]h(]uh*Nh+hh]q{h4Xcircuits.node.utils.q|q}}q~(hUhhwubaubcsphinx.addnodes desc_name q)q}q(hhrhhehhghU desc_nameqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qh4X load_eventqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhehhghUdesc_parameterlistqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qcsphinx.addnodes desc_parameter q)q}q(hXsh }q(h"]h#]h$]h%]h(]uhhh]qh4Xsq}q(hUhhubahUdesc_parameterqubaubeubcsphinx.addnodes desc_content q)q}q(hUhhZhhghU desc_contentqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]ubeubh8)q}q(hUhhhNhh]r?Ureporterr@NUid_startrAKU autofootnotesrB]rCU citation_refsrD}rEUindirect_targetsrF]rGUsettingsrH(cdocutils.frontend Values rIorJ}rK(Ufootnote_backlinksrLKUrecord_dependenciesrMNU rfc_base_urlrNUhttp://tools.ietf.org/html/rOU tracebackrPUpep_referencesrQNUstrip_commentsrRNU toc_backlinksrSUentryrTU language_coderUUenrVU datestamprWNU report_levelrXKU _destinationrYNU halt_levelrZKU strip_classesr[Nh1NUerror_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}hUgettext_compactr~U generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjaUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(h j hhhhh'cdocutils.nodes target r)r}r(hUhhhh;hUtargetrh }r(h"]h%]rh'ah$]Uismodh#]h(]uh*Kh+hh]ubhhehhuUsubstitution_namesr}rhh+h }r(h"]h%]h$]Usourcehh#]h(]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.core.handlers.doctree0000644000014400001440000005545512425011102026665 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X'circuits.core.handlers.HandlerMetaClassqXcircuits.core.handlers moduleqNXcircuits.core.handlers.UnknownqXcircuits.core.handlers.handlerq X"circuits.core.handlers.reprhandlerq uUsubstitution_defsq }q Uparse_messagesq ]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhUcircuits-core-handlers-moduleqhhh h h h uUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXG/home/prologic/work/circuits/docs/source/api/circuits.core.handlers.rstqUtagnameqUsectionqU attributesq }q!(Udupnamesq"]Uclassesq#]Ubackrefsq$]Uidsq%]q&(Xmodule-circuits.core.handlersq'heUnamesq(]q)hauUlineq*KUdocumentq+hh]q,(cdocutils.nodes title q-)q.}q/(hXcircuits.core.handlers moduleq0hhhhhUtitleq1h }q2(h"]h#]h$]h%]h(]uh*Kh+hh]q3cdocutils.nodes Text q4Xcircuits.core.handlers moduleq5q6}q7(hh0hh.ubaubcsphinx.addnodes index q8)q9}q:(hUhhhU q;hUindexq(Usingleq?Xcircuits.core.handlers (module)Xmodule-circuits.core.handlersUtq@auh*Kh+hh]ubcdocutils.nodes paragraph qA)qB}qC(hXLThis module define the @handler decorator/function and the HandlesType type.qDhhhXZ/home/prologic/work/circuits/circuits/core/handlers.py:docstring of circuits.core.handlersqEhU paragraphqFh }qG(h"]h#]h$]h%]h(]uh*Kh+hh]qHh4XLThis module define the @handler decorator/function and the HandlesType type.qIqJ}qK(hhDhhBubaubh8)qL}qM(hUhhhXb/home/prologic/work/circuits/circuits/core/handlers.py:docstring of circuits.core.handlers.handlerqNhhq`hUdesc_signatureqah }qb(h%]qch aUmoduleqdcdocutils.nodes reprunicode qeXcircuits.core.handlersqfqg}qhbh$]h"]h#]h(]qih aUfullnameqjXhandlerqkUclassqlUUfirstqmuh*Nh+hh]qn(csphinx.addnodes desc_addname qo)qp}qq(hXcircuits.core.handlers.hh^hh`hU desc_addnameqrh }qs(h"]h#]h$]h%]h(]uh*Nh+hh]qth4Xcircuits.core.handlers.quqv}qw(hUhhpubaubcsphinx.addnodes desc_name qx)qy}qz(hhkhh^hh`hU desc_nameq{h }q|(h"]h#]h$]h%]h(]uh*Nh+hh]q}h4Xhandlerq~q}q(hUhhyubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhh^hh`hUdesc_parameterlistqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]q(csphinx.addnodes desc_parameter q)q}q(hX*namesh }q(h"]h#]h$]h%]h(]uhhh]qh4X*namesqq}q(hUhhubahUdesc_parameterqubh)q}q(hX**kwargsh }q(h"]h#]h$]h%]h(]uhhh]qh4X**kwargsqq}q(hUhhubahhubeubeubcsphinx.addnodes desc_content q)q}q(hUhhShh`hU desc_contentqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]q(hA)q}q(hXCreates an Event HandlerqhhhhNhhFh }q(h"]h#]h$]h%]h(]uh*Kh+hh]qh4XCreates an Event Handlerqq}q(hhhhubaubhA)q}q(hXThis decorator can be applied to methods of classes derived from :class:`circuits.core.components.BaseComponent`. It marks the method as a handler for the events passed as arguments to the ``@handler`` decorator. The events are specified by their name.hhhhNhhFh }q(h"]h#]h$]h%]h(]uh*Kh+hh]q(h4XAThis decorator can be applied to methods of classes derived from qq}q(hXAThis decorator can be applied to methods of classes derived from hhubcsphinx.addnodes pending_xref q)q}q(hX/:class:`circuits.core.components.BaseComponent`qhhhNhU pending_xrefqh }q(UreftypeXclassUrefwarnqU reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqh%]h$]U refexplicith"]h#]h(]UrefdocqXapi/circuits.core.handlersqUpy:classqNU py:moduleqXcircuits.core.handlersquh*Nh]qcdocutils.nodes literal q)q}q(hhh }q(h"]h#]q(UxrefqhXpy-classqeh$]h%]h(]uhhh]qh4X&circuits.core.components.BaseComponentqÅq}q(hUhhubahUliteralqubaubh4XM. It marks the method as a handler for the events passed as arguments to the qDžq}q(hXM. It marks the method as a handler for the events passed as arguments to the hhubh)q}q(hX ``@handler``h }q(h"]h#]h$]h%]h(]uhhh]qh4X@handlerq΅q}q(hUhhubahhubh4X3 decorator. The events are specified by their name.qхq}q(hX3 decorator. The events are specified by their name.hhubeubhA)q}q(hXThe decorated method's arguments must match the arguments passed to the :class:`circuits.core.events.Event` on creation. Optionally, the method may have an additional first argument named *event*. If declared, the event object that caused the handler to be invoked is assigned to it.hhhhNhhFh }q(h"]h#]h$]h%]h(]uh*Kh+hh]q(h4XHThe decorated method's arguments must match the arguments passed to the q؅q}q(hXHThe decorated method's arguments must match the arguments passed to the hhubh)q}q(hX#:class:`circuits.core.events.Event`qhhhNhhh }q(UreftypeXclasshhXcircuits.core.events.EventU refdomainXpyqh%]h$]U refexplicith"]h#]h(]hhhNhhuh*Nh]qh)q}q(hhh }q(h"]h#]q(hhXpy-classqeh$]h%]h(]uhhh]qh4Xcircuits.core.events.Eventq煁q}q(hUhhubahhubaubh4XQ on creation. Optionally, the method may have an additional first argument named qꅁq}q(hXQ on creation. Optionally, the method may have an additional first argument named hhubcdocutils.nodes emphasis q)q}q(hX*event*h }q(h"]h#]h$]h%]h(]uhhh]qh4Xeventqq}q(hUhhubahUemphasisqubh4XX. If declared, the event object that caused the handler to be invoked is assigned to it.qq}q(hXX. If declared, the event object that caused the handler to be invoked is assigned to it.hhubeubhA)q}q(hX.By default, the handler is invoked by the component's root :class:`~.manager.Manager` for events that are propagated on the channel determined by the BaseComponent's *channel* attribute. This may be overridden by specifying a different channel as a keyword parameter of the decorator (``channel=...``).hhhhNhhFh }q(h"]h#]h$]h%]h(]uh*K h+hh]q(h4X;By default, the handler is invoked by the component's root qq}q(hX;By default, the handler is invoked by the component's root hhubh)r}r(hX:class:`~.manager.Manager`rhhhNhhh }r(UreftypeXclassU refspecificrhhXmanager.ManagerU refdomainXpyrh%]h$]U refexplicith"]h#]h(]hhhNhhuh*Nh]rh)r}r(hjh }r (h"]h#]r (hjXpy-classr eh$]h%]h(]uhjh]r h4XManagerr r}r(hUhjubahhubaubh4XQ for events that are propagated on the channel determined by the BaseComponent's rr}r(hXQ for events that are propagated on the channel determined by the BaseComponent's hhubh)r}r(hX *channel*h }r(h"]h#]h$]h%]h(]uhhh]rh4Xchannelrr}r(hUhjubahhubh4Xn attribute. This may be overridden by specifying a different channel as a keyword parameter of the decorator (rr}r(hXn attribute. This may be overridden by specifying a different channel as a keyword parameter of the decorator (hhubh)r}r(hX``channel=...``h }r(h"]h#]h$]h%]h(]uhhh]r h4X channel=...r!r"}r#(hUhjubahhubh4X).r$r%}r&(hX).hhubeubhA)r'}r((hXKeyword argument ``priority`` influences the order in which handlers for a specific event are invoked. The higher the priority, the earlier the handler is executed.hhhhNhhFh }r)(h"]h#]h$]h%]h(]uh*Kh+hh]r*(h4XKeyword argument r+r,}r-(hXKeyword argument hj'ubh)r.}r/(hX ``priority``h }r0(h"]h#]h$]h%]h(]uhj'h]r1h4Xpriorityr2r3}r4(hUhj.ubahhubh4X influences the order in which handlers for a specific event are invoked. The higher the priority, the earlier the handler is executed.r5r6}r7(hX influences the order in which handlers for a specific event are invoked. The higher the priority, the earlier the handler is executed.hj'ubeubhA)r8}r9(hXIf you want to override a handler defined in a base class of your component, you must specify ``override=True``, else your method becomes an additional handler for the event.hhhhNhhFh }r:(h"]h#]h$]h%]h(]uh*Kh+hh]r;(h4X^If you want to override a handler defined in a base class of your component, you must specify r<r=}r>(hX^If you want to override a handler defined in a base class of your component, you must specify hj8ubh)r?}r@(hX``override=True``h }rA(h"]h#]h$]h%]h(]uhj8h]rBh4X override=TruerCrD}rE(hUhj?ubahhubh4X?, else your method becomes an additional handler for the event.rFrG}rH(hX?, else your method becomes an additional handler for the event.hj8ubeubhA)rI}rJ(hX**Return value**rKhhhhNhhFh }rL(h"]h#]h$]h%]h(]uh*Kh+hh]rMcdocutils.nodes strong rN)rO}rP(hjKh }rQ(h"]h#]h$]h%]h(]uhjIh]rRh4X Return valuerSrT}rU(hUhjOubahUstrongrVubaubhA)rW}rX(hXNormally, the results returned by the handlers for an event are simply collected in the :class:`circuits.core.events.Event`'s :attr:`value` attribute. As a special case, a handler may return a :class:`types.GeneratorType`. This signals to the dispatcher that the handler isn't ready to deliver a result yet. Rather, it has interrupted it's execution with a ``yield None`` statement, thus preserving its current execution state.hhhhNhhFh }rY(h"]h#]h$]h%]h(]uh*Kh+hh]rZ(h4XXNormally, the results returned by the handlers for an event are simply collected in the r[r\}r](hXXNormally, the results returned by the handlers for an event are simply collected in the hjWubh)r^}r_(hX#:class:`circuits.core.events.Event`r`hjWhNhhh }ra(UreftypeXclasshhXcircuits.core.events.EventU refdomainXpyrbh%]h$]U refexplicith"]h#]h(]hhhNhhuh*Nh]rch)rd}re(hj`h }rf(h"]h#]rg(hjbXpy-classrheh$]h%]h(]uhj^h]rih4Xcircuits.core.events.Eventrjrk}rl(hUhjdubahhubaubh4X's rmrn}ro(hX's hjWubh)rp}rq(hX :attr:`value`rrhjWhNhhh }rs(UreftypeXattrhhXvalueU refdomainXpyrth%]h$]U refexplicith"]h#]h(]hhhNhhuh*Nh]ruh)rv}rw(hjrh }rx(h"]h#]ry(hjtXpy-attrrzeh$]h%]h(]uhjph]r{h4Xvaluer|r}}r~(hUhjvubahhubaubh4X6 attribute. As a special case, a handler may return a rr}r(hX6 attribute. As a special case, a handler may return a hjWubh)r}r(hX:class:`types.GeneratorType`rhjWhNhhh }r(UreftypeXclasshhXtypes.GeneratorTypeU refdomainXpyrh%]h$]U refexplicith"]h#]h(]hhhNhhuh*Nh]rh)r}r(hjh }r(h"]h#]r(hjXpy-classreh$]h%]h(]uhjh]rh4Xtypes.GeneratorTyperr}r(hUhjubahhubaubh4X. This signals to the dispatcher that the handler isn't ready to deliver a result yet. Rather, it has interrupted it's execution with a rr}r(hX. This signals to the dispatcher that the handler isn't ready to deliver a result yet. Rather, it has interrupted it's execution with a hjWubh)r}r(hX``yield None``h }r(h"]h#]h$]h%]h(]uhjWh]rh4X yield Nonerr}r(hUhjubahhubh4X8 statement, thus preserving its current execution state.rr}r(hX8 statement, thus preserving its current execution state.hjWubeubhA)r}r(hXThe dispatcher saves the returned generator object as a task. All tasks are reexamined (i.e. their :meth:`next()` method is invoked) when the pending events have been executed.hhhhNhhFh }r(h"]h#]h$]h%]h(]uh*K%h+hh]r(h4XcThe dispatcher saves the returned generator object as a task. All tasks are reexamined (i.e. their rr}r(hXcThe dispatcher saves the returned generator object as a task. All tasks are reexamined (i.e. their hjubh)r}r(hX:meth:`next()`rhjhNhhh }r(UreftypeXmethhhXnextU refdomainXpyrh%]h$]U refexplicith"]h#]h(]hhhNhhuh*Nh]rh)r}r(hjh }r(h"]h#]r(hjXpy-methreh$]h%]h(]uhjh]rh4Xnext()rr}r(hUhjubahhubaubh4X? method is invoked) when the pending events have been executed.rr}r(hX? method is invoked) when the pending events have been executed.hjubeubhA)r}r(hXThis feature avoids an unnecessarily complicated chaining of event handlers. Imagine a handler A that needs the results from firing an event E in order to complete. Then without this feature, the final action of A would be to fire event E, and another handler for an event ``SuccessE`` would be required to complete handler A's operation, now having the result from invoking E available (actually it's even a bit more complicated).hhhhNhhFh }r(h"]h#]h$]h%]h(]uh*K)h+hh]r(h4XThis feature avoids an unnecessarily complicated chaining of event handlers. Imagine a handler A that needs the results from firing an event E in order to complete. Then without this feature, the final action of A would be to fire event E, and another handler for an event rr}r(hXThis feature avoids an unnecessarily complicated chaining of event handlers. Imagine a handler A that needs the results from firing an event E in order to complete. Then without this feature, the final action of A would be to fire event E, and another handler for an event hjubh)r}r(hX ``SuccessE``h }r(h"]h#]h$]h%]h(]uhjh]rh4XSuccessErr}r(hUhjubahhubh4X would be required to complete handler A's operation, now having the result from invoking E available (actually it's even a bit more complicated).rr}r(hX would be required to complete handler A's operation, now having the result from invoking E available (actually it's even a bit more complicated).hjubeubhA)r}r(hX Using this "suspend" feature, the handler simply fires event E and then yields ``None`` until e.g. it finds a result in E's :attr:`value` attribute. For the simplest scenario, there even is a utility method :meth:`circuits.core.manager.Manager.callEvent` that combines firing and waiting.hhhhNhhFh }r(h"]h#]h$]h%]h(]uh*K1h+hh]r(h4XOUsing this "suspend" feature, the handler simply fires event E and then yields rr}r(hXOUsing this "suspend" feature, the handler simply fires event E and then yields hjubh)r}r(hX``None``h }r(h"]h#]h$]h%]h(]uhjh]rh4XNonerr}r(hUhjubahhubh4X% until e.g. it finds a result in E's rr}r(hX% until e.g. it finds a result in E's hjubh)r}r(hX :attr:`value`rhjhNhhh }r(UreftypeXattrhhXvalueU refdomainXpyrh%]h$]U refexplicith"]h#]h(]hhhNhhuh*Nh]rh)r}r(hjh }r(h"]h#]r(hjXpy-attrreh$]h%]h(]uhjh]rh4Xvaluerr}r(hUhjubahhubaubh4XF attribute. For the simplest scenario, there even is a utility method rr}r(hXF attribute. For the simplest scenario, there even is a utility method hjubh)r}r(hX/:meth:`circuits.core.manager.Manager.callEvent`rhjhNhhh }r(UreftypeXmethhhX'circuits.core.manager.Manager.callEventU refdomainXpyrh%]h$]U refexplicith"]h#]h(]hhhNhhuh*Nh]rh)r}r(hjh }r(h"]h#]r(hjXpy-methreh$]h%]h(]uhjh]rh4X)circuits.core.manager.Manager.callEvent()rr}r(hUhjubahhubaubh4X" that combines firing and waiting.rr}r(hX" that combines firing and waiting.hjubeubeubeubh8)r}r(hUhhhXb/home/prologic/work/circuits/circuits/core/handlers.py:docstring of circuits.core.handlers.Unknownrhhr/hhFh }r0(h"]h#]h$]h%]h(]uh*Kh+hh]r1(h4XBases: r2r3}r4(hXBases: hj-ubh)r5}r6(hX:class:`object`r7hj-hNhhh }r8(UreftypeXclasshhXobjectU refdomainXpyr9h%]h$]U refexplicith"]h#]h(]hhhj hhuh*Nh]r:h)r;}r<(hj7h }r=(h"]h#]r>(hj9Xpy-classr?eh$]h%]h(]uhj5h]r@h4XobjectrArB}rC(hUhj;ubahhubaubeubhA)rD}rE(hXUnknown Dummy ComponentrFhj)hjhhFh }rG(h"]h#]h$]h%]h(]uh*Kh+hh]rHh4XUnknown Dummy ComponentrIrJ}rK(hjFhjDubaubeubeubh8)rL}rM(hUhhhNhhh }r?(h"]h%]r@h'ah$]Uismodh#]h(]uh*Kh+hh]ubh jVuUsubstitution_namesrA}rBhh+h }rC(h"]h%]h$]Usourcehh#]h(]uU footnotesrD]rEUrefidsrF}rGub.circuits-3.1.0/docs/build/doctrees/api/circuits.core.components.doctree0000644000014400001440000011162312425011101027237 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X4circuits.core.components.prepare_unregister.completeqX+circuits.core.components.prepare_unregisterqX0circuits.core.components.prepare_unregister.nameqX6circuits.core.components.prepare_unregister.in_subtreeq X/circuits.core.components.BaseComponent.registerq X.circuits.core.components.BaseComponent.handlesq X1circuits.core.components.BaseComponent.unregisterq X&circuits.core.components.BaseComponentq X-circuits.core.components.BaseComponent.eventsqX.circuits.core.components.BaseComponent.channelqX/circuits.core.components.BaseComponent.handlersqXcircuits.core.components moduleqNX"circuits.core.components.ComponentqX9circuits.core.components.BaseComponent.unregister_pendingquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh h h h h h h h h h hhhhhhhUcircuits-core-components-moduleqhhhhuUchildrenq]qcdocutils.nodes section q )q!}q"(U rawsourceq#UUparentq$hUsourceq%XI/home/prologic/work/circuits/docs/source/api/circuits.core.components.rstq&Utagnameq'Usectionq(U attributesq)}q*(Udupnamesq+]Uclassesq,]Ubackrefsq-]Uidsq.]q/(Xmodule-circuits.core.componentsq0heUnamesq1]q2hauUlineq3KUdocumentq4hh]q5(cdocutils.nodes title q6)q7}q8(h#Xcircuits.core.components moduleq9h$h!h%h&h'Utitleq:h)}q;(h+]h,]h-]h.]h1]uh3Kh4hh]qq?}q@(h#h9h$h7ubaubcsphinx.addnodes index qA)qB}qC(h#Uh$h!h%U qDh'UindexqEh)}qF(h.]h-]h+]h,]h1]Uentries]qG(UsingleqHX!circuits.core.components (module)Xmodule-circuits.core.componentsUtqIauh3Kh4hh]ubcdocutils.nodes paragraph qJ)qK}qL(h#XAThis module defines the BaseComponent and its subclass Component.qMh$h!h%X^/home/prologic/work/circuits/circuits/core/components.py:docstring of circuits.core.componentsqNh'U paragraphqOh)}qP(h+]h,]h-]h.]h1]uh3Kh4hh]qQh=XAThis module defines the BaseComponent and its subclass Component.qRqS}qT(h#hMh$hKubaubhA)qU}qV(h#Uh$h!h%Nh'hEh)}qW(h.]h-]h+]h,]h1]Uentries]qX(hHX6prepare_unregister (class in circuits.core.components)hUtqYauh3Nh4hh]ubcsphinx.addnodes desc qZ)q[}q\(h#Uh$h!h%Nh'Udescq]h)}q^(Unoindexq_Udomainq`Xpyh.]h-]h+]h,]h1]UobjtypeqaXclassqbUdesctypeqchbuh3Nh4hh]qd(csphinx.addnodes desc_signature qe)qf}qg(h#X#prepare_unregister(*args, **kwargs)h$h[h%U qhh'Udesc_signatureqih)}qj(h.]qkhaUmoduleqlcdocutils.nodes reprunicode qmXcircuits.core.componentsqnqo}qpbh-]h+]h,]h1]qqhaUfullnameqrXprepare_unregisterqsUclassqtUUfirstquuh3Nh4hh]qv(csphinx.addnodes desc_annotation qw)qx}qy(h#Xclass h$hfh%hhh'Udesc_annotationqzh)}q{(h+]h,]h-]h.]h1]uh3Nh4hh]q|h=Xclass q}q~}q(h#Uh$hxubaubcsphinx.addnodes desc_addname q)q}q(h#Xcircuits.core.components.h$hfh%hhh'U desc_addnameqh)}q(h+]h,]h-]h.]h1]uh3Nh4hh]qh=Xcircuits.core.components.qq}q(h#Uh$hubaubcsphinx.addnodes desc_name q)q}q(h#hsh$hfh%hhh'U desc_nameqh)}q(h+]h,]h-]h.]h1]uh3Nh4hh]qh=Xprepare_unregisterqq}q(h#Uh$hubaubcsphinx.addnodes desc_parameterlist q)q}q(h#Uh$hfh%hhh'Udesc_parameterlistqh)}q(h+]h,]h-]h.]h1]uh3Nh4hh]q(csphinx.addnodes desc_parameter q)q}q(h#X*argsh)}q(h+]h,]h-]h.]h1]uh$hh]qh=X*argsqq}q(h#Uh$hubah'Udesc_parameterqubh)q}q(h#X**kwargsh)}q(h+]h,]h-]h.]h1]uh$hh]qh=X**kwargsqq}q(h#Uh$hubah'hubeubeubcsphinx.addnodes desc_content q)q}q(h#Uh$h[h%hhh'U desc_contentqh)}q(h+]h,]h-]h.]h1]uh3Nh4hh]q(hJ)q}q(h#X*Bases: :class:`circuits.core.events.Event`h$hh%U qh'hOh)}q(h+]h,]h-]h.]h1]uh3Kh4hh]q(h=XBases: qq}q(h#XBases: h$hubcsphinx.addnodes pending_xref q)q}q(h#X#:class:`circuits.core.events.Event`qh$hh%Nh'U pending_xrefqh)}q(UreftypeXclassUrefwarnqU reftargetqXcircuits.core.events.EventU refdomainXpyqh.]h-]U refexplicith+]h,]h1]UrefdocqXapi/circuits.core.componentsqUpy:classqhsU py:moduleqXcircuits.core.componentsquh3Nh]qcdocutils.nodes literal q)q}q(h#hh)}q(h+]h,]q(UxrefqhXpy-classqeh-]h.]h1]uh$hh]qh=Xcircuits.core.events.Eventqͅq}q(h#Uh$hubah'UliteralqubaubeubhJ)q}q(h#XThis event is fired when a component is about to be unregistered from the component tree. Unregistering a component actually detaches the complete subtree that the unregistered component is the root of. Components that need to know if they are removed from the main tree (e.g. because they maintain relationships to other components in the tree) handle this event, check if the component being unregistered is one of their ancestors and act accordingly.qh$hh%Xq/home/prologic/work/circuits/circuits/core/components.py:docstring of circuits.core.components.prepare_unregisterqh'hOh)}q(h+]h,]h-]h.]h1]uh3Kh4hh]qh=XThis event is fired when a component is about to be unregistered from the component tree. Unregistering a component actually detaches the complete subtree that the unregistered component is the root of. Components that need to know if they are removed from the main tree (e.g. because they maintain relationships to other components in the tree) handle this event, check if the component being unregistered is one of their ancestors and act accordingly.qׅq}q(h#hh$hubaubcdocutils.nodes field_list q)q}q(h#Uh$hh%Nh'U field_listqh)}q(h+]h,]h-]h.]h1]uh3Nh4hh]qcdocutils.nodes field q)q}q(h#Uh)}q(h+]h,]h-]h.]h1]uh$hh]q(cdocutils.nodes field_name q)q}q(h#Uh)}q(h+]h,]h-]h.]h1]uh$hh]qh=X Parametersqꅁq}q(h#Uh$hubah'U field_namequbcdocutils.nodes field_body q)q}q(h#Uh)}q(h+]h,]h-]h.]h1]uh$hh]qhJ)q}q(h#Uh)}q(h+]h,]h-]h.]h1]uh$hh]q(cdocutils.nodes strong q)q}q(h#X componenth)}q(h+]h,]h-]h.]h1]uh$hh]qh=X componentqq}q(h#Uh$hubah'Ustrongqubh=X -- rr}r(h#Uh$hubh=X'the component that will be unregisteredrr}r(h#X'the component that will be unregisteredrh$hubeh'hOubah'U field_bodyrubeh'UfieldrubaubhA)r }r (h#Uh$hh%Nh'hEh)}r (h.]h-]h+]h,]h1]Uentries]r (hHX@complete (circuits.core.components.prepare_unregister attribute)hUtr auh3Nh4hh]ubhZ)r}r(h#Uh$hh%Nh'h]h)}r(h_h`Xpyh.]h-]h+]h,]h1]haX attributerhcjuh3Nh4hh]r(he)r}r(h#Xprepare_unregister.completeh$jh%U rh'hih)}r(h.]rhahlhmXcircuits.core.componentsrr}rbh-]h+]h,]h1]rhahrXprepare_unregister.completehthshuuh3Nh4hh]r(h)r}r(h#Xcompleteh$jh%jh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]r h=Xcompleter!r"}r#(h#Uh$jubaubhw)r$}r%(h#X = Trueh$jh%jh'hzh)}r&(h+]h,]h-]h.]h1]uh3Nh4hh]r'h=X = Truer(r)}r*(h#Uh$j$ubaubeubh)r+}r,(h#Uh$jh%jh'hh)}r-(h+]h,]h-]h.]h1]uh3Nh4hh]ubeubhA)r.}r/(h#Uh$hh%X|/home/prologic/work/circuits/circuits/core/components.py:docstring of circuits.core.components.prepare_unregister.in_subtreer0h'hEh)}r1(h.]h-]h+]h,]h1]Uentries]r2(hHXAin_subtree() (circuits.core.components.prepare_unregister method)h Utr3auh3Nh4hh]ubhZ)r4}r5(h#Uh$hh%j0h'h]h)}r6(h_h`Xpyh.]h-]h+]h,]h1]haXmethodr7hcj7uh3Nh4hh]r8(he)r9}r:(h#X(prepare_unregister.in_subtree(component)h$j4h%hhh'hih)}r;(h.]r<h ahlhmXcircuits.core.componentsr=r>}r?bh-]h+]h,]h1]r@h ahrXprepare_unregister.in_subtreehthshuuh3Nh4hh]rA(h)rB}rC(h#X in_subtreeh$j9h%hhh'hh)}rD(h+]h,]h-]h.]h1]uh3Nh4hh]rEh=X in_subtreerFrG}rH(h#Uh$jBubaubh)rI}rJ(h#Uh$j9h%hhh'hh)}rK(h+]h,]h-]h.]h1]uh3Nh4hh]rLh)rM}rN(h#X componenth)}rO(h+]h,]h-]h.]h1]uh$jIh]rPh=X componentrQrR}rS(h#Uh$jMubah'hubaubeubh)rT}rU(h#Uh$j4h%hhh'hh)}rV(h+]h,]h-]h.]h1]uh3Nh4hh]rWhJ)rX}rY(h#XgConvenience method that checks if the given *component* is in the subtree that is about to be detached.h$jTh%j0h'hOh)}rZ(h+]h,]h-]h.]h1]uh3Kh4hh]r[(h=X,Convenience method that checks if the given r\r]}r^(h#X,Convenience method that checks if the given h$jXubcdocutils.nodes emphasis r_)r`}ra(h#X *component*h)}rb(h+]h,]h-]h.]h1]uh$jXh]rch=X componentrdre}rf(h#Uh$j`ubah'Uemphasisrgubh=X0 is in the subtree that is about to be detached.rhri}rj(h#X0 is in the subtree that is about to be detached.h$jXubeubaubeubhA)rk}rl(h#Uh$hh%Nh'hEh)}rm(h.]h-]h+]h,]h1]Uentries]rn(hHX<name (circuits.core.components.prepare_unregister attribute)hUtroauh3Nh4hh]ubhZ)rp}rq(h#Uh$hh%Nh'h]h)}rr(h_h`Xpyh.]h-]h+]h,]h1]haX attributershcjsuh3Nh4hh]rt(he)ru}rv(h#Xprepare_unregister.nameh$jph%jh'hih)}rw(h.]rxhahlhmXcircuits.core.componentsryrz}r{bh-]h+]h,]h1]r|hahrXprepare_unregister.namehthshuuh3Nh4hh]r}(h)r~}r(h#Xnameh$juh%jh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=Xnamerr}r(h#Uh$j~ubaubhw)r}r(h#X = 'prepare_unregister'h$juh%jh'hzh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=X = 'prepare_unregister'rr}r(h#Uh$jubaubeubh)r}r(h#Uh$jph%jh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]ubeubeubeubhA)r}r(h#Uh$h!h%Nh'hEh)}r(h.]h-]h+]h,]h1]Uentries]r(hHX1BaseComponent (class in circuits.core.components)h Utrauh3Nh4hh]ubhZ)r}r(h#Uh$h!h%Nh'h]h)}r(h_h`Xpyrh.]h-]h+]h,]h1]haXclassrhcjuh3Nh4hh]r(he)r}r(h#XBaseComponent(*args, **kwargs)h$jh%hhh'hih)}r(h.]rh ahlhmXcircuits.core.componentsrr}rbh-]h+]h,]h1]rh ahrX BaseComponentrhtUhuuh3Nh4hh]r(hw)r}r(h#Xclass h$jh%hhh'hzh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=Xclass rr}r(h#Uh$jubaubh)r}r(h#Xcircuits.core.components.h$jh%hhh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=Xcircuits.core.components.rr}r(h#Uh$jubaubh)r}r(h#jh$jh%hhh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=X BaseComponentrr}r(h#Uh$jubaubh)r}r(h#Uh$jh%hhh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]r(h)r}r(h#X*argsh)}r(h+]h,]h-]h.]h1]uh$jh]rh=X*argsrr}r(h#Uh$jubah'hubh)r}r(h#X**kwargsh)}r(h+]h,]h-]h.]h1]uh$jh]rh=X**kwargsrr}r(h#Uh$jubah'hubeubeubh)r}r(h#Uh$jh%hhh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]r(hJ)r}r(h#X-Bases: :class:`circuits.core.manager.Manager`rh$jh%hh'hOh)}r(h+]h,]h-]h.]h1]uh3Kh4hh]r(h=XBases: rr}r(h#XBases: h$jubh)r}r(h#X&:class:`circuits.core.manager.Manager`rh$jh%Nh'hh)}r(UreftypeXclasshhXcircuits.core.manager.ManagerU refdomainXpyrh.]h-]U refexplicith+]h,]h1]hhhjhhuh3Nh]rh)r}r(h#jh)}r(h+]h,]r(hjXpy-classreh-]h.]h1]uh$jh]rh=Xcircuits.core.manager.Managerrr}r(h#Uh$jubah'hubaubeubhJ)r}r(h#XThis is the base class for all components in a circuits based application. Components can (and should, except for root components) be registered with a parent component.rh$jh%Xl/home/prologic/work/circuits/circuits/core/components.py:docstring of circuits.core.components.BaseComponentrh'hOh)}r(h+]h,]h-]h.]h1]uh3Kh4hh]rh=XThis is the base class for all components in a circuits based application. Components can (and should, except for root components) be registered with a parent component.rr}r(h#jh$jubaubhJ)r}r(h#XBaseComponents can declare methods as event handlers using the handler decoration (see :func:`circuits.core.handlers.handler`). The handlers are invoked for matching events from the component's channel (specified as the component's ``channel`` attribute).h$jh%jh'hOh)}r(h+]h,]h-]h.]h1]uh3Kh4hh]r(h=XWBaseComponents can declare methods as event handlers using the handler decoration (see rr}r(h#XWBaseComponents can declare methods as event handlers using the handler decoration (see h$jubh)r}r(h#X&:func:`circuits.core.handlers.handler`rh$jh%Nh'hh)}r(UreftypeXfunchhXcircuits.core.handlers.handlerU refdomainXpyrh.]h-]U refexplicith+]h,]h1]hhhjhhuh3Nh]rh)r}r(h#jh)}r(h+]h,]r(hjXpy-funcreh-]h.]h1]uh$jh]rh=X circuits.core.handlers.handler()rr}r(h#Uh$jubah'hubaubh=Xk). The handlers are invoked for matching events from the component's channel (specified as the component's rr}r(h#Xk). The handlers are invoked for matching events from the component's channel (specified as the component's h$jubh)r}r (h#X ``channel``h)}r (h+]h,]h-]h.]h1]uh$jh]r h=Xchannelr r }r(h#Uh$jubah'hubh=X attribute).rr}r(h#X attribute).h$jubeubhJ)r}r(h#XBaseComponents inherit from :class:`circuits.core.manager.Manager`. This provides components with the :func:`circuits.core.manager.Manager.fireEvent` method that can be used to fire events as the result of some computation.h$jh%jh'hOh)}r(h+]h,]h-]h.]h1]uh3K h4hh]r(h=XBaseComponents inherit from rr}r(h#XBaseComponents inherit from h$jubh)r}r(h#X&:class:`circuits.core.manager.Manager`rh$jh%Nh'hh)}r(UreftypeXclasshhXcircuits.core.manager.ManagerU refdomainXpyrh.]h-]U refexplicith+]h,]h1]hhhjhhuh3Nh]rh)r}r (h#jh)}r!(h+]h,]r"(hjXpy-classr#eh-]h.]h1]uh$jh]r$h=Xcircuits.core.manager.Managerr%r&}r'(h#Uh$jubah'hubaubh=X$. This provides components with the r(r)}r*(h#X$. This provides components with the h$jubh)r+}r,(h#X/:func:`circuits.core.manager.Manager.fireEvent`r-h$jh%Nh'hh)}r.(UreftypeXfunchhX'circuits.core.manager.Manager.fireEventU refdomainXpyr/h.]h-]U refexplicith+]h,]h1]hhhjhhuh3Nh]r0h)r1}r2(h#j-h)}r3(h+]h,]r4(hj/Xpy-funcr5eh-]h.]h1]uh$j+h]r6h=X)circuits.core.manager.Manager.fireEvent()r7r8}r9(h#Uh$j1ubah'hubaubh=XJ method that can be used to fire events as the result of some computation.r:r;}r<(h#XJ method that can be used to fire events as the result of some computation.h$jubeubhJ)r=}r>(h#XsApart from the ``fireEvent()`` method, the Manager nature is important for root components that are started or run.h$jh%jh'hOh)}r?(h+]h,]h-]h.]h1]uh3Kh4hh]r@(h=XApart from the rArB}rC(h#XApart from the h$j=ubh)rD}rE(h#X``fireEvent()``h)}rF(h+]h,]h-]h.]h1]uh$j=h]rGh=X fireEvent()rHrI}rJ(h#Uh$jDubah'hubh=XU method, the Manager nature is important for root components that are started or run.rKrL}rM(h#XU method, the Manager nature is important for root components that are started or run.h$j=ubeubh)rN}rO(h#Uh$jh%Nh'hh)}rP(h+]h,]h-]h.]h1]uh3Nh4hh]rQh)rR}rS(h#Uh)}rT(h+]h,]h-]h.]h1]uh$jNh]rU(h)rV}rW(h#Uh)}rX(h+]h,]h-]h.]h1]uh$jRh]rYh=X VariablesrZr[}r\(h#Uh$jVubah'hubh)r]}r^(h#Uh)}r_(h+]h,]h-]h.]h1]uh$jRh]r`hJ)ra}rb(h#Uh)}rc(h+]h,]h-]h.]h1]uh$j]h]rd(h)re}rf(h#Uh)}rg(UreftypeUobjrhU reftargetXchannelriU refdomainjh.]h-]U refexplicith+]h,]h1]uh$jah]rjh)rk}rl(h#jih)}rm(h+]h,]h-]h.]h1]uh$jeh]rnh=Xchannelrorp}rq(h#Uh$jkubah'hubah'hubh=X -- rrrs}rt(h#Uh$jaubh=Xa component can be associated with a specific channel by setting this attribute. This should either be done by specifying a class attribute rurv}rw(h#Xa component can be associated with a specific channel by setting this attribute. This should either be done by specifying a class attribute h$jaubj_)rx}ry(h#X *channel*h)}rz(h+]h,]h-]h.]h1]uh$jah]r{h=Xchannelr|r}}r~(h#Uh$jxubah'jgubh=X8 in the derived class or by passing a keyword parameter rr}r(h#X8 in the derived class or by passing a keyword parameter h$jaubj_)r}r(h#X*channel="..."*h)}r(h+]h,]h-]h.]h1]uh$jah]rh=X channel="..."rr}r(h#Uh$jubah'jgubh=X to rr}r(h#X to h$jaubj_)r}r(h#X *__init__*h)}r(h+]h,]h-]h.]h1]uh$jah]rh=X__init__rr}r(h#Uh$jubah'jgubh=X. If specified, the component's handlers receive events on the specified channel only, and events fired by the component will be sent on the specified channel (this behavior may be overridden, see rr}r(h#X. If specified, the component's handlers receive events on the specified channel only, and events fired by the component will be sent on the specified channel (this behavior may be overridden, see h$jaubh)r}r(h#X$:class:`~circuits.core.events.Event`rh$jah%Nh'hh)}r(UreftypeXclasshhXcircuits.core.events.EventU refdomainXpyrh.]h-]U refexplicith+]h,]h1]hhhjhhuh3Nh]rh)r}r(h#jh)}r(h+]h,]r(hjXpy-classreh-]h.]h1]uh$jh]rh=XEventrr}r(h#Uh$jubah'hubaubh=X, rr}r(h#X, h$jaubh)r}r(h#X:meth:`~.fireEvent`rh$jah%Nh'hh)}r(UreftypeXmethU refspecificrhhX fireEventU refdomainXpyrh.]h-]U refexplicith+]h,]h1]hhhjhhuh3Nh]rh)r}r(h#jh)}r(h+]h,]r(hjXpy-methreh-]h.]h1]uh$jh]rh=X fireEvent()rr}r(h#Uh$jubah'hubaubh=X and rr}r(h#X and h$jaubh)r}r(h#X':func:`~circuits.core.handlers.handler`rh$jah%Nh'hh)}r(UreftypeXfunchhXcircuits.core.handlers.handlerU refdomainXpyrh.]h-]U refexplicith+]h,]h1]hhhjhhuh3Nh]rh)r}r(h#jh)}r(h+]h,]r(hjXpy-funcreh-]h.]h1]uh$jh]rh=X handler()rr}r(h#Uh$jubah'hubaubh=X). By default, the channel attribute is set to "*", meaning that events are fired on all channels and received from all channels.rr}r(h#X). By default, the channel attribute is set to "*", meaning that events are fired on all channels and received from all channels.h$jaubeh'hOubah'jubeh'jubaubhJ)r}r(h#X4initializes x; see x.__class__.__doc__ for signaturerh$jh%jh'hOh)}r(h+]h,]h-]h.]h1]uh3Kh4hh]rh=X4initializes x; see x.__class__.__doc__ for signaturerr}r(h#jh$jubaubhA)r}r(h#Uh$jh%Nh'hEh)}r(h.]h-]h+]h,]h1]Uentries]r(hHX:channel (circuits.core.components.BaseComponent attribute)hUtrauh3Nh4hh]ubhZ)r}r(h#Uh$jh%Nh'h]h)}r(h_h`Xpyh.]h-]h+]h,]h1]haX attributerhcjuh3Nh4hh]r(he)r}r(h#XBaseComponent.channelh$jh%jh'hih)}r(h.]rhahlhmXcircuits.core.componentsrr}rbh-]h+]h,]h1]rhahrXBaseComponent.channelhtjhuuh3Nh4hh]r(h)r}r(h#Xchannelh$jh%jh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=Xchannelrr}r(h#Uh$jubaubhw)r}r(h#X = '*'h$jh%jh'hzh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=X = '*'rr}r(h#Uh$jubaubeubh)r}r(h#Uh$jh%jh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]ubeubhA)r}r(h#Uh$jh%Xu/home/prologic/work/circuits/circuits/core/components.py:docstring of circuits.core.components.BaseComponent.registerrh'hEh)}r(h.]h-]h+]h,]h1]Uentries]r(hHX:register() (circuits.core.components.BaseComponent method)h Utrauh3Nh4hh]ubhZ)r}r(h#Uh$jh%jh'h]h)}r(h_h`Xpyh.]h-]h+]h,]h1]haXmethodrhcjuh3Nh4hh]r(he)r}r(h#XBaseComponent.register(parent)rh$jh%hhh'hih)}r(h.]rh ahlhmXcircuits.core.componentsr r }r bh-]h+]h,]h1]r h ahrXBaseComponent.registerhtjhuuh3Nh4hh]r (h)r}r(h#Xregisterh$jh%hhh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=Xregisterrr}r(h#Uh$jubaubh)r}r(h#Uh$jh%hhh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh)r}r(h#Xparenth)}r(h+]h,]h-]h.]h1]uh$jh]rh=Xparentrr}r(h#Uh$jubah'hubaubeubh)r }r!(h#Uh$jh%hhh'hh)}r"(h+]h,]h-]h.]h1]uh3Nh4hh]r#(hJ)r$}r%(h#XSInserts this component in the component tree as a child of the given *parent* node.h$j h%jh'hOh)}r&(h+]h,]h-]h.]h1]uh3Kh4hh]r'(h=XEInserts this component in the component tree as a child of the given r(r)}r*(h#XEInserts this component in the component tree as a child of the given h$j$ubj_)r+}r,(h#X*parent*h)}r-(h+]h,]h-]h.]h1]uh$j$h]r.h=Xparentr/r0}r1(h#Uh$j+ubah'jgubh=X node.r2r3}r4(h#X node.h$j$ubeubh)r5}r6(h#Uh$j h%jh'hh)}r7(h+]h,]h-]h.]h1]uh3Nh4hh]r8h)r9}r:(h#Uh)}r;(h+]h,]h-]h.]h1]uh$j5h]r<(h)r=}r>(h#Uh)}r?(h+]h,]h-]h.]h1]uh$j9h]r@h=X ParametersrArB}rC(h#Uh$j=ubah'hubh)rD}rE(h#Uh)}rF(h+]h,]h-]h.]h1]uh$j9h]rGhJ)rH}rI(h#Uh)}rJ(h+]h,]h-]h.]h1]uh$jDh]rK(h)rL}rM(h#Xparenth)}rN(h+]h,]h-]h.]h1]uh$jHh]rOh=XparentrPrQ}rR(h#Uh$jLubah'hubh=X (rSrT}rU(h#Uh$jHubh)rV}rW(h#X:class:`~.manager.Manager`rXh$jHh%Nh'hh)}rY(UreftypeXclassjhhXmanager.ManagerU refdomainXpyrZh.]h-]U refexplicith+]h,]h1]hhhjhhuh3Nh]r[h)r\}r](h#jXh)}r^(h+]h,]r_(hjZXpy-classr`eh-]h.]h1]uh$jVh]rah=XManagerrbrc}rd(h#Uh$j\ubah'hubaubh=X)re}rf(h#Uh$jHubh=X -- rgrh}ri(h#Uh$jHubh=X6the parent component after registration has completed.rjrk}rl(h#X6the parent component after registration has completed.rmh$jHubeh'hOubah'jubeh'jubaubhJ)rn}ro(h#XsThis method fires a :class:`~.events.Registered` event to inform other components in the tree about the new member.h$j h%jh'hOh)}rp(h+]h,]h-]h.]h1]uh3Kh4hh]rq(h=XThis method fires a rrrs}rt(h#XThis method fires a h$jnubh)ru}rv(h#X:class:`~.events.Registered`rwh$jnh%Nh'hh)}rx(UreftypeXclassjhhXevents.RegisteredU refdomainXpyryh.]h-]U refexplicith+]h,]h1]hhhjhhuh3Nh]rzh)r{}r|(h#jwh)}r}(h+]h,]r~(hjyXpy-classreh-]h.]h1]uh$juh]rh=X Registeredrr}r(h#Uh$j{ubah'hubaubh=XC event to inform other components in the tree about the new member.rr}r(h#XC event to inform other components in the tree about the new member.h$jnubeubeubeubhA)r}r(h#Uh$jh%Xw/home/prologic/work/circuits/circuits/core/components.py:docstring of circuits.core.components.BaseComponent.unregisterrh'hEh)}r(h.]h-]h+]h,]h1]Uentries]r(hHX<unregister() (circuits.core.components.BaseComponent method)h Utrauh3Nh4hh]ubhZ)r}r(h#Uh$jh%jh'h]h)}r(h_h`Xpyh.]h-]h+]h,]h1]haXmethodrhcjuh3Nh4hh]r(he)r}r(h#XBaseComponent.unregister()h$jh%hhh'hih)}r(h.]rh ahlhmXcircuits.core.componentsrr}rbh-]h+]h,]h1]rh ahrXBaseComponent.unregisterhtjhuuh3Nh4hh]r(h)r}r(h#X unregisterh$jh%hhh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=X unregisterrr}r(h#Uh$jubaubh)r}r(h#Uh$jh%hhh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]ubeubh)r}r(h#Uh$jh%hhh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]r(hJ)r}r(h#X/Removes this component from the component tree.rh$jh%jh'hOh)}r(h+]h,]h-]h.]h1]uh3Kh4hh]rh=X/Removes this component from the component tree.rr}r(h#jh$jubaubhJ)r}r(h#XsRemoving a component from the component tree is a two stage process. First, the component is marked as to be removed, which prevents it from receiving further events, and a :class:`~.components.prepare_unregister` event is fired. This allows other components to e.g. release references to the component to be removed before it is actually removed from the component tree.h$jh%jh'hOh)}r(h+]h,]h-]h.]h1]uh3Kh4hh]r(h=XRemoving a component from the component tree is a two stage process. First, the component is marked as to be removed, which prevents it from receiving further events, and a rr}r(h#XRemoving a component from the component tree is a two stage process. First, the component is marked as to be removed, which prevents it from receiving further events, and a h$jubh)r}r(h#X(:class:`~.components.prepare_unregister`rh$jh%Nh'hh)}r(UreftypeXclassjhhXcomponents.prepare_unregisterU refdomainXpyrh.]h-]U refexplicith+]h,]h1]hhhjhhuh3Nh]rh)r}r(h#jh)}r(h+]h,]r(hjXpy-classreh-]h.]h1]uh$jh]rh=Xprepare_unregisterrr}r(h#Uh$jubah'hubaubh=X event is fired. This allows other components to e.g. release references to the component to be removed before it is actually removed from the component tree.rr}r(h#X event is fired. This allows other components to e.g. release references to the component to be removed before it is actually removed from the component tree.h$jubeubhJ)r}r(h#XAfter the processing of the ``prepare_unregister`` event has completed, the component is removed from the tree and an :class:`~.events.unregistered` event is fired.h$jh%jh'hOh)}r(h+]h,]h-]h.]h1]uh3K h4hh]r(h=XAfter the processing of the rr}r(h#XAfter the processing of the h$jubh)r}r(h#X``prepare_unregister``h)}r(h+]h,]h-]h.]h1]uh$jh]rh=Xprepare_unregisterrr}r(h#Uh$jubah'hubh=XD event has completed, the component is removed from the tree and an rr}r(h#XD event has completed, the component is removed from the tree and an h$jubh)r}r(h#X:class:`~.events.unregistered`rh$jh%Nh'hh)}r(UreftypeXclassjhhXevents.unregisteredU refdomainXpyrh.]h-]U refexplicith+]h,]h1]hhhjhhuh3Nh]rh)r}r(h#jh)}r(h+]h,]r(hjXpy-classreh-]h.]h1]uh$jh]rh=X unregisteredrr}r(h#Uh$jubah'hubaubh=X event is fired.rr}r(h#X event is fired.h$jubeubeubeubhA)r}r(h#Uh$jh%Nh'hEh)}r(h.]h-]h+]h,]h1]Uentries]r(hHXEunregister_pending (circuits.core.components.BaseComponent attribute)hUtrauh3Nh4hh]ubhZ)r}r(h#Uh$jh%Nh'h]h)}r(h_h`Xpyh.]h-]h+]h,]h1]haX attributerhcjuh3Nh4hh]r(he)r}r(h#X BaseComponent.unregister_pendingh$jh%hhh'hih)}r(h.]rhahlhmXcircuits.core.componentsrr}rbh-]h+]h,]h1]rhahrX BaseComponent.unregister_pendinghtjhuuh3Nh4hh]rh)r}r(h#Xunregister_pendingh$jh%hhh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=Xunregister_pendingrr}r(h#Uh$jubaubaubh)r}r(h#Uh$jh%hhh'hh)}r (h+]h,]h-]h.]h1]uh3Nh4hh]ubeubhA)r }r (h#Uh$jh%Xu/home/prologic/work/circuits/circuits/core/components.py:docstring of circuits.core.components.BaseComponent.handlersr h'hEh)}r (h.]h-]h+]h,]h1]Uentries]r(hHX@handlers() (circuits.core.components.BaseComponent class method)hUtrauh3Nh4hh]ubhZ)r}r(h#Uh$jh%j h'h]h)}r(h_h`Xpyh.]h-]h+]h,]h1]haX classmethodrhcjuh3Nh4hh]r(he)r}r(h#XBaseComponent.handlers()h$jh%hhh'hih)}r(h.]rhahlhmXcircuits.core.componentsrr}rbh-]h+]h,]h1]rhahrXBaseComponent.handlershtjhuuh3Nh4hh]r(hw)r}r(h#U classmethod r h$jh%hhh'hzh)}r!(h+]h,]h-]h.]h1]uh3Nh4hh]r"h=X classmethod r#r$}r%(h#Uh$jubaubh)r&}r'(h#Xhandlersh$jh%hhh'hh)}r((h+]h,]h-]h.]h1]uh3Nh4hh]r)h=Xhandlersr*r+}r,(h#Uh$j&ubaubh)r-}r.(h#Uh$jh%hhh'hh)}r/(h+]h,]h-]h.]h1]uh3Nh4hh]ubeubh)r0}r1(h#Uh$jh%hhh'hh)}r2(h+]h,]h-]h.]h1]uh3Nh4hh]r3hJ)r4}r5(h#X7Returns a list of all event handlers for this Componentr6h$j0h%j h'hOh)}r7(h+]h,]h-]h.]h1]uh3Kh4hh]r8h=X7Returns a list of all event handlers for this Componentr9r:}r;(h#j6h$j4ubaubaubeubhA)r<}r=(h#Uh$jh%Xs/home/prologic/work/circuits/circuits/core/components.py:docstring of circuits.core.components.BaseComponent.eventsr>h'hEh)}r?(h.]h-]h+]h,]h1]Uentries]r@(hHX>events() (circuits.core.components.BaseComponent class method)hUtrAauh3Nh4hh]ubhZ)rB}rC(h#Uh$jh%j>h'h]h)}rD(h_h`Xpyh.]h-]h+]h,]h1]haX classmethodrEhcjEuh3Nh4hh]rF(he)rG}rH(h#XBaseComponent.events()h$jBh%hhh'hih)}rI(h.]rJhahlhmXcircuits.core.componentsrKrL}rMbh-]h+]h,]h1]rNhahrXBaseComponent.eventshtjhuuh3Nh4hh]rO(hw)rP}rQ(h#j h$jGh%hhh'hzh)}rR(h+]h,]h-]h.]h1]uh3Nh4hh]rSh=X classmethod rTrU}rV(h#Uh$jPubaubh)rW}rX(h#Xeventsh$jGh%hhh'hh)}rY(h+]h,]h-]h.]h1]uh3Nh4hh]rZh=Xeventsr[r\}r](h#Uh$jWubaubh)r^}r_(h#Uh$jGh%hhh'hh)}r`(h+]h,]h-]h.]h1]uh3Nh4hh]ubeubh)ra}rb(h#Uh$jBh%hhh'hh)}rc(h+]h,]h-]h.]h1]uh3Nh4hh]rdhJ)re}rf(h#X6Returns a list of all events this Component listens torgh$jah%j>h'hOh)}rh(h+]h,]h-]h.]h1]uh3Kh4hh]rih=X6Returns a list of all events this Component listens torjrk}rl(h#jgh$jeubaubaubeubhA)rm}rn(h#Uh$jh%Xt/home/prologic/work/circuits/circuits/core/components.py:docstring of circuits.core.components.BaseComponent.handlesroh'hEh)}rp(h.]h-]h+]h,]h1]Uentries]rq(hHX?handles() (circuits.core.components.BaseComponent class method)h Utrrauh3Nh4hh]ubhZ)rs}rt(h#Uh$jh%joh'h]h)}ru(h_h`Xpyh.]h-]h+]h,]h1]haX classmethodrvhcjvuh3Nh4hh]rw(he)rx}ry(h#XBaseComponent.handles(*names)rzh$jsh%hhh'hih)}r{(h.]r|h ahlhmXcircuits.core.componentsr}r~}rbh-]h+]h,]h1]rh ahrXBaseComponent.handleshtjhuuh3Nh4hh]r(hw)r}r(h#j h$jxh%hhh'hzh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=X classmethod rr}r(h#Uh$jubaubh)r}r(h#Xhandlesh$jxh%hhh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=Xhandlesrr}r(h#Uh$jubaubh)r}r(h#Uh$jxh%hhh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh)r}r(h#X*namesh)}r(h+]h,]h-]h.]h1]uh$jh]rh=X*namesrr}r(h#Uh$jubah'hubaubeubh)r}r(h#Uh$jsh%hhh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rhJ)r}r(h#X>Returns True if all names are event handlers of this Componentrh$jh%joh'hOh)}r(h+]h,]h-]h.]h1]uh3Kh4hh]rh=X>Returns True if all names are event handlers of this Componentrr}r(h#jh$jubaubaubeubeubeubhA)r}r(h#Uh$h!h%Xh/home/prologic/work/circuits/circuits/core/components.py:docstring of circuits.core.components.Componentrh'hEh)}r(h.]h-]h+]h,]h1]Uentries]r(hHX-Component (class in circuits.core.components)hUtrauh3Nh4hh]ubhZ)r}r(h#Uh$h!h%jh'h]h)}r(h_h`Xpyh.]h-]h+]h,]h1]haXclassrhcjuh3Nh4hh]r(he)r}r(h#XComponent(*args, **kwargs)h$jh%hhh'hih)}r(h.]rhahlhmXcircuits.core.componentsrr}rbh-]h+]h,]h1]rhahrX ComponentrhtUhuuh3Nh4hh]r(hw)r}r(h#Xclass h$jh%hhh'hzh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=Xclass rr}r(h#Uh$jubaubh)r}r(h#Xcircuits.core.components.h$jh%hhh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=Xcircuits.core.components.rr}r(h#Uh$jubaubh)r}r(h#jh$jh%hhh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]rh=X Componentrr}r(h#Uh$jubaubh)r}r(h#Uh$jh%hhh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]r(h)r}r(h#X*argsh)}r(h+]h,]h-]h.]h1]uh$jh]rh=X*argsrr}r(h#Uh$jubah'hubh)r}r(h#X**kwargsh)}r(h+]h,]h-]h.]h1]uh$jh]rh=X**kwargsrr}r(h#Uh$jubah'hubeubeubh)r}r(h#Uh$jh%hhh'hh)}r(h+]h,]h-]h.]h1]uh3Nh4hh]r(hJ)r}r(h#X6Bases: :class:`circuits.core.components.BaseComponent`rh$jh%hh'hOh)}r(h+]h,]h-]h.]h1]uh3Kh4hh]r(h=XBases: rr}r(h#XBases: h$jubh)r}r(h#X/:class:`circuits.core.components.BaseComponent`rh$jh%Nh'hh)}r(UreftypeXclasshhX&circuits.core.components.BaseComponentU refdomainXpyrh.]h-]U refexplicith+]h,]h1]hhhjhhuh3Nh]rh)r}r(h#jh)}r(h+]h,]r(hjXpy-classreh-]h.]h1]uh$jh]rh=X&circuits.core.components.BaseComponentrr}r(h#Uh$jubah'hubaubeubhJ)r}r(h#XIf you use Component instead of BaseComponent as base class for your own component class, then all methods that are not marked as private (i.e: start with an underscore) are automatically decorated as handlers.rh$jh%jh'hOh)}r(h+]h,]h-]h.]h1]uh3Kh4hh]rh=XIf you use Component instead of BaseComponent as base class for your own component class, then all methods that are not marked as private (i.e: start with an underscore) are automatically decorated as handlers.rr}r(h#jh$jubaubhJ)r}r(h#XuThe methods are invoked for all events from the component's channel where the event's name matches the method's name.rh$jh%jh'hOh)}r (h+]h,]h-]h.]h1]uh3Kh4hh]r h=XuThe methods are invoked for all events from the component's channel where the event's name matches the method's name.r r }r (h#jh$jubaubeubeubeubah#UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh4hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU 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.Upep_referencesr/NUstrip_commentsr0NU toc_backlinksr1Uentryr2U language_coder3Uenr4U datestampr5NU report_levelr6KU _destinationr7NU halt_levelr8KU strip_classesr9Nh:NUerror_encoding_error_handlerr:Ubackslashreplacer;Udebugr<NUembed_stylesheetr=Uoutput_encoding_error_handlerr>Ustrictr?U sectnum_xformr@KUdump_transformsrANU docinfo_xformrBKUwarning_streamrCNUpep_file_url_templaterDUpep-%04drEUexit_status_levelrFKUconfigrGNUstrict_visitorrHNUcloak_email_addressesrIUtrim_footnote_reference_spacerJUenvrKNUdump_pseudo_xmlrLNUexpose_internalsrMNUsectsubtitle_xformrNU source_linkrONUrfc_referencesrPNUoutput_encodingrQUutf-8rRU source_urlrSNUinput_encodingrTU utf-8-sigrUU_disable_configrVNU id_prefixrWUU tab_widthrXKUerror_encodingrYUUTF-8rZU_sourcer[h&Ugettext_compactr\U generatorr]NUdump_internalsr^NU smart_quotesr_U pep_base_urlr`Uhttp://www.python.org/dev/peps/raUsyntax_highlightrbUlongrcUinput_encoding_error_handlerrdj?Uauto_id_prefixreUidrfUdoctitle_xformrgUstrip_elements_with_classesrhNU _config_filesri]Ufile_insertion_enabledrjU raw_enabledrkKU dump_settingsrlNubUsymbol_footnote_startrmKUidsrn}ro(hjhhfhjuh0cdocutils.nodes target rp)rq}rr(h#Uh$h!h%hDh'Utargetrsh)}rt(h+]h.]ruh0ah-]Uismodh,]h1]uh3Kh4hh]ubh jh jxh jh jhh!hjGhjhjhjhjh j9uUsubstitution_namesrv}rwh'h4h)}rx(h+]h.]h-]Usourceh&h,]h1]uU footnotesry]rzUrefidsr{}r|ub.circuits-3.1.0/docs/build/doctrees/api/circuits.core.utils.doctree0000644000014400001440000002467412425011102026224 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.core.utils.safeimportqXcircuits.core.utils.findcmpqXcircuits.core.utils.findtypeqXcircuits.core.utils moduleq NXcircuits.core.utils.flattenq Xcircuits.core.utils.findrootq Xcircuits.core.utils.findchannelq uUsubstitution_defsq }qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh Ucircuits-core-utils-moduleqh h h h h h uUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXD/home/prologic/work/circuits/docs/source/api/circuits.core.utils.rstqUtagnameq Usectionq!U attributesq"}q#(Udupnamesq$]Uclassesq%]Ubackrefsq&]Uidsq']q((Xmodule-circuits.core.utilsq)heUnamesq*]q+h auUlineq,KUdocumentq-hh]q.(cdocutils.nodes title q/)q0}q1(hXcircuits.core.utils moduleq2hhhhh Utitleq3h"}q4(h$]h%]h&]h']h*]uh,Kh-hh]q5cdocutils.nodes Text q6Xcircuits.core.utils moduleq7q8}q9(hh2hh0ubaubcsphinx.addnodes index q:)q;}q<(hUhhhU q=h Uindexq>h"}q?(h']h&]h$]h%]h*]Uentries]q@(UsingleqAXcircuits.core.utils (module)Xmodule-circuits.core.utilsUtqBauh,Kh-hh]ubcdocutils.nodes paragraph qC)qD}qE(hXUtilsqFhhhXT/home/prologic/work/circuits/circuits/core/utils.py:docstring of circuits.core.utilsqGh U paragraphqHh"}qI(h$]h%]h&]h']h*]uh,Kh-hh]qJh6XUtilsqKqL}qM(hhFhhDubaubhC)qN}qO(hX/This module defines utilities used by circuits.qPhhhhGh hHh"}qQ(h$]h%]h&]h']h*]uh,Kh-hh]qRh6X/This module defines utilities used by circuits.qSqT}qU(hhPhhNubaubh:)qV}qW(hUhhhNh h>h"}qX(h']h&]h$]h%]h*]Uentries]qY(hAX)flatten() (in module circuits.core.utils)h UtqZauh,Nh-hh]ubcsphinx.addnodes desc q[)q\}q](hUhhhNh Udescq^h"}q_(Unoindexq`UdomainqaXpyh']h&]h$]h%]h*]UobjtypeqbXfunctionqcUdesctypeqdhcuh,Nh-hh]qe(csphinx.addnodes desc_signature qf)qg}qh(hXflatten(root, visited=None)hh\hU qih Udesc_signatureqjh"}qk(h']qlh aUmoduleqmcdocutils.nodes reprunicode qnXcircuits.core.utilsqoqp}qqbh&]h$]h%]h*]qrh aUfullnameqsXflattenqtUclassquUUfirstqvuh,Nh-hh]qw(csphinx.addnodes desc_addname qx)qy}qz(hXcircuits.core.utils.hhghhih U desc_addnameq{h"}q|(h$]h%]h&]h']h*]uh,Nh-hh]q}h6Xcircuits.core.utils.q~q}q(hUhhyubaubcsphinx.addnodes desc_name q)q}q(hhthhghhih U desc_nameqh"}q(h$]h%]h&]h']h*]uh,Nh-hh]qh6Xflattenqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhghhih Udesc_parameterlistqh"}q(h$]h%]h&]h']h*]uh,Nh-hh]q(csphinx.addnodes desc_parameter q)q}q(hXrooth"}q(h$]h%]h&]h']h*]uhhh]qh6Xrootqq}q(hUhhubah Udesc_parameterqubh)q}q(hX visited=Noneh"}q(h$]h%]h&]h']h*]uhhh]qh6X visited=Noneqq}q(hUhhubah hubeubeubcsphinx.addnodes desc_content q)q}q(hUhh\hhih U desc_contentqh"}q(h$]h%]h&]h']h*]uh,Nh-hh]ubeubh:)q}q(hUhhhNh h>h"}q(h']h&]h$]h%]h*]Uentries]q(hAX-findchannel() (in module circuits.core.utils)h Utqauh,Nh-hh]ubh[)q}q(hUhhhNh h^h"}q(h`haXpyh']h&]h$]h%]h*]hbXfunctionqhdhuh,Nh-hh]q(hf)q}q(hX%findchannel(root, channel, all=False)hhhhih hjh"}q(h']qh ahmhnXcircuits.core.utilsqq}qbh&]h$]h%]h*]qh ahsX findchannelqhuUhvuh,Nh-hh]q(hx)q}q(hXcircuits.core.utils.hhhhih h{h"}q(h$]h%]h&]h']h*]uh,Nh-hh]qh6Xcircuits.core.utils.qq}q(hUhhubaubh)q}q(hhhhhhih hh"}q(h$]h%]h&]h']h*]uh,Nh-hh]qh6X findchannelqąq}q(hUhhubaubh)q}q(hUhhhhih hh"}q(h$]h%]h&]h']h*]uh,Nh-hh]q(h)q}q(hXrooth"}q(h$]h%]h&]h']h*]uhhh]qh6Xrootqυq}q(hUhhubah hubh)q}q(hXchannelh"}q(h$]h%]h&]h']h*]uhhh]qh6Xchannelqօq}q(hUhhubah hubh)q}q(hX all=Falseh"}q(h$]h%]h&]h']h*]uhhh]qh6X all=Falseq݅q}q(hUhhubah hubeubeubh)q}q(hUhhhhih hh"}q(h$]h%]h&]h']h*]uh,Nh-hh]ubeubh:)q}q(hUhhhNh h>h"}q(h']h&]h$]h%]h*]Uentries]q(hAX*findtype() (in module circuits.core.utils)hUtqauh,Nh-hh]ubh[)q}q(hUhhhNh h^h"}q(h`haXpyh']h&]h$]h%]h*]hbXfunctionqhdhuh,Nh-hh]q(hf)q}q(hX$findtype(root, component, all=False)hhhhih hjh"}q(h']qhahmhnXcircuits.core.utilsqq}qbh&]h$]h%]h*]qhahsXfindtypeqhuUhvuh,Nh-hh]q(hx)q}q(hXcircuits.core.utils.hhhhih h{h"}q(h$]h%]h&]h']h*]uh,Nh-hh]qh6Xcircuits.core.utils.qq}q(hUhhubaubh)q}q(hhhhhhih hh"}r(h$]h%]h&]h']h*]uh,Nh-hh]rh6Xfindtyperr}r(hUhhubaubh)r}r(hUhhhhih hh"}r(h$]h%]h&]h']h*]uh,Nh-hh]r(h)r }r (hXrooth"}r (h$]h%]h&]h']h*]uhjh]r h6Xrootr r}r(hUhj ubah hubh)r}r(hX componenth"}r(h$]h%]h&]h']h*]uhjh]rh6X componentrr}r(hUhjubah hubh)r}r(hX all=Falseh"}r(h$]h%]h&]h']h*]uhjh]rh6X all=Falserr}r(hUhjubah hubeubeubh)r}r(hUhhhhih hh"}r (h$]h%]h&]h']h*]uh,Nh-hh]ubeubh:)r!}r"(hUhhhNh h>h"}r#(h']h&]h$]h%]h*]Uentries]r$(hAX)findcmp() (in module circuits.core.utils)hUtr%auh,Nh-hh]ubh[)r&}r'(hUhhhNh h^h"}r((h`haXpyh']h&]h$]h%]h*]hbXfunctionr)hdj)uh,Nh-hh]r*(hf)r+}r,(hX#findcmp(root, component, all=False)hj&hhih hjh"}r-(h']r.hahmhnXcircuits.core.utilsr/r0}r1bh&]h$]h%]h*]r2hahsXfindcmpr3huUhvuh,Nh-hh]r4(hx)r5}r6(hXcircuits.core.utils.hj+hhih h{h"}r7(h$]h%]h&]h']h*]uh,Nh-hh]r8h6Xcircuits.core.utils.r9r:}r;(hUhj5ubaubh)r<}r=(hj3hj+hhih hh"}r>(h$]h%]h&]h']h*]uh,Nh-hh]r?h6Xfindcmpr@rA}rB(hUhj<ubaubh)rC}rD(hUhj+hhih hh"}rE(h$]h%]h&]h']h*]uh,Nh-hh]rF(h)rG}rH(hXrooth"}rI(h$]h%]h&]h']h*]uhjCh]rJh6XrootrKrL}rM(hUhjGubah hubh)rN}rO(hX componenth"}rP(h$]h%]h&]h']h*]uhjCh]rQh6X componentrRrS}rT(hUhjNubah hubh)rU}rV(hX all=Falseh"}rW(h$]h%]h&]h']h*]uhjCh]rXh6X all=FalserYrZ}r[(hUhjUubah hubeubeubh)r\}r](hUhj&hhih hh"}r^(h$]h%]h&]h']h*]uh,Nh-hh]ubeubh:)r_}r`(hUhhhNh h>h"}ra(h']h&]h$]h%]h*]Uentries]rb(hAX*findroot() (in module circuits.core.utils)h Utrcauh,Nh-hh]ubh[)rd}re(hUhhhNh h^h"}rf(h`haXpyh']h&]h$]h%]h*]hbXfunctionrghdjguh,Nh-hh]rh(hf)ri}rj(hXfindroot(component)hjdhhih hjh"}rk(h']rlh ahmhnXcircuits.core.utilsrmrn}robh&]h$]h%]h*]rph ahsXfindrootrqhuUhvuh,Nh-hh]rr(hx)rs}rt(hXcircuits.core.utils.hjihhih h{h"}ru(h$]h%]h&]h']h*]uh,Nh-hh]rvh6Xcircuits.core.utils.rwrx}ry(hUhjsubaubh)rz}r{(hjqhjihhih hh"}r|(h$]h%]h&]h']h*]uh,Nh-hh]r}h6Xfindrootr~r}r(hUhjzubaubh)r}r(hUhjihhih hh"}r(h$]h%]h&]h']h*]uh,Nh-hh]rh)r}r(hX componenth"}r(h$]h%]h&]h']h*]uhjh]rh6X componentrr}r(hUhjubah hubaubeubh)r}r(hUhjdhhih hh"}r(h$]h%]h&]h']h*]uh,Nh-hh]ubeubh:)r}r(hUhhhNh h>h"}r(h']h&]h$]h%]h*]Uentries]r(hAX,safeimport() (in module circuits.core.utils)hUtrauh,Nh-hh]ubh[)r}r(hUhhhNh h^h"}r(h`haXpyh']h&]h$]h%]h*]hbXfunctionrhdjuh,Nh-hh]r(hf)r}r(hXsafeimport(name)rhjhhih hjh"}r(h']rhahmhnXcircuits.core.utilsrr}rbh&]h$]h%]h*]rhahsX safeimportrhuUhvuh,Nh-hh]r(hx)r}r(hXcircuits.core.utils.hjhhih h{h"}r(h$]h%]h&]h']h*]uh,Nh-hh]rh6Xcircuits.core.utils.rr}r(hUhjubaubh)r}r(hjhjhhih hh"}r(h$]h%]h&]h']h*]uh,Nh-hh]rh6X safeimportrr}r(hUhjubaubh)r}r(hUhjhhih hh"}r(h$]h%]h&]h']h*]uh,Nh-hh]rh)r}r(hXnameh"}r(h$]h%]h&]h']h*]uhjh]rh6Xnamerr}r(hUhjubah hubaubeubh)r}r(hUhjhhih hh"}r(h$]h%]h&]h']h*]uh,Nh-hh]ubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh-hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh3NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixr UU tab_widthr KUerror_encodingr UUTF-8r U_sourcer hUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr }r!(hjh)cdocutils.nodes target r")r#}r$(hUhhhh=h Utargetr%h"}r&(h$]h']r'h)ah&]Uismodh%]h*]uh,Kh-hh]ubhj+hhh hghhh jih huUsubstitution_namesr(}r)h h-h"}r*(h$]h']h&]Usourcehh%]h*]uU footnotesr+]r,Urefidsr-}r.ub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.dispatchers.virtualhosts.doctree0000644000014400001440000002555412425011104031770 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X,circuits.web.dispatchers.virtualhosts moduleqNX:circuits.web.dispatchers.virtualhosts.VirtualHosts.channelqX2circuits.web.dispatchers.virtualhosts.VirtualHostsquUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hU,circuits-web-dispatchers-virtualhosts-moduleqhhhhuUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXV/home/prologic/work/circuits/docs/source/api/circuits.web.dispatchers.virtualhosts.rstqUtagnameqUsectionqU attributesq}q(Udupnamesq ]Uclassesq!]Ubackrefsq"]Uidsq#]q$(X,module-circuits.web.dispatchers.virtualhostsq%heUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hX,circuits.web.dispatchers.virtualhosts moduleq.hhhhhUtitleq/h}q0(h ]h!]h"]h#]h&]uh(Kh)hh]q1cdocutils.nodes Text q2X,circuits.web.dispatchers.virtualhosts moduleq3q4}q5(hh.hh,ubaubcsphinx.addnodes index q6)q7}q8(hUhhhU q9hUindexq:h}q;(h#]h"]h ]h!]h&]Uentries]q<(Usingleq=X.circuits.web.dispatchers.virtualhosts (module)X,module-circuits.web.dispatchers.virtualhostsUtq>auh(Kh)hh]ubcdocutils.nodes paragraph q?)q@}qA(hX VirtualHostqBhhhXx/home/prologic/work/circuits/circuits/web/dispatchers/virtualhosts.py:docstring of circuits.web.dispatchers.virtualhostsqChU paragraphqDh}qE(h ]h!]h"]h#]h&]uh(Kh)hh]qFh2X VirtualHostqGqH}qI(hhBhh@ubaubh?)qJ}qK(hX{This module implements a virtual host dispatcher that sends requests for configured virtual hosts to different dispatchers.qLhhhhChhDh}qM(h ]h!]h"]h#]h&]uh(Kh)hh]qNh2X{This module implements a virtual host dispatcher that sends requests for configured virtual hosts to different dispatchers.qOqP}qQ(hhLhhJubaubh6)qR}qS(hUhhhNhh:h}qT(h#]h"]h ]h!]h&]Uentries]qU(h=X=VirtualHosts (class in circuits.web.dispatchers.virtualhosts)hUtqVauh(Nh)hh]ubcsphinx.addnodes desc qW)qX}qY(hUhhhNhUdescqZh}q[(Unoindexq\Udomainq]Xpyq^h#]h"]h ]h!]h&]Uobjtypeq_Xclassq`Udesctypeqah`uh(Nh)hh]qb(csphinx.addnodes desc_signature qc)qd}qe(hXVirtualHosts(domains)qfhhXhU qghUdesc_signatureqhh}qi(h#]qjhaUmoduleqkcdocutils.nodes reprunicode qlX%circuits.web.dispatchers.virtualhostsqmqn}qobh"]h ]h!]h&]qphaUfullnameqqX VirtualHostsqrUclassqsUUfirstqtuh(Nh)hh]qu(csphinx.addnodes desc_annotation qv)qw}qx(hXclass hhdhhghUdesc_annotationqyh}qz(h ]h!]h"]h#]h&]uh(Nh)hh]q{h2Xclass q|q}}q~(hUhhwubaubcsphinx.addnodes desc_addname q)q}q(hX&circuits.web.dispatchers.virtualhosts.hhdhhghU desc_addnameqh}q(h ]h!]h"]h#]h&]uh(Nh)hh]qh2X&circuits.web.dispatchers.virtualhosts.qq}q(hUhhubaubcsphinx.addnodes desc_name q)q}q(hhrhhdhhghU desc_nameqh}q(h ]h!]h"]h#]h&]uh(Nh)hh]qh2X VirtualHostsqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhdhhghUdesc_parameterlistqh}q(h ]h!]h"]h#]h&]uh(Nh)hh]qcsphinx.addnodes desc_parameter q)q}q(hXdomainsh}q(h ]h!]h"]h#]h&]uhhh]qh2Xdomainsqq}q(hUhhubahUdesc_parameterqubaubeubcsphinx.addnodes desc_content q)q}q(hUhhXhhghU desc_contentqh}q(h ]h!]h"]h#]h&]uh(Nh)hh]q(h?)q}q(hX6Bases: :class:`circuits.core.components.BaseComponent`qhhhU qhhDh}q(h ]h!]h"]h#]h&]uh(Kh)hh]q(h2XBases: qq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX/:class:`circuits.core.components.BaseComponent`qhhhNhU pending_xrefqh}q(UreftypeXclassUrefwarnqU reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqh#]h"]U refexplicith ]h!]h&]UrefdocqX)api/circuits.web.dispatchers.virtualhostsqUpy:classqhrU py:moduleqX%circuits.web.dispatchers.virtualhostsquh(Nh]qcdocutils.nodes literal q)q}q(hhh}q(h ]h!]q(UxrefqhXpy-classqeh"]h#]h&]uhhh]qh2X&circuits.core.components.BaseComponentqƅq}q(hUhhubahUliteralqubaubeubh?)q}q(hX7Forward to anotehr Dispatcher based on the Host header.qhhhX/home/prologic/work/circuits/circuits/web/dispatchers/virtualhosts.py:docstring of circuits.web.dispatchers.virtualhosts.VirtualHostsqhhDh}q(h ]h!]h"]h#]h&]uh(Kh)hh]qh2X7Forward to anotehr Dispatcher based on the Host header.qЅq}q(hhhhubaubh?)q}q(hX"This can be useful when running multiple sites within one server. It allows several domains to point to different parts of a single website structure. For example: - http://www.domain.example -> / - http://www.domain2.example -> /domain2 - http://www.domain2.example:443 -> /securehhhhhhDh}q(h ]h!]h"]h#]h&]uh(Kh)hh]q(h2XThis can be useful when running multiple sites within one server. It allows several domains to point to different parts of a single website structure. For example: - qׅq}q(hXThis can be useful when running multiple sites within one server. It allows several domains to point to different parts of a single website structure. For example: - hhubcdocutils.nodes reference q)q}q(hXhttp://www.domain.exampleqh}q(Urefurihh#]h"]h ]h!]h&]uhhh]qh2Xhttp://www.domain.exampleqq}q(hUhhubahU referencequbh2X -> / - q䅁q}q(hX -> / - hhubh)q}q(hXhttp://www.domain2.exampleqh}q(Urefurihh#]h"]h ]h!]h&]uhhh]qh2Xhttp://www.domain2.exampleq셁q}q(hUhhubahhubh2X -> /domain2 - qq}q(hX -> /domain2 - hhubh)q}q(hXhttp://www.domain2.example:443qh}q(Urefurihh#]h"]h ]h!]h&]uhhh]qh2Xhttp://www.domain2.example:443qq}q(hUhhubahhubh2X -> /secureqq}q(hX -> /securehhubeubcdocutils.nodes field_list q)q}q(hUhhhNhU field_listrh}r(h ]h!]h"]h#]h&]uh(Nh)hh]rcdocutils.nodes field r)r}r(hUh}r(h ]h!]h"]h#]h&]uhhh]r(cdocutils.nodes field_name r)r }r (hUh}r (h ]h!]h"]h#]h&]uhjh]r h2X Parametersr r}r(hUhj ubahU field_namerubcdocutils.nodes field_body r)r}r(hUh}r(h ]h!]h"]h#]h&]uhjh]rh?)r}r(hUh}r(h ]h!]h"]h#]h&]uhjh]r(cdocutils.nodes strong r)r}r(hXdomainsh}r(h ]h!]h"]h#]h&]uhjh]rh2Xdomainsrr }r!(hUhjubahUstrongr"ubh2X (r#r$}r%(hUhjubh)r&}r'(hUh}r((UreftypeUobjr)U reftargetXdictr*U refdomainh^h#]h"]U refexplicith ]h!]h&]uhjh]r+cdocutils.nodes emphasis r,)r-}r.(hj*h}r/(h ]h!]h"]h#]h&]uhj&h]r0h2Xdictr1r2}r3(hUhj-ubahUemphasisr4ubahhubh2X)r5}r6(hUhjubh2X -- r7r8}r9(hUhjubh2X4a dict of {host header value: virtual prefix} pairs.r:r;}r<(hX4a dict of {host header value: virtual prefix} pairs.r=hjubehhDubahU field_bodyr>ubehUfieldr?ubaubh?)r@}rA(hXThe incoming "Host" request header is looked up in this dict, and, if a match is found, the corresponding "virtual prefix" value will be prepended to the URL path before passing the request onto the next dispatcher.rBhhhhhhDh}rC(h ]h!]h"]h#]h&]uh(K h)hh]rDh2XThe incoming "Host" request header is looked up in this dict, and, if a match is found, the corresponding "virtual prefix" value will be prepended to the URL path before passing the request onto the next dispatcher.rErF}rG(hjBhj@ubaubh?)rH}rI(hXNote that you often need separate entries for "example.com" and "www.example.com". In addition, "Host" headers may contain the port number.rJhhhhhhDh}rK(h ]h!]h"]h#]h&]uh(Kh)hh]rLh2XNote that you often need separate entries for "example.com" and "www.example.com". In addition, "Host" headers may contain the port number.rMrN}rO(hjJhjHubaubh6)rP}rQ(hUhhhNhh:h}rR(h#]h"]h ]h!]h&]Uentries]rS(h=XFchannel (circuits.web.dispatchers.virtualhosts.VirtualHosts attribute)hUtrTauh(Nh)hh]ubhW)rU}rV(hUhhhNhhZh}rW(h\h]Xpyh#]h"]h ]h!]h&]h_X attributerXhajXuh(Nh)hh]rY(hc)rZ}r[(hXVirtualHosts.channelr\hjUhU r]hhhh}r^(h#]r_hahkhlX%circuits.web.dispatchers.virtualhostsr`ra}rbbh"]h ]h!]h&]rchahqXVirtualHosts.channelhshrhtuh(Nh)hh]rd(h)re}rf(hXchannelhjZhj]hhh}rg(h ]h!]h"]h#]h&]uh(Nh)hh]rhh2Xchannelrirj}rk(hUhjeubaubhv)rl}rm(hX = 'web'hjZhj]hhyh}rn(h ]h!]h"]h#]h&]uh(Nh)hh]roh2X = 'web'rprq}rr(hUhjlubaubeubh)rs}rt(hUhjUhj]hhh}ru(h ]h!]h"]h#]h&]uh(Nh)hh]ubeubeubeubeubahUU transformerrvNU footnote_refsrw}rxUrefnamesry}rzUsymbol_footnotesr{]r|Uautofootnote_refsr}]r~Usymbol_footnote_refsr]rU citationsr]rh)hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh/NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]rUfile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhhjZhhdh%cdocutils.nodes target r)r}r(hUhhhh9hUtargetrh}r(h ]h#]rh%ah"]Uismodh!]h&]uh(Kh)hh]ubuUsubstitution_namesr}rhh)h}r(h ]h#]h"]Usourcehh!]h&]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.headers.doctree0000644000014400001440000010056712425011105026323 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X+circuits.web.headers.HeaderElement.from_strqX"circuits.web.headers.HeaderElementqX$circuits.web.headers.Headers.get_allqX+circuits.web.headers.AcceptElement.from_strq X3circuits.web.headers.CaseInsensitiveDict.setdefaultq Xcircuits.web.headers.Headersq X/circuits.web.headers.CaseInsensitiveDict.updateq X#circuits.web.headers.Headers.appendq X,circuits.web.headers.CaseInsensitiveDict.popqX%circuits.web.headers.Headers.elementsqX'circuits.web.headers.Headers.add_headerqX,circuits.web.headers.CaseInsensitiveDict.getqX1circuits.web.headers.CaseInsensitiveDict.fromkeysqX$circuits.web.headers.header_elementsqX"circuits.web.headers.AcceptElementqX)circuits.web.headers.AcceptElement.qvalueqX(circuits.web.headers.HeaderElement.parseqX(circuits.web.headers.CaseInsensitiveDictqXcircuits.web.headers moduleqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq }q!(hhhhhhh h h h h h h h h h hhhhhhhhhhhhhhhhhhhhhUcircuits-web-headers-moduleq"uUchildrenq#]q$cdocutils.nodes section q%)q&}q'(U rawsourceq(UUparentq)hUsourceq*XE/home/prologic/work/circuits/docs/source/api/circuits.web.headers.rstq+Utagnameq,Usectionq-U attributesq.}q/(Udupnamesq0]Uclassesq1]Ubackrefsq2]Uidsq3]q4(Xmodule-circuits.web.headersq5h"eUnamesq6]q7hauUlineq8KUdocumentq9hh#]q:(cdocutils.nodes title q;)q<}q=(h(Xcircuits.web.headers moduleq>h)h&h*h+h,Utitleq?h.}q@(h0]h1]h2]h3]h6]uh8Kh9hh#]qAcdocutils.nodes Text qBXcircuits.web.headers moduleqCqD}qE(h(h>h)hqIh,UindexqJh.}qK(h3]h2]h0]h1]h6]Uentries]qL(UsingleqMXcircuits.web.headers (module)Xmodule-circuits.web.headersUtqNauh8Kh9hh#]ubcdocutils.nodes paragraph qO)qP}qQ(h(XHeaders SupportqRh)h&h*XV/home/prologic/work/circuits/circuits/web/headers.py:docstring of circuits.web.headersqSh,U paragraphqTh.}qU(h0]h1]h2]h3]h6]uh8Kh9hh#]qVhBXHeaders SupportqWqX}qY(h(hRh)hPubaubhO)qZ}q[(h(X@This module implements support for parsing and handling headers.q\h)h&h*hSh,hTh.}q](h0]h1]h2]h3]h6]uh8Kh9hh#]q^hBX@This module implements support for parsing and handling headers.q_q`}qa(h(h\h)hZubaubhF)qb}qc(h(Uh)h&h*Xf/home/prologic/work/circuits/circuits/web/headers.py:docstring of circuits.web.headers.header_elementsqdh,hJh.}qe(h3]h2]h0]h1]h6]Uentries]qf(hMX2header_elements() (in module circuits.web.headers)hUtqgauh8Nh9hh#]ubcsphinx.addnodes desc qh)qi}qj(h(Uh)h&h*hdh,Udescqkh.}ql(UnoindexqmUdomainqnXpyh3]h2]h0]h1]h6]UobjtypeqoXfunctionqpUdesctypeqqhpuh8Nh9hh#]qr(csphinx.addnodes desc_signature qs)qt}qu(h(X&header_elements(fieldname, fieldvalue)h)hih*U qvh,Udesc_signatureqwh.}qx(h3]qyhaUmoduleqzcdocutils.nodes reprunicode q{Xcircuits.web.headersq|q}}q~bh2]h0]h1]h6]qhaUfullnameqXheader_elementsqUclassqUUfirstquh8Nh9hh#]q(csphinx.addnodes desc_addname q)q}q(h(Xcircuits.web.headers.h)hth*hvh,U desc_addnameqh.}q(h0]h1]h2]h3]h6]uh8Nh9hh#]qhBXcircuits.web.headers.qq}q(h(Uh)hubaubcsphinx.addnodes desc_name q)q}q(h(hh)hth*hvh,U desc_nameqh.}q(h0]h1]h2]h3]h6]uh8Nh9hh#]qhBXheader_elementsqq}q(h(Uh)hubaubcsphinx.addnodes desc_parameterlist q)q}q(h(Uh)hth*hvh,Udesc_parameterlistqh.}q(h0]h1]h2]h3]h6]uh8Nh9hh#]q(csphinx.addnodes desc_parameter q)q}q(h(X fieldnameh.}q(h0]h1]h2]h3]h6]uh)hh#]qhBX fieldnameqq}q(h(Uh)hubah,Udesc_parameterqubh)q}q(h(X fieldvalueh.}q(h0]h1]h2]h3]h6]uh)hh#]qhBX fieldvalueqq}q(h(Uh)hubah,hubeubeubcsphinx.addnodes desc_content q)q}q(h(Uh)hih*hvh,U desc_contentqh.}q(h0]h1]h2]h3]h6]uh8Nh9hh#]q(hO)q}q(h(X#Return a sorted HeaderElement list.qh)hh*hdh,hTh.}q(h0]h1]h2]h3]h6]uh8Kh9hh#]qhBX#Return a sorted HeaderElement list.qq}q(h(hh)hubaubhO)q}q(h(XIReturns a sorted HeaderElement list from a comma-separated header string.qh)hh*hdh,hTh.}q(h0]h1]h2]h3]h6]uh8Kh9hh#]qhBXIReturns a sorted HeaderElement list from a comma-separated header string.qq}q(h(hh)hubaubeubeubhF)q}q(h(Uh)h&h*Nh,hJh.}q(h3]h2]h0]h1]h6]Uentries]q(hMX-HeaderElement (class in circuits.web.headers)hUtqauh8Nh9hh#]ubhh)q}q(h(Uh)h&h*Nh,hkh.}q(hmhnXpyh3]h2]h0]h1]h6]hoXclassqhqhuh8Nh9hh#]q(hs)q}q(h(X!HeaderElement(value, params=None)h)hh*hvh,hwh.}q(h3]qhahzh{Xcircuits.web.headersqхq}qbh2]h0]h1]h6]qhahX HeaderElementqhUhuh8Nh9hh#]q(csphinx.addnodes desc_annotation q)q}q(h(Xclass h)hh*hvh,Udesc_annotationqh.}q(h0]h1]h2]h3]h6]uh8Nh9hh#]qhBXclass q݅q}q(h(Uh)hubaubh)q}q(h(Xcircuits.web.headers.h)hh*hvh,hh.}q(h0]h1]h2]h3]h6]uh8Nh9hh#]qhBXcircuits.web.headers.q䅁q}q(h(Uh)hubaubh)q}q(h(hh)hh*hvh,hh.}q(h0]h1]h2]h3]h6]uh8Nh9hh#]qhBX HeaderElementq녁q}q(h(Uh)hubaubh)q}q(h(Uh)hh*hvh,hh.}q(h0]h1]h2]h3]h6]uh8Nh9hh#]q(h)q}q(h(Xvalueh.}q(h0]h1]h2]h3]h6]uh)hh#]qhBXvalueqq}q(h(Uh)hubah,hubh)q}q(h(X params=Noneh.}q(h0]h1]h2]h3]h6]uh)hh#]qhBX params=Noneqq}q(h(Uh)hubah,hubeubeubh)r}r(h(Uh)hh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]r(hO)r}r(h(XBases: :class:`object`h)jh*U rh,hTh.}r(h0]h1]h2]h3]h6]uh8Kh9hh#]r(hBXBases: r r }r (h(XBases: h)jubcsphinx.addnodes pending_xref r )r }r(h(X:class:`object`rh)jh*Nh,U pending_xrefrh.}r(UreftypeXclassUrefwarnrU reftargetrXobjectU refdomainXpyrh3]h2]U refexplicith0]h1]h6]UrefdocrXapi/circuits.web.headersrUpy:classrhU py:modulerXcircuits.web.headersruh8Nh#]rcdocutils.nodes literal r)r}r(h(jh.}r(h0]h1]r(Uxrefr jXpy-classr!eh2]h3]h6]uh)j h#]r"hBXobjectr#r$}r%(h(Uh)jubah,Uliteralr&ubaubeubhO)r'}r((h(X@An element (with parameters) from an HTTP header's element list.r)h)jh*Xd/home/prologic/work/circuits/circuits/web/headers.py:docstring of circuits.web.headers.HeaderElementr*h,hTh.}r+(h0]h1]h2]h3]h6]uh8Kh9hh#]r,hBX@An element (with parameters) from an HTTP header's element list.r-r.}r/(h(j)h)j'ubaubhF)r0}r1(h(Uh)jh*Xj/home/prologic/work/circuits/circuits/web/headers.py:docstring of circuits.web.headers.HeaderElement.parser2h,hJh.}r3(h3]h2]h0]h1]h6]Uentries]r4(hMX:parse() (circuits.web.headers.HeaderElement static method)hUtr5auh8Nh9hh#]ubhh)r6}r7(h(Uh)jh*j2h,hkh.}r8(hmhnXpyh3]h2]h0]h1]h6]hoX staticmethodr9hqj9uh8Nh9hh#]r:(hs)r;}r<(h(XHeaderElement.parse(elementstr)h)j6h*hvh,hwh.}r=(h3]r>hahzh{Xcircuits.web.headersr?r@}rAbh2]h0]h1]h6]rBhahXHeaderElement.parsehhhuh8Nh9hh#]rC(h)rD}rE(h(Ustatic rFh)j;h*hvh,hh.}rG(h0]h1]h2]h3]h6]uh8Nh9hh#]rHhBXstatic rIrJ}rK(h(Uh)jDubaubh)rL}rM(h(Xparseh)j;h*hvh,hh.}rN(h0]h1]h2]h3]h6]uh8Nh9hh#]rOhBXparserPrQ}rR(h(Uh)jLubaubh)rS}rT(h(Uh)j;h*hvh,hh.}rU(h0]h1]h2]h3]h6]uh8Nh9hh#]rVh)rW}rX(h(X elementstrh.}rY(h0]h1]h2]h3]h6]uh)jSh#]rZhBX elementstrr[r\}r](h(Uh)jWubah,hubaubeubh)r^}r_(h(Uh)j6h*hvh,hh.}r`(h0]h1]h2]h3]h6]uh8Nh9hh#]rahO)rb}rc(h(X7Transform 'token;key=val' to ('token', {'key': 'val'}).rdh)j^h*j2h,hTh.}re(h0]h1]h2]h3]h6]uh8Kh9hh#]rfhBX7Transform 'token;key=val' to ('token', {'key': 'val'}).rgrh}ri(h(jdh)jbubaubaubeubhF)rj}rk(h(Uh)jh*Xm/home/prologic/work/circuits/circuits/web/headers.py:docstring of circuits.web.headers.HeaderElement.from_strrlh,hJh.}rm(h3]h2]h0]h1]h6]Uentries]rn(hMX<from_str() (circuits.web.headers.HeaderElement class method)hUtroauh8Nh9hh#]ubhh)rp}rq(h(Uh)jh*jlh,hkh.}rr(hmhnXpyh3]h2]h0]h1]h6]hoX classmethodrshqjsuh8Nh9hh#]rt(hs)ru}rv(h(X"HeaderElement.from_str(elementstr)h)jph*hvh,hwh.}rw(h3]rxhahzh{Xcircuits.web.headersryrz}r{bh2]h0]h1]h6]r|hahXHeaderElement.from_strhhhuh8Nh9hh#]r}(h)r~}r(h(U classmethod rh)juh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]rhBX classmethod rr}r(h(Uh)j~ubaubh)r}r(h(Xfrom_strh)juh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]rhBXfrom_strrr}r(h(Uh)jubaubh)r}r(h(Uh)juh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]rh)r}r(h(X elementstrh.}r(h0]h1]h2]h3]h6]uh)jh#]rhBX elementstrrr}r(h(Uh)jubah,hubaubeubh)r}r(h(Uh)jph*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]rhO)r}r(h(X@Construct an instance from a string of the form 'token;key=val'.rh)jh*jlh,hTh.}r(h0]h1]h2]h3]h6]uh8Kh9hh#]rhBX@Construct an instance from a string of the form 'token;key=val'.rr}r(h(jh)jubaubaubeubeubeubhF)r}r(h(Uh)h&h*Nh,hJh.}r(h3]h2]h0]h1]h6]Uentries]r(hMX-AcceptElement (class in circuits.web.headers)hUtrauh8Nh9hh#]ubhh)r}r(h(Uh)h&h*Nh,hkh.}r(hmhnXpyh3]h2]h0]h1]h6]hoXclassrhqjuh8Nh9hh#]r(hs)r}r(h(X!AcceptElement(value, params=None)h)jh*hvh,hwh.}r(h3]rhahzh{Xcircuits.web.headersrr}rbh2]h0]h1]h6]rhahX AcceptElementrhUhuh8Nh9hh#]r(h)r}r(h(Xclass h)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]rhBXclass rr}r(h(Uh)jubaubh)r}r(h(Xcircuits.web.headers.h)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]rhBXcircuits.web.headers.rr}r(h(Uh)jubaubh)r}r(h(jh)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]rhBX AcceptElementrr}r(h(Uh)jubaubh)r}r(h(Uh)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]r(h)r}r(h(Xvalueh.}r(h0]h1]h2]h3]h6]uh)jh#]rhBXvaluerr}r(h(Uh)jubah,hubh)r}r(h(X params=Noneh.}r(h0]h1]h2]h3]h6]uh)jh#]rhBX params=Nonerr}r(h(Uh)jubah,hubeubeubh)r}r(h(Uh)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]r(hO)r}r(h(X2Bases: :class:`circuits.web.headers.HeaderElement`h)jh*jh,hTh.}r(h0]h1]h2]h3]h6]uh8Kh9hh#]r(hBXBases: rr}r(h(XBases: h)jubj )r}r(h(X+:class:`circuits.web.headers.HeaderElement`rh)jh*Nh,jh.}r(UreftypeXclassjjX"circuits.web.headers.HeaderElementU refdomainXpyrh3]h2]U refexplicith0]h1]h6]jjjjjjuh8Nh#]rj)r}r(h(jh.}r(h0]h1]r(j jXpy-classreh2]h3]h6]uh)jh#]rhBX"circuits.web.headers.HeaderElementrr}r(h(Uh)jubah,j&ubaubeubhO)r}r(h(XCAn element (with parameters) from an Accept* header's element list.rh)jh*Xd/home/prologic/work/circuits/circuits/web/headers.py:docstring of circuits.web.headers.AcceptElementrh,hTh.}r(h0]h1]h2]h3]h6]uh8Kh9hh#]rhBXCAn element (with parameters) from an Accept* header's element list.rr}r(h(jh)jubaubhO)r}r(h(XYAcceptElement objects are comparable; the more-preferred object will be "less than" the less-preferred object. They are also therefore sortable; if you sort a list of AcceptElement objects, they will be listed in priority order; the most preferred value will be first. Yes, it should have been the other way around, but it's too late to fix now.rh)jh*jh,hTh.}r(h0]h1]h2]h3]h6]uh8Kh9hh#]rhBXYAcceptElement objects are comparable; the more-preferred object will be "less than" the less-preferred object. They are also therefore sortable; if you sort a list of AcceptElement objects, they will be listed in priority order; the most preferred value will be first. Yes, it should have been the other way around, but it's too late to fix now.rr}r (h(jh)jubaubhF)r }r (h(Uh)jh*Nh,hJh.}r (h3]h2]h0]h1]h6]Uentries]r (hMX<from_str() (circuits.web.headers.AcceptElement class method)h Utrauh8Nh9hh#]ubhh)r}r(h(Uh)jh*Nh,hkh.}r(hmhnXpyh3]h2]h0]h1]h6]hoX classmethodrhqjuh8Nh9hh#]r(hs)r}r(h(X"AcceptElement.from_str(elementstr)h)jh*hvh,hwh.}r(h3]rh ahzh{Xcircuits.web.headersrr}rbh2]h0]h1]h6]rh ahXAcceptElement.from_strhjhuh8Nh9hh#]r(h)r}r(h(jh)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]r hBX classmethod r!r"}r#(h(Uh)jubaubh)r$}r%(h(Xfrom_strh)jh*hvh,hh.}r&(h0]h1]h2]h3]h6]uh8Nh9hh#]r'hBXfrom_strr(r)}r*(h(Uh)j$ubaubh)r+}r,(h(Uh)jh*hvh,hh.}r-(h0]h1]h2]h3]h6]uh8Nh9hh#]r.h)r/}r0(h(X elementstrh.}r1(h0]h1]h2]h3]h6]uh)j+h#]r2hBX elementstrr3r4}r5(h(Uh)j/ubah,hubaubeubh)r6}r7(h(Uh)jh*hvh,hh.}r8(h0]h1]h2]h3]h6]uh8Nh9hh#]ubeubhF)r9}r:(h(Uh)jh*Xk/home/prologic/work/circuits/circuits/web/headers.py:docstring of circuits.web.headers.AcceptElement.qvaluer;h,hJh.}r<(h3]h2]h0]h1]h6]Uentries]r=(hMX5qvalue (circuits.web.headers.AcceptElement attribute)hUtr>auh8Nh9hh#]ubhh)r?}r@(h(Uh)jh*j;h,hkh.}rA(hmhnXpyh3]h2]h0]h1]h6]hoX attributerBhqjBuh8Nh9hh#]rC(hs)rD}rE(h(XAcceptElement.qvalueh)j?h*hvh,hwh.}rF(h3]rGhahzh{Xcircuits.web.headersrHrI}rJbh2]h0]h1]h6]rKhahXAcceptElement.qvaluehjhuh8Nh9hh#]rLh)rM}rN(h(Xqvalueh)jDh*hvh,hh.}rO(h0]h1]h2]h3]h6]uh8Nh9hh#]rPhBXqvaluerQrR}rS(h(Uh)jMubaubaubh)rT}rU(h(Uh)j?h*hvh,hh.}rV(h0]h1]h2]h3]h6]uh8Nh9hh#]rWhO)rX}rY(h(X'The qvalue, or priority, of this value.rZh)jTh*j;h,hTh.}r[(h0]h1]h2]h3]h6]uh8Kh9hh#]r\hBX'The qvalue, or priority, of this value.r]r^}r_(h(jZh)jXubaubaubeubeubeubhF)r`}ra(h(Uh)h&h*Nh,hJh.}rb(h3]h2]h0]h1]h6]Uentries]rc(hMX3CaseInsensitiveDict (class in circuits.web.headers)hUtrdauh8Nh9hh#]ubhh)re}rf(h(Uh)h&h*Nh,hkh.}rg(hmhnXpyh3]h2]h0]h1]h6]hoXclassrhhqjhuh8Nh9hh#]ri(hs)rj}rk(h(X$CaseInsensitiveDict(*args, **kwargs)h)jeh*hvh,hwh.}rl(h3]rmhahzh{Xcircuits.web.headersrnro}rpbh2]h0]h1]h6]rqhahXCaseInsensitiveDictrrhUhuh8Nh9hh#]rs(h)rt}ru(h(Xclass h)jjh*hvh,hh.}rv(h0]h1]h2]h3]h6]uh8Nh9hh#]rwhBXclass rxry}rz(h(Uh)jtubaubh)r{}r|(h(Xcircuits.web.headers.h)jjh*hvh,hh.}r}(h0]h1]h2]h3]h6]uh8Nh9hh#]r~hBXcircuits.web.headers.rr}r(h(Uh)j{ubaubh)r}r(h(jrh)jjh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]rhBXCaseInsensitiveDictrr}r(h(Uh)jubaubh)r}r(h(Uh)jjh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]r(h)r}r(h(X*argsh.}r(h0]h1]h2]h3]h6]uh)jh#]rhBX*argsrr}r(h(Uh)jubah,hubh)r}r(h(X**kwargsh.}r(h0]h1]h2]h3]h6]uh)jh#]rhBX**kwargsrr}r(h(Uh)jubah,hubeubeubh)r}r(h(Uh)jeh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]r(hO)r}r(h(XBases: :class:`dict`h)jh*jh,hTh.}r(h0]h1]h2]h3]h6]uh8Kh9hh#]r(hBXBases: rr}r(h(XBases: h)jubj )r}r(h(X :class:`dict`rh)jh*Nh,jh.}r(UreftypeXclassjjXdictU refdomainXpyrh3]h2]U refexplicith0]h1]h6]jjjjrjjuh8Nh#]rj)r}r(h(jh.}r(h0]h1]r(j jXpy-classreh2]h3]h6]uh)jh#]rhBXdictrr}r(h(Uh)jubah,j&ubaubeubhO)r}r(h(X!A case-insensitive dict subclass.rh)jh*Xj/home/prologic/work/circuits/circuits/web/headers.py:docstring of circuits.web.headers.CaseInsensitiveDictrh,hTh.}r(h0]h1]h2]h3]h6]uh8Kh9hh#]rhBX!A case-insensitive dict subclass.rr}r(h(jh)jubaubhO)r}r(h(X1Each key is changed on entry to str(key).title().rh)jh*jh,hTh.}r(h0]h1]h2]h3]h6]uh8Kh9hh#]rhBX1Each key is changed on entry to str(key).title().rr}r(h(jh)jubaubhF)r}r(h(Uh)jh*Nh,hJh.}r(h3]h2]h0]h1]h6]Uentries]r(hMX7get() (circuits.web.headers.CaseInsensitiveDict method)hUtrauh8Nh9hh#]ubhh)r}r(h(Uh)jh*Nh,hkh.}r(hmhnXpyh3]h2]h0]h1]h6]hoXmethodrhqjuh8Nh9hh#]r(hs)r}r(h(X*CaseInsensitiveDict.get(key, default=None)h)jh*hvh,hwh.}r(h3]rhahzh{Xcircuits.web.headersrr}rbh2]h0]h1]h6]rhahXCaseInsensitiveDict.gethjrhuh8Nh9hh#]r(h)r}r(h(Xgeth)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]rhBXgetrr}r(h(Uh)jubaubh)r}r(h(Uh)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]r(h)r}r(h(Xkeyh.}r(h0]h1]h2]h3]h6]uh)jh#]rhBXkeyrr}r(h(Uh)jubah,hubh)r}r(h(X default=Noneh.}r(h0]h1]h2]h3]h6]uh)jh#]rhBX default=Nonerr}r(h(Uh)jubah,hubeubeubh)r}r(h(Uh)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]ubeubhF)r}r(h(Uh)jh*Nh,hJh.}r(h3]h2]h0]h1]h6]Uentries]r(hMX:update() (circuits.web.headers.CaseInsensitiveDict method)h Utrauh8Nh9hh#]ubhh)r}r(h(Uh)jh*Nh,hkh.}r(hmhnXpyh3]h2]h0]h1]h6]hoXmethodrhqjuh8Nh9hh#]r(hs)r}r(h(XCaseInsensitiveDict.update(E)h)jh*hvh,hwh.}r(h3]rh ahzh{Xcircuits.web.headersrr}rbh2]h0]h1]h6]rh ahXCaseInsensitiveDict.updatehjrhuh8Nh9hh#]r(h)r}r (h(Xupdateh)jh*hvh,hh.}r (h0]h1]h2]h3]h6]uh8Nh9hh#]r hBXupdater r }r(h(Uh)jubaubh)r}r(h(Uh)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]rh)r}r(h(XEh.}r(h0]h1]h2]h3]h6]uh)jh#]rhBXEr}r(h(Uh)jubah,hubaubeubh)r}r(h(Uh)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]ubeubhF)r}r(h(Uh)jh*Nh,hJh.}r(h3]h2]h0]h1]h6]Uentries]r(hMXBfromkeys() (circuits.web.headers.CaseInsensitiveDict class method)hUtr auh8Nh9hh#]ubhh)r!}r"(h(Uh)jh*Nh,hkh.}r#(hmhnXpyh3]h2]h0]h1]h6]hoX classmethodr$hqj$uh8Nh9hh#]r%(hs)r&}r'(h(X-CaseInsensitiveDict.fromkeys(seq, value=None)h)j!h*hvh,hwh.}r((h3]r)hahzh{Xcircuits.web.headersr*r+}r,bh2]h0]h1]h6]r-hahXCaseInsensitiveDict.fromkeyshjrhuh8Nh9hh#]r.(h)r/}r0(h(jh)j&h*hvh,hh.}r1(h0]h1]h2]h3]h6]uh8Nh9hh#]r2hBX classmethod r3r4}r5(h(Uh)j/ubaubh)r6}r7(h(Xfromkeysh)j&h*hvh,hh.}r8(h0]h1]h2]h3]h6]uh8Nh9hh#]r9hBXfromkeysr:r;}r<(h(Uh)j6ubaubh)r=}r>(h(Uh)j&h*hvh,hh.}r?(h0]h1]h2]h3]h6]uh8Nh9hh#]r@(h)rA}rB(h(Xseqh.}rC(h0]h1]h2]h3]h6]uh)j=h#]rDhBXseqrErF}rG(h(Uh)jAubah,hubh)rH}rI(h(X value=Noneh.}rJ(h0]h1]h2]h3]h6]uh)j=h#]rKhBX value=NonerLrM}rN(h(Uh)jHubah,hubeubeubh)rO}rP(h(Uh)j!h*hvh,hh.}rQ(h0]h1]h2]h3]h6]uh8Nh9hh#]ubeubhF)rR}rS(h(Uh)jh*Nh,hJh.}rT(h3]h2]h0]h1]h6]Uentries]rU(hMX>setdefault() (circuits.web.headers.CaseInsensitiveDict method)h UtrVauh8Nh9hh#]ubhh)rW}rX(h(Uh)jh*Nh,hkh.}rY(hmhnXpyh3]h2]h0]h1]h6]hoXmethodrZhqjZuh8Nh9hh#]r[(hs)r\}r](h(X+CaseInsensitiveDict.setdefault(key, x=None)h)jWh*hvh,hwh.}r^(h3]r_h ahzh{Xcircuits.web.headersr`ra}rbbh2]h0]h1]h6]rch ahXCaseInsensitiveDict.setdefaulthjrhuh8Nh9hh#]rd(h)re}rf(h(X setdefaulth)j\h*hvh,hh.}rg(h0]h1]h2]h3]h6]uh8Nh9hh#]rhhBX setdefaultrirj}rk(h(Uh)jeubaubh)rl}rm(h(Uh)j\h*hvh,hh.}rn(h0]h1]h2]h3]h6]uh8Nh9hh#]ro(h)rp}rq(h(Xkeyh.}rr(h0]h1]h2]h3]h6]uh)jlh#]rshBXkeyrtru}rv(h(Uh)jpubah,hubh)rw}rx(h(Xx=Noneh.}ry(h0]h1]h2]h3]h6]uh)jlh#]rzhBXx=Noner{r|}r}(h(Uh)jwubah,hubeubeubh)r~}r(h(Uh)jWh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]ubeubhF)r}r(h(Uh)jh*Nh,hJh.}r(h3]h2]h0]h1]h6]Uentries]r(hMX7pop() (circuits.web.headers.CaseInsensitiveDict method)hUtrauh8Nh9hh#]ubhh)r}r(h(Uh)jh*Nh,hkh.}r(hmhnXpyh3]h2]h0]h1]h6]hoXmethodrhqjuh8Nh9hh#]r(hs)r}r(h(X*CaseInsensitiveDict.pop(key, default=None)h)jh*hvh,hwh.}r(h3]rhahzh{Xcircuits.web.headersrr}rbh2]h0]h1]h6]rhahXCaseInsensitiveDict.pophjrhuh8Nh9hh#]r(h)r}r(h(Xpoph)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]rhBXpoprr}r(h(Uh)jubaubh)r}r(h(Uh)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]r(h)r}r(h(Xkeyh.}r(h0]h1]h2]h3]h6]uh)jh#]rhBXkeyrr}r(h(Uh)jubah,hubh)r}r(h(X default=Noneh.}r(h0]h1]h2]h3]h6]uh)jh#]rhBX default=Nonerr}r(h(Uh)jubah,hubeubeubh)r}r(h(Uh)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]ubeubeubeubhF)r}r(h(Uh)h&h*Nh,hJh.}r(h3]h2]h0]h1]h6]Uentries]r(hMX'Headers (class in circuits.web.headers)h Utrauh8Nh9hh#]ubhh)r}r(h(Uh)h&h*Nh,hkh.}r(hmhnXpyh3]h2]h0]h1]h6]hoXclassrhqjuh8Nh9hh#]r(hs)r}r(h(XHeaders(*args, **kwargs)h)jh*hvh,hwh.}r(h3]rh ahzh{Xcircuits.web.headersrr}rbh2]h0]h1]h6]rh ahXHeadersrhUhuh8Nh9hh#]r(h)r}r(h(Xclass h)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]rhBXclass rr}r(h(Uh)jubaubh)r}r(h(Xcircuits.web.headers.h)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]rhBXcircuits.web.headers.rr}r(h(Uh)jubaubh)r}r(h(jh)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]rhBXHeadersrr}r(h(Uh)jubaubh)r}r(h(Uh)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]r(h)r}r(h(X*argsh.}r(h0]h1]h2]h3]h6]uh)jh#]rhBX*argsrr}r(h(Uh)jubah,hubh)r}r(h(X**kwargsh.}r(h0]h1]h2]h3]h6]uh)jh#]rhBX**kwargsrr}r(h(Uh)jubah,hubeubeubh)r}r(h(Uh)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]r(hO)r}r(h(X8Bases: :class:`circuits.web.headers.CaseInsensitiveDict`rh)jh*jh,hTh.}r(h0]h1]h2]h3]h6]uh8Kh9hh#]r(hBXBases: rr}r(h(XBases: h)jubj )r}r(h(X1:class:`circuits.web.headers.CaseInsensitiveDict`rh)jh*Nh,jh.}r(UreftypeXclassjjX(circuits.web.headers.CaseInsensitiveDictU refdomainXpyrh3]h2]U refexplicith0]h1]h6]jjjjjjuh8Nh#]rj)r}r(h(jh.}r(h0]h1]r(j jXpy-classreh2]h3]h6]uh)jh#]rhBX(circuits.web.headers.CaseInsensitiveDictrr}r(h(Uh)jubah,j&ubaubeubhF)r}r(h(Uh)jh*Xg/home/prologic/work/circuits/circuits/web/headers.py:docstring of circuits.web.headers.Headers.elementsrh,hJh.}r (h3]h2]h0]h1]h6]Uentries]r (hMX0elements() (circuits.web.headers.Headers method)hUtr auh8Nh9hh#]ubhh)r }r (h(Uh)jh*jh,hkh.}r(hmhnXpyh3]h2]h0]h1]h6]hoXmethodrhqjuh8Nh9hh#]r(hs)r}r(h(XHeaders.elements(key)h)j h*hvh,hwh.}r(h3]rhahzh{Xcircuits.web.headersrr}rbh2]h0]h1]h6]rhahXHeaders.elementshjhuh8Nh9hh#]r(h)r}r(h(Xelementsh)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]rhBXelementsrr}r (h(Uh)jubaubh)r!}r"(h(Uh)jh*hvh,hh.}r#(h0]h1]h2]h3]h6]uh8Nh9hh#]r$h)r%}r&(h(Xkeyh.}r'(h0]h1]h2]h3]h6]uh)j!h#]r(hBXkeyr)r*}r+(h(Uh)j%ubah,hubaubeubh)r,}r-(h(Uh)j h*hvh,hh.}r.(h0]h1]h2]h3]h6]uh8Nh9hh#]r/hO)r0}r1(h(X<Return a sorted list of HeaderElements for the given header.r2h)j,h*jh,hTh.}r3(h0]h1]h2]h3]h6]uh8Kh9hh#]r4hBX<Return a sorted list of HeaderElements for the given header.r5r6}r7(h(j2h)j0ubaubaubeubhF)r8}r9(h(Uh)jh*Xf/home/prologic/work/circuits/circuits/web/headers.py:docstring of circuits.web.headers.Headers.get_allr:h,hJh.}r;(h3]h2]h0]h1]h6]Uentries]r<(hMX/get_all() (circuits.web.headers.Headers method)hUtr=auh8Nh9hh#]ubhh)r>}r?(h(Uh)jh*j:h,hkh.}r@(hmhnXpyh3]h2]h0]h1]h6]hoXmethodrAhqjAuh8Nh9hh#]rB(hs)rC}rD(h(XHeaders.get_all(name)h)j>h*hvh,hwh.}rE(h3]rFhahzh{Xcircuits.web.headersrGrH}rIbh2]h0]h1]h6]rJhahXHeaders.get_allhjhuh8Nh9hh#]rK(h)rL}rM(h(Xget_allh)jCh*hvh,hh.}rN(h0]h1]h2]h3]h6]uh8Nh9hh#]rOhBXget_allrPrQ}rR(h(Uh)jLubaubh)rS}rT(h(Uh)jCh*hvh,hh.}rU(h0]h1]h2]h3]h6]uh8Nh9hh#]rVh)rW}rX(h(Xnameh.}rY(h0]h1]h2]h3]h6]uh)jSh#]rZhBXnamer[r\}r](h(Uh)jWubah,hubaubeubh)r^}r_(h(Uh)j>h*hvh,hh.}r`(h0]h1]h2]h3]h6]uh8Nh9hh#]rahO)rb}rc(h(X4Return a list of all the values for the named field.rdh)j^h*j:h,hTh.}re(h0]h1]h2]h3]h6]uh8Kh9hh#]rfhBX4Return a list of all the values for the named field.rgrh}ri(h(jdh)jbubaubaubeubhF)rj}rk(h(Uh)jh*Nh,hJh.}rl(h3]h2]h0]h1]h6]Uentries]rm(hMX.append() (circuits.web.headers.Headers method)h Utrnauh8Nh9hh#]ubhh)ro}rp(h(Uh)jh*Nh,hkh.}rq(hmhnXpyh3]h2]h0]h1]h6]hoXmethodrrhqjruh8Nh9hh#]rs(hs)rt}ru(h(XHeaders.append(key, value)h)joh*hvh,hwh.}rv(h3]rwh ahzh{Xcircuits.web.headersrxry}rzbh2]h0]h1]h6]r{h ahXHeaders.appendhjhuh8Nh9hh#]r|(h)r}}r~(h(Xappendh)jth*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]rhBXappendrr}r(h(Uh)j}ubaubh)r}r(h(Uh)jth*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]r(h)r}r(h(Xkeyh.}r(h0]h1]h2]h3]h6]uh)jh#]rhBXkeyrr}r(h(Uh)jubah,hubh)r}r(h(Xvalueh.}r(h0]h1]h2]h3]h6]uh)jh#]rhBXvaluerr}r(h(Uh)jubah,hubeubeubh)r}r(h(Uh)joh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]ubeubhF)r}r(h(Uh)jh*Xi/home/prologic/work/circuits/circuits/web/headers.py:docstring of circuits.web.headers.Headers.add_headerrh,hJh.}r(h3]h2]h0]h1]h6]Uentries]r(hMX2add_header() (circuits.web.headers.Headers method)hUtrauh8Nh9hh#]ubhh)r}r(h(Uh)jh*jh,hkh.}r(hmhnXpyh3]h2]h0]h1]h6]hoXmethodrhqjuh8Nh9hh#]r(hs)r}r(h(X,Headers.add_header(_name, _value, **_params)h)jh*hvh,hwh.}r(h3]rhahzh{Xcircuits.web.headersrr}rbh2]h0]h1]h6]rhahXHeaders.add_headerhjhuh8Nh9hh#]r(h)r}r(h(X add_headerh)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]rhBX add_headerrr}r(h(Uh)jubaubh)r}r(h(Uh)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]r(h)r}r(h(X_nameh.}r(h0]h1]h2]h3]h6]uh)jh#]rhBX_namerr}r(h(Uh)jubah,hubh)r}r(h(X_valueh.}r(h0]h1]h2]h3]h6]uh)jh#]rhBX_valuerr}r(h(Uh)jubah,hubh)r}r(h(X **_paramsh.}r(h0]h1]h2]h3]h6]uh)jh#]rhBX **_paramsrr}r(h(Uh)jubah,hubeubeubh)r}r(h(Uh)jh*hvh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh#]r(hO)r}r(h(XExtended header setting.rh)jh*jh,hTh.}r(h0]h1]h2]h3]h6]uh8Kh9hh#]rhBXExtended header setting.rr}r(h(jh)jubaubhO)r}r(h(X _name is the header field to add. keyword arguments can be used to set additional parameters for the header field, with underscores converted to dashes. Normally the parameter will be added as key="value" unless value is None, in which case only the key will be added.rh)jh*jh,hTh.}r(h0]h1]h2]h3]h6]uh8Kh9hh#]rhBX _name is the header field to add. keyword arguments can be used to set additional parameters for the header field, with underscores converted to dashes. Normally the parameter will be added as key="value" unless value is None, in which case only the key will be added.rr}r(h(jh)jubaubhO)r}r(h(XExample:rh)jh*jh,hTh.}r(h0]h1]h2]h3]h6]uh8Kh9hh#]rhBXExample:rr}r(h(jh)jubaubhO)r}r(h(XEh.add_header('content-disposition', 'attachment', filename='bud.gif')rh)jh*jh,hTh.}r(h0]h1]h2]h3]h6]uh8K h9hh#]rhBXEh.add_header('content-disposition', 'attachment', filename='bud.gif')rr}r(h(jh)jubaubhO)r}r(h(XNote that unlike the corresponding 'email.Message' method, this does *not* handle '(charset, language, value)' tuples: all values must be strings or None.h)jh*jh,hTh.}r(h0]h1]h2]h3]h6]uh8K h9hh#]r(hBXENote that unlike the corresponding 'email.Message' method, this does rr}r(h(XENote that unlike the corresponding 'email.Message' method, this does h)jubcdocutils.nodes emphasis r)r}r(h(X*not*h.}r(h0]h1]h2]h3]h6]uh)jh#]rhBXnotrr}r(h(Uh)jubah,UemphasisrubhBXP handle '(charset, language, value)' tuples: all values must be strings or None.rr}r(h(XP handle '(charset, language, value)' tuples: all values must be strings or None.h)jubeubeubeubeubeubeubah(UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr ]r Uautofootnote_refsr ]r Usymbol_footnote_refsr ]rU citationsr]rh9hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksr KUrecord_dependenciesr!NU rfc_base_urlr"Uhttp://tools.ietf.org/html/r#U tracebackr$Upep_referencesr%NUstrip_commentsr&NU toc_backlinksr'Uentryr(U language_coder)Uenr*U datestampr+NU report_levelr,KU _destinationr-NU halt_levelr.KU strip_classesr/Nh?NUerror_encoding_error_handlerr0Ubackslashreplacer1Udebugr2NUembed_stylesheetr3Uoutput_encoding_error_handlerr4Ustrictr5U sectnum_xformr6KUdump_transformsr7NU docinfo_xformr8KUwarning_streamr9NUpep_file_url_templater:Upep-%04dr;Uexit_status_levelr<KUconfigr=NUstrict_visitorr>NUcloak_email_addressesr?Utrim_footnote_reference_spacer@UenvrANUdump_pseudo_xmlrBNUexpose_internalsrCNUsectsubtitle_xformrDU source_linkrENUrfc_referencesrFNUoutput_encodingrGUutf-8rHU source_urlrINUinput_encodingrJU utf-8-sigrKU_disable_configrLNU id_prefixrMUU tab_widthrNKUerror_encodingrOUUTF-8rPU_sourcerQh+Ugettext_compactrRU generatorrSNUdump_internalsrTNU smart_quotesrUU pep_base_urlrVUhttp://www.python.org/dev/peps/rWUsyntax_highlightrXUlongrYUinput_encoding_error_handlerrZj5Uauto_id_prefixr[Uidr\Udoctitle_xformr]Ustrip_elements_with_classesr^NU _config_filesr_]Ufile_insertion_enabledr`U raw_enabledraKU dump_settingsrbNubUsymbol_footnote_startrcKUidsrd}re(hjuhhhjCh jh"h&h5cdocutils.nodes target rf)rg}rh(h(Uh)h&h*hIh,Utargetrih.}rj(h0]h3]rkh5ah2]Uismodh1]h6]uh8Kh9hh#]ubh jh jh jthjhjhjhjhj&hhthjhjDhj;hjjh j\uUsubstitution_namesrl}rmh,h9h.}rn(h0]h3]h2]Usourceh+h1]h6]uU footnotesro]rpUrefidsrq}rrub.circuits-3.1.0/docs/build/doctrees/api/circuits.protocols.irc.doctree0000644000014400001440000000661012425011104026725 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}qXcircuits.protocols.irc moduleqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUcircuits-protocols-irc-moduleqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXG/home/prologic/work/circuits/docs/source/api/circuits.protocols.irc.rstqUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq ]Uidsq!]q"(Xmodule-circuits.protocols.ircq#heUnamesq$]q%hauUlineq&KUdocumentq'hh]q((cdocutils.nodes title q))q*}q+(hXcircuits.protocols.irc moduleq,hhhhhUtitleq-h}q.(h]h]h ]h!]h$]uh&Kh'hh]q/cdocutils.nodes Text q0Xcircuits.protocols.irc moduleq1q2}q3(hh,hh*ubaubcsphinx.addnodes index q4)q5}q6(hUhhhU q7hUindexq8h}q9(h!]h ]h]h]h$]Uentries]q:(Usingleq;Xcircuits.protocols.irc (module)Xmodule-circuits.protocols.ircUtq}q?(hXInternet Relay Chat Protocolq@hhhXc/home/prologic/work/circuits/circuits/protocols/irc/__init__.py:docstring of circuits.protocols.ircqAhU paragraphqBh}qC(h]h]h ]h!]h$]uh&Kh'hh]qDh0XInternet Relay Chat ProtocolqEqF}qG(hh@hh>ubaubh=)qH}qI(hXThis package implements the Internet Relay Chat Protocol or commonly known as IRC. Support for both server and client is implemented.qJhhhhAhhBh}qK(h]h]h ]h!]h$]uh&Kh'hh]qLh0XThis package implements the Internet Relay Chat Protocol or commonly known as IRC. Support for both server and client is implemented.qMqN}qO(hhJhhHubaubeubahUU transformerqPNU footnote_refsqQ}qRUrefnamesqS}qTUsymbol_footnotesqU]qVUautofootnote_refsqW]qXUsymbol_footnote_refsqY]qZU citationsq[]q\h'hU current_lineq]NUtransform_messagesq^]q_Ureporterq`NUid_startqaKU autofootnotesqb]qcU citation_refsqd}qeUindirect_targetsqf]qgUsettingsqh(cdocutils.frontend Values qioqj}qk(Ufootnote_backlinksqlKUrecord_dependenciesqmNU rfc_base_urlqnUhttp://tools.ietf.org/html/qoU tracebackqpUpep_referencesqqNUstrip_commentsqrNU toc_backlinksqsUentryqtU language_codequUenqvU datestampqwNU report_levelqxKU _destinationqyNU halt_levelqzKU strip_classesq{Nh-NUerror_encoding_error_handlerq|Ubackslashreplaceq}Udebugq~NUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU 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_sourceqhUgettext_compactqU 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_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hhh#cdocutils.nodes target q)q}q(hUhhhh7hUtargetqh}q(h]h!]qh#ah ]Uismodh]h$]uh&Kh'hh]ubuUsubstitution_namesq}qhh'h}q(h]h!]h ]Usourcehh]h$]uU footnotesq]qUrefidsq}qub.circuits-3.1.0/docs/build/doctrees/api/circuits.io.serial.doctree0000644000014400001440000002062212425011103026010 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X!circuits.io.serial.Serial.channelqXcircuits.io.serial moduleqNXcircuits.io.serial.Serial.writeqXcircuits.io.serial.Serialq Xcircuits.io.serial.Serial.closeq uUsubstitution_defsq }q Uparse_messagesq ]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhUcircuits-io-serial-moduleqhhh h h h uUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXC/home/prologic/work/circuits/docs/source/api/circuits.io.serial.rstqUtagnameqUsectionqU attributesq }q!(Udupnamesq"]Uclassesq#]Ubackrefsq$]Uidsq%]q&(Xmodule-circuits.io.serialq'heUnamesq(]q)hauUlineq*KUdocumentq+hh]q,(cdocutils.nodes title q-)q.}q/(hXcircuits.io.serial moduleq0hhhhhUtitleq1h }q2(h"]h#]h$]h%]h(]uh*Kh+hh]q3cdocutils.nodes Text q4Xcircuits.io.serial moduleq5q6}q7(hh0hh.ubaubcsphinx.addnodes index q8)q9}q:(hUhhhU q;hUindexq(Usingleq?Xcircuits.io.serial (module)Xmodule-circuits.io.serialUtq@auh*Kh+hh]ubcdocutils.nodes paragraph qA)qB}qC(hX Serial I/OqDhhhXR/home/prologic/work/circuits/circuits/io/serial.py:docstring of circuits.io.serialqEhU paragraphqFh }qG(h"]h#]h$]h%]h(]uh*Kh+hh]qHh4X Serial I/OqIqJ}qK(hhDhhBubaubhA)qL}qM(hX0This module implements basic Serial (RS232) I/O.qNhhhhEhhFh }qO(h"]h#]h$]h%]h(]uh*Kh+hh]qPh4X0This module implements basic Serial (RS232) I/O.qQqR}qS(hhNhhLubaubh8)qT}qU(hUhhhNhhqghUdesc_signatureqhh }qi(h%]qjh aUmoduleqkcdocutils.nodes reprunicode qlXcircuits.io.serialqmqn}qobh$]h"]h#]h(]qph aUfullnameqqXSerialqrUclassqsUUfirstqtuh*Nh+hh]qu(csphinx.addnodes desc_annotation qv)qw}qx(hXclass hhehhghUdesc_annotationqyh }qz(h"]h#]h$]h%]h(]uh*Nh+hh]q{h4Xclass q|q}}q~(hUhhwubaubcsphinx.addnodes desc_addname q)q}q(hXcircuits.io.serial.hhehhghU desc_addnameqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qh4Xcircuits.io.serial.qq}q(hUhhubaubcsphinx.addnodes desc_name q)q}q(hhrhhehhghU desc_nameqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qh4XSerialqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhehhghUdesc_parameterlistqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]q(csphinx.addnodes desc_parameter q)q}q(hXporth }q(h"]h#]h$]h%]h(]uhhh]qh4Xportqq}q(hUhhubahUdesc_parameterqubh)q}q(hXbaudrate=115200h }q(h"]h#]h$]h%]h(]uhhh]qh4Xbaudrate=115200qq}q(hUhhubahhubh)q}q(hX bufsize=4096h }q(h"]h#]h$]h%]h(]uhhh]qh4X bufsize=4096qq}q(hUhhubahhubh)q}q(hX timeout=0.2h }q(h"]h#]h$]h%]h(]uhhh]qh4X timeout=0.2qq}q(hUhhubahhubh)q}q(hXchannel='serial'h }q(h"]h#]h$]h%]h(]uhhh]qh4Xchannel='serial'qq}q(hUhhubahhubeubeubcsphinx.addnodes desc_content q)q}q(hUhhZhhghU desc_contentqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]q(hA)q}q(hX2Bases: :class:`circuits.core.components.Component`qhhhU qhhFh }q(h"]h#]h$]h%]h(]uh*Kh+hh]q(h4XBases: qȅq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX+:class:`circuits.core.components.Component`qhhhNhU pending_xrefqh }q(UreftypeXclassUrefwarnqщU reftargetqX"circuits.core.components.ComponentU refdomainXpyqh%]h$]U refexplicith"]h#]h(]UrefdocqXapi/circuits.io.serialqUpy:classqhrU py:moduleqXcircuits.io.serialquh*Nh]qcdocutils.nodes literal q)q}q(hhh }q(h"]h#]q(UxrefqhXpy-classqeh$]h%]h(]uhhh]qh4X"circuits.core.components.Componentq⅁q}q(hUhhubahUliteralqubaubeubh8)q}q(hUhhhNhhqhhhh }q(h%]qhahkhlXcircuits.io.serialqq}qbh$]h"]h#]h(]qhahqXSerial.channelhshrhtuh*Nh+hh]q(h)q}q(hXchannelhhhhhhh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qh4Xchannelqq}r(hUhhubaubhv)r}r(hX = 'serial'hhhhhhyh }r(h"]h#]h$]h%]h(]uh*Nh+hh]rh4X = 'serial'rr}r(hUhjubaubeubh)r}r (hUhhhhhhh }r (h"]h#]h$]h%]h(]uh*Nh+hh]ubeubh8)r }r (hUhhhNhh(h)r?}r@(hXwritehj5hhghhh }rA(h"]h#]h$]h%]h(]uh*Nh+hh]rBh4XwriterCrD}rE(hUhj?ubaubh)rF}rG(hUhj5hhghhh }rH(h"]h#]h$]h%]h(]uh*Nh+hh]rIh)rJ}rK(hXdatah }rL(h"]h#]h$]h%]h(]uhjFh]rMh4XdatarNrO}rP(hUhjJubahhubaubeubh)rQ}rR(hUhj0hhghhh }rS(h"]h#]h$]h%]h(]uh*Nh+hh]ubeubeubeubeubahUU transformerrTNU footnote_refsrU}rVUrefnamesrW}rXUsymbol_footnotesrY]rZUautofootnote_refsr[]r\Usymbol_footnote_refsr]]r^U citationsr_]r`h+hU current_lineraNUtransform_messagesrb]rcUreporterrdNUid_startreKU autofootnotesrf]rgU citation_refsrh}riUindirect_targetsrj]rkUsettingsrl(cdocutils.frontend Values rmorn}ro(Ufootnote_backlinksrpKUrecord_dependenciesrqNU rfc_base_urlrrUhttp://tools.ietf.org/html/rsU tracebackrtUpep_referencesruNUstrip_commentsrvNU toc_backlinksrwUentryrxU language_coderyUenrzU datestampr{NU report_levelr|KU _destinationr}NU halt_levelr~KU strip_classesrNh1NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhhhh hehj5h'cdocutils.nodes target r)r}r(hUhhhh;hUtargetrh }r(h"]h%]rh'ah$]Uismodh#]h(]uh*Kh+hh]ubh juUsubstitution_namesr}rhh+h }r(h"]h%]h$]Usourcehh#]h(]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.protocols.doctree0000644000014400001440000001032412425011104026146 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xmodule contentsqNX submodulesqNXcircuits.protocols packageqNuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hUmodule-contentsqhU submodulesqhUcircuits-protocols-packagequUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXC/home/prologic/work/circuits/docs/source/api/circuits.protocols.rstqUtagnameqUsectionqU attributesq }q!(Udupnamesq"]Uclassesq#]Ubackrefsq$]Uidsq%]q&haUnamesq']q(hauUlineq)KUdocumentq*hh]q+(cdocutils.nodes title q,)q-}q.(hXcircuits.protocols packageq/hhhhhUtitleq0h }q1(h"]h#]h$]h%]h']uh)Kh*hh]q2cdocutils.nodes Text q3Xcircuits.protocols packageq4q5}q6(hh/hh-ubaubh)q7}q8(hUhhhhhhh }q9(h"]h#]h$]h%]q:hah']q;hauh)Kh*hh]q<(h,)q=}q>(hX Submodulesq?hh7hhhh0h }q@(h"]h#]h$]h%]h']uh)Kh*hh]qAh3X SubmodulesqBqC}qD(hh?hh=ubaubcdocutils.nodes compound qE)qF}qG(hUhh7hhhUcompoundqHh }qI(h"]h#]qJUtoctree-wrapperqKah$]h%]h']uh)K h*hh]qLcsphinx.addnodes toctree qM)qN}qO(hUhhFhhhUtoctreeqPh }qQ(UnumberedqRKU includehiddenqShXapi/circuits.protocolsqTU titlesonlyqUUglobqVh%]h$]h"]h#]h']UentriesqW]qX(NXapi/circuits.protocols.httpqYqZNXapi/circuits.protocols.ircq[q\NXapi/circuits.protocols.lineq]q^NX api/circuits.protocols.websocketq_q`eUhiddenqaU includefilesqb]qc(hYh[h]h_eUmaxdepthqdJuh)Kh]ubaubeubh)qe}qf(hUhhhhhhh }qg(h"]h#]h$]h%]qh(Xmodule-circuits.protocolsqiheh']qjhauh)Kh*hh]qk(h,)ql}qm(hXModule contentsqnhhehhhh0h }qo(h"]h#]h$]h%]h']uh)Kh*hh]qph3XModule contentsqqqr}qs(hhnhhlubaubcsphinx.addnodes index qt)qu}qv(hUhhehU qwhUindexqxh }qy(h%]h$]h"]h#]h']Uentries]qz(Usingleq{Xcircuits.protocols (module)Xmodule-circuits.protocolsUtq|auh)Kh*hh]ubcdocutils.nodes paragraph q})q~}q(hXNetworking ProtocolsqhhehX[/home/prologic/work/circuits/circuits/protocols/__init__.py:docstring of circuits.protocolsqhU paragraphqh }q(h"]h#]h$]h%]h']uh)Kh*hh]qh3XNetworking Protocolsqq}q(hhhh~ubaubh})q}q(hXMThis package contains components that implement various networking protocols.qhhehhhhh }q(h"]h#]h$]h%]h']uh)Kh*hh]qh3XMThis package contains components that implement various networking protocols.qq}q(hhhhubaubeubeubahUU 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_classesqNh0NUerror_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_sourceqhUgettext_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_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hicdocutils.nodes target q)q}q(hUhhehhwhUtargetqh }q(h"]h%]qhiah$]Uismodh#]h']uh)Kh*hh]ubhhehhhh7uUsubstitution_namesq}qhh*h }q(h"]h%]h$]Usourcehh#]h']uU footnotesq]qUrefidsq}qub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.utils.doctree0000644000014400001440000010262112425011106026042 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.web.utils moduleqNXcircuits.web.utils.varianceqX$circuits.web.utils.IOrderedDict.copyqXcircuits.web.utils.parse_bodyq Xcircuits.web.utils.parse_qsq X#circuits.web.utils.IOrderedDict.popq X&circuits.web.utils.IOrderedDict.updateq X(circuits.web.utils.IOrderedDict.fromkeysq X'circuits.web.utils.IOrderedDict.popitemqXcircuits.web.utils.stddevqX#circuits.web.utils.IOrderedDict.getqXcircuits.web.utils.dictformqXcircuits.web.utils.get_rangesqX#circuits.web.utils.is_ssl_handshakeqX%circuits.web.utils.IOrderedDict.clearqX%circuits.web.utils.IOrderedDict.itemsqX&circuits.web.utils.IOrderedDict.valuesqXcircuits.web.utils.averageqX*circuits.web.utils.IOrderedDict.setdefaultqX$circuits.web.utils.IOrderedDict.keysqXcircuits.web.utils.compressqXcircuits.web.utils.IOrderedDictquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceq NU decorationq!NUautofootnote_startq"KUnameidsq#}q$(hUcircuits-web-utils-moduleq%hhhhh h h h h h h h h h hhhhhhhhhhhhhhhhhhhhhhhhhhhhuUchildrenq&]q'cdocutils.nodes section q()q)}q*(U rawsourceq+UUparentq,hUsourceq-XC/home/prologic/work/circuits/docs/source/api/circuits.web.utils.rstq.Utagnameq/Usectionq0U attributesq1}q2(Udupnamesq3]Uclassesq4]Ubackrefsq5]Uidsq6]q7(Xmodule-circuits.web.utilsq8h%eUnamesq9]q:hauUlineq;KUdocumentq)q?}q@(h+Xcircuits.web.utils moduleqAh,h)h-h.h/UtitleqBh1}qC(h3]h4]h5]h6]h9]uh;KhqLh/UindexqMh1}qN(h6]h5]h3]h4]h9]Uentries]qO(UsingleqPXcircuits.web.utils (module)Xmodule-circuits.web.utilsUtqQauh;Khqxh/Udesc_signatureqyh1}qz(h6]q{haUmoduleq|cdocutils.nodes reprunicode q}Xcircuits.web.utilsq~q}qbh5]h3]h4]h9]qhaUfullnameqXaverageqUclassqUUfirstquh;Nhr?}r@(h+Uh,j:ubah/hubh)rA}rB(h+Xparamsh1}rC(h3]h4]h5]h6]h9]uh,j/h&]rDhEXparamsrErF}rG(h+Uh,jAubah/hubeubeubh)rH}rI(h+Uh,jh-hxh/hh1}rJ(h3]h4]h5]h6]h9]uh;Nh dicth,jQh-hxh/hyh1}rX(h6]rYh ah|h}Xcircuits.web.utilsrZr[}r\bh5]h3]h4]h9]r]h ahXparse_qsr^hUhuh;Nh}r?(h+j:h,j8ubaubhR)r@}rA(h+XEach (start, stop) tuple will be composed of two ints, which are suitable for use in a slicing operation. That is, the header "Range: bytes=3-6", if applied against a Python string, is requesting resource[3:7]. This function will return the list [(3, 7)].rBh,j4h-jh/hWh1}rC(h3]h4]h5]h6]h9]uh;Khrh/hWh1}r(h3]h4]h5]h6]h9]uh;KhDictionary that remembers insertion order with insensitive keyrh,jh-X_/home/prologic/work/circuits/circuits/web/utils.py:docstring of circuits.web.utils.IOrderedDictrh/hWh1}r(h3]h4]h5]h6]h9]uh;KhDictionary that remembers insertion order with insensitive keyrr}r(h+jh,jubaubhR)r}r(h+XInitialize an ordered dictionary. Signature is the same as for regular dictionaries, but keyword arguments are not recommended because their insertion order is arbitrary.rh,jh-jh/hWh1}r(h3]h4]h5]h6]h9]uh;Kh None. Remove all items from od.h,jh-hxh/hyh1}r(h6]rhah|h}Xcircuits.web.utilsrr}rbh5]h3]h4]h9]rhahXIOrderedDict.clearhjbhuh;Nh D.get(k,d), also set D[k]=d if k not in Dh,j3h-hxh/hyh1}r:(h6]r;hah|h}Xcircuits.web.utilsr<r=}r>bh5]h3]h4]h9]r?hahXIOrderedDict.setdefaulthjbhuh;Nh None. Update D from mapping/iterable E and F.h,jnh-hxh/hyh1}ru(h6]rvh ah|h}Xcircuits.web.utilsrwrx}rybh5]h3]h4]h9]rzh ahXIOrderedDict.updatehjbhuh;Nh v, remove specified key and return the corresponding value.h,jh-hxh/hyh1}r(h6]rh ah|h}Xcircuits.web.utilsrr}rbh5]h3]h4]h9]rh ahXIOrderedDict.pophjbhuh;Nh list of D's keysh,jh-hxh/hyh1}r(h6]rhah|h}Xcircuits.web.utilsrr}rbh5]h3]h4]h9]rhahXIOrderedDict.keyshjbhuh;Nh list of D's valuesh,jh-hxh/hyh1}r (h6]r!hah|h}Xcircuits.web.utilsr"r#}r$bh5]h3]h4]h9]r%hahXIOrderedDict.valueshjbhuh;Nh(hPX0items() (circuits.web.utils.IOrderedDict method)hUtr?auh;Nh list of D's (key, value) pairs, as 2-tuplesh,j@h-hxh/hyh1}rG(h6]rHhah|h}Xcircuits.web.utilsrIrJ}rKbh5]h3]h4]h9]rLhahXIOrderedDict.itemshjbhuh;Nh (k, v), return and remove a (key, value) pair.h,jhh-hxh/hyh1}ro(h6]rphah|h}Xcircuits.web.utilsrqrr}rsbh5]h3]h4]h9]rthahXIOrderedDict.popitemhjbhuh;Nh a shallow copy of odh,jh-hxh/hyh1}r(h6]rhah|h}Xcircuits.web.utilsrr}rbh5]h3]h4]h9]rhahXIOrderedDict.copyhjbhuh;Nh New ordered dictionary with keys from Sh,jh-hxh/hyh1}r(h6]rh ah|h}Xcircuits.web.utilsrr}rbh5]h3]h4]h9]rh ahXIOrderedDict.fromkeyshjbhuh;Nh(h+j9h,j7ubaubaubeubeubah+UU transformerr?NU footnote_refsr@}rAUrefnamesrB}rCUsymbol_footnotesrD]rEUautofootnote_refsrF]rGUsymbol_footnote_refsrH]rIU citationsrJ]rKhcdocutils.nodes Text q?Xcircuits.web.servers moduleq@qA}qB(h%h;h&h9ubaubcsphinx.addnodes index qC)qD}qE(h%Uh&h#h'U qFh)UindexqGh+}qH(h0]h/]h-]h.]h3]Uentries]qI(UsingleqJXcircuits.web.servers (module)Xmodule-circuits.web.serversUtqKauh5Kh6hh ]ubcdocutils.nodes paragraph qL)qM}qN(h%X Web ServersqOh&h#h'XV/home/prologic/work/circuits/circuits/web/servers.py:docstring of circuits.web.serversqPh)U paragraphqQh+}qR(h-]h.]h/]h0]h3]uh5Kh6hh ]qSh?X Web ServersqTqU}qV(h%hOh&hMubaubhL)qW}qX(h%X9This module implements the several Web Server components.qYh&h#h'hPh)hQh+}qZ(h-]h.]h/]h0]h3]uh5Kh6hh ]q[h?X9This module implements the several Web Server components.q\q]}q^(h%hYh&hWubaubhC)q_}q`(h%Uh&h#h'Nh)hGh+}qa(h0]h/]h-]h.]h3]Uentries]qb(hJX*BaseServer (class in circuits.web.servers)hUtqcauh5Nh6hh ]ubcsphinx.addnodes desc qd)qe}qf(h%Uh&h#h'Nh)Udescqgh+}qh(UnoindexqiUdomainqjXpyqkh0]h/]h-]h.]h3]UobjtypeqlXclassqmUdesctypeqnhmuh5Nh6hh ]qo(csphinx.addnodes desc_signature qp)qq}qr(h%XNBaseServer(bind, encoding='utf-8', secure=False, certfile=None, channel='web')h&heh'U qsh)Udesc_signatureqth+}qu(h0]qvhaUmoduleqwcdocutils.nodes reprunicode qxXcircuits.web.serversqyqz}q{bh/]h-]h.]h3]q|haUfullnameq}X BaseServerq~UclassqUUfirstquh5Nh6hh ]q(csphinx.addnodes desc_annotation q)q}q(h%Xclass h&hqh'hsh)Udesc_annotationqh+}q(h-]h.]h/]h0]h3]uh5Nh6hh ]qh?Xclass qq}q(h%Uh&hubaubcsphinx.addnodes desc_addname q)q}q(h%Xcircuits.web.servers.h&hqh'hsh)U desc_addnameqh+}q(h-]h.]h/]h0]h3]uh5Nh6hh ]qh?Xcircuits.web.servers.qq}q(h%Uh&hubaubcsphinx.addnodes desc_name q)q}q(h%h~h&hqh'hsh)U desc_nameqh+}q(h-]h.]h/]h0]h3]uh5Nh6hh ]qh?X BaseServerqq}q(h%Uh&hubaubcsphinx.addnodes desc_parameterlist q)q}q(h%Uh&hqh'hsh)Udesc_parameterlistqh+}q(h-]h.]h/]h0]h3]uh5Nh6hh ]q(csphinx.addnodes desc_parameter q)q}q(h%Xbindh+}q(h-]h.]h/]h0]h3]uh&hh ]qh?Xbindqq}q(h%Uh&hubah)Udesc_parameterqubh)q}q(h%Xencoding='utf-8'h+}q(h-]h.]h/]h0]h3]uh&hh ]qh?Xencoding='utf-8'qq}q(h%Uh&hubah)hubh)q}q(h%X secure=Falseh+}q(h-]h.]h/]h0]h3]uh&hh ]qh?X secure=Falseqq}q(h%Uh&hubah)hubh)q}q(h%X certfile=Noneh+}q(h-]h.]h/]h0]h3]uh&hh ]qh?X certfile=Noneqq}q(h%Uh&hubah)hubh)q}q(h%X channel='web'h+}q(h-]h.]h/]h0]h3]uh&hh ]qh?X channel='web'qŅq}q(h%Uh&hubah)hubeubeubcsphinx.addnodes desc_content q)q}q(h%Uh&heh'hsh)U desc_contentqh+}q(h-]h.]h/]h0]h3]uh5Nh6hh ]q(hL)q}q(h%X6Bases: :class:`circuits.core.components.BaseComponent`h&hh'U qh)hQh+}q(h-]h.]h/]h0]h3]uh5Kh6hh ]q(h?XBases: qӅq}q(h%XBases: h&hubcsphinx.addnodes pending_xref q)q}q(h%X/:class:`circuits.core.components.BaseComponent`qh&hh'Nh)U pending_xrefqh+}q(UreftypeXclassUrefwarnq܉U reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqh0]h/]U refexplicith-]h.]h3]UrefdocqXapi/circuits.web.serversqUpy:classqh~U py:moduleqXcircuits.web.serversquh5Nh ]qcdocutils.nodes literal q)q}q(h%hh+}q(h-]h.]q(UxrefqhXpy-classqeh/]h0]h3]uh&hh ]qh?X&circuits.core.components.BaseComponentq텁q}q(h%Uh&hubah)UliteralqubaubeubhL)q}q(h%XCreate a Base Web Serverqh&hh'Xa/home/prologic/work/circuits/circuits/web/servers.py:docstring of circuits.web.servers.BaseServerqh)hQh+}q(h-]h.]h/]h0]h3]uh5Kh6hh ]qh?XCreate a Base Web Serverqq}q(h%hh&hubaubhL)q}q(h%XpCreate a Base Web Server (HTTP) bound to the IP Address / Port or UNIX Socket specified by the 'bind' parameter.qh&hh'hh)hQh+}q(h-]h.]h/]h0]h3]uh5Kh6hh ]qh?XpCreate a Base Web Server (HTTP) bound to the IP Address / Port or UNIX Socket specified by the 'bind' parameter.qr}r(h%hh&hubaubcdocutils.nodes field_list r)r}r(h%Uh&hh'Nh)U field_listrh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]r(cdocutils.nodes field r)r }r (h%Uh+}r (h-]h.]h/]h0]h3]uh&jh ]r (cdocutils.nodes field_name r )r}r(h%Uh+}r(h-]h.]h/]h0]h3]uh&j h ]rh?X Variablesrr}r(h%Uh&jubah)U field_namerubcdocutils.nodes field_body r)r}r(h%Uh+}r(h-]h.]h/]h0]h3]uh&j h ]rhL)r}r(h%Uh+}r(h-]h.]h/]h0]h3]uh&jh ]r(h)r}r (h%Uh+}r!(UreftypeUobjr"U reftargetXserverr#U refdomainhkh0]h/]U refexplicith-]h.]h3]uh&jh ]r$cdocutils.nodes strong r%)r&}r'(h%j#h+}r((h-]h.]h/]h0]h3]uh&jh ]r)h?Xserverr*r+}r,(h%Uh&j&ubah)Ustrongr-ubah)hubh?X -- r.r/}r0(h%Uh&jubh?X(Reference to underlying Server Componentr1r2}r3(h%X(Reference to underlying Server Componentr4h&jubeh)hQubah)U field_bodyr5ubeh)Ufieldr6ubj)r7}r8(h%Uh+}r9(h-]h.]h/]h0]h3]uh&jh ]r:(j )r;}r<(h%Uh+}r=(h-]h.]h/]h0]h3]uh&j7h ]r>h?X Parametersr?r@}rA(h%Uh&j;ubah)jubj)rB}rC(h%Uh+}rD(h-]h.]h/]h0]h3]uh&j7h ]rEhL)rF}rG(h%Uh+}rH(h-]h.]h/]h0]h3]uh&jBh ]rI(j%)rJ}rK(h%Xbindh+}rL(h-]h.]h/]h0]h3]uh&jFh ]rMh?XbindrNrO}rP(h%Uh&jJubah)j-ubh?X (rQrR}rS(h%Uh&jFubh)rT}rU(h%Uh+}rV(Ureftypej"U reftargetX#Instance of int, list, tuple or strrWU refdomainhkh0]h/]U refexplicith-]h.]h3]uh&jFh ]rXcdocutils.nodes emphasis rY)rZ}r[(h%jWh+}r\(h-]h.]h/]h0]h3]uh&jTh ]r]h?X#Instance of int, list, tuple or strr^r_}r`(h%Uh&jZubah)Uemphasisraubah)hubh?X)rb}rc(h%Uh&jFubh?X -- rdre}rf(h%Uh&jFubh?X,IP Address / Port or UNIX Socket to bind to.rgrh}ri(h%X,IP Address / Port or UNIX Socket to bind to.rjh&jFubeh)hQubah)j5ubeh)j6ubeubhL)rk}rl(h%XIThe 'bind' parameter is quite flexible with what valid values it accepts.rmh&hh'hh)hQh+}rn(h-]h.]h/]h0]h3]uh5K h6hh ]roh?XIThe 'bind' parameter is quite flexible with what valid values it accepts.rprq}rr(h%jmh&jkubaubhL)rs}rt(h%XIf an int is passed, a TCPServer will be created. The Server will be bound to the Port given by the 'bind' argument and the bound interface will default (normally to "0.0.0.0").ruh&hh'hh)hQh+}rv(h-]h.]h/]h0]h3]uh5K h6hh ]rwh?XIf an int is passed, a TCPServer will be created. The Server will be bound to the Port given by the 'bind' argument and the bound interface will default (normally to "0.0.0.0").rxry}rz(h%juh&jsubaubhL)r{}r|(h%XIf a list or tuple is passed, a TCPServer will be created. The Server will be bound to the Port given by the 2nd item in the 'bind' argument and the bound interface will be the 1st item.r}h&hh'hh)hQh+}r~(h-]h.]h/]h0]h3]uh5Kh6hh ]rh?XIf a list or tuple is passed, a TCPServer will be created. The Server will be bound to the Port given by the 2nd item in the 'bind' argument and the bound interface will be the 1st item.rr}r(h%j}h&j{ubaubhL)r}r(h%XIf a str is passed and it contains the ':' character, this is assumed to be a request to bind to an IP Address / Port. A TCpServer will thus be created and the IP Address and Port will be determined by splitting the string given by the 'bind' argument.rh&hh'hh)hQh+}r(h-]h.]h/]h0]h3]uh5Kh6hh ]rh?XIf a str is passed and it contains the ':' character, this is assumed to be a request to bind to an IP Address / Port. A TCpServer will thus be created and the IP Address and Port will be determined by splitting the string given by the 'bind' argument.rr}r(h%jh&jubaubhL)r}r(h%XOtherwise if a str is passed and it does not contain the ':' character, a file path is assumed and a UNIXServer is created and bound to the file given by the 'bind' argument.rh&hh'hh)hQh+}r(h-]h.]h/]h0]h3]uh5Kh6hh ]rh?XOtherwise if a str is passed and it does not contain the ':' character, a file path is assumed and a UNIXServer is created and bound to the file given by the 'bind' argument.rr}r(h%jh&jubaubhL)r}r(h%XDx.__init__(...) initializes x; see x.__class__.__doc__ for signaturerh&hh'hh)hQh+}r(h-]h.]h/]h0]h3]uh5Kh6hh ]rh?XDx.__init__(...) initializes x; see x.__class__.__doc__ for signaturerr}r(h%jh&jubaubhC)r}r(h%Uh&hh'Nh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJX3channel (circuits.web.servers.BaseServer attribute)hUtrauh5Nh6hh ]ubhd)r}r(h%Uh&hh'Nh)hgh+}r(hihjXpyh0]h/]h-]h.]h3]hlX attributerhnjuh5Nh6hh ]r(hp)r}r(h%XBaseServer.channelh&jh'U rh)hth+}r(h0]rhahwhxXcircuits.web.serversrr}rbh/]h-]h.]h3]rhah}XBaseServer.channelhh~huh5Nh6hh ]r(h)r}r(h%Xchannelh&jh'jh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xchannelrr}r(h%Uh&jubaubh)r}r(h%X = 'web'h&jh'jh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?X = 'web'rr}r(h%Uh&jubaubeubh)r}r(h%Uh&jh'jh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]ubeubhC)r}r(h%Uh&hh'Nh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJX0host (circuits.web.servers.BaseServer attribute)hUtrauh5Nh6hh ]ubhd)r}r(h%Uh&hh'Nh)hgh+}r(hihjXpyh0]h/]h-]h.]h3]hlX attributerhnjuh5Nh6hh ]r(hp)r}r(h%XBaseServer.hosth&jh'hsh)hth+}r(h0]rhahwhxXcircuits.web.serversrr}rbh/]h-]h.]h3]rhah}XBaseServer.hosthh~huh5Nh6hh ]rh)r}r(h%Xhosth&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xhostrr}r(h%Uh&jubaubaubh)r}r(h%Uh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]ubeubhC)r}r(h%Uh&hh'Nh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJX0port (circuits.web.servers.BaseServer attribute)hUtrauh5Nh6hh ]ubhd)r}r(h%Uh&hh'Nh)hgh+}r(hihjXpyh0]h/]h-]h.]h3]hlX attributerhnjuh5Nh6hh ]r(hp)r}r(h%XBaseServer.porth&jh'hsh)hth+}r(h0]rhahwhxXcircuits.web.serversrr}rbh/]h-]h.]h3]rhah}XBaseServer.porthh~huh5Nh6hh ]rh)r}r(h%Xporth&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xportrr}r(h%Uh&jubaubaubh)r}r(h%Uh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]ubeubhC)r}r(h%Uh&hh'Nh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJX2secure (circuits.web.servers.BaseServer attribute)h Utrauh5Nh6hh ]ubhd)r}r(h%Uh&hh'Nh)hgh+}r(hihjXpyh0]h/]h-]h.]h3]hlX attributerhnjuh5Nh6hh ]r(hp)r}r(h%XBaseServer.secureh&jh'hsh)hth+}r(h0]rh ahwhxXcircuits.web.serversrr }r bh/]h-]h.]h3]r h ah}XBaseServer.securehh~huh5Nh6hh ]r h)r }r(h%Xsecureh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xsecurerr}r(h%Uh&j ubaubaubh)r}r(h%Uh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]ubeubeubeubhC)r}r(h%Uh&h#h'X]/home/prologic/work/circuits/circuits/web/servers.py:docstring of circuits.web.servers.Serverrh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJX&Server (class in circuits.web.servers)hUtrauh5Nh6hh ]ubhd)r}r(h%Uh&h#h'jh)hgh+}r(hihjXpyh0]h/]h-]h.]h3]hlXclassr hnj uh5Nh6hh ]r!(hp)r"}r#(h%XServer(bind, **kwargs)h&jh'hsh)hth+}r$(h0]r%hahwhxXcircuits.web.serversr&r'}r(bh/]h-]h.]h3]r)hah}XServerr*hUhuh5Nh6hh ]r+(h)r,}r-(h%Xclass h&j"h'hsh)hh+}r.(h-]h.]h/]h0]h3]uh5Nh6hh ]r/h?Xclass r0r1}r2(h%Uh&j,ubaubh)r3}r4(h%Xcircuits.web.servers.h&j"h'hsh)hh+}r5(h-]h.]h/]h0]h3]uh5Nh6hh ]r6h?Xcircuits.web.servers.r7r8}r9(h%Uh&j3ubaubh)r:}r;(h%j*h&j"h'hsh)hh+}r<(h-]h.]h/]h0]h3]uh5Nh6hh ]r=h?XServerr>r?}r@(h%Uh&j:ubaubh)rA}rB(h%Uh&j"h'hsh)hh+}rC(h-]h.]h/]h0]h3]uh5Nh6hh ]rD(h)rE}rF(h%Xbindh+}rG(h-]h.]h/]h0]h3]uh&jAh ]rHh?XbindrIrJ}rK(h%Uh&jEubah)hubh)rL}rM(h%X**kwargsh+}rN(h-]h.]h/]h0]h3]uh&jAh ]rOh?X**kwargsrPrQ}rR(h%Uh&jLubah)hubeubeubh)rS}rT(h%Uh&jh'hsh)hh+}rU(h-]h.]h/]h0]h3]uh5Nh6hh ]rV(hL)rW}rX(h%X/Bases: :class:`circuits.web.servers.BaseServer`h&jSh'hh)hQh+}rY(h-]h.]h/]h0]h3]uh5Kh6hh ]rZ(h?XBases: r[r\}r](h%XBases: h&jWubh)r^}r_(h%X(:class:`circuits.web.servers.BaseServer`r`h&jWh'Nh)hh+}ra(UreftypeXclassh܉hXcircuits.web.servers.BaseServerU refdomainXpyrbh0]h/]U refexplicith-]h.]h3]hhhj*hhuh5Nh ]rch)rd}re(h%j`h+}rf(h-]h.]rg(hjbXpy-classrheh/]h0]h3]uh&j^h ]rih?Xcircuits.web.servers.BaseServerrjrk}rl(h%Uh&jdubah)hubaubeubhL)rm}rn(h%XCreate a Web Serverroh&jSh'jh)hQh+}rp(h-]h.]h/]h0]h3]uh5Kh6hh ]rqh?XCreate a Web Serverrrrs}rt(h%joh&jmubaubhL)ru}rv(h%XCreate a Web Server (HTTP) complete with the default Dispatcher to parse requests and posted form data dispatching to appropriate Controller(s).rwh&jSh'jh)hQh+}rx(h-]h.]h/]h0]h3]uh5Kh6hh ]ryh?XCreate a Web Server (HTTP) complete with the default Dispatcher to parse requests and posted form data dispatching to appropriate Controller(s).rzr{}r|(h%jwh&juubaubhL)r}}r~(h%X$See: circuits.web.servers.BaseServerrh&jSh'jh)hQh+}r(h-]h.]h/]h0]h3]uh5Kh6hh ]rh?X$See: circuits.web.servers.BaseServerrr}r(h%jh&j}ubaubhL)r}r(h%XDx.__init__(...) initializes x; see x.__class__.__doc__ for signaturerh&jSh'jh)hQh+}r(h-]h.]h/]h0]h3]uh5K h6hh ]rh?XDx.__init__(...) initializes x; see x.__class__.__doc__ for signaturerr}r(h%jh&jubaubeubeubhC)r}r(h%Uh&h#h'Nh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJX(FakeSock (class in circuits.web.servers)hUtrauh5Nh6hh ]ubhd)r}r(h%Uh&h#h'Nh)hgh+}r(hihjXpyh0]h/]h-]h.]h3]hlXclassrhnjuh5Nh6hh ]r(hp)r}r(h%XFakeSockrh&jh'hsh)hth+}r(h0]rhahwhxXcircuits.web.serversrr}rbh/]h-]h.]h3]rhah}jhUhuh5Nh6hh ]r(h)r}r(h%Xclass h&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xclass rr}r(h%Uh&jubaubh)r}r(h%Xcircuits.web.servers.h&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xcircuits.web.servers.rr}r(h%Uh&jubaubh)r}r(h%jh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?XFakeSockrr}r(h%Uh&jubaubeubh)r}r(h%Uh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]r(hC)r}r(h%Uh&jh'Nh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJX4getpeername() (circuits.web.servers.FakeSock method)hUtrauh5Nh6hh ]ubhd)r}r(h%Uh&jh'Nh)hgh+}r(hihjXpyh0]h/]h-]h.]h3]hlXmethodrhnjuh5Nh6hh ]r(hp)r}r(h%XFakeSock.getpeername()h&jh'hsh)hth+}r(h0]rhahwhxXcircuits.web.serversrr}rbh/]h-]h.]h3]rhah}XFakeSock.getpeernamehjhuh5Nh6hh ]r(h)r}r(h%X getpeernameh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?X getpeernamerr}r(h%Uh&jubaubh)r}r(h%Uh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]ubeubh)r}r(h%Uh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]ubeubeubeubhC)r}r(h%Uh&h#h'Nh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJX+StdinServer (class in circuits.web.servers)hUtrauh5Nh6hh ]ubhd)r}r(h%Uh&h#h'Nh)hgh+}r(hihjXpyh0]h/]h-]h.]h3]hlXclassrhnjuh5Nh6hh ]r(hp)r}r(h%X,StdinServer(encoding='utf-8', channel='web')h&jh'hsh)hth+}r(h0]rhahwhxXcircuits.web.serversrr}rbh/]h-]h.]h3]rhah}X StdinServerrhUhuh5Nh6hh ]r(h)r}r(h%Xclass h&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xclass rr}r(h%Uh&jubaubh)r}r(h%Xcircuits.web.servers.h&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xcircuits.web.servers.rr}r(h%Uh&jubaubh)r}r(h%jh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?X StdinServerrr}r(h%Uh&jubaubh)r}r(h%Uh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]r(h)r}r(h%Xencoding='utf-8'h+}r (h-]h.]h/]h0]h3]uh&jh ]r h?Xencoding='utf-8'r r }r (h%Uh&jubah)hubh)r}r(h%X channel='web'h+}r(h-]h.]h/]h0]h3]uh&jh ]rh?X channel='web'rr}r(h%Uh&jubah)hubeubeubh)r}r(h%Uh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]r(hL)r}r(h%X6Bases: :class:`circuits.core.components.BaseComponent`rh&jh'hh)hQh+}r(h-]h.]h/]h0]h3]uh5Kh6hh ]r(h?XBases: rr}r (h%XBases: h&jubh)r!}r"(h%X/:class:`circuits.core.components.BaseComponent`r#h&jh'Nh)hh+}r$(UreftypeXclassh܉hX&circuits.core.components.BaseComponentU refdomainXpyr%h0]h/]U refexplicith-]h.]h3]hhhjhhuh5Nh ]r&h)r'}r((h%j#h+}r)(h-]h.]r*(hj%Xpy-classr+eh/]h0]h3]uh&j!h ]r,h?X&circuits.core.components.BaseComponentr-r.}r/(h%Uh&j'ubah)hubaubeubhC)r0}r1(h%Uh&jh'Nh)hGh+}r2(h0]h/]h-]h.]h3]Uentries]r3(hJX4channel (circuits.web.servers.StdinServer attribute)hUtr4auh5Nh6hh ]ubhd)r5}r6(h%Uh&jh'Nh)hgh+}r7(hihjXpyh0]h/]h-]h.]h3]hlX attributer8hnj8uh5Nh6hh ]r9(hp)r:}r;(h%XStdinServer.channelh&j5h'jh)hth+}r<(h0]r=hahwhxXcircuits.web.serversr>r?}r@bh/]h-]h.]h3]rAhah}XStdinServer.channelhjhuh5Nh6hh ]rB(h)rC}rD(h%Xchannelh&j:h'jh)hh+}rE(h-]h.]h/]h0]h3]uh5Nh6hh ]rFh?XchannelrGrH}rI(h%Uh&jCubaubh)rJ}rK(h%X = 'web'h&j:h'jh)hh+}rL(h-]h.]h/]h0]h3]uh5Nh6hh ]rMh?X = 'web'rNrO}rP(h%Uh&jJubaubeubh)rQ}rR(h%Uh&j5h'jh)hh+}rS(h-]h.]h/]h0]h3]uh5Nh6hh ]ubeubhC)rT}rU(h%Uh&jh'Nh)hGh+}rV(h0]h/]h-]h.]h3]Uentries]rW(hJX1host (circuits.web.servers.StdinServer attribute)hUtrXauh5Nh6hh ]ubhd)rY}rZ(h%Uh&jh'Nh)hgh+}r[(hihjXpyh0]h/]h-]h.]h3]hlX attributer\hnj\uh5Nh6hh ]r](hp)r^}r_(h%XStdinServer.hosth&jYh'hsh)hth+}r`(h0]rahahwhxXcircuits.web.serversrbrc}rdbh/]h-]h.]h3]rehah}XStdinServer.hosthjhuh5Nh6hh ]rfh)rg}rh(h%Xhosth&j^h'hsh)hh+}ri(h-]h.]h/]h0]h3]uh5Nh6hh ]rjh?Xhostrkrl}rm(h%Uh&jgubaubaubh)rn}ro(h%Uh&jYh'hsh)hh+}rp(h-]h.]h/]h0]h3]uh5Nh6hh ]ubeubhC)rq}rr(h%Uh&jh'Nh)hGh+}rs(h0]h/]h-]h.]h3]Uentries]rt(hJX1port (circuits.web.servers.StdinServer attribute)h Utruauh5Nh6hh ]ubhd)rv}rw(h%Uh&jh'Nh)hgh+}rx(hihjXpyh0]h/]h-]h.]h3]hlX attributeryhnjyuh5Nh6hh ]rz(hp)r{}r|(h%XStdinServer.porth&jvh'hsh)hth+}r}(h0]r~h ahwhxXcircuits.web.serversrr}rbh/]h-]h.]h3]rh ah}XStdinServer.porthjhuh5Nh6hh ]rh)r}r(h%Xporth&j{h'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xportrr}r(h%Uh&jubaubaubh)r}r(h%Uh&jvh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]ubeubhC)r}r(h%Uh&jh'Nh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJX3secure (circuits.web.servers.StdinServer attribute)h Utrauh5Nh6hh ]ubhd)r}r(h%Uh&jh'Nh)hgh+}r(hihjXpyh0]h/]h-]h.]h3]hlX attributerhnjuh5Nh6hh ]r(hp)r}r(h%XStdinServer.secureh&jh'hsh)hth+}r(h0]rh ahwhxXcircuits.web.serversrr}rbh/]h-]h.]h3]rh ah}XStdinServer.securehjhuh5Nh6hh ]rh)r}r(h%Xsecureh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xsecurerr}r(h%Uh&jubaubaubh)r}r(h%Uh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]ubeubhC)r}r(h%Uh&jh'Nh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJX0read() (circuits.web.servers.StdinServer method)h Utrauh5Nh6hh ]ubhd)r}r(h%Uh&jh'Nh)hgh+}r(hihjXpyh0]h/]h-]h.]h3]hlXmethodrhnjuh5Nh6hh ]r(hp)r}r(h%XStdinServer.read(data)h&jh'hsh)hth+}r(h0]rh ahwhxXcircuits.web.serversrr}rbh/]h-]h.]h3]rh ah}XStdinServer.readhjhuh5Nh6hh ]r(h)r}r(h%Xreadh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xreadrr}r(h%Uh&jubaubh)r}r(h%Uh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh)r}r(h%Xdatah+}r(h-]h.]h/]h0]h3]uh&jh ]rh?Xdatarr}r(h%Uh&jubah)hubaubeubh)r}r(h%Uh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]ubeubhC)r}r(h%Uh&jh'Nh)hGh+}r(h0]h/]h-]h.]h3]Uentries]r(hJX1write() (circuits.web.servers.StdinServer method)h Utrauh5Nh6hh ]ubhd)r}r(h%Uh&jh'Nh)hgh+}r(hihjXpyh0]h/]h-]h.]h3]hlXmethodrhnjuh5Nh6hh ]r(hp)r}r(h%XStdinServer.write(sock, data)h&jh'hsh)hth+}r(h0]rh ahwhxXcircuits.web.serversrr}rbh/]h-]h.]h3]rh ah}XStdinServer.writehjhuh5Nh6hh ]r(h)r}r(h%Xwriteh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]rh?Xwriterr}r(h%Uh&jubaubh)r}r(h%Uh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]r(h)r}r(h%Xsockh+}r(h-]h.]h/]h0]h3]uh&jh ]rh?Xsockrr}r(h%Uh&jubah)hubh)r}r(h%Xdatah+}r(h-]h.]h/]h0]h3]uh&jh ]rh?Xdatarr}r(h%Uh&jubah)hubeubeubh)r}r(h%Uh&jh'hsh)hh+}r(h-]h.]h/]h0]h3]uh5Nh6hh ]ubeubeubeubeubah%UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr ]r Usymbol_footnote_refsr ]r U citationsr ]rh6hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlr Uhttp://tools.ietf.org/html/r!U tracebackr"Upep_referencesr#NUstrip_commentsr$NU toc_backlinksr%Uentryr&U language_coder'Uenr(U datestampr)NU report_levelr*KU _destinationr+NU halt_levelr,KU strip_classesr-NhUenvr?NUdump_pseudo_xmlr@NUexpose_internalsrANUsectsubtitle_xformrBU source_linkrCNUrfc_referencesrDNUoutput_encodingrEUutf-8rFU source_urlrGNUinput_encodingrHU utf-8-sigrIU_disable_configrJNU id_prefixrKUU tab_widthrLKUerror_encodingrMUUTF-8rNU_sourcerOh(Ugettext_compactrPU generatorrQNUdump_internalsrRNU smart_quotesrSU pep_base_urlrTUhttp://www.python.org/dev/peps/rUUsyntax_highlightrVUlongrWUinput_encoding_error_handlerrXj3Uauto_id_prefixrYUidrZUdoctitle_xformr[Ustrip_elements_with_classesr\NU _config_filesr]]Ufile_insertion_enabledr^U raw_enabledr_KU dump_settingsr`NubUsymbol_footnote_startraKUidsrb}rc(hh#hj:hjh j{h jh jh jh jhhqh2cdocutils.nodes target rd)re}rf(h%Uh&h#h'hFh)Utargetrgh+}rh(h-]h0]rih2ah/]Uismodh.]h3]uh5Kh6hh ]ubhjhjhjhj"hj^hjhjuUsubstitution_namesrj}rkh)h6h+}rl(h-]h0]h/]Usourceh(h.]h3]uU footnotesrm]rnUrefidsro}rpub.circuits-3.1.0/docs/build/doctrees/api/circuits.version.doctree0000644000014400001440000000622712425011104025616 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}qXcircuits.version moduleqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUcircuits-version-moduleqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXA/home/prologic/work/circuits/docs/source/api/circuits.version.rstqUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq ]Uidsq!]q"(Xmodule-circuits.versionq#heUnamesq$]q%hauUlineq&KUdocumentq'hh]q((cdocutils.nodes title q))q*}q+(hXcircuits.version moduleq,hhhhhUtitleq-h}q.(h]h]h ]h!]h$]uh&Kh'hh]q/cdocutils.nodes Text q0Xcircuits.version moduleq1q2}q3(hh,hh*ubaubcsphinx.addnodes index q4)q5}q6(hUhhhU q7hUindexq8h}q9(h!]h ]h]h]h$]Uentries]q:(Usingleq;Xcircuits.version (module)Xmodule-circuits.versionUtq}q?(hXVersion Moduleq@hhhXN/home/prologic/work/circuits/circuits/version.py:docstring of circuits.versionqAhU paragraphqBh}qC(h]h]h ]h!]h$]uh&Kh'hh]qDh0XVersion ModuleqEqF}qG(hh@hh>ubaubh=)qH}qI(hX=So we only have to maintain version information in one place!qJhhhhAhhBh}qK(h]h]h ]h!]h$]uh&Kh'hh]qLh0X=So we only have to maintain version information in one place!qMqN}qO(hhJhhHubaubeubahUU transformerqPNU footnote_refsqQ}qRUrefnamesqS}qTUsymbol_footnotesqU]qVUautofootnote_refsqW]qXUsymbol_footnote_refsqY]qZU citationsq[]q\h'hU current_lineq]NUtransform_messagesq^]q_Ureporterq`NUid_startqaKU autofootnotesqb]qcU citation_refsqd}qeUindirect_targetsqf]qgUsettingsqh(cdocutils.frontend Values qioqj}qk(Ufootnote_backlinksqlKUrecord_dependenciesqmNU rfc_base_urlqnUhttp://tools.ietf.org/html/qoU tracebackqpUpep_referencesqqNUstrip_commentsqrNU toc_backlinksqsUentryqtU language_codequUenqvU datestampqwNU report_levelqxKU _destinationqyNU halt_levelqzKU strip_classesq{Nh-NUerror_encoding_error_handlerq|Ubackslashreplaceq}Udebugq~NUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU 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_sourceqhUgettext_compactqU 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_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h#cdocutils.nodes target q)q}q(hUhhhh7hUtargetqh}q(h]h!]qh#ah ]Uismodh]h$]uh&Kh'hh]ubhhuUsubstitution_namesq}qhh'h}q(h]h!]h ]Usourcehh]h$]uU footnotesq]qUrefidsq}qub.circuits-3.1.0/docs/build/doctrees/api/circuits.core.values.doctree0000644000014400001440000003432512425011102026355 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X circuits.core.values.Value.valueqXcircuits.core.values moduleqNX#circuits.core.values.Value.getValueqX#circuits.core.values.Value.setValueq Xcircuits.core.values.Valueq X!circuits.core.values.Value.informq uUsubstitution_defsq }q Uparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhUcircuits-core-values-moduleqhhh h h h h h uUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXE/home/prologic/work/circuits/docs/source/api/circuits.core.values.rstqUtagnameqUsectionq U attributesq!}q"(Udupnamesq#]Uclassesq$]Ubackrefsq%]Uidsq&]q'(Xmodule-circuits.core.valuesq(heUnamesq)]q*hauUlineq+KUdocumentq,hh]q-(cdocutils.nodes title q.)q/}q0(hXcircuits.core.values moduleq1hhhhhUtitleq2h!}q3(h#]h$]h%]h&]h)]uh+Kh,hh]q4cdocutils.nodes Text q5Xcircuits.core.values moduleq6q7}q8(hh1hh/ubaubcsphinx.addnodes index q9)q:}q;(hUhhhU q(h&]h%]h#]h$]h)]Uentries]q?(Usingleq@Xcircuits.core.values (module)Xmodule-circuits.core.valuesUtqAauh+Kh,hh]ubcdocutils.nodes paragraph qB)qC}qD(hX<This defines the Value object used by components and events.qEhhhXV/home/prologic/work/circuits/circuits/core/values.py:docstring of circuits.core.valuesqFhU paragraphqGh!}qH(h#]h$]h%]h&]h)]uh+Kh,hh]qIh5X<This defines the Value object used by components and events.qJqK}qL(hhEhhCubaubh9)qM}qN(hUhhhNhh=h!}qO(h&]h%]h#]h$]h)]Uentries]qP(h@X%Value (class in circuits.core.values)h UtqQauh+Nh,hh]ubcsphinx.addnodes desc qR)qS}qT(hUhhhNhUdescqUh!}qV(UnoindexqWUdomainqXXpyqYh&]h%]h#]h$]h)]UobjtypeqZXclassq[Udesctypeq\h[uh+Nh,hh]q](csphinx.addnodes desc_signature q^)q_}q`(hXValue(event=None, manager=None)hhShU qahUdesc_signatureqbh!}qc(h&]qdh aUmoduleqecdocutils.nodes reprunicode qfXcircuits.core.valuesqgqh}qibh%]h#]h$]h)]qjh aUfullnameqkXValueqlUclassqmUUfirstqnuh+Nh,hh]qo(csphinx.addnodes desc_annotation qp)qq}qr(hXclass hh_hhahUdesc_annotationqsh!}qt(h#]h$]h%]h&]h)]uh+Nh,hh]quh5Xclass qvqw}qx(hUhhqubaubcsphinx.addnodes desc_addname qy)qz}q{(hXcircuits.core.values.hh_hhahU desc_addnameq|h!}q}(h#]h$]h%]h&]h)]uh+Nh,hh]q~h5Xcircuits.core.values.qq}q(hUhhzubaubcsphinx.addnodes desc_name q)q}q(hhlhh_hhahU desc_nameqh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]qh5XValueqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhh_hhahUdesc_parameterlistqh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]q(csphinx.addnodes desc_parameter q)q}q(hX event=Noneh!}q(h#]h$]h%]h&]h)]uhhh]qh5X event=Noneqq}q(hUhhubahUdesc_parameterqubh)q}q(hX manager=Noneh!}q(h#]h$]h%]h&]h)]uhhh]qh5X manager=Noneqq}q(hUhhubahhubeubeubcsphinx.addnodes desc_content q)q}q(hUhhShhahU desc_contentqh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]q(hB)q}q(hXBases: :class:`object`qhhhU qhhGh!}q(h#]h$]h%]h&]h)]uh+Kh,hh]q(h5XBases: qq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX:class:`object`qhhhNhU pending_xrefqh!}q(UreftypeXclassUrefwarnqU reftargetqXobjectU refdomainXpyqh&]h%]U refexplicith#]h$]h)]UrefdocqXapi/circuits.core.valuesqUpy:classqhlU py:moduleqXcircuits.core.valuesquh+Nh]qcdocutils.nodes literal q)q}q(hhh!}q(h#]h$]q(UxrefqhXpy-classqeh%]h&]h)]uhhh]qh5XobjectqDžq}q(hUhhubahUliteralqubaubeubhB)q}q(hX Create a new future Value ObjectqhhhX\/home/prologic/work/circuits/circuits/core/values.py:docstring of circuits.core.values.ValueqhhGh!}q(h#]h$]h%]h&]h)]uh+Kh,hh]qh5X Create a new future Value Objectqхq}q(hhhhubaubhB)q}q(hXCreates a new future Value Object which is used by Event Objects and the Manager to store the result(s) of an Event Handler's exeuction of some Event in the system.qhhhhhhGh!}q(h#]h$]h%]h&]h)]uh+Kh,hh]qh5XCreates a new future Value Object which is used by Event Objects and the Manager to store the result(s) of an Event Handler's exeuction of some Event in the system.qمq}q(hhhhubaubcdocutils.nodes field_list q)q}q(hUhhhNhU field_listqh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]q(cdocutils.nodes field q)q}q(hUh!}q(h#]h$]h%]h&]h)]uhhh]q(cdocutils.nodes field_name q)q}q(hUh!}q(h#]h$]h%]h&]h)]uhhh]qh5X Parametersq셁q}q(hUhhubahU field_namequbcdocutils.nodes field_body q)q}q(hUh!}q(h#]h$]h%]h&]h)]uhhh]qcdocutils.nodes bullet_list q)q}q(hUh!}q(h#]h$]h%]h&]h)]uhhh]q(cdocutils.nodes list_item q)q}q(hUh!}q(h#]h$]h%]h&]h)]uhhh]qhB)q}r(hUh!}r(h#]h$]h%]h&]h)]uhhh]r(cdocutils.nodes strong r)r}r(hXeventh!}r(h#]h$]h%]h&]h)]uhhh]rh5Xeventrr }r (hUhjubahUstrongr ubh5X (r r }r(hUhhubh)r}r(hUh!}r(UreftypeUobjrU reftargetXEvent instancerU refdomainhYh&]h%]U refexplicith#]h$]h)]uhhh]rcdocutils.nodes emphasis r)r}r(hjh!}r(h#]h$]h%]h&]h)]uhjh]rh5XEvent instancerr}r(hUhjubahUemphasisrubahhubh5X)r}r(hUhhubh5X -- r r!}r"(hUhhubh5X(The Event this Value is associated with.r#r$}r%(hX(The Event this Value is associated with.r&hhubehhGubahU list_itemr'ubh)r(}r)(hUh!}r*(h#]h$]h%]h&]h)]uhhh]r+hB)r,}r-(hUh!}r.(h#]h$]h%]h&]h)]uhj(h]r/(j)r0}r1(hXmanagerh!}r2(h#]h$]h%]h&]h)]uhj,h]r3h5Xmanagerr4r5}r6(hUhj0ubahj ubh5X (r7r8}r9(hUhj,ubh)r:}r;(hUh!}r<(UreftypejU reftargetXA Manager/Component instance.r=U refdomainhYh&]h%]U refexplicith#]h$]h)]uhj,h]r>j)r?}r@(hj=h!}rA(h#]h$]h%]h&]h)]uhj:h]rBh5XA Manager/Component instance.rCrD}rE(hUhj?ubahjubahhubh5X)rF}rG(hUhj,ubh5X -- rHrI}rJ(hUhj,ubh5X4The Manager/Component used to trigger notifications.rKrL}rM(hX4The Manager/Component used to trigger notifications.rNhj,ubehhGubahj'ubehU bullet_listrOubahU field_bodyrPubehUfieldrQubh)rR}rS(hUh!}rT(h#]h$]h%]h&]h)]uhhh]rU(h)rV}rW(hUh!}rX(h#]h$]h%]h&]h)]uhjRh]rYh5X VariablesrZr[}r\(hUhjVubahhubh)r]}r^(hUh!}r_(h#]h$]h%]h&]h)]uhjRh]r`h)ra}rb(hUh!}rc(h#]h$]h%]h&]h)]uhj]h]rd(h)re}rf(hUh!}rg(h#]h$]h%]h&]h)]uhjah]rhhB)ri}rj(hUh!}rk(h#]h$]h%]h&]h)]uhjeh]rl(h)rm}rn(hUh!}ro(UreftypejU reftargetXresultrpU refdomainhYh&]h%]U refexplicith#]h$]h)]uhjih]rqj)rr}rs(hjph!}rt(h#]h$]h%]h&]h)]uhjmh]ruh5Xresultrvrw}rx(hUhjrubahj ubahhubh5X -- ryrz}r{(hUhjiubh5X$True if this value has been changed.r|r}}r~(hX$True if this value has been changed.rhjiubehhGubahj'ubh)r}r(hUh!}r(h#]h$]h%]h&]h)]uhjah]rhB)r}r(hUh!}r(h#]h$]h%]h&]h)]uhjh]r(h)r}r(hUh!}r(UreftypejU reftargetXerrorsrU refdomainhYh&]h%]U refexplicith#]h$]h)]uhjh]rj)r}r(hjh!}r(h#]h$]h%]h&]h)]uhjh]rh5Xerrorsrr}r(hUhjubahj ubahhubh5X -- rr}r(hUhjubh5X6True if while setting this value an exception occured.rr}r(hX6True if while setting this value an exception occured.rhjubehhGubahj'ubh)r}r(hUh!}r(h#]h$]h%]h&]h)]uhjah]rhB)r}r(hUh!}r(h#]h$]h%]h&]h)]uhjh]r(h)r}r(hUh!}r(UreftypejU reftargetXnotifyrU refdomainhYh&]h%]U refexplicith#]h$]h)]uhjh]rj)r}r(hjh!}r(h#]h$]h%]h&]h)]uhjh]rh5Xnotifyrr}r(hUhjubahj ubahhubh5X -- rr}r(hUhjubh5X9True or an event name to notify of changes to this valuerr}r(hX9True or an event name to notify of changes to this valuerhjubehhGubahj'ubehjOubahjPubehjQubeubhB)r}r(hX(This is a Future/Promise implementation.rhhhhhhGh!}r(h#]h$]h%]h&]h)]uh+Kh,hh]rh5X(This is a Future/Promise implementation.rr}r(hjhjubaubh9)r}r(hUhhhNhh=h!}r(h&]h%]h#]h$]h)]Uentries]r(h@X,inform() (circuits.core.values.Value method)h Utrauh+Nh,hh]ubhR)r}r(hUhhhNhhUh!}r(hWhXXpyh&]h%]h#]h$]h)]hZXmethodrh\juh+Nh,hh]r(h^)r}r(hXValue.inform(force=False)hjhhahhbh!}r(h&]rh ahehfXcircuits.core.valuesrr}rbh%]h#]h$]h)]rh ahkX Value.informhmhlhnuh+Nh,hh]r(h)r}r(hXinformhjhhahhh!}r(h#]h$]h%]h&]h)]uh+Nh,hh]rh5Xinformrr}r(hUhjubaubh)r}r(hUhjhhahhh!}r(h#]h$]h%]h&]h)]uh+Nh,hh]rh)r}r(hX force=Falseh!}r(h#]h$]h%]h&]h)]uhjh]rh5X force=Falserr}r(hUhjubahhubaubeubh)r}r(hUhjhhahhh!}r(h#]h$]h%]h&]h)]uh+Nh,hh]ubeubh9)r}r(hUhhhNhh=h!}r(h&]h%]h#]h$]h)]Uentries]r(h@X.getValue() (circuits.core.values.Value method)hUtrauh+Nh,hh]ubhR)r}r(hUhhhNhhUh!}r(hWhXXpyh&]h%]h#]h$]h)]hZXmethodrh\juh+Nh,hh]r(h^)r}r(hXValue.getValue(recursive=True)hjhhahhbh!}r(h&]rhahehfXcircuits.core.valuesrr}rbh%]h#]h$]h)]rhahkXValue.getValuehmhlhnuh+Nh,hh]r(h)r}r(hXgetValuehjhhahhh!}r(h#]h$]h%]h&]h)]uh+Nh,hh]rh5XgetValuerr}r(hUhjubaubh)r}r(hUhjhhahhh!}r(h#]h$]h%]h&]h)]uh+Nh,hh]rh)r}r(hXrecursive=Trueh!}r(h#]h$]h%]h&]h)]uhjh]rh5Xrecursive=Truerr }r (hUhjubahhubaubeubh)r }r (hUhjhhahhh!}r (h#]h$]h%]h&]h)]uh+Nh,hh]ubeubh9)r}r(hUhhhNhh=h!}r(h&]h%]h#]h$]h)]Uentries]r(h@X.setValue() (circuits.core.values.Value method)h Utrauh+Nh,hh]ubhR)r}r(hUhhhNhhUh!}r(hWhXXpyh&]h%]h#]h$]h)]hZXmethodrh\juh+Nh,hh]r(h^)r}r(hXValue.setValue(value)hjhhahhbh!}r(h&]rh ahehfXcircuits.core.valuesrr}rbh%]h#]h$]h)]rh ahkXValue.setValuehmhlhnuh+Nh,hh]r (h)r!}r"(hXsetValuehjhhahhh!}r#(h#]h$]h%]h&]h)]uh+Nh,hh]r$h5XsetValuer%r&}r'(hUhj!ubaubh)r(}r)(hUhjhhahhh!}r*(h#]h$]h%]h&]h)]uh+Nh,hh]r+h)r,}r-(hXvalueh!}r.(h#]h$]h%]h&]h)]uhj(h]r/h5Xvaluer0r1}r2(hUhj,ubahhubaubeubh)r3}r4(hUhjhhahhh!}r5(h#]h$]h%]h&]h)]uh+Nh,hh]ubeubh9)r6}r7(hUhhhXb/home/prologic/work/circuits/circuits/core/values.py:docstring of circuits.core.values.Value.valuer8hh=h!}r9(h&]h%]h#]h$]h)]Uentries]r:(h@X,value (circuits.core.values.Value attribute)hUtr;auh+Nh,hh]ubhR)r<}r=(hUhhhj8hhUh!}r>(hWhXXpyh&]h%]h#]h$]h)]hZX attributer?h\j?uh+Nh,hh]r@(h^)rA}rB(hX Value.valuerChj<hhahhbh!}rD(h&]rEhahehfXcircuits.core.valuesrFrG}rHbh%]h#]h$]h)]rIhahkX Value.valuehmhlhnuh+Nh,hh]rJh)rK}rL(hXvaluehjAhhahhh!}rM(h#]h$]h%]h&]h)]uh+Nh,hh]rNh5XvaluerOrP}rQ(hUhjKubaubaubh)rR}rS(hUhj<hhahhh!}rT(h#]h$]h%]h&]h)]uh+Nh,hh]rUhB)rV}rW(hXValue of this ValuerXhjRhj8hhGh!}rY(h#]h$]h%]h&]h)]uh+Kh,hh]rZh5XValue of this Valuer[r\}r](hjXhjVubaubaubeubeubeubeubahUU transformerr^NU footnote_refsr_}r`Urefnamesra}rbUsymbol_footnotesrc]rdUautofootnote_refsre]rfUsymbol_footnote_refsrg]rhU citationsri]rjh,hU current_linerkNUtransform_messagesrl]rmUreporterrnNUid_startroKU autofootnotesrp]rqU citation_refsrr}rsUindirect_targetsrt]ruUsettingsrv(cdocutils.frontend Values rworx}ry(Ufootnote_backlinksrzKUrecord_dependenciesr{NU rfc_base_urlr|Uhttp://tools.ietf.org/html/r}U tracebackr~Upep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh2NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hjAhhh(cdocutils.nodes target r)r}r(hUhhhh]Uidsq?]q@(X%module-circuits.web.parsers.multipartqAh,eUnamesqB]qChauUlineqDKUdocumentqEhh/]qF(cdocutils.nodes title qG)qH}qI(h4X%circuits.web.parsers.multipart moduleqJh5h2h6h7h8UtitleqKh:}qL(h<]h=]h>]h?]hB]uhDKhEhh/]qMcdocutils.nodes Text qNX%circuits.web.parsers.multipart moduleqOqP}qQ(h4hJh5hHubaubcsphinx.addnodes index qR)qS}qT(h4Uh5h2h6U qUh8UindexqVh:}qW(h?]h>]h<]h=]hB]Uentries]qX(UsingleqYX'circuits.web.parsers.multipart (module)X%module-circuits.web.parsers.multipartUtqZauhDKhEhh/]ubh1)q[}q\(h4Uh5h2h6Xj/home/prologic/work/circuits/circuits/web/parsers/multipart.py:docstring of circuits.web.parsers.multipartq]h8h9h:}q^(h<]h=]h>]h?]q_h.ahB]q`hauhDKhEhh/]qa(hG)qb}qc(h4XParser for multipart/form-dataqdh5h[h6h]h8hKh:}qe(h<]h=]h>]h?]hB]uhDKhEhh/]qfhNXParser for multipart/form-dataqgqh}qi(h4hdh5hbubaubcdocutils.nodes paragraph qj)qk}ql(h4XThis module provides a parser for the multipart/form-data format. It can read from a file, a socket or a WSGI environment. The parser can be used to replace cgi.FieldStorage (without the bugs) and works with Python 2.5+ and 3.x (2to3).qmh5h[h6h]h8U paragraphqnh:}qo(h<]h=]h>]h?]hB]uhDKhEhh/]qphNXThis module provides a parser for the multipart/form-data format. It can read from a file, a socket or a WSGI environment. The parser can be used to replace cgi.FieldStorage (without the bugs) and works with Python 2.5+ and 3.x (2to3).qqqr}qs(h4hmh5hkubaubh1)qt}qu(h4Uh5h[h6h]h8h9h:}qv(h<]h=]h>]h?]qwh-ahB]qxhauhDK hEhh/]qy(hG)qz}q{(h4X Licence (MIT)q|h5hth6h]h8hKh:}q}(h<]h=]h>]h?]hB]uhDK hEhh/]q~hNX Licence (MIT)qq}q(h4h|h5hzubaubcdocutils.nodes block_quote q)q}q(h4Uh5hth6hUh8U block_quoteqh:}q(h<]h=]h>]h?]hB]uhDNhEhh/]q(hj)q}q(h4XaCopyright (c) 2010, Marcel Hellkamp. Inspired by the Werkzeug library: http://werkzeug.pocoo.org/h5hh6h]h8hnh:}q(h<]h=]h>]h?]hB]uhDK h/]q(hNXGCopyright (c) 2010, Marcel Hellkamp. Inspired by the Werkzeug library: qq}q(h4XGCopyright (c) 2010, Marcel Hellkamp. Inspired by the Werkzeug library: h5hubcdocutils.nodes reference q)q}q(h4Xhttp://werkzeug.pocoo.org/qh:}q(Urefurihh?]h>]h<]h=]hB]uh5hh/]qhNXhttp://werkzeug.pocoo.org/qq}q(h4Uh5hubah8U referencequbeubhj)q}q(h4XPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:qh5hh6h]h8hnh:}q(h<]h=]h>]h?]hB]uhDKh/]qhNXPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:qq}q(h4hh5hubaubhj)q}q(h4X~The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.qh5hh6h]h8hnh:}q(h<]h=]h>]h?]hB]uhDKh/]qhNX~The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.qq}q(h4hh5hubaubhj)q}q(h4XTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.qh5hh6h]h8hnh:}q(h<]h=]h>]h?]hB]uhDKh/]qhNXTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.qq}q(h4hh5hubaubeubhR)q}q(h4Uh5hth6Nh8hVh:}q(h?]h>]h<]h=]hB]Uentries]q(hYX3MultiDict (class in circuits.web.parsers.multipart)hUtqauhDNhEhh/]ubcsphinx.addnodes desc q)q}q(h4Uh5hth6Nh8Udescqh:}q(UnoindexqUdomainqXpyh?]h>]h<]h=]hB]UobjtypeqXclassqUdesctypeqhuhDNhEhh/]q(csphinx.addnodes desc_signature q)q}q(h4XMultiDict(*a, **k)h5hh6U qh8Udesc_signatureqh:}q(h?]qhaUmoduleqcdocutils.nodes reprunicode qXcircuits.web.parsers.multipartqʅq}qbh>]h<]h=]hB]qhaUfullnameqX MultiDictqUclassqUUfirstqщuhDNhEhh/]q(csphinx.addnodes desc_annotation q)q}q(h4Xclass h5hh6hh8Udesc_annotationqh:}q(h<]h=]h>]h?]hB]uhDNhEhh/]qhNXclass qمq}q(h4Uh5hubaubcsphinx.addnodes desc_addname q)q}q(h4Xcircuits.web.parsers.multipart.h5hh6hh8U desc_addnameqh:}q(h<]h=]h>]h?]hB]uhDNhEhh/]qhNXcircuits.web.parsers.multipart.q⅁q}q(h4Uh5hubaubcsphinx.addnodes desc_name q)q}q(h4hh5hh6hh8U desc_nameqh:}q(h<]h=]h>]h?]hB]uhDNhEhh/]qhNX MultiDictq녁q}q(h4Uh5hubaubcsphinx.addnodes desc_parameterlist q)q}q(h4Uh5hh6hh8Udesc_parameterlistqh:}q(h<]h=]h>]h?]hB]uhDNhEhh/]q(csphinx.addnodes desc_parameter q)q}q(h4X*ah:}q(h<]h=]h>]h?]hB]uh5hh/]qhNX*aqq}q(h4Uh5hubah8Udesc_parameterqubh)q}q(h4X**kh:}q(h<]h=]h>]h?]hB]uh5hh/]rhNX**krr}r(h4Uh5hubah8hubeubeubcsphinx.addnodes desc_content r)r}r(h4Uh5hh6hh8U desc_contentrh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r (hj)r }r (h4X&Bases: :class:`_abcoll.MutableMapping`h5jh6U r h8hnh:}r (h<]h=]h>]h?]hB]uhDKhEhh/]r(hNXBases: rr}r(h4XBases: h5j ubcsphinx.addnodes pending_xref r)r}r(h4X:class:`_abcoll.MutableMapping`rh5j h6Nh8U pending_xrefrh:}r(UreftypeXclassUrefwarnrU reftargetrX_abcoll.MutableMappingU refdomainXpyrh?]h>]U refexplicith<]h=]hB]UrefdocrX"api/circuits.web.parsers.multipartrUpy:classrhU py:modulerXcircuits.web.parsers.multipartruhDNh/]r cdocutils.nodes literal r!)r"}r#(h4jh:}r$(h<]h=]r%(Uxrefr&jXpy-classr'eh>]h?]hB]uh5jh/]r(hNX_abcoll.MutableMappingr)r*}r+(h4Uh5j"ubah8Uliteralr,ubaubeubhj)r-}r.(h4X-A dict that remembers old values for each keyr/h5jh6Xt/home/prologic/work/circuits/circuits/web/parsers/multipart.py:docstring of circuits.web.parsers.multipart.MultiDictr0h8hnh:}r1(h<]h=]h>]h?]hB]uhDKhEhh/]r2hNX-A dict that remembers old values for each keyr3r4}r5(h4j/h5j-ubaubhR)r6}r7(h4Uh5jh6Nh8hVh:}r8(h?]h>]h<]h=]hB]Uentries]r9(hYX8keys() (circuits.web.parsers.multipart.MultiDict method)hUtr:auhDNhEhh/]ubh)r;}r<(h4Uh5jh6Nh8hh:}r=(hhXpyh?]h>]h<]h=]hB]hXmethodr>hj>uhDNhEhh/]r?(h)r@}rA(h4XMultiDict.keys()h5j;h6hh8hh:}rB(h?]rChahhXcircuits.web.parsers.multipartrDrE}rFbh>]h<]h=]hB]rGhahXMultiDict.keyshhhщuhDNhEhh/]rH(h)rI}rJ(h4Xkeysh5j@h6hh8hh:}rK(h<]h=]h>]h?]hB]uhDNhEhh/]rLhNXkeysrMrN}rO(h4Uh5jIubaubh)rP}rQ(h4Uh5j@h6hh8hh:}rR(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubj)rS}rT(h4Uh5j;h6hh8jh:}rU(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)rV}rW(h4Uh5jh6Nh8hVh:}rX(h?]h>]h<]h=]hB]Uentries]rY(hYX:append() (circuits.web.parsers.multipart.MultiDict method)h"UtrZauhDNhEhh/]ubh)r[}r\(h4Uh5jh6Nh8hh:}r](hhXpyh?]h>]h<]h=]hB]hXmethodr^hj^uhDNhEhh/]r_(h)r`}ra(h4XMultiDict.append(key, value)h5j[h6hh8hh:}rb(h?]rch"ahhXcircuits.web.parsers.multipartrdre}rfbh>]h<]h=]hB]rgh"ahXMultiDict.appendhhhщuhDNhEhh/]rh(h)ri}rj(h4Xappendh5j`h6hh8hh:}rk(h<]h=]h>]h?]hB]uhDNhEhh/]rlhNXappendrmrn}ro(h4Uh5jiubaubh)rp}rq(h4Uh5j`h6hh8hh:}rr(h<]h=]h>]h?]hB]uhDNhEhh/]rs(h)rt}ru(h4Xkeyh:}rv(h<]h=]h>]h?]hB]uh5jph/]rwhNXkeyrxry}rz(h4Uh5jtubah8hubh)r{}r|(h4Xvalueh:}r}(h<]h=]h>]h?]hB]uh5jph/]r~hNXvaluerr}r(h4Uh5j{ubah8hubeubeubj)r}r(h4Uh5j[h6hh8jh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)r}r(h4Uh5jh6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX;replace() (circuits.web.parsers.multipart.MultiDict method)h UtrauhDNhEhh/]ubh)r}r(h4Uh5jh6Nh8hh:}r(hhXpyh?]h>]h<]h=]hB]hXmethodrhjuhDNhEhh/]r(h)r}r(h4XMultiDict.replace(key, value)h5jh6hh8hh:}r(h?]rh ahhXcircuits.web.parsers.multipartrr}rbh>]h<]h=]hB]rh ahXMultiDict.replacehhhщuhDNhEhh/]r(h)r}r(h4Xreplaceh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXreplacerr}r(h4Uh5jubaubh)r}r(h4Uh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(h)r}r(h4Xkeyh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXkeyrr}r(h4Uh5jubah8hubh)r}r(h4Xvalueh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXvaluerr}r(h4Uh5jubah8hubeubeubj)r}r(h4Uh5jh6hh8jh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)r}r(h4Uh5jh6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX:getall() (circuits.web.parsers.multipart.MultiDict method)hUtrauhDNhEhh/]ubh)r}r(h4Uh5jh6Nh8hh:}r(hhXpyh?]h>]h<]h=]hB]hXmethodrhjuhDNhEhh/]r(h)r}r(h4XMultiDict.getall(key)h5jh6hh8hh:}r(h?]rhahhXcircuits.web.parsers.multipartrr}rbh>]h<]h=]hB]rhahXMultiDict.getallhhhщuhDNhEhh/]r(h)r}r(h4Xgetallh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXgetallrr}r(h4Uh5jubaubh)r}r(h4Uh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rh)r}r(h4Xkeyh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXkeyrr}r(h4Uh5jubah8hubaubeubj)r}r(h4Uh5jh6hh8jh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)r}r(h4Uh5jh6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX7get() (circuits.web.parsers.multipart.MultiDict method)h UtrauhDNhEhh/]ubh)r}r(h4Uh5jh6Nh8hh:}r(hhXpyh?]h>]h<]h=]hB]hXmethodrhjuhDNhEhh/]r(h)r}r(h4X*MultiDict.get(key, default=None, index=-1)h5jh6hh8hh:}r(h?]rh ahhXcircuits.web.parsers.multipartrr}rbh>]h<]h=]hB]rh ahX MultiDict.gethhhщuhDNhEhh/]r(h)r}r(h4Xgeth5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXgetrr}r(h4Uh5jubaubh)r}r(h4Uh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(h)r}r(h4Xkeyh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXkeyrr}r(h4Uh5jubah8hubh)r}r(h4X default=Noneh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX default=Nonerr}r(h4Uh5jubah8hubh)r}r (h4Xindex=-1h:}r (h<]h=]h>]h?]hB]uh5jh/]r hNXindex=-1r r }r(h4Uh5jubah8hubeubeubj)r}r(h4Uh5jh6hh8jh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)r}r(h4Uh5jh6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX@iterallitems() (circuits.web.parsers.multipart.MultiDict method)h UtrauhDNhEhh/]ubh)r}r(h4Uh5jh6Nh8hh:}r(hhXpyh?]h>]h<]h=]hB]hXmethodrhjuhDNhEhh/]r(h)r}r(h4XMultiDict.iterallitems()h5jh6hh8hh:}r(h?]rh ahhXcircuits.web.parsers.multipartr r!}r"bh>]h<]h=]hB]r#h ahXMultiDict.iterallitemshhhщuhDNhEhh/]r$(h)r%}r&(h4X iterallitemsh5jh6hh8hh:}r'(h<]h=]h>]h?]hB]uhDNhEhh/]r(hNX iterallitemsr)r*}r+(h4Uh5j%ubaubh)r,}r-(h4Uh5jh6hh8hh:}r.(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubj)r/}r0(h4Uh5jh6hh8jh:}r1(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubeubeubhR)r2}r3(h4Uh5hth6Nh8hVh:}r4(h?]h>]h<]h=]hB]Uentries]r5(hYX0tob() (in module circuits.web.parsers.multipart)hUtr6auhDNhEhh/]ubh)r7}r8(h4Uh5hth6Nh8hh:}r9(hhXpyh?]h>]h<]h=]hB]hXfunctionr:hj:uhDNhEhh/]r;(h)r<}r=(h4Xtob(data, enc='utf8')h5j7h6hh8hh:}r>(h?]r?hahhXcircuits.web.parsers.multipartr@rA}rBbh>]h<]h=]hB]rChahXtobrDhUhщuhDNhEhh/]rE(h)rF}rG(h4Xcircuits.web.parsers.multipart.h5j<h6hh8hh:}rH(h<]h=]h>]h?]hB]uhDNhEhh/]rIhNXcircuits.web.parsers.multipart.rJrK}rL(h4Uh5jFubaubh)rM}rN(h4jDh5j<h6hh8hh:}rO(h<]h=]h>]h?]hB]uhDNhEhh/]rPhNXtobrQrR}rS(h4Uh5jMubaubh)rT}rU(h4Uh5j<h6hh8hh:}rV(h<]h=]h>]h?]hB]uhDNhEhh/]rW(h)rX}rY(h4Xdatah:}rZ(h<]h=]h>]h?]hB]uh5jTh/]r[hNXdatar\r]}r^(h4Uh5jXubah8hubh)r_}r`(h4X enc='utf8'h:}ra(h<]h=]h>]h?]hB]uh5jTh/]rbhNX enc='utf8'rcrd}re(h4Uh5j_ubah8hubeubeubj)rf}rg(h4Uh5j7h6hh8jh:}rh(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)ri}rj(h4Uh5hth6Xt/home/prologic/work/circuits/circuits/web/parsers/multipart.py:docstring of circuits.web.parsers.multipart.copy_filerkh8hVh:}rl(h?]h>]h<]h=]hB]Uentries]rm(hYX6copy_file() (in module circuits.web.parsers.multipart)hUtrnauhDNhEhh/]ubh)ro}rp(h4Uh5hth6jkh8hh:}rq(hhXpyh?]h>]h<]h=]hB]hXfunctionrrhjruhDNhEhh/]rs(h)rt}ru(h4X5copy_file(stream, target, maxread=-1, buffer_size=32)h5joh6hh8hh:}rv(h?]rwhahhXcircuits.web.parsers.multipartrxry}rzbh>]h<]h=]hB]r{hahX copy_filer|hUhщuhDNhEhh/]r}(h)r~}r(h4Xcircuits.web.parsers.multipart.h5jth6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXcircuits.web.parsers.multipart.rr}r(h4Uh5j~ubaubh)r}r(h4j|h5jth6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNX copy_filerr}r(h4Uh5jubaubh)r}r(h4Uh5jth6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(h)r}r(h4Xstreamh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXstreamrr}r(h4Uh5jubah8hubh)r}r(h4Xtargeth:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXtargetrr}r(h4Uh5jubah8hubh)r}r(h4X maxread=-1h:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX maxread=-1rr}r(h4Uh5jubah8hubh)r}r(h4Xbuffer_size=32h:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXbuffer_size=32rr}r(h4Uh5jubah8hubeubeubj)r}r(h4Uh5joh6hh8jh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhj)r}r(h4X=Read from :stream and write to :target until :maxread or EOF.rh5jh6jkh8hnh:}r(h<]h=]h>]h?]hB]uhDKhEhh/]rhNX=Read from :stream and write to :target until :maxread or EOF.rr}r(h4jh5jubaubaubeubhR)r}r(h4Uh5hth6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX9header_quote() (in module circuits.web.parsers.multipart)hUtrauhDNhEhh/]ubh)r}r(h4Uh5hth6Nh8hh:}r(hhXpyh?]h>]h<]h=]hB]hXfunctionrhjuhDNhEhh/]r(h)r}r(h4Xheader_quote(val)h5jh6hh8hh:}r(h?]rhahhXcircuits.web.parsers.multipartrr}rbh>]h<]h=]hB]rhahX header_quoterhUhщuhDNhEhh/]r(h)r}r(h4Xcircuits.web.parsers.multipart.h5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXcircuits.web.parsers.multipart.rr}r(h4Uh5jubaubh)r}r(h4jh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNX header_quoterr}r(h4Uh5jubaubh)r}r(h4Uh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rh)r}r(h4Xvalh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXvalrr}r(h4Uh5jubah8hubaubeubj)r}r(h4Uh5jh6hh8jh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)r}r(h4Uh5hth6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX;header_unquote() (in module circuits.web.parsers.multipart)hUtrauhDNhEhh/]ubh)r}r(h4Uh5hth6Nh8hh:}r(hhXpyh?]h>]h<]h=]hB]hXfunctionrhjuhDNhEhh/]r(h)r}r(h4X#header_unquote(val, filename=False)h5jh6hh8hh:}r(h?]rhahhXcircuits.web.parsers.multipartrr}rbh>]h<]h=]hB]rhahXheader_unquoterhUhщuhDNhEhh/]r(h)r}r(h4Xcircuits.web.parsers.multipart.h5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXcircuits.web.parsers.multipart.rr}r(h4Uh5jubaubh)r}r(h4jh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXheader_unquoterr}r (h4Uh5jubaubh)r }r (h4Uh5jh6hh8hh:}r (h<]h=]h>]h?]hB]uhDNhEhh/]r (h)r}r(h4Xvalh:}r(h<]h=]h>]h?]hB]uh5j h/]rhNXvalrr}r(h4Uh5jubah8hubh)r}r(h4Xfilename=Falseh:}r(h<]h=]h>]h?]hB]uh5j h/]rhNXfilename=Falserr}r(h4Uh5jubah8hubeubeubj)r}r(h4Uh5jh6hh8jh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)r}r (h4Uh5hth6Nh8hVh:}r!(h?]h>]h<]h=]hB]Uentries]r"(hYXAparse_options_header() (in module circuits.web.parsers.multipart)hUtr#auhDNhEhh/]ubh)r$}r%(h4Uh5hth6Nh8hh:}r&(hhXpyh?]h>]h<]h=]hB]hXfunctionr'hj'uhDNhEhh/]r((h)r)}r*(h4X*parse_options_header(header, options=None)h5j$h6hh8hh:}r+(h?]r,hahhXcircuits.web.parsers.multipartr-r.}r/bh>]h<]h=]hB]r0hahXparse_options_headerr1hUhщuhDNhEhh/]r2(h)r3}r4(h4Xcircuits.web.parsers.multipart.h5j)h6hh8hh:}r5(h<]h=]h>]h?]hB]uhDNhEhh/]r6hNXcircuits.web.parsers.multipart.r7r8}r9(h4Uh5j3ubaubh)r:}r;(h4j1h5j)h6hh8hh:}r<(h<]h=]h>]h?]hB]uhDNhEhh/]r=hNXparse_options_headerr>r?}r@(h4Uh5j:ubaubh)rA}rB(h4Uh5j)h6hh8hh:}rC(h<]h=]h>]h?]hB]uhDNhEhh/]rD(h)rE}rF(h4Xheaderh:}rG(h<]h=]h>]h?]hB]uh5jAh/]rHhNXheaderrIrJ}rK(h4Uh5jEubah8hubh)rL}rM(h4X options=Noneh:}rN(h<]h=]h>]h?]hB]uh5jAh/]rOhNX options=NonerPrQ}rR(h4Uh5jLubah8hubeubeubj)rS}rT(h4Uh5j$h6hh8jh:}rU(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)rV}rW(h4Uh5hth6j h8hVh:}rX(h?]h>]h<]h=]hB]Uentries]rY(hYXMultipartErrorrZhUtr[auhDNhEhh/]ubh)r\}r](h4Uh5hth6j h8hh:}r^(hhXpyh?]h>]h<]h=]hB]hX exceptionr_hj_uhDNhEhh/]r`(h)ra}rb(h4jZh5j\h6hh8hh:}rc(h?]rdhahhXcircuits.web.parsers.multipartrerf}rgbh>]h<]h=]hB]rhhahjZhUhщuhDNhEhh/]ri(h)rj}rk(h4X exception h5jah6hh8hh:}rl(h<]h=]h>]h?]hB]uhDNhEhh/]rmhNX exception rnro}rp(h4Uh5jjubaubh)rq}rr(h4Xcircuits.web.parsers.multipart.h5jah6hh8hh:}rs(h<]h=]h>]h?]hB]uhDNhEhh/]rthNXcircuits.web.parsers.multipart.rurv}rw(h4Uh5jqubaubh)rx}ry(h4jZh5jah6hh8hh:}rz(h<]h=]h>]h?]hB]uhDNhEhh/]r{hNXMultipartErrorr|r}}r~(h4Uh5jxubaubeubj)r}r(h4Uh5j\h6hh8jh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhj)r}r(h4X%Bases: :class:`exceptions.ValueError`h5jh6j h8hnh:}r(h<]h=]h>]h?]hB]uhDKhEhh/]r(hNXBases: rr}r(h4XBases: h5jubj)r}r(h4X:class:`exceptions.ValueError`rh5jh6Nh8jh:}r(UreftypeXclassjjXexceptions.ValueErrorU refdomainXpyrh?]h>]U refexplicith<]h=]hB]jjjjZjjuhDNh/]rj!)r}r(h4jh:}r(h<]h=]r(j&jXpy-classreh>]h?]hB]uh5jh/]rhNXexceptions.ValueErrorrr}r(h4Uh5jubah8j,ubaubeubaubeubhR)r}r(h4Uh5hth6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX9MultipartParser (class in circuits.web.parsers.multipart)hUtrauhDNhEhh/]ubh)r}r(h4Uh5hth6Nh8hh:}r(hhXpyh?]h>]h<]h=]hB]hXclassrhjuhDNhEhh/]r(h)r}r(h4XMultipartParser(stream, boundary, content_length=-1, disk_limit=1073741824, mem_limit=1048576, memfile_limit=262144, buffer_size=65536, charset='latin1')h5jh6hh8hh:}r(h?]rhahhXcircuits.web.parsers.multipartrr}rbh>]h<]h=]hB]rhahXMultipartParserrhUhщuhDNhEhh/]r(h)r}r(h4Xclass h5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXclass rr}r(h4Uh5jubaubh)r}r(h4Xcircuits.web.parsers.multipart.h5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXcircuits.web.parsers.multipart.rr}r(h4Uh5jubaubh)r}r(h4jh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXMultipartParserrr}r(h4Uh5jubaubh)r}r(h4Uh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(h)r}r(h4Xstreamh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXstreamrr}r(h4Uh5jubah8hubh)r}r(h4Xboundaryh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXboundaryrr}r(h4Uh5jubah8hubh)r}r(h4Xcontent_length=-1h:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXcontent_length=-1rr}r(h4Uh5jubah8hubh)r}r(h4Xdisk_limit=1073741824h:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXdisk_limit=1073741824rr}r(h4Uh5jubah8hubh)r}r(h4Xmem_limit=1048576h:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXmem_limit=1048576rr}r(h4Uh5jubah8hubh)r}r(h4Xmemfile_limit=262144h:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXmemfile_limit=262144rr}r(h4Uh5jubah8hubh)r}r(h4Xbuffer_size=65536h:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXbuffer_size=65536rr}r(h4Uh5jubah8hubh)r}r(h4Xcharset='latin1'h:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXcharset='latin1'rr}r(h4Uh5jubah8hubeubeubj)r}r(h4Uh5jh6hh8jh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(hj)r}r(h4XBases: :class:`object`h5jh6j h8hnh:}r(h<]h=]h>]h?]hB]uhDKhEhh/]r(hNXBases: rr}r(h4XBases: h5jubj)r }r (h4X:class:`object`r h5jh6Nh8jh:}r (UreftypeXclassjjXobjectU refdomainXpyr h?]h>]U refexplicith<]h=]hB]jjjjjjuhDNh/]rj!)r}r(h4j h:}r(h<]h=]r(j&j Xpy-classreh>]h?]hB]uh5j h/]rhNXobjectrr}r(h4Uh5jubah8j,ubaubeubhj)r}r(h4XbParse a multipart/form-data byte stream. This object is an iterator over the parts of the message.rh5jh6Xz/home/prologic/work/circuits/circuits/web/parsers/multipart.py:docstring of circuits.web.parsers.multipart.MultipartParserrh8hnh:}r(h<]h=]h>]h?]hB]uhDKhEhh/]rhNXbParse a multipart/form-data byte stream. This object is an iterator over the parts of the message.rr}r (h4jh5jubaubcdocutils.nodes field_list r!)r"}r#(h4Uh5jh6Nh8U field_listr$h:}r%(h<]h=]h>]h?]hB]uhDNhEhh/]r&cdocutils.nodes field r')r(}r)(h4Uh:}r*(h<]h=]h>]h?]hB]uh5j"h/]r+(cdocutils.nodes field_name r,)r-}r.(h4Uh:}r/(h<]h=]h>]h?]hB]uh5j(h/]r0hNX Parametersr1r2}r3(h4Uh5j-ubah8U field_namer4ubcdocutils.nodes field_body r5)r6}r7(h4Uh:}r8(h<]h=]h>]h?]hB]uh5j(h/]r9cdocutils.nodes bullet_list r:)r;}r<(h4Uh:}r=(h<]h=]h>]h?]hB]uh5j6h/]r>(cdocutils.nodes list_item r?)r@}rA(h4Uh:}rB(h<]h=]h>]h?]hB]uh5j;h/]rChj)rD}rE(h4Uh:}rF(h<]h=]h>]h?]hB]uh5j@h/]rG(cdocutils.nodes strong rH)rI}rJ(h4Xstreamh:}rK(h<]h=]h>]h?]hB]uh5jDh/]rLhNXstreamrMrN}rO(h4Uh5jIubah8UstrongrPubhNX -- rQrR}rS(h4Uh5jDubhNX#A file-like stream. Must implement rTrU}rV(h4X#A file-like stream. Must implement h5jDubj!)rW}rX(h4X``.read(size)``h:}rY(h<]h=]h>]h?]hB]uh5jDh/]rZhNX .read(size)r[r\}r](h4Uh5jWubah8j,ubhNX.r^}r_(h4X.h5jDubeh8hnubah8U list_itemr`ubj?)ra}rb(h4Uh:}rc(h<]h=]h>]h?]hB]uh5j;h/]rdhj)re}rf(h4Uh:}rg(h<]h=]h>]h?]hB]uh5jah/]rh(jH)ri}rj(h4Xboundaryh:}rk(h<]h=]h>]h?]hB]uh5jeh/]rlhNXboundaryrmrn}ro(h4Uh5jiubah8jPubhNX -- rprq}rr(h4Uh5jeubhNX(The multipart boundary as a byte string.rsrt}ru(h4X(The multipart boundary as a byte string.h5jeubeh8hnubah8j`ubj?)rv}rw(h4Uh:}rx(h<]h=]h>]h?]hB]uh5j;h/]ryhj)rz}r{(h4Uh:}r|(h<]h=]h>]h?]hB]uh5jvh/]r}(jH)r~}r(h4Xcontent_lengthh:}r(h<]h=]h>]h?]hB]uh5jzh/]rhNXcontent_lengthrr}r(h4Uh5j~ubah8jPubhNX -- rr}r(h4Uh5jzubhNX$The maximum number of bytes to read.rr}r(h4X$The maximum number of bytes to read.h5jzubeh8hnubah8j`ubeh8U bullet_listrubah8U field_bodyrubeh8UfieldrubaubhR)r}r(h4Uh5jh6X/home/prologic/work/circuits/circuits/web/parsers/multipart.py:docstring of circuits.web.parsers.multipart.MultipartParser.partsrh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX?parts() (circuits.web.parsers.multipart.MultipartParser method)hUtrauhDNhEhh/]ubh)r}r(h4Uh5jh6jh8hh:}r(hhXpyh?]h>]h<]h=]hB]hXmethodrhjuhDNhEhh/]r(h)r}r(h4XMultipartParser.parts()h5jh6hh8hh:}r(h?]rhahhXcircuits.web.parsers.multipartrr}rbh>]h<]h=]hB]rhahXMultipartParser.partshjhщuhDNhEhh/]r(h)r}r(h4Xpartsh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXpartsrr}r(h4Uh5jubaubh)r}r(h4Uh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubj)r}r(h4Uh5jh6hh8jh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhj)r}r(h4X7Returns a list with all parts of the multipart message.rh5jh6jh8hnh:}r(h<]h=]h>]h?]hB]uhDKhEhh/]rhNX7Returns a list with all parts of the multipart message.rr}r(h4jh5jubaubaubeubhR)r}r(h4Uh5jh6X~/home/prologic/work/circuits/circuits/web/parsers/multipart.py:docstring of circuits.web.parsers.multipart.MultipartParser.getrh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX=get() (circuits.web.parsers.multipart.MultipartParser method)hUtrauhDNhEhh/]ubh)r}r(h4Uh5jh6jh8hh:}r(hhXpyh?]h>]h<]h=]hB]hXmethodrhjuhDNhEhh/]r(h)r}r(h4X'MultipartParser.get(name, default=None)h5jh6hh8hh:}r(h?]rhahhXcircuits.web.parsers.multipartrr}rbh>]h<]h=]hB]rhahXMultipartParser.gethjhщuhDNhEhh/]r(h)r}r(h4Xgeth5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXgetrr}r(h4Uh5jubaubh)r}r(h4Uh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(h)r}r(h4Xnameh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXnamerr}r(h4Uh5jubah8hubh)r}r(h4X default=Noneh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX default=Nonerr}r(h4Uh5jubah8hubeubeubj)r}r(h4Uh5jh6hh8jh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhj)r}r(h4X?Return the first part with that name or a default value (None).rh5jh6jh8hnh:}r(h<]h=]h>]h?]hB]uhDKhEhh/]rhNX?Return the first part with that name or a default value (None).rr}r(h4jh5jubaubaubeubhR)r}r(h4Uh5jh6X/home/prologic/work/circuits/circuits/web/parsers/multipart.py:docstring of circuits.web.parsers.multipart.MultipartParser.get_allrh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYXAget_all() (circuits.web.parsers.multipart.MultipartParser method)hUtrauhDNhEhh/]ubh)r}r(h4Uh5jh6jh8hh:}r(hhXpyh?]h>]h<]h=]hB]hXmethodrhjuhDNhEhh/]r(h)r}r(h4XMultipartParser.get_all(name)h5jh6hh8hh:}r(h?]rhahhXcircuits.web.parsers.multipartrr}rbh>]h<]h=]hB]rhahXMultipartParser.get_allhjhщuhDNhEhh/]r(h)r}r(h4Xget_allh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXget_allr r }r (h4Uh5jubaubh)r }r (h4Uh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rh)r}r(h4Xnameh:}r(h<]h=]h>]h?]hB]uh5j h/]rhNXnamerr}r(h4Uh5jubah8hubaubeubj)r}r(h4Uh5jh6hh8jh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhj)r}r(h4X&Return a list of parts with that name.rh5jh6jh8hnh:}r(h<]h=]h>]h?]hB]uhDKhEhh/]rhNX&Return a list of parts with that name.r r!}r"(h4jh5jubaubaubeubeubeubhR)r#}r$(h4Uh5hth6Nh8hVh:}r%(h?]h>]h<]h=]hB]Uentries]r&(hYX7MultipartPart (class in circuits.web.parsers.multipart)h!Utr'auhDNhEhh/]ubh)r(}r)(h4Uh5hth6Nh8hh:}r*(hhXpyh?]h>]h<]h=]hB]hXclassr+hj+uhDNhEhh/]r,(h)r-}r.(h4XHMultipartPart(buffer_size=65536, memfile_limit=262144, charset='latin1')h5j(h6hh8hh:}r/(h?]r0h!ahhXcircuits.web.parsers.multipartr1r2}r3bh>]h<]h=]hB]r4h!ahX MultipartPartr5hUhщuhDNhEhh/]r6(h)r7}r8(h4Xclass h5j-h6hh8hh:}r9(h<]h=]h>]h?]hB]uhDNhEhh/]r:hNXclass r;r<}r=(h4Uh5j7ubaubh)r>}r?(h4Xcircuits.web.parsers.multipart.h5j-h6hh8hh:}r@(h<]h=]h>]h?]hB]uhDNhEhh/]rAhNXcircuits.web.parsers.multipart.rBrC}rD(h4Uh5j>ubaubh)rE}rF(h4j5h5j-h6hh8hh:}rG(h<]h=]h>]h?]hB]uhDNhEhh/]rHhNX MultipartPartrIrJ}rK(h4Uh5jEubaubh)rL}rM(h4Uh5j-h6hh8hh:}rN(h<]h=]h>]h?]hB]uhDNhEhh/]rO(h)rP}rQ(h4Xbuffer_size=65536h:}rR(h<]h=]h>]h?]hB]uh5jLh/]rShNXbuffer_size=65536rTrU}rV(h4Uh5jPubah8hubh)rW}rX(h4Xmemfile_limit=262144h:}rY(h<]h=]h>]h?]hB]uh5jLh/]rZhNXmemfile_limit=262144r[r\}r](h4Uh5jWubah8hubh)r^}r_(h4Xcharset='latin1'h:}r`(h<]h=]h>]h?]hB]uh5jLh/]rahNXcharset='latin1'rbrc}rd(h4Uh5j^ubah8hubeubeubj)re}rf(h4Uh5j(h6hh8jh:}rg(h<]h=]h>]h?]hB]uhDNhEhh/]rh(hj)ri}rj(h4XBases: :class:`object`h5jeh6j h8hnh:}rk(h<]h=]h>]h?]hB]uhDKhEhh/]rl(hNXBases: rmrn}ro(h4XBases: h5jiubj)rp}rq(h4X:class:`object`rrh5jih6Nh8jh:}rs(UreftypeXclassjjXobjectU refdomainXpyrth?]h>]U refexplicith<]h=]hB]jjjj5jjuhDNh/]ruj!)rv}rw(h4jrh:}rx(h<]h=]ry(j&jtXpy-classrzeh>]h?]hB]uh5jph/]r{hNXobjectr|r}}r~(h4Uh5jvubah8j,ubaubeubhR)r}r(h4Uh5jeh6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX<feed() (circuits.web.parsers.multipart.MultipartPart method)hUtrauhDNhEhh/]ubh)r}r(h4Uh5jeh6Nh8hh:}r(hhXpyh?]h>]h<]h=]hB]hXmethodrhjuhDNhEhh/]r(h)r}r(h4XMultipartPart.feed(line, nl='')h5jh6hh8hh:}r(h?]rhahhXcircuits.web.parsers.multipartrr}rbh>]h<]h=]hB]rhahXMultipartPart.feedhj5hщuhDNhEhh/]r(h)r}r(h4Xfeedh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXfeedrr}r(h4Uh5jubaubh)r}r(h4Uh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(h)r}r(h4Xlineh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXlinerr}r(h4Uh5jubah8hubh)r}r(h4Xnl=''h:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXnl=''rr}r(h4Uh5jubah8hubeubeubj)r}r(h4Uh5jh6hh8jh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)r}r(h4Uh5jeh6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYXDwrite_header() (circuits.web.parsers.multipart.MultipartPart method)hUtrauhDNhEhh/]ubh)r}r(h4Uh5jeh6Nh8hh:}r(hhXpyh?]h>]h<]h=]hB]hXmethodrhjuhDNhEhh/]r(h)r}r(h4X$MultipartPart.write_header(line, nl)h5jh6hh8hh:}r(h?]rhahhXcircuits.web.parsers.multipartrr}rbh>]h<]h=]hB]rhahXMultipartPart.write_headerhj5hщuhDNhEhh/]r(h)r}r(h4X write_headerh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNX write_headerrr}r(h4Uh5jubaubh)r}r(h4Uh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(h)r}r(h4Xlineh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXlinerr}r(h4Uh5jubah8hubh)r}r(h4Xnlh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXnlrr}r(h4Uh5jubah8hubeubeubj)r}r(h4Uh5jh6hh8jh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)r}r(h4Uh5jeh6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYXBwrite_body() (circuits.web.parsers.multipart.MultipartPart method)h UtrauhDNhEhh/]ubh)r}r(h4Uh5jeh6Nh8hh:}r(hhXpyh?]h>]h<]h=]hB]hXmethodrhjuhDNhEhh/]r(h)r}r(h4X"MultipartPart.write_body(line, nl)h5jh6hh8hh:}r(h?]rh ahhXcircuits.web.parsers.multipartrr}rbh>]h<]h=]hB]rh ahXMultipartPart.write_bodyhj5hщuhDNhEhh/]r(h)r}r(h4X write_bodyh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNX write_bodyrr}r(h4Uh5jubaubh)r}r(h4Uh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(h)r}r(h4Xlineh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXlinerr}r(h4Uh5jubah8hubh)r}r(h4Xnlh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXnlrr}r(h4Uh5jubah8hubeubeubj)r }r (h4Uh5jh6hh8jh:}r (h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)r }r (h4Uh5jeh6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYXEfinish_header() (circuits.web.parsers.multipart.MultipartPart method)hUtrauhDNhEhh/]ubh)r}r(h4Uh5jeh6Nh8hh:}r(hhXpyh?]h>]h<]h=]hB]hXmethodrhjuhDNhEhh/]r(h)r}r(h4XMultipartPart.finish_header()h5jh6hh8hh:}r(h?]rhahhXcircuits.web.parsers.multipartrr}rbh>]h<]h=]hB]rhahXMultipartPart.finish_headerhj5hщuhDNhEhh/]r(h)r}r (h4X finish_headerh5jh6hh8hh:}r!(h<]h=]h>]h?]hB]uhDNhEhh/]r"hNX finish_headerr#r$}r%(h4Uh5jubaubh)r&}r'(h4Uh5jh6hh8hh:}r((h<]h=]h>]h?]hB]uhDNhEhh/]ubeubj)r)}r*(h4Uh5jh6hh8jh:}r+(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)r,}r-(h4Uh5jeh6X/home/prologic/work/circuits/circuits/web/parsers/multipart.py:docstring of circuits.web.parsers.multipart.MultipartPart.is_bufferedr.h8hVh:}r/(h?]h>]h<]h=]hB]Uentries]r0(hYXCis_buffered() (circuits.web.parsers.multipart.MultipartPart method)hUtr1auhDNhEhh/]ubh)r2}r3(h4Uh5jeh6j.h8hh:}r4(hhXpyh?]h>]h<]h=]hB]hXmethodr5hj5uhDNhEhh/]r6(h)r7}r8(h4XMultipartPart.is_buffered()h5j2h6hh8hh:}r9(h?]r:hahhXcircuits.web.parsers.multipartr;r<}r=bh>]h<]h=]hB]r>hahXMultipartPart.is_bufferedhj5hщuhDNhEhh/]r?(h)r@}rA(h4X is_bufferedh5j7h6hh8hh:}rB(h<]h=]h>]h?]hB]uhDNhEhh/]rChNX is_bufferedrDrE}rF(h4Uh5j@ubaubh)rG}rH(h4Uh5j7h6hh8hh:}rI(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubj)rJ}rK(h4Uh5j2h6hh8jh:}rL(h<]h=]h>]h?]hB]uhDNhEhh/]rMhj)rN}rO(h4X4Return true if the data is fully buffered in memory.rPh5jJh6j.h8hnh:}rQ(h<]h=]h>]h?]hB]uhDKhEhh/]rRhNX4Return true if the data is fully buffered in memory.rSrT}rU(h4jPh5jNubaubaubeubhR)rV}rW(h4Uh5jeh6X~/home/prologic/work/circuits/circuits/web/parsers/multipart.py:docstring of circuits.web.parsers.multipart.MultipartPart.valuerXh8hVh:}rY(h?]h>]h<]h=]hB]Uentries]rZ(hYX>value (circuits.web.parsers.multipart.MultipartPart attribute)h Utr[auhDNhEhh/]ubh)r\}r](h4Uh5jeh6jXh8hh:}r^(hhXpyh?]h>]h<]h=]hB]hX attributer_hj_uhDNhEhh/]r`(h)ra}rb(h4XMultipartPart.valueh5j\h6hh8hh:}rc(h?]rdh ahhXcircuits.web.parsers.multipartrerf}rgbh>]h<]h=]hB]rhh ahXMultipartPart.valuehj5hщuhDNhEhh/]rih)rj}rk(h4Xvalueh5jah6hh8hh:}rl(h<]h=]h>]h?]hB]uhDNhEhh/]rmhNXvaluernro}rp(h4Uh5jjubaubaubj)rq}rr(h4Uh5j\h6hh8jh:}rs(h<]h=]h>]h?]hB]uhDNhEhh/]rthj)ru}rv(h4X'Data decoded with the specified charsetrwh5jqh6jXh8hnh:}rx(h<]h=]h>]h?]hB]uhDKhEhh/]ryhNX'Data decoded with the specified charsetrzr{}r|(h4jwh5juubaubaubeubhR)r}}r~(h4Uh5jeh6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX?save_as() (circuits.web.parsers.multipart.MultipartPart method)hUtrauhDNhEhh/]ubh)r}r(h4Uh5jeh6Nh8hh:}r(hhXpyh?]h>]h<]h=]hB]hXmethodrhjuhDNhEhh/]r(h)r}r(h4XMultipartPart.save_as(path)h5jh6hh8hh:}r(h?]rhahhXcircuits.web.parsers.multipartrr}rbh>]h<]h=]hB]rhahXMultipartPart.save_ashj5hщuhDNhEhh/]r(h)r}r(h4Xsave_ash5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXsave_asrr}r(h4Uh5jubaubh)r}r(h4Uh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rh)r}r(h4Xpathh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXpathrr}r(h4Uh5jubah8hubaubeubj)r}r(h4Uh5jh6hh8jh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubeubeubhR)r}r(h4Uh5hth6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX<parse_form_data() (in module circuits.web.parsers.multipart)h UtrauhDNhEhh/]ubh)r}r(h4Uh5hth6Nh8hh:}r(hhXpyh?]h>]h<]h=]hB]hXfunctionrhjuhDNhEhh/]r(h)r}r(h4X<parse_form_data(environ, charset='utf8', strict=False, **kw)h5jh6hh8hh:}r(h?]rh ahhXcircuits.web.parsers.multipartrr}rbh>]h<]h=]hB]rh ahXparse_form_datarhUhщuhDNhEhh/]r(h)r}r(h4Xcircuits.web.parsers.multipart.h5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXcircuits.web.parsers.multipart.rr}r(h4Uh5jubaubh)r}r(h4jh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXparse_form_datarr}r(h4Uh5jubaubh)r}r(h4Uh5jh6hh8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(h)r}r(h4Xenvironh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXenvironrr}r(h4Uh5jubah8hubh)r}r(h4Xcharset='utf8'h:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXcharset='utf8'rr}r(h4Uh5jubah8hubh)r}r(h4X strict=Falseh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX strict=Falserr}r(h4Uh5jubah8hubh)r}r(h4X**kwh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX**kwrr}r(h4Uh5jubah8hubeubeubj)r}r(h4Uh5jh6hh8jh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(hj)r}r(h4XParse form data from an environ dict and return a (forms, files) tuple. Both tuple values are dictionaries with the form-field name as a key (text_type) and lists as values (multiple values per key are possible). The forms-dictionary contains form-field values as text_type strings. The files-dictionary contains :class:`MultipartPart` instances, either because the form-field was a file-upload or the value is to big to fit into memory limits.h5jh6Xz/home/prologic/work/circuits/circuits/web/parsers/multipart.py:docstring of circuits.web.parsers.multipart.parse_form_datarh8hnh:}r(h<]h=]h>]h?]hB]uhDKhEhh/]r(hNX9Parse form data from an environ dict and return a (forms, files) tuple. Both tuple values are dictionaries with the form-field name as a key (text_type) and lists as values (multiple values per key are possible). The forms-dictionary contains form-field values as text_type strings. The files-dictionary contains rr}r(h4X9Parse form data from an environ dict and return a (forms, files) tuple. Both tuple values are dictionaries with the form-field name as a key (text_type) and lists as values (multiple values per key are possible). The forms-dictionary contains form-field values as text_type strings. The files-dictionary contains h5jubj)r}r(h4X:class:`MultipartPart`rh5jh6Nh8jh:}r(UreftypeXclassjjX MultipartPartU refdomainXpyrh?]h>]U refexplicith<]h=]hB]jjjNjjuhDNh/]rj!)r}r(h4jh:}r(h<]h=]r(j&jXpy-classreh>]h?]hB]uh5jh/]rhNX MultipartPartrr}r(h4Uh5jubah8j,ubaubhNXm instances, either because the form-field was a file-upload or the value is to big to fit into memory limits.rr}r(h4Xm instances, either because the form-field was a file-upload or the value is to big to fit into memory limits.h5jubeubj!)r}r(h4Uh5jh6Nh8j$h:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rj')r }r (h4Uh:}r (h<]h=]h>]h?]hB]uh5jh/]r (j,)r }r(h4Uh:}r(h<]h=]h>]h?]hB]uh5j h/]rhNX Parametersrr}r(h4Uh5j ubah8j4ubj5)r}r(h4Uh:}r(h<]h=]h>]h?]hB]uh5j h/]rj:)r}r(h4Uh:}r(h<]h=]h>]h?]hB]uh5jh/]r(j?)r}r(h4Uh:}r(h<]h=]h>]h?]hB]uh5jh/]rhj)r }r!(h4Uh:}r"(h<]h=]h>]h?]hB]uh5jh/]r#(jH)r$}r%(h4Xenvironh:}r&(h<]h=]h>]h?]hB]uh5j h/]r'hNXenvironr(r)}r*(h4Uh5j$ubah8jPubhNX -- r+r,}r-(h4Uh5j ubhNXAn WSGI environment dict.r.r/}r0(h4XAn WSGI environment dict.r1h5j ubeh8hnubah8j`ubj?)r2}r3(h4Uh:}r4(h<]h=]h>]h?]hB]uh5jh/]r5hj)r6}r7(h4Uh:}r8(h<]h=]h>]h?]hB]uh5j2h/]r9(jH)r:}r;(h4Xcharseth:}r<(h<]h=]h>]h?]hB]uh5j6h/]r=hNXcharsetr>r?}r@(h4Uh5j:ubah8jPubhNX -- rArB}rC(h4Uh5j6ubhNX-The charset to use if unsure. (default: utf8)rDrE}rF(h4X-The charset to use if unsure. (default: utf8)rGh5j6ubeh8hnubah8j`ubj?)rH}rI(h4Uh:}rJ(h<]h=]h>]h?]hB]uh5jh/]rKhj)rL}rM(h4Uh:}rN(h<]h=]h>]h?]hB]uh5jHh/]rO(jH)rP}rQ(h4Xstricth:}rR(h<]h=]h>]h?]hB]uh5jLh/]rShNXstrictrTrU}rV(h4Uh5jPubah8jPubhNX -- rWrX}rY(h4Uh5jLubhNXIf True, raise rZr[}r\(h4XIf True, raise h5jLubj)r]}r^(h4X:exc:`MultipartError`r_h5jLh6Nh8jh:}r`(UreftypeXexcjjXMultipartErrorU refdomainXpyrah?]h>]U refexplicith<]h=]hB]jjjNjjuhDNh/]rbj!)rc}rd(h4j_h:}re(h<]h=]rf(j&jaXpy-excrgeh>]h?]hB]uh5j]h/]rhhNXMultipartErrorrirj}rk(h4Uh5jcubah8j,ubaubhNX> on any parsing errors. These are silently ignored by default.rlrm}rn(h4X> on any parsing errors. These are silently ignored by default.h5jLubeh8hnubah8j`ubeh8jubah8jubeh8jubaubeubeubeubeubeubah4UU transformerroNU footnote_refsrp}rqUrefnamesrr}rsUsymbol_footnotesrt]ruUautofootnote_refsrv]rwUsymbol_footnote_refsrx]ryU citationsrz]r{hEhU current_liner|NUtransform_messagesr}]r~UreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNhKNUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh7Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hjhjh jh jh jh jhj<hAcdocutils.nodes target r)r}r(h4Uh5h2h6hUh8Utargetrh:}r(h<]h?]rhAah>]Uismodh=]hB]uhDKhEhh/]ubhjhjhhhjhjhj7hjthjh-hthjhj@hjhj)hjhjhjah jah.h[h,h2h!j-h"j`h juUsubstitution_namesr}rh8hEh:}r(h<]h?]h>]Usourceh7h=]hB]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.app.doctree0000644000014400001440000004471412425011101024711 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.app.Daemon.registeredqXcircuits.app.DaemonqX submodulesqNXcircuits.app packageq NXcircuits.app.Daemon.initq Xcircuits.app.Daemon.on_startedq Xmodule contentsq NXcircuits.app.Daemon.channelq Xcircuits.app.Daemon.daemonizeqXcircuits.app.Daemon.deletepidqXcircuits.app.Daemon.writepidquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhU submodulesqh Ucircuits-app-packageqh h h h h Umodule-contentsqh h hhhhhhuUchildrenq]qcdocutils.nodes section q)q }q!(U rawsourceq"UUparentq#hUsourceq$X=/home/prologic/work/circuits/docs/source/api/circuits.app.rstq%Utagnameq&Usectionq'U attributesq(}q)(Udupnamesq*]Uclassesq+]Ubackrefsq,]Uidsq-]q.haUnamesq/]q0h auUlineq1KUdocumentq2hh]q3(cdocutils.nodes title q4)q5}q6(h"Xcircuits.app packageq7h#h h$h%h&Utitleq8h(}q9(h*]h+]h,]h-]h/]uh1Kh2hh]q:cdocutils.nodes Text q;Xcircuits.app packageq(h"h7h#h5ubaubh)q?}q@(h"Uh#h h$h%h&h'h(}qA(h*]h+]h,]h-]qBhah/]qChauh1Kh2hh]qD(h4)qE}qF(h"X SubmodulesqGh#h?h$h%h&h8h(}qH(h*]h+]h,]h-]h/]uh1Kh2hh]qIh;X SubmodulesqJqK}qL(h"hGh#hEubaubcdocutils.nodes compound qM)qN}qO(h"Uh#h?h$h%h&UcompoundqPh(}qQ(h*]h+]qRUtoctree-wrapperqSah,]h-]h/]uh1K h2hh]qTcsphinx.addnodes toctree qU)qV}qW(h"Uh#hNh$h%h&UtoctreeqXh(}qY(UnumberedqZKU includehiddenq[h#Xapi/circuits.appq\U titlesonlyq]Uglobq^h-]h,]h*]h+]h/]Uentriesq_]q`NXapi/circuits.app.daemonqaqbaUhiddenqcU includefilesqd]qehaaUmaxdepthqfJuh1Kh]ubaubeubh)qg}qh(h"Uh#h h$h%h&h'h(}qi(h*]h+]h,]h-]qj(Xmodule-circuits.appqkheh/]qlh auh1K h2hh]qm(h4)qn}qo(h"XModule contentsqph#hgh$h%h&h8h(}qq(h*]h+]h,]h-]h/]uh1K h2hh]qrh;XModule contentsqsqt}qu(h"hph#hnubaubcsphinx.addnodes index qv)qw}qx(h"Uh#hgh$U qyh&Uindexqzh(}q{(h-]h,]h*]h+]h/]Uentries]q|(Usingleq}Xcircuits.app (module)Xmodule-circuits.appUtq~auh1Kh2hh]ubcdocutils.nodes paragraph q)q}q(h"XApplication Componentsqh#hgh$XO/home/prologic/work/circuits/circuits/app/__init__.py:docstring of circuits.appqh&U paragraphqh(}q(h*]h+]h,]h-]h/]uh1Kh2hh]qh;XApplication Componentsqq}q(h"hh#hubaubh)q}q(h"X`Contains various components useful for application development and tasks common to applications.qh#hgh$hh&hh(}q(h*]h+]h,]h-]h/]uh1Kh2hh]qh;X`Contains various components useful for application development and tasks common to applications.qq}q(h"hh#hubaubcdocutils.nodes field_list q)q}q(h"Uh#hgh$hh&U field_listqh(}q(h*]h+]h,]h-]h/]uh1Kh2hh]q(cdocutils.nodes field q)q}q(h"Uh#hh$hh&Ufieldqh(}q(h*]h+]h,]h-]h/]uh1Kh2hh]q(cdocutils.nodes field_name q)q}q(h"X copyrightqh(}q(h*]h+]h,]h-]h/]uh#hh]qh;X copyrightqq}q(h"hh#hubah&U field_namequbcdocutils.nodes field_body q)q}q(h"X&CopyRight (C) 2004-2013 by James Millsqh(}q(h*]h+]h,]h-]h/]uh#hh]qh)q}q(h"hh#hh$hh&hh(}q(h*]h+]h,]h-]h/]uh1Kh]qh;X&CopyRight (C) 2004-2013 by James Millsqq}q(h"hh#hubaubah&U field_bodyqubeubh)q}q(h"Uh#hh$hh&hh(}q(h*]h+]h,]h-]h/]uh1Kh2hh]q(h)q}q(h"Xlicenseqh(}q(h*]h+]h,]h-]h/]uh#hh]qh;Xlicenseqq}q(h"hh#hubah&hubh)q}q(h"XMIT (See: LICENSE) h(}q(h*]h+]h,]h-]h/]uh#hh]qh)q}q(h"XMIT (See: LICENSE)qh#hh$hh&hh(}q(h*]h+]h,]h-]h/]uh1Kh]qh;XMIT (See: LICENSE)q˅q}q(h"hh#hubaubah&hubeubeubhv)q}q(h"Uh#hgh$Nh&hzh(}q(h-]h,]h*]h+]h/]Uentries]q(h}XDaemon (class in circuits.app)hUtqauh1Nh2hh]ubcsphinx.addnodes desc q)q}q(h"Uh#hgh$Nh&Udescqh(}q(Unoindexq؉UdomainqXpyqh-]h,]h*]h+]h/]UobjtypeqXclassqUdesctypeqhuh1Nh2hh]q(csphinx.addnodes desc_signature q)q}q(h"XDaemon(*args, **kwargs)h#hh$U qh&Udesc_signatureqh(}q(h-]qhaUmoduleqcdocutils.nodes reprunicode qX circuits.appq腁q}qbh,]h*]h+]h/]qhaUfullnameqXDaemonqUclassqUUfirstquh1Nh2hh]q(csphinx.addnodes desc_annotation q)q}q(h"Xclass h#hh$hh&Udesc_annotationqh(}q(h*]h+]h,]h-]h/]uh1Nh2hh]qh;Xclass qq}q(h"Uh#hubaubcsphinx.addnodes desc_addname q)q}q(h"X circuits.app.h#hh$hh&U desc_addnameqh(}q(h*]h+]h,]h-]h/]uh1Nh2hh]qh;X circuits.app.rr}r(h"Uh#hubaubcsphinx.addnodes desc_name r)r}r(h"hh#hh$hh&U desc_namerh(}r(h*]h+]h,]h-]h/]uh1Nh2hh]rh;XDaemonr r }r (h"Uh#jubaubcsphinx.addnodes desc_parameterlist r )r }r(h"Uh#hh$hh&Udesc_parameterlistrh(}r(h*]h+]h,]h-]h/]uh1Nh2hh]r(csphinx.addnodes desc_parameter r)r}r(h"X*argsh(}r(h*]h+]h,]h-]h/]uh#j h]rh;X*argsrr}r(h"Uh#jubah&Udesc_parameterrubj)r}r(h"X**kwargsh(}r(h*]h+]h,]h-]h/]uh#j h]rh;X**kwargsrr }r!(h"Uh#jubah&jubeubeubcsphinx.addnodes desc_content r")r#}r$(h"Uh#hh$hh&U desc_contentr%h(}r&(h*]h+]h,]h-]h/]uh1Nh2hh]r'(h)r(}r)(h"X2Bases: :class:`circuits.core.components.Component`r*h#j#h$U r+h&hh(}r,(h*]h+]h,]h-]h/]uh1Kh2hh]r-(h;XBases: r.r/}r0(h"XBases: h#j(ubcsphinx.addnodes pending_xref r1)r2}r3(h"X+:class:`circuits.core.components.Component`r4h#j(h$h%h&U pending_xrefr5h(}r6(UreftypeXclassUrefwarnr7U reftargetr8X"circuits.core.components.ComponentU refdomainXpyr9h-]h,]U refexplicith*]h+]h/]Urefdocr:h\Upy:classr;hU py:moduler<X circuits.appr=uh1Kh]r>cdocutils.nodes literal r?)r@}rA(h"j4h(}rB(h*]h+]rC(UxrefrDj9Xpy-classrEeh,]h-]h/]uh#j2h]rFh;X"circuits.core.components.ComponentrGrH}rI(h"Uh#j@ubah&UliteralrJubaubeubh)rK}rL(h"XDaemon ComponentrMh#j#h$XV/home/prologic/work/circuits/circuits/app/__init__.py:docstring of circuits.app.DaemonrNh&hh(}rO(h*]h+]h,]h-]h/]uh1Kh2hh]rPh;XDaemon ComponentrQrR}rS(h"jMh#jKubaubh)rT}rU(h"Uh#j#h$Nh&hh(}rV(h*]h+]h,]h-]h/]uh1Nh2hh]rWh)rX}rY(h"Uh(}rZ(h*]h+]h,]h-]h/]uh#jTh]r[(h)r\}r](h"Uh(}r^(h*]h+]h,]h-]h/]uh#jXh]r_h;X Parametersr`ra}rb(h"Uh#j\ubah&hubh)rc}rd(h"Uh(}re(h*]h+]h,]h-]h/]uh#jXh]rfcdocutils.nodes bullet_list rg)rh}ri(h"Uh(}rj(h*]h+]h,]h-]h/]uh#jch]rk(cdocutils.nodes list_item rl)rm}rn(h"Uh(}ro(h*]h+]h,]h-]h/]uh#jhh]rph)rq}rr(h"Uh(}rs(h*]h+]h,]h-]h/]uh#jmh]rt(cdocutils.nodes strong ru)rv}rw(h"Xpidfileh(}rx(h*]h+]h,]h-]h/]uh#jqh]ryh;Xpidfilerzr{}r|(h"Uh#jvubah&Ustrongr}ubh;X (r~r}r(h"Uh#jqubj1)r}r(h"Uh(}r(UreftypeUobjrU reftargetXstr or unicoderU refdomainhh-]h,]U refexplicith*]h+]h/]uh#jqh]rcdocutils.nodes emphasis r)r}r(h"jh(}r(h*]h+]h,]h-]h/]uh#jh]rh;Xstr or unicoderr}r(h"Uh#jubah&Uemphasisrubah&j5ubh;X)r}r(h"Uh#jqubh;X -- rr}r(h"Uh#jqubh;X .pid filenamerr}r(h"X .pid filenamerh#jqubeh&hubah&U list_itemrubjl)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jhh]rh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]r(ju)r}r(h"Xstdinh(}r(h*]h+]h,]h-]h/]uh#jh]rh;Xstdinrr}r(h"Uh#jubah&j}ubh;X (rr}r(h"Uh#jubj1)r}r(h"Uh(}r(UreftypejU reftargetXstr or unicoderU refdomainhh-]h,]U refexplicith*]h+]h/]uh#jh]rj)r}r(h"jh(}r(h*]h+]h,]h-]h/]uh#jh]rh;Xstr or unicoderr}r(h"Uh#jubah&jubah&j5ubh;X)r}r(h"Uh#jubh;X -- rr}r(h"Uh#jubh;Xfilename to log stdinrr}r(h"Xfilename to log stdinrh#jubeh&hubah&jubjl)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jhh]rh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]r(ju)r}r(h"Xstdouth(}r(h*]h+]h,]h-]h/]uh#jh]rh;Xstdoutrr}r(h"Uh#jubah&j}ubh;X (rr}r(h"Uh#jubj1)r}r(h"Uh(}r(UreftypejU reftargetXstr or unicoderU refdomainhh-]h,]U refexplicith*]h+]h/]uh#jh]rj)r}r(h"jh(}r(h*]h+]h,]h-]h/]uh#jh]rh;Xstr or unicoderr}r(h"Uh#jubah&jubah&j5ubh;X)r}r(h"Uh#jubh;X -- rr}r(h"Uh#jubh;Xfilename to log stdoutrr}r(h"Xfilename to log stdoutrh#jubeh&hubah&jubjl)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jhh]rh)r}r(h"Uh(}r(h*]h+]h,]h-]h/]uh#jh]r(ju)r}r(h"Xstderrh(}r(h*]h+]h,]h-]h/]uh#jh]rh;Xstderrrr}r(h"Uh#jubah&j}ubh;X (rr}r(h"Uh#jubj1)r}r(h"Uh(}r(UreftypejU reftargetXstr or unicoderU refdomainhh-]h,]U refexplicith*]h+]h/]uh#jh]rj)r}r(h"jh(}r(h*]h+]h,]h-]h/]uh#jh]rh;Xstr or unicoderr}r(h"Uh#jubah&jubah&j5ubh;X)r}r(h"Uh#jubh;X -- rr }r (h"Uh#jubh;Xfilename to log stderrr r }r (h"Xfilename to log stderrrh#jubeh&hubah&jubeh&U bullet_listrubah&hubeh&hubaubh)r}r(h"X4initializes x; see x.__class__.__doc__ for signaturerh#j#h$jNh&hh(}r(h*]h+]h,]h-]h/]uh1Kh2hh]rh;X4initializes x; see x.__class__.__doc__ for signaturerr}r(h"jh#jubaubhv)r}r(h"Uh#j#h$Nh&hzh(}r(h-]h,]h*]h+]h/]Uentries]r(h}X'channel (circuits.app.Daemon attribute)h Utrauh1Nh2hh]ubh)r}r(h"Uh#j#h$Nh&hh(}r(h؉hXpyh-]h,]h*]h+]h/]hX attributer hj uh1Nh2hh]r!(h)r"}r#(h"XDaemon.channelh#jh$U r$h&hh(}r%(h-]r&h ahhX circuits.appr'r(}r)bh,]h*]h+]h/]r*h ahXDaemon.channelhhhuh1Nh2hh]r+(j)r,}r-(h"Xchannelh#j"h$j$h&jh(}r.(h*]h+]h,]h-]h/]uh1Nh2hh]r/h;Xchannelr0r1}r2(h"Uh#j,ubaubh)r3}r4(h"X = 'daemon'h#j"h$j$h&hh(}r5(h*]h+]h,]h-]h/]uh1Nh2hh]r6h;X = 'daemon'r7r8}r9(h"Uh#j3ubaubeubj")r:}r;(h"Uh#jh$j$h&j%h(}r<(h*]h+]h,]h-]h/]uh1Nh2hh]ubeubhv)r=}r>(h"Uh#j#h$Nh&hzh(}r?(h-]h,]h*]h+]h/]Uentries]r@(h}X(daemonize() (circuits.app.Daemon method)hUtrAauh1Nh2hh]ubh)rB}rC(h"Uh#j#h$Nh&hh(}rD(h؉hXpyh-]h,]h*]h+]h/]hXmethodrEhjEuh1Nh2hh]rF(h)rG}rH(h"XDaemon.daemonize()h#jBh$hh&hh(}rI(h-]rJhahhX circuits.apprKrL}rMbh,]h*]h+]h/]rNhahXDaemon.daemonizehhhuh1Nh2hh]rO(j)rP}rQ(h"X daemonizeh#jGh$hh&jh(}rR(h*]h+]h,]h-]h/]uh1Nh2hh]rSh;X daemonizerTrU}rV(h"Uh#jPubaubj )rW}rX(h"Uh#jGh$hh&jh(}rY(h*]h+]h,]h-]h/]uh1Nh2hh]ubeubj")rZ}r[(h"Uh#jBh$hh&j%h(}r\(h*]h+]h,]h-]h/]uh1Nh2hh]ubeubhv)r]}r^(h"Uh#j#h$Nh&hzh(}r_(h-]h,]h*]h+]h/]Uentries]r`(h}X(deletepid() (circuits.app.Daemon method)hUtraauh1Nh2hh]ubh)rb}rc(h"Uh#j#h$Nh&hh(}rd(h؉hXpyh-]h,]h*]h+]h/]hXmethodrehjeuh1Nh2hh]rf(h)rg}rh(h"XDaemon.deletepid()h#jbh$hh&hh(}ri(h-]rjhahhX circuits.apprkrl}rmbh,]h*]h+]h/]rnhahXDaemon.deletepidhhhuh1Nh2hh]ro(j)rp}rq(h"X deletepidh#jgh$hh&jh(}rr(h*]h+]h,]h-]h/]uh1Nh2hh]rsh;X deletepidrtru}rv(h"Uh#jpubaubj )rw}rx(h"Uh#jgh$hh&jh(}ry(h*]h+]h,]h-]h/]uh1Nh2hh]ubeubj")rz}r{(h"Uh#jbh$hh&j%h(}r|(h*]h+]h,]h-]h/]uh1Nh2hh]ubeubhv)r}}r~(h"Uh#j#h$Nh&hzh(}r(h-]h,]h*]h+]h/]Uentries]r(h}X#init() (circuits.app.Daemon method)h Utrauh1Nh2hh]ubh)r}r(h"Uh#j#h$Nh&hh(}r(h؉hXpyh-]h,]h*]h+]h/]hXmethodrhjuh1Nh2hh]r(h)r}r(h"XVDaemon.init(pidfile, path='/', stdin=None, stdout=None, stderr=None, channel='daemon')h#jh$hh&hh(}r(h-]rh ahhX circuits.apprr}rbh,]h*]h+]h/]rh ahX Daemon.inithhhuh1Nh2hh]r(j)r}r(h"Xinith#jh$hh&jh(}r(h*]h+]h,]h-]h/]uh1Nh2hh]rh;Xinitrr}r(h"Uh#jubaubj )r}r(h"Uh#jh$hh&jh(}r(h*]h+]h,]h-]h/]uh1Nh2hh]r(j)r}r(h"Xpidfileh(}r(h*]h+]h,]h-]h/]uh#jh]rh;Xpidfilerr}r(h"Uh#jubah&jubj)r}r(h"Xpath='/'h(}r(h*]h+]h,]h-]h/]uh#jh]rh;Xpath='/'rr}r(h"Uh#jubah&jubj)r}r(h"X stdin=Noneh(}r(h*]h+]h,]h-]h/]uh#jh]rh;X stdin=Nonerr}r(h"Uh#jubah&jubj)r}r(h"X stdout=Noneh(}r(h*]h+]h,]h-]h/]uh#jh]rh;X stdout=Nonerr}r(h"Uh#jubah&jubj)r}r(h"X stderr=Noneh(}r(h*]h+]h,]h-]h/]uh#jh]rh;X stderr=Nonerr}r(h"Uh#jubah&jubj)r}r(h"Xchannel='daemon'h(}r(h*]h+]h,]h-]h/]uh#jh]rh;Xchannel='daemon'rr}r(h"Uh#jubah&jubeubeubj")r}r(h"Uh#jh$hh&j%h(}r(h*]h+]h,]h-]h/]uh1Nh2hh]ubeubhv)r}r(h"Uh#j#h$Nh&hzh(}r(h-]h,]h*]h+]h/]Uentries]r(h}X)on_started() (circuits.app.Daemon method)h Utrauh1Nh2hh]ubh)r}r(h"Uh#j#h$Nh&hh(}r(h؉hXpyh-]h,]h*]h+]h/]hXmethodrhjuh1Nh2hh]r(h)r}r(h"XDaemon.on_started(component)h#jh$hh&hh(}r(h-]rh ahhX circuits.apprr}rbh,]h*]h+]h/]rh ahXDaemon.on_startedhhhuh1Nh2hh]r(j)r}r(h"X on_startedh#jh$hh&jh(}r(h*]h+]h,]h-]h/]uh1Nh2hh]rh;X on_startedrr}r(h"Uh#jubaubj )r}r(h"Uh#jh$hh&jh(}r(h*]h+]h,]h-]h/]uh1Nh2hh]rj)r}r(h"X componenth(}r(h*]h+]h,]h-]h/]uh#jh]rh;X componentrr}r(h"Uh#jubah&jubaubeubj")r}r(h"Uh#jh$hh&j%h(}r(h*]h+]h,]h-]h/]uh1Nh2hh]ubeubhv)r}r(h"Uh#j#h$Nh&hzh(}r(h-]h,]h*]h+]h/]Uentries]r(h}X)registered() (circuits.app.Daemon method)hUtrauh1Nh2hh]ubh)r}r(h"Uh#j#h$Nh&hh(}r(h؉hXpyh-]h,]h*]h+]h/]hXmethodrhjuh1Nh2hh]r(h)r}r(h"X%Daemon.registered(component, manager)h#jh$hh&hh(}r(h-]rhahhX circuits.apprr}rbh,]h*]h+]h/]rhahXDaemon.registeredhhhuh1Nh2hh]r(j)r}r(h"X registeredh#jh$hh&jh(}r(h*]h+]h,]h-]h/]uh1Nh2hh]rh;X registeredrr}r (h"Uh#jubaubj )r }r (h"Uh#jh$hh&jh(}r (h*]h+]h,]h-]h/]uh1Nh2hh]r (j)r}r(h"X componenth(}r(h*]h+]h,]h-]h/]uh#j h]rh;X componentrr}r(h"Uh#jubah&jubj)r}r(h"Xmanagerh(}r(h*]h+]h,]h-]h/]uh#j h]rh;Xmanagerrr}r(h"Uh#jubah&jubeubeubj")r}r(h"Uh#jh$hh&j%h(}r(h*]h+]h,]h-]h/]uh1Nh2hh]ubeubhv)r}r (h"Uh#j#h$Nh&hzh(}r!(h-]h,]h*]h+]h/]Uentries]r"(h}X'writepid() (circuits.app.Daemon method)hUtr#auh1Nh2hh]ubh)r$}r%(h"Uh#j#h$Nh&hh(}r&(h؉hXpyh-]h,]h*]h+]h/]hXmethodr'hj'uh1Nh2hh]r((h)r)}r*(h"XDaemon.writepid()r+h#j$h$hh&hh(}r,(h-]r-hahhX circuits.appr.r/}r0bh,]h*]h+]h/]r1hahXDaemon.writepidhhhuh1Nh2hh]r2(j)r3}r4(h"Xwritepidh#j)h$hh&jh(}r5(h*]h+]h,]h-]h/]uh1Nh2hh]r6h;Xwritepidr7r8}r9(h"Uh#j3ubaubj )r:}r;(h"Uh#j)h$hh&jh(}r<(h*]h+]h,]h-]h/]uh1Nh2hh]ubeubj")r=}r>(h"Uh#j$h$hh&j%h(}r?(h*]h+]h,]h-]h/]uh1Nh2hh]ubeubeubeubeubeubah"UU transformerr@NU footnote_refsrA}rBUrefnamesrC}rDUsymbol_footnotesrE]rFUautofootnote_refsrG]rHUsymbol_footnote_refsrI]rJU citationsrK]rLh2hU 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_classesrkNh8NUerror_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_sourcerh%Ugettext_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_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hjhhhh?hkcdocutils.nodes target r)r}r(h"Uh#hgh$hyh&Utargetrh(}r(h*]h-]rhkah,]Uismodh+]h/]uh1Kh2hh]ubh jh jh j"hh hjGhjghhghj)uUsubstitution_namesr}rh&h2h(}r(h*]h-]h,]Usourceh%h+]h/]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.constants.doctree0000644000014400001440000000631512425011104026717 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}qXcircuits.web.constants moduleqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUcircuits-web-constants-moduleqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXG/home/prologic/work/circuits/docs/source/api/circuits.web.constants.rstqUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq ]Uidsq!]q"(Xmodule-circuits.web.constantsq#heUnamesq$]q%hauUlineq&KUdocumentq'hh]q((cdocutils.nodes title q))q*}q+(hXcircuits.web.constants moduleq,hhhhhUtitleq-h}q.(h]h]h ]h!]h$]uh&Kh'hh]q/cdocutils.nodes Text q0Xcircuits.web.constants moduleq1q2}q3(hh,hh*ubaubcsphinx.addnodes index q4)q5}q6(hUhhhU q7hUindexq8h}q9(h!]h ]h]h]h$]Uentries]q:(Usingleq;Xcircuits.web.constants (module)Xmodule-circuits.web.constantsUtq}q?(hXGlobal Constantsq@hhhXZ/home/prologic/work/circuits/circuits/web/constants.py:docstring of circuits.web.constantsqAhU paragraphqBh}qC(h]h]h ]h!]h$]uh&Kh'hh]qDh0XGlobal ConstantsqEqF}qG(hh@hh>ubaubh=)qH}qI(hX8This module implements required shared global constants.qJhhhhAhhBh}qK(h]h]h ]h!]h$]uh&Kh'hh]qLh0X8This module implements required shared global constants.qMqN}qO(hhJhhHubaubeubahUU transformerqPNU footnote_refsqQ}qRUrefnamesqS}qTUsymbol_footnotesqU]qVUautofootnote_refsqW]qXUsymbol_footnote_refsqY]qZU citationsq[]q\h'hU current_lineq]NUtransform_messagesq^]q_Ureporterq`NUid_startqaKU autofootnotesqb]qcU citation_refsqd}qeUindirect_targetsqf]qgUsettingsqh(cdocutils.frontend Values qioqj}qk(Ufootnote_backlinksqlKUrecord_dependenciesqmNU rfc_base_urlqnUhttp://tools.ietf.org/html/qoU tracebackqpUpep_referencesqqNUstrip_commentsqrNU toc_backlinksqsUentryqtU language_codequUenqvU datestampqwNU report_levelqxKU _destinationqyNU halt_levelqzKU strip_classesq{Nh-NUerror_encoding_error_handlerq|Ubackslashreplaceq}Udebugq~NUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU 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_sourceqhUgettext_compactqU 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_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hhh#cdocutils.nodes target q)q}q(hUhhhh7hUtargetqh}q(h]h!]qh#ah ]Uismodh]h$]uh&Kh'hh]ubuUsubstitution_namesq}qhh'h}q(h]h!]h ]Usourcehh]h$]uU footnotesq]qUrefidsq}qub.circuits-3.1.0/docs/build/doctrees/api/circuits.net.events.doctree0000644000014400001440000020054312425011103026216 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.net.events.readyqXcircuits.net.events.connectqXcircuits.net.events.read.nameqX"circuits.net.events.connected.nameq X circuits.net.events.connect.nameq X"circuits.net.events.broadcast.nameq Xcircuits.net.events.write.nameq Xcircuits.net.events.disconnectq Xcircuits.net.events.errorqXcircuits.net.events.writeqXcircuits.net.events moduleqNX%circuits.net.events.disconnected.nameqXcircuits.net.events.closedqXcircuits.net.events.connectedqXcircuits.net.events.ready.nameqXcircuits.net.events.closed.nameqXcircuits.net.events.error.nameqXcircuits.net.events.closeqX#circuits.net.events.disconnect.nameqXcircuits.net.events.readqX circuits.net.events.disconnectedqXcircuits.net.events.broadcastqXcircuits.net.events.close.namequUsubstitution_defsq}qUparse_messagesq]q Ucurrent_sourceq!NU decorationq"NUautofootnote_startq#KUnameidsq$}q%(hhhhhhh h h h h h h h h h hhhhhUcircuits-net-events-moduleq&hhhhhhhhhhhhhhhhhhhhhhhhuUchildrenq']q(cdocutils.nodes section q))q*}q+(U rawsourceq,UUparentq-hUsourceq.XD/home/prologic/work/circuits/docs/source/api/circuits.net.events.rstq/Utagnameq0Usectionq1U attributesq2}q3(Udupnamesq4]Uclassesq5]Ubackrefsq6]Uidsq7]q8(Xmodule-circuits.net.eventsq9h&eUnamesq:]q;hauUlineq(cdocutils.nodes title q?)q@}qA(h,Xcircuits.net.events moduleqBh-h*h.h/h0UtitleqCh2}qD(h4]h5]h6]h7]h:]uhqMh0UindexqNh2}qO(h7]h6]h4]h5]h:]Uentries]qP(UsingleqQXcircuits.net.events (module)Xmodule-circuits.net.eventsUtqRauhqzh0Udesc_signatureq{h2}q|(h7]q}haUmoduleq~cdocutils.nodes reprunicode qXcircuits.net.eventsqq}qbh6]h4]h5]h:]qhaUfullnameqXconnectqUclassqUUfirstquhqh0hXh2}q(h4]h5]h6]h7]h:]uh(h4]h5]h6]h7]h:]uh-j5h']r?hFXtupler@rA}rB(h,Uh-j<ubah0UemphasisrCubah0hubhFX)rD}rE(h,Uh-j%ubhFX -- rFrG}rH(h,Uh-j%ubhFX/Client: (host, port) Server: (sock, host, port)rIrJ}rK(h,X/Client: (host, port) Server: (sock, host, port)h-j%ubeh0hXubah0U list_itemrLubj )rM}rN(h,Uh2}rO(h4]h5]h6]h7]h:]uh-jh']rPhS)rQ}rR(h,Uh2}rS(h4]h5]h6]h7]h:]uh-jMh']rT(j))rU}rV(h,Xkwargsh2}rW(h4]h5]h6]h7]h:]uh-jQh']rXhFXkwargsrYrZ}r[(h,Uh-jUubah0j1ubhFX (r\r]}r^(h,Uh-jQubh)r_}r`(h,Uh2}ra(Ureftypej8U reftargetXdictrbU refdomainhrh7]h6]U refexplicith4]h5]h:]uh-jQh']rcj;)rd}re(h,jbh2}rf(h4]h5]h6]h7]h:]uh-j_h']rghFXdictrhri}rj(h,Uh-jdubah0jCubah0hubhFX)rk}rl(h,Uh-jQubhFX -- rmrn}ro(h,Uh-jQubhFX Client: (ssl)rprq}rr(h,X Client: (ssl)h-jQubeh0hXubah0jLubeh0U bullet_listrsubah0U field_bodyrtubeh0UfieldruubaubhS)rv}rw(h,XDx.__init__(...) initializes x; see x.__class__.__doc__ for signaturerxh-hh.hh0hXh2}ry(h4]h5]h6]h7]h:]uhrh0h{h2}r(h7]rh ah~hXcircuits.net.eventsrr}rbh6]h4]h5]h:]rh ahX connect.namehhhuhauh(h,Uh-h*h.Nh0hNh2}r?(h7]h6]h4]h5]h:]Uentries]r@(hQX+disconnected (class in circuits.net.events)hUtrAauh(h4]h5]h6]h7]h:]uh-j8h']r?hFX Parametersr@rA}rB(h,Uh-j<ubah0jubj)rC}rD(h,Uh2}rE(h4]h5]h6]h7]h:]uh-j8h']rFhS)rG}rH(h,Uh2}rI(h4]h5]h6]h7]h:]uh-jCh']rJ(j))rK}rL(h,Xargsh2}rM(h4]h5]h6]h7]h:]uh-jGh']rNhFXargsrOrP}rQ(h,Uh-jKubah0j1ubhFX -- rRrS}rT(h,Uh-jGubhFX#Client: (data) Server: (sock, data)rUrV}rW(h,X#Client: (data) Server: (sock, data)h-jGubeh0hXubah0jtubeh0juubaubhS)rX}rY(h,XDx.__init__(...) initializes x; see x.__class__.__doc__ for signaturerZh-jh.jh0hXh2}r[(h4]h5]h6]h7]h:]uh(h,Uh-j!h.jh0hh2}r?(h4]h5]h6]h7]h:]uh`` network.h-jth.jh0hXh2}r(h4]h5]h6]h7]h:]uh``h2}r(h4]h5]h6]h7]h:]uh-jh']rhFX rr}r(h,Uh-jubah0hubhFX network.rr}r(h,X network.h-jubeubh)r}r(h,Xt- This event is never sent, it is used to send data. - This event is used for both Client and Server UDP Components.h-jth.Nh0hh2}r(h4]h5]h6]h7]h:]uhhFXwriter?r@}rA(h,Uh-j;ubaubh)rB}rC(h,Uh-j#h.hzh0hh2}rD(h4]h5]h6]h7]h:]uh(h,j8h-j6ubaubhS)r?}r@(h,XYThis Event is used to notify a client, client connection or server that we want to close.rAh-jh.j9h0hXh2}rB(h4]h5]h6]h7]h:]uh(h4]h5]h6]h7]h:]uh-j8h']r?(j )r@}rA(h,Uh2}rB(h4]h5]h6]h7]h:]uh-j<h']rChS)rD}rE(h,Uh2}rF(h4]h5]h6]h7]h:]uh-j@h']rG(j))rH}rI(h,X componenth2}rJ(h4]h5]h6]h7]h:]uh-jDh']rKhFX componentrLrM}rN(h,Uh-jHubah0j1ubhFX -- rOrP}rQ(h,Uh-jDubhFX*The Client/Server Component that is ready.rRrS}rT(h,X*The Client/Server Component that is ready.h-jDubeh0hXubah0jLubj )rU}rV(h,Uh2}rW(h4]h5]h6]h7]h:]uh-j<h']rXhS)rY}rZ(h,Uh2}r[(h4]h5]h6]h7]h:]uh-jUh']r\(j))r]}r^(h,Xbindh2}r_(h4]h5]h6]h7]h:]uh-jYh']r`hFXbindrarb}rc(h,Uh-j]ubah0j1ubhFX -- rdre}rf(h,Uh-jYubhFX)The (host, port) the server has bound to.rgrh}ri(h,X)The (host, port) the server has bound to.h-jYubeh0hXubah0jLubeh0jsubah0jtubeh0juubaubhS)rj}rk(h,XDx.__init__(...) initializes x; see x.__class__.__doc__ for signaturerlh-jh.jh0hXh2}rm(h4]h5]h6]h7]h:]uh hFX Variablesr? r@ }rA (h,Uh-j; ubah0jubj)rB }rC (h,Uh2}rD (h4]h5]h6]h7]h:]uh-j7 h']rE j)rF }rG (h,Uh2}rH (h4]h5]h6]h7]h:]uh-jB h']rI (j )rJ }rK (h,Uh2}rL (h4]h5]h6]h7]h:]uh-jF h']rM hS)rN }rO (h,Uh2}rP (h4]h5]h6]h7]h:]uh-jJ h']rQ (h)rR }rS (h,Uh2}rT (Ureftypej8U reftargetXchannelsrU U refdomainjh7]h6]U refexplicith4]h5]h:]uh-jN h']rV j))rW }rX (h,jU h2}rY (h4]h5]h6]h7]h:]uh-jR h']rZ hFXchannelsr[ r\ }r] (h,Uh-jW ubah0j1ubah0hubhFX -- r^ r_ }r` (h,Uh-jN ubhS)ra }rb (h,Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rc h-jN h.jh0hXh2}rd (h4]h5]h6]h7]h:]uh bh6]h4]h5]h:]r? hahX closed.namehjhuhq9hUindexq:h}q;(h#]h"]h ]h!]h&]Uentries]q<(Usingleq=X%circuits.protocols.websocket (module)X#module-circuits.protocols.websocketUtq>auh(Kh)hh]ubcdocutils.nodes comment q?)q@}qA(hXcodeauthor: mnlhhhh9hUcommentqBh}qC(U xml:spaceqDUpreserveqEh#]h"]h ]h!]h&]uh(Kh)hh]qFh2Xcodeauthor: mnlqGqH}qI(hUhh@ubaubh6)qJ}qK(hUhhhNhh:h}qL(h#]h"]h ]h!]h&]Uentries]qM(h=X6WebSocketCodec (class in circuits.protocols.websocket)hUtqNauh(Nh)hh]ubcsphinx.addnodes desc qO)qP}qQ(hUhhhNhUdescqRh}qS(UnoindexqTUdomainqUXpyh#]h"]h ]h!]h&]UobjtypeqVXclassqWUdesctypeqXhWuh(Nh)hh]qY(csphinx.addnodes desc_signature qZ)q[}q\(hX?WebSocketCodec(sock=None, data=bytearray(b''), *args, **kwargs)hhPhU q]hUdesc_signatureq^h}q_(h#]q`haUmoduleqacdocutils.nodes reprunicode qbXcircuits.protocols.websocketqcqd}qebh"]h ]h!]h&]qfhaUfullnameqgXWebSocketCodecqhUclassqiUUfirstqjuh(Nh)hh]qk(csphinx.addnodes desc_annotation ql)qm}qn(hXclass hh[hh]hUdesc_annotationqoh}qp(h ]h!]h"]h#]h&]uh(Nh)hh]qqh2Xclass qrqs}qt(hUhhmubaubcsphinx.addnodes desc_addname qu)qv}qw(hXcircuits.protocols.websocket.hh[hh]hU desc_addnameqxh}qy(h ]h!]h"]h#]h&]uh(Nh)hh]qzh2Xcircuits.protocols.websocket.q{q|}q}(hUhhvubaubcsphinx.addnodes desc_name q~)q}q(hhhhh[hh]hU desc_nameqh}q(h ]h!]h"]h#]h&]uh(Nh)hh]qh2XWebSocketCodecqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhh[hh]hUdesc_parameterlistqh}q(h ]h!]h"]h#]h&]uh(Nh)hh]q(csphinx.addnodes desc_parameter q)q}q(hX sock=Noneh}q(h ]h!]h"]h#]h&]uhhh]qh2X sock=Noneqq}q(hUhhubahUdesc_parameterqubh)q}q(hXdata=bytearray(b'')h}q(h ]h!]h"]h#]h&]uhhh]qh2Xdata=bytearray(b'')qq}q(hUhhubahhubh)q}q(hX*argsh}q(h ]h!]h"]h#]h&]uhhh]qh2X*argsqq}q(hUhhubahhubh)q}q(hX**kwargsh}q(h ]h!]h"]h#]h&]uhhh]qh2X**kwargsqq}q(hUhhubahhubeubeubcsphinx.addnodes desc_content q)q}q(hUhhPhh]hU desc_contentqh}q(h ]h!]h"]h#]h&]uh(Nh)hh]q(cdocutils.nodes paragraph q)q}q(hX6Bases: :class:`circuits.core.components.BaseComponent`qhhhU qhU paragraphqh}q(h ]h!]h"]h#]h&]uh(Kh)hh]q(h2XBases: qq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX/:class:`circuits.core.components.BaseComponent`qhhhNhU pending_xrefqh}q(UreftypeXclassUrefwarnq‰U reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqh#]h"]U refexplicith ]h!]h&]UrefdocqX api/circuits.protocols.websocketqUpy:classqhhU py:moduleqXcircuits.protocols.websocketquh(Nh]qcdocutils.nodes literal q)q}q(hhh}q(h ]h!]q(UxrefqhXpy-classqeh"]h#]h&]uhhh]qh2X&circuits.core.components.BaseComponentqӅq}q(hUhhubahUliteralqubaubeubh)q}q(hXWebSocket ProtocolqhhhXu/home/prologic/work/circuits/circuits/protocols/websocket.py:docstring of circuits.protocols.websocket.WebSocketCodecqhhh}q(h ]h!]h"]h#]h&]uh(Kh)hh]qh2XWebSocket Protocolq݅q}q(hhhhubaubh)q}q(hX3Implements the Data Framing protocol for WebSocket.qhhhhhhh}q(h ]h!]h"]h#]h&]uh(Kh)hh]qh2X3Implements the Data Framing protocol for WebSocket.q允q}q(hhhhubaubh)q}q(hXThis component is used in conjunction with a parent component that receives Read events on its channel. When created (after a successful WebSocket setup handshake), the codec registers a handler on the parent's channel that filters out these Read events for a given socket (if used in a server) or all Read events (if used in a client). The data is decoded and the contained payload is emitted as Read events on the codec's channel.qhhhhhhh}q(h ]h!]h"]h#]h&]uh(Kh)hh]qh2XThis component is used in conjunction with a parent component that receives Read events on its channel. When created (after a successful WebSocket setup handshake), the codec registers a handler on the parent's channel that filters out these Read events for a given socket (if used in a server) or all Read events (if used in a client). The data is decoded and the contained payload is emitted as Read events on the codec's channel.q텁q}q(hhhhubaubh)q}q(hXThe data from write events sent to the codec's channel (with socket argument if used in a server) is encoded according to the WebSocket Data Framing protocol. The encoded data is then forwarded as write events on the parents channel.qhhhhhhh}q(h ]h!]h"]h#]h&]uh(K h)hh]qh2XThe data from write events sent to the codec's channel (with socket argument if used in a server) is encoded according to the WebSocket Data Framing protocol. The encoded data is then forwarded as write events on the parents channel.qq}q(hhhhubaubh)q}q(hXCreates a new codec.qhhhhhhh}q(h ]h!]h"]h#]h&]uh(Kh)hh]qh2XCreates a new codec.qq}q(hhhhubaubcdocutils.nodes field_list r)r}r(hUhhhNhU field_listrh}r(h ]h!]h"]h#]h&]uh(Nh)hh]rcdocutils.nodes field r)r}r(hUh}r (h ]h!]h"]h#]h&]uhjh]r (cdocutils.nodes field_name r )r }r (hUh}r(h ]h!]h"]h#]h&]uhjh]rh2X Parametersrr}r(hUhj ubahU field_namerubcdocutils.nodes field_body r)r}r(hUh}r(h ]h!]h"]h#]h&]uhjh]rh)r}r(hUh}r(h ]h!]h"]h#]h&]uhjh]r(cdocutils.nodes strong r)r}r(hXsockh}r (h ]h!]h"]h#]h&]uhjh]r!h2Xsockr"r#}r$(hUhjubahUstrongr%ubh2X -- r&r'}r((hUhjubh2XIthe socket used in Read and write events (if used in a server, else None)r)r*}r+(hXIthe socket used in Read and write events (if used in a server, else None)r,hjubehhubahU field_bodyr-ubehUfieldr.ubaubh6)r/}r0(hUhhhNhh:h}r1(h#]h"]h ]h!]h&]Uentries]r2(h=X?channel (circuits.protocols.websocket.WebSocketCodec attribute)hUtr3auh(Nh)hh]ubhO)r4}r5(hUhhhNhhRh}r6(hThUXpyh#]h"]h ]h!]h&]hVX attributer7hXj7uh(Nh)hh]r8(hZ)r9}r:(hXWebSocketCodec.channelr;hj4hU r<hh^h}r=(h#]r>hahahbXcircuits.protocols.websocketr?r@}rAbh"]h ]h!]h&]rBhahgXWebSocketCodec.channelhihhhjuh(Nh)hh]rC(h~)rD}rE(hXchannelhj9hj<hhh}rF(h ]h!]h"]h#]h&]uh(Nh)hh]rGh2XchannelrHrI}rJ(hUhjDubaubhl)rK}rL(hX = 'ws'hj9hj<hhoh}rM(h ]h!]h"]h#]h&]uh(Nh)hh]rNh2X = 'ws'rOrP}rQ(hUhjKubaubeubh)rR}rS(hUhj4hj<hhh}rT(h ]h!]h"]h#]h&]uh(Nh)hh]ubeubeubeubeubahUU transformerrUNU footnote_refsrV}rWUrefnamesrX}rYUsymbol_footnotesrZ]r[Uautofootnote_refsr\]r]Usymbol_footnote_refsr^]r_U citationsr`]rah)hU current_linerbNUtransform_messagesrc]rdUreporterreNUid_startrfKU autofootnotesrg]rhU citation_refsri}rjUindirect_targetsrk]rlUsettingsrm(cdocutils.frontend Values rnoro}rp(Ufootnote_backlinksrqKUrecord_dependenciesrrNU rfc_base_urlrsUhttp://tools.ietf.org/html/rtU tracebackruUpep_referencesrvNUstrip_commentsrwNU toc_backlinksrxUentryryU language_coderzUenr{U datestampr|NU report_levelr}KU _destinationr~NU halt_levelrKU strip_classesrNh/NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhh%cdocutils.nodes target r)r}r(hUhhhh9hUtargetrh}r(h ]h#]rh%ah"]Uismodh!]h&]uh(Kh)hh]ubhj9hh[uUsubstitution_namesr}rhh)h}r(h ]h#]h"]Usourcehh!]h&]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.io.events.doctree0000644000014400001440000067044212425011103026050 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.io.events.movedqX!circuits.io.events.unmounted.nameqXcircuits.io.events moduleqNX circuits.io.events.modified.nameq Xcircuits.io.events.openedq Xcircuits.io.events.opened.nameq Xcircuits.io.events.started.nameq Xcircuits.io.events.startedq Xcircuits.io.events.unmountedqX circuits.io.events.accessed.nameqXcircuits.io.events.created.nameqXcircuits.io.events.openqXcircuits.io.events.open.nameqXcircuits.io.events.errorqXcircuits.io.events.accessedqXcircuits.io.events.closedqXcircuits.io.events.read.nameqXcircuits.io.events.deletedqXcircuits.io.events.moved.nameqXcircuits.io.events.readqXcircuits.io.events.deleted.nameqXcircuits.io.events.ready.nameqXcircuits.io.events.writeqXcircuits.io.events.error.nameqXcircuits.io.events.closed.nameqXcircuits.io.events.closeqXcircuits.io.events.seekq Xcircuits.io.events.eofq!Xcircuits.io.events.seek.nameq"Xcircuits.io.events.eof.nameq#Xcircuits.io.events.write.nameq$Xcircuits.io.events.readyq%Xcircuits.io.events.modifiedq&Xcircuits.io.events.close.nameq'Xcircuits.io.events.stopped.nameq(Xcircuits.io.events.stoppedq)Xcircuits.io.events.createdq*uUsubstitution_defsq+}q,Uparse_messagesq-]q.Ucurrent_sourceq/NU decorationq0NUautofootnote_startq1KUnameidsq2}q3(hhhhhUcircuits-io-events-moduleq4h h h h h h h h h h hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh h h!h!h"h"h#h#h$h$h%h%h&h&h'h'h(h(h)h)h*h*uUchildrenq5]q6cdocutils.nodes section q7)q8}q9(U rawsourceq:UUparentq;hUsourceqUsectionq?U attributesq@}qA(UdupnamesqB]UclassesqC]UbackrefsqD]UidsqE]qF(Xmodule-circuits.io.eventsqGh4eUnamesqH]qIhauUlineqJKUdocumentqKhh5]qL(cdocutils.nodes title qM)qN}qO(h:Xcircuits.io.events moduleqPh;h8hUtitleqQh@}qR(hB]hC]hD]hE]hH]uhJKhKhh5]qScdocutils.nodes Text qTXcircuits.io.events moduleqUqV}qW(h:hPh;hNubaubcsphinx.addnodes index qX)qY}qZ(h:Uh;h8hq[h>Uindexq\h@}q](hE]hD]hB]hC]hH]Uentries]q^(Usingleq_Xcircuits.io.events (module)Xmodule-circuits.io.eventsUtq`auhJKhKhh5]ubcdocutils.nodes paragraph qa)qb}qc(h:X I/O Eventsqdh;h8hU paragraphqfh@}qg(hB]hC]hD]hE]hH]uhJKhKhh5]qhhTX I/O Eventsqiqj}qk(h:hdh;hbubaubha)ql}qm(h:XJThis module implements commonly used I/O events used by other I/O modules.qnh;h8hhfh@}qo(hB]hC]hD]hE]hH]uhJKhKhh5]qphTXJThis module implements commonly used I/O events used by other I/O modules.qqqr}qs(h:hnh;hlubaubhX)qt}qu(h:Uh;h8hh\h@}qv(hE]hD]hB]hC]hH]Uentries]qw(h_X!eof (class in circuits.io.events)h!UtqxauhJNhKhh5]ubcsphinx.addnodes desc qy)qz}q{(h:Uh;h8hUdescq|h@}q}(Unoindexq~UdomainqXpyqhE]hD]hB]hC]hH]UobjtypeqXclassqUdesctypeqhuhJNhKhh5]q(csphinx.addnodes desc_signature q)q}q(h:Xeof(*args, **kwargs)h;hzhqh>Udesc_signatureqh@}q(hE]qh!aUmoduleqcdocutils.nodes reprunicode qXcircuits.io.eventsqq}qbhD]hB]hC]hH]qh!aUfullnameqXeofqUclassqUUfirstquhJNhKhh5]q(csphinx.addnodes desc_annotation q)q}q(h:Xclass h;hhUdesc_annotationqh@}q(hB]hC]hD]hE]hH]uhJNhKhh5]qhTXclass qq}q(h:Uh;hubaubcsphinx.addnodes desc_addname q)q}q(h:Xcircuits.io.events.h;hhU desc_addnameqh@}q(hB]hC]hD]hE]hH]uhJNhKhh5]qhTXcircuits.io.events.qq}q(h:Uh;hubaubcsphinx.addnodes desc_name q)q}q(h:hh;hhU desc_nameqh@}q(hB]hC]hD]hE]hH]uhJNhKhh5]qhTXeofqq}q(h:Uh;hubaubcsphinx.addnodes desc_parameterlist q)q}q(h:Uh;hhUdesc_parameterlistqh@}q(hB]hC]hD]hE]hH]uhJNhKhh5]q(csphinx.addnodes desc_parameter q)q}q(h:X*argsh@}q(hB]hC]hD]hE]hH]uh;hh5]qhTX*argsqq}q(h:Uh;hubah>Udesc_parameterqubh)q}q(h:X**kwargsh@}q(hB]hC]hD]hE]hH]uh;hh5]qhTX**kwargsqŅq}q(h:Uh;hubah>hubeubeubcsphinx.addnodes desc_content q)q}q(h:Uh;hzhU desc_contentqh@}q(hB]hC]hD]hE]hH]uhJNhKhh5]q(ha)q}q(h:X*Bases: :class:`circuits.core.events.Event`h;hhqh>hfh@}q(hB]hC]hD]hE]hH]uhJKhKhh5]q(hTXBases: qӅq}q(h:XBases: h;hubcsphinx.addnodes pending_xref q)q}q(h:X#:class:`circuits.core.events.Event`qh;hhU pending_xrefqh@}q(UreftypeXclassUrefwarnq܉U reftargetqXcircuits.core.events.EventU refdomainXpyqhE]hD]U refexplicithB]hC]hH]UrefdocqXapi/circuits.io.eventsqUpy:classqhU py:moduleqXcircuits.io.eventsquhJNh5]qcdocutils.nodes literal q)q}q(h:hh@}q(hB]hC]q(UxrefqhXpy-classqehD]hE]hH]uh;hh5]qhTXcircuits.core.events.Eventq텁q}q(h:Uh;hubah>Uliteralqubaubeubha)q}q(h:X eof Eventqh;hhhfh@}q(hB]hC]hD]hE]hH]uhJKhKhh5]qhTX eof Eventqq}q(h:hh;hubaubha)q}q(h:XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.qh;hhhfh@}q(hB]hC]hD]hE]hH]uhJKhKhh5]qhTXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.qr}r(h:hh;hubaubha)r}r(h:XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rh;hhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rr}r (h:jh;jubaubha)r }r (h:X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h;hhhfh@}r (hB]hC]hD]hE]hH]uhJK hKhh5]r (hTXEvery event has a rr}r(h:XEvery event has a h;j ubh)r}r(h:X :attr:`name`rh;j hhh@}r(UreftypeXattrh܉hXnameU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhhhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-attrrehD]hE]hH]uh;jh5]rhTXnamerr}r(h:Uh;jubah>hubaubhTXA attribute that is used for matching the event with the handlers.r r!}r"(h:XA attribute that is used for matching the event with the handlers.h;j ubeubcdocutils.nodes field_list r#)r$}r%(h:Uh;hhU field_listr&h@}r'(hB]hC]hD]hE]hH]uhJNhKhh5]r(cdocutils.nodes field r))r*}r+(h:Uh@}r,(hB]hC]hD]hE]hH]uh;j$h5]r-(cdocutils.nodes field_name r.)r/}r0(h:Uh@}r1(hB]hC]hD]hE]hH]uh;j*h5]r2hTX Variablesr3r4}r5(h:Uh;j/ubah>U field_namer6ubcdocutils.nodes field_body r7)r8}r9(h:Uh@}r:(hB]hC]hD]hE]hH]uh;j*h5]r;cdocutils.nodes bullet_list r<)r=}r>(h:Uh@}r?(hB]hC]hD]hE]hH]uh;j8h5]r@(cdocutils.nodes list_item rA)rB}rC(h:Uh@}rD(hB]hC]hD]hE]hH]uh;j=h5]rEha)rF}rG(h:Uh@}rH(hB]hC]hD]hE]hH]uh;jBh5]rI(h)rJ}rK(h:Uh@}rL(UreftypeUobjrMU reftargetXchannelsrNU refdomainhhE]hD]U refexplicithB]hC]hH]uh;jFh5]rOcdocutils.nodes strong rP)rQ}rR(h:jNh@}rS(hB]hC]hD]hE]hH]uh;jJh5]rThTXchannelsrUrV}rW(h:Uh;jQubah>UstrongrXubah>hubhTX -- rYrZ}r[(h:Uh;jFubha)r\}r](h:Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.r^h;jFhhfh@}r_(hB]hC]hD]hE]hH]uhJKh5]r`hTXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rarb}rc(h:j^h;j\ubaubha)rd}re(h:XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rfh;jFhhfh@}rg(hB]hC]hD]hE]hH]uhJKh5]rhhTXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rirj}rk(h:jfh;jdubaubeh>hfubah>U list_itemrlubjA)rm}rn(h:Uh@}ro(hB]hC]hD]hE]hH]uh;j=h5]rpha)rq}rr(h:Uh@}rs(hB]hC]hD]hE]hH]uh;jmh5]rt(h)ru}rv(h:Uh@}rw(UreftypejMU reftargetXvaluerxU refdomainhhE]hD]U refexplicithB]hC]hH]uh;jqh5]ryjP)rz}r{(h:jxh@}r|(hB]hC]hD]hE]hH]uh;juh5]r}hTXvaluer~r}r(h:Uh;jzubah>jXubah>hubhTX -- rr}r(h:Uh;jqubhTX this is a rr}r(h:X this is a h;jqubh)r}r(h:X#:class:`circuits.core.values.Value`rh;jqhhh@}r(UreftypeXclassh܉hXcircuits.core.values.ValueU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhhhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-classrehD]hE]hH]uh;jh5]rhTXcircuits.core.values.Valuerr}r(h:Uh;jubah>hubaubhTXN object that holds the results returned by the handlers invoked for the event.rr}r(h:XN object that holds the results returned by the handlers invoked for the event.h;jqubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;j=h5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXsuccessrU refdomainhhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccessrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX%if this optional attribute is set to rr}r(h:X%if this optional attribute is set to h;jubh)r}r(h:X``True``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXTruerr}r(h:Uh;jubah>hubhTX, an associated event rr}r(h:X, an associated event h;jubh)r}r(h:X ``success``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccessrr}r(h:Uh;jubah>hubhTX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(h:X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;j=h5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXsuccess_channelsrU refdomainhhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccess_channelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h:Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;j=h5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXcompleterU refdomainhhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcompleterr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX%if this optional attribute is set to rr}r(h:X%if this optional attribute is set to h;jubh)r}r(h:X``True``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXTruerr}r(h:Uh;jubah>hubhTX, an associated event rr}r(h:X, an associated event h;jubh)r}r(h:X ``complete``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcompleter r }r (h:Uh;jubah>hubhTX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.r r }r(h:X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;j=h5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXcomplete_channelsrU refdomainhhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcomplete_channelsr r!}r"(h:Uh;jubah>jXubah>hubhTX -- r#r$}r%(h:Uh;jubhTXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r&r'}r((h:Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jubeh>hfubah>jlubeh>U bullet_listr)ubah>U field_bodyr*ubeh>Ufieldr+ubaubhX)r,}r-(h:Uh;hhh\h@}r.(hE]hD]hB]hC]hH]Uentries]r/(h_X'name (circuits.io.events.eof attribute)h#Utr0auhJNhKhh5]ubhy)r1}r2(h:Uh;hhh|h@}r3(h~hXpyhE]hD]hB]hC]hH]hX attributer4hj4uhJNhKhh5]r5(h)r6}r7(h:Xeof.nameh;j1hr8h>hh@}r9(hE]r:h#ahhXcircuits.io.eventsr;r<}r=bhD]hB]hC]hH]r>h#ahXeof.namehhhuhJNhKhh5]r?(h)r@}rA(h:Xnameh;j6hhh@}rB(hB]hC]hD]hE]hH]uhJNhKhh5]rChTXnamerDrE}rF(h:Uh;j@ubaubh)rG}rH(h:X = 'eof'h;j6hhh@}rI(hB]hC]hD]hE]hH]uhJNhKhh5]rJhTX = 'eof'rKrL}rM(h:Uh;jGubaubeubh)rN}rO(h:Uh;j1hhh@}rP(hB]hC]hD]hE]hH]uhJNhKhh5]ubeubeubeubhX)rQ}rR(h:Uh;h8hh\h@}rS(hE]hD]hB]hC]hH]Uentries]rT(h_X"seek (class in circuits.io.events)h UtrUauhJNhKhh5]ubhy)rV}rW(h:Uh;h8hh|h@}rX(h~hXpyrYhE]hD]hB]hC]hH]hXclassrZhjZuhJNhKhh5]r[(h)r\}r](h:Xseek(*args, **kwargs)h;jVhhh@}r^(hE]r_h ahhXcircuits.io.eventsr`ra}rbbhD]hB]hC]hH]rch ahXseekrdhUhuhJNhKhh5]re(h)rf}rg(h:Xclass h;j\hhh@}rh(hB]hC]hD]hE]hH]uhJNhKhh5]rihTXclass rjrk}rl(h:Uh;jfubaubh)rm}rn(h:Xcircuits.io.events.h;j\hhh@}ro(hB]hC]hD]hE]hH]uhJNhKhh5]rphTXcircuits.io.events.rqrr}rs(h:Uh;jmubaubh)rt}ru(h:jdh;j\hhh@}rv(hB]hC]hD]hE]hH]uhJNhKhh5]rwhTXseekrxry}rz(h:Uh;jtubaubh)r{}r|(h:Uh;j\hhh@}r}(hB]hC]hD]hE]hH]uhJNhKhh5]r~(h)r}r(h:X*argsh@}r(hB]hC]hD]hE]hH]uh;j{h5]rhTX*argsrr}r(h:Uh;jubah>hubh)r}r(h:X**kwargsh@}r(hB]hC]hD]hE]hH]uh;j{h5]rhTX**kwargsrr}r(h:Uh;jubah>hubeubeubh)r}r(h:Uh;jVhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]r(ha)r}r(h:X*Bases: :class:`circuits.core.events.Event`h;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]r(hTXBases: rr}r(h:XBases: h;jubh)r}r(h:X#:class:`circuits.core.events.Event`rh;jhhh@}r(UreftypeXclassh܉hXcircuits.core.events.EventU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjdhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-classrehD]hE]hH]uh;jh5]rhTXcircuits.core.events.Eventrr}r(h:Uh;jubah>hubaubeubha)r}r(h:X seek Eventrh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTX seek Eventrr}r(h:jh;jubaubha)r}r(h:XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rr}r(h:jh;jubaubha)r}r(h:XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rr}r(h:jh;jubaubha)r}r(h:X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h;jhhfh@}r(hB]hC]hD]hE]hH]uhJK hKhh5]r(hTXEvery event has a rr}r(h:XEvery event has a h;jubh)r}r(h:X :attr:`name`rh;jhhh@}r(UreftypeXattrh܉hXnameU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjdhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-attrrehD]hE]hH]uh;jh5]rhTXnamerr}r(h:Uh;jubah>hubaubhTXA attribute that is used for matching the event with the handlers.rr}r(h:XA attribute that is used for matching the event with the handlers.h;jubeubj#)r}r(h:Uh;jhj&h@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rj))r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(j.)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX Variablesrr}r(h:Uh;jubah>j6ubj7)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rj<)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(jA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXchannelsrU refdomainjYhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXchannelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubha)r}r(h:Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.r h;jhhfh@}r (hB]hC]hD]hE]hH]uhJKh5]r hTXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.r r }r(h:j h;jubaubha)r}r(h:XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKh5]rhTXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rr}r(h:jh;jubaubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r (h:Uh@}r!(UreftypejMU reftargetXvaluer"U refdomainjYhE]hD]U refexplicithB]hC]hH]uh;jh5]r#jP)r$}r%(h:j"h@}r&(hB]hC]hD]hE]hH]uh;jh5]r'hTXvaluer(r)}r*(h:Uh;j$ubah>jXubah>hubhTX -- r+r,}r-(h:Uh;jubhTX this is a r.r/}r0(h:X this is a h;jubh)r1}r2(h:X#:class:`circuits.core.values.Value`r3h;jhhh@}r4(UreftypeXclassh܉hXcircuits.core.values.ValueU refdomainXpyr5hE]hD]U refexplicithB]hC]hH]hhhjdhhuhJNh5]r6h)r7}r8(h:j3h@}r9(hB]hC]r:(hj5Xpy-classr;ehD]hE]hH]uh;j1h5]r<hTXcircuits.core.values.Valuer=r>}r?(h:Uh;j7ubah>hubaubhTXN object that holds the results returned by the handlers invoked for the event.r@rA}rB(h:XN object that holds the results returned by the handlers invoked for the event.h;jubeh>hfubah>jlubjA)rC}rD(h:Uh@}rE(hB]hC]hD]hE]hH]uh;jh5]rFha)rG}rH(h:Uh@}rI(hB]hC]hD]hE]hH]uh;jCh5]rJ(h)rK}rL(h:Uh@}rM(UreftypejMU reftargetXsuccessrNU refdomainjYhE]hD]U refexplicithB]hC]hH]uh;jGh5]rOjP)rP}rQ(h:jNh@}rR(hB]hC]hD]hE]hH]uh;jKh5]rShTXsuccessrTrU}rV(h:Uh;jPubah>jXubah>hubhTX -- rWrX}rY(h:Uh;jGubhTX%if this optional attribute is set to rZr[}r\(h:X%if this optional attribute is set to h;jGubh)r]}r^(h:X``True``h@}r_(hB]hC]hD]hE]hH]uh;jGh5]r`hTXTruerarb}rc(h:Uh;j]ubah>hubhTX, an associated event rdre}rf(h:X, an associated event h;jGubh)rg}rh(h:X ``success``h@}ri(hB]hC]hD]hE]hH]uh;jGh5]rjhTXsuccessrkrl}rm(h:Uh;jgubah>hubhTX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rnro}rp(h:X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h;jGubeh>hfubah>jlubjA)rq}rr(h:Uh@}rs(hB]hC]hD]hE]hH]uh;jh5]rtha)ru}rv(h:Uh@}rw(hB]hC]hD]hE]hH]uh;jqh5]rx(h)ry}rz(h:Uh@}r{(UreftypejMU reftargetXsuccess_channelsr|U refdomainjYhE]hD]U refexplicithB]hC]hH]uh;juh5]r}jP)r~}r(h:j|h@}r(hB]hC]hD]hE]hH]uh;jyh5]rhTXsuccess_channelsrr}r(h:Uh;j~ubah>jXubah>hubhTX -- rr}r(h:Uh;juubhTXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h:Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;juubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXcompleterU refdomainjYhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcompleterr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX%if this optional attribute is set to rr}r(h:X%if this optional attribute is set to h;jubh)r}r(h:X``True``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXTruerr}r(h:Uh;jubah>hubhTX, an associated event rr}r(h:X, an associated event h;jubh)r}r(h:X ``complete``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcompleterr}r(h:Uh;jubah>hubhTX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rr}r(h:X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXcomplete_channelsrU refdomainjYhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcomplete_channelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h:Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jubeh>hfubah>jlubeh>j)ubah>j*ubeh>j+ubaubhX)r}r(h:Uh;jhh\h@}r(hE]hD]hB]hC]hH]Uentries]r(h_X(name (circuits.io.events.seek attribute)h"UtrauhJNhKhh5]ubhy)r}r(h:Uh;jhh|h@}r(h~hXpyhE]hD]hB]hC]hH]hX attributerhjuhJNhKhh5]r(h)r}r(h:X seek.nameh;jhhh@}r(hE]rh"ahhXcircuits.io.eventsrr}rbhD]hB]hC]hH]rh"ahX seek.namehjdhuhJNhKhh5]r(h)r}r(h:Xnameh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXnamerr}r(h:Uh;jubaubh)r}r(h:X = 'seek'h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTX = 'seek'rr}r(h:Uh;jubaubeubh)r}r(h:Uh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]ubeubeubeubhX)r}r(h:Uh;h8hh\h@}r(hE]hD]hB]hC]hH]Uentries]r(h_X"read (class in circuits.io.events)hUtrauhJNhKhh5]ubhy)r}r(h:Uh;h8hh|h@}r(h~hXpyrhE]hD]hB]hC]hH]hXclassrhjuhJNhKhh5]r(h)r}r(h:Xread(*args, **kwargs)h;jhhh@}r(hE]rhahhXcircuits.io.eventsrr}rbhD]hB]hC]hH]r hahXreadr hUhuhJNhKhh5]r (h)r }r (h:Xclass h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXclass rr}r(h:Uh;j ubaubh)r}r(h:Xcircuits.io.events.h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXcircuits.io.events.rr}r(h:Uh;jubaubh)r}r(h:j h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXreadrr}r (h:Uh;jubaubh)r!}r"(h:Uh;jhhh@}r#(hB]hC]hD]hE]hH]uhJNhKhh5]r$(h)r%}r&(h:X*argsh@}r'(hB]hC]hD]hE]hH]uh;j!h5]r(hTX*argsr)r*}r+(h:Uh;j%ubah>hubh)r,}r-(h:X**kwargsh@}r.(hB]hC]hD]hE]hH]uh;j!h5]r/hTX**kwargsr0r1}r2(h:Uh;j,ubah>hubeubeubh)r3}r4(h:Uh;jhhh@}r5(hB]hC]hD]hE]hH]uhJNhKhh5]r6(ha)r7}r8(h:X*Bases: :class:`circuits.core.events.Event`h;j3hhfh@}r9(hB]hC]hD]hE]hH]uhJKhKhh5]r:(hTXBases: r;r<}r=(h:XBases: h;j7ubh)r>}r?(h:X#:class:`circuits.core.events.Event`r@h;j7hhh@}rA(UreftypeXclassh܉hXcircuits.core.events.EventU refdomainXpyrBhE]hD]U refexplicithB]hC]hH]hhhj hhuhJNh5]rCh)rD}rE(h:j@h@}rF(hB]hC]rG(hjBXpy-classrHehD]hE]hH]uh;j>h5]rIhTXcircuits.core.events.EventrJrK}rL(h:Uh;jDubah>hubaubeubha)rM}rN(h:X read EventrOh;j3hhfh@}rQ(hB]hC]hD]hE]hH]uhJKhKhh5]rRhTX read EventrSrT}rU(h:jOh;jMubaubha)rV}rW(h:XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rXh;j3hhfh@}rY(hB]hC]hD]hE]hH]uhJKhKhh5]rZhTXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r[r\}r](h:jXh;jVubaubha)r^}r_(h:XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.r`h;j3hhfh@}ra(hB]hC]hD]hE]hH]uhJKhKhh5]rbhTXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rcrd}re(h:j`h;j^ubaubha)rf}rg(h:X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h;j3hhfh@}rh(hB]hC]hD]hE]hH]uhJK hKhh5]ri(hTXEvery event has a rjrk}rl(h:XEvery event has a h;jfubh)rm}rn(h:X :attr:`name`roh;jfhhh@}rp(UreftypeXattrh܉hXnameU refdomainXpyrqhE]hD]U refexplicithB]hC]hH]hhhj hhuhJNh5]rrh)rs}rt(h:joh@}ru(hB]hC]rv(hjqXpy-attrrwehD]hE]hH]uh;jmh5]rxhTXnameryrz}r{(h:Uh;jsubah>hubaubhTXA attribute that is used for matching the event with the handlers.r|r}}r~(h:XA attribute that is used for matching the event with the handlers.h;jfubeubj#)r}r(h:Uh;j3hj&h@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rj))r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(j.)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX Variablesrr}r(h:Uh;jubah>j6ubj7)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rj<)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(jA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXchannelsrU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXchannelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubha)r}r(h:Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKh5]rhTXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rr}r(h:jh;jubaubha)r}r(h:XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKh5]rhTXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rr}r(h:jh;jubaubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXvaluerU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXvaluerr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX this is a rr}r(h:X this is a h;jubh)r}r(h:X#:class:`circuits.core.values.Value`rh;jhhh@}r(UreftypeXclassh܉hXcircuits.core.values.ValueU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhj hhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-classrehD]hE]hH]uh;jh5]rhTXcircuits.core.values.Valuerr}r(h:Uh;jubah>hubaubhTXN object that holds the results returned by the handlers invoked for the event.rr}r(h:XN object that holds the results returned by the handlers invoked for the event.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXsuccessrU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccessrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX%if this optional attribute is set to rr}r(h:X%if this optional attribute is set to h;jubh)r}r(h:X``True``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXTruerr}r (h:Uh;jubah>hubhTX, an associated event r r }r (h:X, an associated event h;jubh)r }r(h:X ``success``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccessrr}r(h:Uh;j ubah>hubhTX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(h:X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r (h:Uh@}r!(UreftypejMU reftargetXsuccess_channelsr"U refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]r#jP)r$}r%(h:j"h@}r&(hB]hC]hD]hE]hH]uh;jh5]r'hTXsuccess_channelsr(r)}r*(h:Uh;j$ubah>jXubah>hubhTX -- r+r,}r-(h:Uh;jubhTXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r.r/}r0(h:Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jubeh>hfubah>jlubjA)r1}r2(h:Uh@}r3(hB]hC]hD]hE]hH]uh;jh5]r4ha)r5}r6(h:Uh@}r7(hB]hC]hD]hE]hH]uh;j1h5]r8(h)r9}r:(h:Uh@}r;(UreftypejMU reftargetXcompleter<U refdomainjhE]hD]U refexplicithB]hC]hH]uh;j5h5]r=jP)r>}r?(h:j<h@}r@(hB]hC]hD]hE]hH]uh;j9h5]rAhTXcompleterBrC}rD(h:Uh;j>ubah>jXubah>hubhTX -- rErF}rG(h:Uh;j5ubhTX%if this optional attribute is set to rHrI}rJ(h:X%if this optional attribute is set to h;j5ubh)rK}rL(h:X``True``h@}rM(hB]hC]hD]hE]hH]uh;j5h5]rNhTXTruerOrP}rQ(h:Uh;jKubah>hubhTX, an associated event rRrS}rT(h:X, an associated event h;j5ubh)rU}rV(h:X ``complete``h@}rW(hB]hC]hD]hE]hH]uh;j5h5]rXhTXcompleterYrZ}r[(h:Uh;jUubah>hubhTX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.r\r]}r^(h:X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h;j5ubeh>hfubah>jlubjA)r_}r`(h:Uh@}ra(hB]hC]hD]hE]hH]uh;jh5]rbha)rc}rd(h:Uh@}re(hB]hC]hD]hE]hH]uh;j_h5]rf(h)rg}rh(h:Uh@}ri(UreftypejMU reftargetXcomplete_channelsrjU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jch5]rkjP)rl}rm(h:jjh@}rn(hB]hC]hD]hE]hH]uh;jgh5]rohTXcomplete_channelsrprq}rr(h:Uh;jlubah>jXubah>hubhTX -- rsrt}ru(h:Uh;jcubhTXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rvrw}rx(h:Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jcubeh>hfubah>jlubeh>j)ubah>j*ubeh>j+ubaubhX)ry}rz(h:Uh;j3hh\h@}r{(hE]hD]hB]hC]hH]Uentries]r|(h_X(name (circuits.io.events.read attribute)hUtr}auhJNhKhh5]ubhy)r~}r(h:Uh;j3hh|h@}r(h~hXpyhE]hD]hB]hC]hH]hX attributerhjuhJNhKhh5]r(h)r}r(h:X read.nameh;j~hhh@}r(hE]rhahhXcircuits.io.eventsrr}rbhD]hB]hC]hH]rhahX read.namehj huhJNhKhh5]r(h)r}r(h:Xnameh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXnamerr}r(h:Uh;jubaubh)r}r(h:X = 'read'h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTX = 'read'rr}r(h:Uh;jubaubeubh)r}r(h:Uh;j~hhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]ubeubeubeubhX)r}r(h:Uh;h8hh\h@}r(hE]hD]hB]hC]hH]Uentries]r(h_X#close (class in circuits.io.events)hUtrauhJNhKhh5]ubhy)r}r(h:Uh;h8hh|h@}r(h~hXpyrhE]hD]hB]hC]hH]hXclassrhjuhJNhKhh5]r(h)r}r(h:Xclose(*args, **kwargs)h;jhhh@}r(hE]rhahhXcircuits.io.eventsrr}rbhD]hB]hC]hH]rhahXcloserhUhuhJNhKhh5]r(h)r}r(h:Xclass h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXclass rr}r(h:Uh;jubaubh)r}r(h:Xcircuits.io.events.h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXcircuits.io.events.rr}r(h:Uh;jubaubh)r}r(h:jh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXcloserr}r(h:Uh;jubaubh)r}r(h:Uh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]r(h)r}r(h:X*argsh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX*argsrr}r(h:Uh;jubah>hubh)r}r(h:X**kwargsh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX**kwargsrr}r(h:Uh;jubah>hubeubeubh)r}r(h:Uh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]r(ha)r}r(h:X*Bases: :class:`circuits.core.events.Event`h;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]r(hTXBases: rr}r(h:XBases: h;jubh)r}r(h:X#:class:`circuits.core.events.Event`rh;jhhh@}r(UreftypeXclassh܉hXcircuits.core.events.EventU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-classrehD]hE]hH]uh;jh5]rhTXcircuits.core.events.Eventrr}r(h:Uh;jubah>hubaubeubha)r}r(h:X close Eventrh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTX close Eventrr}r(h:jh;jubaubha)r}r(h:XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rr}r(h:jh;jubaubha)r}r(h:XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.r r }r (h:jh;jubaubha)r }r (h:X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h;jhhfh@}r(hB]hC]hD]hE]hH]uhJK hKhh5]r(hTXEvery event has a rr}r(h:XEvery event has a h;j ubh)r}r(h:X :attr:`name`rh;j hhh@}r(UreftypeXattrh܉hXnameU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-attrrehD]hE]hH]uh;jh5]rhTXnamerr }r!(h:Uh;jubah>hubaubhTXA attribute that is used for matching the event with the handlers.r"r#}r$(h:XA attribute that is used for matching the event with the handlers.h;j ubeubj#)r%}r&(h:Uh;jhj&h@}r'(hB]hC]hD]hE]hH]uhJNhKhh5]r(j))r)}r*(h:Uh@}r+(hB]hC]hD]hE]hH]uh;j%h5]r,(j.)r-}r.(h:Uh@}r/(hB]hC]hD]hE]hH]uh;j)h5]r0hTX Variablesr1r2}r3(h:Uh;j-ubah>j6ubj7)r4}r5(h:Uh@}r6(hB]hC]hD]hE]hH]uh;j)h5]r7j<)r8}r9(h:Uh@}r:(hB]hC]hD]hE]hH]uh;j4h5]r;(jA)r<}r=(h:Uh@}r>(hB]hC]hD]hE]hH]uh;j8h5]r?ha)r@}rA(h:Uh@}rB(hB]hC]hD]hE]hH]uh;j<h5]rC(h)rD}rE(h:Uh@}rF(UreftypejMU reftargetXchannelsrGU refdomainjhE]hD]U refexplicithB]hC]hH]uh;j@h5]rHjP)rI}rJ(h:jGh@}rK(hB]hC]hD]hE]hH]uh;jDh5]rLhTXchannelsrMrN}rO(h:Uh;jIubah>jXubah>hubhTX -- rPrQ}rR(h:Uh;j@ubha)rS}rT(h:Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rUh;j@hhfh@}rV(hB]hC]hD]hE]hH]uhJKh5]rWhTXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rXrY}rZ(h:jUh;jSubaubha)r[}r\(h:XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.r]h;j@hhfh@}r^(hB]hC]hD]hE]hH]uhJKh5]r_hTXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.r`ra}rb(h:j]h;j[ubaubeh>hfubah>jlubjA)rc}rd(h:Uh@}re(hB]hC]hD]hE]hH]uh;j8h5]rfha)rg}rh(h:Uh@}ri(hB]hC]hD]hE]hH]uh;jch5]rj(h)rk}rl(h:Uh@}rm(UreftypejMU reftargetXvaluernU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jgh5]rojP)rp}rq(h:jnh@}rr(hB]hC]hD]hE]hH]uh;jkh5]rshTXvaluertru}rv(h:Uh;jpubah>jXubah>hubhTX -- rwrx}ry(h:Uh;jgubhTX this is a rzr{}r|(h:X this is a h;jgubh)r}}r~(h:X#:class:`circuits.core.values.Value`rh;jghhh@}r(UreftypeXclassh܉hXcircuits.core.values.ValueU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-classrehD]hE]hH]uh;j}h5]rhTXcircuits.core.values.Valuerr}r(h:Uh;jubah>hubaubhTXN object that holds the results returned by the handlers invoked for the event.rr}r(h:XN object that holds the results returned by the handlers invoked for the event.h;jgubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;j8h5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXsuccessrU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccessrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX%if this optional attribute is set to rr}r(h:X%if this optional attribute is set to h;jubh)r}r(h:X``True``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXTruerr}r(h:Uh;jubah>hubhTX, an associated event rr}r(h:X, an associated event h;jubh)r}r(h:X ``success``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccessrr}r(h:Uh;jubah>hubhTX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(h:X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;j8h5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXsuccess_channelsrU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccess_channelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h:Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;j8h5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXcompleterU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcompleterr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX%if this optional attribute is set to rr}r(h:X%if this optional attribute is set to h;jubh)r}r(h:X``True``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXTruerr}r(h:Uh;jubah>hubhTX, an associated event rr}r(h:X, an associated event h;jubh)r}r(h:X ``complete``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcompleterr}r(h:Uh;jubah>hubhTX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rr}r(h:X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;j8h5]rha)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;jh5]r (h)r }r(h:Uh@}r(UreftypejMU reftargetXcomplete_channelsrU refdomainjhE]hD]U refexplicithB]hC]hH]uh;j h5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;j h5]rhTXcomplete_channelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;j ubhTXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h:Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;j ubeh>hfubah>jlubeh>j)ubah>j*ubeh>j+ubaubhX)r}r (h:Uh;jhh\h@}r!(hE]hD]hB]hC]hH]Uentries]r"(h_X)name (circuits.io.events.close attribute)h'Utr#auhJNhKhh5]ubhy)r$}r%(h:Uh;jhh|h@}r&(h~hXpyhE]hD]hB]hC]hH]hX attributer'hj'uhJNhKhh5]r((h)r)}r*(h:X close.nameh;j$hhh@}r+(hE]r,h'ahhXcircuits.io.eventsr-r.}r/bhD]hB]hC]hH]r0h'ahX close.namehjhuhJNhKhh5]r1(h)r2}r3(h:Xnameh;j)hhh@}r4(hB]hC]hD]hE]hH]uhJNhKhh5]r5hTXnamer6r7}r8(h:Uh;j2ubaubh)r9}r:(h:X = 'close'h;j)hhh@}r;(hB]hC]hD]hE]hH]uhJNhKhh5]r<hTX = 'close'r=r>}r?(h:Uh;j9ubaubeubh)r@}rA(h:Uh;j$hhh@}rB(hB]hC]hD]hE]hH]uhJNhKhh5]ubeubeubeubhX)rC}rD(h:Uh;h8hh\h@}rE(hE]hD]hB]hC]hH]Uentries]rF(h_X#write (class in circuits.io.events)hUtrGauhJNhKhh5]ubhy)rH}rI(h:Uh;h8hh|h@}rJ(h~hXpyrKhE]hD]hB]hC]hH]hXclassrLhjLuhJNhKhh5]rM(h)rN}rO(h:Xwrite(*args, **kwargs)h;jHhhh@}rP(hE]rQhahhXcircuits.io.eventsrRrS}rTbhD]hB]hC]hH]rUhahXwriterVhUhuhJNhKhh5]rW(h)rX}rY(h:Xclass h;jNhhh@}rZ(hB]hC]hD]hE]hH]uhJNhKhh5]r[hTXclass r\r]}r^(h:Uh;jXubaubh)r_}r`(h:Xcircuits.io.events.h;jNhhh@}ra(hB]hC]hD]hE]hH]uhJNhKhh5]rbhTXcircuits.io.events.rcrd}re(h:Uh;j_ubaubh)rf}rg(h:jVh;jNhhh@}rh(hB]hC]hD]hE]hH]uhJNhKhh5]rihTXwriterjrk}rl(h:Uh;jfubaubh)rm}rn(h:Uh;jNhhh@}ro(hB]hC]hD]hE]hH]uhJNhKhh5]rp(h)rq}rr(h:X*argsh@}rs(hB]hC]hD]hE]hH]uh;jmh5]rthTX*argsrurv}rw(h:Uh;jqubah>hubh)rx}ry(h:X**kwargsh@}rz(hB]hC]hD]hE]hH]uh;jmh5]r{hTX**kwargsr|r}}r~(h:Uh;jxubah>hubeubeubh)r}r(h:Uh;jHhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]r(ha)r}r(h:X*Bases: :class:`circuits.core.events.Event`h;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]r(hTXBases: rr}r(h:XBases: h;jubh)r}r(h:X#:class:`circuits.core.events.Event`rh;jhhh@}r(UreftypeXclassh܉hXcircuits.core.events.EventU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjVhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-classrehD]hE]hH]uh;jh5]rhTXcircuits.core.events.Eventrr}r(h:Uh;jubah>hubaubeubha)r}r(h:X write Eventrh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTX write Eventrr}r(h:jh;jubaubha)r}r(h:XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rr}r(h:jh;jubaubha)r}r(h:XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rr}r(h:jh;jubaubha)r}r(h:X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h;jhhfh@}r(hB]hC]hD]hE]hH]uhJK hKhh5]r(hTXEvery event has a rr}r(h:XEvery event has a h;jubh)r}r(h:X :attr:`name`rh;jhhh@}r(UreftypeXattrh܉hXnameU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjVhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-attrrehD]hE]hH]uh;jh5]rhTXnamerr}r(h:Uh;jubah>hubaubhTXA attribute that is used for matching the event with the handlers.rr}r(h:XA attribute that is used for matching the event with the handlers.h;jubeubj#)r}r(h:Uh;jhj&h@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rj))r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(j.)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX Variablesrr}r(h:Uh;jubah>j6ubj7)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rj<)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(jA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXchannelsrU refdomainjKhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXchannelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubha)r}r(h:Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKh5]rhTXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rr}r(h:jh;jubaubha)r}r(h:XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKh5]rhTXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rr}r(h:jh;jubaubeh>hfubah>jlubjA)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;jh5]r ha)r }r(h:Uh@}r(hB]hC]hD]hE]hH]uh;j h5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXvaluerU refdomainjKhE]hD]U refexplicithB]hC]hH]uh;j h5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXvaluerr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;j ubhTX this is a r r!}r"(h:X this is a h;j ubh)r#}r$(h:X#:class:`circuits.core.values.Value`r%h;j hhh@}r&(UreftypeXclassh܉hXcircuits.core.values.ValueU refdomainXpyr'hE]hD]U refexplicithB]hC]hH]hhhjVhhuhJNh5]r(h)r)}r*(h:j%h@}r+(hB]hC]r,(hj'Xpy-classr-ehD]hE]hH]uh;j#h5]r.hTXcircuits.core.values.Valuer/r0}r1(h:Uh;j)ubah>hubaubhTXN object that holds the results returned by the handlers invoked for the event.r2r3}r4(h:XN object that holds the results returned by the handlers invoked for the event.h;j ubeh>hfubah>jlubjA)r5}r6(h:Uh@}r7(hB]hC]hD]hE]hH]uh;jh5]r8ha)r9}r:(h:Uh@}r;(hB]hC]hD]hE]hH]uh;j5h5]r<(h)r=}r>(h:Uh@}r?(UreftypejMU reftargetXsuccessr@U refdomainjKhE]hD]U refexplicithB]hC]hH]uh;j9h5]rAjP)rB}rC(h:j@h@}rD(hB]hC]hD]hE]hH]uh;j=h5]rEhTXsuccessrFrG}rH(h:Uh;jBubah>jXubah>hubhTX -- rIrJ}rK(h:Uh;j9ubhTX%if this optional attribute is set to rLrM}rN(h:X%if this optional attribute is set to h;j9ubh)rO}rP(h:X``True``h@}rQ(hB]hC]hD]hE]hH]uh;j9h5]rRhTXTruerSrT}rU(h:Uh;jOubah>hubhTX, an associated event rVrW}rX(h:X, an associated event h;j9ubh)rY}rZ(h:X ``success``h@}r[(hB]hC]hD]hE]hH]uh;j9h5]r\hTXsuccessr]r^}r_(h:Uh;jYubah>hubhTX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.r`ra}rb(h:X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h;j9ubeh>hfubah>jlubjA)rc}rd(h:Uh@}re(hB]hC]hD]hE]hH]uh;jh5]rfha)rg}rh(h:Uh@}ri(hB]hC]hD]hE]hH]uh;jch5]rj(h)rk}rl(h:Uh@}rm(UreftypejMU reftargetXsuccess_channelsrnU refdomainjKhE]hD]U refexplicithB]hC]hH]uh;jgh5]rojP)rp}rq(h:jnh@}rr(hB]hC]hD]hE]hH]uh;jkh5]rshTXsuccess_channelsrtru}rv(h:Uh;jpubah>jXubah>hubhTX -- rwrx}ry(h:Uh;jgubhTXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rzr{}r|(h:Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jgubeh>hfubah>jlubjA)r}}r~(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;j}h5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXcompleterU refdomainjKhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcompleterr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX%if this optional attribute is set to rr}r(h:X%if this optional attribute is set to h;jubh)r}r(h:X``True``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXTruerr}r(h:Uh;jubah>hubhTX, an associated event rr}r(h:X, an associated event h;jubh)r}r(h:X ``complete``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcompleterr}r(h:Uh;jubah>hubhTX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rr}r(h:X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXcomplete_channelsrU refdomainjKhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcomplete_channelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h:Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jubeh>hfubah>jlubeh>j)ubah>j*ubeh>j+ubaubhX)r}r(h:Uh;jhh\h@}r(hE]hD]hB]hC]hH]Uentries]r(h_X)name (circuits.io.events.write attribute)h$UtrauhJNhKhh5]ubhy)r}r(h:Uh;jhh|h@}r(h~hXpyhE]hD]hB]hC]hH]hX attributerhjuhJNhKhh5]r(h)r}r(h:X write.nameh;jhhh@}r(hE]rh$ahhXcircuits.io.eventsrr}rbhD]hB]hC]hH]rh$ahX write.namehjVhuhJNhKhh5]r(h)r}r(h:Xnameh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXnamerr}r(h:Uh;jubaubh)r}r(h:X = 'write'h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTX = 'write'rr}r(h:Uh;jubaubeubh)r}r(h:Uh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]ubeubeubeubhX)r}r(h:Uh;h8hh\h@}r(hE]hD]hB]hC]hH]Uentries]r(h_X#error (class in circuits.io.events)hUtrauhJNhKhh5]ubhy)r}r(h:Uh;h8hh|h@}r(h~hXpyrhE]hD]hB]hC]hH]hXclassrhjuhJNhKhh5]r(h)r}r(h:Xerror(*args, **kwargs)h;jhhh@}r(hE]rhahhXcircuits.io.eventsrr}rbhD]hB]hC]hH]rhahXerrorrhUhuhJNhKhh5]r(h)r}r(h:Xclass h;jhhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r hTXclass r r }r (h:Uh;jubaubh)r }r (h:Xcircuits.io.events.h;jhhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r hTXcircuits.io.events.r r }r (h:Uh;j ubaubh)r }r (h:jh;jhhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r hTXerrorr r }r (h:Uh;j ubaubh)r }r (h:Uh;jhhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r (h)r }r (h:X*argsh@}r (hB]hC]hD]hE]hH]uh;j h5]r hTX*argsr r }r (h:Uh;j ubah>hubh)r }r (h:X**kwargsh@}r (hB]hC]hD]hE]hH]uh;j h5]r! hTX**kwargsr" r# }r$ (h:Uh;j ubah>hubeubeubh)r% }r& (h:Uh;jhhh@}r' (hB]hC]hD]hE]hH]uhJNhKhh5]r( (ha)r) }r* (h:X*Bases: :class:`circuits.core.events.Event`h;j% hhfh@}r+ (hB]hC]hD]hE]hH]uhJKhKhh5]r, (hTXBases: r- r. }r/ (h:XBases: h;j) ubh)r0 }r1 (h:X#:class:`circuits.core.events.Event`r2 h;j) hhh@}r3 (UreftypeXclassh܉hXcircuits.core.events.EventU refdomainXpyr4 hE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]r5 h)r6 }r7 (h:j2 h@}r8 (hB]hC]r9 (hj4 Xpy-classr: ehD]hE]hH]uh;j0 h5]r; hTXcircuits.core.events.Eventr< r= }r> (h:Uh;j6 ubah>hubaubeubha)r? }r@ (h:X error EventrA h;j% hhfh@}rC (hB]hC]hD]hE]hH]uhJKhKhh5]rD hTX error EventrE rF }rG (h:jA h;j? ubaubha)rH }rI (h:XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rJ h;j% hhfh@}rK (hB]hC]hD]hE]hH]uhJKhKhh5]rL hTXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rM rN }rO (h:jJ h;jH ubaubha)rP }rQ (h:XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rR h;j% hhfh@}rS (hB]hC]hD]hE]hH]uhJKhKhh5]rT hTXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rU rV }rW (h:jR h;jP ubaubha)rX }rY (h:X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h;j% hhfh@}rZ (hB]hC]hD]hE]hH]uhJK hKhh5]r[ (hTXEvery event has a r\ r] }r^ (h:XEvery event has a h;jX ubh)r_ }r` (h:X :attr:`name`ra h;jX hhh@}rb (UreftypeXattrh܉hXnameU refdomainXpyrc hE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]rd h)re }rf (h:ja h@}rg (hB]hC]rh (hjc Xpy-attrri ehD]hE]hH]uh;j_ h5]rj hTXnamerk rl }rm (h:Uh;je ubah>hubaubhTXA attribute that is used for matching the event with the handlers.rn ro }rp (h:XA attribute that is used for matching the event with the handlers.h;jX ubeubj#)rq }rr (h:Uh;j% hj&h@}rs (hB]hC]hD]hE]hH]uhJNhKhh5]rt j))ru }rv (h:Uh@}rw (hB]hC]hD]hE]hH]uh;jq h5]rx (j.)ry }rz (h:Uh@}r{ (hB]hC]hD]hE]hH]uh;ju h5]r| hTX Variablesr} r~ }r (h:Uh;jy ubah>j6ubj7)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;ju h5]r j<)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r (jA)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r ha)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r (h)r }r (h:Uh@}r (UreftypejMU reftargetXchannelsr U refdomainjhE]hD]U refexplicithB]hC]hH]uh;j h5]r jP)r }r (h:j h@}r (hB]hC]hD]hE]hH]uh;j h5]r hTXchannelsr r }r (h:Uh;j ubah>jXubah>hubhTX -- r r }r (h:Uh;j ubha)r }r (h:Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.r h;j hhfh@}r (hB]hC]hD]hE]hH]uhJKh5]r hTXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.r r }r (h:j h;j ubaubha)r }r (h:XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.r h;j hhfh@}r (hB]hC]hD]hE]hH]uhJKh5]r hTXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.r r }r (h:j h;j ubaubeh>hfubah>jlubjA)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r ha)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r (h)r }r (h:Uh@}r (UreftypejMU reftargetXvaluer U refdomainjhE]hD]U refexplicithB]hC]hH]uh;j h5]r jP)r }r (h:j h@}r (hB]hC]hD]hE]hH]uh;j h5]r hTXvaluer r }r (h:Uh;j ubah>jXubah>hubhTX -- r r }r (h:Uh;j ubhTX this is a r r }r (h:X this is a h;j ubh)r }r (h:X#:class:`circuits.core.values.Value`r h;j hhh@}r (UreftypeXclassh܉hXcircuits.core.values.ValueU refdomainXpyr hE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]r h)r }r (h:j h@}r (hB]hC]r (hj Xpy-classr ehD]hE]hH]uh;j h5]r hTXcircuits.core.values.Valuer r }r (h:Uh;j ubah>hubaubhTXN object that holds the results returned by the handlers invoked for the event.r r }r (h:XN object that holds the results returned by the handlers invoked for the event.h;j ubeh>hfubah>jlubjA)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r ha)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r (h)r }r (h:Uh@}r (UreftypejMU reftargetXsuccessr U refdomainjhE]hD]U refexplicithB]hC]hH]uh;j h5]r jP)r }r (h:j h@}r (hB]hC]hD]hE]hH]uh;j h5]r hTXsuccessr r }r (h:Uh;j ubah>jXubah>hubhTX -- r r }r (h:Uh;j ubhTX%if this optional attribute is set to r r }r (h:X%if this optional attribute is set to h;j ubh)r }r (h:X``True``h@}r (hB]hC]hD]hE]hH]uh;j h5]r hTXTruer r }r (h:Uh;j ubah>hubhTX, an associated event r r }r (h:X, an associated event h;j ubh)r }r (h:X ``success``h@}r (hB]hC]hD]hE]hH]uh;j h5]r hTXsuccessr r }r (h:Uh;j ubah>hubhTX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.r r }r (h:X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h;j ubeh>hfubah>jlubjA)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r ha)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r (h)r }r (h:Uh@}r (UreftypejMU reftargetXsuccess_channelsr U refdomainjhE]hD]U refexplicithB]hC]hH]uh;j h5]r jP)r }r (h:j h@}r (hB]hC]hD]hE]hH]uh;j h5]r hTXsuccess_channelsr r }r (h:Uh;j ubah>jXubah>hubhTX -- r r }r (h:Uh;j ubhTXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r r! }r" (h:Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;j ubeh>hfubah>jlubjA)r# }r$ (h:Uh@}r% (hB]hC]hD]hE]hH]uh;j h5]r& ha)r' }r( (h:Uh@}r) (hB]hC]hD]hE]hH]uh;j# h5]r* (h)r+ }r, (h:Uh@}r- (UreftypejMU reftargetXcompleter. U refdomainjhE]hD]U refexplicithB]hC]hH]uh;j' h5]r/ jP)r0 }r1 (h:j. h@}r2 (hB]hC]hD]hE]hH]uh;j+ h5]r3 hTXcompleter4 r5 }r6 (h:Uh;j0 ubah>jXubah>hubhTX -- r7 r8 }r9 (h:Uh;j' ubhTX%if this optional attribute is set to r: r; }r< (h:X%if this optional attribute is set to h;j' ubh)r= }r> (h:X``True``h@}r? (hB]hC]hD]hE]hH]uh;j' h5]r@ hTXTruerA rB }rC (h:Uh;j= ubah>hubhTX, an associated event rD rE }rF (h:X, an associated event h;j' ubh)rG }rH (h:X ``complete``h@}rI (hB]hC]hD]hE]hH]uh;j' h5]rJ hTXcompleterK rL }rM (h:Uh;jG ubah>hubhTX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rN rO }rP (h:X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h;j' ubeh>hfubah>jlubjA)rQ }rR (h:Uh@}rS (hB]hC]hD]hE]hH]uh;j h5]rT ha)rU }rV (h:Uh@}rW (hB]hC]hD]hE]hH]uh;jQ h5]rX (h)rY }rZ (h:Uh@}r[ (UreftypejMU reftargetXcomplete_channelsr\ U refdomainjhE]hD]U refexplicithB]hC]hH]uh;jU h5]r] jP)r^ }r_ (h:j\ h@}r` (hB]hC]hD]hE]hH]uh;jY h5]ra hTXcomplete_channelsrb rc }rd (h:Uh;j^ ubah>jXubah>hubhTX -- re rf }rg (h:Uh;jU ubhTXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rh ri }rj (h:Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jU ubeh>hfubah>jlubeh>j)ubah>j*ubeh>j+ubaubhX)rk }rl (h:Uh;j% hh\h@}rm (hE]hD]hB]hC]hH]Uentries]rn (h_X)name (circuits.io.events.error attribute)hUtro auhJNhKhh5]ubhy)rp }rq (h:Uh;j% hh|h@}rr (h~hXpyhE]hD]hB]hC]hH]hX attributers hjs uhJNhKhh5]rt (h)ru }rv (h:X error.nameh;jp hhh@}rw (hE]rx hahhXcircuits.io.eventsry rz }r{ bhD]hB]hC]hH]r| hahX error.namehjhuhJNhKhh5]r} (h)r~ }r (h:Xnameh;ju hhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r hTXnamer r }r (h:Uh;j~ ubaubh)r }r (h:X = 'error'h;ju hhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r hTX = 'error'r r }r (h:Uh;j ubaubeubh)r }r (h:Uh;jp hhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]ubeubeubeubhX)r }r (h:Uh;h8hh\h@}r (hE]hD]hB]hC]hH]Uentries]r (h_X"open (class in circuits.io.events)hUtr auhJNhKhh5]ubhy)r }r (h:Uh;h8hh|h@}r (h~hXpyr hE]hD]hB]hC]hH]hXclassr hj uhJNhKhh5]r (h)r }r (h:Xopen(*args, **kwargs)h;j hhh@}r (hE]r hahhXcircuits.io.eventsr r }r bhD]hB]hC]hH]r hahXopenr hUhuhJNhKhh5]r (h)r }r (h:Xclass h;j hhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r hTXclass r r }r (h:Uh;j ubaubh)r }r (h:Xcircuits.io.events.h;j hhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r hTXcircuits.io.events.r r }r (h:Uh;j ubaubh)r }r (h:j h;j hhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r hTXopenr r }r (h:Uh;j ubaubh)r }r (h:Uh;j hhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r (h)r }r (h:X*argsh@}r (hB]hC]hD]hE]hH]uh;j h5]r hTX*argsr r }r (h:Uh;j ubah>hubh)r }r (h:X**kwargsh@}r (hB]hC]hD]hE]hH]uh;j h5]r hTX**kwargsr r }r (h:Uh;j ubah>hubeubeubh)r }r (h:Uh;j hhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r (ha)r }r (h:X*Bases: :class:`circuits.core.events.Event`h;j hhfh@}r (hB]hC]hD]hE]hH]uhJKhKhh5]r (hTXBases: r r }r (h:XBases: h;j ubh)r }r (h:X#:class:`circuits.core.events.Event`r h;j hhh@}r (UreftypeXclassh܉hXcircuits.core.events.EventU refdomainXpyr hE]hD]U refexplicithB]hC]hH]hhhj hhuhJNh5]r h)r }r (h:j h@}r (hB]hC]r (hj Xpy-classr ehD]hE]hH]uh;j h5]r hTXcircuits.core.events.Eventr r }r (h:Uh;j ubah>hubaubeubha)r }r (h:X open Eventr h;j hhfh@}r (hB]hC]hD]hE]hH]uhJKhKhh5]r hTX open Eventr r }r (h:j h;j ubaubha)r }r (h:XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r h;j hhfh@}r (hB]hC]hD]hE]hH]uhJKhKhh5]r hTXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r r }r (h:j h;j ubaubha)r }r (h:XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.r h;j hhfh@}r (hB]hC]hD]hE]hH]uhJKhKhh5]r hTXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.r r }r (h:j h;j ubaubha)r }r (h:X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h;j hhfh@}r (hB]hC]hD]hE]hH]uhJK hKhh5]r (hTXEvery event has a r r }r (h:XEvery event has a h;j ubh)r }r (h:X :attr:`name`r h;j hhh@}r (UreftypeXattrh܉hXnameU refdomainXpyr hE]hD]U refexplicithB]hC]hH]hhhj hhuhJNh5]r h)r }r (h:j h@}r (hB]hC]r (hj Xpy-attrr ehD]hE]hH]uh;j h5]r hTXnamer r }r (h:Uh;j ubah>hubaubhTXA attribute that is used for matching the event with the handlers.r r }r (h:XA attribute that is used for matching the event with the handlers.h;j ubeubj#)r }r (h:Uh;j hj&h@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r j))r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r (j.)r }r (h:Uh@}r! (hB]hC]hD]hE]hH]uh;j h5]r" hTX Variablesr# r$ }r% (h:Uh;j ubah>j6ubj7)r& }r' (h:Uh@}r( (hB]hC]hD]hE]hH]uh;j h5]r) j<)r* }r+ (h:Uh@}r, (hB]hC]hD]hE]hH]uh;j& h5]r- (jA)r. }r/ (h:Uh@}r0 (hB]hC]hD]hE]hH]uh;j* h5]r1 ha)r2 }r3 (h:Uh@}r4 (hB]hC]hD]hE]hH]uh;j. h5]r5 (h)r6 }r7 (h:Uh@}r8 (UreftypejMU reftargetXchannelsr9 U refdomainj hE]hD]U refexplicithB]hC]hH]uh;j2 h5]r: jP)r; }r< (h:j9 h@}r= (hB]hC]hD]hE]hH]uh;j6 h5]r> hTXchannelsr? r@ }rA (h:Uh;j; ubah>jXubah>hubhTX -- rB rC }rD (h:Uh;j2 ubha)rE }rF (h:Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rG h;j2 hhfh@}rH (hB]hC]hD]hE]hH]uhJKh5]rI hTXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rJ rK }rL (h:jG h;jE ubaubha)rM }rN (h:XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rO h;j2 hhfh@}rP (hB]hC]hD]hE]hH]uhJKh5]rQ hTXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rR rS }rT (h:jO h;jM ubaubeh>hfubah>jlubjA)rU }rV (h:Uh@}rW (hB]hC]hD]hE]hH]uh;j* h5]rX ha)rY }rZ (h:Uh@}r[ (hB]hC]hD]hE]hH]uh;jU h5]r\ (h)r] }r^ (h:Uh@}r_ (UreftypejMU reftargetXvaluer` U refdomainj hE]hD]U refexplicithB]hC]hH]uh;jY h5]ra jP)rb }rc (h:j` h@}rd (hB]hC]hD]hE]hH]uh;j] h5]re hTXvaluerf rg }rh (h:Uh;jb ubah>jXubah>hubhTX -- ri rj }rk (h:Uh;jY ubhTX this is a rl rm }rn (h:X this is a h;jY ubh)ro }rp (h:X#:class:`circuits.core.values.Value`rq h;jY hhh@}rr (UreftypeXclassh܉hXcircuits.core.values.ValueU refdomainXpyrs hE]hD]U refexplicithB]hC]hH]hhhj hhuhJNh5]rt h)ru }rv (h:jq h@}rw (hB]hC]rx (hjs Xpy-classry ehD]hE]hH]uh;jo h5]rz hTXcircuits.core.values.Valuer{ r| }r} (h:Uh;ju ubah>hubaubhTXN object that holds the results returned by the handlers invoked for the event.r~ r }r (h:XN object that holds the results returned by the handlers invoked for the event.h;jY ubeh>hfubah>jlubjA)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j* h5]r ha)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r (h)r }r (h:Uh@}r (UreftypejMU reftargetXsuccessr U refdomainj hE]hD]U refexplicithB]hC]hH]uh;j h5]r jP)r }r (h:j h@}r (hB]hC]hD]hE]hH]uh;j h5]r hTXsuccessr r }r (h:Uh;j ubah>jXubah>hubhTX -- r r }r (h:Uh;j ubhTX%if this optional attribute is set to r r }r (h:X%if this optional attribute is set to h;j ubh)r }r (h:X``True``h@}r (hB]hC]hD]hE]hH]uh;j h5]r hTXTruer r }r (h:Uh;j ubah>hubhTX, an associated event r r }r (h:X, an associated event h;j ubh)r }r (h:X ``success``h@}r (hB]hC]hD]hE]hH]uh;j h5]r hTXsuccessr r }r (h:Uh;j ubah>hubhTX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.r r }r (h:X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h;j ubeh>hfubah>jlubjA)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j* h5]r ha)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r (h)r }r (h:Uh@}r (UreftypejMU reftargetXsuccess_channelsr U refdomainj hE]hD]U refexplicithB]hC]hH]uh;j h5]r jP)r }r (h:j h@}r (hB]hC]hD]hE]hH]uh;j h5]r hTXsuccess_channelsr r }r (h:Uh;j ubah>jXubah>hubhTX -- r r }r (h:Uh;j ubhTXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r r }r (h:Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;j ubeh>hfubah>jlubjA)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j* h5]r ha)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r (h)r }r (h:Uh@}r (UreftypejMU reftargetXcompleter U refdomainj hE]hD]U refexplicithB]hC]hH]uh;j h5]r jP)r }r (h:j h@}r (hB]hC]hD]hE]hH]uh;j h5]r hTXcompleter r }r (h:Uh;j ubah>jXubah>hubhTX -- r r }r (h:Uh;j ubhTX%if this optional attribute is set to r r }r (h:X%if this optional attribute is set to h;j ubh)r }r (h:X``True``h@}r (hB]hC]hD]hE]hH]uh;j h5]r hTXTruer r }r (h:Uh;j ubah>hubhTX, an associated event r r }r (h:X, an associated event h;j ubh)r }r (h:X ``complete``h@}r (hB]hC]hD]hE]hH]uh;j h5]r hTXcompleter r }r (h:Uh;j ubah>hubhTX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.r r }r (h:X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h;j ubeh>hfubah>jlubjA)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j* h5]r ha)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r (h)r }r (h:Uh@}r (UreftypejMU reftargetXcomplete_channelsr U refdomainj hE]hD]U refexplicithB]hC]hH]uh;j h5]r jP)r }r (h:j h@}r (hB]hC]hD]hE]hH]uh;j h5]r hTXcomplete_channelsr r }r (h:Uh;j ubah>jXubah>hubhTX -- r r }r (h:Uh;j ubhTXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r r }r (h:Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;j ubeh>hfubah>jlubeh>j)ubah>j*ubeh>j+ubaubhX)r }r (h:Uh;j hh\h@}r (hE]hD]hB]hC]hH]Uentries]r (h_X(name (circuits.io.events.open attribute)hUtr auhJNhKhh5]ubhy)r }r (h:Uh;j hh|h@}r (h~hXpyhE]hD]hB]hC]hH]hX attributer hj uhJNhKhh5]r (h)r }r (h:X open.nameh;j hhh@}r (hE]r hahhXcircuits.io.eventsr r }r! bhD]hB]hC]hH]r" hahX open.namehj huhJNhKhh5]r# (h)r$ }r% (h:Xnameh;j hhh@}r& (hB]hC]hD]hE]hH]uhJNhKhh5]r' hTXnamer( r) }r* (h:Uh;j$ ubaubh)r+ }r, (h:X = 'open'h;j hhh@}r- (hB]hC]hD]hE]hH]uhJNhKhh5]r. hTX = 'open'r/ r0 }r1 (h:Uh;j+ ubaubeubh)r2 }r3 (h:Uh;j hhh@}r4 (hB]hC]hD]hE]hH]uhJNhKhh5]ubeubeubeubhX)r5 }r6 (h:Uh;h8hh\h@}r7 (hE]hD]hB]hC]hH]Uentries]r8 (h_X$opened (class in circuits.io.events)h Utr9 auhJNhKhh5]ubhy)r: }r; (h:Uh;h8hh|h@}r< (h~hXpyr= hE]hD]hB]hC]hH]hXclassr> hj> uhJNhKhh5]r? (h)r@ }rA (h:Xopened(*args, **kwargs)h;j: hhh@}rB (hE]rC h ahhXcircuits.io.eventsrD rE }rF bhD]hB]hC]hH]rG h ahXopenedrH hUhuhJNhKhh5]rI (h)rJ }rK (h:Xclass h;j@ hhh@}rL (hB]hC]hD]hE]hH]uhJNhKhh5]rM hTXclass rN rO }rP (h:Uh;jJ ubaubh)rQ }rR (h:Xcircuits.io.events.h;j@ hhh@}rS (hB]hC]hD]hE]hH]uhJNhKhh5]rT hTXcircuits.io.events.rU rV }rW (h:Uh;jQ ubaubh)rX }rY (h:jH h;j@ hhh@}rZ (hB]hC]hD]hE]hH]uhJNhKhh5]r[ hTXopenedr\ r] }r^ (h:Uh;jX ubaubh)r_ }r` (h:Uh;j@ hhh@}ra (hB]hC]hD]hE]hH]uhJNhKhh5]rb (h)rc }rd (h:X*argsh@}re (hB]hC]hD]hE]hH]uh;j_ h5]rf hTX*argsrg rh }ri (h:Uh;jc ubah>hubh)rj }rk (h:X**kwargsh@}rl (hB]hC]hD]hE]hH]uh;j_ h5]rm hTX**kwargsrn ro }rp (h:Uh;jj ubah>hubeubeubh)rq }rr (h:Uh;j: hhh@}rs (hB]hC]hD]hE]hH]uhJNhKhh5]rt (ha)ru }rv (h:X*Bases: :class:`circuits.core.events.Event`h;jq hhfh@}rw (hB]hC]hD]hE]hH]uhJKhKhh5]rx (hTXBases: ry rz }r{ (h:XBases: h;ju ubh)r| }r} (h:X#:class:`circuits.core.events.Event`r~ h;ju hhh@}r (UreftypeXclassh܉hXcircuits.core.events.EventU refdomainXpyr hE]hD]U refexplicithB]hC]hH]hhhjH hhuhJNh5]r h)r }r (h:j~ h@}r (hB]hC]r (hj Xpy-classr ehD]hE]hH]uh;j| h5]r hTXcircuits.core.events.Eventr r }r (h:Uh;j ubah>hubaubeubha)r }r (h:X opened Eventr h;jq hhfh@}r (hB]hC]hD]hE]hH]uhJKhKhh5]r hTX opened Eventr r }r (h:j h;j ubaubha)r }r (h:XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r h;jq hhfh@}r (hB]hC]hD]hE]hH]uhJKhKhh5]r hTXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r r }r (h:j h;j ubaubha)r }r (h:XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.r h;jq hhfh@}r (hB]hC]hD]hE]hH]uhJKhKhh5]r hTXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.r r }r (h:j h;j ubaubha)r }r (h:X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h;jq hhfh@}r (hB]hC]hD]hE]hH]uhJK hKhh5]r (hTXEvery event has a r r }r (h:XEvery event has a h;j ubh)r }r (h:X :attr:`name`r h;j hhh@}r (UreftypeXattrh܉hXnameU refdomainXpyr hE]hD]U refexplicithB]hC]hH]hhhjH hhuhJNh5]r h)r }r (h:j h@}r (hB]hC]r (hj Xpy-attrr ehD]hE]hH]uh;j h5]r hTXnamer r }r (h:Uh;j ubah>hubaubhTXA attribute that is used for matching the event with the handlers.r r }r (h:XA attribute that is used for matching the event with the handlers.h;j ubeubj#)r }r (h:Uh;jq hj&h@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r j))r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r (j.)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r hTX Variablesr r }r (h:Uh;j ubah>j6ubj7)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r j<)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r (jA)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r ha)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r (h)r }r (h:Uh@}r (UreftypejMU reftargetXchannelsr U refdomainj= hE]hD]U refexplicithB]hC]hH]uh;j h5]r jP)r }r (h:j h@}r (hB]hC]hD]hE]hH]uh;j h5]r hTXchannelsr r }r (h:Uh;j ubah>jXubah>hubhTX -- r r }r (h:Uh;j ubha)r }r (h:Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.r h;j hhfh@}r (hB]hC]hD]hE]hH]uhJKh5]r hTXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.r r }r (h:j h;j ubaubha)r }r (h:XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.r h;j hhfh@}r (hB]hC]hD]hE]hH]uhJKh5]r hTXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.r r }r (h:j h;j ubaubeh>hfubah>jlubjA)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r ha)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r (h)r }r (h:Uh@}r (UreftypejMU reftargetXvaluer U refdomainj= hE]hD]U refexplicithB]hC]hH]uh;j h5]r jP)r }r (h:j h@}r (hB]hC]hD]hE]hH]uh;j h5]r hTXvaluer r }r (h:Uh;j ubah>jXubah>hubhTX -- r r }r (h:Uh;j ubhTX this is a r r }r (h:X this is a h;j ubh)r }r (h:X#:class:`circuits.core.values.Value`r h;j hhh@}r (UreftypeXclassh܉hXcircuits.core.values.ValueU refdomainXpyr hE]hD]U refexplicithB]hC]hH]hhhjH hhuhJNh5]r h)r }r (h:j h@}r (hB]hC]r (hj Xpy-classr ehD]hE]hH]uh;j h5]r hTXcircuits.core.values.Valuer! r" }r# (h:Uh;j ubah>hubaubhTXN object that holds the results returned by the handlers invoked for the event.r$ r% }r& (h:XN object that holds the results returned by the handlers invoked for the event.h;j ubeh>hfubah>jlubjA)r' }r( (h:Uh@}r) (hB]hC]hD]hE]hH]uh;j h5]r* ha)r+ }r, (h:Uh@}r- (hB]hC]hD]hE]hH]uh;j' h5]r. (h)r/ }r0 (h:Uh@}r1 (UreftypejMU reftargetXsuccessr2 U refdomainj= hE]hD]U refexplicithB]hC]hH]uh;j+ h5]r3 jP)r4 }r5 (h:j2 h@}r6 (hB]hC]hD]hE]hH]uh;j/ h5]r7 hTXsuccessr8 r9 }r: (h:Uh;j4 ubah>jXubah>hubhTX -- r; r< }r= (h:Uh;j+ ubhTX%if this optional attribute is set to r> r? }r@ (h:X%if this optional attribute is set to h;j+ ubh)rA }rB (h:X``True``h@}rC (hB]hC]hD]hE]hH]uh;j+ h5]rD hTXTruerE rF }rG (h:Uh;jA ubah>hubhTX, an associated event rH rI }rJ (h:X, an associated event h;j+ ubh)rK }rL (h:X ``success``h@}rM (hB]hC]hD]hE]hH]uh;j+ h5]rN hTXsuccessrO rP }rQ (h:Uh;jK ubah>hubhTX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rR rS }rT (h:X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h;j+ ubeh>hfubah>jlubjA)rU }rV (h:Uh@}rW (hB]hC]hD]hE]hH]uh;j h5]rX ha)rY }rZ (h:Uh@}r[ (hB]hC]hD]hE]hH]uh;jU h5]r\ (h)r] }r^ (h:Uh@}r_ (UreftypejMU reftargetXsuccess_channelsr` U refdomainj= hE]hD]U refexplicithB]hC]hH]uh;jY h5]ra jP)rb }rc (h:j` h@}rd (hB]hC]hD]hE]hH]uh;j] h5]re hTXsuccess_channelsrf rg }rh (h:Uh;jb ubah>jXubah>hubhTX -- ri rj }rk (h:Uh;jY ubhTXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rl rm }rn (h:Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jY ubeh>hfubah>jlubjA)ro }rp (h:Uh@}rq (hB]hC]hD]hE]hH]uh;j h5]rr ha)rs }rt (h:Uh@}ru (hB]hC]hD]hE]hH]uh;jo h5]rv (h)rw }rx (h:Uh@}ry (UreftypejMU reftargetXcompleterz U refdomainj= hE]hD]U refexplicithB]hC]hH]uh;js h5]r{ jP)r| }r} (h:jz h@}r~ (hB]hC]hD]hE]hH]uh;jw h5]r hTXcompleter r }r (h:Uh;j| ubah>jXubah>hubhTX -- r r }r (h:Uh;js ubhTX%if this optional attribute is set to r r }r (h:X%if this optional attribute is set to h;js ubh)r }r (h:X``True``h@}r (hB]hC]hD]hE]hH]uh;js h5]r hTXTruer r }r (h:Uh;j ubah>hubhTX, an associated event r r }r (h:X, an associated event h;js ubh)r }r (h:X ``complete``h@}r (hB]hC]hD]hE]hH]uh;js h5]r hTXcompleter r }r (h:Uh;j ubah>hubhTX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.r r }r (h:X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h;js ubeh>hfubah>jlubjA)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r ha)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;j h5]r (h)r }r (h:Uh@}r (UreftypejMU reftargetXcomplete_channelsr U refdomainj= hE]hD]U refexplicithB]hC]hH]uh;j h5]r jP)r }r (h:j h@}r (hB]hC]hD]hE]hH]uh;j h5]r hTXcomplete_channelsr r }r (h:Uh;j ubah>jXubah>hubhTX -- r r }r (h:Uh;j ubhTXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r r }r (h:Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;j ubeh>hfubah>jlubeh>j)ubah>j*ubeh>j+ubaubhX)r }r (h:Uh;jq hh\h@}r (hE]hD]hB]hC]hH]Uentries]r (h_X*name (circuits.io.events.opened attribute)h Utr auhJNhKhh5]ubhy)r }r (h:Uh;jq hh|h@}r (h~hXpyhE]hD]hB]hC]hH]hX attributer hj uhJNhKhh5]r (h)r }r (h:X opened.nameh;j hhh@}r (hE]r h ahhXcircuits.io.eventsr r }r bhD]hB]hC]hH]r h ahX opened.namehjH huhJNhKhh5]r (h)r }r (h:Xnameh;j hhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r hTXnamer r }r (h:Uh;j ubaubh)r }r (h:X = 'opened'h;j hhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r hTX = 'opened'r r }r (h:Uh;j ubaubeubh)r }r (h:Uh;j hhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]ubeubeubeubhX)r }r (h:Uh;h8hh\h@}r (hE]hD]hB]hC]hH]Uentries]r (h_X$closed (class in circuits.io.events)hUtr auhJNhKhh5]ubhy)r }r (h:Uh;h8hh|h@}r (h~hXpyr hE]hD]hB]hC]hH]hXclassr hj uhJNhKhh5]r (h)r }r (h:Xclosed(*args, **kwargs)h;j hhh@}r (hE]r hahhXcircuits.io.eventsr r }r bhD]hB]hC]hH]r hahXclosedr hUhuhJNhKhh5]r (h)r }r (h:Xclass h;j hhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r hTXclass r r }r (h:Uh;j ubaubh)r }r (h:Xcircuits.io.events.h;j hhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r hTXcircuits.io.events.r r }r (h:Uh;j ubaubh)r }r (h:j h;j hhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXclosedrr}r(h:Uh;j ubaubh)r}r(h:Uh;j hhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]r(h)r }r (h:X*argsh@}r (hB]hC]hD]hE]hH]uh;jh5]r hTX*argsr r}r(h:Uh;j ubah>hubh)r}r(h:X**kwargsh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX**kwargsrr}r(h:Uh;jubah>hubeubeubh)r}r(h:Uh;j hhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]r(ha)r}r(h:X*Bases: :class:`circuits.core.events.Event`h;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]r(hTXBases: rr }r!(h:XBases: h;jubh)r"}r#(h:X#:class:`circuits.core.events.Event`r$h;jhhh@}r%(UreftypeXclassh܉hXcircuits.core.events.EventU refdomainXpyr&hE]hD]U refexplicithB]hC]hH]hhhj hhuhJNh5]r'h)r(}r)(h:j$h@}r*(hB]hC]r+(hj&Xpy-classr,ehD]hE]hH]uh;j"h5]r-hTXcircuits.core.events.Eventr.r/}r0(h:Uh;j(ubah>hubaubeubha)r1}r2(h:X closed Eventr3h;jhhfh@}r5(hB]hC]hD]hE]hH]uhJKhKhh5]r6hTX closed Eventr7r8}r9(h:j3h;j1ubaubha)r:}r;(h:XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r<h;jhhfh@}r=(hB]hC]hD]hE]hH]uhJKhKhh5]r>hTXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r?r@}rA(h:j<h;j:ubaubha)rB}rC(h:XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rDh;jhhfh@}rE(hB]hC]hD]hE]hH]uhJKhKhh5]rFhTXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rGrH}rI(h:jDh;jBubaubha)rJ}rK(h:X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h;jhhfh@}rL(hB]hC]hD]hE]hH]uhJK hKhh5]rM(hTXEvery event has a rNrO}rP(h:XEvery event has a h;jJubh)rQ}rR(h:X :attr:`name`rSh;jJhhh@}rT(UreftypeXattrh܉hXnameU refdomainXpyrUhE]hD]U refexplicithB]hC]hH]hhhj hhuhJNh5]rVh)rW}rX(h:jSh@}rY(hB]hC]rZ(hjUXpy-attrr[ehD]hE]hH]uh;jQh5]r\hTXnamer]r^}r_(h:Uh;jWubah>hubaubhTXA attribute that is used for matching the event with the handlers.r`ra}rb(h:XA attribute that is used for matching the event with the handlers.h;jJubeubj#)rc}rd(h:Uh;jhj&h@}re(hB]hC]hD]hE]hH]uhJNhKhh5]rfj))rg}rh(h:Uh@}ri(hB]hC]hD]hE]hH]uh;jch5]rj(j.)rk}rl(h:Uh@}rm(hB]hC]hD]hE]hH]uh;jgh5]rnhTX Variablesrorp}rq(h:Uh;jkubah>j6ubj7)rr}rs(h:Uh@}rt(hB]hC]hD]hE]hH]uh;jgh5]ruj<)rv}rw(h:Uh@}rx(hB]hC]hD]hE]hH]uh;jrh5]ry(jA)rz}r{(h:Uh@}r|(hB]hC]hD]hE]hH]uh;jvh5]r}ha)r~}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jzh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXchannelsrU refdomainj hE]hD]U refexplicithB]hC]hH]uh;j~h5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXchannelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;j~ubha)r}r(h:Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rh;j~hhfh@}r(hB]hC]hD]hE]hH]uhJKh5]rhTXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rr}r(h:jh;jubaubha)r}r(h:XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rh;j~hhfh@}r(hB]hC]hD]hE]hH]uhJKh5]rhTXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rr}r(h:jh;jubaubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jvh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXvaluerU refdomainj hE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXvaluerr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX this is a rr}r(h:X this is a h;jubh)r}r(h:X#:class:`circuits.core.values.Value`rh;jhhh@}r(UreftypeXclassh܉hXcircuits.core.values.ValueU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhj hhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-classrehD]hE]hH]uh;jh5]rhTXcircuits.core.values.Valuerr}r(h:Uh;jubah>hubaubhTXN object that holds the results returned by the handlers invoked for the event.rr}r(h:XN object that holds the results returned by the handlers invoked for the event.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jvh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXsuccessrU refdomainj hE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccessrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX%if this optional attribute is set to rr}r(h:X%if this optional attribute is set to h;jubh)r}r(h:X``True``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXTruerr}r(h:Uh;jubah>hubhTX, an associated event rr}r(h:X, an associated event h;jubh)r}r(h:X ``success``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccessrr}r(h:Uh;jubah>hubhTX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(h:X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jvh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXsuccess_channelsrU refdomainj hE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r (h:jh@}r (hB]hC]hD]hE]hH]uh;jh5]r hTXsuccess_channelsr r }r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h:Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jvh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXcompleter U refdomainj hE]hD]U refexplicithB]hC]hH]uh;jh5]r!jP)r"}r#(h:j h@}r$(hB]hC]hD]hE]hH]uh;jh5]r%hTXcompleter&r'}r((h:Uh;j"ubah>jXubah>hubhTX -- r)r*}r+(h:Uh;jubhTX%if this optional attribute is set to r,r-}r.(h:X%if this optional attribute is set to h;jubh)r/}r0(h:X``True``h@}r1(hB]hC]hD]hE]hH]uh;jh5]r2hTXTruer3r4}r5(h:Uh;j/ubah>hubhTX, an associated event r6r7}r8(h:X, an associated event h;jubh)r9}r:(h:X ``complete``h@}r;(hB]hC]hD]hE]hH]uh;jh5]r<hTXcompleter=r>}r?(h:Uh;j9ubah>hubhTX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.r@rA}rB(h:X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h;jubeh>hfubah>jlubjA)rC}rD(h:Uh@}rE(hB]hC]hD]hE]hH]uh;jvh5]rFha)rG}rH(h:Uh@}rI(hB]hC]hD]hE]hH]uh;jCh5]rJ(h)rK}rL(h:Uh@}rM(UreftypejMU reftargetXcomplete_channelsrNU refdomainj hE]hD]U refexplicithB]hC]hH]uh;jGh5]rOjP)rP}rQ(h:jNh@}rR(hB]hC]hD]hE]hH]uh;jKh5]rShTXcomplete_channelsrTrU}rV(h:Uh;jPubah>jXubah>hubhTX -- rWrX}rY(h:Uh;jGubhTXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rZr[}r\(h:Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jGubeh>hfubah>jlubeh>j)ubah>j*ubeh>j+ubaubhX)r]}r^(h:Uh;jhh\h@}r_(hE]hD]hB]hC]hH]Uentries]r`(h_X*name (circuits.io.events.closed attribute)hUtraauhJNhKhh5]ubhy)rb}rc(h:Uh;jhh|h@}rd(h~hXpyhE]hD]hB]hC]hH]hX attributerehjeuhJNhKhh5]rf(h)rg}rh(h:X closed.nameh;jbhhh@}ri(hE]rjhahhXcircuits.io.eventsrkrl}rmbhD]hB]hC]hH]rnhahX closed.namehj huhJNhKhh5]ro(h)rp}rq(h:Xnameh;jghhh@}rr(hB]hC]hD]hE]hH]uhJNhKhh5]rshTXnamertru}rv(h:Uh;jpubaubh)rw}rx(h:X = 'closed'h;jghhh@}ry(hB]hC]hD]hE]hH]uhJNhKhh5]rzhTX = 'closed'r{r|}r}(h:Uh;jwubaubeubh)r~}r(h:Uh;jbhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]ubeubeubeubhX)r}r(h:Uh;h8hh\h@}r(hE]hD]hB]hC]hH]Uentries]r(h_X#ready (class in circuits.io.events)h%UtrauhJNhKhh5]ubhy)r}r(h:Uh;h8hh|h@}r(h~hXpyrhE]hD]hB]hC]hH]hXclassrhjuhJNhKhh5]r(h)r}r(h:Xready(*args, **kwargs)h;jhhh@}r(hE]rh%ahhXcircuits.io.eventsrr}rbhD]hB]hC]hH]rh%ahXreadyrhUhuhJNhKhh5]r(h)r}r(h:Xclass h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXclass rr}r(h:Uh;jubaubh)r}r(h:Xcircuits.io.events.h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXcircuits.io.events.rr}r(h:Uh;jubaubh)r}r(h:jh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXreadyrr}r(h:Uh;jubaubh)r}r(h:Uh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]r(h)r}r(h:X*argsh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX*argsrr}r(h:Uh;jubah>hubh)r}r(h:X**kwargsh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX**kwargsrr}r(h:Uh;jubah>hubeubeubh)r}r(h:Uh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]r(ha)r}r(h:X*Bases: :class:`circuits.core.events.Event`h;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]r(hTXBases: rr}r(h:XBases: h;jubh)r}r(h:X#:class:`circuits.core.events.Event`rh;jhhh@}r(UreftypeXclassh܉hXcircuits.core.events.EventU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-classrehD]hE]hH]uh;jh5]rhTXcircuits.core.events.Eventrr}r(h:Uh;jubah>hubaubeubha)r}r(h:X ready Eventrh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTX ready Eventrr}r(h:jh;jubaubha)r}r(h:XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rr}r(h:jh;jubaubha)r}r(h:XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rr}r(h:jh;jubaubha)r}r(h:X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h;jhhfh@}r(hB]hC]hD]hE]hH]uhJK hKhh5]r(hTXEvery event has a rr}r(h:XEvery event has a h;jubh)r}r(h:X :attr:`name`rh;jhhh@}r(UreftypeXattrh܉hXnameU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-attrrehD]hE]hH]uh;jh5]rhTXnamerr}r(h:Uh;jubah>hubaubhTXA attribute that is used for matching the event with the handlers.rr}r(h:XA attribute that is used for matching the event with the handlers.h;jubeubj#)r }r (h:Uh;jhj&h@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r j))r }r(h:Uh@}r(hB]hC]hD]hE]hH]uh;j h5]r(j.)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;j h5]rhTX Variablesrr}r(h:Uh;jubah>j6ubj7)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;j h5]rj<)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(jA)r }r!(h:Uh@}r"(hB]hC]hD]hE]hH]uh;jh5]r#ha)r$}r%(h:Uh@}r&(hB]hC]hD]hE]hH]uh;j h5]r'(h)r(}r)(h:Uh@}r*(UreftypejMU reftargetXchannelsr+U refdomainjhE]hD]U refexplicithB]hC]hH]uh;j$h5]r,jP)r-}r.(h:j+h@}r/(hB]hC]hD]hE]hH]uh;j(h5]r0hTXchannelsr1r2}r3(h:Uh;j-ubah>jXubah>hubhTX -- r4r5}r6(h:Uh;j$ubha)r7}r8(h:Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.r9h;j$hhfh@}r:(hB]hC]hD]hE]hH]uhJKh5]r;hTXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.r<r=}r>(h:j9h;j7ubaubha)r?}r@(h:XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rAh;j$hhfh@}rB(hB]hC]hD]hE]hH]uhJKh5]rChTXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rDrE}rF(h:jAh;j?ubaubeh>hfubah>jlubjA)rG}rH(h:Uh@}rI(hB]hC]hD]hE]hH]uh;jh5]rJha)rK}rL(h:Uh@}rM(hB]hC]hD]hE]hH]uh;jGh5]rN(h)rO}rP(h:Uh@}rQ(UreftypejMU reftargetXvaluerRU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jKh5]rSjP)rT}rU(h:jRh@}rV(hB]hC]hD]hE]hH]uh;jOh5]rWhTXvaluerXrY}rZ(h:Uh;jTubah>jXubah>hubhTX -- r[r\}r](h:Uh;jKubhTX this is a r^r_}r`(h:X this is a h;jKubh)ra}rb(h:X#:class:`circuits.core.values.Value`rch;jKhhh@}rd(UreftypeXclassh܉hXcircuits.core.values.ValueU refdomainXpyrehE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]rfh)rg}rh(h:jch@}ri(hB]hC]rj(hjeXpy-classrkehD]hE]hH]uh;jah5]rlhTXcircuits.core.values.Valuermrn}ro(h:Uh;jgubah>hubaubhTXN object that holds the results returned by the handlers invoked for the event.rprq}rr(h:XN object that holds the results returned by the handlers invoked for the event.h;jKubeh>hfubah>jlubjA)rs}rt(h:Uh@}ru(hB]hC]hD]hE]hH]uh;jh5]rvha)rw}rx(h:Uh@}ry(hB]hC]hD]hE]hH]uh;jsh5]rz(h)r{}r|(h:Uh@}r}(UreftypejMU reftargetXsuccessr~U refdomainjhE]hD]U refexplicithB]hC]hH]uh;jwh5]rjP)r}r(h:j~h@}r(hB]hC]hD]hE]hH]uh;j{h5]rhTXsuccessrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jwubhTX%if this optional attribute is set to rr}r(h:X%if this optional attribute is set to h;jwubh)r}r(h:X``True``h@}r(hB]hC]hD]hE]hH]uh;jwh5]rhTXTruerr}r(h:Uh;jubah>hubhTX, an associated event rr}r(h:X, an associated event h;jwubh)r}r(h:X ``success``h@}r(hB]hC]hD]hE]hH]uh;jwh5]rhTXsuccessrr}r(h:Uh;jubah>hubhTX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(h:X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h;jwubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXsuccess_channelsrU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccess_channelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h:Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXcompleterU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcompleterr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX%if this optional attribute is set to rr}r(h:X%if this optional attribute is set to h;jubh)r}r(h:X``True``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXTruerr}r(h:Uh;jubah>hubhTX, an associated event rr}r(h:X, an associated event h;jubh)r}r(h:X ``complete``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcompleterr}r(h:Uh;jubah>hubhTX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rr}r(h:X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXcomplete_channelsrU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcomplete_channelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h:Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jubeh>hfubah>jlubeh>j)ubah>j*ubeh>j+ubaubhX)r}r(h:Uh;jhh\h@}r(hE]hD]hB]hC]hH]Uentries]r(h_X)name (circuits.io.events.ready attribute)hUtrauhJNhKhh5]ubhy)r}r (h:Uh;jhh|h@}r (h~hXpyhE]hD]hB]hC]hH]hX attributer hj uhJNhKhh5]r (h)r }r(h:X ready.nameh;jhhh@}r(hE]rhahhXcircuits.io.eventsrr}rbhD]hB]hC]hH]rhahX ready.namehjhuhJNhKhh5]r(h)r}r(h:Xnameh;j hhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXnamerr}r(h:Uh;jubaubh)r}r(h:X = 'ready'h;j hhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]r hTX = 'ready'r!r"}r#(h:Uh;jubaubeubh)r$}r%(h:Uh;jhhh@}r&(hB]hC]hD]hE]hH]uhJNhKhh5]ubeubeubeubhX)r'}r((h:Uh;h8hh\h@}r)(hE]hD]hB]hC]hH]Uentries]r*(h_X%started (class in circuits.io.events)h Utr+auhJNhKhh5]ubhy)r,}r-(h:Uh;h8hh|h@}r.(h~hXpyr/hE]hD]hB]hC]hH]hXclassr0hj0uhJNhKhh5]r1(h)r2}r3(h:Xstarted(*args, **kwargs)h;j,hhh@}r4(hE]r5h ahhXcircuits.io.eventsr6r7}r8bhD]hB]hC]hH]r9h ahXstartedr:hUhuhJNhKhh5]r;(h)r<}r=(h:Xclass h;j2hhh@}r>(hB]hC]hD]hE]hH]uhJNhKhh5]r?hTXclass r@rA}rB(h:Uh;j<ubaubh)rC}rD(h:Xcircuits.io.events.h;j2hhh@}rE(hB]hC]hD]hE]hH]uhJNhKhh5]rFhTXcircuits.io.events.rGrH}rI(h:Uh;jCubaubh)rJ}rK(h:j:h;j2hhh@}rL(hB]hC]hD]hE]hH]uhJNhKhh5]rMhTXstartedrNrO}rP(h:Uh;jJubaubh)rQ}rR(h:Uh;j2hhh@}rS(hB]hC]hD]hE]hH]uhJNhKhh5]rT(h)rU}rV(h:X*argsh@}rW(hB]hC]hD]hE]hH]uh;jQh5]rXhTX*argsrYrZ}r[(h:Uh;jUubah>hubh)r\}r](h:X**kwargsh@}r^(hB]hC]hD]hE]hH]uh;jQh5]r_hTX**kwargsr`ra}rb(h:Uh;j\ubah>hubeubeubh)rc}rd(h:Uh;j,hhh@}re(hB]hC]hD]hE]hH]uhJNhKhh5]rf(ha)rg}rh(h:X*Bases: :class:`circuits.core.events.Event`h;jchhfh@}ri(hB]hC]hD]hE]hH]uhJKhKhh5]rj(hTXBases: rkrl}rm(h:XBases: h;jgubh)rn}ro(h:X#:class:`circuits.core.events.Event`rph;jghhh@}rq(UreftypeXclassh܉hXcircuits.core.events.EventU refdomainXpyrrhE]hD]U refexplicithB]hC]hH]hhhj:hhuhJNh5]rsh)rt}ru(h:jph@}rv(hB]hC]rw(hjrXpy-classrxehD]hE]hH]uh;jnh5]ryhTXcircuits.core.events.Eventrzr{}r|(h:Uh;jtubah>hubaubeubha)r}}r~(h:X started Eventrh;jchhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTX started Eventrr}r(h:jh;j}ubaubha)r}r(h:XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rh;jchhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rr}r(h:jh;jubaubha)r}r(h:XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rh;jchhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rr}r(h:jh;jubaubha)r}r(h:X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h;jchhfh@}r(hB]hC]hD]hE]hH]uhJK hKhh5]r(hTXEvery event has a rr}r(h:XEvery event has a h;jubh)r}r(h:X :attr:`name`rh;jhhh@}r(UreftypeXattrh܉hXnameU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhj:hhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-attrrehD]hE]hH]uh;jh5]rhTXnamerr}r(h:Uh;jubah>hubaubhTXA attribute that is used for matching the event with the handlers.rr}r(h:XA attribute that is used for matching the event with the handlers.h;jubeubj#)r}r(h:Uh;jchj&h@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rj))r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(j.)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX Variablesrr}r(h:Uh;jubah>j6ubj7)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rj<)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(jA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXchannelsrU refdomainj/hE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXchannelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubha)r}r(h:Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKh5]rhTXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rr}r(h:jh;jubaubha)r}r(h:XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKh5]rhTXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rr}r(h:jh;jubaubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXvaluerU refdomainj/hE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXvaluerr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX this is a rr}r(h:X this is a h;jubh)r}r(h:X#:class:`circuits.core.values.Value`r h;jhhh@}r (UreftypeXclassh܉hXcircuits.core.values.ValueU refdomainXpyr hE]hD]U refexplicithB]hC]hH]hhhj:hhuhJNh5]r h)r }r(h:j h@}r(hB]hC]r(hj Xpy-classrehD]hE]hH]uh;jh5]rhTXcircuits.core.values.Valuerr}r(h:Uh;j ubah>hubaubhTXN object that holds the results returned by the handlers invoked for the event.rr}r(h:XN object that holds the results returned by the handlers invoked for the event.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r (h)r!}r"(h:Uh@}r#(UreftypejMU reftargetXsuccessr$U refdomainj/hE]hD]U refexplicithB]hC]hH]uh;jh5]r%jP)r&}r'(h:j$h@}r((hB]hC]hD]hE]hH]uh;j!h5]r)hTXsuccessr*r+}r,(h:Uh;j&ubah>jXubah>hubhTX -- r-r.}r/(h:Uh;jubhTX%if this optional attribute is set to r0r1}r2(h:X%if this optional attribute is set to h;jubh)r3}r4(h:X``True``h@}r5(hB]hC]hD]hE]hH]uh;jh5]r6hTXTruer7r8}r9(h:Uh;j3ubah>hubhTX, an associated event r:r;}r<(h:X, an associated event h;jubh)r=}r>(h:X ``success``h@}r?(hB]hC]hD]hE]hH]uh;jh5]r@hTXsuccessrArB}rC(h:Uh;j=ubah>hubhTX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rDrE}rF(h:X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h;jubeh>hfubah>jlubjA)rG}rH(h:Uh@}rI(hB]hC]hD]hE]hH]uh;jh5]rJha)rK}rL(h:Uh@}rM(hB]hC]hD]hE]hH]uh;jGh5]rN(h)rO}rP(h:Uh@}rQ(UreftypejMU reftargetXsuccess_channelsrRU refdomainj/hE]hD]U refexplicithB]hC]hH]uh;jKh5]rSjP)rT}rU(h:jRh@}rV(hB]hC]hD]hE]hH]uh;jOh5]rWhTXsuccess_channelsrXrY}rZ(h:Uh;jTubah>jXubah>hubhTX -- r[r\}r](h:Uh;jKubhTXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r^r_}r`(h:Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jKubeh>hfubah>jlubjA)ra}rb(h:Uh@}rc(hB]hC]hD]hE]hH]uh;jh5]rdha)re}rf(h:Uh@}rg(hB]hC]hD]hE]hH]uh;jah5]rh(h)ri}rj(h:Uh@}rk(UreftypejMU reftargetXcompleterlU refdomainj/hE]hD]U refexplicithB]hC]hH]uh;jeh5]rmjP)rn}ro(h:jlh@}rp(hB]hC]hD]hE]hH]uh;jih5]rqhTXcompleterrrs}rt(h:Uh;jnubah>jXubah>hubhTX -- rurv}rw(h:Uh;jeubhTX%if this optional attribute is set to rxry}rz(h:X%if this optional attribute is set to h;jeubh)r{}r|(h:X``True``h@}r}(hB]hC]hD]hE]hH]uh;jeh5]r~hTXTruerr}r(h:Uh;j{ubah>hubhTX, an associated event rr}r(h:X, an associated event h;jeubh)r}r(h:X ``complete``h@}r(hB]hC]hD]hE]hH]uh;jeh5]rhTXcompleterr}r(h:Uh;jubah>hubhTX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rr}r(h:X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h;jeubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXcomplete_channelsrU refdomainj/hE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcomplete_channelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h:Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jubeh>hfubah>jlubeh>j)ubah>j*ubeh>j+ubaubhX)r}r(h:Uh;jchh\h@}r(hE]hD]hB]hC]hH]Uentries]r(h_X+name (circuits.io.events.started attribute)h UtrauhJNhKhh5]ubhy)r}r(h:Uh;jchh|h@}r(h~hXpyhE]hD]hB]hC]hH]hX attributerhjuhJNhKhh5]r(h)r}r(h:X started.nameh;jhhh@}r(hE]rh ahhXcircuits.io.eventsrr}rbhD]hB]hC]hH]rh ahX started.namehj:huhJNhKhh5]r(h)r}r(h:Xnameh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXnamerr}r(h:Uh;jubaubh)r}r(h:X = 'started'h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTX = 'started'rr}r(h:Uh;jubaubeubh)r}r(h:Uh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]ubeubeubeubhX)r}r(h:Uh;h8hh\h@}r(hE]hD]hB]hC]hH]Uentries]r(h_X%stopped (class in circuits.io.events)h)UtrauhJNhKhh5]ubhy)r}r(h:Uh;h8hh|h@}r(h~hXpyrhE]hD]hB]hC]hH]hXclassrhjuhJNhKhh5]r(h)r}r(h:Xstopped(*args, **kwargs)h;jhhh@}r(hE]rh)ahhXcircuits.io.eventsrr}rbhD]hB]hC]hH]rh)ahXstoppedrhUhuhJNhKhh5]r(h)r}r(h:Xclass h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXclass rr}r(h:Uh;jubaubh)r}r(h:Xcircuits.io.events.h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXcircuits.io.events.rr}r(h:Uh;jubaubh)r}r(h:jh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXstoppedrr}r(h:Uh;jubaubh)r}r(h:Uh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]r(h)r}r(h:X*argsh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX*argsrr}r(h:Uh;jubah>hubh)r}r(h:X**kwargsh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX**kwargsrr}r(h:Uh;jubah>hubeubeubh)r }r (h:Uh;jhhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r (ha)r }r(h:X*Bases: :class:`circuits.core.events.Event`h;j hhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]r(hTXBases: rr}r(h:XBases: h;j ubh)r}r(h:X#:class:`circuits.core.events.Event`rh;j hhh@}r(UreftypeXclassh܉hXcircuits.core.events.EventU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-classrehD]hE]hH]uh;jh5]rhTXcircuits.core.events.Eventr r!}r"(h:Uh;jubah>hubaubeubha)r#}r$(h:X stopped Eventr%h;j hhfh@}r'(hB]hC]hD]hE]hH]uhJKhKhh5]r(hTX stopped Eventr)r*}r+(h:j%h;j#ubaubha)r,}r-(h:XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r.h;j hhfh@}r/(hB]hC]hD]hE]hH]uhJKhKhh5]r0hTXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r1r2}r3(h:j.h;j,ubaubha)r4}r5(h:XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.r6h;j hhfh@}r7(hB]hC]hD]hE]hH]uhJKhKhh5]r8hTXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.r9r:}r;(h:j6h;j4ubaubha)r<}r=(h:X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h;j hhfh@}r>(hB]hC]hD]hE]hH]uhJK hKhh5]r?(hTXEvery event has a r@rA}rB(h:XEvery event has a h;j<ubh)rC}rD(h:X :attr:`name`rEh;j<hhh@}rF(UreftypeXattrh܉hXnameU refdomainXpyrGhE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]rHh)rI}rJ(h:jEh@}rK(hB]hC]rL(hjGXpy-attrrMehD]hE]hH]uh;jCh5]rNhTXnamerOrP}rQ(h:Uh;jIubah>hubaubhTXA attribute that is used for matching the event with the handlers.rRrS}rT(h:XA attribute that is used for matching the event with the handlers.h;j<ubeubj#)rU}rV(h:Uh;j hj&h@}rW(hB]hC]hD]hE]hH]uhJNhKhh5]rXj))rY}rZ(h:Uh@}r[(hB]hC]hD]hE]hH]uh;jUh5]r\(j.)r]}r^(h:Uh@}r_(hB]hC]hD]hE]hH]uh;jYh5]r`hTX Variablesrarb}rc(h:Uh;j]ubah>j6ubj7)rd}re(h:Uh@}rf(hB]hC]hD]hE]hH]uh;jYh5]rgj<)rh}ri(h:Uh@}rj(hB]hC]hD]hE]hH]uh;jdh5]rk(jA)rl}rm(h:Uh@}rn(hB]hC]hD]hE]hH]uh;jhh5]roha)rp}rq(h:Uh@}rr(hB]hC]hD]hE]hH]uh;jlh5]rs(h)rt}ru(h:Uh@}rv(UreftypejMU reftargetXchannelsrwU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jph5]rxjP)ry}rz(h:jwh@}r{(hB]hC]hD]hE]hH]uh;jth5]r|hTXchannelsr}r~}r(h:Uh;jyubah>jXubah>hubhTX -- rr}r(h:Uh;jpubha)r}r(h:Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rh;jphhfh@}r(hB]hC]hD]hE]hH]uhJKh5]rhTXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rr}r(h:jh;jubaubha)r}r(h:XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rh;jphhfh@}r(hB]hC]hD]hE]hH]uhJKh5]rhTXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rr}r(h:jh;jubaubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jhh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXvaluerU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXvaluerr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX this is a rr}r(h:X this is a h;jubh)r}r(h:X#:class:`circuits.core.values.Value`rh;jhhh@}r(UreftypeXclassh܉hXcircuits.core.values.ValueU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-classrehD]hE]hH]uh;jh5]rhTXcircuits.core.values.Valuerr}r(h:Uh;jubah>hubaubhTXN object that holds the results returned by the handlers invoked for the event.rr}r(h:XN object that holds the results returned by the handlers invoked for the event.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jhh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXsuccessrU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccessrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX%if this optional attribute is set to rr}r(h:X%if this optional attribute is set to h;jubh)r}r(h:X``True``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXTruerr}r(h:Uh;jubah>hubhTX, an associated event rr}r(h:X, an associated event h;jubh)r}r(h:X ``success``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccessrr}r(h:Uh;jubah>hubhTX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(h:X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jhh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXsuccess_channelsrU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccess_channelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h:Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r (hB]hC]hD]hE]hH]uh;jhh5]r ha)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXcompleterU refdomainjhE]hD]U refexplicithB]hC]hH]uh;j h5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcompleterr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;j ubhTX%if this optional attribute is set to rr}r (h:X%if this optional attribute is set to h;j ubh)r!}r"(h:X``True``h@}r#(hB]hC]hD]hE]hH]uh;j h5]r$hTXTruer%r&}r'(h:Uh;j!ubah>hubhTX, an associated event r(r)}r*(h:X, an associated event h;j ubh)r+}r,(h:X ``complete``h@}r-(hB]hC]hD]hE]hH]uh;j h5]r.hTXcompleter/r0}r1(h:Uh;j+ubah>hubhTX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.r2r3}r4(h:X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h;j ubeh>hfubah>jlubjA)r5}r6(h:Uh@}r7(hB]hC]hD]hE]hH]uh;jhh5]r8ha)r9}r:(h:Uh@}r;(hB]hC]hD]hE]hH]uh;j5h5]r<(h)r=}r>(h:Uh@}r?(UreftypejMU reftargetXcomplete_channelsr@U refdomainjhE]hD]U refexplicithB]hC]hH]uh;j9h5]rAjP)rB}rC(h:j@h@}rD(hB]hC]hD]hE]hH]uh;j=h5]rEhTXcomplete_channelsrFrG}rH(h:Uh;jBubah>jXubah>hubhTX -- rIrJ}rK(h:Uh;j9ubhTXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rLrM}rN(h:Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;j9ubeh>hfubah>jlubeh>j)ubah>j*ubeh>j+ubaubhX)rO}rP(h:Uh;j hh\h@}rQ(hE]hD]hB]hC]hH]Uentries]rR(h_X+name (circuits.io.events.stopped attribute)h(UtrSauhJNhKhh5]ubhy)rT}rU(h:Uh;j hh|h@}rV(h~hXpyhE]hD]hB]hC]hH]hX attributerWhjWuhJNhKhh5]rX(h)rY}rZ(h:X stopped.nameh;jThhh@}r[(hE]r\h(ahhXcircuits.io.eventsr]r^}r_bhD]hB]hC]hH]r`h(ahX stopped.namehjhuhJNhKhh5]ra(h)rb}rc(h:Xnameh;jYhhh@}rd(hB]hC]hD]hE]hH]uhJNhKhh5]rehTXnamerfrg}rh(h:Uh;jbubaubh)ri}rj(h:X = 'stopped'h;jYhhh@}rk(hB]hC]hD]hE]hH]uhJNhKhh5]rlhTX = 'stopped'rmrn}ro(h:Uh;jiubaubeubh)rp}rq(h:Uh;jThhh@}rr(hB]hC]hD]hE]hH]uhJNhKhh5]ubeubeubeubhX)rs}rt(h:Uh;h8hh\h@}ru(hE]hD]hB]hC]hH]Uentries]rv(h_X#moved (class in circuits.io.events)hUtrwauhJNhKhh5]ubhy)rx}ry(h:Uh;h8hh|h@}rz(h~hXpyr{hE]hD]hB]hC]hH]hXclassr|hj|uhJNhKhh5]r}(h)r~}r(h:Xmoved(*args, **kwargs)h;jxhhh@}r(hE]rhahhXcircuits.io.eventsrr}rbhD]hB]hC]hH]rhahXmovedrhUhuhJNhKhh5]r(h)r}r(h:Xclass h;j~hhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXclass rr}r(h:Uh;jubaubh)r}r(h:Xcircuits.io.events.h;j~hhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXcircuits.io.events.rr}r(h:Uh;jubaubh)r}r(h:jh;j~hhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXmovedrr}r(h:Uh;jubaubh)r}r(h:Uh;j~hhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]r(h)r}r(h:X*argsh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX*argsrr}r(h:Uh;jubah>hubh)r}r(h:X**kwargsh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX**kwargsrr}r(h:Uh;jubah>hubeubeubh)r}r(h:Uh;jxhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]r(ha)r}r(h:X*Bases: :class:`circuits.core.events.Event`h;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]r(hTXBases: rr}r(h:XBases: h;jubh)r}r(h:X#:class:`circuits.core.events.Event`rh;jhhh@}r(UreftypeXclassh܉hXcircuits.core.events.EventU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-classrehD]hE]hH]uh;jh5]rhTXcircuits.core.events.Eventrr}r(h:Uh;jubah>hubaubeubha)r}r(h:X moved Eventrh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTX moved Eventrr}r(h:jh;jubaubha)r}r(h:XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rr}r(h:jh;jubaubha)r}r(h:XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rr}r(h:jh;jubaubha)r}r(h:X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h;jhhfh@}r(hB]hC]hD]hE]hH]uhJK hKhh5]r(hTXEvery event has a rr}r(h:XEvery event has a h;jubh)r}r(h:X :attr:`name`rh;jhhh@}r(UreftypeXattrh܉hXnameU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-attrrehD]hE]hH]uh;jh5]rhTXnamerr}r(h:Uh;jubah>hubaubhTXA attribute that is used for matching the event with the handlers.rr}r(h:XA attribute that is used for matching the event with the handlers.h;jubeubj#)r}r(h:Uh;jhj&h@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rj))r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(j.)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX Variablesrr}r (h:Uh;jubah>j6ubj7)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;jh5]r j<)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;j h5]r(jA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXchannelsrU refdomainj{hE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r (h:jh@}r!(hB]hC]hD]hE]hH]uh;jh5]r"hTXchannelsr#r$}r%(h:Uh;jubah>jXubah>hubhTX -- r&r'}r((h:Uh;jubha)r)}r*(h:Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.r+h;jhhfh@}r,(hB]hC]hD]hE]hH]uhJKh5]r-hTXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.r.r/}r0(h:j+h;j)ubaubha)r1}r2(h:XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.r3h;jhhfh@}r4(hB]hC]hD]hE]hH]uhJKh5]r5hTXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.r6r7}r8(h:j3h;j1ubaubeh>hfubah>jlubjA)r9}r:(h:Uh@}r;(hB]hC]hD]hE]hH]uh;jh5]r<ha)r=}r>(h:Uh@}r?(hB]hC]hD]hE]hH]uh;j9h5]r@(h)rA}rB(h:Uh@}rC(UreftypejMU reftargetXvaluerDU refdomainj{hE]hD]U refexplicithB]hC]hH]uh;j=h5]rEjP)rF}rG(h:jDh@}rH(hB]hC]hD]hE]hH]uh;jAh5]rIhTXvaluerJrK}rL(h:Uh;jFubah>jXubah>hubhTX -- rMrN}rO(h:Uh;j=ubhTX this is a rPrQ}rR(h:X this is a h;j=ubh)rS}rT(h:X#:class:`circuits.core.values.Value`rUh;j=hhh@}rV(UreftypeXclassh܉hXcircuits.core.values.ValueU refdomainXpyrWhE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]rXh)rY}rZ(h:jUh@}r[(hB]hC]r\(hjWXpy-classr]ehD]hE]hH]uh;jSh5]r^hTXcircuits.core.values.Valuer_r`}ra(h:Uh;jYubah>hubaubhTXN object that holds the results returned by the handlers invoked for the event.rbrc}rd(h:XN object that holds the results returned by the handlers invoked for the event.h;j=ubeh>hfubah>jlubjA)re}rf(h:Uh@}rg(hB]hC]hD]hE]hH]uh;jh5]rhha)ri}rj(h:Uh@}rk(hB]hC]hD]hE]hH]uh;jeh5]rl(h)rm}rn(h:Uh@}ro(UreftypejMU reftargetXsuccessrpU refdomainj{hE]hD]U refexplicithB]hC]hH]uh;jih5]rqjP)rr}rs(h:jph@}rt(hB]hC]hD]hE]hH]uh;jmh5]ruhTXsuccessrvrw}rx(h:Uh;jrubah>jXubah>hubhTX -- ryrz}r{(h:Uh;jiubhTX%if this optional attribute is set to r|r}}r~(h:X%if this optional attribute is set to h;jiubh)r}r(h:X``True``h@}r(hB]hC]hD]hE]hH]uh;jih5]rhTXTruerr}r(h:Uh;jubah>hubhTX, an associated event rr}r(h:X, an associated event h;jiubh)r}r(h:X ``success``h@}r(hB]hC]hD]hE]hH]uh;jih5]rhTXsuccessrr}r(h:Uh;jubah>hubhTX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(h:X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h;jiubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXsuccess_channelsrU refdomainj{hE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccess_channelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h:Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXcompleterU refdomainj{hE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcompleterr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX%if this optional attribute is set to rr}r(h:X%if this optional attribute is set to h;jubh)r}r(h:X``True``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXTruerr}r(h:Uh;jubah>hubhTX, an associated event rr}r(h:X, an associated event h;jubh)r}r(h:X ``complete``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcompleterr}r(h:Uh;jubah>hubhTX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rr}r(h:X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXcomplete_channelsrU refdomainj{hE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcomplete_channelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h:Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jubeh>hfubah>jlubeh>j)ubah>j*ubeh>j+ubaubhX)r}r(h:Uh;jhh\h@}r(hE]hD]hB]hC]hH]Uentries]r(h_X)name (circuits.io.events.moved attribute)hUtrauhJNhKhh5]ubhy)r}r(h:Uh;jhh|h@}r(h~hXpyhE]hD]hB]hC]hH]hX attributerhjuhJNhKhh5]r(h)r}r(h:X moved.nameh;jhhh@}r(hE]rhahhXcircuits.io.eventsrr}rbhD]hB]hC]hH]rhahX moved.namehjhuhJNhKhh5]r(h)r}r (h:Xnameh;jhhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]r hTXnamer r }r(h:Uh;jubaubh)r}r(h:X = 'moved'h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTX = 'moved'rr}r(h:Uh;jubaubeubh)r}r(h:Uh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]ubeubeubeubhX)r}r(h:Uh;h8hh\h@}r(hE]hD]hB]hC]hH]Uentries]r(h_X%created (class in circuits.io.events)h*UtrauhJNhKhh5]ubhy)r}r(h:Uh;h8hh|h@}r (h~hXpyr!hE]hD]hB]hC]hH]hXclassr"hj"uhJNhKhh5]r#(h)r$}r%(h:Xcreated(*args, **kwargs)h;jhhh@}r&(hE]r'h*ahhXcircuits.io.eventsr(r)}r*bhD]hB]hC]hH]r+h*ahXcreatedr,hUhuhJNhKhh5]r-(h)r.}r/(h:Xclass h;j$hhh@}r0(hB]hC]hD]hE]hH]uhJNhKhh5]r1hTXclass r2r3}r4(h:Uh;j.ubaubh)r5}r6(h:Xcircuits.io.events.h;j$hhh@}r7(hB]hC]hD]hE]hH]uhJNhKhh5]r8hTXcircuits.io.events.r9r:}r;(h:Uh;j5ubaubh)r<}r=(h:j,h;j$hhh@}r>(hB]hC]hD]hE]hH]uhJNhKhh5]r?hTXcreatedr@rA}rB(h:Uh;j<ubaubh)rC}rD(h:Uh;j$hhh@}rE(hB]hC]hD]hE]hH]uhJNhKhh5]rF(h)rG}rH(h:X*argsh@}rI(hB]hC]hD]hE]hH]uh;jCh5]rJhTX*argsrKrL}rM(h:Uh;jGubah>hubh)rN}rO(h:X**kwargsh@}rP(hB]hC]hD]hE]hH]uh;jCh5]rQhTX**kwargsrRrS}rT(h:Uh;jNubah>hubeubeubh)rU}rV(h:Uh;jhhh@}rW(hB]hC]hD]hE]hH]uhJNhKhh5]rX(ha)rY}rZ(h:X*Bases: :class:`circuits.core.events.Event`h;jUhhfh@}r[(hB]hC]hD]hE]hH]uhJKhKhh5]r\(hTXBases: r]r^}r_(h:XBases: h;jYubh)r`}ra(h:X#:class:`circuits.core.events.Event`rbh;jYhhh@}rc(UreftypeXclassh܉hXcircuits.core.events.EventU refdomainXpyrdhE]hD]U refexplicithB]hC]hH]hhhj,hhuhJNh5]reh)rf}rg(h:jbh@}rh(hB]hC]ri(hjdXpy-classrjehD]hE]hH]uh;j`h5]rkhTXcircuits.core.events.Eventrlrm}rn(h:Uh;jfubah>hubaubeubha)ro}rp(h:X created Eventrqh;jUhhfh@}rs(hB]hC]hD]hE]hH]uhJKhKhh5]rthTX created Eventrurv}rw(h:jqh;joubaubha)rx}ry(h:XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rzh;jUhhfh@}r{(hB]hC]hD]hE]hH]uhJKhKhh5]r|hTXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r}r~}r(h:jzh;jxubaubha)r}r(h:XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rh;jUhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rr}r(h:jh;jubaubha)r}r(h:X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h;jUhhfh@}r(hB]hC]hD]hE]hH]uhJK hKhh5]r(hTXEvery event has a rr}r(h:XEvery event has a h;jubh)r}r(h:X :attr:`name`rh;jhhh@}r(UreftypeXattrh܉hXnameU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhj,hhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-attrrehD]hE]hH]uh;jh5]rhTXnamerr}r(h:Uh;jubah>hubaubhTXA attribute that is used for matching the event with the handlers.rr}r(h:XA attribute that is used for matching the event with the handlers.h;jubeubj#)r}r(h:Uh;jUhj&h@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rj))r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(j.)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX Variablesrr}r(h:Uh;jubah>j6ubj7)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rj<)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(jA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXchannelsrU refdomainj!hE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXchannelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubha)r}r(h:Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKh5]rhTXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rr}r(h:jh;jubaubha)r}r(h:XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKh5]rhTXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rr}r(h:jh;jubaubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXvaluerU refdomainj!hE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXvaluerr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX this is a rr}r(h:X this is a h;jubh)r}r(h:X#:class:`circuits.core.values.Value`rh;jhhh@}r(UreftypeXclassh܉hXcircuits.core.values.ValueU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhj,hhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-classrehD]hE]hH]uh;jh5]rhTXcircuits.core.values.Valuerr}r(h:Uh;jubah>hubaubhTXN object that holds the results returned by the handlers invoked for the event.rr }r (h:XN object that holds the results returned by the handlers invoked for the event.h;jubeh>hfubah>jlubjA)r }r (h:Uh@}r (hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;j h5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXsuccessrU refdomainj!hE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccessrr}r(h:Uh;jubah>jXubah>hubhTX -- rr }r!(h:Uh;jubhTX%if this optional attribute is set to r"r#}r$(h:X%if this optional attribute is set to h;jubh)r%}r&(h:X``True``h@}r'(hB]hC]hD]hE]hH]uh;jh5]r(hTXTruer)r*}r+(h:Uh;j%ubah>hubhTX, an associated event r,r-}r.(h:X, an associated event h;jubh)r/}r0(h:X ``success``h@}r1(hB]hC]hD]hE]hH]uh;jh5]r2hTXsuccessr3r4}r5(h:Uh;j/ubah>hubhTX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.r6r7}r8(h:X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h;jubeh>hfubah>jlubjA)r9}r:(h:Uh@}r;(hB]hC]hD]hE]hH]uh;jh5]r<ha)r=}r>(h:Uh@}r?(hB]hC]hD]hE]hH]uh;j9h5]r@(h)rA}rB(h:Uh@}rC(UreftypejMU reftargetXsuccess_channelsrDU refdomainj!hE]hD]U refexplicithB]hC]hH]uh;j=h5]rEjP)rF}rG(h:jDh@}rH(hB]hC]hD]hE]hH]uh;jAh5]rIhTXsuccess_channelsrJrK}rL(h:Uh;jFubah>jXubah>hubhTX -- rMrN}rO(h:Uh;j=ubhTXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rPrQ}rR(h:Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;j=ubeh>hfubah>jlubjA)rS}rT(h:Uh@}rU(hB]hC]hD]hE]hH]uh;jh5]rVha)rW}rX(h:Uh@}rY(hB]hC]hD]hE]hH]uh;jSh5]rZ(h)r[}r\(h:Uh@}r](UreftypejMU reftargetXcompleter^U refdomainj!hE]hD]U refexplicithB]hC]hH]uh;jWh5]r_jP)r`}ra(h:j^h@}rb(hB]hC]hD]hE]hH]uh;j[h5]rchTXcompleterdre}rf(h:Uh;j`ubah>jXubah>hubhTX -- rgrh}ri(h:Uh;jWubhTX%if this optional attribute is set to rjrk}rl(h:X%if this optional attribute is set to h;jWubh)rm}rn(h:X``True``h@}ro(hB]hC]hD]hE]hH]uh;jWh5]rphTXTruerqrr}rs(h:Uh;jmubah>hubhTX, an associated event rtru}rv(h:X, an associated event h;jWubh)rw}rx(h:X ``complete``h@}ry(hB]hC]hD]hE]hH]uh;jWh5]rzhTXcompleter{r|}r}(h:Uh;jwubah>hubhTX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.r~r}r(h:X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h;jWubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXcomplete_channelsrU refdomainj!hE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcomplete_channelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h:Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jubeh>hfubah>jlubeh>j)ubah>j*ubeh>j+ubaubhX)r}r(h:Uh;jUhh\h@}r(hE]hD]hB]hC]hH]Uentries]r(h_X+name (circuits.io.events.created attribute)hUtrauhJNhKhh5]ubhy)r}r(h:Uh;jUhh|h@}r(h~hXpyhE]hD]hB]hC]hH]hX attributerhjuhJNhKhh5]r(h)r}r(h:X created.nameh;jhhh@}r(hE]rhahhXcircuits.io.eventsrr}rbhD]hB]hC]hH]rhahX created.namehj,huhJNhKhh5]r(h)r}r(h:Xnameh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXnamerr}r(h:Uh;jubaubh)r}r(h:X = 'created'h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTX = 'created'rr}r(h:Uh;jubaubeubh)r}r(h:Uh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]ubeubeubeubhX)r}r(h:Uh;h8hh\h@}r(hE]hD]hB]hC]hH]Uentries]r(h_X%deleted (class in circuits.io.events)hUtrauhJNhKhh5]ubhy)r}r(h:Uh;h8hh|h@}r(h~hXpyrhE]hD]hB]hC]hH]hXclassrhjuhJNhKhh5]r(h)r}r(h:Xdeleted(*args, **kwargs)h;jhhh@}r(hE]rhahhXcircuits.io.eventsrr}rbhD]hB]hC]hH]rhahXdeletedrhUhuhJNhKhh5]r(h)r}r(h:Xclass h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXclass rr}r(h:Uh;jubaubh)r}r(h:Xcircuits.io.events.h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXcircuits.io.events.rr}r(h:Uh;jubaubh)r}r(h:jh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXdeletedrr}r(h:Uh;jubaubh)r}r(h:Uh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]r(h)r}r(h:X*argsh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX*argsrr}r(h:Uh;jubah>hubh)r}r(h:X**kwargsh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX**kwargsrr}r(h:Uh;jubah>hubeubeubh)r}r(h:Uh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]r(ha)r}r(h:X*Bases: :class:`circuits.core.events.Event`h;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]r(hTXBases: rr}r(h:XBases: h;jubh)r}r(h:X#:class:`circuits.core.events.Event`rh;jhhh@}r (UreftypeXclassh܉hXcircuits.core.events.EventU refdomainXpyr hE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]r h)r }r (h:jh@}r(hB]hC]r(hj Xpy-classrehD]hE]hH]uh;jh5]rhTXcircuits.core.events.Eventrr}r(h:Uh;j ubah>hubaubeubha)r}r(h:X deleted Eventrh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTX deleted Eventrr}r(h:jh;jubaubha)r}r(h:XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r h;jhhfh@}r!(hB]hC]hD]hE]hH]uhJKhKhh5]r"hTXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r#r$}r%(h:j h;jubaubha)r&}r'(h:XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.r(h;jhhfh@}r)(hB]hC]hD]hE]hH]uhJKhKhh5]r*hTXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.r+r,}r-(h:j(h;j&ubaubha)r.}r/(h:X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h;jhhfh@}r0(hB]hC]hD]hE]hH]uhJK hKhh5]r1(hTXEvery event has a r2r3}r4(h:XEvery event has a h;j.ubh)r5}r6(h:X :attr:`name`r7h;j.hhh@}r8(UreftypeXattrh܉hXnameU refdomainXpyr9hE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]r:h)r;}r<(h:j7h@}r=(hB]hC]r>(hj9Xpy-attrr?ehD]hE]hH]uh;j5h5]r@hTXnamerArB}rC(h:Uh;j;ubah>hubaubhTXA attribute that is used for matching the event with the handlers.rDrE}rF(h:XA attribute that is used for matching the event with the handlers.h;j.ubeubj#)rG}rH(h:Uh;jhj&h@}rI(hB]hC]hD]hE]hH]uhJNhKhh5]rJj))rK}rL(h:Uh@}rM(hB]hC]hD]hE]hH]uh;jGh5]rN(j.)rO}rP(h:Uh@}rQ(hB]hC]hD]hE]hH]uh;jKh5]rRhTX VariablesrSrT}rU(h:Uh;jOubah>j6ubj7)rV}rW(h:Uh@}rX(hB]hC]hD]hE]hH]uh;jKh5]rYj<)rZ}r[(h:Uh@}r\(hB]hC]hD]hE]hH]uh;jVh5]r](jA)r^}r_(h:Uh@}r`(hB]hC]hD]hE]hH]uh;jZh5]raha)rb}rc(h:Uh@}rd(hB]hC]hD]hE]hH]uh;j^h5]re(h)rf}rg(h:Uh@}rh(UreftypejMU reftargetXchannelsriU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jbh5]rjjP)rk}rl(h:jih@}rm(hB]hC]hD]hE]hH]uh;jfh5]rnhTXchannelsrorp}rq(h:Uh;jkubah>jXubah>hubhTX -- rrrs}rt(h:Uh;jbubha)ru}rv(h:Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rwh;jbhhfh@}rx(hB]hC]hD]hE]hH]uhJKh5]ryhTXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rzr{}r|(h:jwh;juubaubha)r}}r~(h:XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rh;jbhhfh@}r(hB]hC]hD]hE]hH]uhJKh5]rhTXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rr}r(h:jh;j}ubaubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jZh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXvaluerU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXvaluerr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX this is a rr}r(h:X this is a h;jubh)r}r(h:X#:class:`circuits.core.values.Value`rh;jhhh@}r(UreftypeXclassh܉hXcircuits.core.values.ValueU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-classrehD]hE]hH]uh;jh5]rhTXcircuits.core.values.Valuerr}r(h:Uh;jubah>hubaubhTXN object that holds the results returned by the handlers invoked for the event.rr}r(h:XN object that holds the results returned by the handlers invoked for the event.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jZh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXsuccessrU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccessrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX%if this optional attribute is set to rr}r(h:X%if this optional attribute is set to h;jubh)r}r(h:X``True``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXTruerr}r(h:Uh;jubah>hubhTX, an associated event rr}r(h:X, an associated event h;jubh)r}r(h:X ``success``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccessrr}r(h:Uh;jubah>hubhTX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(h:X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jZh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXsuccess_channelsrU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccess_channelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h:Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jZh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXcompleterU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]r hTXcompleter r }r (h:Uh;jubah>jXubah>hubhTX -- r r}r(h:Uh;jubhTX%if this optional attribute is set to rr}r(h:X%if this optional attribute is set to h;jubh)r}r(h:X``True``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXTruerr}r(h:Uh;jubah>hubhTX, an associated event rr}r(h:X, an associated event h;jubh)r}r(h:X ``complete``h@}r(hB]hC]hD]hE]hH]uh;jh5]r hTXcompleter!r"}r#(h:Uh;jubah>hubhTX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.r$r%}r&(h:X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h;jubeh>hfubah>jlubjA)r'}r((h:Uh@}r)(hB]hC]hD]hE]hH]uh;jZh5]r*ha)r+}r,(h:Uh@}r-(hB]hC]hD]hE]hH]uh;j'h5]r.(h)r/}r0(h:Uh@}r1(UreftypejMU reftargetXcomplete_channelsr2U refdomainjhE]hD]U refexplicithB]hC]hH]uh;j+h5]r3jP)r4}r5(h:j2h@}r6(hB]hC]hD]hE]hH]uh;j/h5]r7hTXcomplete_channelsr8r9}r:(h:Uh;j4ubah>jXubah>hubhTX -- r;r<}r=(h:Uh;j+ubhTXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r>r?}r@(h:Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;j+ubeh>hfubah>jlubeh>j)ubah>j*ubeh>j+ubaubhX)rA}rB(h:Uh;jhh\h@}rC(hE]hD]hB]hC]hH]Uentries]rD(h_X+name (circuits.io.events.deleted attribute)hUtrEauhJNhKhh5]ubhy)rF}rG(h:Uh;jhh|h@}rH(h~hXpyhE]hD]hB]hC]hH]hX attributerIhjIuhJNhKhh5]rJ(h)rK}rL(h:X deleted.nameh;jFhhh@}rM(hE]rNhahhXcircuits.io.eventsrOrP}rQbhD]hB]hC]hH]rRhahX deleted.namehjhuhJNhKhh5]rS(h)rT}rU(h:Xnameh;jKhhh@}rV(hB]hC]hD]hE]hH]uhJNhKhh5]rWhTXnamerXrY}rZ(h:Uh;jTubaubh)r[}r\(h:X = 'deleted'h;jKhhh@}r](hB]hC]hD]hE]hH]uhJNhKhh5]r^hTX = 'deleted'r_r`}ra(h:Uh;j[ubaubeubh)rb}rc(h:Uh;jFhhh@}rd(hB]hC]hD]hE]hH]uhJNhKhh5]ubeubeubeubhX)re}rf(h:Uh;h8hh\h@}rg(hE]hD]hB]hC]hH]Uentries]rh(h_X&accessed (class in circuits.io.events)hUtriauhJNhKhh5]ubhy)rj}rk(h:Uh;h8hh|h@}rl(h~hXpyrmhE]hD]hB]hC]hH]hXclassrnhjnuhJNhKhh5]ro(h)rp}rq(h:Xaccessed(*args, **kwargs)h;jjhhh@}rr(hE]rshahhXcircuits.io.eventsrtru}rvbhD]hB]hC]hH]rwhahXaccessedrxhUhuhJNhKhh5]ry(h)rz}r{(h:Xclass h;jphhh@}r|(hB]hC]hD]hE]hH]uhJNhKhh5]r}hTXclass r~r}r(h:Uh;jzubaubh)r}r(h:Xcircuits.io.events.h;jphhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXcircuits.io.events.rr}r(h:Uh;jubaubh)r}r(h:jxh;jphhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXaccessedrr}r(h:Uh;jubaubh)r}r(h:Uh;jphhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]r(h)r}r(h:X*argsh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX*argsrr}r(h:Uh;jubah>hubh)r}r(h:X**kwargsh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX**kwargsrr}r(h:Uh;jubah>hubeubeubh)r}r(h:Uh;jjhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]r(ha)r}r(h:X*Bases: :class:`circuits.core.events.Event`h;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]r(hTXBases: rr}r(h:XBases: h;jubh)r}r(h:X#:class:`circuits.core.events.Event`rh;jhhh@}r(UreftypeXclassh܉hXcircuits.core.events.EventU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjxhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-classrehD]hE]hH]uh;jh5]rhTXcircuits.core.events.Eventrr}r(h:Uh;jubah>hubaubeubha)r}r(h:Xaccessed Eventrh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTXaccessed Eventrr}r(h:jh;jubaubha)r}r(h:XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rr}r(h:jh;jubaubha)r}r(h:XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rr}r(h:jh;jubaubha)r}r(h:X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h;jhhfh@}r(hB]hC]hD]hE]hH]uhJK hKhh5]r(hTXEvery event has a rr}r(h:XEvery event has a h;jubh)r}r(h:X :attr:`name`rh;jhhh@}r(UreftypeXattrh܉hXnameU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjxhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-attrrehD]hE]hH]uh;jh5]rhTXnamerr}r(h:Uh;jubah>hubaubhTXA attribute that is used for matching the event with the handlers.rr}r(h:XA attribute that is used for matching the event with the handlers.h;jubeubj#)r}r(h:Uh;jhj&h@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rj))r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(j.)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX Variablesrr}r(h:Uh;jubah>j6ubj7)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rj<)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(jA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r (h:Uh@}r (hB]hC]hD]hE]hH]uh;jh5]r (h)r }r (h:Uh@}r(UreftypejMU reftargetXchannelsrU refdomainjmhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;j h5]rhTXchannelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubha)r}r(h:Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKh5]rhTXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.r r!}r"(h:jh;jubaubha)r#}r$(h:XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.r%h;jhhfh@}r&(hB]hC]hD]hE]hH]uhJKh5]r'hTXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.r(r)}r*(h:j%h;j#ubaubeh>hfubah>jlubjA)r+}r,(h:Uh@}r-(hB]hC]hD]hE]hH]uh;jh5]r.ha)r/}r0(h:Uh@}r1(hB]hC]hD]hE]hH]uh;j+h5]r2(h)r3}r4(h:Uh@}r5(UreftypejMU reftargetXvaluer6U refdomainjmhE]hD]U refexplicithB]hC]hH]uh;j/h5]r7jP)r8}r9(h:j6h@}r:(hB]hC]hD]hE]hH]uh;j3h5]r;hTXvaluer<r=}r>(h:Uh;j8ubah>jXubah>hubhTX -- r?r@}rA(h:Uh;j/ubhTX this is a rBrC}rD(h:X this is a h;j/ubh)rE}rF(h:X#:class:`circuits.core.values.Value`rGh;j/hhh@}rH(UreftypeXclassh܉hXcircuits.core.values.ValueU refdomainXpyrIhE]hD]U refexplicithB]hC]hH]hhhjxhhuhJNh5]rJh)rK}rL(h:jGh@}rM(hB]hC]rN(hjIXpy-classrOehD]hE]hH]uh;jEh5]rPhTXcircuits.core.values.ValuerQrR}rS(h:Uh;jKubah>hubaubhTXN object that holds the results returned by the handlers invoked for the event.rTrU}rV(h:XN object that holds the results returned by the handlers invoked for the event.h;j/ubeh>hfubah>jlubjA)rW}rX(h:Uh@}rY(hB]hC]hD]hE]hH]uh;jh5]rZha)r[}r\(h:Uh@}r](hB]hC]hD]hE]hH]uh;jWh5]r^(h)r_}r`(h:Uh@}ra(UreftypejMU reftargetXsuccessrbU refdomainjmhE]hD]U refexplicithB]hC]hH]uh;j[h5]rcjP)rd}re(h:jbh@}rf(hB]hC]hD]hE]hH]uh;j_h5]rghTXsuccessrhri}rj(h:Uh;jdubah>jXubah>hubhTX -- rkrl}rm(h:Uh;j[ubhTX%if this optional attribute is set to rnro}rp(h:X%if this optional attribute is set to h;j[ubh)rq}rr(h:X``True``h@}rs(hB]hC]hD]hE]hH]uh;j[h5]rthTXTruerurv}rw(h:Uh;jqubah>hubhTX, an associated event rxry}rz(h:X, an associated event h;j[ubh)r{}r|(h:X ``success``h@}r}(hB]hC]hD]hE]hH]uh;j[h5]r~hTXsuccessrr}r(h:Uh;j{ubah>hubhTX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(h:X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h;j[ubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXsuccess_channelsrU refdomainjmhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccess_channelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h:Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXcompleterU refdomainjmhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcompleterr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX%if this optional attribute is set to rr}r(h:X%if this optional attribute is set to h;jubh)r}r(h:X``True``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXTruerr}r(h:Uh;jubah>hubhTX, an associated event rr}r(h:X, an associated event h;jubh)r}r(h:X ``complete``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcompleterr}r(h:Uh;jubah>hubhTX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rr}r(h:X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXcomplete_channelsrU refdomainjmhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcomplete_channelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h:Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jubeh>hfubah>jlubeh>j)ubah>j*ubeh>j+ubaubhX)r}r(h:Uh;jhh\h@}r(hE]hD]hB]hC]hH]Uentries]r(h_X,name (circuits.io.events.accessed attribute)hUtrauhJNhKhh5]ubhy)r}r(h:Uh;jhh|h@}r(h~hXpyhE]hD]hB]hC]hH]hX attributerhjuhJNhKhh5]r(h)r}r(h:X accessed.nameh;jhhh@}r(hE]rhahhXcircuits.io.eventsrr}rbhD]hB]hC]hH]rhahX accessed.namehjxhuhJNhKhh5]r(h)r}r(h:Xnameh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXnamerr}r(h:Uh;jubaubh)r}r(h:X = 'accessed'h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTX = 'accessed'rr}r(h:Uh;jubaubeubh)r}r (h:Uh;jhhh@}r (hB]hC]hD]hE]hH]uhJNhKhh5]ubeubeubeubhX)r }r (h:Uh;h8hh\h@}r (hE]hD]hB]hC]hH]Uentries]r(h_X&modified (class in circuits.io.events)h&UtrauhJNhKhh5]ubhy)r}r(h:Uh;h8hh|h@}r(h~hXpyrhE]hD]hB]hC]hH]hXclassrhjuhJNhKhh5]r(h)r}r(h:Xmodified(*args, **kwargs)h;jhhh@}r(hE]rh&ahhXcircuits.io.eventsrr}rbhD]hB]hC]hH]rh&ahXmodifiedrhUhuhJNhKhh5]r(h)r }r!(h:Xclass h;jhhh@}r"(hB]hC]hD]hE]hH]uhJNhKhh5]r#hTXclass r$r%}r&(h:Uh;j ubaubh)r'}r((h:Xcircuits.io.events.h;jhhh@}r)(hB]hC]hD]hE]hH]uhJNhKhh5]r*hTXcircuits.io.events.r+r,}r-(h:Uh;j'ubaubh)r.}r/(h:jh;jhhh@}r0(hB]hC]hD]hE]hH]uhJNhKhh5]r1hTXmodifiedr2r3}r4(h:Uh;j.ubaubh)r5}r6(h:Uh;jhhh@}r7(hB]hC]hD]hE]hH]uhJNhKhh5]r8(h)r9}r:(h:X*argsh@}r;(hB]hC]hD]hE]hH]uh;j5h5]r<hTX*argsr=r>}r?(h:Uh;j9ubah>hubh)r@}rA(h:X**kwargsh@}rB(hB]hC]hD]hE]hH]uh;j5h5]rChTX**kwargsrDrE}rF(h:Uh;j@ubah>hubeubeubh)rG}rH(h:Uh;jhhh@}rI(hB]hC]hD]hE]hH]uhJNhKhh5]rJ(ha)rK}rL(h:X*Bases: :class:`circuits.core.events.Event`h;jGhhfh@}rM(hB]hC]hD]hE]hH]uhJKhKhh5]rN(hTXBases: rOrP}rQ(h:XBases: h;jKubh)rR}rS(h:X#:class:`circuits.core.events.Event`rTh;jKhhh@}rU(UreftypeXclassh܉hXcircuits.core.events.EventU refdomainXpyrVhE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]rWh)rX}rY(h:jTh@}rZ(hB]hC]r[(hjVXpy-classr\ehD]hE]hH]uh;jRh5]r]hTXcircuits.core.events.Eventr^r_}r`(h:Uh;jXubah>hubaubeubha)ra}rb(h:Xmodified Eventrch;jGhhfh@}re(hB]hC]hD]hE]hH]uhJKhKhh5]rfhTXmodified Eventrgrh}ri(h:jch;jaubaubha)rj}rk(h:XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rlh;jGhhfh@}rm(hB]hC]hD]hE]hH]uhJKhKhh5]rnhTXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rorp}rq(h:jlh;jjubaubha)rr}rs(h:XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rth;jGhhfh@}ru(hB]hC]hD]hE]hH]uhJKhKhh5]rvhTXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rwrx}ry(h:jth;jrubaubha)rz}r{(h:X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h;jGhhfh@}r|(hB]hC]hD]hE]hH]uhJK hKhh5]r}(hTXEvery event has a r~r}r(h:XEvery event has a h;jzubh)r}r(h:X :attr:`name`rh;jzhhh@}r(UreftypeXattrh܉hXnameU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-attrrehD]hE]hH]uh;jh5]rhTXnamerr}r(h:Uh;jubah>hubaubhTXA attribute that is used for matching the event with the handlers.rr}r(h:XA attribute that is used for matching the event with the handlers.h;jzubeubj#)r}r(h:Uh;jGhj&h@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rj))r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(j.)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX Variablesrr}r(h:Uh;jubah>j6ubj7)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rj<)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(jA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXchannelsrU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXchannelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubha)r}r(h:Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKh5]rhTXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rr}r(h:jh;jubaubha)r}r(h:XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKh5]rhTXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rr}r(h:jh;jubaubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXvaluerU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXvaluerr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX this is a rr}r(h:X this is a h;jubh)r}r(h:X#:class:`circuits.core.values.Value`rh;jhhh@}r(UreftypeXclassh܉hXcircuits.core.values.ValueU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-classrehD]hE]hH]uh;jh5]rhTXcircuits.core.values.Valuerr}r(h:Uh;jubah>hubaubhTXN object that holds the results returned by the handlers invoked for the event.rr}r(h:XN object that holds the results returned by the handlers invoked for the event.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXsuccessrU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]r jP)r }r (h:jh@}r (hB]hC]hD]hE]hH]uh;jh5]r hTXsuccessrr}r(h:Uh;j ubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX%if this optional attribute is set to rr}r(h:X%if this optional attribute is set to h;jubh)r}r(h:X``True``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXTruerr}r(h:Uh;jubah>hubhTX, an associated event rr}r (h:X, an associated event h;jubh)r!}r"(h:X ``success``h@}r#(hB]hC]hD]hE]hH]uh;jh5]r$hTXsuccessr%r&}r'(h:Uh;j!ubah>hubhTX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.r(r)}r*(h:X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h;jubeh>hfubah>jlubjA)r+}r,(h:Uh@}r-(hB]hC]hD]hE]hH]uh;jh5]r.ha)r/}r0(h:Uh@}r1(hB]hC]hD]hE]hH]uh;j+h5]r2(h)r3}r4(h:Uh@}r5(UreftypejMU reftargetXsuccess_channelsr6U refdomainjhE]hD]U refexplicithB]hC]hH]uh;j/h5]r7jP)r8}r9(h:j6h@}r:(hB]hC]hD]hE]hH]uh;j3h5]r;hTXsuccess_channelsr<r=}r>(h:Uh;j8ubah>jXubah>hubhTX -- r?r@}rA(h:Uh;j/ubhTXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rBrC}rD(h:Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;j/ubeh>hfubah>jlubjA)rE}rF(h:Uh@}rG(hB]hC]hD]hE]hH]uh;jh5]rHha)rI}rJ(h:Uh@}rK(hB]hC]hD]hE]hH]uh;jEh5]rL(h)rM}rN(h:Uh@}rO(UreftypejMU reftargetXcompleterPU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jIh5]rQjP)rR}rS(h:jPh@}rT(hB]hC]hD]hE]hH]uh;jMh5]rUhTXcompleterVrW}rX(h:Uh;jRubah>jXubah>hubhTX -- rYrZ}r[(h:Uh;jIubhTX%if this optional attribute is set to r\r]}r^(h:X%if this optional attribute is set to h;jIubh)r_}r`(h:X``True``h@}ra(hB]hC]hD]hE]hH]uh;jIh5]rbhTXTruercrd}re(h:Uh;j_ubah>hubhTX, an associated event rfrg}rh(h:X, an associated event h;jIubh)ri}rj(h:X ``complete``h@}rk(hB]hC]hD]hE]hH]uh;jIh5]rlhTXcompletermrn}ro(h:Uh;jiubah>hubhTX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rprq}rr(h:X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h;jIubeh>hfubah>jlubjA)rs}rt(h:Uh@}ru(hB]hC]hD]hE]hH]uh;jh5]rvha)rw}rx(h:Uh@}ry(hB]hC]hD]hE]hH]uh;jsh5]rz(h)r{}r|(h:Uh@}r}(UreftypejMU reftargetXcomplete_channelsr~U refdomainjhE]hD]U refexplicithB]hC]hH]uh;jwh5]rjP)r}r(h:j~h@}r(hB]hC]hD]hE]hH]uh;j{h5]rhTXcomplete_channelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jwubhTXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h:Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jwubeh>hfubah>jlubeh>j)ubah>j*ubeh>j+ubaubhX)r}r(h:Uh;jGhh\h@}r(hE]hD]hB]hC]hH]Uentries]r(h_X,name (circuits.io.events.modified attribute)h UtrauhJNhKhh5]ubhy)r}r(h:Uh;jGhh|h@}r(h~hXpyhE]hD]hB]hC]hH]hX attributerhjuhJNhKhh5]r(h)r}r(h:X modified.nameh;jhhh@}r(hE]rh ahhXcircuits.io.eventsrr}rbhD]hB]hC]hH]rh ahX modified.namehjhuhJNhKhh5]r(h)r}r(h:Xnameh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXnamerr}r(h:Uh;jubaubh)r}r(h:X = 'modified'h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTX = 'modified'rr}r(h:Uh;jubaubeubh)r}r(h:Uh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]ubeubeubeubhX)r}r(h:Uh;h8hh\h@}r(hE]hD]hB]hC]hH]Uentries]r(h_X'unmounted (class in circuits.io.events)hUtrauhJNhKhh5]ubhy)r}r(h:Uh;h8hh|h@}r(h~hXpyrhE]hD]hB]hC]hH]hXclassrhjuhJNhKhh5]r(h)r}r(h:Xunmounted(*args, **kwargs)h;jhhh@}r(hE]rhahhXcircuits.io.eventsrr}rbhD]hB]hC]hH]rhahX unmountedrhUhuhJNhKhh5]r(h)r}r(h:Xclass h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXclass rr}r(h:Uh;jubaubh)r}r(h:Xcircuits.io.events.h;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTXcircuits.io.events.rr}r(h:Uh;jubaubh)r}r(h:jh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]rhTX unmountedrr}r(h:Uh;jubaubh)r}r(h:Uh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]r(h)r}r(h:X*argsh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX*argsrr}r(h:Uh;jubah>hubh)r}r(h:X**kwargsh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTX**kwargsrr}r(h:Uh;jubah>hubeubeubh)r}r(h:Uh;jhhh@}r(hB]hC]hD]hE]hH]uhJNhKhh5]r(ha)r}r(h:X*Bases: :class:`circuits.core.events.Event`rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]r(hTXBases: rr}r(h:XBases: h;jubh)r}r(h:X#:class:`circuits.core.events.Event`rh;jhhh@}r(UreftypeXclassh܉hXcircuits.core.events.EventU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-classrehD]hE]hH]uh;jh5]rhTXcircuits.core.events.Eventrr}r(h:Uh;jubah>hubaubeubha)r}r (h:Xunmounted Eventr h;jhhfh@}r (hB]hC]hD]hE]hH]uhJKhKhh5]r hTXunmounted Eventrr}r(h:j h;jubaubha)r}r(h:XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rr}r(h:jh;jubaubha)r}r(h:XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rh;jhhfh@}r(hB]hC]hD]hE]hH]uhJKhKhh5]rhTXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rr}r (h:jh;jubaubha)r!}r"(h:X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h;jhhfh@}r#(hB]hC]hD]hE]hH]uhJK hKhh5]r$(hTXEvery event has a r%r&}r'(h:XEvery event has a h;j!ubh)r(}r)(h:X :attr:`name`r*h;j!hhh@}r+(UreftypeXattrh܉hXnameU refdomainXpyr,hE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]r-h)r.}r/(h:j*h@}r0(hB]hC]r1(hj,Xpy-attrr2ehD]hE]hH]uh;j(h5]r3hTXnamer4r5}r6(h:Uh;j.ubah>hubaubhTXA attribute that is used for matching the event with the handlers.r7r8}r9(h:XA attribute that is used for matching the event with the handlers.h;j!ubeubj#)r:}r;(h:Uh;jhj&h@}r<(hB]hC]hD]hE]hH]uhJNhKhh5]r=j))r>}r?(h:Uh@}r@(hB]hC]hD]hE]hH]uh;j:h5]rA(j.)rB}rC(h:Uh@}rD(hB]hC]hD]hE]hH]uh;j>h5]rEhTX VariablesrFrG}rH(h:Uh;jBubah>j6ubj7)rI}rJ(h:Uh@}rK(hB]hC]hD]hE]hH]uh;j>h5]rLj<)rM}rN(h:Uh@}rO(hB]hC]hD]hE]hH]uh;jIh5]rP(jA)rQ}rR(h:Uh@}rS(hB]hC]hD]hE]hH]uh;jMh5]rTha)rU}rV(h:Uh@}rW(hB]hC]hD]hE]hH]uh;jQh5]rX(h)rY}rZ(h:Uh@}r[(UreftypejMU reftargetXchannelsr\U refdomainjhE]hD]U refexplicithB]hC]hH]uh;jUh5]r]jP)r^}r_(h:j\h@}r`(hB]hC]hD]hE]hH]uh;jYh5]rahTXchannelsrbrc}rd(h:Uh;j^ubah>jXubah>hubhTX -- rerf}rg(h:Uh;jUubha)rh}ri(h:Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rjh;jUhhfh@}rk(hB]hC]hD]hE]hH]uhJKh5]rlhTXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rmrn}ro(h:jjh;jhubaubha)rp}rq(h:XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rrh;jUhhfh@}rs(hB]hC]hD]hE]hH]uhJKh5]rthTXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rurv}rw(h:jrh;jpubaubeh>hfubah>jlubjA)rx}ry(h:Uh@}rz(hB]hC]hD]hE]hH]uh;jMh5]r{ha)r|}r}(h:Uh@}r~(hB]hC]hD]hE]hH]uh;jxh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXvaluerU refdomainjhE]hD]U refexplicithB]hC]hH]uh;j|h5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXvaluerr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;j|ubhTX this is a rr}r(h:X this is a h;j|ubh)r}r(h:X#:class:`circuits.core.values.Value`rh;j|hhh@}r(UreftypeXclassh܉hXcircuits.core.values.ValueU refdomainXpyrhE]hD]U refexplicithB]hC]hH]hhhjhhuhJNh5]rh)r}r(h:jh@}r(hB]hC]r(hjXpy-classrehD]hE]hH]uh;jh5]rhTXcircuits.core.values.Valuerr}r(h:Uh;jubah>hubaubhTXN object that holds the results returned by the handlers invoked for the event.rr}r(h:XN object that holds the results returned by the handlers invoked for the event.h;j|ubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jMh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXsuccessrU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccessrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX%if this optional attribute is set to rr}r(h:X%if this optional attribute is set to h;jubh)r}r(h:X``True``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXTruerr}r(h:Uh;jubah>hubhTX, an associated event rr}r(h:X, an associated event h;jubh)r}r(h:X ``success``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccessrr}r(h:Uh;jubah>hubhTX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(h:X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jMh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXsuccess_channelsrU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXsuccess_channelsrr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h:Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jMh5]rha)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jh5]r(h)r}r(h:Uh@}r(UreftypejMU reftargetXcompleterU refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]rjP)r}r(h:jh@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcompleterr}r(h:Uh;jubah>jXubah>hubhTX -- rr}r(h:Uh;jubhTX%if this optional attribute is set to rr}r(h:X%if this optional attribute is set to h;jubh)r}r(h:X``True``h@}r(hB]hC]hD]hE]hH]uh;jh5]r hTXTruer r }r (h:Uh;jubah>hubhTX, an associated event r r}r(h:X, an associated event h;jubh)r}r(h:X ``complete``h@}r(hB]hC]hD]hE]hH]uh;jh5]rhTXcompleterr}r(h:Uh;jubah>hubhTX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rr}r(h:X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h;jubeh>hfubah>jlubjA)r}r(h:Uh@}r(hB]hC]hD]hE]hH]uh;jMh5]rha)r}r(h:Uh@}r (hB]hC]hD]hE]hH]uh;jh5]r!(h)r"}r#(h:Uh@}r$(UreftypejMU reftargetXcomplete_channelsr%U refdomainjhE]hD]U refexplicithB]hC]hH]uh;jh5]r&jP)r'}r((h:j%h@}r)(hB]hC]hD]hE]hH]uh;j"h5]r*hTXcomplete_channelsr+r,}r-(h:Uh;j'ubah>jXubah>hubhTX -- r.r/}r0(h:Uh;jubhTXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r1r2}r3(h:Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h;jubeh>hfubah>jlubeh>j)ubah>j*ubeh>j+ubaubhX)r4}r5(h:Uh;jhh\h@}r6(hE]hD]hB]hC]hH]Uentries]r7(h_X-name (circuits.io.events.unmounted attribute)hUtr8auhJNhKhh5]ubhy)r9}r:(h:Uh;jhh|h@}r;(h~hXpyhE]hD]hB]hC]hH]hX attributer<hj<uhJNhKhh5]r=(h)r>}r?(h:Xunmounted.namer@h;j9hhh@}rA(hE]rBhahhXcircuits.io.eventsrCrD}rEbhD]hB]hC]hH]rFhahXunmounted.namehjhuhJNhKhh5]rG(h)rH}rI(h:Xnameh;j>hhh@}rJ(hB]hC]hD]hE]hH]uhJNhKhh5]rKhTXnamerLrM}rN(h:Uh;jHubaubh)rO}rP(h:X = 'unmounted'h;j>hhh@}rQ(hB]hC]hD]hE]hH]uhJNhKhh5]rRhTX = 'unmounted'rSrT}rU(h:Uh;jOubaubeubh)rV}rW(h:Uh;j9hhh@}rX(hB]hC]hD]hE]hH]uhJNhKhh5]ubeubeubeubeubah:UU transformerrYNU footnote_refsrZ}r[Urefnamesr\}r]Usymbol_footnotesr^]r_Uautofootnote_refsr`]raUsymbol_footnote_refsrb]rcU citationsrd]rehKhU current_linerfNUtransform_messagesrg]rhUreporterriNUid_startrjKU autofootnotesrk]rlU citation_refsrm}rnUindirect_targetsro]rpUsettingsrq(cdocutils.frontend Values rrors}rt(Ufootnote_backlinksruKUrecord_dependenciesrvNU rfc_base_urlrwUhttp://tools.ietf.org/html/rxU tracebackryUpep_referencesrzNUstrip_commentsr{NU toc_backlinksr|Uentryr}U language_coder~UenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNhQNUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh=Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hj~hj>h jh j@ h j hjh jh j2hjhjh4h8hj hj hjhjphj hjhjhjhjhjKhj hjNhju hjghjh j\h!hh"jh#j6h$jhGcdocutils.nodes target r)r}r(h:Uh;h8hUtargetrh@}r(hB]hE]rhGahD]UismodhC]hH]uhJKhKhh5]ubh%jh&jh'j)h(jYh)jh*j$uUsubstitution_namesr}rh>hKh@}r(hB]hE]hD]Usourceh=hC]hH]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.core.manager.doctree0000644000014400001440000021416512425011102026472 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X'circuits.core.manager.Manager.fireEventqX!circuits.core.manager.Manager.pidqX*circuits.core.manager.Manager.registerTaskqX"circuits.core.manager.Manager.tickq X-circuits.core.manager.Manager.unregisterChildq X,circuits.core.manager.Manager.unregisterTaskq X)circuits.core.manager.Manager.flushEventsq X!circuits.core.manager.Manager.runq X(circuits.core.manager.Manager.addHandlerqX.circuits.core.manager.ExceptionWrapper.extractqX'circuits.core.manager.Manager.callEventqX&circuits.core.manager.ExceptionWrapperqX'circuits.core.manager.Manager.waitEventqX%circuits.core.manager.Manager.runningqX+circuits.core.manager.Manager.removeHandlerqX)circuits.core.manager.Manager.processTaskqX+circuits.core.manager.Manager.registerChildqX)circuits.core.manager.Manager.getHandlersqX"circuits.core.manager.Manager.nameqX"circuits.core.manager.Manager.joinqX"circuits.core.manager.TimeoutErrorqXcircuits.core.manager moduleqNX"circuits.core.manager.Manager.callqX"circuits.core.manager.Manager.waitqX(circuits.core.manager.UnregistrableErrorqX#circuits.core.manager.Manager.startqXcircuits.core.manager.Managerq X"circuits.core.manager.Manager.fireq!Xcircuits.core.manager.CallValueq"X"circuits.core.manager.Manager.stopq#X#circuits.core.manager.Manager.flushq$uUsubstitution_defsq%}q&Uparse_messagesq']q(Ucurrent_sourceq)NU decorationq*NUautofootnote_startq+KUnameidsq,}q-(hhhhhhh h h h h h h h h h hhhhhhhhhhhhhhhhhhhhhhhhhhhUcircuits-core-manager-moduleq.hhhhhhhhh h h!h!h"h"h#h#h$h$uUchildrenq/]q0cdocutils.nodes section q1)q2}q3(U rawsourceq4UUparentq5hUsourceq6XF/home/prologic/work/circuits/docs/source/api/circuits.core.manager.rstq7Utagnameq8Usectionq9U attributesq:}q;(Udupnamesq<]Uclassesq=]Ubackrefsq>]Uidsq?]q@(Xmodule-circuits.core.managerqAh.eUnamesqB]qChauUlineqDKUdocumentqEhh/]qF(cdocutils.nodes title qG)qH}qI(h4Xcircuits.core.manager moduleqJh5h2h6h7h8UtitleqKh:}qL(h<]h=]h>]h?]hB]uhDKhEhh/]qMcdocutils.nodes Text qNXcircuits.core.manager moduleqOqP}qQ(h4hJh5hHubaubcsphinx.addnodes index qR)qS}qT(h4Uh5h2h6U qUh8UindexqVh:}qW(h?]h>]h<]h=]hB]Uentries]qX(UsingleqYXcircuits.core.manager (module)Xmodule-circuits.core.managerUtqZauhDKhEhh/]ubcdocutils.nodes paragraph q[)q\}q](h4X&This module defines the Manager class.q^h5h2h6XX/home/prologic/work/circuits/circuits/core/manager.py:docstring of circuits.core.managerq_h8U paragraphq`h:}qa(h<]h=]h>]h?]hB]uhDKhEhh/]qbhNX&This module defines the Manager class.qcqd}qe(h4h^h5h\ubaubhR)qf}qg(h4Uh5h2h6Xk/home/prologic/work/circuits/circuits/core/manager.py:docstring of circuits.core.manager.UnregistrableErrorqhh8hVh:}qi(h?]h>]h<]h=]hB]Uentries]qj(hYXUnregistrableErrorqkhUtqlauhDNhEhh/]ubcsphinx.addnodes desc qm)qn}qo(h4Uh5h2h6hhh8Udescqph:}qq(UnoindexqrUdomainqsXpyh?]h>]h<]h=]hB]UobjtypeqtX exceptionquUdesctypeqvhuuhDNhEhh/]qw(csphinx.addnodes desc_signature qx)qy}qz(h4hkh5hnh6U q{h8Udesc_signatureq|h:}q}(h?]q~haUmoduleqcdocutils.nodes reprunicode qXcircuits.core.managerqq}qbh>]h<]h=]hB]qhaUfullnameqhkUclassqUUfirstquhDNhEhh/]q(csphinx.addnodes desc_annotation q)q}q(h4X exception h5hyh6h{h8Udesc_annotationqh:}q(h<]h=]h>]h?]hB]uhDNhEhh/]qhNX exception qq}q(h4Uh5hubaubcsphinx.addnodes desc_addname q)q}q(h4Xcircuits.core.manager.h5hyh6h{h8U desc_addnameqh:}q(h<]h=]h>]h?]hB]uhDNhEhh/]qhNXcircuits.core.manager.qq}q(h4Uh5hubaubcsphinx.addnodes desc_name q)q}q(h4hkh5hyh6h{h8U desc_nameqh:}q(h<]h=]h>]h?]hB]uhDNhEhh/]qhNXUnregistrableErrorqq}q(h4Uh5hubaubeubcsphinx.addnodes desc_content q)q}q(h4Uh5hnh6h{h8U desc_contentqh:}q(h<]h=]h>]h?]hB]uhDNhEhh/]q(h[)q}q(h4X$Bases: :class:`exceptions.Exception`h5hh6U qh8h`h:}q(h<]h=]h>]h?]hB]uhDKhEhh/]q(hNXBases: qq}q(h4XBases: h5hubcsphinx.addnodes pending_xref q)q}q(h4X:class:`exceptions.Exception`qh5hh6Nh8U pending_xrefqh:}q(UreftypeXclassUrefwarnqU reftargetqXexceptions.ExceptionU refdomainXpyqh?]h>]U refexplicith<]h=]hB]UrefdocqXapi/circuits.core.managerqUpy:classqhkU py:moduleqXcircuits.core.managerquhDNh/]qcdocutils.nodes literal q)q}q(h4hh:}q(h<]h=]q(UxrefqhXpy-classqeh>]h?]hB]uh5hh/]qhNXexceptions.ExceptionqɅq}q(h4Uh5hubah8Uliteralqubaubeubh[)q}q(h4X4Raised if a component cannot be registered as child.qh5hh6hhh8h`h:}q(h<]h=]h>]h?]hB]uhDKhEhh/]qhNX4Raised if a component cannot be registered as child.q҅q}q(h4hh5hubaubeubeubhR)q}q(h4Uh5h2h6Xe/home/prologic/work/circuits/circuits/core/manager.py:docstring of circuits.core.manager.TimeoutErrorqh8hVh:}q(h?]h>]h<]h=]hB]Uentries]q(hYX TimeoutErrorqhUtqauhDNhEhh/]ubhm)q}q(h4Uh5h2h6hh8hph:}q(hrhsXpyh?]h>]h<]h=]hB]htX exceptionqhvhuhDNhEhh/]q(hx)q}q(h4hh5hh6h{h8h|h:}q(h?]qhahhXcircuits.core.managerq允q}qbh>]h<]h=]hB]qhahhhUhuhDNhEhh/]q(h)q}q(h4X exception h5hh6h{h8hh:}q(h<]h=]h>]h?]hB]uhDNhEhh/]qhNX exception qq}q(h4Uh5hubaubh)q}q(h4Xcircuits.core.manager.h5hh6h{h8hh:}q(h<]h=]h>]h?]hB]uhDNhEhh/]qhNXcircuits.core.manager.qq}q(h4Uh5hubaubh)q}q(h4hh5hh6h{h8hh:}q(h<]h=]h>]h?]hB]uhDNhEhh/]qhNX TimeoutErrorqq}q(h4Uh5hubaubeubh)q}r(h4Uh5hh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(h[)r}r(h4X$Bases: :class:`exceptions.Exception`h5hh6hh8h`h:}r(h<]h=]h>]h?]hB]uhDKhEhh/]r(hNXBases: rr}r (h4XBases: h5jubh)r }r (h4X:class:`exceptions.Exception`r h5jh6Nh8hh:}r (UreftypeXclasshhXexceptions.ExceptionU refdomainXpyrh?]h>]U refexplicith<]h=]hB]hhhhhhuhDNh/]rh)r}r(h4j h:}r(h<]h=]r(hjXpy-classreh>]h?]hB]uh5j h/]rhNXexceptions.Exceptionrr}r(h4Uh5jubah8hubaubeubh[)r}r(h4X%Raised if wait event timeout occurredrh5hh6hh8h`h:}r(h<]h=]h>]h?]hB]uhDKhEhh/]rhNX%Raised if wait event timeout occurredrr}r (h4jh5jubaubeubeubhR)r!}r"(h4Uh5h2h6hh8hVh:}r#(h?]h>]h<]h=]hB]Uentries]r$(hYX*CallValue (class in circuits.core.manager)h"Utr%auhDNhEhh/]ubhm)r&}r'(h4Uh5h2h6hh8hph:}r((hrhsXpyh?]h>]h<]h=]hB]htXclassr)hvj)uhDNhEhh/]r*(hx)r+}r,(h4XCallValue(value)h5j&h6h{h8h|h:}r-(h?]r.h"ahhXcircuits.core.managerr/r0}r1bh>]h<]h=]hB]r2h"ahX CallValuer3hUhuhDNhEhh/]r4(h)r5}r6(h4Xclass h5j+h6h{h8hh:}r7(h<]h=]h>]h?]hB]uhDNhEhh/]r8hNXclass r9r:}r;(h4Uh5j5ubaubh)r<}r=(h4Xcircuits.core.manager.h5j+h6h{h8hh:}r>(h<]h=]h>]h?]hB]uhDNhEhh/]r?hNXcircuits.core.manager.r@rA}rB(h4Uh5j<ubaubh)rC}rD(h4j3h5j+h6h{h8hh:}rE(h<]h=]h>]h?]hB]uhDNhEhh/]rFhNX CallValuerGrH}rI(h4Uh5jCubaubcsphinx.addnodes desc_parameterlist rJ)rK}rL(h4Uh5j+h6h{h8Udesc_parameterlistrMh:}rN(h<]h=]h>]h?]hB]uhDNhEhh/]rOcsphinx.addnodes desc_parameter rP)rQ}rR(h4Xvalueh:}rS(h<]h=]h>]h?]hB]uh5jKh/]rThNXvaluerUrV}rW(h4Uh5jQubah8Udesc_parameterrXubaubeubh)rY}rZ(h4Uh5j&h6h{h8hh:}r[(h<]h=]h>]h?]hB]uhDNhEhh/]r\h[)r]}r^(h4XBases: :class:`object`h5jYh6hh8h`h:}r_(h<]h=]h>]h?]hB]uhDKhEhh/]r`(hNXBases: rarb}rc(h4XBases: h5j]ubh)rd}re(h4X:class:`object`rfh5j]h6Nh8hh:}rg(UreftypeXclasshhXobjectU refdomainXpyrhh?]h>]U refexplicith<]h=]hB]hhhj3hhuhDNh/]rih)rj}rk(h4jfh:}rl(h<]h=]rm(hjhXpy-classrneh>]h?]hB]uh5jdh/]rohNXobjectrprq}rr(h4Uh5jjubah8hubaubeubaubeubhR)rs}rt(h4Uh5h2h6Nh8hVh:}ru(h?]h>]h<]h=]hB]Uentries]rv(hYX1ExceptionWrapper (class in circuits.core.manager)hUtrwauhDNhEhh/]ubhm)rx}ry(h4Uh5h2h6Nh8hph:}rz(hrhsXpyh?]h>]h<]h=]hB]htXclassr{hvj{uhDNhEhh/]r|(hx)r}}r~(h4XExceptionWrapper(exception)h5jxh6h{h8h|h:}r(h?]rhahhXcircuits.core.managerrr}rbh>]h<]h=]hB]rhahXExceptionWrapperrhUhuhDNhEhh/]r(h)r}r(h4Xclass h5j}h6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXclass rr}r(h4Uh5jubaubh)r}r(h4Xcircuits.core.manager.h5j}h6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXcircuits.core.manager.rr}r(h4Uh5jubaubh)r}r(h4jh5j}h6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXExceptionWrapperrr}r(h4Uh5jubaubjJ)r}r(h4Uh5j}h6h{h8jMh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rjP)r}r(h4X exceptionh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX exceptionrr}r(h4Uh5jubah8jXubaubeubh)r}r(h4Uh5jxh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(h[)r}r(h4XBases: :class:`object`h5jh6hh8h`h:}r(h<]h=]h>]h?]hB]uhDKhEhh/]r(hNXBases: rr}r(h4XBases: h5jubh)r}r(h4X:class:`object`rh5jh6Nh8hh:}r(UreftypeXclasshhXobjectU refdomainXpyrh?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]rh)r}r(h4jh:}r(h<]h=]r(hjXpy-classreh>]h?]hB]uh5jh/]rhNXobjectrr}r(h4Uh5jubah8hubaubeubhR)r}r(h4Uh5jh6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX9extract() (circuits.core.manager.ExceptionWrapper method)hUtrauhDNhEhh/]ubhm)r}r(h4Uh5jh6Nh8hph:}r(hrhsXpyh?]h>]h<]h=]hB]htXmethodrhvjuhDNhEhh/]r(hx)r}r(h4XExceptionWrapper.extract()h5jh6h{h8h|h:}r(h?]rhahhXcircuits.core.managerrr}rbh>]h<]h=]hB]rhahXExceptionWrapper.extracthjhuhDNhEhh/]r(h)r}r(h4Xextracth5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXextractrr}r(h4Uh5jubaubjJ)r}r(h4Uh5jh6h{h8jMh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubh)r}r(h4Uh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubeubeubhR)r}r(h4Uh5h2h6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX(Manager (class in circuits.core.manager)h UtrauhDNhEhh/]ubhm)r}r(h4Uh5h2h6Nh8hph:}r(hrhsXpyh?]h>]h<]h=]hB]htXclassrhvjuhDNhEhh/]r(hx)r}r(h4XManager(*args, **kwargs)h5jh6h{h8h|h:}r(h?]rh ahhXcircuits.core.managerrr}rbh>]h<]h=]hB]rh ahXManagerrhUhuhDNhEhh/]r(h)r}r(h4Xclass h5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXclass rr}r(h4Uh5jubaubh)r}r(h4Xcircuits.core.manager.h5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXcircuits.core.manager.rr}r(h4Uh5jubaubh)r}r(h4jh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXManagerrr}r (h4Uh5jubaubjJ)r }r (h4Uh5jh6h{h8jMh:}r (h<]h=]h>]h?]hB]uhDNhEhh/]r (jP)r}r(h4X*argsh:}r(h<]h=]h>]h?]hB]uh5j h/]rhNX*argsrr}r(h4Uh5jubah8jXubjP)r}r(h4X**kwargsh:}r(h<]h=]h>]h?]hB]uh5j h/]rhNX**kwargsrr}r(h4Uh5jubah8jXubeubeubh)r}r(h4Uh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(h[)r }r!(h4XBases: :class:`object`r"h5jh6hh8h`h:}r#(h<]h=]h>]h?]hB]uhDKhEhh/]r$(hNXBases: r%r&}r'(h4XBases: h5j ubh)r(}r)(h4X:class:`object`r*h5j h6Nh8hh:}r+(UreftypeXclasshhXobjectU refdomainXpyr,h?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]r-h)r.}r/(h4j*h:}r0(h<]h=]r1(hj,Xpy-classr2eh>]h?]hB]uh5j(h/]r3hNXobjectr4r5}r6(h4Uh5j.ubah8hubaubeubh[)r7}r8(h4XThe manager class has two roles. As a base class for component implementation, it provides methods for event and handler management. The method :meth:`.fireEvent` appends a new event at the end of the event queue for later execution. :meth:`.waitEvent` suspends the execution of a handler until all handlers for a given event have been invoked. :meth:`.callEvent` combines the last two methods in a single method.h5jh6X`/home/prologic/work/circuits/circuits/core/manager.py:docstring of circuits.core.manager.Managerr9h8h`h:}r:(h<]h=]h>]h?]hB]uhDKhEhh/]r;(hNXThe manager class has two roles. As a base class for component implementation, it provides methods for event and handler management. The method r<r=}r>(h4XThe manager class has two roles. As a base class for component implementation, it provides methods for event and handler management. The method h5j7ubh)r?}r@(h4X:meth:`.fireEvent`rAh5j7h6Nh8hh:}rB(UreftypeXmethU refspecificrChhX fireEventU refdomainXpyrDh?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]rEh)rF}rG(h4jAh:}rH(h<]h=]rI(hjDXpy-methrJeh>]h?]hB]uh5j?h/]rKhNX fireEvent()rLrM}rN(h4Uh5jFubah8hubaubhNXH appends a new event at the end of the event queue for later execution. rOrP}rQ(h4XH appends a new event at the end of the event queue for later execution. h5j7ubh)rR}rS(h4X:meth:`.waitEvent`rTh5j7h6Nh8hh:}rU(UreftypeXmethjChhX waitEventU refdomainXpyrVh?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]rWh)rX}rY(h4jTh:}rZ(h<]h=]r[(hjVXpy-methr\eh>]h?]hB]uh5jRh/]r]hNX waitEvent()r^r_}r`(h4Uh5jXubah8hubaubhNX] suspends the execution of a handler until all handlers for a given event have been invoked. rarb}rc(h4X] suspends the execution of a handler until all handlers for a given event have been invoked. h5j7ubh)rd}re(h4X:meth:`.callEvent`rfh5j7h6Nh8hh:}rg(UreftypeXmethjChhX callEventU refdomainXpyrhh?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]rih)rj}rk(h4jfh:}rl(h<]h=]rm(hjhXpy-methrneh>]h?]hB]uh5jdh/]rohNX callEvent()rprq}rr(h4Uh5jjubah8hubaubhNX2 combines the last two methods in a single method.rsrt}ru(h4X2 combines the last two methods in a single method.h5j7ubeubh[)rv}rw(h4XThe methods :meth:`.addHandler` and :meth:`.removeHandler` allow handlers for events to be added and removed dynamically. (The more common way to register a handler is to use the :func:`~.handlers.handler` decorator or derive the class from :class:`~.components.Component`.)h5jh6j9h8h`h:}rx(h<]h=]h>]h?]hB]uhDKhEhh/]ry(hNX The methods rzr{}r|(h4X The methods h5jvubh)r}}r~(h4X:meth:`.addHandler`rh5jvh6Nh8hh:}r(UreftypeXmethjChhX addHandlerU refdomainXpyrh?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]rh)r}r(h4jh:}r(h<]h=]r(hjXpy-methreh>]h?]hB]uh5j}h/]rhNX addHandler()rr}r(h4Uh5jubah8hubaubhNX and rr}r(h4X and h5jvubh)r}r(h4X:meth:`.removeHandler`rh5jvh6Nh8hh:}r(UreftypeXmethjChhX removeHandlerU refdomainXpyrh?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]rh)r}r(h4jh:}r(h<]h=]r(hjXpy-methreh>]h?]hB]uh5jh/]rhNXremoveHandler()rr}r(h4Uh5jubah8hubaubhNXy allow handlers for events to be added and removed dynamically. (The more common way to register a handler is to use the rr}r(h4Xy allow handlers for events to be added and removed dynamically. (The more common way to register a handler is to use the h5jvubh)r}r(h4X:func:`~.handlers.handler`rh5jvh6Nh8hh:}r(UreftypeXfuncjChhXhandlers.handlerU refdomainXpyrh?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]rh)r}r(h4jh:}r(h<]h=]r(hjXpy-funcreh>]h?]hB]uh5jh/]rhNX handler()rr}r(h4Uh5jubah8hubaubhNX$ decorator or derive the class from rr}r(h4X$ decorator or derive the class from h5jvubh)r}r(h4X:class:`~.components.Component`rh5jvh6Nh8hh:}r(UreftypeXclassjChhXcomponents.ComponentU refdomainXpyrh?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]rh)r}r(h4jh:}r(h<]h=]r(hjXpy-classreh>]h?]hB]uh5jh/]rhNX Componentrr}r(h4Uh5jubah8hubaubhNX.)rr}r(h4X.)h5jvubeubh[)r}r(h4XIn its second role, the :class:`.Manager` takes the role of the event executor. Every component hierarchy has a root component that maintains a queue of events. Firing an event effectively means appending it to the event queue maintained by the root manager. The :meth:`.flush` method removes all pending events from the queue and, for each event, invokes all the handlers. Usually, :meth:`.flush` is indirectly invoked by :meth:`run`.h5jh6j9h8h`h:}r(h<]h=]h>]h?]hB]uhDK hEhh/]r(hNXIn its second role, the rr}r(h4XIn its second role, the h5jubh)r}r(h4X:class:`.Manager`rh5jh6Nh8hh:}r(UreftypeXclassjChhXManagerU refdomainXpyrh?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]rh)r}r(h4jh:}r(h<]h=]r(hjXpy-classreh>]h?]hB]uh5jh/]rhNXManagerrr}r(h4Uh5jubah8hubaubhNX takes the role of the event executor. Every component hierarchy has a root component that maintains a queue of events. Firing an event effectively means appending it to the event queue maintained by the root manager. The rr}r(h4X takes the role of the event executor. Every component hierarchy has a root component that maintains a queue of events. Firing an event effectively means appending it to the event queue maintained by the root manager. The h5jubh)r}r(h4X:meth:`.flush`rh5jh6Nh8hh:}r(UreftypeXmethjChhXflushU refdomainXpyrh?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]rh)r}r(h4jh:}r(h<]h=]r(hjXpy-methreh>]h?]hB]uh5jh/]rhNXflush()rr}r(h4Uh5jubah8hubaubhNXj method removes all pending events from the queue and, for each event, invokes all the handlers. Usually, rr}r(h4Xj method removes all pending events from the queue and, for each event, invokes all the handlers. Usually, h5jubh)r}r(h4X:meth:`.flush`rh5jh6Nh8hh:}r(UreftypeXmethjChhXflushU refdomainXpyrh?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]rh)r}r(h4jh:}r(h<]h=]r(hjXpy-methreh>]h?]hB]uh5jh/]rhNXflush()rr}r(h4Uh5jubah8hubaubhNX is indirectly invoked by rr}r(h4X is indirectly invoked by h5jubh)r}r(h4X :meth:`run`rh5jh6Nh8hh:}r(UreftypeXmethhhXrunU refdomainXpyrh?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]rh)r}r (h4jh:}r (h<]h=]r (hjXpy-methr eh>]h?]hB]uh5jh/]r hNXrun()rr}r(h4Uh5jubah8hubaubhNX.r}r(h4X.h5jubeubh[)r}r(h4XKThe manager optionally provides information about the execution of events as automatically generated events. If an :class:`~.events.Event` has its :attr:`success` attribute set to True, the manager fires a :class:`~.events.Success` event if all handlers have been executed without error. Note that this event will be enqueued (and dispatched) immediately after the events that have been fired by the event's handlers. So the success event indicates both the successful invocation of all handlers for the event and the processing of the immediate follow-up events fired by those handlers.h5jh6j9h8h`h:}r(h<]h=]h>]h?]hB]uhDKhEhh/]r(hNXsThe manager optionally provides information about the execution of events as automatically generated events. If an rr}r(h4XsThe manager optionally provides information about the execution of events as automatically generated events. If an h5jubh)r}r(h4X:class:`~.events.Event`rh5jh6Nh8hh:}r(UreftypeXclassjChhX events.EventU refdomainXpyrh?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]rh)r }r!(h4jh:}r"(h<]h=]r#(hjXpy-classr$eh>]h?]hB]uh5jh/]r%hNXEventr&r'}r((h4Uh5j ubah8hubaubhNX has its r)r*}r+(h4X has its h5jubh)r,}r-(h4X:attr:`success`r.h5jh6Nh8hh:}r/(UreftypeXattrhhXsuccessU refdomainXpyr0h?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]r1h)r2}r3(h4j.h:}r4(h<]h=]r5(hj0Xpy-attrr6eh>]h?]hB]uh5j,h/]r7hNXsuccessr8r9}r:(h4Uh5j2ubah8hubaubhNX, attribute set to True, the manager fires a r;r<}r=(h4X, attribute set to True, the manager fires a h5jubh)r>}r?(h4X:class:`~.events.Success`r@h5jh6Nh8hh:}rA(UreftypeXclassjChhXevents.SuccessU refdomainXpyrBh?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]rCh)rD}rE(h4j@h:}rF(h<]h=]rG(hjBXpy-classrHeh>]h?]hB]uh5j>h/]rIhNXSuccessrJrK}rL(h4Uh5jDubah8hubaubhNXd event if all handlers have been executed without error. Note that this event will be enqueued (and dispatched) immediately after the events that have been fired by the event's handlers. So the success event indicates both the successful invocation of all handlers for the event and the processing of the immediate follow-up events fired by those handlers.rMrN}rO(h4Xd event if all handlers have been executed without error. Note that this event will be enqueued (and dispatched) immediately after the events that have been fired by the event's handlers. So the success event indicates both the successful invocation of all handlers for the event and the processing of the immediate follow-up events fired by those handlers.h5jubeubh[)rP}rQ(h4XSometimes it is not sufficient to know that an event and its immediate follow-up events have been processed. Rather, it is important to know when all state changes triggered by an event, directly or indirectly, have been performed. This also includes the processing of events that have been fired when invoking the handlers for the follow-up events and the processing of events that have again been fired by those handlers and so on. The completion of the processing of an event and all its direct or indirect follow-up events may be indicated by a :class:`~.events.Complete` event. This event is generated by the manager if :class:`~.events.Event` has its :attr:`complete` attribute set to True.h5jh6j9h8h`h:}rR(h<]h=]h>]h?]hB]uhDKhEhh/]rS(hNX%Sometimes it is not sufficient to know that an event and its immediate follow-up events have been processed. Rather, it is important to know when all state changes triggered by an event, directly or indirectly, have been performed. This also includes the processing of events that have been fired when invoking the handlers for the follow-up events and the processing of events that have again been fired by those handlers and so on. The completion of the processing of an event and all its direct or indirect follow-up events may be indicated by a rTrU}rV(h4X%Sometimes it is not sufficient to know that an event and its immediate follow-up events have been processed. Rather, it is important to know when all state changes triggered by an event, directly or indirectly, have been performed. This also includes the processing of events that have been fired when invoking the handlers for the follow-up events and the processing of events that have again been fired by those handlers and so on. The completion of the processing of an event and all its direct or indirect follow-up events may be indicated by a h5jPubh)rW}rX(h4X:class:`~.events.Complete`rYh5jPh6Nh8hh:}rZ(UreftypeXclassjChhXevents.CompleteU refdomainXpyr[h?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]r\h)r]}r^(h4jYh:}r_(h<]h=]r`(hj[Xpy-classraeh>]h?]hB]uh5jWh/]rbhNXCompletercrd}re(h4Uh5j]ubah8hubaubhNX2 event. This event is generated by the manager if rfrg}rh(h4X2 event. This event is generated by the manager if h5jPubh)ri}rj(h4X:class:`~.events.Event`rkh5jPh6Nh8hh:}rl(UreftypeXclassjChhX events.EventU refdomainXpyrmh?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]rnh)ro}rp(h4jkh:}rq(h<]h=]rr(hjmXpy-classrseh>]h?]hB]uh5jih/]rthNXEventrurv}rw(h4Uh5joubah8hubaubhNX has its rxry}rz(h4X has its h5jPubh)r{}r|(h4X:attr:`complete`r}h5jPh6Nh8hh:}r~(UreftypeXattrhhXcompleteU refdomainXpyrh?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]rh)r}r(h4j}h:}r(h<]h=]r(hjXpy-attrreh>]h?]hB]uh5j{h/]rhNXcompleterr}r(h4Uh5jubah8hubaubhNX attribute set to True.rr}r(h4X attribute set to True.h5jPubeubh[)r}r(h4XApart from the event queue, the root manager also maintains a list of tasks, actually Python generators, that are updated when the event queue has been flushed.rh5jh6j9h8h`h:}r(h<]h=]h>]h?]hB]uhDK+hEhh/]rhNXApart from the event queue, the root manager also maintains a list of tasks, actually Python generators, that are updated when the event queue has been flushed.rr}r(h4jh5jubaubh[)r}r(h4X4initializes x; see x.__class__.__doc__ for signaturerh5jh6j9h8h`h:}r(h<]h=]h>]h?]hB]uhDK/hEhh/]rhNX4initializes x; see x.__class__.__doc__ for signaturerr}r(h4jh5jubaubhR)r}r(h4Uh5jh6Xe/home/prologic/work/circuits/circuits/core/manager.py:docstring of circuits.core.manager.Manager.namerh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX.name (circuits.core.manager.Manager attribute)hUtrauhDNhEhh/]ubhm)r}r(h4Uh5jh6jh8hph:}r(hrhsXpyh?]h>]h<]h=]hB]htX attributerhvjuhDNhEhh/]r(hx)r}r(h4X Manager.nameh5jh6h{h8h|h:}r(h?]rhahhXcircuits.core.managerrr}rbh>]h<]h=]hB]rhahX Manager.namehjhuhDNhEhh/]rh)r}r(h4Xnameh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXnamerr}r(h4Uh5jubaubaubh)r}r(h4Uh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rh[)r}r(h4X)Return the name of this Component/Managerrh5jh6jh8h`h:}r(h<]h=]h>]h?]hB]uhDKhEhh/]rhNX)Return the name of this Component/Managerrr}r(h4jh5jubaubaubeubhR)r}r(h4Uh5jh6Xh/home/prologic/work/circuits/circuits/core/manager.py:docstring of circuits.core.manager.Manager.runningrh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX1running (circuits.core.manager.Manager attribute)hUtrauhDNhEhh/]ubhm)r}r(h4Uh5jh6jh8hph:}r(hrhsXpyh?]h>]h<]h=]hB]htX attributerhvjuhDNhEhh/]r(hx)r}r(h4XManager.runningh5jh6h{h8h|h:}r(h?]rhahhXcircuits.core.managerrr}rbh>]h<]h=]hB]rhahXManager.runninghjhuhDNhEhh/]rh)r}r(h4Xrunningh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXrunningrr}r(h4Uh5jubaubaubh)r}r(h4Uh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rh[)r}r(h4X2Return the running state of this Component/Managerrh5jh6jh8h`h:}r(h<]h=]h>]h?]hB]uhDKhEhh/]rhNX2Return the running state of this Component/Managerrr}r(h4jh5jubaubaubeubhR)r}r(h4Uh5jh6Xd/home/prologic/work/circuits/circuits/core/manager.py:docstring of circuits.core.manager.Manager.pidrh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX-pid (circuits.core.manager.Manager attribute)hUtrauhDNhEhh/]ubhm)r}r(h4Uh5jh6jh8hph:}r(hrhsXpyh?]h>]h<]h=]hB]htX attributerhvjuhDNhEhh/]r(hx)r}r(h4X Manager.pidh5jh6h{h8h|h:}r(h?]rhahhXcircuits.core.managerrr}rbh>]h<]h=]hB]rhahX Manager.pidhjhuhDNhEhh/]rh)r}r(h4Xpidh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXpidrr}r(h4Uh5jubaubaubh)r}r(h4Uh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r h[)r }r (h4X/Return the process id of this Component/Managerr h5jh6jh8h`h:}r (h<]h=]h>]h?]hB]uhDKhEhh/]rhNX/Return the process id of this Component/Managerrr}r(h4j h5j ubaubaubeubhR)r}r(h4Uh5jh6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX4getHandlers() (circuits.core.manager.Manager method)hUtrauhDNhEhh/]ubhm)r}r(h4Uh5jh6Nh8hph:}r(hrhsXpyh?]h>]h<]h=]hB]htXmethodrhvjuhDNhEhh/]r(hx)r}r(h4X-Manager.getHandlers(event, channel, **kwargs)h5jh6h{h8h|h:}r(h?]rhahhXcircuits.core.managerr r!}r"bh>]h<]h=]hB]r#hahXManager.getHandlershjhuhDNhEhh/]r$(h)r%}r&(h4X getHandlersh5jh6h{h8hh:}r'(h<]h=]h>]h?]hB]uhDNhEhh/]r(hNX getHandlersr)r*}r+(h4Uh5j%ubaubjJ)r,}r-(h4Uh5jh6h{h8jMh:}r.(h<]h=]h>]h?]hB]uhDNhEhh/]r/(jP)r0}r1(h4Xeventh:}r2(h<]h=]h>]h?]hB]uh5j,h/]r3hNXeventr4r5}r6(h4Uh5j0ubah8jXubjP)r7}r8(h4Xchannelh:}r9(h<]h=]h>]h?]hB]uh5j,h/]r:hNXchannelr;r<}r=(h4Uh5j7ubah8jXubjP)r>}r?(h4X**kwargsh:}r@(h<]h=]h>]h?]hB]uh5j,h/]rAhNX**kwargsrBrC}rD(h4Uh5j>ubah8jXubeubeubh)rE}rF(h4Uh5jh6h{h8hh:}rG(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)rH}rI(h4Uh5jh6Nh8hVh:}rJ(h?]h>]h<]h=]hB]Uentries]rK(hYX3addHandler() (circuits.core.manager.Manager method)hUtrLauhDNhEhh/]ubhm)rM}rN(h4Uh5jh6Nh8hph:}rO(hrhsXpyh?]h>]h<]h=]hB]htXmethodrPhvjPuhDNhEhh/]rQ(hx)rR}rS(h4XManager.addHandler(f)h5jMh6h{h8h|h:}rT(h?]rUhahhXcircuits.core.managerrVrW}rXbh>]h<]h=]hB]rYhahXManager.addHandlerhjhuhDNhEhh/]rZ(h)r[}r\(h4X addHandlerh5jRh6h{h8hh:}r](h<]h=]h>]h?]hB]uhDNhEhh/]r^hNX addHandlerr_r`}ra(h4Uh5j[ubaubjJ)rb}rc(h4Uh5jRh6h{h8jMh:}rd(h<]h=]h>]h?]hB]uhDNhEhh/]rejP)rf}rg(h4Xfh:}rh(h<]h=]h>]h?]hB]uh5jbh/]rihNXfrj}rk(h4Uh5jfubah8jXubaubeubh)rl}rm(h4Uh5jMh6h{h8hh:}rn(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)ro}rp(h4Uh5jh6Nh8hVh:}rq(h?]h>]h<]h=]hB]Uentries]rr(hYX6removeHandler() (circuits.core.manager.Manager method)hUtrsauhDNhEhh/]ubhm)rt}ru(h4Uh5jh6Nh8hph:}rv(hrhsXpyh?]h>]h<]h=]hB]htXmethodrwhvjwuhDNhEhh/]rx(hx)ry}rz(h4X)Manager.removeHandler(method, event=None)h5jth6h{h8h|h:}r{(h?]r|hahhXcircuits.core.managerr}r~}rbh>]h<]h=]hB]rhahXManager.removeHandlerhjhuhDNhEhh/]r(h)r}r(h4X removeHandlerh5jyh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNX removeHandlerrr}r(h4Uh5jubaubjJ)r}r(h4Uh5jyh6h{h8jMh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(jP)r}r(h4Xmethodh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXmethodrr}r(h4Uh5jubah8jXubjP)r}r(h4X event=Noneh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX event=Nonerr}r(h4Uh5jubah8jXubeubeubh)r}r(h4Uh5jth6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)r}r(h4Uh5jh6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX6registerChild() (circuits.core.manager.Manager method)hUtrauhDNhEhh/]ubhm)r}r(h4Uh5jh6Nh8hph:}r(hrhsXpyh?]h>]h<]h=]hB]htXmethodrhvjuhDNhEhh/]r(hx)r}r(h4X Manager.registerChild(component)h5jh6h{h8h|h:}r(h?]rhahhXcircuits.core.managerrr}rbh>]h<]h=]hB]rhahXManager.registerChildhjhuhDNhEhh/]r(h)r}r(h4X registerChildh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNX registerChildrr}r(h4Uh5jubaubjJ)r}r(h4Uh5jh6h{h8jMh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rjP)r}r(h4X componenth:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX componentrr}r(h4Uh5jubah8jXubaubeubh)r}r(h4Uh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)r}r(h4Uh5jh6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX8unregisterChild() (circuits.core.manager.Manager method)h UtrauhDNhEhh/]ubhm)r}r(h4Uh5jh6Nh8hph:}r(hrhsXpyh?]h>]h<]h=]hB]htXmethodrhvjuhDNhEhh/]r(hx)r}r(h4X"Manager.unregisterChild(component)h5jh6h{h8h|h:}r(h?]rh ahhXcircuits.core.managerrr}rbh>]h<]h=]hB]rh ahXManager.unregisterChildhjhuhDNhEhh/]r(h)r}r(h4XunregisterChildh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXunregisterChildrr}r(h4Uh5jubaubjJ)r}r(h4Uh5jh6h{h8jMh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rjP)r}r(h4X componenth:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX componentrr}r(h4Uh5jubah8jXubaubeubh)r}r(h4Uh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)r}r(h4Uh5jh6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX2fireEvent() (circuits.core.manager.Manager method)hUtrauhDNhEhh/]ubhm)r}r(h4Uh5jh6Nh8hph:}r(hrhsXpyh?]h>]h<]h=]hB]htXmethodrhvjuhDNhEhh/]r(hx)r}r(h4X-Manager.fireEvent(event, *channels, **kwargs)h5jh6h{h8h|h:}r(h?]rhahhXcircuits.core.managerrr}rbh>]h<]h=]hB]rhahXManager.fireEventhjhuhDNhEhh/]r(h)r}r(h4X fireEventh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNX fireEventrr}r(h4Uh5jubaubjJ)r}r (h4Uh5jh6h{h8jMh:}r (h<]h=]h>]h?]hB]uhDNhEhh/]r (jP)r }r (h4Xeventh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXeventrr}r(h4Uh5j ubah8jXubjP)r}r(h4X *channelsh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX *channelsrr}r(h4Uh5jubah8jXubjP)r}r(h4X**kwargsh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX**kwargsrr}r (h4Uh5jubah8jXubeubeubh)r!}r"(h4Uh5jh6h{h8hh:}r#(h<]h=]h>]h?]hB]uhDNhEhh/]r$(h[)r%}r&(h4XFire an event into the system.r'h5j!h6Xj/home/prologic/work/circuits/circuits/core/manager.py:docstring of circuits.core.manager.Manager.fireEventr(h8h`h:}r)(h<]h=]h>]h?]hB]uhDKhEhh/]r*hNXFire an event into the system.r+r,}r-(h4j'h5j%ubaubcdocutils.nodes field_list r.)r/}r0(h4Uh5j!h6Nh8U field_listr1h:}r2(h<]h=]h>]h?]hB]uhDNhEhh/]r3cdocutils.nodes field r4)r5}r6(h4Uh:}r7(h<]h=]h>]h?]hB]uh5j/h/]r8(cdocutils.nodes field_name r9)r:}r;(h4Uh:}r<(h<]h=]h>]h?]hB]uh5j5h/]r=hNX Parametersr>r?}r@(h4Uh5j:ubah8U field_namerAubcdocutils.nodes field_body rB)rC}rD(h4Uh:}rE(h<]h=]h>]h?]hB]uh5j5h/]rFcdocutils.nodes bullet_list rG)rH}rI(h4Uh:}rJ(h<]h=]h>]h?]hB]uh5jCh/]rK(cdocutils.nodes list_item rL)rM}rN(h4Uh:}rO(h<]h=]h>]h?]hB]uh5jHh/]rPh[)rQ}rR(h4Uh:}rS(h<]h=]h>]h?]hB]uh5jMh/]rT(cdocutils.nodes strong rU)rV}rW(h4Xeventh:}rX(h<]h=]h>]h?]hB]uh5jQh/]rYhNXeventrZr[}r\(h4Uh5jVubah8Ustrongr]ubhNX -- r^r_}r`(h4Uh5jQubhNXThe event that is to be fired.rarb}rc(h4XThe event that is to be fired.h5jQubeh8h`ubah8U list_itemrdubjL)re}rf(h4Uh:}rg(h<]h=]h>]h?]hB]uh5jHh/]rhh[)ri}rj(h4Uh:}rk(h<]h=]h>]h?]hB]uh5jeh/]rl(jU)rm}rn(h4Xchannelsh:}ro(h<]h=]h>]h?]hB]uh5jih/]rphNXchannelsrqrr}rs(h4Uh5jmubah8j]ubhNX -- rtru}rv(h4Uh5jiubhNXThe channels that this event is delivered on. If no channels are specified, the event is delivered to the channels found in the event's rwrx}ry(h4XThe channels that this event is delivered on. If no channels are specified, the event is delivered to the channels found in the event's h5jiubh)rz}r{(h4X:attr:`channel`r|h5jih6Nh8hh:}r}(UreftypeXattrhhXchannelU refdomainXpyr~h?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]rh)r}r(h4j|h:}r(h<]h=]r(hj~Xpy-attrreh>]h?]hB]uh5jzh/]rhNXchannelrr}r(h4Uh5jubah8hubaubhNX attribute. If this attribute is not set, the event is delivered to the firing component's channel. And eventually, when set neither, the event is delivered on all channels ("*").rr}r(h4X attribute. If this attribute is not set, the event is delivered to the firing component's channel. And eventually, when set neither, the event is delivered on all channels ("*").h5jiubeh8h`ubah8jdubeh8U bullet_listrubah8U field_bodyrubeh8UfieldrubaubeubeubhR)r}r(h4Uh5jh6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX-fire() (circuits.core.manager.Manager method)h!UtrauhDNhEhh/]ubhm)r}r(h4Uh5jh6Nh8hph:}r(hrhsXpyh?]h>]h<]h=]hB]htXmethodrhvjuhDNhEhh/]r(hx)r}r(h4X(Manager.fire(event, *channels, **kwargs)h5jh6h{h8h|h:}r(h?]rh!ahhXcircuits.core.managerrr}rbh>]h<]h=]hB]rh!ahX Manager.firehjhuhDNhEhh/]r(h)r}r(h4Xfireh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXfirerr}r(h4Uh5jubaubjJ)r}r(h4Uh5jh6h{h8jMh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(jP)r}r(h4Xeventh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXeventrr}r(h4Uh5jubah8jXubjP)r}r(h4X *channelsh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX *channelsrr}r(h4Uh5jubah8jXubjP)r}r(h4X**kwargsh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX**kwargsrr}r(h4Uh5jubah8jXubeubeubh)r}r(h4Uh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(h[)r}r(h4XFire an event into the system.rh5jh6Xe/home/prologic/work/circuits/circuits/core/manager.py:docstring of circuits.core.manager.Manager.firerh8h`h:}r(h<]h=]h>]h?]hB]uhDKhEhh/]rhNXFire an event into the system.rr}r(h4jh5jubaubj.)r}r(h4Uh5jh6Nh8j1h:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rj4)r}r(h4Uh:}r(h<]h=]h>]h?]hB]uh5jh/]r(j9)r}r(h4Uh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX Parametersrr}r(h4Uh5jubah8jAubjB)r}r(h4Uh:}r(h<]h=]h>]h?]hB]uh5jh/]rjG)r}r(h4Uh:}r(h<]h=]h>]h?]hB]uh5jh/]r(jL)r}r(h4Uh:}r(h<]h=]h>]h?]hB]uh5jh/]rh[)r}r(h4Uh:}r(h<]h=]h>]h?]hB]uh5jh/]r(jU)r}r(h4Xeventh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXeventrr}r(h4Uh5jubah8j]ubhNX -- rr}r(h4Uh5jubhNXThe event that is to be fired.rr}r(h4XThe event that is to be fired.h5jubeh8h`ubah8jdubjL)r}r(h4Uh:}r(h<]h=]h>]h?]hB]uh5jh/]rh[)r}r(h4Uh:}r(h<]h=]h>]h?]hB]uh5jh/]r(jU)r}r(h4Xchannelsh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXchannelsrr}r (h4Uh5jubah8j]ubhNX -- r r }r (h4Uh5jubhNXThe channels that this event is delivered on. If no channels are specified, the event is delivered to the channels found in the event's r r}r(h4XThe channels that this event is delivered on. If no channels are specified, the event is delivered to the channels found in the event's h5jubh)r}r(h4X:attr:`channel`rh5jh6Nh8hh:}r(UreftypeXattrhhXchannelU refdomainXpyrh?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]rh)r}r(h4jh:}r(h<]h=]r(hjXpy-attrreh>]h?]hB]uh5jh/]rhNXchannelrr}r(h4Uh5jubah8hubaubhNX attribute. If this attribute is not set, the event is delivered to the firing component's channel. And eventually, when set neither, the event is delivered on all channels ("*").rr }r!(h4X attribute. If this attribute is not set, the event is delivered to the firing component's channel. And eventually, when set neither, the event is delivered on all channels ("*").h5jubeh8h`ubah8jdubeh8jubah8jubeh8jubaubeubeubhR)r"}r#(h4Uh5jh6Nh8hVh:}r$(h?]h>]h<]h=]hB]Uentries]r%(hYX5registerTask() (circuits.core.manager.Manager method)hUtr&auhDNhEhh/]ubhm)r'}r((h4Uh5jh6Nh8hph:}r)(hrhsXpyh?]h>]h<]h=]hB]htXmethodr*hvj*uhDNhEhh/]r+(hx)r,}r-(h4XManager.registerTask(g)h5j'h6h{h8h|h:}r.(h?]r/hahhXcircuits.core.managerr0r1}r2bh>]h<]h=]hB]r3hahXManager.registerTaskhjhuhDNhEhh/]r4(h)r5}r6(h4X registerTaskh5j,h6h{h8hh:}r7(h<]h=]h>]h?]hB]uhDNhEhh/]r8hNX registerTaskr9r:}r;(h4Uh5j5ubaubjJ)r<}r=(h4Uh5j,h6h{h8jMh:}r>(h<]h=]h>]h?]hB]uhDNhEhh/]r?jP)r@}rA(h4Xgh:}rB(h<]h=]h>]h?]hB]uh5j<h/]rChNXgrD}rE(h4Uh5j@ubah8jXubaubeubh)rF}rG(h4Uh5j'h6h{h8hh:}rH(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)rI}rJ(h4Uh5jh6Nh8hVh:}rK(h?]h>]h<]h=]hB]Uentries]rL(hYX7unregisterTask() (circuits.core.manager.Manager method)h UtrMauhDNhEhh/]ubhm)rN}rO(h4Uh5jh6Nh8hph:}rP(hrhsXpyh?]h>]h<]h=]hB]htXmethodrQhvjQuhDNhEhh/]rR(hx)rS}rT(h4XManager.unregisterTask(g)h5jNh6h{h8h|h:}rU(h?]rVh ahhXcircuits.core.managerrWrX}rYbh>]h<]h=]hB]rZh ahXManager.unregisterTaskhjhuhDNhEhh/]r[(h)r\}r](h4XunregisterTaskh5jSh6h{h8hh:}r^(h<]h=]h>]h?]hB]uhDNhEhh/]r_hNXunregisterTaskr`ra}rb(h4Uh5j\ubaubjJ)rc}rd(h4Uh5jSh6h{h8jMh:}re(h<]h=]h>]h?]hB]uhDNhEhh/]rfjP)rg}rh(h4Xgh:}ri(h<]h=]h>]h?]hB]uh5jch/]rjhNXgrk}rl(h4Uh5jgubah8jXubaubeubh)rm}rn(h4Uh5jNh6h{h8hh:}ro(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)rp}rq(h4Uh5jh6Nh8hVh:}rr(h?]h>]h<]h=]hB]Uentries]rs(hYX2waitEvent() (circuits.core.manager.Manager method)hUtrtauhDNhEhh/]ubhm)ru}rv(h4Uh5jh6Nh8hph:}rw(hrhsXpyh?]h>]h<]h=]hB]htXmethodrxhvjxuhDNhEhh/]ry(hx)rz}r{(h4X-Manager.waitEvent(event, *channels, **kwargs)h5juh6h{h8h|h:}r|(h?]r}hahhXcircuits.core.managerr~r}rbh>]h<]h=]hB]rhahXManager.waitEventhjhuhDNhEhh/]r(h)r}r(h4X waitEventh5jzh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNX waitEventrr}r(h4Uh5jubaubjJ)r}r(h4Uh5jzh6h{h8jMh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(jP)r}r(h4Xeventh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXeventrr}r(h4Uh5jubah8jXubjP)r}r(h4X *channelsh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX *channelsrr}r(h4Uh5jubah8jXubjP)r}r(h4X**kwargsh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX**kwargsrr}r(h4Uh5jubah8jXubeubeubh)r}r(h4Uh5juh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)r}r(h4Uh5jh6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX-wait() (circuits.core.manager.Manager method)hUtrauhDNhEhh/]ubhm)r}r(h4Uh5jh6Nh8hph:}r(hrhsXpyh?]h>]h<]h=]hB]htXmethodrhvjuhDNhEhh/]r(hx)r}r(h4X(Manager.wait(event, *channels, **kwargs)h5jh6h{h8h|h:}r(h?]rhahhXcircuits.core.managerrr}rbh>]h<]h=]hB]rhahX Manager.waithjhuhDNhEhh/]r(h)r}r(h4Xwaith5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXwaitrr}r(h4Uh5jubaubjJ)r}r(h4Uh5jh6h{h8jMh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(jP)r}r(h4Xeventh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXeventrr}r(h4Uh5jubah8jXubjP)r}r(h4X *channelsh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX *channelsrr}r(h4Uh5jubah8jXubjP)r}r(h4X**kwargsh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX**kwargsrr}r(h4Uh5jubah8jXubeubeubh)r}r(h4Uh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)r}r(h4Uh5jh6Xj/home/prologic/work/circuits/circuits/core/manager.py:docstring of circuits.core.manager.Manager.callEventrh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX2callEvent() (circuits.core.manager.Manager method)hUtrauhDNhEhh/]ubhm)r}r(h4Uh5jh6jh8hph:}r(hrhsXpyh?]h>]h<]h=]hB]htXmethodrhvjuhDNhEhh/]r(hx)r}r(h4X-Manager.callEvent(event, *channels, **kwargs)h5jh6h{h8h|h:}r(h?]rhahhXcircuits.core.managerrr}rbh>]h<]h=]hB]rhahXManager.callEventhjhuhDNhEhh/]r(h)r}r(h4X callEventh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNX callEventrr}r(h4Uh5jubaubjJ)r}r(h4Uh5jh6h{h8jMh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(jP)r}r(h4Xeventh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXeventrr}r(h4Uh5jubah8jXubjP)r}r(h4X *channelsh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX *channelsrr}r(h4Uh5jubah8jXubjP)r }r (h4X**kwargsh:}r (h<]h=]h>]h?]hB]uh5jh/]r hNX**kwargsr r}r(h4Uh5j ubah8jXubeubeubh)r}r(h4Uh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rh[)r}r(h4XFire the given event to the specified channels and suspend execution until it has been dispatched. This method may only be invoked as argument to a ``yield`` on the top execution level of a handler (e.g. "``yield self.callEvent(event)``"). It effectively creates and returns a generator that will be invoked by the main loop until the event has been dispatched (see :func:`circuits.core.handlers.handler`).h5jh6jh8h`h:}r(h<]h=]h>]h?]hB]uhDKhEhh/]r(hNXFire the given event to the specified channels and suspend execution until it has been dispatched. This method may only be invoked as argument to a rr}r(h4XFire the given event to the specified channels and suspend execution until it has been dispatched. This method may only be invoked as argument to a h5jubh)r}r(h4X ``yield``h:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXyieldrr }r!(h4Uh5jubah8hubhNX0 on the top execution level of a handler (e.g. "r"r#}r$(h4X0 on the top execution level of a handler (e.g. "h5jubh)r%}r&(h4X``yield self.callEvent(event)``h:}r'(h<]h=]h>]h?]hB]uh5jh/]r(hNXyield self.callEvent(event)r)r*}r+(h4Uh5j%ubah8hubhNX"). It effectively creates and returns a generator that will be invoked by the main loop until the event has been dispatched (see r,r-}r.(h4X"). It effectively creates and returns a generator that will be invoked by the main loop until the event has been dispatched (see h5jubh)r/}r0(h4X&:func:`circuits.core.handlers.handler`r1h5jh6Nh8hh:}r2(UreftypeXfunchhXcircuits.core.handlers.handlerU refdomainXpyr3h?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]r4h)r5}r6(h4j1h:}r7(h<]h=]r8(hj3Xpy-funcr9eh>]h?]hB]uh5j/h/]r:hNX circuits.core.handlers.handler()r;r<}r=(h4Uh5j5ubah8hubaubhNX).r>r?}r@(h4X).h5jubeubaubeubhR)rA}rB(h4Uh5jh6Xe/home/prologic/work/circuits/circuits/core/manager.py:docstring of circuits.core.manager.Manager.callrCh8hVh:}rD(h?]h>]h<]h=]hB]Uentries]rE(hYX-call() (circuits.core.manager.Manager method)hUtrFauhDNhEhh/]ubhm)rG}rH(h4Uh5jh6jCh8hph:}rI(hrhsXpyh?]h>]h<]h=]hB]htXmethodrJhvjJuhDNhEhh/]rK(hx)rL}rM(h4X(Manager.call(event, *channels, **kwargs)h5jGh6h{h8h|h:}rN(h?]rOhahhXcircuits.core.managerrPrQ}rRbh>]h<]h=]hB]rShahX Manager.callhjhuhDNhEhh/]rT(h)rU}rV(h4Xcallh5jLh6h{h8hh:}rW(h<]h=]h>]h?]hB]uhDNhEhh/]rXhNXcallrYrZ}r[(h4Uh5jUubaubjJ)r\}r](h4Uh5jLh6h{h8jMh:}r^(h<]h=]h>]h?]hB]uhDNhEhh/]r_(jP)r`}ra(h4Xeventh:}rb(h<]h=]h>]h?]hB]uh5j\h/]rchNXeventrdre}rf(h4Uh5j`ubah8jXubjP)rg}rh(h4X *channelsh:}ri(h<]h=]h>]h?]hB]uh5j\h/]rjhNX *channelsrkrl}rm(h4Uh5jgubah8jXubjP)rn}ro(h4X**kwargsh:}rp(h<]h=]h>]h?]hB]uh5j\h/]rqhNX**kwargsrrrs}rt(h4Uh5jnubah8jXubeubeubh)ru}rv(h4Uh5jGh6h{h8hh:}rw(h<]h=]h>]h?]hB]uhDNhEhh/]rxh[)ry}rz(h4XFire the given event to the specified channels and suspend execution until it has been dispatched. This method may only be invoked as argument to a ``yield`` on the top execution level of a handler (e.g. "``yield self.callEvent(event)``"). It effectively creates and returns a generator that will be invoked by the main loop until the event has been dispatched (see :func:`circuits.core.handlers.handler`).h5juh6jCh8h`h:}r{(h<]h=]h>]h?]hB]uhDKhEhh/]r|(hNXFire the given event to the specified channels and suspend execution until it has been dispatched. This method may only be invoked as argument to a r}r~}r(h4XFire the given event to the specified channels and suspend execution until it has been dispatched. This method may only be invoked as argument to a h5jyubh)r}r(h4X ``yield``h:}r(h<]h=]h>]h?]hB]uh5jyh/]rhNXyieldrr}r(h4Uh5jubah8hubhNX0 on the top execution level of a handler (e.g. "rr}r(h4X0 on the top execution level of a handler (e.g. "h5jyubh)r}r(h4X``yield self.callEvent(event)``h:}r(h<]h=]h>]h?]hB]uh5jyh/]rhNXyield self.callEvent(event)rr}r(h4Uh5jubah8hubhNX"). It effectively creates and returns a generator that will be invoked by the main loop until the event has been dispatched (see rr}r(h4X"). It effectively creates and returns a generator that will be invoked by the main loop until the event has been dispatched (see h5jyubh)r}r(h4X&:func:`circuits.core.handlers.handler`rh5jyh6Nh8hh:}r(UreftypeXfunchhXcircuits.core.handlers.handlerU refdomainXpyrh?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]rh)r}r(h4jh:}r(h<]h=]r(hjXpy-funcreh>]h?]hB]uh5jh/]rhNX circuits.core.handlers.handler()rr}r(h4Uh5jubah8hubaubhNX).rr}r(h4X).h5jyubeubaubeubhR)r}r(h4Uh5jh6Xl/home/prologic/work/circuits/circuits/core/manager.py:docstring of circuits.core.manager.Manager.flushEventsrh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX4flushEvents() (circuits.core.manager.Manager method)h UtrauhDNhEhh/]ubhm)r}r(h4Uh5jh6jh8hph:}r(hrhsXpyh?]h>]h<]h=]hB]htXmethodrhvjuhDNhEhh/]r(hx)r}r(h4XManager.flushEvents()h5jh6h{h8h|h:}r(h?]rh ahhXcircuits.core.managerrr}rbh>]h<]h=]hB]rh ahXManager.flushEventshjhuhDNhEhh/]r(h)r}r(h4X flushEventsh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNX flushEventsrr}r(h4Uh5jubaubjJ)r}r(h4Uh5jh6h{h8jMh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubh)r}r(h4Uh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rh[)r}r(h4XFlush all Events in the Event Queue. If called on a manager that is not the root of an object hierarchy, the invocation is delegated to the root manager.rh5jh6jh8h`h:}r(h<]h=]h>]h?]hB]uhDKhEhh/]rhNXFlush all Events in the Event Queue. If called on a manager that is not the root of an object hierarchy, the invocation is delegated to the root manager.rr}r(h4jh5jubaubaubeubhR)r}r(h4Uh5jh6Xf/home/prologic/work/circuits/circuits/core/manager.py:docstring of circuits.core.manager.Manager.flushrh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX.flush() (circuits.core.manager.Manager method)h$UtrauhDNhEhh/]ubhm)r}r(h4Uh5jh6jh8hph:}r(hrhsXpyh?]h>]h<]h=]hB]htXmethodrhvjuhDNhEhh/]r(hx)r}r(h4XManager.flush()h5jh6h{h8h|h:}r(h?]rh$ahhXcircuits.core.managerrr}rbh>]h<]h=]hB]rh$ahX Manager.flushhjhuhDNhEhh/]r(h)r}r(h4Xflushh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXflushrr}r(h4Uh5jubaubjJ)r}r(h4Uh5jh6h{h8jMh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubh)r}r(h4Uh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rh[)r}r(h4XFlush all Events in the Event Queue. If called on a manager that is not the root of an object hierarchy, the invocation is delegated to the root manager.rh5jh6jh8h`h:}r(h<]h=]h>]h?]hB]uhDKhEhh/]rhNXFlush all Events in the Event Queue. If called on a manager that is not the root of an object hierarchy, the invocation is delegated to the root manager.rr}r(h4jh5jubaubaubeubhR)r}r(h4Uh5jh6Xf/home/prologic/work/circuits/circuits/core/manager.py:docstring of circuits.core.manager.Manager.startrh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX.start() (circuits.core.manager.Manager method)hUtrauhDNhEhh/]ubhm)r}r(h4Uh5jh6jh8hph:}r(hrhsXpyh?]h>]h<]h=]hB]htXmethodrhvjuhDNhEhh/]r(hx)r}r(h4X'Manager.start(process=False, link=None)h5jh6h{h8h|h:}r(h?]rhahhXcircuits.core.managerr r }r bh>]h<]h=]hB]r hahX Manager.starthjhuhDNhEhh/]r (h)r}r(h4Xstarth5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXstartrr}r(h4Uh5jubaubjJ)r}r(h4Uh5jh6h{h8jMh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(jP)r}r(h4X process=Falseh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX process=Falserr}r(h4Uh5jubah8jXubjP)r }r!(h4X link=Noneh:}r"(h<]h=]h>]h?]hB]uh5jh/]r#hNX link=Noner$r%}r&(h4Uh5j ubah8jXubeubeubh)r'}r((h4Uh5jh6h{h8hh:}r)(h<]h=]h>]h?]hB]uhDNhEhh/]r*h[)r+}r,(h4XStart a new thread or process that invokes this manager's ``run()`` method. The invocation of this method returns immediately after the task or process has been started.h5j'h6jh8h`h:}r-(h<]h=]h>]h?]hB]uhDKhEhh/]r.(hNX:Start a new thread or process that invokes this manager's r/r0}r1(h4X:Start a new thread or process that invokes this manager's h5j+ubh)r2}r3(h4X ``run()``h:}r4(h<]h=]h>]h?]hB]uh5j+h/]r5hNXrun()r6r7}r8(h4Uh5j2ubah8hubhNXf method. The invocation of this method returns immediately after the task or process has been started.r9r:}r;(h4Xf method. The invocation of this method returns immediately after the task or process has been started.h5j+ubeubaubeubhR)r<}r=(h4Uh5jh6Nh8hVh:}r>(h?]h>]h<]h=]hB]Uentries]r?(hYX-join() (circuits.core.manager.Manager method)hUtr@auhDNhEhh/]ubhm)rA}rB(h4Uh5jh6Nh8hph:}rC(hrhsXpyh?]h>]h<]h=]hB]htXmethodrDhvjDuhDNhEhh/]rE(hx)rF}rG(h4XManager.join()h5jAh6h{h8h|h:}rH(h?]rIhahhXcircuits.core.managerrJrK}rLbh>]h<]h=]hB]rMhahX Manager.joinhjhuhDNhEhh/]rN(h)rO}rP(h4Xjoinh5jFh6h{h8hh:}rQ(h<]h=]h>]h?]hB]uhDNhEhh/]rRhNXjoinrSrT}rU(h4Uh5jOubaubjJ)rV}rW(h4Uh5jFh6h{h8jMh:}rX(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubh)rY}rZ(h4Uh5jAh6h{h8hh:}r[(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)r\}r](h4Uh5jh6Xe/home/prologic/work/circuits/circuits/core/manager.py:docstring of circuits.core.manager.Manager.stopr^h8hVh:}r_(h?]h>]h<]h=]hB]Uentries]r`(hYX-stop() (circuits.core.manager.Manager method)h#UtraauhDNhEhh/]ubhm)rb}rc(h4Uh5jh6j^h8hph:}rd(hrhsXpyh?]h>]h<]h=]hB]htXmethodrehvjeuhDNhEhh/]rf(hx)rg}rh(h4XManager.stop()h5jbh6h{h8h|h:}ri(h?]rjh#ahhXcircuits.core.managerrkrl}rmbh>]h<]h=]hB]rnh#ahX Manager.stophjhuhDNhEhh/]ro(h)rp}rq(h4Xstoph5jgh6h{h8hh:}rr(h<]h=]h>]h?]hB]uhDNhEhh/]rshNXstoprtru}rv(h4Uh5jpubaubjJ)rw}rx(h4Uh5jgh6h{h8jMh:}ry(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubh)rz}r{(h4Uh5jbh6h{h8hh:}r|(h<]h=]h>]h?]hB]uhDNhEhh/]r}h[)r~}r(h4XTStop this manager. Invoking this method causes an invocation of ``run()`` to return.h5jzh6j^h8h`h:}r(h<]h=]h>]h?]hB]uhDKhEhh/]r(hNX@Stop this manager. Invoking this method causes an invocation of rr}r(h4X@Stop this manager. Invoking this method causes an invocation of h5j~ubh)r}r(h4X ``run()``h:}r(h<]h=]h>]h?]hB]uh5j~h/]rhNXrun()rr}r(h4Uh5jubah8hubhNX to return.rr}r(h4X to return.h5j~ubeubaubeubhR)r}r(h4Uh5jh6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX4processTask() (circuits.core.manager.Manager method)hUtrauhDNhEhh/]ubhm)r}r(h4Uh5jh6Nh8hph:}r(hrhsXpyh?]h>]h<]h=]hB]htXmethodrhvjuhDNhEhh/]r(hx)r}r(h4X-Manager.processTask(event, task, parent=None)h5jh6h{h8h|h:}r(h?]rhahhXcircuits.core.managerrr}rbh>]h<]h=]hB]rhahXManager.processTaskhjhuhDNhEhh/]r(h)r}r(h4X processTaskh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNX processTaskrr}r(h4Uh5jubaubjJ)r}r(h4Uh5jh6h{h8jMh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(jP)r}r(h4Xeventh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXeventrr}r(h4Uh5jubah8jXubjP)r}r(h4Xtaskh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNXtaskrr}r(h4Uh5jubah8jXubjP)r}r(h4X parent=Noneh:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX parent=Nonerr}r(h4Uh5jubah8jXubeubeubh)r}r(h4Uh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]ubeubhR)r}r(h4Uh5jh6Nh8hVh:}r(h?]h>]h<]h=]hB]Uentries]r(hYX-tick() (circuits.core.manager.Manager method)h UtrauhDNhEhh/]ubhm)r}r(h4Uh5jh6Nh8hph:}r(hrhsXpyrh?]h>]h<]h=]hB]htXmethodrhvjuhDNhEhh/]r(hx)r}r(h4XManager.tick(timeout=-1)rh5jh6h{h8h|h:}r(h?]rh ahhXcircuits.core.managerrr}rbh>]h<]h=]hB]rh ahX Manager.tickhjhuhDNhEhh/]r(h)r}r(h4Xtickh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rhNXtickrr}r(h4Uh5jubaubjJ)r}r(h4Uh5jh6h{h8jMh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]rjP)r}r(h4X timeout=-1h:}r(h<]h=]h>]h?]hB]uh5jh/]rhNX timeout=-1rr}r(h4Uh5jubah8jXubaubeubh)r}r(h4Uh5jh6h{h8hh:}r(h<]h=]h>]h?]hB]uhDNhEhh/]r(h[)r}r(h4XExecute all possible actions once. Process all registered tasks and flush the event queue. If the application is running fire a GenerateEvents to get new events from sources.rh5jh6Xe/home/prologic/work/circuits/circuits/core/manager.py:docstring of circuits.core.manager.Manager.tickrh8h`h:}r(h<]h=]h>]h?]hB]uhDKhEhh/]rhNXExecute all possible actions once. Process all registered tasks and flush the event queue. If the application is running fire a GenerateEvents to get new events from sources.rr}r(h4jh5jubaubh[)r}r(h4XrThis method is usually invoked from :meth:`~.run`. It may also be used to build an application specific main loop.h5jh6jh8h`h:}r(h<]h=]h>]h?]hB]uhDKhEhh/]r(hNX$This method is usually invoked from rr}r(h4X$This method is usually invoked from h5jubh)r }r (h4X :meth:`~.run`r h5jh6Nh8hh:}r (UreftypeXmethjChhXrunU refdomainXpyr h?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]r h)r }r (h4j h:}r (h<]h=]r (hj Xpy-methr eh>]h?]hB]uh5j h/]r hNXrun()r r }r (h4Uh5j ubah8hubaubhNXA. It may also be used to build an application specific main loop.r r }r (h4XA. It may also be used to build an application specific main loop.h5jubeubj.)r }r (h4Uh5jh6Nh8j1h:}r (h<]h=]h>]h?]hB]uhDNhEhh/]r j4)r }r (h4Uh:}r (h<]h=]h>]h?]hB]uh5j h/]r (j9)r }r (h4Uh:}r (h<]h=]h>]h?]hB]uh5j h/]r hNX Parametersr r }r (h4Uh5j ubah8jAubjB)r! }r" (h4Uh:}r# (h<]h=]h>]h?]hB]uh5j h/]r$ h[)r% }r& (h4Uh:}r' (h<]h=]h>]h?]hB]uh5j! h/]r( (jU)r) }r* (h4Xtimeouth:}r+ (h<]h=]h>]h?]hB]uh5j% h/]r, hNXtimeoutr- r. }r/ (h4Uh5j) ubah8j]ubhNX (r0 r1 }r2 (h4Uh5j% ubh)r3 }r4 (h4Uh:}r5 (UreftypeUobjr6 U reftargetXfloat, measuring secondsr7 U refdomainjh?]h>]U refexplicith<]h=]hB]uh5j% h/]r8 cdocutils.nodes emphasis r9 )r: }r; (h4j7 h:}r< (h<]h=]h>]h?]hB]uh5j3 h/]r= hNXfloat, measuring secondsr> r? }r@ (h4Uh5j: ubah8UemphasisrA ubah8hubhNX)rB }rC (h4Uh5j% ubhNX -- rD rE }rF (h4Uh5j% ubhNXzthe maximum waiting time spent in this method. If negative, the method may block until at least one action has been taken.rG rH }rI (h4Xzthe maximum waiting time spent in this method. If negative, the method may block until at least one action has been taken.rJ h5j% ubeh8h`ubah8jubeh8jubaubeubeubhR)rK }rL (h4Uh5jh6Xd/home/prologic/work/circuits/circuits/core/manager.py:docstring of circuits.core.manager.Manager.runrM h8hVh:}rN (h?]h>]h<]h=]hB]Uentries]rO (hYX,run() (circuits.core.manager.Manager method)h UtrP auhDNhEhh/]ubhm)rQ }rR (h4Uh5jh6jM h8hph:}rS (hrhsXpyh?]h>]h<]h=]hB]htXmethodrT hvjT uhDNhEhh/]rU (hx)rV }rW (h4XManager.run(socket=None)rX h5jQ h6h{h8h|h:}rY (h?]rZ h ahhXcircuits.core.managerr[ r\ }r] bh>]h<]h=]hB]r^ h ahX Manager.runhjhuhDNhEhh/]r_ (h)r` }ra (h4Xrunh5jV h6h{h8hh:}rb (h<]h=]h>]h?]hB]uhDNhEhh/]rc hNXrunrd re }rf (h4Uh5j` ubaubjJ)rg }rh (h4Uh5jV h6h{h8jMh:}ri (h<]h=]h>]h?]hB]uhDNhEhh/]rj jP)rk }rl (h4X socket=Noneh:}rm (h<]h=]h>]h?]hB]uh5jg h/]rn hNX socket=Nonero rp }rq (h4Uh5jk ubah8jXubaubeubh)rr }rs (h4Uh5jQ h6h{h8hh:}rt (h<]h=]h>]h?]hB]uhDNhEhh/]ru (h[)rv }rw (h4XrRun this manager. The method fires the :class:`~.events.Started` event and then continuously calls :meth:`~.tick`.h5jr h6jM h8h`h:}rx (h<]h=]h>]h?]hB]uhDKhEhh/]ry (hNX'Run this manager. The method fires the rz r{ }r| (h4X'Run this manager. The method fires the h5jv ubh)r} }r~ (h4X:class:`~.events.Started`r h5jv h6Nh8hh:}r (UreftypeXclassjChhXevents.StartedU refdomainXpyr h?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]r h)r }r (h4j h:}r (h<]h=]r (hj Xpy-classr eh>]h?]hB]uh5j} h/]r hNXStartedr r }r (h4Uh5j ubah8hubaubhNX# event and then continuously calls r r }r (h4X# event and then continuously calls h5jv ubh)r }r (h4X:meth:`~.tick`r h5jv h6Nh8hh:}r (UreftypeXmethjChhXtickU refdomainXpyr h?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]r h)r }r (h4j h:}r (h<]h=]r (hj Xpy-methr eh>]h?]hB]uh5j h/]r hNXtick()r r }r (h4Uh5j ubah8hubaubhNX.r }r (h4X.h5jv ubeubh[)r }r (h4XGThe method returns when the manager's :meth:`~.stop` method is invoked.h5jr h6jM h8h`h:}r (h<]h=]h>]h?]hB]uhDKhEhh/]r (hNX&The method returns when the manager's r r }r (h4X&The method returns when the manager's h5j ubh)r }r (h4X:meth:`~.stop`r h5j h6Nh8hh:}r (UreftypeXmethjChhXstopU refdomainXpyr h?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]r h)r }r (h4j h:}r (h<]h=]r (hj Xpy-methr eh>]h?]hB]uh5j h/]r hNXstop()r r }r (h4Uh5j ubah8hubaubhNX method is invoked.r r }r (h4X method is invoked.h5j ubeubh[)r }r (h4XIf invoked by a programs main thread, a signal handler for the ``INT`` and ``TERM`` signals is installed. This handler fires the corresponding :class:`~.events.Signal` events and then calls :meth:`~.stop` for the manager.h5jr h6jM h8h`h:}r (h<]h=]h>]h?]hB]uhDKhEhh/]r (hNX?If invoked by a programs main thread, a signal handler for the r r }r (h4X?If invoked by a programs main thread, a signal handler for the h5j ubh)r }r (h4X``INT``h:}r (h<]h=]h>]h?]hB]uh5j h/]r hNXINTr r }r (h4Uh5j ubah8hubhNX and r r }r (h4X and h5j ubh)r }r (h4X``TERM``h:}r (h<]h=]h>]h?]hB]uh5j h/]r hNXTERMr r }r (h4Uh5j ubah8hubhNX< signals is installed. This handler fires the corresponding r r }r (h4X< signals is installed. This handler fires the corresponding h5j ubh)r }r (h4X:class:`~.events.Signal`r h5j h6Nh8hh:}r (UreftypeXclassjChhX events.SignalU refdomainXpyr h?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]r h)r }r (h4j h:}r (h<]h=]r (hj Xpy-classr eh>]h?]hB]uh5j h/]r hNXSignalr r }r (h4Uh5j ubah8hubaubhNX events and then calls r r }r (h4X events and then calls h5j ubh)r }r (h4X:meth:`~.stop`r h5j h6Nh8hh:}r (UreftypeXmethjChhXstopU refdomainXpyr h?]h>]U refexplicith<]h=]hB]hhhjhhuhDNh/]r h)r }r (h4j h:}r (h<]h=]r (hj Xpy-methr eh>]h?]hB]uh5j h/]r hNXstop()r r }r (h4Uh5j ubah8hubaubhNX for the manager.r r }r (h4X for the manager.h5j ubeubeubeubeubeubeubah4UU transformerr NU footnote_refsr }r Urefnamesr }r Usymbol_footnotesr ]r Uautofootnote_refsr ]r Usymbol_footnote_refsr ]r U citationsr ]r hEhU current_liner NUtransform_messagesr ]r Ureporterr 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 tracebackr Upep_referencesr NUstrip_commentsr NU toc_backlinksr Uentryr U language_coder Uenr U datestampr NU report_levelr KU _destinationr! NU halt_levelr" KU strip_classesr# NhKNUerror_encoding_error_handlerr$ Ubackslashreplacer% Udebugr& NUembed_stylesheetr' Uoutput_encoding_error_handlerr( Ustrictr) U sectnum_xformr* KUdump_transformsr+ NU docinfo_xformr, KUwarning_streamr- NUpep_file_url_templater. Upep-%04dr/ Uexit_status_levelr0 KUconfigr1 NUstrict_visitorr2 NUcloak_email_addressesr3 Utrim_footnote_reference_spacer4 Uenvr5 NUdump_pseudo_xmlr6 NUexpose_internalsr7 NUsectsubtitle_xformr8 U source_linkr9 NUrfc_referencesr: NUoutput_encodingr; Uutf-8r< U source_urlr= NUinput_encodingr> U utf-8-sigr? U_disable_configr@ NU id_prefixrA UU tab_widthrB KUerror_encodingrC UUTF-8rD U_sourcerE h7Ugettext_compactrF U generatorrG NUdump_internalsrH NU smart_quotesrI U pep_base_urlrJ Uhttp://www.python.org/dev/peps/rK Usyntax_highlightrL UlongrM Uinput_encoding_error_handlerrN j) Uauto_id_prefixrO UidrP Udoctitle_xformrQ Ustrip_elements_with_classesrR NU _config_filesrS ]Ufile_insertion_enabledrT U raw_enabledrU KU dump_settingsrV NubUsymbol_footnote_startrW KUidsrX }rY (hjhjhj,h jh jh jSh jh jV hjRhjhjhj}hjzhjhjyhjhjhjhjhjFhAcdocutils.nodes target rZ )r[ }r\ (h4Uh5h2h6hUh8Utargetr] h:}r^ (h<]h?]r_ hAah>]Uismodh=]hB]uhDKhEhh/]ubhhhjLhjhhyh.h2hjh jh!jh"j+h#jgh$juUsubstitution_namesr` }ra h8hEh:}rb (h<]h?]h>]Usourceh7h=]hB]uU footnotesrc ]rd Urefidsre }rf ub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.wsgi.doctree0000644000014400001440000004570312425011106025662 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.web.wsgi.ApplicationqXcircuits.web.wsgi moduleqNX%circuits.web.wsgi.Application.channelqX0circuits.web.wsgi.Application.getRequestResponseq Xcircuits.web.wsgi.Gateway.initq X"circuits.web.wsgi.Application.portq X!circuits.web.wsgi.Gateway.channelq X)circuits.web.wsgi.Application.headerNamesq Xcircuits.web.wsgi.GatewayqX.circuits.web.wsgi.Application.translateHeadersqX"circuits.web.wsgi.Application.hostqX circuits.web.wsgi.create_environqX&circuits.web.wsgi.Application.responseqX"circuits.web.wsgi.Application.initqX$circuits.web.wsgi.Application.securequUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhUcircuits-web-wsgi-moduleqhhh h h h h h h h h h hhhhhhhhhhhhhhuUchildrenq]q cdocutils.nodes section q!)q"}q#(U rawsourceq$UUparentq%hUsourceq&XB/home/prologic/work/circuits/docs/source/api/circuits.web.wsgi.rstq'Utagnameq(Usectionq)U attributesq*}q+(Udupnamesq,]Uclassesq-]Ubackrefsq.]Uidsq/]q0(Xmodule-circuits.web.wsgiq1heUnamesq2]q3hauUlineq4KUdocumentq5hh]q6(cdocutils.nodes title q7)q8}q9(h$Xcircuits.web.wsgi moduleq:h%h"h&h'h(Utitleq;h*}q<(h,]h-]h.]h/]h2]uh4Kh5hh]q=cdocutils.nodes Text q>Xcircuits.web.wsgi moduleq?q@}qA(h$h:h%h8ubaubcsphinx.addnodes index qB)qC}qD(h$Uh%h"h&U qEh(UindexqFh*}qG(h/]h.]h,]h-]h2]Uentries]qH(UsingleqIXcircuits.web.wsgi (module)Xmodule-circuits.web.wsgiUtqJauh4Kh5hh]ubcdocutils.nodes paragraph qK)qL}qM(h$XWSGI ComponentsqNh%h"h&XP/home/prologic/work/circuits/circuits/web/wsgi.py:docstring of circuits.web.wsgiqOh(U paragraphqPh*}qQ(h,]h-]h.]h/]h2]uh4Kh5hh]qRh>XWSGI ComponentsqSqT}qU(h$hNh%hLubaubhK)qV}qW(h$X'This module implements WSGI Components.qXh%h"h&hOh(hPh*}qY(h,]h-]h.]h/]h2]uh4Kh5hh]qZh>X'This module implements WSGI Components.q[q\}q](h$hXh%hVubaubhB)q^}q_(h$Uh%h"h&Nh(hFh*}q`(h/]h.]h,]h-]h2]Uentries]qa(hIX.create_environ() (in module circuits.web.wsgi)hUtqbauh4Nh5hh]ubcsphinx.addnodes desc qc)qd}qe(h$Uh%h"h&Nh(Udescqfh*}qg(UnoindexqhUdomainqiXpyh/]h.]h,]h-]h2]UobjtypeqjXfunctionqkUdesctypeqlhkuh4Nh5hh]qm(csphinx.addnodes desc_signature qn)qo}qp(h$X!create_environ(errors, path, req)h%hdh&U qqh(Udesc_signatureqrh*}qs(h/]qthaUmodulequcdocutils.nodes reprunicode qvXcircuits.web.wsgiqwqx}qybh.]h,]h-]h2]qzhaUfullnameq{Xcreate_environq|Uclassq}UUfirstq~uh4Nh5hh]q(csphinx.addnodes desc_addname q)q}q(h$Xcircuits.web.wsgi.h%hoh&hqh(U desc_addnameqh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]qh>Xcircuits.web.wsgi.qq}q(h$Uh%hubaubcsphinx.addnodes desc_name q)q}q(h$h|h%hoh&hqh(U desc_nameqh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]qh>Xcreate_environqq}q(h$Uh%hubaubcsphinx.addnodes desc_parameterlist q)q}q(h$Uh%hoh&hqh(Udesc_parameterlistqh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]q(csphinx.addnodes desc_parameter q)q}q(h$Xerrorsh*}q(h,]h-]h.]h/]h2]uh%hh]qh>Xerrorsqq}q(h$Uh%hubah(Udesc_parameterqubh)q}q(h$Xpathh*}q(h,]h-]h.]h/]h2]uh%hh]qh>Xpathqq}q(h$Uh%hubah(hubh)q}q(h$Xreqh*}q(h,]h-]h.]h/]h2]uh%hh]qh>Xreqqq}q(h$Uh%hubah(hubeubeubcsphinx.addnodes desc_content q)q}q(h$Uh%hdh&hqh(U desc_contentqh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)q}q(h$Uh%h"h&Nh(hFh*}q(h/]h.]h,]h-]h2]Uentries]q(hIX(Application (class in circuits.web.wsgi)hUtqauh4Nh5hh]ubhc)q}q(h$Uh%h"h&Nh(hfh*}q(hhhiXpyh/]h.]h,]h-]h2]hjXclassqhlhuh4Nh5hh]q(hn)q}q(h$XApplication(*args, **kwargs)h%hh&hqh(hrh*}q(h/]qhahuhvXcircuits.web.wsgiq…q}qbh.]h,]h-]h2]qhah{X Applicationqh}Uh~uh4Nh5hh]q(csphinx.addnodes desc_annotation q)q}q(h$Xclass h%hh&hqh(Udesc_annotationqh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]qh>Xclass q΅q}q(h$Uh%hubaubh)q}q(h$Xcircuits.web.wsgi.h%hh&hqh(hh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]qh>Xcircuits.web.wsgi.qՅq}q(h$Uh%hubaubh)q}q(h$hh%hh&hqh(hh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]qh>X Applicationq܅q}q(h$Uh%hubaubh)q}q(h$Uh%hh&hqh(hh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]q(h)q}q(h$X*argsh*}q(h,]h-]h.]h/]h2]uh%hh]qh>X*argsq煁q}q(h$Uh%hubah(hubh)q}q(h$X**kwargsh*}q(h,]h-]h.]h/]h2]uh%hh]qh>X**kwargsqq}q(h$Uh%hubah(hubeubeubh)q}q(h$Uh%hh&hqh(hh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]q(hK)q}q(h$X6Bases: :class:`circuits.core.components.BaseComponent`h%hh&U qh(hPh*}q(h,]h-]h.]h/]h2]uh4Kh5hh]q(h>XBases: qq}q(h$XBases: h%hubcsphinx.addnodes pending_xref q)q}q(h$X/:class:`circuits.core.components.BaseComponent`rh%hh&Nh(U pending_xrefrh*}r(UreftypeXclassUrefwarnrU reftargetrX&circuits.core.components.BaseComponentU refdomainXpyrh/]h.]U refexplicith,]h-]h2]UrefdocrXapi/circuits.web.wsgirUpy:classrhU py:moduler Xcircuits.web.wsgir uh4Nh]r cdocutils.nodes literal r )r }r(h$jh*}r(h,]h-]r(UxrefrjXpy-classreh.]h/]h2]uh%hh]rh>X&circuits.core.components.BaseComponentrr}r(h$Uh%j ubah(UliteralrubaubeubhK)r}r(h$X4initializes x; see x.__class__.__doc__ for signaturerh%hh&X\/home/prologic/work/circuits/circuits/web/wsgi.py:docstring of circuits.web.wsgi.Applicationrh(hPh*}r(h,]h-]h.]h/]h2]uh4Kh5hh]rh>X4initializes x; see x.__class__.__doc__ for signaturerr}r (h$jh%jubaubhB)r!}r"(h$Uh%hh&Nh(hFh*}r#(h/]h.]h,]h-]h2]Uentries]r$(hIX1channel (circuits.web.wsgi.Application attribute)hUtr%auh4Nh5hh]ubhc)r&}r'(h$Uh%hh&Nh(hfh*}r((hhhiXpyh/]h.]h,]h-]h2]hjX attributer)hlj)uh4Nh5hh]r*(hn)r+}r,(h$XApplication.channelh%j&h&U r-h(hrh*}r.(h/]r/hahuhvXcircuits.web.wsgir0r1}r2bh.]h,]h-]h2]r3hah{XApplication.channelh}hh~uh4Nh5hh]r4(h)r5}r6(h$Xchannelh%j+h&j-h(hh*}r7(h,]h-]h.]h/]h2]uh4Nh5hh]r8h>Xchannelr9r:}r;(h$Uh%j5ubaubh)r<}r=(h$X = 'web'h%j+h&j-h(hh*}r>(h,]h-]h.]h/]h2]uh4Nh5hh]r?h>X = 'web'r@rA}rB(h$Uh%j<ubaubeubh)rC}rD(h$Uh%j&h&j-h(hh*}rE(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)rF}rG(h$Uh%hh&Nh(hFh*}rH(h/]h.]h,]h-]h2]Uentries]rI(hIX5headerNames (circuits.web.wsgi.Application attribute)h UtrJauh4Nh5hh]ubhc)rK}rL(h$Uh%hh&Nh(hfh*}rM(hhhiXpyh/]h.]h,]h-]h2]hjX attributerNhljNuh4Nh5hh]rO(hn)rP}rQ(h$XApplication.headerNamesh%jKh&j-h(hrh*}rR(h/]rSh ahuhvXcircuits.web.wsgirTrU}rVbh.]h,]h-]h2]rWh ah{XApplication.headerNamesh}hh~uh4Nh5hh]rX(h)rY}rZ(h$X headerNamesh%jPh&j-h(hh*}r[(h,]h-]h.]h/]h2]uh4Nh5hh]r\h>X headerNamesr]r^}r_(h$Uh%jYubaubh)r`}ra(h$X = {'CONTENT_LENGTH': 'Content-Length', 'REMOTE_HOST': 'Remote-Host', 'CONTENT_TYPE': 'Content-Type', 'HTTP_CGI_AUTHORIZATION': 'Authorization', 'REMOTE_ADDR': 'Remote-Addr'}h%jPh&j-h(hh*}rb(h,]h-]h.]h/]h2]uh4Nh5hh]rch>X = {'CONTENT_LENGTH': 'Content-Length', 'REMOTE_HOST': 'Remote-Host', 'CONTENT_TYPE': 'Content-Type', 'HTTP_CGI_AUTHORIZATION': 'Authorization', 'REMOTE_ADDR': 'Remote-Addr'}rdre}rf(h$Uh%j`ubaubeubh)rg}rh(h$Uh%jKh&j-h(hh*}ri(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)rj}rk(h$Uh%hh&Nh(hFh*}rl(h/]h.]h,]h-]h2]Uentries]rm(hIX-init() (circuits.web.wsgi.Application method)hUtrnauh4Nh5hh]ubhc)ro}rp(h$Uh%hh&Nh(hfh*}rq(hhhiXpyh/]h.]h,]h-]h2]hjXmethodrrhljruh4Nh5hh]rs(hn)rt}ru(h$XApplication.init()h%joh&hqh(hrh*}rv(h/]rwhahuhvXcircuits.web.wsgirxry}rzbh.]h,]h-]h2]r{hah{XApplication.inith}hh~uh4Nh5hh]r|(h)r}}r~(h$Xinith%jth&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>Xinitrr}r(h$Uh%j}ubaubh)r}r(h$Uh%jth&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubh)r}r(h$Uh%joh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)r}r(h$Uh%hh&Nh(hFh*}r(h/]h.]h,]h-]h2]Uentries]r(hIX9translateHeaders() (circuits.web.wsgi.Application method)hUtrauh4Nh5hh]ubhc)r}r(h$Uh%hh&Nh(hfh*}r(hhhiXpyh/]h.]h,]h-]h2]hjXmethodrhljuh4Nh5hh]r(hn)r}r(h$X%Application.translateHeaders(environ)h%jh&hqh(hrh*}r(h/]rhahuhvXcircuits.web.wsgirr}rbh.]h,]h-]h2]rhah{XApplication.translateHeadersh}hh~uh4Nh5hh]r(h)r}r(h$XtranslateHeadersh%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>XtranslateHeadersrr}r(h$Uh%jubaubh)r}r(h$Uh%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh)r}r(h$Xenvironh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xenvironrr}r(h$Uh%jubah(hubaubeubh)r}r(h$Uh%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)r}r(h$Uh%hh&Nh(hFh*}r(h/]h.]h,]h-]h2]Uentries]r(hIX;getRequestResponse() (circuits.web.wsgi.Application method)h Utrauh4Nh5hh]ubhc)r}r(h$Uh%hh&Nh(hfh*}r(hhhiXpyh/]h.]h,]h-]h2]hjXmethodrhljuh4Nh5hh]r(hn)r}r(h$X'Application.getRequestResponse(environ)h%jh&hqh(hrh*}r(h/]rh ahuhvXcircuits.web.wsgirr}rbh.]h,]h-]h2]rh ah{XApplication.getRequestResponseh}hh~uh4Nh5hh]r(h)r}r(h$XgetRequestResponseh%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>XgetRequestResponserr}r(h$Uh%jubaubh)r}r(h$Uh%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh)r}r(h$Xenvironh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xenvironrr}r(h$Uh%jubah(hubaubeubh)r}r(h$Uh%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)r}r(h$Uh%hh&Nh(hFh*}r(h/]h.]h,]h-]h2]Uentries]r(hIX1response() (circuits.web.wsgi.Application method)hUtrauh4Nh5hh]ubhc)r}r(h$Uh%hh&Nh(hfh*}r(hhhiXpyh/]h.]h,]h-]h2]hjXmethodrhljuh4Nh5hh]r(hn)r}r(h$X%Application.response(event, response)h%jh&hqh(hrh*}r(h/]rhahuhvXcircuits.web.wsgirr}rbh.]h,]h-]h2]rhah{XApplication.responseh}hh~uh4Nh5hh]r(h)r}r(h$Xresponseh%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>Xresponserr}r(h$Uh%jubaubh)r}r(h$Uh%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]r(h)r}r(h$Xeventh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xeventrr}r(h$Uh%jubah(hubh)r}r(h$Xresponseh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xresponserr}r(h$Uh%jubah(hubeubeubh)r}r(h$Uh%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)r }r (h$Uh%hh&Nh(hFh*}r (h/]h.]h,]h-]h2]Uentries]r (hIX.host (circuits.web.wsgi.Application attribute)hUtr auh4Nh5hh]ubhc)r}r(h$Uh%hh&Nh(hfh*}r(hhhiXpyh/]h.]h,]h-]h2]hjX attributerhljuh4Nh5hh]r(hn)r}r(h$XApplication.hosth%jh&hqh(hrh*}r(h/]rhahuhvXcircuits.web.wsgirr}rbh.]h,]h-]h2]rhah{XApplication.hosth}hh~uh4Nh5hh]rh)r}r(h$Xhosth%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>Xhostr r!}r"(h$Uh%jubaubaubh)r#}r$(h$Uh%jh&hqh(hh*}r%(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)r&}r'(h$Uh%hh&Nh(hFh*}r((h/]h.]h,]h-]h2]Uentries]r)(hIX.port (circuits.web.wsgi.Application attribute)h Utr*auh4Nh5hh]ubhc)r+}r,(h$Uh%hh&Nh(hfh*}r-(hhhiXpyh/]h.]h,]h-]h2]hjX attributer.hlj.uh4Nh5hh]r/(hn)r0}r1(h$XApplication.porth%j+h&hqh(hrh*}r2(h/]r3h ahuhvXcircuits.web.wsgir4r5}r6bh.]h,]h-]h2]r7h ah{XApplication.porth}hh~uh4Nh5hh]r8h)r9}r:(h$Xporth%j0h&hqh(hh*}r;(h,]h-]h.]h/]h2]uh4Nh5hh]r<h>Xportr=r>}r?(h$Uh%j9ubaubaubh)r@}rA(h$Uh%j+h&hqh(hh*}rB(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)rC}rD(h$Uh%hh&Nh(hFh*}rE(h/]h.]h,]h-]h2]Uentries]rF(hIX0secure (circuits.web.wsgi.Application attribute)hUtrGauh4Nh5hh]ubhc)rH}rI(h$Uh%hh&Nh(hfh*}rJ(hhhiXpyh/]h.]h,]h-]h2]hjX attributerKhljKuh4Nh5hh]rL(hn)rM}rN(h$XApplication.secureh%jHh&hqh(hrh*}rO(h/]rPhahuhvXcircuits.web.wsgirQrR}rSbh.]h,]h-]h2]rThah{XApplication.secureh}hh~uh4Nh5hh]rUh)rV}rW(h$Xsecureh%jMh&hqh(hh*}rX(h,]h-]h.]h/]h2]uh4Nh5hh]rYh>XsecurerZr[}r\(h$Uh%jVubaubaubh)r]}r^(h$Uh%jHh&hqh(hh*}r_(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubeubeubhB)r`}ra(h$Uh%h"h&Nh(hFh*}rb(h/]h.]h,]h-]h2]Uentries]rc(hIX$Gateway (class in circuits.web.wsgi)hUtrdauh4Nh5hh]ubhc)re}rf(h$Uh%h"h&Nh(hfh*}rg(hhhiXpyh/]h.]h,]h-]h2]hjXclassrhhljhuh4Nh5hh]ri(hn)rj}rk(h$XGateway(*args, **kwargs)h%jeh&hqh(hrh*}rl(h/]rmhahuhvXcircuits.web.wsgirnro}rpbh.]h,]h-]h2]rqhah{XGatewayrrh}Uh~uh4Nh5hh]rs(h)rt}ru(h$Xclass h%jjh&hqh(hh*}rv(h,]h-]h.]h/]h2]uh4Nh5hh]rwh>Xclass rxry}rz(h$Uh%jtubaubh)r{}r|(h$Xcircuits.web.wsgi.h%jjh&hqh(hh*}r}(h,]h-]h.]h/]h2]uh4Nh5hh]r~h>Xcircuits.web.wsgi.rr}r(h$Uh%j{ubaubh)r}r(h$jrh%jjh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>XGatewayrr}r(h$Uh%jubaubh)r}r(h$Uh%jjh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]r(h)r}r(h$X*argsh*}r(h,]h-]h.]h/]h2]uh%jh]rh>X*argsrr}r(h$Uh%jubah(hubh)r}r(h$X**kwargsh*}r(h,]h-]h.]h/]h2]uh%jh]rh>X**kwargsrr}r(h$Uh%jubah(hubeubeubh)r}r(h$Uh%jeh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]r(hK)r}r(h$X6Bases: :class:`circuits.core.components.BaseComponent`rh%jh&hh(hPh*}r(h,]h-]h.]h/]h2]uh4Kh5hh]r(h>XBases: rr}r(h$XBases: h%jubh)r}r(h$X/:class:`circuits.core.components.BaseComponent`rh%jh&Nh(jh*}r(UreftypeXclassjjX&circuits.core.components.BaseComponentU refdomainXpyrh/]h.]U refexplicith,]h-]h2]jjjjrj j uh4Nh]rj )r}r(h$jh*}r(h,]h-]r(jjXpy-classreh.]h/]h2]uh%jh]rh>X&circuits.core.components.BaseComponentrr}r(h$Uh%jubah(jubaubeubhK)r}r(h$X4initializes x; see x.__class__.__doc__ for signaturerh%jh&XX/home/prologic/work/circuits/circuits/web/wsgi.py:docstring of circuits.web.wsgi.Gatewayrh(hPh*}r(h,]h-]h.]h/]h2]uh4Kh5hh]rh>X4initializes x; see x.__class__.__doc__ for signaturerr}r(h$jh%jubaubhB)r}r(h$Uh%jh&Nh(hFh*}r(h/]h.]h,]h-]h2]Uentries]r(hIX-channel (circuits.web.wsgi.Gateway attribute)h Utrauh4Nh5hh]ubhc)r}r(h$Uh%jh&Nh(hfh*}r(hhhiXpyh/]h.]h,]h-]h2]hjX attributerhljuh4Nh5hh]r(hn)r}r(h$XGateway.channelh%jh&j-h(hrh*}r(h/]rh ahuhvXcircuits.web.wsgirr}rbh.]h,]h-]h2]rh ah{XGateway.channelh}jrh~uh4Nh5hh]r(h)r}r(h$Xchannelh%jh&j-h(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>Xchannelrr}r(h$Uh%jubaubh)r}r(h$X = 'web'h%jh&j-h(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>X = 'web'rr}r(h$Uh%jubaubeubh)r}r(h$Uh%jh&j-h(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)r}r(h$Uh%jh&Nh(hFh*}r(h/]h.]h,]h-]h2]Uentries]r(hIX)init() (circuits.web.wsgi.Gateway method)h Utrauh4Nh5hh]ubhc)r}r(h$Uh%jh&Nh(hfh*}r(hhhiXpyh/]h.]h,]h-]h2]hjXmethodrhljuh4Nh5hh]r(hn)r}r(h$XGateway.init(apps)rh%jh&hqh(hrh*}r(h/]rh ahuhvXcircuits.web.wsgirr}rbh.]h,]h-]h2]rh ah{X Gateway.inith}jrh~uh4Nh5hh]r(h)r}r(h$Xinith%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>Xinitrr}r(h$Uh%jubaubh)r}r(h$Uh%jh&hqh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh)r}r(h$Xappsh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xappsrr}r(h$Uh%jubah(hubaubeubh)r }r (h$Uh%jh&hqh(hh*}r (h,]h-]h.]h/]h2]uh4Nh5hh]ubeubeubeubeubah$UU transformerr NU footnote_refsr }rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh5hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU 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,Upep_referencesr-NUstrip_commentsr.NU toc_backlinksr/Uentryr0U language_coder1Uenr2U datestampr3NU report_levelr4KU _destinationr5NU halt_levelr6KU strip_classesr7Nh;NUerror_encoding_error_handlerr8Ubackslashreplacer9Udebugr:NUembed_stylesheetr;Uoutput_encoding_error_handlerr<Ustrictr=U sectnum_xformr>KUdump_transformsr?NU docinfo_xformr@KUwarning_streamrANUpep_file_url_templaterBUpep-%04drCUexit_status_levelrDKUconfigrENUstrict_visitorrFNUcloak_email_addressesrGUtrim_footnote_reference_spacerHUenvrINUdump_pseudo_xmlrJNUexpose_internalsrKNUsectsubtitle_xformrLU source_linkrMNUrfc_referencesrNNUoutput_encodingrOUutf-8rPU source_urlrQNUinput_encodingrRU utf-8-sigrSU_disable_configrTNU id_prefixrUUU tab_widthrVKUerror_encodingrWUUTF-8rXU_sourcerYh'Ugettext_compactrZU generatorr[NUdump_internalsr\NU smart_quotesr]U pep_base_urlr^Uhttp://www.python.org/dev/peps/r_Usyntax_highlightr`UlongraUinput_encoding_error_handlerrbj=Uauto_id_prefixrcUidrdUdoctitle_xformreUstrip_elements_with_classesrfNU _config_filesrg]Ufile_insertion_enabledrhU raw_enabledriKU dump_settingsrjNubUsymbol_footnote_startrkKUidsrl}rm(hhhjhj+h1cdocutils.nodes target rn)ro}rp(h$Uh%h"h&hEh(Utargetrqh*}rr(h,]h/]rsh1ah.]Uismodh-]h2]uh4Kh5hh]ubh jhh"h jh j0h jh jPhjjhjhhohjhjthjMuUsubstitution_namesrt}ruh(h5h*}rv(h,]h/]h.]Usourceh'h-]h2]uU footnotesrw]rxUrefidsry}rzub.circuits-3.1.0/docs/build/doctrees/api/circuits.core.workers.doctree0000644000014400001440000004664012425011102026555 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.core.workers.WorkerqX$circuits.core.workers.Worker.channelqX"circuits.core.workers.task.failureqX!circuits.core.workers.Worker.initq X"circuits.core.workers.task.successq Xcircuits.core.workers moduleq NXcircuits.core.workers.taskq Xcircuits.core.workers.task.nameq uUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh h h h h Ucircuits-core-workers-moduleqh h h h uUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXF/home/prologic/work/circuits/docs/source/api/circuits.core.workers.rstq Utagnameq!Usectionq"U attributesq#}q$(Udupnamesq%]Uclassesq&]Ubackrefsq']Uidsq(]q)(Xmodule-circuits.core.workersq*heUnamesq+]q,h auUlineq-KUdocumentq.hh]q/(cdocutils.nodes title q0)q1}q2(hXcircuits.core.workers moduleq3hhhh h!Utitleq4h#}q5(h%]h&]h']h(]h+]uh-Kh.hh]q6cdocutils.nodes Text q7Xcircuits.core.workers moduleq8q9}q:(hh3hh1ubaubcsphinx.addnodes index q;)q<}q=(hUhhhU q>h!Uindexq?h#}q@(h(]h']h%]h&]h+]Uentries]qA(UsingleqBXcircuits.core.workers (module)Xmodule-circuits.core.workersUtqCauh-Kh.hh]ubcdocutils.nodes paragraph qD)qE}qF(hXWorkersqGhhhXX/home/prologic/work/circuits/circuits/core/workers.py:docstring of circuits.core.workersqHh!U paragraphqIh#}qJ(h%]h&]h']h(]h+]uh-Kh.hh]qKh7XWorkersqLqM}qN(hhGhhEubaubhD)qO}qP(hXWorker components used to perform "work" in independent threads or processes. Worker(s) are typically used by a Pool (circuits.core.pools) to create a pool of workers. Worker(s) are not registered with a Manager or another Component - instead they are managed by the Pool. If a Worker is used independently it should not be registered as it causes its main event handler ``_on_task`` to execute in the other thread blocking it.hhhhHh!hIh#}qQ(h%]h&]h']h(]h+]uh-Kh.hh]qR(h7XsWorker components used to perform "work" in independent threads or processes. Worker(s) are typically used by a Pool (circuits.core.pools) to create a pool of workers. Worker(s) are not registered with a Manager or another Component - instead they are managed by the Pool. If a Worker is used independently it should not be registered as it causes its main event handler qSqT}qU(hXsWorker components used to perform "work" in independent threads or processes. Worker(s) are typically used by a Pool (circuits.core.pools) to create a pool of workers. Worker(s) are not registered with a Manager or another Component - instead they are managed by the Pool. If a Worker is used independently it should not be registered as it causes its main event handler hhOubcdocutils.nodes literal qV)qW}qX(hX ``_on_task``h#}qY(h%]h&]h']h(]h+]uhhOh]qZh7X_on_taskq[q\}q](hUhhWubah!Uliteralq^ubh7X, to execute in the other thread blocking it.q_q`}qa(hX, to execute in the other thread blocking it.hhOubeubh;)qb}qc(hUhhhNh!h?h#}qd(h(]h']h%]h&]h+]Uentries]qe(hBX%task (class in circuits.core.workers)h Utqfauh-Nh.hh]ubcsphinx.addnodes desc qg)qh}qi(hUhhhNh!Udescqjh#}qk(UnoindexqlUdomainqmXpyqnh(]h']h%]h&]h+]UobjtypeqoXclassqpUdesctypeqqhpuh-Nh.hh]qr(csphinx.addnodes desc_signature qs)qt}qu(hXtask(f, *args, **kwargs)hhhhU qvh!Udesc_signatureqwh#}qx(h(]qyh aUmoduleqzcdocutils.nodes reprunicode q{Xcircuits.core.workersq|q}}q~bh']h%]h&]h+]qh aUfullnameqXtaskqUclassqUUfirstquh-Nh.hh]q(csphinx.addnodes desc_annotation q)q}q(hXclass hhthhvh!Udesc_annotationqh#}q(h%]h&]h']h(]h+]uh-Nh.hh]qh7Xclass qq}q(hUhhubaubcsphinx.addnodes desc_addname q)q}q(hXcircuits.core.workers.hhthhvh!U desc_addnameqh#}q(h%]h&]h']h(]h+]uh-Nh.hh]qh7Xcircuits.core.workers.qq}q(hUhhubaubcsphinx.addnodes desc_name q)q}q(hhhhthhvh!U desc_nameqh#}q(h%]h&]h']h(]h+]uh-Nh.hh]qh7Xtaskqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhthhvh!Udesc_parameterlistqh#}q(h%]h&]h']h(]h+]uh-Nh.hh]q(csphinx.addnodes desc_parameter q)q}q(hXfh#}q(h%]h&]h']h(]h+]uhhh]qh7Xfq}q(hUhhubah!Udesc_parameterqubh)q}q(hX*argsh#}q(h%]h&]h']h(]h+]uhhh]qh7X*argsqq}q(hUhhubah!hubh)q}q(hX**kwargsh#}q(h%]h&]h']h(]h+]uhhh]qh7X**kwargsqq}q(hUhhubah!hubeubeubcsphinx.addnodes desc_content q)q}q(hUhhhhhvh!U desc_contentqh#}q(h%]h&]h']h(]h+]uh-Nh.hh]q(hD)q}q(hX*Bases: :class:`circuits.core.events.Event`hhhU qh!hIh#}q(h%]h&]h']h(]h+]uh-Kh.hh]q(h7XBases: qDžq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX#:class:`circuits.core.events.Event`qhhhNh!U pending_xrefqh#}q(UreftypeXclassUrefwarnqЉU reftargetqXcircuits.core.events.EventU refdomainXpyqh(]h']U refexplicith%]h&]h+]UrefdocqXapi/circuits.core.workersqUpy:classqhU py:moduleqXcircuits.core.workersquh-Nh]qhV)q}q(hhh#}q(h%]h&]q(UxrefqhXpy-classqeh']h(]h+]uhhh]qh7Xcircuits.core.events.Eventqq}q(hUhhubah!h^ubaubeubhD)q}q(hX task EventqhhhX]/home/prologic/work/circuits/circuits/core/workers.py:docstring of circuits.core.workers.taskqh!hIh#}q(h%]h&]h']h(]h+]uh-Kh.hh]qh7X task Eventq酁q}q(hhhhubaubhD)q}q(hX]This Event is used to initiate a new task to be performed by a Worker or a Pool of Worker(s).qhhhhh!hIh#}q(h%]h&]h']h(]h+]uh-Kh.hh]qh7X]This Event is used to initiate a new task to be performed by a Worker or a Pool of Worker(s).qq}q(hhhhubaubcdocutils.nodes field_list q)q}q(hUhhhNh!U field_listqh#}q(h%]h&]h']h(]h+]uh-Nh.hh]qcdocutils.nodes field q)q}q(hUh#}q(h%]h&]h']h(]h+]uhhh]q(cdocutils.nodes field_name q)r}r(hUh#}r(h%]h&]h']h(]h+]uhhh]rh7X Parametersrr}r(hUhjubah!U field_namerubcdocutils.nodes field_body r)r }r (hUh#}r (h%]h&]h']h(]h+]uhhh]r cdocutils.nodes bullet_list r )r}r(hUh#}r(h%]h&]h']h(]h+]uhj h]r(cdocutils.nodes list_item r)r}r(hUh#}r(h%]h&]h']h(]h+]uhjh]rhD)r}r(hUh#}r(h%]h&]h']h(]h+]uhjh]r(cdocutils.nodes strong r)r}r(hXfh#}r(h%]h&]h']h(]h+]uhjh]rh7Xfr }r!(hUhjubah!Ustrongr"ubh7X (r#r$}r%(hUhjubh)r&}r'(hUh#}r((UreftypeUobjr)U reftargetXfunctionr*U refdomainhnh(]h']U refexplicith%]h&]h+]uhjh]r+cdocutils.nodes emphasis r,)r-}r.(hj*h#}r/(h%]h&]h']h(]h+]uhj&h]r0h7Xfunctionr1r2}r3(hUhj-ubah!Uemphasisr4ubah!hubh7X)r5}r6(hUhjubh7X -- r7r8}r9(hUhjubh7XThe function to be executed.r:r;}r<(hXThe function to be executed.r=hjubeh!hIubah!U list_itemr>ubj)r?}r@(hUh#}rA(h%]h&]h']h(]h+]uhjh]rBhD)rC}rD(hUh#}rE(h%]h&]h']h(]h+]uhj?h]rF(j)rG}rH(hXargsh#}rI(h%]h&]h']h(]h+]uhjCh]rJh7XargsrKrL}rM(hUhjGubah!j"ubh7X (rNrO}rP(hUhjCubh)rQ}rR(hUh#}rS(Ureftypej)U reftargetXtuplerTU refdomainhnh(]h']U refexplicith%]h&]h+]uhjCh]rUj,)rV}rW(hjTh#}rX(h%]h&]h']h(]h+]uhjQh]rYh7XtuplerZr[}r\(hUhjVubah!j4ubah!hubh7X)r]}r^(hUhjCubh7X -- r_r`}ra(hUhjCubh7X!Arguments to pass to the functionrbrc}rd(hX!Arguments to pass to the functionrehjCubeh!hIubah!j>ubj)rf}rg(hUh#}rh(h%]h&]h']h(]h+]uhjh]rihD)rj}rk(hUh#}rl(h%]h&]h']h(]h+]uhjfh]rm(j)rn}ro(hXkwargsh#}rp(h%]h&]h']h(]h+]uhjjh]rqh7Xkwargsrrrs}rt(hUhjnubah!j"ubh7X (rurv}rw(hUhjjubh)rx}ry(hUh#}rz(Ureftypej)U reftargetXdictr{U refdomainhnh(]h']U refexplicith%]h&]h+]uhjjh]r|j,)r}}r~(hj{h#}r(h%]h&]h']h(]h+]uhjxh]rh7Xdictrr}r(hUhj}ubah!j4ubah!hubh7X)r}r(hUhjjubh7X -- rr}r(hUhjjubh7X)Keyword Arguments to pass to the functionrr}r(hX)Keyword Arguments to pass to the functionrhjjubeh!hIubah!j>ubeh!U bullet_listrubah!U field_bodyrubeh!UfieldrubaubhD)r}r(hXDx.__init__(...) initializes x; see x.__class__.__doc__ for signaturerhhhhh!hIh#}r(h%]h&]h']h(]h+]uh-Kh.hh]rh7XDx.__init__(...) initializes x; see x.__class__.__doc__ for signaturerr}r(hjhjubaubh;)r}r(hUhhhNh!h?h#}r(h(]h']h%]h&]h+]Uentries]r(hBX.success (circuits.core.workers.task attribute)h Utrauh-Nh.hh]ubhg)r}r(hUhhhNh!hjh#}r(hlhmXpyh(]h']h%]h&]h+]hoX attributerhqjuh-Nh.hh]r(hs)r}r(hX task.successhjhU rh!hwh#}r(h(]rh ahzh{Xcircuits.core.workersrr}rbh']h%]h&]h+]rh ahX task.successhhhuh-Nh.hh]r(h)r}r(hXsuccesshjhjh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]rh7Xsuccessrr}r(hUhjubaubh)r}r(hX = Truehjhjh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]rh7X = Truerr}r(hUhjubaubeubh)r}r(hUhjhjh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]ubeubh;)r}r(hUhhhNh!h?h#}r(h(]h']h%]h&]h+]Uentries]r(hBX.failure (circuits.core.workers.task attribute)hUtrauh-Nh.hh]ubhg)r}r(hUhhhNh!hjh#}r(hlhmXpyh(]h']h%]h&]h+]hoX attributerhqjuh-Nh.hh]r(hs)r}r(hX task.failurehjhjh!hwh#}r(h(]rhahzh{Xcircuits.core.workersrr}rbh']h%]h&]h+]rhahX task.failurehhhuh-Nh.hh]r(h)r}r(hXfailurehjhjh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]rh7Xfailurerr}r(hUhjubaubh)r}r(hX = Truehjhjh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]rh7X = Truerr}r(hUhjubaubeubh)r}r(hUhjhjh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]ubeubh;)r}r(hUhhhNh!h?h#}r(h(]h']h%]h&]h+]Uentries]r(hBX+name (circuits.core.workers.task attribute)h Utrauh-Nh.hh]ubhg)r}r(hUhhhNh!hjh#}r(hlhmXpyh(]h']h%]h&]h+]hoX attributerhqjuh-Nh.hh]r(hs)r}r(hX task.namehjhjh!hwh#}r(h(]rh ahzh{Xcircuits.core.workersrr}rbh']h%]h&]h+]rh ahX task.namehhhuh-Nh.hh]r(h)r}r(hXnamehjhjh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]rh7Xnamerr}r(hUhjubaubh)r}r(hX = 'task'hjhjh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]rh7X = 'task'rr}r(hUhjubaubeubh)r}r(hUhjhjh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]ubeubeubeubh;)r}r(hUhhhNh!h?h#}r(h(]h']h%]h&]h+]Uentries]r(hBX'Worker (class in circuits.core.workers)hUtr auh-Nh.hh]ubhg)r }r (hUhhhNh!hjh#}r (hlhmXpyr h(]h']h%]h&]h+]hoXclassrhqjuh-Nh.hh]r(hs)r}r(hXWorker(*args, **kwargs)hj hhvh!hwh#}r(h(]rhahzh{Xcircuits.core.workersrr}rbh']h%]h&]h+]rhahXWorkerrhUhuh-Nh.hh]r(h)r}r(hXclass hjhhvh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]rh7Xclass rr}r (hUhjubaubh)r!}r"(hXcircuits.core.workers.hjhhvh!hh#}r#(h%]h&]h']h(]h+]uh-Nh.hh]r$h7Xcircuits.core.workers.r%r&}r'(hUhj!ubaubh)r(}r)(hjhjhhvh!hh#}r*(h%]h&]h']h(]h+]uh-Nh.hh]r+h7XWorkerr,r-}r.(hUhj(ubaubh)r/}r0(hUhjhhvh!hh#}r1(h%]h&]h']h(]h+]uh-Nh.hh]r2(h)r3}r4(hX*argsh#}r5(h%]h&]h']h(]h+]uhj/h]r6h7X*argsr7r8}r9(hUhj3ubah!hubh)r:}r;(hX**kwargsh#}r<(h%]h&]h']h(]h+]uhj/h]r=h7X**kwargsr>r?}r@(hUhj:ubah!hubeubeubh)rA}rB(hUhj hhvh!hh#}rC(h%]h&]h']h(]h+]uh-Nh.hh]rD(hD)rE}rF(hX6Bases: :class:`circuits.core.components.BaseComponent`rGhjAhhh!hIh#}rH(h%]h&]h']h(]h+]uh-Kh.hh]rI(h7XBases: rJrK}rL(hXBases: hjEubh)rM}rN(hX/:class:`circuits.core.components.BaseComponent`rOhjEhNh!hh#}rP(UreftypeXclasshЉhX&circuits.core.components.BaseComponentU refdomainXpyrQh(]h']U refexplicith%]h&]h+]hhhjhhuh-Nh]rRhV)rS}rT(hjOh#}rU(h%]h&]rV(hjQXpy-classrWeh']h(]h+]uhjMh]rXh7X&circuits.core.components.BaseComponentrYrZ}r[(hUhjSubah!h^ubaubeubhD)r\}r](hX!A thread/process Worker Componentr^hjAhX_/home/prologic/work/circuits/circuits/core/workers.py:docstring of circuits.core.workers.Workerr_h!hIh#}r`(h%]h&]h']h(]h+]uh-Kh.hh]rah7X!A thread/process Worker Componentrbrc}rd(hj^hj\ubaubhD)re}rf(hXThis Component creates a Worker (either a thread or process) which when given a ``Task``, will execute the given function in the task in the background in its thread/process.hjAhj_h!hIh#}rg(h%]h&]h']h(]h+]uh-Kh.hh]rh(h7XPThis Component creates a Worker (either a thread or process) which when given a rirj}rk(hXPThis Component creates a Worker (either a thread or process) which when given a hjeubhV)rl}rm(hX``Task``h#}rn(h%]h&]h']h(]h+]uhjeh]roh7XTaskrprq}rr(hUhjlubah!h^ubh7XV, will execute the given function in the task in the background in its thread/process.rsrt}ru(hXV, will execute the given function in the task in the background in its thread/process.hjeubeubh)rv}rw(hUhjAhNh!hh#}rx(h%]h&]h']h(]h+]uh-Nh.hh]ryh)rz}r{(hUh#}r|(h%]h&]h']h(]h+]uhjvh]r}(h)r~}r(hUh#}r(h%]h&]h']h(]h+]uhjzh]rh7X Parametersrr}r(hUhj~ubah!jubj)r}r(hUh#}r(h%]h&]h']h(]h+]uhjzh]rhD)r}r(hUh#}r(h%]h&]h']h(]h+]uhjh]r(j)r}r(hXprocessh#}r(h%]h&]h']h(]h+]uhjh]rh7Xprocessrr}r(hUhjubah!j"ubh7X (rr}r(hUhjubh)r}r(hUh#}r(Ureftypej)U reftargetXboolrU refdomainj h(]h']U refexplicith%]h&]h+]uhjh]rj,)r}r(hjh#}r(h%]h&]h']h(]h+]uhjh]rh7Xboolrr}r(hUhjubah!j4ubah!hubh7X)r}r(hUhjubh7X -- rr}r(hUhjubh7X9True to start this Worker as a process (Thread otherwise)rr}r(hX9True to start this Worker as a process (Thread otherwise)rhjubeh!hIubah!jubeh!jubaubhD)r}r(hX4initializes x; see x.__class__.__doc__ for signaturerhjAhj_h!hIh#}r(h%]h&]h']h(]h+]uh-K h.hh]rh7X4initializes x; see x.__class__.__doc__ for signaturerr}r(hjhjubaubh;)r}r(hUhjAhNh!h?h#}r(h(]h']h%]h&]h+]Uentries]r(hBX0channel (circuits.core.workers.Worker attribute)hUtrauh-Nh.hh]ubhg)r}r(hUhjAhNh!hjh#}r(hlhmXpyh(]h']h%]h&]h+]hoX attributerhqjuh-Nh.hh]r(hs)r}r(hXWorker.channelhjhjh!hwh#}r(h(]rhahzh{Xcircuits.core.workersrr}rbh']h%]h&]h+]rhahXWorker.channelhjhuh-Nh.hh]r(h)r}r(hXchannelhjhjh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]rh7Xchannelrr}r(hUhjubaubh)r}r(hX = 'worker'hjhjh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]rh7X = 'worker'rr}r(hUhjubaubeubh)r}r(hUhjhjh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]ubeubh;)r}r(hUhjAhNh!h?h#}r(h(]h']h%]h&]h+]Uentries]r(hBX,init() (circuits.core.workers.Worker method)h Utrauh-Nh.hh]ubhg)r}r(hUhjAhNh!hjh#}r(hlhmXpyh(]h']h%]h&]h+]hoXmethodrhqjuh-Nh.hh]r(hs)r}r(hX:Worker.init(process=False, workers=None, channel='worker')hjhhvh!hwh#}r(h(]rh ahzh{Xcircuits.core.workersrr}rbh']h%]h&]h+]rh ahX Worker.inithjhuh-Nh.hh]r(h)r}r(hXinithjhhvh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]rh7Xinitrr}r(hUhjubaubh)r}r(hUhjhhvh!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh]r(h)r}r(hX process=Falseh#}r(h%]h&]h']h(]h+]uhjh]rh7X process=Falserr}r(hUhjubah!hubh)r}r(hX workers=Noneh#}r(h%]h&]h']h(]h+]uhjh]rh7X workers=Nonerr}r(hUhjubah!hubh)r}r(hXchannel='worker'h#}r(h%]h&]h']h(]h+]uhjh]rh7Xchannel='worker'rr }r (hUhjubah!hubeubeubh)r }r (hUhjhhvh!hh#}r (h%]h&]h']h(]h+]uh-Nh.hh]ubeubeubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh.hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU 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.Upep_referencesr/NUstrip_commentsr0NU toc_backlinksr1Uentryr2U language_coder3Uenr4U datestampr5NU report_levelr6KU _destinationr7NU halt_levelr8KU strip_classesr9Nh4NUerror_encoding_error_handlerr:Ubackslashreplacer;Udebugr<NUembed_stylesheetr=Uoutput_encoding_error_handlerr>Ustrictr?U sectnum_xformr@KUdump_transformsrANU docinfo_xformrBKUwarning_streamrCNUpep_file_url_templaterDUpep-%04drEUexit_status_levelrFKUconfigrGNUstrict_visitorrHNUcloak_email_addressesrIUtrim_footnote_reference_spacerJUenvrKNUdump_pseudo_xmlrLNUexpose_internalsrMNUsectsubtitle_xformrNU source_linkrONUrfc_referencesrPNUoutput_encodingrQUutf-8rRU source_urlrSNUinput_encodingrTU utf-8-sigrUU_disable_configrVNU id_prefixrWUU tab_widthrXKUerror_encodingrYUUTF-8rZU_sourcer[h Ugettext_compactr\U generatorr]NUdump_internalsr^NU smart_quotesr_U pep_base_urlr`Uhttp://www.python.org/dev/peps/raUsyntax_highlightrbUlongrcUinput_encoding_error_handlerrdj?Uauto_id_prefixreUidrfUdoctitle_xformrgUstrip_elements_with_classesrhNU _config_filesri]Ufile_insertion_enabledrjU raw_enabledrkKU dump_settingsrlNubUsymbol_footnote_startrmKUidsrn}ro(hjhjhhh*cdocutils.nodes target rp)rq}rr(hUhhhh>h!Utargetrsh#}rt(h%]h(]ruh*ah']Uismodh&]h+]uh-Kh.hh]ubh jh jhjh hth juUsubstitution_namesrv}rwh!h.h#}rx(h%]h(]h']Usourceh h&]h+]uU footnotesry]rzUrefidsr{}r|ub.circuits-3.1.0/docs/build/doctrees/api/circuits.core.helpers.doctree0000644000014400001440000003124112425011102026512 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X+circuits.core.helpers.FallBackSignalHandlerqX.circuits.core.helpers.FallBackGenerator.resumeqX'circuits.core.helpers.FallBackGeneratorqXcircuits.core.helpers moduleq NX.circuits.core.helpers.FallBackExceptionHandlerq uUsubstitution_defsq }q Uparse_messagesq ]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh Ucircuits-core-helpers-moduleqh h uUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXF/home/prologic/work/circuits/docs/source/api/circuits.core.helpers.rstqUtagnameqUsectionqU attributesq }q!(Udupnamesq"]Uclassesq#]Ubackrefsq$]Uidsq%]q&(Xmodule-circuits.core.helpersq'heUnamesq(]q)h auUlineq*KUdocumentq+hh]q,(cdocutils.nodes title q-)q.}q/(hXcircuits.core.helpers moduleq0hhhhhUtitleq1h }q2(h"]h#]h$]h%]h(]uh*Kh+hh]q3cdocutils.nodes Text q4Xcircuits.core.helpers moduleq5q6}q7(hh0hh.ubaubcsphinx.addnodes index q8)q9}q:(hUhhhU q;hUindexq(Usingleq?Xcircuits.core.helpers (module)Xmodule-circuits.core.helpersUtq@auh*Kh+hh]ubcdocutils.nodes comment qA)qB}qC(hXcodeauthor: mnlhhhh;hUcommentqDh }qE(U xml:spaceqFUpreserveqGh%]h$]h"]h#]h(]uh*Kh+hh]qHh4Xcodeauthor: mnlqIqJ}qK(hUhhBubaubh8)qL}qM(hUhhhNhhq_hUdesc_signatureq`h }qa(h%]qbhaUmoduleqccdocutils.nodes reprunicode qdXcircuits.core.helpersqeqf}qgbh$]h"]h#]h(]qhhaUfullnameqiXFallBackGeneratorqjUclassqkUUfirstqluh*Nh+hh]qm(csphinx.addnodes desc_annotation qn)qo}qp(hXclass hh]hh_hUdesc_annotationqqh }qr(h"]h#]h$]h%]h(]uh*Nh+hh]qsh4Xclass qtqu}qv(hUhhoubaubcsphinx.addnodes desc_addname qw)qx}qy(hXcircuits.core.helpers.hh]hh_hU desc_addnameqzh }q{(h"]h#]h$]h%]h(]uh*Nh+hh]q|h4Xcircuits.core.helpers.q}q~}q(hUhhxubaubcsphinx.addnodes desc_name q)q}q(hhjhh]hh_hU desc_nameqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qh4XFallBackGeneratorqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhh]hh_hUdesc_parameterlistqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]q(csphinx.addnodes desc_parameter q)q}q(hX*argsh }q(h"]h#]h$]h%]h(]uhhh]qh4X*argsqq}q(hUhhubahUdesc_parameterqubh)q}q(hX**kwargsh }q(h"]h#]h$]h%]h(]uhhh]qh4X**kwargsqq}q(hUhhubahhubeubeubcsphinx.addnodes desc_content q)q}q(hUhhRhh_hU desc_contentqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]q(cdocutils.nodes paragraph q)q}q(hX6Bases: :class:`circuits.core.components.BaseComponent`qhhhU qhU paragraphqh }q(h"]h#]h$]h%]h(]uh*Kh+hh]q(h4XBases: qq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX/:class:`circuits.core.components.BaseComponent`qhhhNhU pending_xrefqh }q(UreftypeXclassUrefwarnqU reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqh%]h$]U refexplicith"]h#]h(]UrefdocqXapi/circuits.core.helpersqUpy:classqhjU py:moduleqXcircuits.core.helpersquh*Nh]qcdocutils.nodes literal q)q}q(hhh }q(h"]h#]q(UxrefqhXpy-classqeh$]h%]h(]uhhh]qh4X&circuits.core.components.BaseComponentqDžq}q(hUhhubahUliteralqubaubeubh8)q}q(hUhhhXq/home/prologic/work/circuits/circuits/core/helpers.py:docstring of circuits.core.helpers.FallBackGenerator.resumeqhh(h"]h#]h$]h%]h(]uhj1h]r?h4X**kwargsr@rA}rB(hUhj<ubahhubeubeubh)rC}rD(hUhj hh_hhh }rE(h"]h#]h$]h%]h(]uh*Nh+hh]rF(h)rG}rH(hX6Bases: :class:`circuits.core.components.BaseComponent`hjChhhhh }rI(h"]h#]h$]h%]h(]uh*Kh+hh]rJ(h4XBases: rKrL}rM(hXBases: hjGubh)rN}rO(hX/:class:`circuits.core.components.BaseComponent`rPhjGhNhhh }rQ(UreftypeXclasshhX&circuits.core.components.BaseComponentU refdomainXpyrRh%]h$]U refexplicith"]h#]h(]hhhjhhuh*Nh]rSh)rT}rU(hjPh }rV(h"]h#]rW(hjRXpy-classrXeh$]h%]h(]uhjNh]rYh4X&circuits.core.components.BaseComponentrZr[}r\(hUhjTubahhubaubeubh)r]}r^(hXIf there is no handler for error events in the component hierarchy, this component's handler is added automatically. It simply prints the error information on stderr.r_hjChj hhh }r`(h"]h#]h$]h%]h(]uh*Kh+hh]rah4XIf there is no handler for error events in the component hierarchy, this component's handler is added automatically. It simply prints the error information on stderr.rbrc}rd(hj_hj]ubaubh)re}rf(hX4initializes x; see x.__class__.__doc__ for signaturerghjChj hhh }rh(h"]h#]h$]h%]h(]uh*Kh+hh]rih4X4initializes x; see x.__class__.__doc__ for signaturerjrk}rl(hjghjeubaubeubeubh8)rm}rn(hUhhhXn/home/prologic/work/circuits/circuits/core/helpers.py:docstring of circuits.core.helpers.FallBackSignalHandlerrohh(h"]h%]h$]Usourcehh#]h(]uU footnotesr?]r@UrefidsrA}rBub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.dispatchers.jsonrpc.doctree0000644000014400001440000004637012425011104030676 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X(circuits.web.dispatchers.jsonrpc.JSONRPCqX)circuits.web.dispatchers.jsonrpc.rpc.nameqX$circuits.web.dispatchers.jsonrpc.rpcqX0circuits.web.dispatchers.jsonrpc.JSONRPC.channelq X'circuits.web.dispatchers.jsonrpc moduleq NuUsubstitution_defsq }q Uparse_messagesq ]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh h h U'circuits-web-dispatchers-jsonrpc-modulequUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXQ/home/prologic/work/circuits/docs/source/api/circuits.web.dispatchers.jsonrpc.rstqUtagnameqUsectionqU attributesq }q!(Udupnamesq"]Uclassesq#]Ubackrefsq$]Uidsq%]q&(X'module-circuits.web.dispatchers.jsonrpcq'heUnamesq(]q)h auUlineq*KUdocumentq+hh]q,(cdocutils.nodes title q-)q.}q/(hX'circuits.web.dispatchers.jsonrpc moduleq0hhhhhUtitleq1h }q2(h"]h#]h$]h%]h(]uh*Kh+hh]q3cdocutils.nodes Text q4X'circuits.web.dispatchers.jsonrpc moduleq5q6}q7(hh0hh.ubaubcsphinx.addnodes index q8)q9}q:(hUhhhU q;hUindexq(Usingleq?X)circuits.web.dispatchers.jsonrpc (module)X'module-circuits.web.dispatchers.jsonrpcUtq@auh*Kh+hh]ubcdocutils.nodes paragraph qA)qB}qC(hXJSON RPCqDhhhXn/home/prologic/work/circuits/circuits/web/dispatchers/jsonrpc.py:docstring of circuits.web.dispatchers.jsonrpcqEhU paragraphqFh }qG(h"]h#]h$]h%]h(]uh*Kh+hh]qHh4XJSON RPCqIqJ}qK(hhDhhBubaubhA)qL}qM(hXjThis module implements a JSON RPC dispatcher that translates incoming RPC calls over JSON into RPC events.qNhhhhEhhFh }qO(h"]h#]h$]h%]h(]uh*Kh+hh]qPh4XjThis module implements a JSON RPC dispatcher that translates incoming RPC calls over JSON into RPC events.qQqR}qS(hhNhhLubaubh8)qT}qU(hUhhhNhhqhhUdesc_signatureqih }qj(h%]qkhaUmoduleqlcdocutils.nodes reprunicode qmX circuits.web.dispatchers.jsonrpcqnqo}qpbh$]h"]h#]h(]qqhaUfullnameqrXrpcqsUclassqtUUfirstquuh*Nh+hh]qv(csphinx.addnodes desc_annotation qw)qx}qy(hXclass hhfhhhhUdesc_annotationqzh }q{(h"]h#]h$]h%]h(]uh*Nh+hh]q|h4Xclass q}q~}q(hUhhxubaubcsphinx.addnodes desc_addname q)q}q(hX!circuits.web.dispatchers.jsonrpc.hhfhhhhU desc_addnameqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qh4X!circuits.web.dispatchers.jsonrpc.qq}q(hUhhubaubcsphinx.addnodes desc_name q)q}q(hhshhfhhhhU desc_nameqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]qh4Xrpcqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhfhhhhUdesc_parameterlistqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]q(csphinx.addnodes desc_parameter q)q}q(hX*argsh }q(h"]h#]h$]h%]h(]uhhh]qh4X*argsqq}q(hUhhubahUdesc_parameterqubh)q}q(hX**kwargsh }q(h"]h#]h$]h%]h(]uhhh]qh4X**kwargsqq}q(hUhhubahhubeubeubcsphinx.addnodes desc_content q)q}q(hUhhZhhhhU desc_contentqh }q(h"]h#]h$]h%]h(]uh*Nh+hh]q(hA)q}q(hX*Bases: :class:`circuits.core.events.Event`hhhU qhhFh }q(h"]h#]h$]h%]h(]uh*Kh+hh]q(h4XBases: qq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX#:class:`circuits.core.events.Event`qhhhNhU pending_xrefqh }q(UreftypeXclassUrefwarnqU reftargetqXcircuits.core.events.EventU refdomainXpyqh%]h$]U refexplicith"]h#]h(]UrefdocqX$api/circuits.web.dispatchers.jsonrpcqUpy:classqhsU py:moduleqX circuits.web.dispatchers.jsonrpcquh*Nh]qcdocutils.nodes literal q)q}q(hhh }q(h"]h#]q(UxrefqhXpy-classqeh$]h%]h(]uhhh]qh4Xcircuits.core.events.Eventqͅq}q(hUhhubahUliteralqubaubeubhA)q}q(hX RPC EventqhhhXr/home/prologic/work/circuits/circuits/web/dispatchers/jsonrpc.py:docstring of circuits.web.dispatchers.jsonrpc.rpcqhhFh }q(h"]h#]h$]h%]h(]uh*Kh+hh]qh4X RPC Eventqׅq}q(hhhhubaubhA)q}q(hXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.qhhhhhhFh }q(h"]h#]h$]h%]h(]uh*Kh+hh]qh4XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.q߅q}q(hhhhubaubhA)q}q(hXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.qhhhhhhFh }q(h"]h#]h$]h%]h(]uh*Kh+hh]qh4XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.q煁q}q(hhhhubaubhA)q}q(hX_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.hhhhhhFh }q(h"]h#]h$]h%]h(]uh*K h+hh]q(h4XEvery event has a qq}q(hXEvery event has a hhubh)q}q(hX :attr:`name`qhhhNhhh }q(UreftypeXattrhhXnameU refdomainXpyqh%]h$]U refexplicith"]h#]h(]hhhhshhuh*Nh]qh)q}q(hhh }q(h"]h#]q(hhXpy-attrqeh$]h%]h(]uhhh]qh4Xnameqq}q(hUhhubahhubaubh4XA attribute that is used for matching the event with the handlers.rr}r(hXA attribute that is used for matching the event with the handlers.hhubeubcdocutils.nodes field_list r)r}r(hUhhhNhU field_listrh }r(h"]h#]h$]h%]h(]uh*Nh+hh]rcdocutils.nodes field r )r }r (hUh }r (h"]h#]h$]h%]h(]uhjh]r (cdocutils.nodes field_name r)r}r(hUh }r(h"]h#]h$]h%]h(]uhj h]rh4X Variablesrr}r(hUhjubahU field_namerubcdocutils.nodes field_body r)r}r(hUh }r(h"]h#]h$]h%]h(]uhj h]rcdocutils.nodes bullet_list r)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]r (cdocutils.nodes list_item r!)r"}r#(hUh }r$(h"]h#]h$]h%]h(]uhjh]r%hA)r&}r'(hUh }r((h"]h#]h$]h%]h(]uhj"h]r)(h)r*}r+(hUh }r,(UreftypeUobjr-U reftargetXchannelsr.U refdomainh`h%]h$]U refexplicith"]h#]h(]uhj&h]r/cdocutils.nodes strong r0)r1}r2(hj.h }r3(h"]h#]h$]h%]h(]uhj*h]r4h4Xchannelsr5r6}r7(hUhj1ubahUstrongr8ubahhubh4X -- r9r:}r;(hUhj&ubhA)r<}r=(hXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.r>hj&hhhhFh }r?(h"]h#]h$]h%]h(]uh*Kh]r@h4Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rArB}rC(hj>hj<ubaubhA)rD}rE(hXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rFhj&hhhhFh }rG(h"]h#]h$]h%]h(]uh*Kh]rHh4XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rIrJ}rK(hjFhjDubaubehhFubahU list_itemrLubj!)rM}rN(hUh }rO(h"]h#]h$]h%]h(]uhjh]rPhA)rQ}rR(hUh }rS(h"]h#]h$]h%]h(]uhjMh]rT(h)rU}rV(hUh }rW(Ureftypej-U reftargetXvaluerXU refdomainh`h%]h$]U refexplicith"]h#]h(]uhjQh]rYj0)rZ}r[(hjXh }r\(h"]h#]h$]h%]h(]uhjUh]r]h4Xvaluer^r_}r`(hUhjZubahj8ubahhubh4X -- rarb}rc(hUhjQubh4X this is a rdre}rf(hX this is a hjQubh)rg}rh(hX#:class:`circuits.core.values.Value`rihjQhNhhh }rj(UreftypeXclasshhXcircuits.core.values.ValueU refdomainXpyrkh%]h$]U refexplicith"]h#]h(]hhhhshhuh*Nh]rlh)rm}rn(hjih }ro(h"]h#]rp(hjkXpy-classrqeh$]h%]h(]uhjgh]rrh4Xcircuits.core.values.Valuersrt}ru(hUhjmubahhubaubh4XN object that holds the results returned by the handlers invoked for the event.rvrw}rx(hXN object that holds the results returned by the handlers invoked for the event.hjQubehhFubahjLubj!)ry}rz(hUh }r{(h"]h#]h$]h%]h(]uhjh]r|hA)r}}r~(hUh }r(h"]h#]h$]h%]h(]uhjyh]r(h)r}r(hUh }r(Ureftypej-U reftargetXsuccessrU refdomainh`h%]h$]U refexplicith"]h#]h(]uhj}h]rj0)r}r(hjh }r(h"]h#]h$]h%]h(]uhjh]rh4Xsuccessrr}r(hUhjubahj8ubahhubh4X -- rr}r(hUhj}ubh4X%if this optional attribute is set to rr}r(hX%if this optional attribute is set to hj}ubh)r}r(hX``True``h }r(h"]h#]h$]h%]h(]uhj}h]rh4XTruerr}r(hUhjubahhubh4X, an associated event rr}r(hX, an associated event hj}ubh)r}r(hX ``success``h }r(h"]h#]h$]h%]h(]uhj}h]rh4Xsuccessrr}r(hUhjubahhubh4X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(hX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.hj}ubehhFubahjLubj!)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]rhA)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]r(h)r}r(hUh }r(Ureftypej-U reftargetXsuccess_channelsrU refdomainh`h%]h$]U refexplicith"]h#]h(]uhjh]rj0)r}r(hjh }r(h"]h#]h$]h%]h(]uhjh]rh4Xsuccess_channelsrr}r(hUhjubahj8ubahhubh4X -- rr}r(hUhjubh4Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(hXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rhjubehhFubahjLubj!)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]rhA)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]r(h)r}r(hUh }r(Ureftypej-U reftargetXcompleterU refdomainh`h%]h$]U refexplicith"]h#]h(]uhjh]rj0)r}r(hjh }r(h"]h#]h$]h%]h(]uhjh]rh4Xcompleterr}r(hUhjubahj8ubahhubh4X -- rr}r(hUhjubh4X%if this optional attribute is set to rr}r(hX%if this optional attribute is set to hjubh)r}r(hX``True``h }r(h"]h#]h$]h%]h(]uhjh]rh4XTruerr}r(hUhjubahhubh4X, an associated event rr}r(hX, an associated event hjubh)r}r(hX ``complete``h }r(h"]h#]h$]h%]h(]uhjh]rh4Xcompleterr}r(hUhjubahhubh4X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rr}r(hX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.hjubehhFubahjLubj!)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]rhA)r}r(hUh }r(h"]h#]h$]h%]h(]uhjh]r(h)r}r(hUh }r(Ureftypej-U reftargetXcomplete_channelsrU refdomainh`h%]h$]U refexplicith"]h#]h(]uhjh]rj0)r}r(hjh }r(h"]h#]h$]h%]h(]uhjh]rh4Xcomplete_channelsrr}r(hUhjubahj8ubahhubh4X -- rr}r(hUhjubh4Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r (hXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r hjubehhFubahjLubehU bullet_listr ubahU field_bodyr ubehUfieldr ubaubh8)r}r(hUhhhNhhrhhih }r(h%]rhahlhmX circuits.web.dispatchers.jsonrpcrr}rbh$]h"]h#]h(]r hahrXrpc.namehthshuuh*Nh+hh]r!(h)r"}r#(hXnamehjhjhhh }r$(h"]h#]h$]h%]h(]uh*Nh+hh]r%h4Xnamer&r'}r((hUhj"ubaubhw)r)}r*(hX = 'rpc'hjhjhhzh }r+(h"]h#]h$]h%]h(]uh*Nh+hh]r,h4X = 'rpc'r-r.}r/(hUhj)ubaubeubh)r0}r1(hUhjhjhhh }r2(h"]h#]h$]h%]h(]uh*Nh+hh]ubeubeubeubh8)r3}r4(hUhhhNhh(hX5JSONRPC(path=None, encoding='utf-8', rpc_channel='*')hj8hhhhhih }r?(h%]r@hahlhmX circuits.web.dispatchers.jsonrpcrArB}rCbh$]h"]h#]h(]rDhahrXJSONRPCrEhtUhuuh*Nh+hh]rF(hw)rG}rH(hXclass hj=hhhhhzh }rI(h"]h#]h$]h%]h(]uh*Nh+hh]rJh4Xclass rKrL}rM(hUhjGubaubh)rN}rO(hX!circuits.web.dispatchers.jsonrpc.hj=hhhhhh }rP(h"]h#]h$]h%]h(]uh*Nh+hh]rQh4X!circuits.web.dispatchers.jsonrpc.rRrS}rT(hUhjNubaubh)rU}rV(hjEhj=hhhhhh }rW(h"]h#]h$]h%]h(]uh*Nh+hh]rXh4XJSONRPCrYrZ}r[(hUhjUubaubh)r\}r](hUhj=hhhhhh }r^(h"]h#]h$]h%]h(]uh*Nh+hh]r_(h)r`}ra(hX path=Noneh }rb(h"]h#]h$]h%]h(]uhj\h]rch4X path=Nonerdre}rf(hUhj`ubahhubh)rg}rh(hXencoding='utf-8'h }ri(h"]h#]h$]h%]h(]uhj\h]rjh4Xencoding='utf-8'rkrl}rm(hUhjgubahhubh)rn}ro(hXrpc_channel='*'h }rp(h"]h#]h$]h%]h(]uhj\h]rqh4Xrpc_channel='*'rrrs}rt(hUhjnubahhubeubeubh)ru}rv(hUhj8hhhhhh }rw(h"]h#]h$]h%]h(]uh*Nh+hh]rx(hA)ry}rz(hX6Bases: :class:`circuits.core.components.BaseComponent`r{hjuhhhhFh }r|(h"]h#]h$]h%]h(]uh*Kh+hh]r}(h4XBases: r~r}r(hXBases: hjyubh)r}r(hX/:class:`circuits.core.components.BaseComponent`rhjyhNhhh }r(UreftypeXclasshhX&circuits.core.components.BaseComponentU refdomainXpyrh%]h$]U refexplicith"]h#]h(]hhhjEhhuh*Nh]rh)r}r(hjh }r(h"]h#]r(hjXpy-classreh$]h%]h(]uhjh]rh4X&circuits.core.components.BaseComponentrr}r(hUhjubahhubaubeubh8)r}r(hUhjuhNhhh-}q?(h/]h0]h1]h2]h5]uh7Kh8hh"]q@cdocutils.nodes Text qAXcircuits.web.events moduleqBqC}qD(h'h=h(h;ubaubcsphinx.addnodes index qE)qF}qG(h'Uh(h%h)U qHh+UindexqIh-}qJ(h2]h1]h/]h0]h5]Uentries]qK(UsingleqLXcircuits.web.events (module)Xmodule-circuits.web.eventsUtqMauh7Kh8hh"]ubcdocutils.nodes paragraph qN)qO}qP(h'XEventsqQh(h%h)XT/home/prologic/work/circuits/circuits/web/events.py:docstring of circuits.web.eventsqRh+U paragraphqSh-}qT(h/]h0]h1]h2]h5]uh7Kh8hh"]qUhAXEventsqVqW}qX(h'hQh(hOubaubhN)qY}qZ(h'X3This module implements the necessary Events needed.q[h(h%h)hRh+hSh-}q\(h/]h0]h1]h2]h5]uh7Kh8hh"]q]hAX3This module implements the necessary Events needed.q^q_}q`(h'h[h(hYubaubhE)qa}qb(h'Uh(h%h)Nh+hIh-}qc(h2]h1]h/]h0]h5]Uentries]qd(hLX&request (class in circuits.web.events)hUtqeauh7Nh8hh"]ubcsphinx.addnodes desc qf)qg}qh(h'Uh(h%h)Nh+Udescqih-}qj(UnoindexqkUdomainqlXpyqmh2]h1]h/]h0]h5]UobjtypeqnXclassqoUdesctypeqphouh7Nh8hh"]qq(csphinx.addnodes desc_signature qr)qs}qt(h'Xrequest(*args, **kwargs)h(hgh)U quh+Udesc_signatureqvh-}qw(h2]qxhaUmoduleqycdocutils.nodes reprunicode qzXcircuits.web.eventsq{q|}q}bh1]h/]h0]h5]q~haUfullnameqXrequestqUclassqUUfirstquh7Nh8hh"]q(csphinx.addnodes desc_annotation q)q}q(h'Xclass h(hsh)huh+Udesc_annotationqh-}q(h/]h0]h1]h2]h5]uh7Nh8hh"]qhAXclass qq}q(h'Uh(hubaubcsphinx.addnodes desc_addname q)q}q(h'Xcircuits.web.events.h(hsh)huh+U desc_addnameqh-}q(h/]h0]h1]h2]h5]uh7Nh8hh"]qhAXcircuits.web.events.qq}q(h'Uh(hubaubcsphinx.addnodes desc_name q)q}q(h'hh(hsh)huh+U desc_nameqh-}q(h/]h0]h1]h2]h5]uh7Nh8hh"]qhAXrequestqq}q(h'Uh(hubaubcsphinx.addnodes desc_parameterlist q)q}q(h'Uh(hsh)huh+Udesc_parameterlistqh-}q(h/]h0]h1]h2]h5]uh7Nh8hh"]q(csphinx.addnodes desc_parameter q)q}q(h'X*argsh-}q(h/]h0]h1]h2]h5]uh(hh"]qhAX*argsqq}q(h'Uh(hubah+Udesc_parameterqubh)q}q(h'X**kwargsh-}q(h/]h0]h1]h2]h5]uh(hh"]qhAX**kwargsqq}q(h'Uh(hubah+hubeubeubcsphinx.addnodes desc_content q)q}q(h'Uh(hgh)huh+U desc_contentqh-}q(h/]h0]h1]h2]h5]uh7Nh8hh"]q(hN)q}q(h'X*Bases: :class:`circuits.core.events.Event`h(hh)U qh+hSh-}q(h/]h0]h1]h2]h5]uh7Kh8hh"]q(hAXBases: qq}q(h'XBases: h(hubcsphinx.addnodes pending_xref q)q}q(h'X#:class:`circuits.core.events.Event`qh(hh)Nh+U pending_xrefqh-}q(UreftypeXclassUrefwarnqɉU reftargetqXcircuits.core.events.EventU refdomainXpyqh2]h1]U refexplicith/]h0]h5]UrefdocqXapi/circuits.web.eventsqUpy:classqhU py:moduleqXcircuits.web.eventsquh7Nh"]qcdocutils.nodes literal q)q}q(h'hh-}q(h/]h0]q(UxrefqhXpy-classqeh1]h2]h5]uh(hh"]qhAXcircuits.core.events.Eventqڅq}q(h'Uh(hubah+UliteralqubaubeubhN)q}q(h'Xrequest(Event) -> request Eventqh(hh)X\/home/prologic/work/circuits/circuits/web/events.py:docstring of circuits.web.events.requestqh+hSh-}q(h/]h0]h1]h2]h5]uh7Kh8hh"]qhAXrequest(Event) -> request Eventq䅁q}q(h'hh(hubaubhN)q}q(h'Xargs: request, responseqh(hh)hh+hSh-}q(h/]h0]h1]h2]h5]uh7Kh8hh"]qhAXargs: request, responseq셁q}q(h'hh(hubaubhN)q}q(h'XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.qh(hh)hh+hSh-}q(h/]h0]h1]h2]h5]uh7Kh8hh"]qhAXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.qq}q(h'hh(hubaubhN)q}q(h'XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.qh(hh)hh+hSh-}q(h/]h0]h1]h2]h5]uh7K h8hh"]qhAXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.qq}q(h'hh(hubaubhN)q}r(h'X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h(hh)hh+hSh-}r(h/]h0]h1]h2]h5]uh7Kh8hh"]r(hAXEvery event has a rr}r(h'XEvery event has a h(hubh)r}r(h'X :attr:`name`rh(hh)Nh+hh-}r (UreftypeXattrhɉhXnameU refdomainXpyr h2]h1]U refexplicith/]h0]h5]hhhhhhuh7Nh"]r h)r }r (h'jh-}r(h/]h0]r(hj Xpy-attrreh1]h2]h5]uh(jh"]rhAXnamerr}r(h'Uh(j ubah+hubaubhAXA attribute that is used for matching the event with the handlers.rr}r(h'XA attribute that is used for matching the event with the handlers.h(hubeubcdocutils.nodes field_list r)r}r(h'Uh(hh)Nh+U field_listrh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rcdocutils.nodes field r)r}r (h'Uh-}r!(h/]h0]h1]h2]h5]uh(jh"]r"(cdocutils.nodes field_name r#)r$}r%(h'Uh-}r&(h/]h0]h1]h2]h5]uh(jh"]r'hAX Variablesr(r)}r*(h'Uh(j$ubah+U field_namer+ubcdocutils.nodes field_body r,)r-}r.(h'Uh-}r/(h/]h0]h1]h2]h5]uh(jh"]r0cdocutils.nodes bullet_list r1)r2}r3(h'Uh-}r4(h/]h0]h1]h2]h5]uh(j-h"]r5(cdocutils.nodes list_item r6)r7}r8(h'Uh-}r9(h/]h0]h1]h2]h5]uh(j2h"]r:hN)r;}r<(h'Uh-}r=(h/]h0]h1]h2]h5]uh(j7h"]r>(h)r?}r@(h'Uh-}rA(UreftypeUobjrBU reftargetXchannelsrCU refdomainhmh2]h1]U refexplicith/]h0]h5]uh(j;h"]rDcdocutils.nodes strong rE)rF}rG(h'jCh-}rH(h/]h0]h1]h2]h5]uh(j?h"]rIhAXchannelsrJrK}rL(h'Uh(jFubah+UstrongrMubah+hubhAX -- rNrO}rP(h'Uh(j;ubhN)rQ}rR(h'Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rSh(j;h)hh+hSh-}rT(h/]h0]h1]h2]h5]uh7Kh"]rUhAXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rVrW}rX(h'jSh(jQubaubhN)rY}rZ(h'XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.r[h(j;h)hh+hSh-}r\(h/]h0]h1]h2]h5]uh7Kh"]r]hAXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.r^r_}r`(h'j[h(jYubaubeh+hSubah+U list_itemraubj6)rb}rc(h'Uh-}rd(h/]h0]h1]h2]h5]uh(j2h"]rehN)rf}rg(h'Uh-}rh(h/]h0]h1]h2]h5]uh(jbh"]ri(h)rj}rk(h'Uh-}rl(UreftypejBU reftargetXvaluermU refdomainhmh2]h1]U refexplicith/]h0]h5]uh(jfh"]rnjE)ro}rp(h'jmh-}rq(h/]h0]h1]h2]h5]uh(jjh"]rrhAXvaluersrt}ru(h'Uh(joubah+jMubah+hubhAX -- rvrw}rx(h'Uh(jfubhAX this is a ryrz}r{(h'X this is a h(jfubh)r|}r}(h'X#:class:`circuits.core.values.Value`r~h(jfh)Nh+hh-}r(UreftypeXclasshɉhXcircuits.core.values.ValueU refdomainXpyrh2]h1]U refexplicith/]h0]h5]hhhhhhuh7Nh"]rh)r}r(h'j~h-}r(h/]h0]r(hjXpy-classreh1]h2]h5]uh(j|h"]rhAXcircuits.core.values.Valuerr}r(h'Uh(jubah+hubaubhAXN object that holds the results returned by the handlers invoked for the event.rr}r(h'XN object that holds the results returned by the handlers invoked for the event.h(jfubeh+hSubah+jaubj6)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(j2h"]rhN)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jh"]r(h)r}r(h'Uh-}r(UreftypejBU reftargetXsuccessrU refdomainhmh2]h1]U refexplicith/]h0]h5]uh(jh"]rjE)r}r(h'jh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXsuccessrr}r(h'Uh(jubah+jMubah+hubhAX -- rr}r(h'Uh(jubhAX%if this optional attribute is set to rr}r(h'X%if this optional attribute is set to h(jubh)r}r(h'X``True``h-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXTruerr}r(h'Uh(jubah+hubhAX, an associated event rr}r(h'X, an associated event h(jubh)r}r(h'X ``success``h-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXsuccessrr}r(h'Uh(jubah+hubhAX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(h'X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h(jubeh+hSubah+jaubj6)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(j2h"]rhN)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jh"]r(h)r}r(h'Uh-}r(UreftypejBU reftargetXsuccess_channelsrU refdomainhmh2]h1]U refexplicith/]h0]h5]uh(jh"]rjE)r}r(h'jh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXsuccess_channelsrr}r(h'Uh(jubah+jMubah+hubhAX -- rr}r(h'Uh(jubhAXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h'Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h(jubeh+hSubah+jaubj6)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(j2h"]rhN)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jh"]r(h)r}r(h'Uh-}r(UreftypejBU reftargetXcompleterU refdomainhmh2]h1]U refexplicith/]h0]h5]uh(jh"]rjE)r}r(h'jh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXcompleterr}r(h'Uh(jubah+jMubah+hubhAX -- rr}r(h'Uh(jubhAX%if this optional attribute is set to rr}r(h'X%if this optional attribute is set to h(jubh)r}r(h'X``True``h-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXTruerr}r(h'Uh(jubah+hubhAX, an associated event rr}r(h'X, an associated event h(jubh)r}r(h'X ``complete``h-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXcompleterr}r(h'Uh(jubah+hubhAX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rr}r(h'X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h(jubeh+hSubah+jaubj6)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(j2h"]rhN)r}r (h'Uh-}r (h/]h0]h1]h2]h5]uh(jh"]r (h)r }r (h'Uh-}r(UreftypejBU reftargetXcomplete_channelsrU refdomainhmh2]h1]U refexplicith/]h0]h5]uh(jh"]rjE)r}r(h'jh-}r(h/]h0]h1]h2]h5]uh(j h"]rhAXcomplete_channelsrr}r(h'Uh(jubah+jMubah+hubhAX -- rr}r(h'Uh(jubhAXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h'Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h(jubeh+hSubah+jaubeh+U bullet_listrubah+U field_bodyrubeh+Ufieldr ubaubhE)r!}r"(h'Uh(hh)Nh+hIh-}r#(h2]h1]h/]h0]h5]Uentries]r$(hLX/success (circuits.web.events.request attribute)hUtr%auh7Nh8hh"]ubhf)r&}r'(h'Uh(hh)Nh+hih-}r((hkhlXpyh2]h1]h/]h0]h5]hnX attributer)hpj)uh7Nh8hh"]r*(hr)r+}r,(h'Xrequest.successh(j&h)U r-h+hvh-}r.(h2]r/hahyhzXcircuits.web.eventsr0r1}r2bh1]h/]h0]h5]r3hahXrequest.successhhhuh7Nh8hh"]r4(h)r5}r6(h'Xsuccessh(j+h)j-h+hh-}r7(h/]h0]h1]h2]h5]uh7Nh8hh"]r8hAXsuccessr9r:}r;(h'Uh(j5ubaubh)r<}r=(h'X = Trueh(j+h)j-h+hh-}r>(h/]h0]h1]h2]h5]uh7Nh8hh"]r?hAX = Truer@rA}rB(h'Uh(j<ubaubeubh)rC}rD(h'Uh(j&h)j-h+hh-}rE(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubhE)rF}rG(h'Uh(hh)Nh+hIh-}rH(h2]h1]h/]h0]h5]Uentries]rI(hLX/failure (circuits.web.events.request attribute)hUtrJauh7Nh8hh"]ubhf)rK}rL(h'Uh(hh)Nh+hih-}rM(hkhlXpyh2]h1]h/]h0]h5]hnX attributerNhpjNuh7Nh8hh"]rO(hr)rP}rQ(h'Xrequest.failureh(jKh)j-h+hvh-}rR(h2]rShahyhzXcircuits.web.eventsrTrU}rVbh1]h/]h0]h5]rWhahXrequest.failurehhhuh7Nh8hh"]rX(h)rY}rZ(h'Xfailureh(jPh)j-h+hh-}r[(h/]h0]h1]h2]h5]uh7Nh8hh"]r\hAXfailurer]r^}r_(h'Uh(jYubaubh)r`}ra(h'X = Trueh(jPh)j-h+hh-}rb(h/]h0]h1]h2]h5]uh7Nh8hh"]rchAX = Truerdre}rf(h'Uh(j`ubaubeubh)rg}rh(h'Uh(jKh)j-h+hh-}ri(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubhE)rj}rk(h'Uh(hh)Nh+hIh-}rl(h2]h1]h/]h0]h5]Uentries]rm(hLX0complete (circuits.web.events.request attribute)hUtrnauh7Nh8hh"]ubhf)ro}rp(h'Uh(hh)Nh+hih-}rq(hkhlXpyh2]h1]h/]h0]h5]hnX attributerrhpjruh7Nh8hh"]rs(hr)rt}ru(h'Xrequest.completeh(joh)j-h+hvh-}rv(h2]rwhahyhzXcircuits.web.eventsrxry}rzbh1]h/]h0]h5]r{hahXrequest.completehhhuh7Nh8hh"]r|(h)r}}r~(h'Xcompleteh(jth)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXcompleterr}r(h'Uh(j}ubaubh)r}r(h'X = Trueh(jth)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAX = Truerr}r(h'Uh(jubaubeubh)r}r(h'Uh(joh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubhE)r}r(h'Uh(hh)Nh+hIh-}r(h2]h1]h/]h0]h5]Uentries]r(hLX,name (circuits.web.events.request attribute)hUtrauh7Nh8hh"]ubhf)r}r(h'Uh(hh)Nh+hih-}r(hkhlXpyh2]h1]h/]h0]h5]hnX attributerhpjuh7Nh8hh"]r(hr)r}r(h'X request.nameh(jh)j-h+hvh-}r(h2]rhahyhzXcircuits.web.eventsrr}rbh1]h/]h0]h5]rhahX request.namehhhuh7Nh8hh"]r(h)r}r(h'Xnameh(jh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXnamerr}r(h'Uh(jubaubh)r}r(h'X = 'request'h(jh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAX = 'request'rr}r(h'Uh(jubaubeubh)r}r(h'Uh(jh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubeubeubhE)r}r(h'Uh(h%h)Nh+hIh-}r(h2]h1]h/]h0]h5]Uentries]r(hLX'response (class in circuits.web.events)hUtrauh7Nh8hh"]ubhf)r}r(h'Uh(h%h)Nh+hih-}r(hkhlXpyrh2]h1]h/]h0]h5]hnXclassrhpjuh7Nh8hh"]r(hr)r}r(h'Xresponse(*args, **kwargs)h(jh)huh+hvh-}r(h2]rhahyhzXcircuits.web.eventsrr}rbh1]h/]h0]h5]rhahXresponserhUhuh7Nh8hh"]r(h)r}r(h'Xclass h(jh)huh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXclass rr}r(h'Uh(jubaubh)r}r(h'Xcircuits.web.events.h(jh)huh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXcircuits.web.events.rr}r(h'Uh(jubaubh)r}r(h'jh(jh)huh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXresponserr}r(h'Uh(jubaubh)r}r(h'Uh(jh)huh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]r(h)r}r(h'X*argsh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAX*argsrr}r(h'Uh(jubah+hubh)r}r(h'X**kwargsh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAX**kwargsrr}r(h'Uh(jubah+hubeubeubh)r}r(h'Uh(jh)huh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]r(hN)r}r(h'X*Bases: :class:`circuits.core.events.Event`h(jh)hh+hSh-}r(h/]h0]h1]h2]h5]uh7Kh8hh"]r(hAXBases: rr}r(h'XBases: h(jubh)r}r(h'X#:class:`circuits.core.events.Event`rh(jh)Nh+hh-}r(UreftypeXclasshɉhXcircuits.core.events.EventU refdomainXpyrh2]h1]U refexplicith/]h0]h5]hhhjhhuh7Nh"]rh)r}r(h'jh-}r(h/]h0]r(hjXpy-classreh1]h2]h5]uh(jh"]rhAXcircuits.core.events.Eventrr}r(h'Uh(jubah+hubaubeubhN)r}r (h'X!response(Event) -> response Eventr h(jh)X]/home/prologic/work/circuits/circuits/web/events.py:docstring of circuits.web.events.responser h+hSh-}r (h/]h0]h1]h2]h5]uh7Kh8hh"]r hAX!response(Event) -> response Eventrr}r(h'j h(jubaubhN)r}r(h'Xargs: request, responserh(jh)j h+hSh-}r(h/]h0]h1]h2]h5]uh7Kh8hh"]rhAXargs: request, responserr}r(h'jh(jubaubhN)r}r(h'XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rh(jh)j h+hSh-}r(h/]h0]h1]h2]h5]uh7Kh8hh"]rhAXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rr}r (h'jh(jubaubhN)r!}r"(h'XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.r#h(jh)j h+hSh-}r$(h/]h0]h1]h2]h5]uh7K h8hh"]r%hAXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.r&r'}r((h'j#h(j!ubaubhN)r)}r*(h'X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h(jh)j h+hSh-}r+(h/]h0]h1]h2]h5]uh7Kh8hh"]r,(hAXEvery event has a r-r.}r/(h'XEvery event has a h(j)ubh)r0}r1(h'X :attr:`name`r2h(j)h)Nh+hh-}r3(UreftypeXattrhɉhXnameU refdomainXpyr4h2]h1]U refexplicith/]h0]h5]hhhjhhuh7Nh"]r5h)r6}r7(h'j2h-}r8(h/]h0]r9(hj4Xpy-attrr:eh1]h2]h5]uh(j0h"]r;hAXnamer<r=}r>(h'Uh(j6ubah+hubaubhAXA attribute that is used for matching the event with the handlers.r?r@}rA(h'XA attribute that is used for matching the event with the handlers.h(j)ubeubj)rB}rC(h'Uh(jh)Nh+jh-}rD(h/]h0]h1]h2]h5]uh7Nh8hh"]rEj)rF}rG(h'Uh-}rH(h/]h0]h1]h2]h5]uh(jBh"]rI(j#)rJ}rK(h'Uh-}rL(h/]h0]h1]h2]h5]uh(jFh"]rMhAX VariablesrNrO}rP(h'Uh(jJubah+j+ubj,)rQ}rR(h'Uh-}rS(h/]h0]h1]h2]h5]uh(jFh"]rTj1)rU}rV(h'Uh-}rW(h/]h0]h1]h2]h5]uh(jQh"]rX(j6)rY}rZ(h'Uh-}r[(h/]h0]h1]h2]h5]uh(jUh"]r\hN)r]}r^(h'Uh-}r_(h/]h0]h1]h2]h5]uh(jYh"]r`(h)ra}rb(h'Uh-}rc(UreftypejBU reftargetXchannelsrdU refdomainjh2]h1]U refexplicith/]h0]h5]uh(j]h"]rejE)rf}rg(h'jdh-}rh(h/]h0]h1]h2]h5]uh(jah"]rihAXchannelsrjrk}rl(h'Uh(jfubah+jMubah+hubhAX -- rmrn}ro(h'Uh(j]ubhN)rp}rq(h'Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rrh(j]h)j h+hSh-}rs(h/]h0]h1]h2]h5]uh7Kh"]rthAXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rurv}rw(h'jrh(jpubaubhN)rx}ry(h'XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rzh(j]h)j h+hSh-}r{(h/]h0]h1]h2]h5]uh7Kh"]r|hAXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.r}r~}r(h'jzh(jxubaubeh+hSubah+jaubj6)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jUh"]rhN)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jh"]r(h)r}r(h'Uh-}r(UreftypejBU reftargetXvaluerU refdomainjh2]h1]U refexplicith/]h0]h5]uh(jh"]rjE)r}r(h'jh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXvaluerr}r(h'Uh(jubah+jMubah+hubhAX -- rr}r(h'Uh(jubhAX this is a rr}r(h'X this is a h(jubh)r}r(h'X#:class:`circuits.core.values.Value`rh(jh)Nh+hh-}r(UreftypeXclasshɉhXcircuits.core.values.ValueU refdomainXpyrh2]h1]U refexplicith/]h0]h5]hhhjhhuh7Nh"]rh)r}r(h'jh-}r(h/]h0]r(hjXpy-classreh1]h2]h5]uh(jh"]rhAXcircuits.core.values.Valuerr}r(h'Uh(jubah+hubaubhAXN object that holds the results returned by the handlers invoked for the event.rr}r(h'XN object that holds the results returned by the handlers invoked for the event.h(jubeh+hSubah+jaubj6)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jUh"]rhN)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jh"]r(h)r}r(h'Uh-}r(UreftypejBU reftargetXsuccessrU refdomainjh2]h1]U refexplicith/]h0]h5]uh(jh"]rjE)r}r(h'jh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXsuccessrr}r(h'Uh(jubah+jMubah+hubhAX -- rr}r(h'Uh(jubhAX%if this optional attribute is set to rr}r(h'X%if this optional attribute is set to h(jubh)r}r(h'X``True``h-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXTruerr}r(h'Uh(jubah+hubhAX, an associated event rr}r(h'X, an associated event h(jubh)r}r(h'X ``success``h-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXsuccessrr}r(h'Uh(jubah+hubhAX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(h'X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h(jubeh+hSubah+jaubj6)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jUh"]rhN)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jh"]r(h)r}r(h'Uh-}r(UreftypejBU reftargetXsuccess_channelsrU refdomainjh2]h1]U refexplicith/]h0]h5]uh(jh"]rjE)r}r(h'jh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXsuccess_channelsrr}r(h'Uh(jubah+jMubah+hubhAX -- rr}r(h'Uh(jubhAXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h'Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rh(jubeh+hSubah+jaubj6)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jUh"]rhN)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jh"]r(h)r}r(h'Uh-}r(UreftypejBU reftargetXcompleterU refdomainjh2]h1]U refexplicith/]h0]h5]uh(jh"]rjE)r}r(h'jh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXcompleterr}r(h'Uh(jubah+jMubah+hubhAX -- r r }r (h'Uh(jubhAX%if this optional attribute is set to r r }r(h'X%if this optional attribute is set to h(jubh)r}r(h'X``True``h-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXTruerr}r(h'Uh(jubah+hubhAX, an associated event rr}r(h'X, an associated event h(jubh)r}r(h'X ``complete``h-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXcompleterr}r(h'Uh(jubah+hubhAX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.r r!}r"(h'X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h(jubeh+hSubah+jaubj6)r#}r$(h'Uh-}r%(h/]h0]h1]h2]h5]uh(jUh"]r&hN)r'}r((h'Uh-}r)(h/]h0]h1]h2]h5]uh(j#h"]r*(h)r+}r,(h'Uh-}r-(UreftypejBU reftargetXcomplete_channelsr.U refdomainjh2]h1]U refexplicith/]h0]h5]uh(j'h"]r/jE)r0}r1(h'j.h-}r2(h/]h0]h1]h2]h5]uh(j+h"]r3hAXcomplete_channelsr4r5}r6(h'Uh(j0ubah+jMubah+hubhAX -- r7r8}r9(h'Uh(j'ubhAXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r:r;}r<(h'Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r=h(j'ubeh+hSubah+jaubeh+jubah+jubeh+j ubaubhE)r>}r?(h'Uh(jh)Nh+hIh-}r@(h2]h1]h/]h0]h5]Uentries]rA(hLX0success (circuits.web.events.response attribute)h UtrBauh7Nh8hh"]ubhf)rC}rD(h'Uh(jh)Nh+hih-}rE(hkhlXpyh2]h1]h/]h0]h5]hnX attributerFhpjFuh7Nh8hh"]rG(hr)rH}rI(h'Xresponse.successh(jCh)j-h+hvh-}rJ(h2]rKh ahyhzXcircuits.web.eventsrLrM}rNbh1]h/]h0]h5]rOh ahXresponse.successhjhuh7Nh8hh"]rP(h)rQ}rR(h'Xsuccessh(jHh)j-h+hh-}rS(h/]h0]h1]h2]h5]uh7Nh8hh"]rThAXsuccessrUrV}rW(h'Uh(jQubaubh)rX}rY(h'X = Trueh(jHh)j-h+hh-}rZ(h/]h0]h1]h2]h5]uh7Nh8hh"]r[hAX = Truer\r]}r^(h'Uh(jXubaubeubh)r_}r`(h'Uh(jCh)j-h+hh-}ra(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubhE)rb}rc(h'Uh(jh)Nh+hIh-}rd(h2]h1]h/]h0]h5]Uentries]re(hLX0failure (circuits.web.events.response attribute)h Utrfauh7Nh8hh"]ubhf)rg}rh(h'Uh(jh)Nh+hih-}ri(hkhlXpyh2]h1]h/]h0]h5]hnX attributerjhpjjuh7Nh8hh"]rk(hr)rl}rm(h'Xresponse.failureh(jgh)j-h+hvh-}rn(h2]roh ahyhzXcircuits.web.eventsrprq}rrbh1]h/]h0]h5]rsh ahXresponse.failurehjhuh7Nh8hh"]rt(h)ru}rv(h'Xfailureh(jlh)j-h+hh-}rw(h/]h0]h1]h2]h5]uh7Nh8hh"]rxhAXfailureryrz}r{(h'Uh(juubaubh)r|}r}(h'X = Trueh(jlh)j-h+hh-}r~(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAX = Truerr}r(h'Uh(j|ubaubeubh)r}r(h'Uh(jgh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubhE)r}r(h'Uh(jh)Nh+hIh-}r(h2]h1]h/]h0]h5]Uentries]r(hLX1complete (circuits.web.events.response attribute)hUtrauh7Nh8hh"]ubhf)r}r(h'Uh(jh)Nh+hih-}r(hkhlXpyh2]h1]h/]h0]h5]hnX attributerhpjuh7Nh8hh"]r(hr)r}r(h'Xresponse.completeh(jh)j-h+hvh-}r(h2]rhahyhzXcircuits.web.eventsrr}rbh1]h/]h0]h5]rhahXresponse.completehjhuh7Nh8hh"]r(h)r}r(h'Xcompleteh(jh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXcompleterr}r(h'Uh(jubaubh)r}r(h'X = Trueh(jh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAX = Truerr}r(h'Uh(jubaubeubh)r}r(h'Uh(jh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubhE)r}r(h'Uh(jh)Nh+hIh-}r(h2]h1]h/]h0]h5]Uentries]r(hLX-name (circuits.web.events.response attribute)hUtrauh7Nh8hh"]ubhf)r}r(h'Uh(jh)Nh+hih-}r(hkhlXpyh2]h1]h/]h0]h5]hnX attributerhpjuh7Nh8hh"]r(hr)r}r(h'X response.nameh(jh)j-h+hvh-}r(h2]rhahyhzXcircuits.web.eventsrr}rbh1]h/]h0]h5]rhahX response.namehjhuh7Nh8hh"]r(h)r}r(h'Xnameh(jh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXnamerr}r(h'Uh(jubaubh)r}r(h'X = 'response'h(jh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAX = 'response'rr}r(h'Uh(jubaubeubh)r}r(h'Uh(jh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubeubeubhE)r}r(h'Uh(h%h)Nh+hIh-}r(h2]h1]h/]h0]h5]Uentries]r(hLX%stream (class in circuits.web.events)hUtrauh7Nh8hh"]ubhf)r}r(h'Uh(h%h)Nh+hih-}r(hkhlXpyrh2]h1]h/]h0]h5]hnXclassrhpjuh7Nh8hh"]r(hr)r}r(h'Xstream(*args, **kwargs)h(jh)huh+hvh-}r(h2]rhahyhzXcircuits.web.eventsrr}rbh1]h/]h0]h5]rhahXstreamrhUhuh7Nh8hh"]r(h)r}r(h'Xclass h(jh)huh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXclass rr}r(h'Uh(jubaubh)r}r(h'Xcircuits.web.events.h(jh)huh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXcircuits.web.events.rr}r(h'Uh(jubaubh)r}r(h'jh(jh)huh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXstreamrr}r(h'Uh(jubaubh)r}r(h'Uh(jh)huh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]r(h)r}r(h'X*argsh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAX*argsrr}r(h'Uh(jubah+hubh)r}r(h'X**kwargsh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAX**kwargsrr}r (h'Uh(jubah+hubeubeubh)r }r (h'Uh(jh)huh+hh-}r (h/]h0]h1]h2]h5]uh7Nh8hh"]r (hN)r}r(h'X*Bases: :class:`circuits.core.events.Event`h(j h)hh+hSh-}r(h/]h0]h1]h2]h5]uh7Kh8hh"]r(hAXBases: rr}r(h'XBases: h(jubh)r}r(h'X#:class:`circuits.core.events.Event`rh(jh)Nh+hh-}r(UreftypeXclasshɉhXcircuits.core.events.EventU refdomainXpyrh2]h1]U refexplicith/]h0]h5]hhhjhhuh7Nh"]rh)r}r(h'jh-}r(h/]h0]r(hjXpy-classreh1]h2]h5]uh(jh"]r hAXcircuits.core.events.Eventr!r"}r#(h'Uh(jubah+hubaubeubhN)r$}r%(h'Xstream(Event) -> stream Eventr&h(j h)X[/home/prologic/work/circuits/circuits/web/events.py:docstring of circuits.web.events.streamr'h+hSh-}r((h/]h0]h1]h2]h5]uh7Kh8hh"]r)hAXstream(Event) -> stream Eventr*r+}r,(h'j&h(j$ubaubhN)r-}r.(h'Xargs: request, responser/h(j h)j'h+hSh-}r0(h/]h0]h1]h2]h5]uh7Kh8hh"]r1hAXargs: request, responser2r3}r4(h'j/h(j-ubaubhN)r5}r6(h'XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r7h(j h)j'h+hSh-}r8(h/]h0]h1]h2]h5]uh7Kh8hh"]r9hAXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r:r;}r<(h'j7h(j5ubaubhN)r=}r>(h'XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.r?h(j h)j'h+hSh-}r@(h/]h0]h1]h2]h5]uh7K h8hh"]rAhAXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rBrC}rD(h'j?h(j=ubaubhN)rE}rF(h'X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h(j h)j'h+hSh-}rG(h/]h0]h1]h2]h5]uh7Kh8hh"]rH(hAXEvery event has a rIrJ}rK(h'XEvery event has a h(jEubh)rL}rM(h'X :attr:`name`rNh(jEh)Nh+hh-}rO(UreftypeXattrhɉhXnameU refdomainXpyrPh2]h1]U refexplicith/]h0]h5]hhhjhhuh7Nh"]rQh)rR}rS(h'jNh-}rT(h/]h0]rU(hjPXpy-attrrVeh1]h2]h5]uh(jLh"]rWhAXnamerXrY}rZ(h'Uh(jRubah+hubaubhAXA attribute that is used for matching the event with the handlers.r[r\}r](h'XA attribute that is used for matching the event with the handlers.h(jEubeubj)r^}r_(h'Uh(j h)Nh+jh-}r`(h/]h0]h1]h2]h5]uh7Nh8hh"]raj)rb}rc(h'Uh-}rd(h/]h0]h1]h2]h5]uh(j^h"]re(j#)rf}rg(h'Uh-}rh(h/]h0]h1]h2]h5]uh(jbh"]rihAX Variablesrjrk}rl(h'Uh(jfubah+j+ubj,)rm}rn(h'Uh-}ro(h/]h0]h1]h2]h5]uh(jbh"]rpj1)rq}rr(h'Uh-}rs(h/]h0]h1]h2]h5]uh(jmh"]rt(j6)ru}rv(h'Uh-}rw(h/]h0]h1]h2]h5]uh(jqh"]rxhN)ry}rz(h'Uh-}r{(h/]h0]h1]h2]h5]uh(juh"]r|(h)r}}r~(h'Uh-}r(UreftypejBU reftargetXchannelsrU refdomainjh2]h1]U refexplicith/]h0]h5]uh(jyh"]rjE)r}r(h'jh-}r(h/]h0]h1]h2]h5]uh(j}h"]rhAXchannelsrr}r(h'Uh(jubah+jMubah+hubhAX -- rr}r(h'Uh(jyubhN)r}r(h'Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rh(jyh)j'h+hSh-}r(h/]h0]h1]h2]h5]uh7Kh"]rhAXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rr}r(h'jh(jubaubhN)r}r(h'XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rh(jyh)j'h+hSh-}r(h/]h0]h1]h2]h5]uh7Kh"]rhAXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rr}r(h'jh(jubaubeh+hSubah+jaubj6)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jqh"]rhN)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jh"]r(h)r}r(h'Uh-}r(UreftypejBU reftargetXvaluerU refdomainjh2]h1]U refexplicith/]h0]h5]uh(jh"]rjE)r}r(h'jh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXvaluerr}r(h'Uh(jubah+jMubah+hubhAX -- rr}r(h'Uh(jubhAX this is a rr}r(h'X this is a h(jubh)r}r(h'X#:class:`circuits.core.values.Value`rh(jh)Nh+hh-}r(UreftypeXclasshɉhXcircuits.core.values.ValueU refdomainXpyrh2]h1]U refexplicith/]h0]h5]hhhjhhuh7Nh"]rh)r}r(h'jh-}r(h/]h0]r(hjXpy-classreh1]h2]h5]uh(jh"]rhAXcircuits.core.values.Valuerr}r(h'Uh(jubah+hubaubhAXN object that holds the results returned by the handlers invoked for the event.rr}r(h'XN object that holds the results returned by the handlers invoked for the event.h(jubeh+hSubah+jaubj6)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jqh"]rhN)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jh"]r(h)r}r(h'Uh-}r(UreftypejBU reftargetXsuccessrU refdomainjh2]h1]U refexplicith/]h0]h5]uh(jh"]rjE)r}r(h'jh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXsuccessrr}r(h'Uh(jubah+jMubah+hubhAX -- rr}r(h'Uh(jubhAX%if this optional attribute is set to rr}r(h'X%if this optional attribute is set to h(jubh)r}r(h'X``True``h-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXTruerr}r(h'Uh(jubah+hubhAX, an associated event rr}r(h'X, an associated event h(jubh)r}r(h'X ``success``h-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXsuccessrr}r(h'Uh(jubah+hubhAX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(h'X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h(jubeh+hSubah+jaubj6)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jqh"]rhN)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jh"]r(h)r}r(h'Uh-}r(UreftypejBU reftargetXsuccess_channelsrU refdomainjh2]h1]U refexplicith/]h0]h5]uh(jh"]rjE)r}r(h'jh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXsuccess_channelsrr}r (h'Uh(jubah+jMubah+hubhAX -- r r }r (h'Uh(jubhAXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r r}r(h'Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rh(jubeh+hSubah+jaubj6)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jqh"]rhN)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jh"]r(h)r}r(h'Uh-}r(UreftypejBU reftargetXcompleterU refdomainjh2]h1]U refexplicith/]h0]h5]uh(jh"]rjE)r}r(h'jh-}r (h/]h0]h1]h2]h5]uh(jh"]r!hAXcompleter"r#}r$(h'Uh(jubah+jMubah+hubhAX -- r%r&}r'(h'Uh(jubhAX%if this optional attribute is set to r(r)}r*(h'X%if this optional attribute is set to h(jubh)r+}r,(h'X``True``h-}r-(h/]h0]h1]h2]h5]uh(jh"]r.hAXTruer/r0}r1(h'Uh(j+ubah+hubhAX, an associated event r2r3}r4(h'X, an associated event h(jubh)r5}r6(h'X ``complete``h-}r7(h/]h0]h1]h2]h5]uh(jh"]r8hAXcompleter9r:}r;(h'Uh(j5ubah+hubhAX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.r<r=}r>(h'X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h(jubeh+hSubah+jaubj6)r?}r@(h'Uh-}rA(h/]h0]h1]h2]h5]uh(jqh"]rBhN)rC}rD(h'Uh-}rE(h/]h0]h1]h2]h5]uh(j?h"]rF(h)rG}rH(h'Uh-}rI(UreftypejBU reftargetXcomplete_channelsrJU refdomainjh2]h1]U refexplicith/]h0]h5]uh(jCh"]rKjE)rL}rM(h'jJh-}rN(h/]h0]h1]h2]h5]uh(jGh"]rOhAXcomplete_channelsrPrQ}rR(h'Uh(jLubah+jMubah+hubhAX -- rSrT}rU(h'Uh(jCubhAXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rVrW}rX(h'Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rYh(jCubeh+hSubah+jaubeh+jubah+jubeh+j ubaubhE)rZ}r[(h'Uh(j h)Nh+hIh-}r\(h2]h1]h/]h0]h5]Uentries]r](hLX.success (circuits.web.events.stream attribute)hUtr^auh7Nh8hh"]ubhf)r_}r`(h'Uh(j h)Nh+hih-}ra(hkhlXpyh2]h1]h/]h0]h5]hnX attributerbhpjbuh7Nh8hh"]rc(hr)rd}re(h'Xstream.successh(j_h)j-h+hvh-}rf(h2]rghahyhzXcircuits.web.eventsrhri}rjbh1]h/]h0]h5]rkhahXstream.successhjhuh7Nh8hh"]rl(h)rm}rn(h'Xsuccessh(jdh)j-h+hh-}ro(h/]h0]h1]h2]h5]uh7Nh8hh"]rphAXsuccessrqrr}rs(h'Uh(jmubaubh)rt}ru(h'X = Trueh(jdh)j-h+hh-}rv(h/]h0]h1]h2]h5]uh7Nh8hh"]rwhAX = Truerxry}rz(h'Uh(jtubaubeubh)r{}r|(h'Uh(j_h)j-h+hh-}r}(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubhE)r~}r(h'Uh(j h)Nh+hIh-}r(h2]h1]h/]h0]h5]Uentries]r(hLX.failure (circuits.web.events.stream attribute)h Utrauh7Nh8hh"]ubhf)r}r(h'Uh(j h)Nh+hih-}r(hkhlXpyh2]h1]h/]h0]h5]hnX attributerhpjuh7Nh8hh"]r(hr)r}r(h'Xstream.failureh(jh)j-h+hvh-}r(h2]rh ahyhzXcircuits.web.eventsrr}rbh1]h/]h0]h5]rh ahXstream.failurehjhuh7Nh8hh"]r(h)r}r(h'Xfailureh(jh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXfailurerr}r(h'Uh(jubaubh)r}r(h'X = Trueh(jh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAX = Truerr}r(h'Uh(jubaubeubh)r}r(h'Uh(jh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubhE)r}r(h'Uh(j h)Nh+hIh-}r(h2]h1]h/]h0]h5]Uentries]r(hLX/complete (circuits.web.events.stream attribute)h Utrauh7Nh8hh"]ubhf)r}r(h'Uh(j h)Nh+hih-}r(hkhlXpyh2]h1]h/]h0]h5]hnX attributerhpjuh7Nh8hh"]r(hr)r}r(h'Xstream.completeh(jh)j-h+hvh-}r(h2]rh ahyhzXcircuits.web.eventsrr}rbh1]h/]h0]h5]rh ahXstream.completehjhuh7Nh8hh"]r(h)r}r(h'Xcompleteh(jh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXcompleterr}r(h'Uh(jubaubh)r}r(h'X = Trueh(jh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAX = Truerr}r(h'Uh(jubaubeubh)r}r(h'Uh(jh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubhE)r}r(h'Uh(j h)Nh+hIh-}r(h2]h1]h/]h0]h5]Uentries]r(hLX+name (circuits.web.events.stream attribute)hUtrauh7Nh8hh"]ubhf)r}r(h'Uh(j h)Nh+hih-}r(hkhlXpyh2]h1]h/]h0]h5]hnX attributerhpjuh7Nh8hh"]r(hr)r}r(h'X stream.nameh(jh)j-h+hvh-}r(h2]rhahyhzXcircuits.web.eventsrr}rbh1]h/]h0]h5]rhahX stream.namehjhuh7Nh8hh"]r(h)r}r(h'Xnameh(jh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXnamerr}r(h'Uh(jubaubh)r}r(h'X = 'stream'h(jh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAX = 'stream'rr}r(h'Uh(jubaubeubh)r}r(h'Uh(jh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubeubeubhE)r}r(h'Uh(h%h)Nh+hIh-}r(h2]h1]h/]h0]h5]Uentries]r(hLX(terminate (class in circuits.web.events)hUtrauh7Nh8hh"]ubhf)r}r(h'Uh(h%h)Nh+hih-}r(hkhlXpyrh2]h1]h/]h0]h5]hnXclassrhpjuh7Nh8hh"]r(hr)r}r(h'Xterminate(*args, **kwargs)h(jh)huh+hvh-}r(h2]rhahyhzXcircuits.web.eventsrr}rbh1]h/]h0]h5]rhahX terminaterhUhuh7Nh8hh"]r(h)r}r(h'Xclass h(jh)huh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXclass rr}r(h'Uh(jubaubh)r}r(h'Xcircuits.web.events.h(jh)huh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]r hAXcircuits.web.events.r r }r (h'Uh(jubaubh)r }r(h'jh(jh)huh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAX terminaterr}r(h'Uh(j ubaubh)r}r(h'Uh(jh)huh+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]r(h)r}r(h'X*argsh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAX*argsrr}r(h'Uh(jubah+hubh)r}r (h'X**kwargsh-}r!(h/]h0]h1]h2]h5]uh(jh"]r"hAX**kwargsr#r$}r%(h'Uh(jubah+hubeubeubh)r&}r'(h'Uh(jh)huh+hh-}r((h/]h0]h1]h2]h5]uh7Nh8hh"]r)(hN)r*}r+(h'X*Bases: :class:`circuits.core.events.Event`r,h(j&h)hh+hSh-}r-(h/]h0]h1]h2]h5]uh7Kh8hh"]r.(hAXBases: r/r0}r1(h'XBases: h(j*ubh)r2}r3(h'X#:class:`circuits.core.events.Event`r4h(j*h)Nh+hh-}r5(UreftypeXclasshɉhXcircuits.core.events.EventU refdomainXpyr6h2]h1]U refexplicith/]h0]h5]hhhjhhuh7Nh"]r7h)r8}r9(h'j4h-}r:(h/]h0]r;(hj6Xpy-classr<eh1]h2]h5]uh(j2h"]r=hAXcircuits.core.events.Eventr>r?}r@(h'Uh(j8ubah+hubaubeubhN)rA}rB(h'Xterminate EventrCh(j&h)X^/home/prologic/work/circuits/circuits/web/events.py:docstring of circuits.web.events.terminaterDh+hSh-}rE(h/]h0]h1]h2]h5]uh7Kh8hh"]rFhAXterminate EventrGrH}rI(h'jCh(jAubaubhN)rJ}rK(h'XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rLh(j&h)jDh+hSh-}rM(h/]h0]h1]h2]h5]uh7Kh8hh"]rNhAXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rOrP}rQ(h'jLh(jJubaubhN)rR}rS(h'XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rTh(j&h)jDh+hSh-}rU(h/]h0]h1]h2]h5]uh7Kh8hh"]rVhAXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rWrX}rY(h'jTh(jRubaubhN)rZ}r[(h'X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h(j&h)jDh+hSh-}r\(h/]h0]h1]h2]h5]uh7K h8hh"]r](hAXEvery event has a r^r_}r`(h'XEvery event has a h(jZubh)ra}rb(h'X :attr:`name`rch(jZh)Nh+hh-}rd(UreftypeXattrhɉhXnameU refdomainXpyreh2]h1]U refexplicith/]h0]h5]hhhjhhuh7Nh"]rfh)rg}rh(h'jch-}ri(h/]h0]rj(hjeXpy-attrrkeh1]h2]h5]uh(jah"]rlhAXnamermrn}ro(h'Uh(jgubah+hubaubhAXA attribute that is used for matching the event with the handlers.rprq}rr(h'XA attribute that is used for matching the event with the handlers.h(jZubeubj)rs}rt(h'Uh(j&h)Nh+jh-}ru(h/]h0]h1]h2]h5]uh7Nh8hh"]rvj)rw}rx(h'Uh-}ry(h/]h0]h1]h2]h5]uh(jsh"]rz(j#)r{}r|(h'Uh-}r}(h/]h0]h1]h2]h5]uh(jwh"]r~hAX Variablesrr}r(h'Uh(j{ubah+j+ubj,)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jwh"]rj1)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jh"]r(j6)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jh"]rhN)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jh"]r(h)r}r(h'Uh-}r(UreftypejBU reftargetXchannelsrU refdomainjh2]h1]U refexplicith/]h0]h5]uh(jh"]rjE)r}r(h'jh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXchannelsrr}r(h'Uh(jubah+jMubah+hubhAX -- rr}r(h'Uh(jubhN)r}r(h'Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rh(jh)jDh+hSh-}r(h/]h0]h1]h2]h5]uh7Kh"]rhAXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rr}r(h'jh(jubaubhN)r}r(h'XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rh(jh)jDh+hSh-}r(h/]h0]h1]h2]h5]uh7Kh"]rhAXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rr}r(h'jh(jubaubeh+hSubah+jaubj6)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jh"]rhN)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jh"]r(h)r}r(h'Uh-}r(UreftypejBU reftargetXvaluerU refdomainjh2]h1]U refexplicith/]h0]h5]uh(jh"]rjE)r}r(h'jh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXvaluerr}r(h'Uh(jubah+jMubah+hubhAX -- rr}r(h'Uh(jubhAX this is a rr}r(h'X this is a h(jubh)r}r(h'X#:class:`circuits.core.values.Value`rh(jh)Nh+hh-}r(UreftypeXclasshɉhXcircuits.core.values.ValueU refdomainXpyrh2]h1]U refexplicith/]h0]h5]hhhjhhuh7Nh"]rh)r}r(h'jh-}r(h/]h0]r(hjXpy-classreh1]h2]h5]uh(jh"]rhAXcircuits.core.values.Valuerr}r(h'Uh(jubah+hubaubhAXN object that holds the results returned by the handlers invoked for the event.rr}r(h'XN object that holds the results returned by the handlers invoked for the event.h(jubeh+hSubah+jaubj6)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jh"]rhN)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(jh"]r(h)r}r(h'Uh-}r(UreftypejBU reftargetXsuccessrU refdomainjh2]h1]U refexplicith/]h0]h5]uh(jh"]rjE)r}r(h'jh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXsuccessrr}r(h'Uh(jubah+jMubah+hubhAX -- rr}r(h'Uh(jubhAX%if this optional attribute is set to rr}r(h'X%if this optional attribute is set to h(jubh)r}r(h'X``True``h-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXTruerr}r(h'Uh(jubah+hubhAX, an associated event rr}r(h'X, an associated event h(jubh)r}r(h'X ``success``h-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXsuccessrr}r(h'Uh(jubah+hubhAX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr }r (h'X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h(jubeh+hSubah+jaubj6)r }r (h'Uh-}r (h/]h0]h1]h2]h5]uh(jh"]rhN)r}r(h'Uh-}r(h/]h0]h1]h2]h5]uh(j h"]r(h)r}r(h'Uh-}r(UreftypejBU reftargetXsuccess_channelsrU refdomainjh2]h1]U refexplicith/]h0]h5]uh(jh"]rjE)r}r(h'jh-}r(h/]h0]h1]h2]h5]uh(jh"]rhAXsuccess_channelsrr}r(h'Uh(jubah+jMubah+hubhAX -- rr }r!(h'Uh(jubhAXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r"r#}r$(h'Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r%h(jubeh+hSubah+jaubj6)r&}r'(h'Uh-}r((h/]h0]h1]h2]h5]uh(jh"]r)hN)r*}r+(h'Uh-}r,(h/]h0]h1]h2]h5]uh(j&h"]r-(h)r.}r/(h'Uh-}r0(UreftypejBU reftargetXcompleter1U refdomainjh2]h1]U refexplicith/]h0]h5]uh(j*h"]r2jE)r3}r4(h'j1h-}r5(h/]h0]h1]h2]h5]uh(j.h"]r6hAXcompleter7r8}r9(h'Uh(j3ubah+jMubah+hubhAX -- r:r;}r<(h'Uh(j*ubhAX%if this optional attribute is set to r=r>}r?(h'X%if this optional attribute is set to h(j*ubh)r@}rA(h'X``True``h-}rB(h/]h0]h1]h2]h5]uh(j*h"]rChAXTruerDrE}rF(h'Uh(j@ubah+hubhAX, an associated event rGrH}rI(h'X, an associated event h(j*ubh)rJ}rK(h'X ``complete``h-}rL(h/]h0]h1]h2]h5]uh(j*h"]rMhAXcompleterNrO}rP(h'Uh(jJubah+hubhAX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rQrR}rS(h'X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h(j*ubeh+hSubah+jaubj6)rT}rU(h'Uh-}rV(h/]h0]h1]h2]h5]uh(jh"]rWhN)rX}rY(h'Uh-}rZ(h/]h0]h1]h2]h5]uh(jTh"]r[(h)r\}r](h'Uh-}r^(UreftypejBU reftargetXcomplete_channelsr_U refdomainjh2]h1]U refexplicith/]h0]h5]uh(jXh"]r`jE)ra}rb(h'j_h-}rc(h/]h0]h1]h2]h5]uh(j\h"]rdhAXcomplete_channelsrerf}rg(h'Uh(jaubah+jMubah+hubhAX -- rhri}rj(h'Uh(jXubhAXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rkrl}rm(h'Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rnh(jXubeh+hSubah+jaubeh+jubah+jubeh+j ubaubhE)ro}rp(h'Uh(j&h)Nh+hIh-}rq(h2]h1]h/]h0]h5]Uentries]rr(hLX.name (circuits.web.events.terminate attribute)h Utrsauh7Nh8hh"]ubhf)rt}ru(h'Uh(j&h)Nh+hih-}rv(hkhlXpyh2]h1]h/]h0]h5]hnX attributerwhpjwuh7Nh8hh"]rx(hr)ry}rz(h'Xterminate.namer{h(jth)j-h+hvh-}r|(h2]r}h ahyhzXcircuits.web.eventsr~r}rbh1]h/]h0]h5]rh ahXterminate.namehjhuh7Nh8hh"]r(h)r}r(h'Xnameh(jyh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAXnamerr}r(h'Uh(jubaubh)r}r(h'X = 'terminate'h(jyh)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]rhAX = 'terminate'rr}r(h'Uh(jubaubeubh)r}r(h'Uh(jth)j-h+hh-}r(h/]h0]h1]h2]h5]uh7Nh8hh"]ubeubeubeubeubah'UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh8hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh>NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh*Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(h!h%hjdhjhjh jh jyh jlh jHh4cdocutils.nodes target r)r}r(h'Uh(h%h)hHh+Utargetrh-}r(h/]h2]rh4ah1]Uismodh0]h5]uh7Kh8hh"]ubh jhjhhshj+hjthjhjhjhjhjPuUsubstitution_namesr}rh+h8h-}r(h/]h2]h1]Usourceh*h0]h5]uU footnotesr]r Urefidsr }r ub.circuits-3.1.0/docs/build/doctrees/api/circuits.app.daemon.doctree0000644000014400001440000015154712425011101026156 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.app.daemon moduleqNX%circuits.app.daemon.Daemon.registeredqX$circuits.app.daemon.Daemon.daemonizeqX"circuits.app.daemon.Daemon.channelq X!circuits.app.daemon.writepid.nameq X#circuits.app.daemon.Daemon.writepidq Xcircuits.app.daemon.deletepidq X$circuits.app.daemon.Daemon.deletepidq Xcircuits.app.daemon.daemonizeqX%circuits.app.daemon.Daemon.on_startedqX"circuits.app.daemon.daemonize.nameqXcircuits.app.daemon.DaemonqX"circuits.app.daemon.deletepid.nameqXcircuits.app.daemon.writepidqXcircuits.app.daemon.Daemon.initquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUcircuits-app-daemon-moduleqhhhhh h h h h h h h h h hhhhhhhhhhhhhhuUchildrenq]q cdocutils.nodes section q!)q"}q#(U rawsourceq$UUparentq%hUsourceq&XD/home/prologic/work/circuits/docs/source/api/circuits.app.daemon.rstq'Utagnameq(Usectionq)U attributesq*}q+(Udupnamesq,]Uclassesq-]Ubackrefsq.]Uidsq/]q0(Xmodule-circuits.app.daemonq1heUnamesq2]q3hauUlineq4KUdocumentq5hh]q6(cdocutils.nodes title q7)q8}q9(h$Xcircuits.app.daemon moduleq:h%h"h&h'h(Utitleq;h*}q<(h,]h-]h.]h/]h2]uh4Kh5hh]q=cdocutils.nodes Text q>Xcircuits.app.daemon moduleq?q@}qA(h$h:h%h8ubaubcsphinx.addnodes index qB)qC}qD(h$Uh%h"h&U qEh(UindexqFh*}qG(h/]h.]h,]h-]h2]Uentries]qH(UsingleqIXcircuits.app.daemon (module)Xmodule-circuits.app.daemonUtqJauh4Kh5hh]ubcdocutils.nodes paragraph qK)qL}qM(h$XDaemon ComponentqNh%h"h&XT/home/prologic/work/circuits/circuits/app/daemon.py:docstring of circuits.app.daemonqOh(U paragraphqPh*}qQ(h,]h-]h.]h/]h2]uh4Kh5hh]qRh>XDaemon ComponentqSqT}qU(h$hNh%hLubaubhK)qV}qW(h$XComponent to daemonize a system into the background and detach it from its controlling PTY. Supports PID file writing, logging stdin, stdout and stderr and changing the current working directory.qXh%h"h&hOh(hPh*}qY(h,]h-]h.]h/]h2]uh4Kh5hh]qZh>XComponent to daemonize a system into the background and detach it from its controlling PTY. Supports PID file writing, logging stdin, stdout and stderr and changing the current working directory.q[q\}q](h$hXh%hVubaubhB)q^}q_(h$Uh%h"h&Nh(hFh*}q`(h/]h.]h,]h-]h2]Uentries]qa(hIX(daemonize (class in circuits.app.daemon)hUtqbauh4Nh5hh]ubcsphinx.addnodes desc qc)qd}qe(h$Uh%h"h&Nh(Udescqfh*}qg(UnoindexqhUdomainqiXpyqjh/]h.]h,]h-]h2]UobjtypeqkXclassqlUdesctypeqmhluh4Nh5hh]qn(csphinx.addnodes desc_signature qo)qp}qq(h$Xdaemonize(*args, **kwargs)h%hdh&U qrh(Udesc_signatureqsh*}qt(h/]quhaUmoduleqvcdocutils.nodes reprunicode qwXcircuits.app.daemonqxqy}qzbh.]h,]h-]h2]q{haUfullnameq|X daemonizeq}Uclassq~UUfirstquh4Nh5hh]q(csphinx.addnodes desc_annotation q)q}q(h$Xclass h%hph&hrh(Udesc_annotationqh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]qh>Xclass qq}q(h$Uh%hubaubcsphinx.addnodes desc_addname q)q}q(h$Xcircuits.app.daemon.h%hph&hrh(U desc_addnameqh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]qh>Xcircuits.app.daemon.qq}q(h$Uh%hubaubcsphinx.addnodes desc_name q)q}q(h$h}h%hph&hrh(U desc_nameqh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]qh>X daemonizeqq}q(h$Uh%hubaubcsphinx.addnodes desc_parameterlist q)q}q(h$Uh%hph&hrh(Udesc_parameterlistqh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]q(csphinx.addnodes desc_parameter q)q}q(h$X*argsh*}q(h,]h-]h.]h/]h2]uh%hh]qh>X*argsqq}q(h$Uh%hubah(Udesc_parameterqubh)q}q(h$X**kwargsh*}q(h,]h-]h.]h/]h2]uh%hh]qh>X**kwargsqq}q(h$Uh%hubah(hubeubeubcsphinx.addnodes desc_content q)q}q(h$Uh%hdh&hrh(U desc_contentqh*}q(h,]h-]h.]h/]h2]uh4Nh5hh]q(hK)q}q(h$X*Bases: :class:`circuits.core.events.Event`h%hh&U qh(hPh*}q(h,]h-]h.]h/]h2]uh4Kh5hh]q(h>XBases: qq}q(h$XBases: h%hubcsphinx.addnodes pending_xref q)q}q(h$X#:class:`circuits.core.events.Event`qh%hh&Nh(U pending_xrefqh*}q(UreftypeXclassUrefwarnqƉU reftargetqXcircuits.core.events.EventU refdomainXpyqh/]h.]U refexplicith,]h-]h2]UrefdocqXapi/circuits.app.daemonqUpy:classqh}U py:moduleqXcircuits.app.daemonquh4Nh]qcdocutils.nodes literal q)q}q(h$hh*}q(h,]h-]q(UxrefqhXpy-classqeh.]h/]h2]uh%hh]qh>Xcircuits.core.events.Eventqׅq}q(h$Uh%hubah(UliteralqubaubeubhK)q}q(h$Xdaemonize Eventqh%hh&X^/home/prologic/work/circuits/circuits/app/daemon.py:docstring of circuits.app.daemon.daemonizeqh(hPh*}q(h,]h-]h.]h/]h2]uh4Kh5hh]qh>Xdaemonize Eventqᅁq}q(h$hh%hubaubhK)q}q(h$XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.qh%hh&hh(hPh*}q(h,]h-]h.]h/]h2]uh4Kh5hh]qh>XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.q酁q}q(h$hh%hubaubhK)q}q(h$XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.qh%hh&hh(hPh*}q(h,]h-]h.]h/]h2]uh4Kh5hh]qh>XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.qq}q(h$hh%hubaubhK)q}q(h$X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h%hh&hh(hPh*}q(h,]h-]h.]h/]h2]uh4K h5hh]q(h>XEvery event has a qq}q(h$XEvery event has a h%hubh)q}q(h$X :attr:`name`qh%hh&Nh(hh*}q(UreftypeXattrhƉhXnameU refdomainXpyqh/]h.]U refexplicith,]h-]h2]hhhh}hhuh4Nh]rh)r}r(h$hh*}r(h,]h-]r(hhXpy-attrreh.]h/]h2]uh%hh]rh>Xnamerr}r (h$Uh%jubah(hubaubh>XA attribute that is used for matching the event with the handlers.r r }r (h$XA attribute that is used for matching the event with the handlers.h%hubeubcdocutils.nodes field_list r )r}r(h$Uh%hh&Nh(U field_listrh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rcdocutils.nodes field r)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]r(cdocutils.nodes field_name r)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]rh>X Variablesrr}r(h$Uh%jubah(U field_namer ubcdocutils.nodes field_body r!)r"}r#(h$Uh*}r$(h,]h-]h.]h/]h2]uh%jh]r%cdocutils.nodes bullet_list r&)r'}r((h$Uh*}r)(h,]h-]h.]h/]h2]uh%j"h]r*(cdocutils.nodes list_item r+)r,}r-(h$Uh*}r.(h,]h-]h.]h/]h2]uh%j'h]r/hK)r0}r1(h$Uh*}r2(h,]h-]h.]h/]h2]uh%j,h]r3(h)r4}r5(h$Uh*}r6(UreftypeUobjr7U reftargetXchannelsr8U refdomainhjh/]h.]U refexplicith,]h-]h2]uh%j0h]r9cdocutils.nodes strong r:)r;}r<(h$j8h*}r=(h,]h-]h.]h/]h2]uh%j4h]r>h>Xchannelsr?r@}rA(h$Uh%j;ubah(UstrongrBubah(hubh>X -- rCrD}rE(h$Uh%j0ubhK)rF}rG(h$Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rHh%j0h&hh(hPh*}rI(h,]h-]h.]h/]h2]uh4Kh]rJh>Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rKrL}rM(h$jHh%jFubaubhK)rN}rO(h$XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rPh%j0h&hh(hPh*}rQ(h,]h-]h.]h/]h2]uh4Kh]rRh>XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rSrT}rU(h$jPh%jNubaubeh(hPubah(U list_itemrVubj+)rW}rX(h$Uh*}rY(h,]h-]h.]h/]h2]uh%j'h]rZhK)r[}r\(h$Uh*}r](h,]h-]h.]h/]h2]uh%jWh]r^(h)r_}r`(h$Uh*}ra(Ureftypej7U reftargetXvaluerbU refdomainhjh/]h.]U refexplicith,]h-]h2]uh%j[h]rcj:)rd}re(h$jbh*}rf(h,]h-]h.]h/]h2]uh%j_h]rgh>Xvaluerhri}rj(h$Uh%jdubah(jBubah(hubh>X -- rkrl}rm(h$Uh%j[ubh>X this is a rnro}rp(h$X this is a h%j[ubh)rq}rr(h$X#:class:`circuits.core.values.Value`rsh%j[h&Nh(hh*}rt(UreftypeXclasshƉhXcircuits.core.values.ValueU refdomainXpyruh/]h.]U refexplicith,]h-]h2]hhhh}hhuh4Nh]rvh)rw}rx(h$jsh*}ry(h,]h-]rz(hjuXpy-classr{eh.]h/]h2]uh%jqh]r|h>Xcircuits.core.values.Valuer}r~}r(h$Uh%jwubah(hubaubh>XN object that holds the results returned by the handlers invoked for the event.rr}r(h$XN object that holds the results returned by the handlers invoked for the event.h%j[ubeh(hPubah(jVubj+)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%j'h]rhK)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]r(h)r}r(h$Uh*}r(Ureftypej7U reftargetXsuccessrU refdomainhjh/]h.]U refexplicith,]h-]h2]uh%jh]rj:)r}r(h$jh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xsuccessrr}r(h$Uh%jubah(jBubah(hubh>X -- rr}r(h$Uh%jubh>X%if this optional attribute is set to rr}r(h$X%if this optional attribute is set to h%jubh)r}r(h$X``True``h*}r(h,]h-]h.]h/]h2]uh%jh]rh>XTruerr}r(h$Uh%jubah(hubh>X, an associated event rr}r(h$X, an associated event h%jubh)r}r(h$X ``success``h*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xsuccessrr}r(h$Uh%jubah(hubh>X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(h$X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h%jubeh(hPubah(jVubj+)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%j'h]rhK)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]r(h)r}r(h$Uh*}r(Ureftypej7U reftargetXsuccess_channelsrU refdomainhjh/]h.]U refexplicith,]h-]h2]uh%jh]rj:)r}r(h$jh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xsuccess_channelsrr}r(h$Uh%jubah(jBubah(hubh>X -- rr}r(h$Uh%jubh>Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h$Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h%jubeh(hPubah(jVubj+)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%j'h]rhK)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]r(h)r}r(h$Uh*}r(Ureftypej7U reftargetXcompleterU refdomainhjh/]h.]U refexplicith,]h-]h2]uh%jh]rj:)r}r(h$jh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xcompleterr}r(h$Uh%jubah(jBubah(hubh>X -- rr}r(h$Uh%jubh>X%if this optional attribute is set to rr}r(h$X%if this optional attribute is set to h%jubh)r}r(h$X``True``h*}r(h,]h-]h.]h/]h2]uh%jh]rh>XTruerr}r(h$Uh%jubah(hubh>X, an associated event rr}r(h$X, an associated event h%jubh)r}r(h$X ``complete``h*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xcompleterr}r(h$Uh%jubah(hubh>X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rr}r(h$X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h%jubeh(hPubah(jVubj+)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%j'h]rhK)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]r(h)r}r(h$Uh*}r(Ureftypej7U reftargetXcomplete_channelsrU refdomainhjh/]h.]U refexplicith,]h-]h2]uh%jh]rj:)r}r(h$jh*}r(h,]h-]h.]h/]h2]uh%jh]r h>Xcomplete_channelsr r }r (h$Uh%jubah(jBubah(hubh>X -- r r}r(h$Uh%jubh>Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h$Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h%jubeh(hPubah(jVubeh(U bullet_listrubah(U field_bodyrubeh(UfieldrubaubhB)r}r(h$Uh%hh&Nh(hFh*}r(h/]h.]h,]h-]h2]Uentries]r(hIX.name (circuits.app.daemon.daemonize attribute)hUtrauh4Nh5hh]ubhc)r}r(h$Uh%hh&Nh(hfh*}r(hhhiXpyh/]h.]h,]h-]h2]hkX attributerhmjuh4Nh5hh]r(ho)r }r!(h$Xdaemonize.nameh%jh&U r"h(hsh*}r#(h/]r$hahvhwXcircuits.app.daemonr%r&}r'bh.]h,]h-]h2]r(hah|Xdaemonize.nameh~h}huh4Nh5hh]r)(h)r*}r+(h$Xnameh%j h&j"h(hh*}r,(h,]h-]h.]h/]h2]uh4Nh5hh]r-h>Xnamer.r/}r0(h$Uh%j*ubaubh)r1}r2(h$X = 'daemonize'h%j h&j"h(hh*}r3(h,]h-]h.]h/]h2]uh4Nh5hh]r4h>X = 'daemonize'r5r6}r7(h$Uh%j1ubaubeubh)r8}r9(h$Uh%jh&j"h(hh*}r:(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubeubeubhB)r;}r<(h$Uh%h"h&Nh(hFh*}r=(h/]h.]h,]h-]h2]Uentries]r>(hIX(deletepid (class in circuits.app.daemon)h Utr?auh4Nh5hh]ubhc)r@}rA(h$Uh%h"h&Nh(hfh*}rB(hhhiXpyrCh/]h.]h,]h-]h2]hkXclassrDhmjDuh4Nh5hh]rE(ho)rF}rG(h$Xdeletepid(*args, **kwargs)h%j@h&hrh(hsh*}rH(h/]rIh ahvhwXcircuits.app.daemonrJrK}rLbh.]h,]h-]h2]rMh ah|X deletepidrNh~Uhuh4Nh5hh]rO(h)rP}rQ(h$Xclass h%jFh&hrh(hh*}rR(h,]h-]h.]h/]h2]uh4Nh5hh]rSh>Xclass rTrU}rV(h$Uh%jPubaubh)rW}rX(h$Xcircuits.app.daemon.h%jFh&hrh(hh*}rY(h,]h-]h.]h/]h2]uh4Nh5hh]rZh>Xcircuits.app.daemon.r[r\}r](h$Uh%jWubaubh)r^}r_(h$jNh%jFh&hrh(hh*}r`(h,]h-]h.]h/]h2]uh4Nh5hh]rah>X deletepidrbrc}rd(h$Uh%j^ubaubh)re}rf(h$Uh%jFh&hrh(hh*}rg(h,]h-]h.]h/]h2]uh4Nh5hh]rh(h)ri}rj(h$X*argsh*}rk(h,]h-]h.]h/]h2]uh%jeh]rlh>X*argsrmrn}ro(h$Uh%jiubah(hubh)rp}rq(h$X**kwargsh*}rr(h,]h-]h.]h/]h2]uh%jeh]rsh>X**kwargsrtru}rv(h$Uh%jpubah(hubeubeubh)rw}rx(h$Uh%j@h&hrh(hh*}ry(h,]h-]h.]h/]h2]uh4Nh5hh]rz(hK)r{}r|(h$X*Bases: :class:`circuits.core.events.Event`h%jwh&hh(hPh*}r}(h,]h-]h.]h/]h2]uh4Kh5hh]r~(h>XBases: rr}r(h$XBases: h%j{ubh)r}r(h$X#:class:`circuits.core.events.Event`rh%j{h&Nh(hh*}r(UreftypeXclasshƉhXcircuits.core.events.EventU refdomainXpyrh/]h.]U refexplicith,]h-]h2]hhhjNhhuh4Nh]rh)r}r(h$jh*}r(h,]h-]r(hjXpy-classreh.]h/]h2]uh%jh]rh>Xcircuits.core.events.Eventrr}r(h$Uh%jubah(hubaubeubhK)r}r(h$X"deletepid Eventrh%jwh&X^/home/prologic/work/circuits/circuits/app/daemon.py:docstring of circuits.app.daemon.deletepidrh(hPh*}r(h,]h-]h.]h/]h2]uh4Kh5hh]rh>X"deletepid Eventrr}r(h$jh%jubaubhK)r}r(h$XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rh%jwh&jh(hPh*}r(h,]h-]h.]h/]h2]uh4Kh5hh]rh>XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rr}r(h$jh%jubaubhK)r}r(h$XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rh%jwh&jh(hPh*}r(h,]h-]h.]h/]h2]uh4Kh5hh]rh>XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rr}r(h$jh%jubaubhK)r}r(h$X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h%jwh&jh(hPh*}r(h,]h-]h.]h/]h2]uh4K h5hh]r(h>XEvery event has a rr}r(h$XEvery event has a h%jubh)r}r(h$X :attr:`name`rh%jh&Nh(hh*}r(UreftypeXattrhƉhXnameU refdomainXpyrh/]h.]U refexplicith,]h-]h2]hhhjNhhuh4Nh]rh)r}r(h$jh*}r(h,]h-]r(hjXpy-attrreh.]h/]h2]uh%jh]rh>Xnamerr}r(h$Uh%jubah(hubaubh>XA attribute that is used for matching the event with the handlers.rr}r(h$XA attribute that is used for matching the event with the handlers.h%jubeubj )r}r(h$Uh%jwh&Nh(jh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rj)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]r(j)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]rh>X Variablesrr}r(h$Uh%jubah(j ubj!)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]rj&)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]r(j+)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]rhK)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]r(h)r}r(h$Uh*}r(Ureftypej7U reftargetXchannelsrU refdomainjCh/]h.]U refexplicith,]h-]h2]uh%jh]rj:)r}r(h$jh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xchannelsrr}r(h$Uh%jubah(jBubah(hubh>X -- rr}r(h$Uh%jubhK)r}r(h$Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rh%jh&jh(hPh*}r(h,]h-]h.]h/]h2]uh4Kh]rh>Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rr}r(h$jh%jubaubhK)r}r(h$XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rh%jh&jh(hPh*}r(h,]h-]h.]h/]h2]uh4Kh]rh>XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rr}r(h$jh%jubaubeh(hPubah(jVubj+)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]rhK)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]r(h)r }r (h$Uh*}r (Ureftypej7U reftargetXvaluer U refdomainjCh/]h.]U refexplicith,]h-]h2]uh%jh]r j:)r}r(h$j h*}r(h,]h-]h.]h/]h2]uh%j h]rh>Xvaluerr}r(h$Uh%jubah(jBubah(hubh>X -- rr}r(h$Uh%jubh>X this is a rr}r(h$X this is a h%jubh)r}r(h$X#:class:`circuits.core.values.Value`rh%jh&Nh(hh*}r(UreftypeXclasshƉhXcircuits.core.values.ValueU refdomainXpyrh/]h.]U refexplicith,]h-]h2]hhhjNhhuh4Nh]r h)r!}r"(h$jh*}r#(h,]h-]r$(hjXpy-classr%eh.]h/]h2]uh%jh]r&h>Xcircuits.core.values.Valuer'r(}r)(h$Uh%j!ubah(hubaubh>XN object that holds the results returned by the handlers invoked for the event.r*r+}r,(h$XN object that holds the results returned by the handlers invoked for the event.h%jubeh(hPubah(jVubj+)r-}r.(h$Uh*}r/(h,]h-]h.]h/]h2]uh%jh]r0hK)r1}r2(h$Uh*}r3(h,]h-]h.]h/]h2]uh%j-h]r4(h)r5}r6(h$Uh*}r7(Ureftypej7U reftargetXsuccessr8U refdomainjCh/]h.]U refexplicith,]h-]h2]uh%j1h]r9j:)r:}r;(h$j8h*}r<(h,]h-]h.]h/]h2]uh%j5h]r=h>Xsuccessr>r?}r@(h$Uh%j:ubah(jBubah(hubh>X -- rArB}rC(h$Uh%j1ubh>X%if this optional attribute is set to rDrE}rF(h$X%if this optional attribute is set to h%j1ubh)rG}rH(h$X``True``h*}rI(h,]h-]h.]h/]h2]uh%j1h]rJh>XTruerKrL}rM(h$Uh%jGubah(hubh>X, an associated event rNrO}rP(h$X, an associated event h%j1ubh)rQ}rR(h$X ``success``h*}rS(h,]h-]h.]h/]h2]uh%j1h]rTh>XsuccessrUrV}rW(h$Uh%jQubah(hubh>X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rXrY}rZ(h$X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h%j1ubeh(hPubah(jVubj+)r[}r\(h$Uh*}r](h,]h-]h.]h/]h2]uh%jh]r^hK)r_}r`(h$Uh*}ra(h,]h-]h.]h/]h2]uh%j[h]rb(h)rc}rd(h$Uh*}re(Ureftypej7U reftargetXsuccess_channelsrfU refdomainjCh/]h.]U refexplicith,]h-]h2]uh%j_h]rgj:)rh}ri(h$jfh*}rj(h,]h-]h.]h/]h2]uh%jch]rkh>Xsuccess_channelsrlrm}rn(h$Uh%jhubah(jBubah(hubh>X -- rorp}rq(h$Uh%j_ubh>Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rrrs}rt(h$Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h%j_ubeh(hPubah(jVubj+)ru}rv(h$Uh*}rw(h,]h-]h.]h/]h2]uh%jh]rxhK)ry}rz(h$Uh*}r{(h,]h-]h.]h/]h2]uh%juh]r|(h)r}}r~(h$Uh*}r(Ureftypej7U reftargetXcompleterU refdomainjCh/]h.]U refexplicith,]h-]h2]uh%jyh]rj:)r}r(h$jh*}r(h,]h-]h.]h/]h2]uh%j}h]rh>Xcompleterr}r(h$Uh%jubah(jBubah(hubh>X -- rr}r(h$Uh%jyubh>X%if this optional attribute is set to rr}r(h$X%if this optional attribute is set to h%jyubh)r}r(h$X``True``h*}r(h,]h-]h.]h/]h2]uh%jyh]rh>XTruerr}r(h$Uh%jubah(hubh>X, an associated event rr}r(h$X, an associated event h%jyubh)r}r(h$X ``complete``h*}r(h,]h-]h.]h/]h2]uh%jyh]rh>Xcompleterr}r(h$Uh%jubah(hubh>X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rr}r(h$X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h%jyubeh(hPubah(jVubj+)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]rhK)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]r(h)r}r(h$Uh*}r(Ureftypej7U reftargetXcomplete_channelsrU refdomainjCh/]h.]U refexplicith,]h-]h2]uh%jh]rj:)r}r(h$jh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xcomplete_channelsrr}r(h$Uh%jubah(jBubah(hubh>X -- rr}r(h$Uh%jubh>Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h$Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h%jubeh(hPubah(jVubeh(jubah(jubeh(jubaubhB)r}r(h$Uh%jwh&Nh(hFh*}r(h/]h.]h,]h-]h2]Uentries]r(hIX.name (circuits.app.daemon.deletepid attribute)hUtrauh4Nh5hh]ubhc)r}r(h$Uh%jwh&Nh(hfh*}r(hhhiXpyh/]h.]h,]h-]h2]hkX attributerhmjuh4Nh5hh]r(ho)r}r(h$Xdeletepid.nameh%jh&j"h(hsh*}r(h/]rhahvhwXcircuits.app.daemonrr}rbh.]h,]h-]h2]rhah|Xdeletepid.nameh~jNhuh4Nh5hh]r(h)r}r(h$Xnameh%jh&j"h(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>Xnamerr}r(h$Uh%jubaubh)r}r(h$X = 'deletepid'h%jh&j"h(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>X = 'deletepid'rr}r(h$Uh%jubaubeubh)r}r(h$Uh%jh&j"h(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubeubeubhB)r}r(h$Uh%h"h&Nh(hFh*}r(h/]h.]h,]h-]h2]Uentries]r(hIX'writepid (class in circuits.app.daemon)hUtrauh4Nh5hh]ubhc)r}r(h$Uh%h"h&Nh(hfh*}r(hhhiXpyrh/]h.]h,]h-]h2]hkXclassrhmjuh4Nh5hh]r(ho)r}r(h$Xwritepid(*args, **kwargs)h%jh&hrh(hsh*}r(h/]rhahvhwXcircuits.app.daemonrr}rbh.]h,]h-]h2]rhah|Xwritepidrh~Uhuh4Nh5hh]r(h)r}r(h$Xclass h%jh&hrh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>Xclass rr}r(h$Uh%jubaubh)r}r(h$Xcircuits.app.daemon.h%jh&hrh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>Xcircuits.app.daemon.rr}r(h$Uh%jubaubh)r}r(h$jh%jh&hrh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>Xwritepidrr }r (h$Uh%jubaubh)r }r (h$Uh%jh&hrh(hh*}r (h,]h-]h.]h/]h2]uh4Nh5hh]r(h)r}r(h$X*argsh*}r(h,]h-]h.]h/]h2]uh%j h]rh>X*argsrr}r(h$Uh%jubah(hubh)r}r(h$X**kwargsh*}r(h,]h-]h.]h/]h2]uh%j h]rh>X**kwargsrr}r(h$Uh%jubah(hubeubeubh)r}r(h$Uh%jh&hrh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]r (hK)r!}r"(h$X*Bases: :class:`circuits.core.events.Event`h%jh&hh(hPh*}r#(h,]h-]h.]h/]h2]uh4Kh5hh]r$(h>XBases: r%r&}r'(h$XBases: h%j!ubh)r(}r)(h$X#:class:`circuits.core.events.Event`r*h%j!h&Nh(hh*}r+(UreftypeXclasshƉhXcircuits.core.events.EventU refdomainXpyr,h/]h.]U refexplicith,]h-]h2]hhhjhhuh4Nh]r-h)r.}r/(h$j*h*}r0(h,]h-]r1(hj,Xpy-classr2eh.]h/]h2]uh%j(h]r3h>Xcircuits.core.events.Eventr4r5}r6(h$Uh%j.ubah(hubaubeubhK)r7}r8(h$X"writepid Eventr9h%jh&X]/home/prologic/work/circuits/circuits/app/daemon.py:docstring of circuits.app.daemon.writepidr:h(hPh*}r;(h,]h-]h.]h/]h2]uh4Kh5hh]r<h>X"writepid Eventr=r>}r?(h$j9h%j7ubaubhK)r@}rA(h$XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rBh%jh&j:h(hPh*}rC(h,]h-]h.]h/]h2]uh4Kh5hh]rDh>XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.rErF}rG(h$jBh%j@ubaubhK)rH}rI(h$XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rJh%jh&j:h(hPh*}rK(h,]h-]h.]h/]h2]uh4Kh5hh]rLh>XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.rMrN}rO(h$jJh%jHubaubhK)rP}rQ(h$X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h%jh&j:h(hPh*}rR(h,]h-]h.]h/]h2]uh4K h5hh]rS(h>XEvery event has a rTrU}rV(h$XEvery event has a h%jPubh)rW}rX(h$X :attr:`name`rYh%jPh&Nh(hh*}rZ(UreftypeXattrhƉhXnameU refdomainXpyr[h/]h.]U refexplicith,]h-]h2]hhhjhhuh4Nh]r\h)r]}r^(h$jYh*}r_(h,]h-]r`(hj[Xpy-attrraeh.]h/]h2]uh%jWh]rbh>Xnamercrd}re(h$Uh%j]ubah(hubaubh>XA attribute that is used for matching the event with the handlers.rfrg}rh(h$XA attribute that is used for matching the event with the handlers.h%jPubeubj )ri}rj(h$Uh%jh&Nh(jh*}rk(h,]h-]h.]h/]h2]uh4Nh5hh]rlj)rm}rn(h$Uh*}ro(h,]h-]h.]h/]h2]uh%jih]rp(j)rq}rr(h$Uh*}rs(h,]h-]h.]h/]h2]uh%jmh]rth>X Variablesrurv}rw(h$Uh%jqubah(j ubj!)rx}ry(h$Uh*}rz(h,]h-]h.]h/]h2]uh%jmh]r{j&)r|}r}(h$Uh*}r~(h,]h-]h.]h/]h2]uh%jxh]r(j+)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%j|h]rhK)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]r(h)r}r(h$Uh*}r(Ureftypej7U reftargetXchannelsrU refdomainjh/]h.]U refexplicith,]h-]h2]uh%jh]rj:)r}r(h$jh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xchannelsrr}r(h$Uh%jubah(jBubah(hubh>X -- rr}r(h$Uh%jubhK)r}r(h$Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rh%jh&j:h(hPh*}r(h,]h-]h.]h/]h2]uh4Kh]rh>Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rr}r(h$jh%jubaubhK)r}r(h$XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rh%jh&j:h(hPh*}r(h,]h-]h.]h/]h2]uh4Kh]rh>XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rr}r(h$jh%jubaubeh(hPubah(jVubj+)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%j|h]rhK)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]r(h)r}r(h$Uh*}r(Ureftypej7U reftargetXvaluerU refdomainjh/]h.]U refexplicith,]h-]h2]uh%jh]rj:)r}r(h$jh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xvaluerr}r(h$Uh%jubah(jBubah(hubh>X -- rr}r(h$Uh%jubh>X this is a rr}r(h$X this is a h%jubh)r}r(h$X#:class:`circuits.core.values.Value`rh%jh&Nh(hh*}r(UreftypeXclasshƉhXcircuits.core.values.ValueU refdomainXpyrh/]h.]U refexplicith,]h-]h2]hhhjhhuh4Nh]rh)r}r(h$jh*}r(h,]h-]r(hjXpy-classreh.]h/]h2]uh%jh]rh>Xcircuits.core.values.Valuerr}r(h$Uh%jubah(hubaubh>XN object that holds the results returned by the handlers invoked for the event.rr}r(h$XN object that holds the results returned by the handlers invoked for the event.h%jubeh(hPubah(jVubj+)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%j|h]rhK)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]r(h)r}r(h$Uh*}r(Ureftypej7U reftargetXsuccessrU refdomainjh/]h.]U refexplicith,]h-]h2]uh%jh]rj:)r}r(h$jh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xsuccessrr}r(h$Uh%jubah(jBubah(hubh>X -- rr}r(h$Uh%jubh>X%if this optional attribute is set to rr}r(h$X%if this optional attribute is set to h%jubh)r}r(h$X``True``h*}r(h,]h-]h.]h/]h2]uh%jh]rh>XTruerr}r(h$Uh%jubah(hubh>X, an associated event rr}r(h$X, an associated event h%jubh)r}r(h$X ``success``h*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xsuccessrr}r(h$Uh%jubah(hubh>X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(h$X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h%jubeh(hPubah(jVubj+)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%j|h]rhK)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]r(h)r }r (h$Uh*}r (Ureftypej7U reftargetXsuccess_channelsr U refdomainjh/]h.]U refexplicith,]h-]h2]uh%jh]r j:)r}r(h$j h*}r(h,]h-]h.]h/]h2]uh%j h]rh>Xsuccess_channelsrr}r(h$Uh%jubah(jBubah(hubh>X -- rr}r(h$Uh%jubh>Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h$Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h%jubeh(hPubah(jVubj+)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%j|h]rhK)r}r (h$Uh*}r!(h,]h-]h.]h/]h2]uh%jh]r"(h)r#}r$(h$Uh*}r%(Ureftypej7U reftargetXcompleter&U refdomainjh/]h.]U refexplicith,]h-]h2]uh%jh]r'j:)r(}r)(h$j&h*}r*(h,]h-]h.]h/]h2]uh%j#h]r+h>Xcompleter,r-}r.(h$Uh%j(ubah(jBubah(hubh>X -- r/r0}r1(h$Uh%jubh>X%if this optional attribute is set to r2r3}r4(h$X%if this optional attribute is set to h%jubh)r5}r6(h$X``True``h*}r7(h,]h-]h.]h/]h2]uh%jh]r8h>XTruer9r:}r;(h$Uh%j5ubah(hubh>X, an associated event r<r=}r>(h$X, an associated event h%jubh)r?}r@(h$X ``complete``h*}rA(h,]h-]h.]h/]h2]uh%jh]rBh>XcompleterCrD}rE(h$Uh%j?ubah(hubh>X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rFrG}rH(h$X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h%jubeh(hPubah(jVubj+)rI}rJ(h$Uh*}rK(h,]h-]h.]h/]h2]uh%j|h]rLhK)rM}rN(h$Uh*}rO(h,]h-]h.]h/]h2]uh%jIh]rP(h)rQ}rR(h$Uh*}rS(Ureftypej7U reftargetXcomplete_channelsrTU refdomainjh/]h.]U refexplicith,]h-]h2]uh%jMh]rUj:)rV}rW(h$jTh*}rX(h,]h-]h.]h/]h2]uh%jQh]rYh>Xcomplete_channelsrZr[}r\(h$Uh%jVubah(jBubah(hubh>X -- r]r^}r_(h$Uh%jMubh>Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r`ra}rb(h$Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h%jMubeh(hPubah(jVubeh(jubah(jubeh(jubaubhB)rc}rd(h$Uh%jh&Nh(hFh*}re(h/]h.]h,]h-]h2]Uentries]rf(hIX-name (circuits.app.daemon.writepid attribute)h Utrgauh4Nh5hh]ubhc)rh}ri(h$Uh%jh&Nh(hfh*}rj(hhhiXpyh/]h.]h,]h-]h2]hkX attributerkhmjkuh4Nh5hh]rl(ho)rm}rn(h$X writepid.nameh%jhh&j"h(hsh*}ro(h/]rph ahvhwXcircuits.app.daemonrqrr}rsbh.]h,]h-]h2]rth ah|X writepid.nameh~jhuh4Nh5hh]ru(h)rv}rw(h$Xnameh%jmh&j"h(hh*}rx(h,]h-]h.]h/]h2]uh4Nh5hh]ryh>Xnamerzr{}r|(h$Uh%jvubaubh)r}}r~(h$X = 'writepid'h%jmh&j"h(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>X = 'writepid'rr}r(h$Uh%j}ubaubeubh)r}r(h$Uh%jhh&j"h(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubeubeubhB)r}r(h$Uh%h"h&Nh(hFh*}r(h/]h.]h,]h-]h2]Uentries]r(hIX%Daemon (class in circuits.app.daemon)hUtrauh4Nh5hh]ubhc)r}r(h$Uh%h"h&Nh(hfh*}r(hhhiXpyrh/]h.]h,]h-]h2]hkXclassrhmjuh4Nh5hh]r(ho)r}r(h$XDaemon(*args, **kwargs)h%jh&hrh(hsh*}r(h/]rhahvhwXcircuits.app.daemonrr}rbh.]h,]h-]h2]rhah|XDaemonrh~Uhuh4Nh5hh]r(h)r}r(h$Xclass h%jh&hrh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>Xclass rr}r(h$Uh%jubaubh)r}r(h$Xcircuits.app.daemon.h%jh&hrh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>Xcircuits.app.daemon.rr}r(h$Uh%jubaubh)r}r(h$jh%jh&hrh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>XDaemonrr}r(h$Uh%jubaubh)r}r(h$Uh%jh&hrh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]r(h)r}r(h$X*argsh*}r(h,]h-]h.]h/]h2]uh%jh]rh>X*argsrr}r(h$Uh%jubah(hubh)r}r(h$X**kwargsh*}r(h,]h-]h.]h/]h2]uh%jh]rh>X**kwargsrr}r(h$Uh%jubah(hubeubeubh)r}r(h$Uh%jh&hrh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]r(hK)r}r(h$X2Bases: :class:`circuits.core.components.Component`rh%jh&hh(hPh*}r(h,]h-]h.]h/]h2]uh4Kh5hh]r(h>XBases: rr}r(h$XBases: h%jubh)r}r(h$X+:class:`circuits.core.components.Component`rh%jh&Nh(hh*}r(UreftypeXclasshƉhX"circuits.core.components.ComponentU refdomainXpyrh/]h.]U refexplicith,]h-]h2]hhhjhhuh4Nh]rh)r}r(h$jh*}r(h,]h-]r(hjXpy-classreh.]h/]h2]uh%jh]rh>X"circuits.core.components.Componentrr}r(h$Uh%jubah(hubaubeubhK)r}r(h$XDaemon Componentrh%jh&X[/home/prologic/work/circuits/circuits/app/daemon.py:docstring of circuits.app.daemon.Daemonrh(hPh*}r(h,]h-]h.]h/]h2]uh4Kh5hh]rh>XDaemon Componentrr}r(h$jh%jubaubj )r}r(h$Uh%jh&Nh(jh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rj)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]r(j)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]rh>X Parametersrr}r(h$Uh%jubah(j ubj!)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]rj&)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]r(j+)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]rhK)r}r(h$Uh*}r(h,]h-]h.]h/]h2]uh%jh]r(j:)r}r(h$Xpidfileh*}r(h,]h-]h.]h/]h2]uh%jh]r h>Xpidfiler r }r (h$Uh%jubah(jBubh>X (r r}r(h$Uh%jubh)r}r(h$Uh*}r(Ureftypej7U reftargetXstr or unicoderU refdomainjh/]h.]U refexplicith,]h-]h2]uh%jh]rcdocutils.nodes emphasis r)r}r(h$jh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xstr or unicoderr}r(h$Uh%jubah(Uemphasisrubah(hubh>X)r}r(h$Uh%jubh>X -- r r!}r"(h$Uh%jubh>X .pid filenamer#r$}r%(h$X .pid filenamer&h%jubeh(hPubah(jVubj+)r'}r((h$Uh*}r)(h,]h-]h.]h/]h2]uh%jh]r*hK)r+}r,(h$Uh*}r-(h,]h-]h.]h/]h2]uh%j'h]r.(j:)r/}r0(h$Xstdinh*}r1(h,]h-]h.]h/]h2]uh%j+h]r2h>Xstdinr3r4}r5(h$Uh%j/ubah(jBubh>X (r6r7}r8(h$Uh%j+ubh)r9}r:(h$Uh*}r;(Ureftypej7U reftargetXstr or unicoder<U refdomainjh/]h.]U refexplicith,]h-]h2]uh%j+h]r=j)r>}r?(h$j<h*}r@(h,]h-]h.]h/]h2]uh%j9h]rAh>Xstr or unicoderBrC}rD(h$Uh%j>ubah(jubah(hubh>X)rE}rF(h$Uh%j+ubh>X -- rGrH}rI(h$Uh%j+ubh>Xfilename to log stdinrJrK}rL(h$Xfilename to log stdinrMh%j+ubeh(hPubah(jVubj+)rN}rO(h$Uh*}rP(h,]h-]h.]h/]h2]uh%jh]rQhK)rR}rS(h$Uh*}rT(h,]h-]h.]h/]h2]uh%jNh]rU(j:)rV}rW(h$Xstdouth*}rX(h,]h-]h.]h/]h2]uh%jRh]rYh>XstdoutrZr[}r\(h$Uh%jVubah(jBubh>X (r]r^}r_(h$Uh%jRubh)r`}ra(h$Uh*}rb(Ureftypej7U reftargetXstr or unicodercU refdomainjh/]h.]U refexplicith,]h-]h2]uh%jRh]rdj)re}rf(h$jch*}rg(h,]h-]h.]h/]h2]uh%j`h]rhh>Xstr or unicoderirj}rk(h$Uh%jeubah(jubah(hubh>X)rl}rm(h$Uh%jRubh>X -- rnro}rp(h$Uh%jRubh>Xfilename to log stdoutrqrr}rs(h$Xfilename to log stdoutrth%jRubeh(hPubah(jVubj+)ru}rv(h$Uh*}rw(h,]h-]h.]h/]h2]uh%jh]rxhK)ry}rz(h$Uh*}r{(h,]h-]h.]h/]h2]uh%juh]r|(j:)r}}r~(h$Xstderrh*}r(h,]h-]h.]h/]h2]uh%jyh]rh>Xstderrrr}r(h$Uh%j}ubah(jBubh>X (rr}r(h$Uh%jyubh)r}r(h$Uh*}r(Ureftypej7U reftargetXstr or unicoderU refdomainjh/]h.]U refexplicith,]h-]h2]uh%jyh]rj)r}r(h$jh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xstr or unicoderr}r(h$Uh%jubah(jubah(hubh>X)r}r(h$Uh%jyubh>X -- rr}r(h$Uh%jyubh>Xfilename to log stderrrr}r(h$Xfilename to log stderrrh%jyubeh(hPubah(jVubeh(jubah(jubeh(jubaubhK)r}r(h$X4initializes x; see x.__class__.__doc__ for signaturerh%jh&jh(hPh*}r(h,]h-]h.]h/]h2]uh4Kh5hh]rh>X4initializes x; see x.__class__.__doc__ for signaturerr}r(h$jh%jubaubhB)r}r(h$Uh%jh&Nh(hFh*}r(h/]h.]h,]h-]h2]Uentries]r(hIX.channel (circuits.app.daemon.Daemon attribute)h Utrauh4Nh5hh]ubhc)r}r(h$Uh%jh&Nh(hfh*}r(hhhiXpyh/]h.]h,]h-]h2]hkX attributerhmjuh4Nh5hh]r(ho)r}r(h$XDaemon.channelh%jh&j"h(hsh*}r(h/]rh ahvhwXcircuits.app.daemonrr}rbh.]h,]h-]h2]rh ah|XDaemon.channelh~jhuh4Nh5hh]r(h)r}r(h$Xchannelh%jh&j"h(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>Xchannelrr}r(h$Uh%jubaubh)r}r(h$X = 'daemon'h%jh&j"h(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>X = 'daemon'rr}r(h$Uh%jubaubeubh)r}r(h$Uh%jh&j"h(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)r}r(h$Uh%jh&Nh(hFh*}r(h/]h.]h,]h-]h2]Uentries]r(hIX*init() (circuits.app.daemon.Daemon method)hUtrauh4Nh5hh]ubhc)r}r(h$Uh%jh&Nh(hfh*}r(hhhiXpyh/]h.]h,]h-]h2]hkXmethodrhmjuh4Nh5hh]r(ho)r}r(h$XVDaemon.init(pidfile, path='/', stdin=None, stdout=None, stderr=None, channel='daemon')h%jh&hrh(hsh*}r(h/]rhahvhwXcircuits.app.daemonrr}rbh.]h,]h-]h2]rhah|X Daemon.inith~jhuh4Nh5hh]r(h)r}r(h$Xinith%jh&hrh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>Xinitrr}r(h$Uh%jubaubh)r}r(h$Uh%jh&hrh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]r(h)r}r(h$Xpidfileh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xpidfilerr}r(h$Uh%jubah(hubh)r}r(h$Xpath='/'h*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xpath='/'rr}r(h$Uh%jubah(hubh)r}r(h$X stdin=Noneh*}r(h,]h-]h.]h/]h2]uh%jh]rh>X stdin=Nonerr}r(h$Uh%jubah(hubh)r}r(h$X stdout=Noneh*}r(h,]h-]h.]h/]h2]uh%jh]rh>X stdout=Nonerr}r(h$Uh%jubah(hubh)r}r(h$X stderr=Noneh*}r(h,]h-]h.]h/]h2]uh%jh]rh>X stderr=Nonerr}r(h$Uh%jubah(hubh)r }r (h$Xchannel='daemon'h*}r (h,]h-]h.]h/]h2]uh%jh]r h>Xchannel='daemon'r r}r(h$Uh%j ubah(hubeubeubh)r}r(h$Uh%jh&hrh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)r}r(h$Uh%jh&Nh(hFh*}r(h/]h.]h,]h-]h2]Uentries]r(hIX/deletepid() (circuits.app.daemon.Daemon method)h Utrauh4Nh5hh]ubhc)r}r(h$Uh%jh&Nh(hfh*}r(hhhiXpyh/]h.]h,]h-]h2]hkXmethodrhmjuh4Nh5hh]r(ho)r}r(h$XDaemon.deletepid()h%jh&hrh(hsh*}r(h/]r h ahvhwXcircuits.app.daemonr!r"}r#bh.]h,]h-]h2]r$h ah|XDaemon.deletepidh~jhuh4Nh5hh]r%(h)r&}r'(h$X deletepidh%jh&hrh(hh*}r((h,]h-]h.]h/]h2]uh4Nh5hh]r)h>X deletepidr*r+}r,(h$Uh%j&ubaubh)r-}r.(h$Uh%jh&hrh(hh*}r/(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubh)r0}r1(h$Uh%jh&hrh(hh*}r2(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)r3}r4(h$Uh%jh&Nh(hFh*}r5(h/]h.]h,]h-]h2]Uentries]r6(hIX.writepid() (circuits.app.daemon.Daemon method)h Utr7auh4Nh5hh]ubhc)r8}r9(h$Uh%jh&Nh(hfh*}r:(hhhiXpyh/]h.]h,]h-]h2]hkXmethodr;hmj;uh4Nh5hh]r<(ho)r=}r>(h$XDaemon.writepid()h%j8h&hrh(hsh*}r?(h/]r@h ahvhwXcircuits.app.daemonrArB}rCbh.]h,]h-]h2]rDh ah|XDaemon.writepidh~jhuh4Nh5hh]rE(h)rF}rG(h$Xwritepidh%j=h&hrh(hh*}rH(h,]h-]h.]h/]h2]uh4Nh5hh]rIh>XwritepidrJrK}rL(h$Uh%jFubaubh)rM}rN(h$Uh%j=h&hrh(hh*}rO(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubh)rP}rQ(h$Uh%j8h&hrh(hh*}rR(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)rS}rT(h$Uh%jh&Nh(hFh*}rU(h/]h.]h,]h-]h2]Uentries]rV(hIX/daemonize() (circuits.app.daemon.Daemon method)hUtrWauh4Nh5hh]ubhc)rX}rY(h$Uh%jh&Nh(hfh*}rZ(hhhiXpyh/]h.]h,]h-]h2]hkXmethodr[hmj[uh4Nh5hh]r\(ho)r]}r^(h$XDaemon.daemonize()h%jXh&hrh(hsh*}r_(h/]r`hahvhwXcircuits.app.daemonrarb}rcbh.]h,]h-]h2]rdhah|XDaemon.daemonizeh~jhuh4Nh5hh]re(h)rf}rg(h$X daemonizeh%j]h&hrh(hh*}rh(h,]h-]h.]h/]h2]uh4Nh5hh]rih>X daemonizerjrk}rl(h$Uh%jfubaubh)rm}rn(h$Uh%j]h&hrh(hh*}ro(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubh)rp}rq(h$Uh%jXh&hrh(hh*}rr(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)rs}rt(h$Uh%jh&Nh(hFh*}ru(h/]h.]h,]h-]h2]Uentries]rv(hIX0registered() (circuits.app.daemon.Daemon method)hUtrwauh4Nh5hh]ubhc)rx}ry(h$Uh%jh&Nh(hfh*}rz(hhhiXpyh/]h.]h,]h-]h2]hkXmethodr{hmj{uh4Nh5hh]r|(ho)r}}r~(h$X%Daemon.registered(component, manager)h%jxh&hrh(hsh*}r(h/]rhahvhwXcircuits.app.daemonrr}rbh.]h,]h-]h2]rhah|XDaemon.registeredh~jhuh4Nh5hh]r(h)r}r(h$X registeredh%j}h&hrh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>X registeredrr}r(h$Uh%jubaubh)r}r(h$Uh%j}h&hrh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]r(h)r}r(h$X componenth*}r(h,]h-]h.]h/]h2]uh%jh]rh>X componentrr}r(h$Uh%jubah(hubh)r}r(h$Xmanagerh*}r(h,]h-]h.]h/]h2]uh%jh]rh>Xmanagerrr}r(h$Uh%jubah(hubeubeubh)r}r(h$Uh%jxh&hrh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubhB)r}r(h$Uh%jh&Nh(hFh*}r(h/]h.]h,]h-]h2]Uentries]r(hIX0on_started() (circuits.app.daemon.Daemon method)hUtrauh4Nh5hh]ubhc)r}r(h$Uh%jh&Nh(hfh*}r(hhhiXpyh/]h.]h,]h-]h2]hkXmethodrhmjuh4Nh5hh]r(ho)r}r(h$XDaemon.on_started(component)rh%jh&hrh(hsh*}r(h/]rhahvhwXcircuits.app.daemonrr}rbh.]h,]h-]h2]rhah|XDaemon.on_startedh~jhuh4Nh5hh]r(h)r}r(h$X on_startedh%jh&hrh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh>X on_startedrr}r(h$Uh%jubaubh)r}r(h$Uh%jh&hrh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]rh)r}r(h$X componenth*}r(h,]h-]h.]h/]h2]uh%jh]rh>X componentrr}r(h$Uh%jubah(hubaubeubh)r}r(h$Uh%jh&hrh(hh*}r(h,]h-]h.]h/]h2]uh4Nh5hh]ubeubeubeubeubah$UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh5hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh;NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlr NUexpose_internalsr NUsectsubtitle_xformr U source_linkr NUrfc_referencesr NUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh'Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongr Uinput_encoding_error_handlerr!jUauto_id_prefixr"Uidr#Udoctitle_xformr$Ustrip_elements_with_classesr%NU _config_filesr&]Ufile_insertion_enabledr'U raw_enabledr(KU dump_settingsr)NubUsymbol_footnote_startr*KUidsr+}r,(hj]hj}h jh jmh j=h jFhh"hjhhphjhj hjhjhjh1cdocutils.nodes target r-)r.}r/(h$Uh%h"h&hEh(Utargetr0h*}r1(h,]h/]r2h1ah.]Uismodh-]h2]uh4Kh5hh]ubh juUsubstitution_namesr3}r4h(h5h*}r5(h,]h/]h.]Usourceh'h-]h2]uU footnotesr6]r7Urefidsr8}r9ub.circuits-3.1.0/docs/build/doctrees/api/circuits.node.events.doctree0000644000014400001440000004653512425011103026366 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.node.events.packetqX circuits.node.events.packet.nameqX circuits.node.events.remote.nameqXcircuits.node.events.remoteq Xcircuits.node.events moduleq NuUsubstitution_defsq }q Uparse_messagesq ]qcdocutils.nodes system_message q)q}q(U rawsourceqUUparentqcsphinx.addnodes desc_content q)q}q(hUhcsphinx.addnodes desc q)q}q(hUhcdocutils.nodes section q)q}q(hUhhUsourceqXE/home/prologic/work/circuits/docs/source/api/circuits.node.events.rstqUtagnameqUsectionq U attributesq!}q"(Udupnamesq#]Uclassesq$]Ubackrefsq%]Uidsq&]q'(Xmodule-circuits.node.eventsq(Ucircuits-node-events-moduleq)eUnamesq*]q+h auUlineq,KUdocumentq-hUchildrenq.]q/(cdocutils.nodes title q0)q1}q2(hXcircuits.node.events moduleq3hhhhhUtitleq4h!}q5(h#]h$]h%]h&]h*]uh,Kh-hh.]q6cdocutils.nodes Text q7Xcircuits.node.events moduleq8q9}q:(hh3hh1ubaubcsphinx.addnodes index q;)q<}q=(hUhhhU q>hUindexq?h!}q@(h&]h%]h#]h$]h*]Uentries]qA(UsingleqBXcircuits.node.events (module)Xmodule-circuits.node.eventsUtqCauh,Kh-hh.]ubcdocutils.nodes paragraph qD)qE}qF(hXEventsqGhhhXV/home/prologic/work/circuits/circuits/node/events.py:docstring of circuits.node.eventsqHhU paragraphqIh!}qJ(h#]h$]h%]h&]h*]uh,Kh-hh.]qKh7XEventsqLqM}qN(hhGhhEubaubhD)qO}qP(hX...qQhhhhHhhIh!}qR(h#]h$]h%]h&]h*]uh,Kh-hh.]qSh7X...qTqU}qV(hhQhhOubaubh;)qW}qX(hUhhhNhh?h!}qY(h&]h%]h#]h$]h*]Uentries]qZ(hBX&packet (class in circuits.node.events)hUtq[auh,Nh-hh.]ubh)q\}q](hUhhhNhUdescq^h!}q_(Unoindexq`UdomainqaXpyqbh&]h%]h#]h$]h*]UobjtypeqcXclassqdUdesctypeqehduh,Nh-hh.]qf(csphinx.addnodes desc_signature qg)qh}qi(hXpacket(*args, **kwargs)hh\hU qjhUdesc_signatureqkh!}ql(h&]qmhaUmoduleqncdocutils.nodes reprunicode qoXcircuits.node.eventsqpqq}qrbh%]h#]h$]h*]qshaUfullnameqtXpacketquUclassqvUUfirstqwuh,Nh-hh.]qx(csphinx.addnodes desc_annotation qy)qz}q{(hXclass hhhhhjhUdesc_annotationq|h!}q}(h#]h$]h%]h&]h*]uh,Nh-hh.]q~h7Xclass qq}q(hUhhzubaubcsphinx.addnodes desc_addname q)q}q(hXcircuits.node.events.hhhhhjhU desc_addnameqh!}q(h#]h$]h%]h&]h*]uh,Nh-hh.]qh7Xcircuits.node.events.qq}q(hUhhubaubcsphinx.addnodes desc_name q)q}q(hhuhhhhhjhU desc_nameqh!}q(h#]h$]h%]h&]h*]uh,Nh-hh.]qh7Xpacketqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhhhhjhUdesc_parameterlistqh!}q(h#]h$]h%]h&]h*]uh,Nh-hh.]q(csphinx.addnodes desc_parameter q)q}q(hX*argsh!}q(h#]h$]h%]h&]h*]uhhh.]qh7X*argsqq}q(hUhhubahUdesc_parameterqubh)q}q(hX**kwargsh!}q(h#]h$]h%]h&]h*]uhhh.]qh7X**kwargsqq}q(hUhhubahhubeubeubh)q}q(hUhh\hhjhU desc_contentqh!}q(h#]h$]h%]h&]h*]uh,Nh-hh.]q(hD)q}q(hX*Bases: :class:`circuits.core.events.Event`hhhU qhhIh!}q(h#]h$]h%]h&]h*]uh,Kh-hh.]q(h7XBases: qq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX#:class:`circuits.core.events.Event`qhhhNhU pending_xrefqh!}q(UreftypeXclassUrefwarnqU reftargetqXcircuits.core.events.EventU refdomainXpyqh&]h%]U refexplicith#]h$]h*]UrefdocqXapi/circuits.node.eventsqUpy:classqhuU py:moduleqXcircuits.node.eventsquh,Nh.]qcdocutils.nodes literal q)q}q(hhh!}q(h#]h$]q(UxrefqhXpy-classqeh%]h&]h*]uhhh.]qh7Xcircuits.core.events.Eventq΅q}q(hUhhubahUliteralqubaubeubhD)q}q(hX packet EventqhhhX]/home/prologic/work/circuits/circuits/node/events.py:docstring of circuits.node.events.packetqhhIh!}q(h#]h$]h%]h&]h*]uh,Kh-hh.]qh7X packet Eventq؅q}q(hhhhubaubhD)q}q(hXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.qhhhhhhIh!}q(h#]h$]h%]h&]h*]uh,Kh-hh.]qh7XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.qq}q(hhhhubaubhD)q}q(hXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.qhhhhhhIh!}q(h#]h$]h%]h&]h*]uh,Kh-hh.]qh7XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.q腁q}q(hhhhubaubhD)q}q(hX_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.hhhhhhIh!}q(h#]h$]h%]h&]h*]uh,K h-hh.]q(h7XEvery event has a qq}q(hXEvery event has a hhubh)q}q(hX :attr:`name`qhhhNhhh!}q(UreftypeXattrhhXnameU refdomainXpyqh&]h%]U refexplicith#]h$]h*]hhhhuhhuh,Nh.]qh)q}q(hhh!}q(h#]h$]q(hhXpy-attrqeh%]h&]h*]uhhh.]qh7Xnameqq}r(hUhhubahhubaubh7XA attribute that is used for matching the event with the handlers.rr}r(hXA attribute that is used for matching the event with the handlers.hhubeubcdocutils.nodes field_list r)r}r(hUhhhNhU field_listrh!}r(h#]h$]h%]h&]h*]uh,Nh-hh.]r cdocutils.nodes field r )r }r (hUh!}r (h#]h$]h%]h&]h*]uhjh.]r(cdocutils.nodes field_name r)r}r(hUh!}r(h#]h$]h%]h&]h*]uhj h.]rh7X Variablesrr}r(hUhjubahU field_namerubcdocutils.nodes field_body r)r}r(hUh!}r(h#]h$]h%]h&]h*]uhj h.]rcdocutils.nodes bullet_list r)r}r(hUh!}r (h#]h$]h%]h&]h*]uhjh.]r!(cdocutils.nodes list_item r")r#}r$(hUh!}r%(h#]h$]h%]h&]h*]uhjh.]r&hD)r'}r((hUh!}r)(h#]h$]h%]h&]h*]uhj#h.]r*(h)r+}r,(hUh!}r-(UreftypeUobjr.U reftargetXchannelsr/U refdomainhbh&]h%]U refexplicith#]h$]h*]uhj'h.]r0cdocutils.nodes strong r1)r2}r3(hj/h!}r4(h#]h$]h%]h&]h*]uhj+h.]r5h7Xchannelsr6r7}r8(hUhj2ubahUstrongr9ubahhubh7X -- r:r;}r<(hUhj'ubhD)r=}r>(hXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.r?hj'hhhhIh!}r@(h#]h$]h%]h&]h*]uh,Kh.]rAh7Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rBrC}rD(hj?hj=ubaubhD)rE}rF(hXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rGhj'hhhhIh!}rH(h#]h$]h%]h&]h*]uh,Kh.]rIh7XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rJrK}rL(hjGhjEubaubehhIubahU list_itemrMubj")rN}rO(hUh!}rP(h#]h$]h%]h&]h*]uhjh.]rQhD)rR}rS(hUh!}rT(h#]h$]h%]h&]h*]uhjNh.]rU(h)rV}rW(hUh!}rX(Ureftypej.U reftargetXvaluerYU refdomainhbh&]h%]U refexplicith#]h$]h*]uhjRh.]rZj1)r[}r\(hjYh!}r](h#]h$]h%]h&]h*]uhjVh.]r^h7Xvaluer_r`}ra(hUhj[ubahj9ubahhubh7X -- rbrc}rd(hUhjRubh7X this is a rerf}rg(hX this is a hjRubh)rh}ri(hX#:class:`circuits.core.values.Value`rjhjRhNhhh!}rk(UreftypeXclasshhXcircuits.core.values.ValueU refdomainXpyrlh&]h%]U refexplicith#]h$]h*]hhhhuhhuh,Nh.]rmh)rn}ro(hjjh!}rp(h#]h$]rq(hjlXpy-classrreh%]h&]h*]uhjhh.]rsh7Xcircuits.core.values.Valuertru}rv(hUhjnubahhubaubh7XN object that holds the results returned by the handlers invoked for the event.rwrx}ry(hXN object that holds the results returned by the handlers invoked for the event.hjRubehhIubahjMubj")rz}r{(hUh!}r|(h#]h$]h%]h&]h*]uhjh.]r}hD)r~}r(hUh!}r(h#]h$]h%]h&]h*]uhjzh.]r(h)r}r(hUh!}r(Ureftypej.U reftargetXsuccessrU refdomainhbh&]h%]U refexplicith#]h$]h*]uhj~h.]rj1)r}r(hjh!}r(h#]h$]h%]h&]h*]uhjh.]rh7Xsuccessrr}r(hUhjubahj9ubahhubh7X -- rr}r(hUhj~ubh7X%if this optional attribute is set to rr}r(hX%if this optional attribute is set to hj~ubh)r}r(hX``True``h!}r(h#]h$]h%]h&]h*]uhj~h.]rh7XTruerr}r(hUhjubahhubh7X, an associated event rr}r(hX, an associated event hj~ubh)r}r(hX ``success``h!}r(h#]h$]h%]h&]h*]uhj~h.]rh7Xsuccessrr}r(hUhjubahhubh7X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(hX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.hj~ubehhIubahjMubj")r}r(hUh!}r(h#]h$]h%]h&]h*]uhjh.]rhD)r}r(hUh!}r(h#]h$]h%]h&]h*]uhjh.]r(h)r}r(hUh!}r(Ureftypej.U reftargetXsuccess_channelsrU refdomainhbh&]h%]U refexplicith#]h$]h*]uhjh.]rj1)r}r(hjh!}r(h#]h$]h%]h&]h*]uhjh.]rh7Xsuccess_channelsrr}r(hUhjubahj9ubahhubh7X -- rr}r(hUhjubh7Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(hXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rhjubehhIubahjMubj")r}r(hUh!}r(h#]h$]h%]h&]h*]uhjh.]rhD)r}r(hUh!}r(h#]h$]h%]h&]h*]uhjh.]r(h)r}r(hUh!}r(Ureftypej.U reftargetXcompleterU refdomainhbh&]h%]U refexplicith#]h$]h*]uhjh.]rj1)r}r(hjh!}r(h#]h$]h%]h&]h*]uhjh.]rh7Xcompleterr}r(hUhjubahj9ubahhubh7X -- rr}r(hUhjubh7X%if this optional attribute is set to rr}r(hX%if this optional attribute is set to hjubh)r}r(hX``True``h!}r(h#]h$]h%]h&]h*]uhjh.]rh7XTruerr}r(hUhjubahhubh7X, an associated event rr}r(hX, an associated event hjubh)r}r(hX ``complete``h!}r(h#]h$]h%]h&]h*]uhjh.]rh7Xcompleterr}r(hUhjubahhubh7X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.rr}r(hX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.hjubehhIubahjMubj")r}r(hUh!}r(h#]h$]h%]h&]h*]uhjh.]rhD)r}r(hUh!}r(h#]h$]h%]h&]h*]uhjh.]r(h)r}r(hUh!}r(Ureftypej.U reftargetXcomplete_channelsrU refdomainhbh&]h%]U refexplicith#]h$]h*]uhjh.]rj1)r}r(hjh!}r(h#]h$]h%]h&]h*]uhjh.]rh7Xcomplete_channelsrr}r(hUhjubahj9ubahhubh7X -- rr}r(hUhjubh7Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr }r (hXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r hjubehhIubahjMubehU bullet_listr ubahU field_bodyr ubehUfieldrubaubh;)r}r(hUhhhNhh?h!}r(h&]h%]h#]h$]h*]Uentries]r(hBX,name (circuits.node.events.packet attribute)hUtrauh,Nh-hh.]ubh)r}r(hUhhhNhh^h!}r(h`haXpyh&]h%]h#]h$]h*]hcX attributerhejuh,Nh-hh.]r(hg)r}r(hX packet.namehjhU rhhkh!}r(h&]rhahnhoXcircuits.node.eventsrr}r bh%]h#]h$]h*]r!hahtX packet.namehvhuhwuh,Nh-hh.]r"(h)r#}r$(hXnamehjhjhhh!}r%(h#]h$]h%]h&]h*]uh,Nh-hh.]r&h7Xnamer'r(}r)(hUhj#ubaubhy)r*}r+(hX = 'packet'hjhjhh|h!}r,(h#]h$]h%]h&]h*]uh,Nh-hh.]r-h7X = 'packet'r.r/}r0(hUhj*ubaubeubh)r1}r2(hUhjhjhhh!}r3(h#]h$]h%]h&]h*]uh,Nh-hh.]ubeubeubeubh;)r4}r5(hUhhhNhh?h!}r6(h&]h%]h#]h$]h*]Uentries]r7(hBX&remote (class in circuits.node.events)h Utr8auh,Nh-hh.]ubheubhNhh^h!}r9(h`haXpyh&]h%]h#]h$]h*]hcXclassr:hej:uh,Nh-hh.]r;(hg)r<}r=(hX!remote(event, node, channel=None)hhhhjhhkh!}r>(h&]r?h ahnhoXcircuits.node.eventsr@rA}rBbh%]h#]h$]h*]rCh ahtXremoterDhvUhwuh,Nh-hh.]rE(hy)rF}rG(hXclass hj<hhjhh|h!}rH(h#]h$]h%]h&]h*]uh,Nh-hh.]rIh7Xclass rJrK}rL(hUhjFubaubh)rM}rN(hXcircuits.node.events.hj<hhjhhh!}rO(h#]h$]h%]h&]h*]uh,Nh-hh.]rPh7Xcircuits.node.events.rQrR}rS(hUhjMubaubh)rT}rU(hjDhj<hhjhhh!}rV(h#]h$]h%]h&]h*]uh,Nh-hh.]rWh7XremoterXrY}rZ(hUhjTubaubh)r[}r\(hUhj<hhjhhh!}r](h#]h$]h%]h&]h*]uh,Nh-hh.]r^(h)r_}r`(hXeventh!}ra(h#]h$]h%]h&]h*]uhj[h.]rbh7Xeventrcrd}re(hUhj_ubahhubh)rf}rg(hXnodeh!}rh(h#]h$]h%]h&]h*]uhj[h.]rih7Xnoderjrk}rl(hUhjfubahhubh)rm}rn(hX channel=Noneh!}ro(h#]h$]h%]h&]h*]uhj[h.]rph7X channel=Nonerqrr}rs(hUhjmubahhubeubeubheubhhjhhh!}rt(h#]h$]h%]h&]h*]uh,Nh-hh.]ru(hD)rv}rw(hX*Bases: :class:`circuits.core.events.Event`rxhhhhhhIh!}ry(h#]h$]h%]h&]h*]uh,Kh-hh.]rz(h7XBases: r{r|}r}(hXBases: hjvubh)r~}r(hX#:class:`circuits.core.events.Event`rhjvhNhhh!}r(UreftypeXclasshhXcircuits.core.events.EventU refdomainXpyrh&]h%]U refexplicith#]h$]h*]hhhjDhhuh,Nh.]rh)r}r(hjh!}r(h#]h$]r(hjXpy-classreh%]h&]h*]uhj~h.]rh7Xcircuits.core.events.Eventrr}r(hUhjubahhubaubeubhD)r}r(hX remote EventrhhhX]/home/prologic/work/circuits/circuits/node/events.py:docstring of circuits.node.events.remoterhhIh!}r(h#]h$]h%]h&]h*]uh,Kh-hh.]rh7X remote Eventrr}r(hjhjubaubhD)r}r(hX...rhhhjhhIh!}r(h#]h$]h%]h&]h*]uh,Kh-hh.]rh7X...rr}r(hjhjubaubh;)r}r(hUhhhNhh?h!}r(h&]h%]h#]h$]h*]Uentries]r(hBX,name (circuits.node.events.remote attribute)hUtrauh,Nh-hh.]ubh)r}r(hUhhhNhh^h!}r(h`haXpyh&]h%]h#]h$]h*]hcX attributerhejuh,Nh-hh.]r(hg)r}r(hX remote.namerhjhjhhkh!}r(h&]rhahnhoXcircuits.node.eventsrr}rbh%]h#]h$]h*]rhahtX remote.namehvjDhwuh,Nh-hh.]r(h)r}r(hXnamehjhjhhh!}r(h#]h$]h%]h&]h*]uh,Nh-hh.]rh7Xnamerr}r(hUhjubaubhy)r}r(hX = 'remote'hjhjhh|h!}r(h#]h$]h%]h&]h*]uh,Nh-hh.]rh7X = 'remote'rr}r(hUhjubaubeubh)r}r(hUhjhjhhh!}r(h#]h$]h%]h&]h*]uh,Nh-hh.]ubeubeubhjhUsystem_messagerh!}r(h#]UlevelKh&]h%]Usourcejh$]h*]UlineKUtypeUINFOruh,Kh-hh.]rhD)r}r(hUh!}r(h#]h$]h%]h&]h*]uhhh.]rh7XeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.rr}r(hUhjubahhIubaubaUcurrent_sourcerNU decorationrNUautofootnote_startrKUnameidsr}r(hhhhhhh h h h)uh.]rhahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh-hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh4NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamr NUpep_file_url_templater Upep-%04dr Uexit_status_levelr KUconfigr NUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8r U_sourcer!hUgettext_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_filesr/]Ufile_insertion_enabledr0U raw_enabledr1KU dump_settingsr2NubUsymbol_footnote_startr3KUidsr4}r5(hhhh(cdocutils.nodes target r6)r7}r8(hUhhhh>hUtargetr9h!}r:(h#]h&]r;h(ah%]Uismodh$]h*]uh,Kh-hh.]ubhjhjh)hh j<uUsubstitution_namesr<}r=hh-h!}r>(h#]h&]h%]Usourcehh$]h*]uU footnotesr?]r@UrefidsrA}rBub.circuits-3.1.0/docs/build/doctrees/api/circuits.web.websockets.dispatcher.doctree0000644000014400001440000003325512425011106031206 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X)circuits.web.websockets.dispatcher moduleqNX?circuits.web.websockets.dispatcher.WebSocketsDispatcher.channelqX7circuits.web.websockets.dispatcher.WebSocketsDispatcherquUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hU)circuits-web-websockets-dispatcher-moduleqhhhhuUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXS/home/prologic/work/circuits/docs/source/api/circuits.web.websockets.dispatcher.rstqUtagnameqUsectionqU attributesq}q(Udupnamesq ]Uclassesq!]Ubackrefsq"]Uidsq#]q$(X)module-circuits.web.websockets.dispatcherq%heUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hX)circuits.web.websockets.dispatcher moduleq.hhhhhUtitleq/h}q0(h ]h!]h"]h#]h&]uh(Kh)hh]q1cdocutils.nodes Text q2X)circuits.web.websockets.dispatcher moduleq3q4}q5(hh.hh,ubaubcsphinx.addnodes index q6)q7}q8(hUhhhU q9hUindexq:h}q;(h#]h"]h ]h!]h&]Uentries]q<(Usingleq=X+circuits.web.websockets.dispatcher (module)X)module-circuits.web.websockets.dispatcherUtq>auh(Kh)hh]ubh6)q?}q@(hUhhhNhh:h}qA(h#]h"]h ]h!]h&]Uentries]qB(h=XBWebSocketsDispatcher (class in circuits.web.websockets.dispatcher)hUtqCauh(Nh)hh]ubcsphinx.addnodes desc qD)qE}qF(hUhhhNhUdescqGh}qH(UnoindexqIUdomainqJXpyh#]h"]h ]h!]h&]UobjtypeqKXclassqLUdesctypeqMhLuh(Nh)hh]qN(csphinx.addnodes desc_signature qO)qP}qQ(hXFWebSocketsDispatcher(path=None, wschannel='wsserver', *args, **kwargs)hhEhU qRhUdesc_signatureqSh}qT(h#]qUhaUmoduleqVcdocutils.nodes reprunicode qWX"circuits.web.websockets.dispatcherqXqY}qZbh"]h ]h!]h&]q[haUfullnameq\XWebSocketsDispatcherq]Uclassq^UUfirstq_uh(Nh)hh]q`(csphinx.addnodes desc_annotation qa)qb}qc(hXclass hhPhhRhUdesc_annotationqdh}qe(h ]h!]h"]h#]h&]uh(Nh)hh]qfh2Xclass qgqh}qi(hUhhbubaubcsphinx.addnodes desc_addname qj)qk}ql(hX#circuits.web.websockets.dispatcher.hhPhhRhU desc_addnameqmh}qn(h ]h!]h"]h#]h&]uh(Nh)hh]qoh2X#circuits.web.websockets.dispatcher.qpqq}qr(hUhhkubaubcsphinx.addnodes desc_name qs)qt}qu(hh]hhPhhRhU desc_nameqvh}qw(h ]h!]h"]h#]h&]uh(Nh)hh]qxh2XWebSocketsDispatcherqyqz}q{(hUhhtubaubcsphinx.addnodes desc_parameterlist q|)q}}q~(hUhhPhhRhUdesc_parameterlistqh}q(h ]h!]h"]h#]h&]uh(Nh)hh]q(csphinx.addnodes desc_parameter q)q}q(hX path=Noneh}q(h ]h!]h"]h#]h&]uhh}h]qh2X path=Noneqq}q(hUhhubahUdesc_parameterqubh)q}q(hXwschannel='wsserver'h}q(h ]h!]h"]h#]h&]uhh}h]qh2Xwschannel='wsserver'qq}q(hUhhubahhubh)q}q(hX*argsh}q(h ]h!]h"]h#]h&]uhh}h]qh2X*argsqq}q(hUhhubahhubh)q}q(hX**kwargsh}q(h ]h!]h"]h#]h&]uhh}h]qh2X**kwargsqq}q(hUhhubahhubeubeubcsphinx.addnodes desc_content q)q}q(hUhhEhhRhU desc_contentqh}q(h ]h!]h"]h#]h&]uh(Nh)hh]q(cdocutils.nodes paragraph q)q}q(hX6Bases: :class:`circuits.core.components.BaseComponent`qhhhU qhU paragraphqh}q(h ]h!]h"]h#]h&]uh(Kh)hh]q(h2XBases: qq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX/:class:`circuits.core.components.BaseComponent`qhhhhhU pending_xrefqh}q(UreftypeXclassUrefwarnqU reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqh#]h"]U refexplicith ]h!]h&]UrefdocqX&api/circuits.web.websockets.dispatcherqUpy:classqh]U py:moduleqX"circuits.web.websockets.dispatcherquh(Kh]qcdocutils.nodes literal q)q}q(hhh}q(h ]h!]q(UxrefqhXpy-classqeh"]h#]h&]uhhh]qh2X&circuits.core.components.BaseComponentqȅq}q(hUhhubahUliteralqubaubeubh)q}q(hXThis class implements an RFC 6455 compliant WebSockets dispatcher that handles the WebSockets handshake and upgrades the connection.qhhhX/home/prologic/work/circuits/circuits/web/websockets/dispatcher.py:docstring of circuits.web.websockets.dispatcher.WebSocketsDispatcherqhhh}q(h ]h!]h"]h#]h&]uh(Kh)hh]qh2XThis class implements an RFC 6455 compliant WebSockets dispatcher that handles the WebSockets handshake and upgrades the connection.q҅q}q(hhhhubaubh)q}q(hXMThe dispatcher listens on its channel for :class:`~.web.events.Request` events and tries to match them with a given path. Upon a match, the request is checked for the proper Opening Handshake information. If successful, the dispatcher confirms the establishment of the connection to the client. Any subsequent data from the client is handled as a WebSocket data frame, decoded and fired as a :class:`~.sockets.Read` event on the ``wschannel`` passed to the constructor. The data from :class:`~.net.events.write` events on that channel is encoded as data frames and forwarded to the client.hhhhhhh}q(h ]h!]h"]h#]h&]uh(Kh)hh]q(h2X*The dispatcher listens on its channel for qمq}q(hX*The dispatcher listens on its channel for hhubh)q}q(hX:class:`~.web.events.Request`qhhhNhhh}q(UreftypeXclassU refspecificqhhXweb.events.RequestU refdomainXpyqh#]h"]U refexplicith ]h!]h&]hhhh]hhuh(Nh]qh)q}q(hhh}q(h ]h!]q(hhXpy-classqeh"]h#]h&]uhhh]qh2XRequestq酁q}q(hUhhubahhubaubh2XA events and tries to match them with a given path. Upon a match, the request is checked for the proper Opening Handshake information. If successful, the dispatcher confirms the establishment of the connection to the client. Any subsequent data from the client is handled as a WebSocket data frame, decoded and fired as a q셁q}q(hXA events and tries to match them with a given path. Upon a match, the request is checked for the proper Opening Handshake information. If successful, the dispatcher confirms the establishment of the connection to the client. Any subsequent data from the client is handled as a WebSocket data frame, decoded and fired as a hhubh)q}q(hX:class:`~.sockets.Read`qhhhNhhh}q(UreftypeXclasshhhX sockets.ReadU refdomainXpyqh#]h"]U refexplicith ]h!]h&]hhhh]hhuh(Nh]qh)q}q(hhh}q(h ]h!]q(hhXpy-classqeh"]h#]h&]uhhh]qh2XReadqq}q(hUhhubahhubaubh2X event on the qq}r(hX event on the hhubh)r}r(hX ``wschannel``h}r(h ]h!]h"]h#]h&]uhhh]rh2X wschannelrr}r(hUhjubahhubh2X* passed to the constructor. The data from rr }r (hX* passed to the constructor. The data from hhubh)r }r (hX:class:`~.net.events.write`r hhhNhhh}r(UreftypeXclasshhhXnet.events.writeU refdomainXpyrh#]h"]U refexplicith ]h!]h&]hhhh]hhuh(Nh]rh)r}r(hj h}r(h ]h!]r(hjXpy-classreh"]h#]h&]uhj h]rh2Xwriterr}r(hUhjubahhubaubh2XN events on that channel is encoded as data frames and forwarded to the client.rr}r(hXN events on that channel is encoded as data frames and forwarded to the client.hhubeubh)r}r(hXFiring a :class:`~.sockets.Close` event on the ``wschannel`` closes the connection in an orderly fashion (i.e. as specified by the WebSocket protocol).hhhhhhh}r(h ]h!]h"]h#]h&]uh(Kh)hh]r (h2X Firing a r!r"}r#(hX Firing a hjubh)r$}r%(hX:class:`~.sockets.Close`r&hjhNhhh}r'(UreftypeXclasshhhX sockets.CloseU refdomainXpyr(h#]h"]U refexplicith ]h!]h&]hhhh]hhuh(Nh]r)h)r*}r+(hj&h}r,(h ]h!]r-(hj(Xpy-classr.eh"]h#]h&]uhj$h]r/h2XCloser0r1}r2(hUhj*ubahhubaubh2X event on the r3r4}r5(hX event on the hjubh)r6}r7(hX ``wschannel``h}r8(h ]h!]h"]h#]h&]uhjh]r9h2X wschannelr:r;}r<(hUhj6ubahhubh2X[ closes the connection in an orderly fashion (i.e. as specified by the WebSocket protocol).r=r>}r?(hX[ closes the connection in an orderly fashion (i.e. as specified by the WebSocket protocol).hjubeubcdocutils.nodes field_list r@)rA}rB(hUhhhNhU field_listrCh}rD(h ]h!]h"]h#]h&]uh(Nh)hh]rEcdocutils.nodes field rF)rG}rH(hUh}rI(h ]h!]h"]h#]h&]uhjAh]rJ(cdocutils.nodes field_name rK)rL}rM(hUh}rN(h ]h!]h"]h#]h&]uhjGh]rOh2X ParametersrPrQ}rR(hUhjLubahU field_namerSubcdocutils.nodes field_body rT)rU}rV(hUh}rW(h ]h!]h"]h#]h&]uhjGh]rXcdocutils.nodes bullet_list rY)rZ}r[(hUh}r\(h ]h!]h"]h#]h&]uhjUh]r](cdocutils.nodes list_item r^)r_}r`(hUh}ra(h ]h!]h"]h#]h&]uhjZh]rbh)rc}rd(hUh}re(h ]h!]h"]h#]h&]uhj_h]rf(cdocutils.nodes strong rg)rh}ri(hXpathh}rj(h ]h!]h"]h#]h&]uhjch]rkh2Xpathrlrm}rn(hUhjhubahUstrongroubh2X -- rprq}rr(hUhjcubh2Xithe path to handle. Requests that start with this path are considered to be WebSocket Opening Handshakes.rsrt}ru(hXithe path to handle. Requests that start with this path are considered to be WebSocket Opening Handshakes.rvhjcubehhubahU list_itemrwubj^)rx}ry(hUh}rz(h ]h!]h"]h#]h&]uhjZh]r{h)r|}r}(hUh}r~(h ]h!]h"]h#]h&]uhjxh]r(jg)r}r(hX wschannelh}r(h ]h!]h"]h#]h&]uhj|h]rh2X wschannelrr}r(hUhjubahjoubh2X -- rr}r(hUhj|ubh2Xthe channel on which rr}r(hXthe channel on which hj|ubh)r}r(hX:class:`~.sockets.read`rhj|hNhhh}r(UreftypeXclasshhhX sockets.readU refdomainXpyrh#]h"]U refexplicith ]h!]h&]hhhh]hhuh(Nh]rh)r}r(hjh}r(h ]h!]r(hjXpy-classreh"]h#]h&]uhjh]rh2Xreadrr}r(hUhjubahhubaubh2X4 events from the client will be delivered and where rr}r(hX4 events from the client will be delivered and where hj|ubh)r}r(hX:class:`~.net.events.write`rhj|hNhhh}r(UreftypeXclasshhhXnet.events.writeU refdomainXpyrh#]h"]U refexplicith ]h!]h&]hhhh]hhuh(Nh]rh)r}r(hjh}r(h ]h!]r(hjXpy-classreh"]h#]h&]uhjh]rh2Xwriterr}r(hUhjubahhubaubh2X& events to the client will be sent to.rr}r(hX& events to the client will be sent to.hj|ubehhubahjwubehU bullet_listrubahU field_bodyrubehUfieldrubaubh6)r}r(hUhhhNhh:h}r(h#]h"]h ]h!]h&]Uentries]r(h=XKchannel (circuits.web.websockets.dispatcher.WebSocketsDispatcher attribute)hUtrauh(Nh)hh]ubhD)r}r(hUhhhNhhGh}r(hIhJXpyh#]h"]h ]h!]h&]hKX attributerhMjuh(Nh)hh]r(hO)r}r(hXWebSocketsDispatcher.channelrhjhU rhhSh}r(h#]rhahVhWX"circuits.web.websockets.dispatcherrr}rbh"]h ]h!]h&]rhah\XWebSocketsDispatcher.channelh^h]h_uh(Nh)hh]r(hs)r}r(hXchannelhjhjhhvh}r(h ]h!]h"]h#]h&]uh(Nh)hh]rh2Xchannelrr}r(hUhjubaubha)r}r(hX = 'web'hjhjhhdh}r(h ]h!]h"]h#]h&]uh(Nh)hh]rh2X = 'web'rr}r(hUhjubaubeubh)r}r(hUhjhjhhh}r(h ]h!]h"]h#]h&]uh(Nh)hh]ubeubeubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh)hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh/NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetr Uoutput_encoding_error_handlerr Ustrictr U sectnum_xformr KUdump_transformsr NU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingr U utf-8-sigr!U_disable_configr"NU id_prefixr#UU tab_widthr$KUerror_encodingr%UUTF-8r&U_sourcer'hUgettext_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_handlerr0j Uauto_id_prefixr1Uidr2Udoctitle_xformr3Ustrip_elements_with_classesr4NU _config_filesr5]Ufile_insertion_enabledr6U raw_enabledr7KU dump_settingsr8NubUsymbol_footnote_startr9KUidsr:}r;(hjhhPhhh%cdocutils.nodes target r<)r=}r>(hUhhhh9hUtargetr?h}r@(h ]h#]rAh%ah"]Uismodh!]h&]uh(Kh)hh]ubuUsubstitution_namesrB}rChh)h}rD(h ]h#]h"]Usourcehh!]h&]uU footnotesrE]rFUrefidsrG}rHub.circuits-3.1.0/docs/build/doctrees/api/circuits.node.client.doctree0000644000014400001440000002401112425011103026321 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X circuits.node.client.Client.sendqX!circuits.node.client.Client.closeqX#circuits.node.client.Client.channelqXcircuits.node.client moduleq NXcircuits.node.client.Clientq X#circuits.node.client.Client.connectq uUsubstitution_defsq }q Uparse_messagesq]qcdocutils.nodes system_message q)q}q(U rawsourceqUUparentqcsphinx.addnodes desc_content q)q}q(hUhcsphinx.addnodes desc q)q}q(hUhcdocutils.nodes section q)q}q(hUhhUsourceqXE/home/prologic/work/circuits/docs/source/api/circuits.node.client.rstqUtagnameq Usectionq!U attributesq"}q#(Udupnamesq$]Uclassesq%]Ubackrefsq&]Uidsq']q((Xmodule-circuits.node.clientq)Ucircuits-node-client-moduleq*eUnamesq+]q,h auUlineq-KUdocumentq.hUchildrenq/]q0(cdocutils.nodes title q1)q2}q3(hXcircuits.node.client moduleq4hhhhh Utitleq5h"}q6(h$]h%]h&]h']h+]uh-Kh.hh/]q7cdocutils.nodes Text q8Xcircuits.node.client moduleq9q:}q;(hh4hh2ubaubcsphinx.addnodes index q<)q=}q>(hUhhhU q?h Uindexq@h"}qA(h']h&]h$]h%]h+]Uentries]qB(UsingleqCXcircuits.node.client (module)Xmodule-circuits.node.clientUtqDauh-Kh.hh/]ubcdocutils.nodes paragraph qE)qF}qG(hXClientqHhhhXV/home/prologic/work/circuits/circuits/node/client.py:docstring of circuits.node.clientqIh U paragraphqJh"}qK(h$]h%]h&]h']h+]uh-Kh.hh/]qLh8XClientqMqN}qO(hhHhhFubaubhE)qP}qQ(hX...qRhhhhIh hJh"}qS(h$]h%]h&]h']h+]uh-Kh.hh/]qTh8X...qUqV}qW(hhRhhPubaubh<)qX}qY(hUhhhNh h@h"}qZ(h']h&]h$]h%]h+]Uentries]q[(hCX&Client (class in circuits.node.client)h Utq\auh-Nh.hh/]ubheubhNh Udescq]h"}q^(Unoindexq_Udomainq`Xpyh']h&]h$]h%]h+]UobjtypeqaXclassqbUdesctypeqchbuh-Nh.hh/]qd(csphinx.addnodes desc_signature qe)qf}qg(hX,Client(host, port, channel='node', **kwargs)hhhU qhh Udesc_signatureqih"}qj(h']qkh aUmoduleqlcdocutils.nodes reprunicode qmXcircuits.node.clientqnqo}qpbh&]h$]h%]h+]qqh aUfullnameqrXClientqsUclassqtUUfirstquuh-Nh.hh/]qv(csphinx.addnodes desc_annotation qw)qx}qy(hXclass hhfhhhh Udesc_annotationqzh"}q{(h$]h%]h&]h']h+]uh-Nh.hh/]q|h8Xclass q}q~}q(hUhhxubaubcsphinx.addnodes desc_addname q)q}q(hXcircuits.node.client.hhfhhhh U desc_addnameqh"}q(h$]h%]h&]h']h+]uh-Nh.hh/]qh8Xcircuits.node.client.qq}q(hUhhubaubcsphinx.addnodes desc_name q)q}q(hhshhfhhhh U desc_nameqh"}q(h$]h%]h&]h']h+]uh-Nh.hh/]qh8XClientqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhfhhhh Udesc_parameterlistqh"}q(h$]h%]h&]h']h+]uh-Nh.hh/]q(csphinx.addnodes desc_parameter q)q}q(hXhosth"}q(h$]h%]h&]h']h+]uhhh/]qh8Xhostqq}q(hUhhubah Udesc_parameterqubh)q}q(hXporth"}q(h$]h%]h&]h']h+]uhhh/]qh8Xportqq}q(hUhhubah hubh)q}q(hXchannel='node'h"}q(h$]h%]h&]h']h+]uhhh/]qh8Xchannel='node'qq}q(hUhhubah hubh)q}q(hX**kwargsh"}q(h$]h%]h&]h']h+]uhhh/]qh8X**kwargsqq}q(hUhhubah hubeubeubheubhhhh U desc_contentqh"}q(h$]h%]h&]h']h+]uh-Nh.hh/]q(hE)q}q(hX6Bases: :class:`circuits.core.components.BaseComponent`qhhhU qh hJh"}q(h$]h%]h&]h']h+]uh-Kh.hh/]q(h8XBases: qq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX/:class:`circuits.core.components.BaseComponent`qhhhNh U pending_xrefqh"}q(UreftypeXclassUrefwarnqȉU reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqh']h&]U refexplicith$]h%]h+]UrefdocqXapi/circuits.node.clientqUpy:classqhsU py:moduleqXcircuits.node.clientquh-Nh/]qcdocutils.nodes literal q)q}q(hhh"}q(h$]h%]q(UxrefqhXpy-classqeh&]h']h+]uhhh/]qh8X&circuits.core.components.BaseComponentqمq}q(hUhhubah UliteralqubaubeubhE)q}q(hXClientqhhhX]/home/prologic/work/circuits/circuits/node/client.py:docstring of circuits.node.client.Clientqh hJh"}q(h$]h%]h&]h']h+]uh-Kh.hh/]qh8XClientqㅁq}q(hhhhubaubhE)q}q(hX...qhhhhh hJh"}q(h$]h%]h&]h']h+]uh-Kh.hh/]qh8X...q녁q}q(hhhhubaubh<)q}q(hUhhhNh h@h"}q(h']h&]h$]h%]h+]Uentries]q(hCX/channel (circuits.node.client.Client attribute)hUtqauh-Nh.hh/]ubh)q}q(hUhhhNh h]h"}q(h_h`Xpyh']h&]h$]h%]h+]haX attributeqhchuh-Nh.hh/]q(he)q}q(hXClient.channelhhhU qh hih"}q(h']qhahlhmXcircuits.node.clientqq}qbh&]h$]h%]h+]rhahrXClient.channelhthshuuh-Nh.hh/]r(h)r}r(hXchannelhhhhh hh"}r(h$]h%]h&]h']h+]uh-Nh.hh/]rh8Xchannelrr}r(hUhjubaubhw)r }r (hX = 'node'hhhhh hzh"}r (h$]h%]h&]h']h+]uh-Nh.hh/]r h8X = 'node'r r}r(hUhj ubaubeubh)r}r(hUhhhhh hh"}r(h$]h%]h&]h']h+]uh-Nh.hh/]ubeubh<)r}r(hUhhhNh h@h"}r(h']h&]h$]h%]h+]Uentries]r(hCX,close() (circuits.node.client.Client method)hUtrauh-Nh.hh/]ubh)r}r(hUhhhNh h]h"}r(h_h`Xpyh']h&]h$]h%]h+]haXmethodrhcjuh-Nh.hh/]r(he)r}r(hXClient.close()hjhhhh hih"}r(h']r hahlhmXcircuits.node.clientr!r"}r#bh&]h$]h%]h+]r$hahrX Client.closehthshuuh-Nh.hh/]r%(h)r&}r'(hXclosehjhhhh hh"}r((h$]h%]h&]h']h+]uh-Nh.hh/]r)h8Xcloser*r+}r,(hUhj&ubaubh)r-}r.(hUhjhhhh hh"}r/(h$]h%]h&]h']h+]uh-Nh.hh/]ubeubh)r0}r1(hUhjhhhh hh"}r2(h$]h%]h&]h']h+]uh-Nh.hh/]ubeubh<)r3}r4(hUhhhNh h@h"}r5(h']h&]h$]h%]h+]Uentries]r6(hCX.connect() (circuits.node.client.Client method)h Utr7auh-Nh.hh/]ubh)r8}r9(hUhhhNh h]h"}r:(h_h`Xpyh']h&]h$]h%]h+]haXmethodr;hcj;uh-Nh.hh/]r<(he)r=}r>(hXClient.connect(host, port)hj8hhhh hih"}r?(h']r@h ahlhmXcircuits.node.clientrArB}rCbh&]h$]h%]h+]rDh ahrXClient.connecththshuuh-Nh.hh/]rE(h)rF}rG(hXconnecthj=hhhh hh"}rH(h$]h%]h&]h']h+]uh-Nh.hh/]rIh8XconnectrJrK}rL(hUhjFubaubh)rM}rN(hUhj=hhhh hh"}rO(h$]h%]h&]h']h+]uh-Nh.hh/]rP(h)rQ}rR(hXhosth"}rS(h$]h%]h&]h']h+]uhjMh/]rTh8XhostrUrV}rW(hUhjQubah hubh)rX}rY(hXporth"}rZ(h$]h%]h&]h']h+]uhjMh/]r[h8Xportr\r]}r^(hUhjXubah hubeubeubh)r_}r`(hUhj8hhhh hh"}ra(h$]h%]h&]h']h+]uh-Nh.hh/]ubeubh<)rb}rc(hUhhhNh h@h"}rd(h']h&]h$]h%]h+]Uentries]re(hCX+send() (circuits.node.client.Client method)hUtrfauh-Nh.hh/]ubh)rg}rh(hUhhhNh h]h"}ri(h_h`Xpyh']h&]h$]h%]h+]haXmethodrjhcjjuh-Nh.hh/]rk(he)rl}rm(hXClient.send(event, e)hjghhhh hih"}rn(h']rohahlhmXcircuits.node.clientrprq}rrbh&]h$]h%]h+]rshahrX Client.sendhthshuuh-Nh.hh/]rt(h)ru}rv(hXsendhjlhhhh hh"}rw(h$]h%]h&]h']h+]uh-Nh.hh/]rxh8Xsendryrz}r{(hUhjuubaubh)r|}r}(hUhjlhhhh hh"}r~(h$]h%]h&]h']h+]uh-Nh.hh/]r(h)r}r(hXeventh"}r(h$]h%]h&]h']h+]uhj|h/]rh8Xeventrr}r(hUhjubah hubh)r}r(hXeh"}r(h$]h%]h&]h']h+]uhj|h/]rh8Xer}r(hUhjubah hubeubeubh)r}r(hUhjghhhh hh"}r(h$]h%]h&]h']h+]uh-Nh.hh/]ubeubeubhhh Usystem_messagerh"}r(h$]UlevelKh']h&]Usourcehh%]h+]UlineKUtypeUINFOruh-Kh.hh/]rhE)r}r(hUh"}r(h$]h%]h&]h']h+]uhhh/]rh8XeUnexpected possible title overline or transition. Treating it as ordinary text because it's so short.rr}r(hUhjubah hJubaubaUcurrent_sourcerNU decorationrNUautofootnote_startrKUnameidsr}r(hhhhhhh h*h h h h uh/]rhahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh.hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh5NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(h)cdocutils.nodes target r)r}r(hUhhhh?h Utargetrh"}r(h$]h']rh)ah&]Uismodh%]h+]uh-Kh.hh/]ubhjlhjhhh*hh j=h hfuUsubstitution_namesr }r h h.h"}r (h$]h']h&]Usourcehh%]h+]uU footnotesr ]r Urefidsr}rub.circuits-3.1.0/docs/build/doctrees/api/circuits.core.timers.doctree0000644000014400001440000003004212425011102026351 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xcircuits.core.timers.TimerqXcircuits.core.timers moduleqNX!circuits.core.timers.Timer.expiryqX circuits.core.timers.Timer.resetq uUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhUcircuits-core-timers-moduleqhhh h uUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXE/home/prologic/work/circuits/docs/source/api/circuits.core.timers.rstqUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%(Xmodule-circuits.core.timersq&heUnamesq']q(hauUlineq)KUdocumentq*hh]q+(cdocutils.nodes title q,)q-}q.(hXcircuits.core.timers moduleq/hhhhhUtitleq0h}q1(h!]h"]h#]h$]h']uh)Kh*hh]q2cdocutils.nodes Text q3Xcircuits.core.timers moduleq4q5}q6(hh/hh-ubaubcsphinx.addnodes index q7)q8}q9(hUhhhU q:hUindexq;h}q<(h$]h#]h!]h"]h']Uentries]q=(Usingleq>Xcircuits.core.timers (module)Xmodule-circuits.core.timersUtq?auh)Kh*hh]ubcdocutils.nodes paragraph q@)qA}qB(hX+Timer component to facilitate timed events.qChhhXV/home/prologic/work/circuits/circuits/core/timers.py:docstring of circuits.core.timersqDhU paragraphqEh}qF(h!]h"]h#]h$]h']uh)Kh*hh]qGh3X+Timer component to facilitate timed events.qHqI}qJ(hhChhAubaubh7)qK}qL(hUhhhNhh;h}qM(h$]h#]h!]h"]h']Uentries]qN(h>X%Timer (class in circuits.core.timers)hUtqOauh)Nh*hh]ubcsphinx.addnodes desc qP)qQ}qR(hUhhhNhUdescqSh}qT(UnoindexqUUdomainqVXpyh$]h#]h!]h"]h']UobjtypeqWXclassqXUdesctypeqYhXuh)Nh*hh]qZ(csphinx.addnodes desc_signature q[)q\}q](hX+Timer(interval, event, *channels, **kwargs)hhQhU q^hUdesc_signatureq_h}q`(h$]qahaUmoduleqbcdocutils.nodes reprunicode qcXcircuits.core.timersqdqe}qfbh#]h!]h"]h']qghaUfullnameqhXTimerqiUclassqjUUfirstqkuh)Nh*hh]ql(csphinx.addnodes desc_annotation qm)qn}qo(hXclass hh\hh^hUdesc_annotationqph}qq(h!]h"]h#]h$]h']uh)Nh*hh]qrh3Xclass qsqt}qu(hUhhnubaubcsphinx.addnodes desc_addname qv)qw}qx(hXcircuits.core.timers.hh\hh^hU desc_addnameqyh}qz(h!]h"]h#]h$]h']uh)Nh*hh]q{h3Xcircuits.core.timers.q|q}}q~(hUhhwubaubcsphinx.addnodes desc_name q)q}q(hhihh\hh^hU desc_nameqh}q(h!]h"]h#]h$]h']uh)Nh*hh]qh3XTimerqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhh\hh^hUdesc_parameterlistqh}q(h!]h"]h#]h$]h']uh)Nh*hh]q(csphinx.addnodes desc_parameter q)q}q(hXintervalh}q(h!]h"]h#]h$]h']uhhh]qh3Xintervalqq}q(hUhhubahUdesc_parameterqubh)q}q(hXeventh}q(h!]h"]h#]h$]h']uhhh]qh3Xeventqq}q(hUhhubahhubh)q}q(hX *channelsh}q(h!]h"]h#]h$]h']uhhh]qh3X *channelsqq}q(hUhhubahhubh)q}q(hX**kwargsh}q(h!]h"]h#]h$]h']uhhh]qh3X**kwargsqq}q(hUhhubahhubeubeubcsphinx.addnodes desc_content q)q}q(hUhhQhh^hU desc_contentqh}q(h!]h"]h#]h$]h']uh)Nh*hh]q(h@)q}q(hX6Bases: :class:`circuits.core.components.BaseComponent`qhhhU qhhEh}q(h!]h"]h#]h$]h']uh)Kh*hh]q(h3XBases: qq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX/:class:`circuits.core.components.BaseComponent`qhhhNhU pending_xrefqh}q(UreftypeXclassUrefwarnqU reftargetqX&circuits.core.components.BaseComponentU refdomainXpyqh$]h#]U refexplicith!]h"]h']UrefdocqXapi/circuits.core.timersqUpy:classqhiU py:moduleqXcircuits.core.timersquh)Nh]qcdocutils.nodes literal q)q}q(hhh}q(h!]h"]q(UxrefqhXpy-classqeh#]h$]h']uhhh]qh3X&circuits.core.components.BaseComponentq҅q}q(hUhhubahUliteralqubaubeubh@)q}q(hXTimer ComponentqhhhX\/home/prologic/work/circuits/circuits/core/timers.py:docstring of circuits.core.timers.TimerqhhEh}q(h!]h"]h#]h$]h']uh)Kh*hh]qh3XTimer Componentq܅q}q(hhhhubaubh@)q}q(hXlA timer is a component that fires an event once after a certain delay or periodically at a regular interval.qhhhhhhEh}q(h!]h"]h#]h$]h']uh)Kh*hh]qh3XlA timer is a component that fires an event once after a certain delay or periodically at a regular interval.q䅁q}q(hhhhubaubcdocutils.nodes field_list q)q}q(hUhhhNhU field_listqh}q(h!]h"]h#]h$]h']uh)Nh*hh]qcdocutils.nodes field q)q}q(hUh}q(h!]h"]h#]h$]h']uhhh]q(cdocutils.nodes field_name q)q}q(hUh}q(h!]h"]h#]h$]h']uhhh]qh3X Parametersqq}q(hUhhubahU field_namequbcdocutils.nodes field_body q)q}q(hUh}q(h!]h"]h#]h$]h']uhhh]qcdocutils.nodes bullet_list r)r}r(hUh}r(h!]h"]h#]h$]h']uhhh]r(cdocutils.nodes list_item r)r}r(hUh}r(h!]h"]h#]h$]h']uhjh]r h@)r }r (hUh}r (h!]h"]h#]h$]h']uhjh]r (cdocutils.nodes strong r)r}r(hXintervalh}r(h!]h"]h#]h$]h']uhj h]rh3Xintervalrr}r(hUhjubahUstrongrubh3X (rr}r(hUhj ubh)r}r(hX ``datetime``h}r(h!]h"]h#]h$]h']uhj h]rh3Xdatetimerr}r (hUhjubahhubh3X or number of seconds as a r!r"}r#(hX or number of seconds as a hj ubh)r$}r%(hX ``float``h}r&(h!]h"]h#]h$]h']uhj h]r'h3Xfloatr(r)}r*(hUhj$ubahhubh3X)r+}r,(hUhj ubh3X -- r-r.}r/(hUhj ubh3Xthe delay or interval to wait for until the event is fired. If interval is specified as datetime, the interval is recalculated as the time span from now to the given datetime.r0r1}r2(hXthe delay or interval to wait for until the event is fired. If interval is specified as datetime, the interval is recalculated as the time span from now to the given datetime.r3hj ubehhEubahU list_itemr4ubj)r5}r6(hUh}r7(h!]h"]h#]h$]h']uhjh]r8h@)r9}r:(hUh}r;(h!]h"]h#]h$]h']uhj5h]r<(j)r=}r>(hXeventh}r?(h!]h"]h#]h$]h']uhj9h]r@h3XeventrArB}rC(hUhj=ubahjubh3X (rDrE}rF(hUhj9ubh)rG}rH(hX:class:`~.events.Event`rIhj9hNhhh}rJ(UreftypeXclassU refspecificrKhhX events.EventU refdomainXpyrLh$]h#]U refexplicith!]h"]h']hhhhihhuh)Nh]rMh)rN}rO(hjIh}rP(h!]h"]rQ(hjLXpy-classrReh#]h$]h']uhjGh]rSh3XEventrTrU}rV(hUhjNubahhubaubh3X)rW}rX(hUhj9ubh3X -- rYrZ}r[(hUhj9ubh3Xthe event to fire.r\r]}r^(hXthe event to fire.r_hj9ubehhEubahj4ubj)r`}ra(hUh}rb(h!]h"]h#]h$]h']uhjh]rch@)rd}re(hUh}rf(h!]h"]h#]h$]h']uhj`h]rg(j)rh}ri(hXpersisth}rj(h!]h"]h#]h$]h']uhjdh]rkh3Xpersistrlrm}rn(hUhjhubahjubh3X (rorp}rq(hUhjdubh)rr}rs(hX``bool``rth}ru(h!]h"]h#]h$]h']uhjdh]rvh3Xboolrwrx}ry(hUhjrubahhubh3X)rz}r{(hUhjdubh3X -- r|r}}r~(hUhjdubh3X&An optional keyword argument which if rr}r(hX&An optional keyword argument which if hjdubh)r}r(hX``True``h}r(h!]h"]h#]h$]h']uhjdh]rh3XTruerr}r(hUhjubahhubh3Xk will cause the event to be fired repeatedly once per configured interval until the timer is unregistered. rr}r(hXk will cause the event to be fired repeatedly once per configured interval until the timer is unregistered. hjdubj)r}r(hX **Default:**h}r(h!]h"]h#]h$]h']uhjdh]rh3XDefault:rr}r(hUhjubahjubh3X r}r(hX hjdubh)r}r(hX ``False``h}r(h!]h"]h#]h$]h']uhjdh]rh3XFalserr}r(hUhjubahhubehhEubahj4ubehU bullet_listrubahU field_bodyrubehUfieldrubaubh7)r}r(hUhhhXb/home/prologic/work/circuits/circuits/core/timers.py:docstring of circuits.core.timers.Timer.resetrhh;h}r(h$]h#]h!]h"]h']Uentries]r(h>X+reset() (circuits.core.timers.Timer method)h Utrauh)Nh*hh]ubhP)r}r(hUhhhjhhSh}r(hUhVXpyh$]h#]h!]h"]h']hWXmethodrhYjuh)Nh*hh]r(h[)r}r(hXTimer.reset(interval=None)hjhh^hh_h}r(h$]rh ahbhcXcircuits.core.timersrr}rbh#]h!]h"]h']rh ahhX Timer.resethjhihkuh)Nh*hh]r(h)r}r(hXresethjhh^hhh}r(h!]h"]h#]h$]h']uh)Nh*hh]rh3Xresetrr}r(hUhjubaubh)r}r(hUhjhh^hhh}r(h!]h"]h#]h$]h']uh)Nh*hh]rh)r}r(hX interval=Noneh}r(h!]h"]h#]h$]h']uhjh]rh3X interval=Nonerr}r(hUhjubahhubaubeubh)r}r(hUhjhh^hhh}r(h!]h"]h#]h$]h']uh)Nh*hh]rh@)r}r(hXBReset the timer, i.e. clear the amount of time already waited for.rhjhjhhEh}r(h!]h"]h#]h$]h']uh)Kh*hh]rh3XBReset the timer, i.e. clear the amount of time already waited for.rr}r(hjhjubaubaubeubh7)r}r(hUhhhNhh;h}r(h$]h#]h!]h"]h']Uentries]r(h>X-expiry (circuits.core.timers.Timer attribute)hUtrauh)Nh*hh]ubhP)r}r(hUhhhNhhSh}r(hUhVXpyh$]h#]h!]h"]h']hWX attributerhYjuh)Nh*hh]r(h[)r}r(hX Timer.expiryrhjhh^hh_h}r(h$]rhahbhcXcircuits.core.timersrr}rbh#]h!]h"]h']rhahhX Timer.expiryhjhihkuh)Nh*hh]rh)r}r(hXexpiryhjhh^hhh}r(h!]h"]h#]h$]h']uh)Nh*hh]rh3Xexpiryrr}r(hUhjubaubaubh)r}r(hUhjhh^hhh}r(h!]h"]h#]h$]h']uh)Nh*hh]ubeubeubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh*hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror }r (Ufootnote_backlinksr KUrecord_dependenciesr NU rfc_base_urlr Uhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh0NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictr U sectnum_xformr!KUdump_transformsr"NU docinfo_xformr#KUwarning_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_linkr0NUrfc_referencesr1NUoutput_encodingr2Uutf-8r3U source_urlr4NUinput_encodingr5U utf-8-sigr6U_disable_configr7NU id_prefixr8UU tab_widthr9KUerror_encodingr:UUTF-8r;U_sourcer<hUgettext_compactr=U generatorr>NUdump_internalsr?NU smart_quotesr@U pep_base_urlrAUhttp://www.python.org/dev/peps/rBUsyntax_highlightrCUlongrDUinput_encoding_error_handlerrEj Uauto_id_prefixrFUidrGUdoctitle_xformrHUstrip_elements_with_classesrINU _config_filesrJ]Ufile_insertion_enabledrKU raw_enabledrLKU dump_settingsrMNubUsymbol_footnote_startrNKUidsrO}rP(h jhh\h&cdocutils.nodes target rQ)rR}rS(hUhhhh:hUtargetrTh}rU(h!]h$]rVh&ah#]Uismodh"]h']uh)Kh*hh]ubhjhhuUsubstitution_namesrW}rXhh*h}rY(h!]h$]h#]Usourcehh"]h']uU footnotesrZ]r[Urefidsr\}r]ub.circuits-3.1.0/docs/build/doctrees/api/circuits.core.bridge.doctree0000644000014400001440000002671512425011101026315 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X"circuits.core.bridge.Bridge.ignoreqX circuits.core.bridge.Bridge.sendqXcircuits.core.bridge moduleqNX#circuits.core.bridge.Bridge.channelq Xcircuits.core.bridge.Bridgeq X circuits.core.bridge.Bridge.initq uUsubstitution_defsq }q Uparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhUcircuits-core-bridge-moduleqh h h h h h uUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqXE/home/prologic/work/circuits/docs/source/api/circuits.core.bridge.rstqUtagnameqUsectionq U attributesq!}q"(Udupnamesq#]Uclassesq$]Ubackrefsq%]Uidsq&]q'(Xmodule-circuits.core.bridgeq(heUnamesq)]q*hauUlineq+KUdocumentq,hh]q-(cdocutils.nodes title q.)q/}q0(hXcircuits.core.bridge moduleq1hhhhhUtitleq2h!}q3(h#]h$]h%]h&]h)]uh+Kh,hh]q4cdocutils.nodes Text q5Xcircuits.core.bridge moduleq6q7}q8(hh1hh/ubaubcsphinx.addnodes index q9)q:}q;(hUhhhU q(h&]h%]h#]h$]h)]Uentries]q?(Usingleq@Xcircuits.core.bridge (module)Xmodule-circuits.core.bridgeUtqAauh+Kh,hh]ubcdocutils.nodes paragraph qB)qC}qD(hXBridgeqEhhhXV/home/prologic/work/circuits/circuits/core/bridge.py:docstring of circuits.core.bridgeqFhU paragraphqGh!}qH(h#]h$]h%]h&]h)]uh+Kh,hh]qIh5XBridgeqJqK}qL(hhEhhCubaubhB)qM}qN(hXMThe Bridge Component is used for inter-process communications between processes. Bridge is used internally when a Component is started in "process mode" via :meth:`circuits.core.manager.start`. Typically a Pipe is used as the socket transport between two sides of a Bridge (*there must be a :class:`~Bridge` instnace on both sides*).hhhhFhhGh!}qO(h#]h$]h%]h&]h)]uh+Kh,hh]qP(h5XThe Bridge Component is used for inter-process communications between processes. Bridge is used internally when a Component is started in "process mode" via qQqR}qS(hXThe Bridge Component is used for inter-process communications between processes. Bridge is used internally when a Component is started in "process mode" via hhMubcsphinx.addnodes pending_xref qT)qU}qV(hX#:meth:`circuits.core.manager.start`qWhhMhhhU pending_xrefqXh!}qY(UreftypeXmethUrefwarnqZU reftargetq[Xcircuits.core.manager.startU refdomainXpyq\h&]h%]U refexplicith#]h$]h)]Urefdocq]Xapi/circuits.core.bridgeq^Upy:classq_NU py:moduleq`Xcircuits.core.bridgeqauh+Kh]qbcdocutils.nodes literal qc)qd}qe(hhWh!}qf(h#]h$]qg(Uxrefqhh\Xpy-methqieh%]h&]h)]uhhUh]qjh5Xcircuits.core.manager.start()qkql}qm(hUhhdubahUliteralqnubaubh5XR. Typically a Pipe is used as the socket transport between two sides of a Bridge (qoqp}qq(hXR. Typically a Pipe is used as the socket transport between two sides of a Bridge (hhMubcdocutils.nodes emphasis qr)qs}qt(hX9*there must be a :class:`~Bridge` instnace on both sides*h!}qu(h#]h$]h%]h&]h)]uhhMh]qvh5X7there must be a :class:`~Bridge` instnace on both sidesqwqx}qy(hUhhsubahUemphasisqzubh5X).q{q|}q}(hX).hhMubeubh9)q~}q(hUhhhNhh=h!}q(h&]h%]h#]h$]h)]Uentries]q(h@X&Bridge (class in circuits.core.bridge)h Utqauh+Nh,hh]ubcsphinx.addnodes desc q)q}q(hUhhhNhUdescqh!}q(UnoindexqUdomainqXpyh&]h%]h#]h$]h)]UobjtypeqXclassqUdesctypeqhuh+Nh,hh]q(csphinx.addnodes desc_signature q)q}q(hXBridge(*args, **kwargs)hhhU qhUdesc_signatureqh!}q(h&]qh aUmoduleqcdocutils.nodes reprunicode qXcircuits.core.bridgeqq}qbh%]h#]h$]h)]qh aUfullnameqXBridgeqUclassqUUfirstquh+Nh,hh]q(csphinx.addnodes desc_annotation q)q}q(hXclass hhhhhUdesc_annotationqh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]qh5Xclass qq}q(hUhhubaubcsphinx.addnodes desc_addname q)q}q(hXcircuits.core.bridge.hhhhhU desc_addnameqh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]qh5Xcircuits.core.bridge.qq}q(hUhhubaubcsphinx.addnodes desc_name q)q}q(hhhhhhhU desc_nameqh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]qh5XBridgeqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhhhhUdesc_parameterlistqh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]q(csphinx.addnodes desc_parameter q)q}q(hX*argsh!}q(h#]h$]h%]h&]h)]uhhh]qh5X*argsqƅq}q(hUhhubahUdesc_parameterqubh)q}q(hX**kwargsh!}q(h#]h$]h%]h&]h)]uhhh]qh5X**kwargsq΅q}q(hUhhubahhubeubeubcsphinx.addnodes desc_content q)q}q(hUhhhhhU desc_contentqh!}q(h#]h$]h%]h&]h)]uh+Nh,hh]q(hB)q}q(hX6Bases: :class:`circuits.core.components.BaseComponent`qhhhU qhhGh!}q(h#]h$]h%]h&]h)]uh+Kh,hh]q(h5XBases: q݅q}q(hXBases: hhubhT)q}q(hX/:class:`circuits.core.components.BaseComponent`qhhhNhhXh!}q(UreftypeXclasshZh[X&circuits.core.components.BaseComponentU refdomainXpyqh&]h%]U refexplicith#]h$]h)]h]h^h_hh`hauh+Nh]qhc)q}q(hhh!}q(h#]h$]q(hhhXpy-classqeh%]h&]h)]uhhh]qh5X&circuits.core.components.BaseComponentq셁q}q(hUhhubahhnubaubeubhB)q}q(hX4initializes x; see x.__class__.__doc__ for signatureqhhhX]/home/prologic/work/circuits/circuits/core/bridge.py:docstring of circuits.core.bridge.BridgeqhhGh!}q(h#]h$]h%]h&]h)]uh+Kh,hh]qh5X4initializes x; see x.__class__.__doc__ for signatureqq}q(hhhhubaubh9)q}q(hUhhhNhh=h!}q(h&]h%]h#]h$]h)]Uentries]q(h@X/channel (circuits.core.bridge.Bridge attribute)h Utqauh+Nh,hh]ubh)q}q(hUhhhNhhh!}q(hhXpyh&]h%]h#]h$]h)]hX attributerhjuh+Nh,hh]r(h)r}r(hXBridge.channelhhhU rhhh!}r(h&]rh ahhXcircuits.core.bridgerr}r bh%]h#]h$]h)]r h ahXBridge.channelhhhuh+Nh,hh]r (h)r }r (hXchannelhjhjhhh!}r(h#]h$]h%]h&]h)]uh+Nh,hh]rh5Xchannelrr}r(hUhj ubaubh)r}r(hX = 'bridge'hjhjhhh!}r(h#]h$]h%]h&]h)]uh+Nh,hh]rh5X = 'bridge'rr}r(hUhjubaubeubh)r}r(hUhhhjhhh!}r(h#]h$]h%]h&]h)]uh+Nh,hh]ubeubh9)r}r(hUhhhNhh=h!}r(h&]h%]h#]h$]h)]Uentries]r (h@X.ignore (circuits.core.bridge.Bridge attribute)hUtr!auh+Nh,hh]ubh)r"}r#(hUhhhNhhh!}r$(hhXpyh&]h%]h#]h$]h)]hX attributer%hj%uh+Nh,hh]r&(h)r'}r((hX Bridge.ignorehj"hjhhh!}r)(h&]r*hahhXcircuits.core.bridger+r,}r-bh%]h#]h$]h)]r.hahX Bridge.ignorehhhuh+Nh,hh]r/(h)r0}r1(hXignorehj'hjhhh!}r2(h#]h$]h%]h&]h)]uh+Nh,hh]r3h5Xignorer4r5}r6(hUhj0ubaubh)r7}r8(hX = ['registered', 'unregistered', 'started', 'stopped', 'error', 'value_changed', 'generate_events', 'read', 'write', 'close', 'connected', 'connect', 'disconnect', 'disconnected', '_read', '_write', 'ready', 'read_value_changed', 'prepare_unregister']hj'hjhhh!}r9(h#]h$]h%]h&]h)]uh+Nh,hh]r:h5X = ['registered', 'unregistered', 'started', 'stopped', 'error', 'value_changed', 'generate_events', 'read', 'write', 'close', 'connected', 'connect', 'disconnect', 'disconnected', '_read', '_write', 'ready', 'read_value_changed', 'prepare_unregister']r;r<}r=(hUhj7ubaubeubh)r>}r?(hUhj"hjhhh!}r@(h#]h$]h%]h&]h)]uh+Nh,hh]ubeubh9)rA}rB(hUhhhNhh=h!}rC(h&]h%]h#]h$]h)]Uentries]rD(h@X+init() (circuits.core.bridge.Bridge method)h UtrEauh+Nh,hh]ubh)rF}rG(hUhhhNhhh!}rH(hhXpyh&]h%]h#]h$]h)]hXmethodrIhjIuh+Nh,hh]rJ(h)rK}rL(hX%Bridge.init(socket, channel='bridge')hjFhhhhh!}rM(h&]rNh ahhXcircuits.core.bridgerOrP}rQbh%]h#]h$]h)]rRh ahX Bridge.inithhhuh+Nh,hh]rS(h)rT}rU(hXinithjKhhhhh!}rV(h#]h$]h%]h&]h)]uh+Nh,hh]rWh5XinitrXrY}rZ(hUhjTubaubh)r[}r\(hUhjKhhhhh!}r](h#]h$]h%]h&]h)]uh+Nh,hh]r^(h)r_}r`(hXsocketh!}ra(h#]h$]h%]h&]h)]uhj[h]rbh5Xsocketrcrd}re(hUhj_ubahhubh)rf}rg(hXchannel='bridge'h!}rh(h#]h$]h%]h&]h)]uhj[h]rih5Xchannel='bridge'rjrk}rl(hUhjfubahhubeubeubh)rm}rn(hUhjFhhhhh!}ro(h#]h$]h%]h&]h)]uh+Nh,hh]ubeubh9)rp}rq(hUhhhNhh=h!}rr(h&]h%]h#]h$]h)]Uentries]rs(h@X+send() (circuits.core.bridge.Bridge method)hUtrtauh+Nh,hh]ubh)ru}rv(hUhhhNhhh!}rw(hhXpyh&]h%]h#]h$]h)]hXmethodrxhjxuh+Nh,hh]ry(h)rz}r{(hXBridge.send(eid, event)hjuhhhhh!}r|(h&]r}hahhXcircuits.core.bridger~r}rbh%]h#]h$]h)]rhahX Bridge.sendhhhuh+Nh,hh]r(h)r}r(hXsendhjzhhhhh!}r(h#]h$]h%]h&]h)]uh+Nh,hh]rh5Xsendrr}r(hUhjubaubh)r}r(hUhjzhhhhh!}r(h#]h$]h%]h&]h)]uh+Nh,hh]r(h)r}r(hXeidh!}r(h#]h$]h%]h&]h)]uhjh]rh5Xeidrr}r(hUhjubahhubh)r}r(hXeventh!}r(h#]h$]h%]h&]h)]uhjh]rh5Xeventrr}r(hUhjubahhubeubeubh)r}r(hUhjuhhhhh!}r(h#]h$]h%]h&]h)]uh+Nh,hh]ubeubeubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh,hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh2NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerhUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hj'h(cdocutils.nodes target r)r}r(hUhhhh(hUhhh U q?h"Uindexq@h$}qA(h)]h(]h&]h']h,]Uentries]qB(UsingleqCX)circuits.web.parsers.querystring (module)X'module-circuits.web.parsers.querystringUtqDauh.Kh/hh]ubh<)qE}qF(hUhhh Nh"h@h$}qG(h)]h(]h&]h']h,]Uentries]qH(hCX<QueryStringToken (class in circuits.web.parsers.querystring)hUtqIauh.Nh/hh]ubcsphinx.addnodes desc qJ)qK}qL(hUhhh Nh"UdescqMh$}qN(UnoindexqOUdomainqPXpyh)]h(]h&]h']h,]UobjtypeqQXclassqRUdesctypeqShRuh.Nh/hh]qT(csphinx.addnodes desc_signature qU)qV}qW(hXQueryStringTokenqXhhKh U qYh"Udesc_signatureqZh$}q[(h)]q\haUmoduleq]cdocutils.nodes reprunicode q^X circuits.web.parsers.querystringq_q`}qabh(]h&]h']h,]qbhaUfullnameqchXUclassqdUUfirstqeuh.Nh/hh]qf(csphinx.addnodes desc_annotation qg)qh}qi(hXclass hhVh hYh"Udesc_annotationqjh$}qk(h&]h']h(]h)]h,]uh.Nh/hh]qlh8Xclass qmqn}qo(hUhhhubaubcsphinx.addnodes desc_addname qp)qq}qr(hX!circuits.web.parsers.querystring.hhVh hYh"U desc_addnameqsh$}qt(h&]h']h(]h)]h,]uh.Nh/hh]quh8X!circuits.web.parsers.querystring.qvqw}qx(hUhhqubaubcsphinx.addnodes desc_name qy)qz}q{(hhXhhVh hYh"U desc_nameq|h$}q}(h&]h']h(]h)]h,]uh.Nh/hh]q~h8XQueryStringTokenqq}q(hUhhzubaubeubcsphinx.addnodes desc_content q)q}q(hUhhKh hYh"U desc_contentqh$}q(h&]h']h(]h)]h,]uh.Nh/hh]q(cdocutils.nodes paragraph q)q}q(hXBases: :class:`object`hhh U qh"U paragraphqh$}q(h&]h']h(]h)]h,]uh.Kh/hh]q(h8XBases: qq}q(hXBases: hhubcsphinx.addnodes pending_xref q)q}q(hX:class:`object`qhhh h!h"U pending_xrefqh$}q(UreftypeXclassUrefwarnqU reftargetqXobjectU refdomainXpyqh)]h(]U refexplicith&]h']h,]UrefdocqX$api/circuits.web.parsers.querystringqUpy:classqhXU py:moduleqX circuits.web.parsers.querystringquh.Kh]qcdocutils.nodes literal q)q}q(hhh$}q(h&]h']q(UxrefqhXpy-classqeh(]h)]h,]uhhh]qh8Xobjectqq}q(hUhhubah"Uliteralqubaubeubh<)q}q(hUhhh Nh"h@h$}q(h)]h(]h&]h']h,]Uentries]q(hCXCARRAY (circuits.web.parsers.querystring.QueryStringToken attribute)hUtqauh.Nh/hh]ubhJ)q}q(hUhhh Nh"hMh$}q(hOhPXpyh)]h(]h&]h']h,]hQX attributeqhShuh.Nh/hh]q(hU)q}q(hXQueryStringToken.ARRAYhhh U qh"hZh$}q(h)]qhah]h^X circuits.web.parsers.querystringqq}qbh(]h&]h']h,]qhahcXQueryStringToken.ARRAYhdhXheuh.Nh/hh]q(hy)q}q(hXARRAYhhh hh"h|h$}q(h&]h']h(]h)]h,]uh.Nh/hh]qh8XARRAYqŅq}q(hUhhubaubhg)q}q(hX = 'ARRAY'hhh hh"hjh$}q(h&]h']h(]h)]h,]uh.Nh/hh]qh8X = 'ARRAY'q̅q}q(hUhhubaubeubh)q}q(hUhhh hh"hh$}q(h&]h']h(]h)]h,]uh.Nh/hh]ubeubh<)q}q(hUhhh Nh"h@h$}q(h)]h(]h&]h']h,]Uentries]q(hCXDOBJECT (circuits.web.parsers.querystring.QueryStringToken attribute)h Utqauh.Nh/hh]ubhJ)q}q(hUhhh Nh"hMh$}q(hOhPXpyh)]h(]h&]h']h,]hQX attributeqhShuh.Nh/hh]q(hU)q}q(hXQueryStringToken.OBJECThhh hh"hZh$}q(h)]qh ah]h^X circuits.web.parsers.querystringqq}qbh(]h&]h']h,]qh ahcXQueryStringToken.OBJECThdhXheuh.Nh/hh]q(hy)q}q(hXOBJECThhh hh"h|h$}q(h&]h']h(]h)]h,]uh.Nh/hh]qh8XOBJECTq酁q}q(hUhhubaubhg)q}q(hX = 'OBJECT'hhh hh"hjh$}q(h&]h']h(]h)]h,]uh.Nh/hh]qh8X = 'OBJECT'qq}q(hUhhubaubeubh)q}q(hUhhh hh"hh$}q(h&]h']h(]h)]h,]uh.Nh/hh]ubeubh<)q}q(hUhhh Nh"h@h$}q(h)]h(]h&]h']h,]Uentries]q(hCXAKEY (circuits.web.parsers.querystring.QueryStringToken attribute)h Utqauh.Nh/hh]ubhJ)q}q(hUhhh Nh"hMh$}q(hOhPXpyh)]h(]h&]h']h,]hQX attributeqhShuh.Nh/hh]q(hU)r}r(hXQueryStringToken.KEYhhh hh"hZh$}r(h)]rh ah]h^X circuits.web.parsers.querystringrr}rbh(]h&]h']h,]rh ahcXQueryStringToken.KEYhdhXheuh.Nh/hh]r(hy)r }r (hXKEYhjh hh"h|h$}r (h&]h']h(]h)]h,]uh.Nh/hh]r h8XKEYr r}r(hUhj ubaubhg)r}r(hX = 'KEY'hjh hh"hjh$}r(h&]h']h(]h)]h,]uh.Nh/hh]rh8X = 'KEY'rr}r(hUhjubaubeubh)r}r(hUhhh hh"hh$}r(h&]h']h(]h)]h,]uh.Nh/hh]ubeubeubeubh<)r}r(hUhhh Nh"h@h$}r(h)]h(]h&]h']h,]Uentries]r(hCX=QueryStringParser (class in circuits.web.parsers.querystring)h Utrauh.Nh/hh]ubhJ)r}r (hUhhh Nh"hMh$}r!(hOhPXpyh)]h(]h&]h']h,]hQXclassr"hSj"uh.Nh/hh]r#(hU)r$}r%(hXQueryStringParser(data)r&hjh hYh"hZh$}r'(h)]r(h ah]h^X circuits.web.parsers.querystringr)r*}r+bh(]h&]h']h,]r,h ahcXQueryStringParserr-hdUheuh.Nh/hh]r.(hg)r/}r0(hXclass hj$h hYh"hjh$}r1(h&]h']h(]h)]h,]uh.Nh/hh]r2h8Xclass r3r4}r5(hUhj/ubaubhp)r6}r7(hX!circuits.web.parsers.querystring.hj$h hYh"hsh$}r8(h&]h']h(]h)]h,]uh.Nh/hh]r9h8X!circuits.web.parsers.querystring.r:r;}r<(hUhj6ubaubhy)r=}r>(hj-hj$h hYh"h|h$}r?(h&]h']h(]h)]h,]uh.Nh/hh]r@h8XQueryStringParserrArB}rC(hUhj=ubaubcsphinx.addnodes desc_parameterlist rD)rE}rF(hUhj$h hYh"Udesc_parameterlistrGh$}rH(h&]h']h(]h)]h,]uh.Nh/hh]rIcsphinx.addnodes desc_parameter rJ)rK}rL(hXdatah$}rM(h&]h']h(]h)]h,]uhjEh]rNh8XdatarOrP}rQ(hUhjKubah"Udesc_parameterrRubaubeubh)rS}rT(hUhjh hYh"hh$}rU(h&]h']h(]h)]h,]uh.Nh/hh]rV(h)rW}rX(hXBases: :class:`object`rYhjSh hh"hh$}rZ(h&]h']h(]h)]h,]uh.Kh/hh]r[(h8XBases: r\r]}r^(hXBases: hjWubh)r_}r`(hX:class:`object`rahjWh Nh"hh$}rb(UreftypeXclasshhXobjectU refdomainXpyrch)]h(]U refexplicith&]h']h,]hhhj-hhuh.Nh]rdh)re}rf(hjah$}rg(h&]h']rh(hjcXpy-classrieh(]h)]h,]uhj_h]rjh8Xobjectrkrl}rm(hUhjeubah"hubaubeubh<)rn}ro(hUhjSh Nh"h@h$}rp(h)]h(]h&]h']h,]Uentries]rq(hCXEprocess() (circuits.web.parsers.querystring.QueryStringParser method)hUtrrauh.Nh/hh]ubhJ)rs}rt(hUhjSh Nh"hMh$}ru(hOhPXpyh)]h(]h&]h']h,]hQXmethodrvhSjvuh.Nh/hh]rw(hU)rx}ry(hXQueryStringParser.process(pair)hjsh hYh"hZh$}rz(h)]r{hah]h^X circuits.web.parsers.querystringr|r}}r~bh(]h&]h']h,]rhahcXQueryStringParser.processhdj-heuh.Nh/hh]r(hy)r}r(hXprocesshjxh hYh"h|h$}r(h&]h']h(]h)]h,]uh.Nh/hh]rh8Xprocessrr}r(hUhjubaubjD)r}r(hUhjxh hYh"jGh$}r(h&]h']h(]h)]h,]uh.Nh/hh]rjJ)r}r(hXpairh$}r(h&]h']h(]h)]h,]uhjh]rh8Xpairrr}r(hUhjubah"jRubaubeubh)r}r(hUhjsh hYh"hh$}r(h&]h']h(]h)]h,]uh.Nh/hh]ubeubh<)r}r(hUhjSh Nh"h@h$}r(h)]h(]h&]h']h,]Uentries]r(hCXCparse() (circuits.web.parsers.querystring.QueryStringParser method)h Utrauh.Nh/hh]ubhJ)r}r(hUhjSh Nh"hMh$}r(hOhPXpyh)]h(]h&]h']h,]hQXmethodrhSjuh.Nh/hh]r(hU)r}r(hX#QueryStringParser.parse(key, value)hjh hYh"hZh$}r(h)]rh ah]h^X circuits.web.parsers.querystringrr}rbh(]h&]h']h,]rh ahcXQueryStringParser.parsehdj-heuh.Nh/hh]r(hy)r}r(hXparsehjh hYh"h|h$}r(h&]h']h(]h)]h,]uh.Nh/hh]rh8Xparserr}r(hUhjubaubjD)r}r(hUhjh hYh"jGh$}r(h&]h']h(]h)]h,]uh.Nh/hh]r(jJ)r}r(hXkeyh$}r(h&]h']h(]h)]h,]uhjh]rh8Xkeyrr}r(hUhjubah"jRubjJ)r}r(hXvalueh$}r(h&]h']h(]h)]h,]uhjh]rh8Xvaluerr}r(hUhjubah"jRubeubeubh)r}r(hUhjh hYh"hh$}r(h&]h']h(]h)]h,]uh.Nh/hh]ubeubh<)r}r(hUhjSh Nh"h@h$}r(h)]h(]h&]h']h,]Uentries]r(hCXDtokens() (circuits.web.parsers.querystring.QueryStringParser method)h Utrauh.Nh/hh]ubhJ)r}r(hUhjSh Nh"hMh$}r(hOhPXpyh)]h(]h&]h']h,]hQXmethodrhSjuh.Nh/hh]r(hU)r}r(hXQueryStringParser.tokens(key)rhjh hYh"hZh$}r(h)]rh ah]h^X circuits.web.parsers.querystringrr}rbh(]h&]h']h,]rh ahcXQueryStringParser.tokenshdj-heuh.Nh/hh]r(hy)r}r(hXtokenshjh hYh"h|h$}r(h&]h']h(]h)]h,]uh.Nh/hh]rh8Xtokensrr}r(hUhjubaubjD)r}r(hUhjh hYh"jGh$}r(h&]h']h(]h)]h,]uh.Nh/hh]rjJ)r}r(hXkeyh$}r(h&]h']h(]h)]h,]uhjh]rh8Xkeyrr}r(hUhjubah"jRubaubeubh)r}r(hUhjh hYh"hh$}r(h&]h']h(]h)]h,]uh.Nh/hh]ubeubeubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh/hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r (Ufootnote_backlinksr KUrecord_dependenciesr NU rfc_base_urlr Uhttp://tools.ietf.org/html/r U tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh5NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformr KUdump_transformsr!NU docinfo_xformr"KUwarning_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_referencesr0NUoutput_encodingr1Uutf-8r2U source_urlr3NUinput_encodingr4U utf-8-sigr5U_disable_configr6NU id_prefixr7UU tab_widthr8KUerror_encodingr9UUTF-8r:U_sourcer;h!Ugettext_compactr<U generatorr=NUdump_internalsr>NU smart_quotesr?U pep_base_urlr@Uhttp://www.python.org/dev/peps/rAUsyntax_highlightrBUlongrCUinput_encoding_error_handlerrDjUauto_id_prefixrEUidrFUdoctitle_xformrGUstrip_elements_with_classesrHNU _config_filesrI]Ufile_insertion_enabledrJU raw_enabledrKKU dump_settingsrLNubUsymbol_footnote_startrMKUidsrN}rO(hhVhhh jh+cdocutils.nodes target rP)rQ}rR(hUhhh h?h"UtargetrSh$}rT(h&]h)]rUh+ah(]Uismodh']h,]uh.Kh/hh]ubh hhjxh jh jh j$hhuUsubstitution_namesrV}rWh"h/h$}rX(h&]h)]h(]Usourceh!h']h,]uU footnotesrY]rZUrefidsr[}r\ub.circuits-3.1.0/docs/build/doctrees/api/circuits.core.events.doctree0000644000014400001440000023615712425011102026371 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X)circuits.core.events.generate_events.nameqX%circuits.core.events.Event.alert_doneqXcircuits.core.events.EventTypeqX&circuits.core.events.unregistered.nameq X$circuits.core.events.generate_eventsq X)circuits.core.events.generate_events.lockq Xcircuits.core.events.Eventq Xcircuits.core.events.registeredq Xcircuits.core.events.startedqX#circuits.core.events.exception.nameqX5circuits.core.events.generate_events.reduce_time_leftqX circuits.core.events.signal.nameqXcircuits.core.events.Event.nameqX!circuits.core.events.Event.notifyqX#circuits.core.events.Event.channelsqXcircuits.core.events.signalqX#circuits.core.events.Event.completeqX!circuits.core.events.Event.cancelqXcircuits.core.events.exceptionqXcircuits.core.events moduleqNX!circuits.core.events.unregisteredqX*circuits.core.events.Event.waitingHandlersqX"circuits.core.events.Event.successqX circuits.core.events.Event.childqX$circuits.core.events.registered.nameqXcircuits.core.events.Event.stopqX!circuits.core.events.stopped.nameq X.circuits.core.events.generate_events.time_leftq!X"circuits.core.events.Event.failureq"X!circuits.core.events.started.nameq#Xcircuits.core.events.stoppedq$X!circuits.core.events.Event.createq%X!circuits.core.events.Event.parentq&uUsubstitution_defsq'}q(Uparse_messagesq)]q*cdocutils.nodes system_message q+)q,}q-(U rawsourceq.UUparentq/csphinx.addnodes desc_content q0)q1}q2(h.Uh/csphinx.addnodes desc q3)q4}q5(h.Uh/cdocutils.nodes section q6)q7}q8(h.Uh/hUsourceq9XE/home/prologic/work/circuits/docs/source/api/circuits.core.events.rstq:Utagnameq;Usectionq(Udupnamesq?]Uclassesq@]UbackrefsqA]UidsqB]qC(Xmodule-circuits.core.eventsqDUcircuits-core-events-moduleqEeUnamesqF]qGhauUlineqHKUdocumentqIhUchildrenqJ]qK(cdocutils.nodes title qL)qM}qN(h.Xcircuits.core.events moduleqOh/h7h9h:h;UtitleqPh=}qQ(h?]h@]hA]hB]hF]uhHKhIhhJ]qRcdocutils.nodes Text qSXcircuits.core.events moduleqTqU}qV(h.hOh/hMubaubcsphinx.addnodes index qW)qX}qY(h.Uh/h7h9U qZh;Uindexq[h=}q\(hB]hA]h?]h@]hF]Uentries]q](Usingleq^Xcircuits.core.events (module)Xmodule-circuits.core.eventsUtq_auhHKhIhhJ]ubcdocutils.nodes paragraph q`)qa}qb(h.X<This module defines the basic event class and common events.qch/h7h9XV/home/prologic/work/circuits/circuits/core/events.py:docstring of circuits.core.eventsqdh;U paragraphqeh=}qf(h?]h@]hA]hB]hF]uhHKhIhhJ]qghSX<This module defines the basic event class and common events.qhqi}qj(h.hch/haubaubhW)qk}ql(h.Uh/h7h9U qmh;h[h=}qn(hB]hA]h?]h@]hF]Uentries]qo(h^X)EventType (class in circuits.core.events)hUtqpauhHNhIhhJ]ubh3)qq}qr(h.Uh/h7h9hmh;Udescqsh=}qt(UnoindexquUdomainqvXpyhB]hA]h?]h@]hF]UobjtypeqwXclassqxUdesctypeqyhxuhHNhIhhJ]qz(csphinx.addnodes desc_signature q{)q|}q}(h.X EventTypeq~h/hqh9U qh;Udesc_signatureqh=}q(hB]qhaUmoduleqcdocutils.nodes reprunicode qXcircuits.core.eventsqq}qbhA]h?]h@]hF]qhaUfullnameqh~UclassqUUfirstquhHNhIhhJ]q(csphinx.addnodes desc_annotation q)q}q(h.Xclass h/h|h9hh;Udesc_annotationqh=}q(h?]h@]hA]hB]hF]uhHNhIhhJ]qhSXclass qq}q(h.Uh/hubaubcsphinx.addnodes desc_addname q)q}q(h.Xcircuits.core.events.h/h|h9hh;U desc_addnameqh=}q(h?]h@]hA]hB]hF]uhHNhIhhJ]qhSXcircuits.core.events.qq}q(h.Uh/hubaubcsphinx.addnodes desc_name q)q}q(h.h~h/h|h9hh;U desc_nameqh=}q(h?]h@]hA]hB]hF]uhHNhIhhJ]qhSX EventTypeqq}q(h.Uh/hubaubeubh0)q}q(h.Uh/hqh9hh;U desc_contentqh=}q(h?]h@]hA]hB]hF]uhHNhIhhJ]qh`)q}q(h.XBases: :class:`type`h/hh9hmh;heh=}q(h?]h@]hA]hB]hF]uhHKhIhhJ]q(hSXBases: qq}q(h.XBases: h/hubcsphinx.addnodes pending_xref q)q}q(h.X :class:`type`qh/hh9Nh;U pending_xrefqh=}q(UreftypeXclassUrefwarnqU reftargetqXtypeU refdomainXpyqhB]hA]U refexplicith?]h@]hF]UrefdocqXapi/circuits.core.eventsqUpy:classqh~U py:moduleqXcircuits.core.eventsquhHNhJ]qcdocutils.nodes literal q)q}q(h.hh=}q(h?]h@]q(UxrefqhXpy-classqehA]hB]hF]uh/hhJ]qhSXtypeq˅q}q(h.Uh/hubah;UliteralqubaubeubaubeubhW)q}q(h.Uh/h7h9Nh;h[h=}q(hB]hA]h?]h@]hF]Uentries]q(h^X%Event (class in circuits.core.events)h UtqauhHNhIhhJ]ubh3)q}q(h.Uh/h7h9Nh;hsh=}q(huhvXpyqhB]hA]h?]h@]hF]hwXclassqhyhuhHNhIhhJ]q(h{)q}q(h.XEvent(*args, **kwargs)h/hh9hh;hh=}q(hB]qh ahhXcircuits.core.eventsqޅq}qbhA]h?]h@]hF]qh ahXEventqhUhuhHNhIhhJ]q(h)q}q(h.Xclass h/hh9hh;hh=}q(h?]h@]hA]hB]hF]uhHNhIhhJ]qhSXclass q腁q}q(h.Uh/hubaubh)q}q(h.Xcircuits.core.events.h/hh9hh;hh=}q(h?]h@]hA]hB]hF]uhHNhIhhJ]qhSXcircuits.core.events.qq}q(h.Uh/hubaubh)q}q(h.hh/hh9hh;hh=}q(h?]h@]hA]hB]hF]uhHNhIhhJ]qhSXEventqq}q(h.Uh/hubaubcsphinx.addnodes desc_parameterlist q)q}q(h.Uh/hh9hh;Udesc_parameterlistqh=}q(h?]h@]hA]hB]hF]uhHNhIhhJ]q(csphinx.addnodes desc_parameter q)r}r(h.X*argsh=}r(h?]h@]hA]hB]hF]uh/hhJ]rhSX*argsrr}r(h.Uh/jubah;Udesc_parameterrubh)r}r (h.X**kwargsh=}r (h?]h@]hA]hB]hF]uh/hhJ]r hSX**kwargsr r }r(h.Uh/jubah;jubeubeubh0)r}r(h.Uh/hh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]r(h`)r}r(h.XBases: :class:`object`h/jh9hmh;heh=}r(h?]h@]hA]hB]hF]uhHKhIhhJ]r(hSXBases: rr}r(h.XBases: h/jubh)r}r(h.X:class:`object`rh/jh9Nh;hh=}r(UreftypeXclasshhXobjectU refdomainXpyrhB]hA]U refexplicith?]h@]hF]hhhhhhuhHNhJ]rh)r }r!(h.jh=}r"(h?]h@]r#(hjXpy-classr$ehA]hB]hF]uh/jhJ]r%hSXobjectr&r'}r((h.Uh/j ubah;hubaubeubh`)r)}r*(h.XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r+h/jh9X\/home/prologic/work/circuits/circuits/core/events.py:docstring of circuits.core.events.Eventr,h;heh=}r-(h?]h@]hA]hB]hF]uhHKhIhhJ]r.hSXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r/r0}r1(h.j+h/j)ubaubh`)r2}r3(h.XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.r4h/jh9j,h;heh=}r5(h?]h@]hA]hB]hF]uhHKhIhhJ]r6hSXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.r7r8}r9(h.j4h/j2ubaubh`)r:}r;(h.X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h/jh9j,h;heh=}r<(h?]h@]hA]hB]hF]uhHK hIhhJ]r=(hSXEvery event has a r>r?}r@(h.XEvery event has a h/j:ubh)rA}rB(h.X :attr:`name`rCh/j:h9Nh;hh=}rD(UreftypeXattrhhXnameU refdomainXpyrEhB]hA]U refexplicith?]h@]hF]hhhhhhuhHNhJ]rFh)rG}rH(h.jCh=}rI(h?]h@]rJ(hjEXpy-attrrKehA]hB]hF]uh/jAhJ]rLhSXnamerMrN}rO(h.Uh/jGubah;hubaubhSXA attribute that is used for matching the event with the handlers.rPrQ}rR(h.XA attribute that is used for matching the event with the handlers.h/j:ubeubcdocutils.nodes field_list rS)rT}rU(h.Uh/jh9Nh;U field_listrVh=}rW(h?]h@]hA]hB]hF]uhHNhIhhJ]rXcdocutils.nodes field rY)rZ}r[(h.Uh=}r\(h?]h@]hA]hB]hF]uh/jThJ]r](cdocutils.nodes field_name r^)r_}r`(h.Uh=}ra(h?]h@]hA]hB]hF]uh/jZhJ]rbhSX Variablesrcrd}re(h.Uh/j_ubah;U field_namerfubcdocutils.nodes field_body rg)rh}ri(h.Uh=}rj(h?]h@]hA]hB]hF]uh/jZhJ]rkcdocutils.nodes bullet_list rl)rm}rn(h.Uh=}ro(h?]h@]hA]hB]hF]uh/jhhJ]rp(cdocutils.nodes list_item rq)rr}rs(h.Uh=}rt(h?]h@]hA]hB]hF]uh/jmhJ]ruh`)rv}rw(h.Uh=}rx(h?]h@]hA]hB]hF]uh/jrhJ]ry(h)rz}r{(h.Uh=}r|(UreftypeUobjr}U reftargetXchannelsr~U refdomainhhB]hA]U refexplicith?]h@]hF]uh/jvhJ]rcdocutils.nodes strong r)r}r(h.j~h=}r(h?]h@]hA]hB]hF]uh/jzhJ]rhSXchannelsrr}r(h.Uh/jubah;Ustrongrubah;hubhSX -- rr}r(h.Uh/jvubh`)r}r(h.Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rh/jvh9j,h;heh=}r(h?]h@]hA]hB]hF]uhHK hJ]rhSXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.rr}r(h.jh/jubaubh`)r}r(h.XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rh/jvh9j,h;heh=}r(h?]h@]hA]hB]hF]uhHKhJ]rhSXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.rr}r(h.jh/jubaubeh;heubah;U list_itemrubjq)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jmhJ]rh`)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]r(h)r}r(h.Uh=}r(Ureftypej}U reftargetXvaluerU refdomainhhB]hA]U refexplicith?]h@]hF]uh/jhJ]rj)r}r(h.jh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXvaluerr}r(h.Uh/jubah;jubah;hubhSX -- rr}r(h.Uh/jubhSX this is a rr}r(h.X this is a h/jubh)r}r(h.X#:class:`circuits.core.values.Value`rh/jh9Nh;hh=}r(UreftypeXclasshhXcircuits.core.values.ValueU refdomainXpyrhB]hA]U refexplicith?]h@]hF]hhhhhhuhHNhJ]rh)r}r(h.jh=}r(h?]h@]r(hjXpy-classrehA]hB]hF]uh/jhJ]rhSXcircuits.core.values.Valuerr}r(h.Uh/jubah;hubaubhSXN object that holds the results returned by the handlers invoked for the event.rr}r(h.XN object that holds the results returned by the handlers invoked for the event.h/jubeh;heubah;jubjq)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jmhJ]rh`)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]r(h)r}r(h.Uh=}r(Ureftypej}U reftargetXsuccessrU refdomainhhB]hA]U refexplicith?]h@]hF]uh/jhJ]rj)r}r(h.jh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXsuccessrr}r(h.Uh/jubah;jubah;hubhSX -- rr}r(h.Uh/jubhSX%if this optional attribute is set to rr}r(h.X%if this optional attribute is set to h/jubh)r}r(h.X``True``h=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXTruerr}r(h.Uh/jubah;hubhSX, an associated event rr}r(h.X, an associated event h/jubh)r}r(h.X ``success``h=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXsuccessrr}r(h.Uh/jubah;hubhSX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.rr}r(h.X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h/jubeh;heubah;jubjq)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jmhJ]rh`)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]r(h)r}r(h.Uh=}r(Ureftypej}U reftargetXsuccess_channelsrU refdomainhhB]hA]U refexplicith?]h@]hF]uh/jhJ]rj)r}r(h.jh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXsuccess_channelsrr }r (h.Uh/jubah;jubah;hubhSX -- r r }r (h.Uh/jubhSXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rr}r(h.Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h/jubeh;heubah;jubjq)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jmhJ]rh`)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]r(h)r}r(h.Uh=}r(Ureftypej}U reftargetXcompleterU refdomainhhB]hA]U refexplicith?]h@]hF]uh/jhJ]rj)r}r(h.jh=}r (h?]h@]hA]hB]hF]uh/jhJ]r!hSXcompleter"r#}r$(h.Uh/jubah;jubah;hubhSX -- r%r&}r'(h.Uh/jubhSX%if this optional attribute is set to r(r)}r*(h.X%if this optional attribute is set to h/jubh)r+}r,(h.X``True``h=}r-(h?]h@]hA]hB]hF]uh/jhJ]r.hSXTruer/r0}r1(h.Uh/j+ubah;hubhSX, an associated event r2r3}r4(h.X, an associated event h/jubh)r5}r6(h.X ``complete``h=}r7(h?]h@]hA]hB]hF]uh/jhJ]r8hSXcompleter9r:}r;(h.Uh/j5ubah;hubhSX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.r<r=}r>(h.X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h/jubeh;heubah;jubjq)r?}r@(h.Uh=}rA(h?]h@]hA]hB]hF]uh/jmhJ]rBh`)rC}rD(h.Uh=}rE(h?]h@]hA]hB]hF]uh/j?hJ]rF(h)rG}rH(h.Uh=}rI(Ureftypej}U reftargetXcomplete_channelsrJU refdomainhhB]hA]U refexplicith?]h@]hF]uh/jChJ]rKj)rL}rM(h.jJh=}rN(h?]h@]hA]hB]hF]uh/jGhJ]rOhSXcomplete_channelsrPrQ}rR(h.Uh/jLubah;jubah;hubhSX -- rSrT}rU(h.Uh/jCubhSXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rVrW}rX(h.Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h/jCubeh;heubah;jubeh;U bullet_listrYubah;U field_bodyrZubeh;Ufieldr[ubaubhW)r\}r](h.Uh/jh9Xe/home/prologic/work/circuits/circuits/core/events.py:docstring of circuits.core.events.Event.channelsr^h;h[h=}r_(hB]hA]h?]h@]hF]Uentries]r`(h^X/channels (circuits.core.events.Event attribute)hUtraauhHNhIhhJ]ubh3)rb}rc(h.Uh/jh9j^h;hsh=}rd(huhvXpyhB]hA]h?]h@]hF]hwX attributerehyjeuhHNhIhhJ]rf(h{)rg}rh(h.XEvent.channelsh/jbh9U rih;hh=}rj(hB]rkhahhXcircuits.core.eventsrlrm}rnbhA]h?]h@]hF]rohahXEvent.channelshhhuhHNhIhhJ]rp(h)rq}rr(h.Xchannelsh/jgh9jih;hh=}rs(h?]h@]hA]hB]hF]uhHNhIhhJ]rthSXchannelsrurv}rw(h.Uh/jqubaubh)rx}ry(h.X = ()h/jgh9jih;hh=}rz(h?]h@]hA]hB]hF]uhHNhIhhJ]r{hSX = ()r|r}}r~(h.Uh/jxubaubeubh0)r}r(h.Uh/jbh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rh`)r}r(h.X%The channels this message is sent to.rh/jh9j^h;heh=}r(h?]h@]hA]hB]hF]uhHKhIhhJ]rhSX%The channels this message is sent to.rr}r(h.jh/jubaubaubeubhW)r}r(h.Uh/jh9Nh;h[h=}r(hB]hA]h?]h@]hF]Uentries]r(h^X-parent (circuits.core.events.Event attribute)h&UtrauhHNhIhhJ]ubh3)r}r(h.Uh/jh9Nh;hsh=}r(huhvXpyhB]hA]h?]h@]hF]hwX attributerhyjuhHNhIhhJ]r(h{)r}r(h.X Event.parenth/jh9jih;hh=}r(hB]rh&ahhXcircuits.core.eventsrr}rbhA]h?]h@]hF]rh&ahX Event.parenthhhuhHNhIhhJ]r(h)r}r(h.Xparenth/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSXparentrr}r(h.Uh/jubaubh)r}r(h.X = Noneh/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSX = Nonerr}r(h.Uh/jubaubeubh0)r}r(h.Uh/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubhW)r}r(h.Uh/jh9Nh;h[h=}r(hB]hA]h?]h@]hF]Uentries]r(h^X-notify (circuits.core.events.Event attribute)hUtrauhHNhIhhJ]ubh3)r}r(h.Uh/jh9Nh;hsh=}r(huhvXpyhB]hA]h?]h@]hF]hwX attributerhyjuhHNhIhhJ]r(h{)r}r(h.X Event.notifyh/jh9jih;hh=}r(hB]rhahhXcircuits.core.eventsrr}rbhA]h?]h@]hF]rhahX Event.notifyhhhuhHNhIhhJ]r(h)r}r(h.Xnotifyh/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSXnotifyrr}r(h.Uh/jubaubh)r}r(h.X = Falseh/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSX = Falserr}r(h.Uh/jubaubeubh0)r}r(h.Uh/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubhW)r}r(h.Uh/jh9Nh;h[h=}r(hB]hA]h?]h@]hF]Uentries]r(h^X.success (circuits.core.events.Event attribute)hUtrauhHNhIhhJ]ubh3)r}r(h.Uh/jh9Nh;hsh=}r(huhvXpyhB]hA]h?]h@]hF]hwX attributerhyjuhHNhIhhJ]r(h{)r}r(h.X Event.successh/jh9jih;hh=}r(hB]rhahhXcircuits.core.eventsrr}rbhA]h?]h@]hF]rhahX Event.successhhhuhHNhIhhJ]r(h)r}r(h.Xsuccessh/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSXsuccessrr}r(h.Uh/jubaubh)r}r(h.X = Falseh/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSX = Falserr}r(h.Uh/jubaubeubh0)r}r(h.Uh/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubhW)r}r(h.Uh/jh9Nh;h[h=}r(hB]hA]h?]h@]hF]Uentries]r(h^X.failure (circuits.core.events.Event attribute)h"UtrauhHNhIhhJ]ubh3)r}r(h.Uh/jh9Nh;hsh=}r(huhvXpyhB]hA]h?]h@]hF]hwX attributerhyjuhHNhIhhJ]r(h{)r}r(h.X Event.failureh/jh9jih;hh=}r(hB]rh"ahhXcircuits.core.eventsrr}rbhA]h?]h@]hF]rh"ahX Event.failurehhhuhHNhIhhJ]r (h)r }r (h.Xfailureh/jh9jih;hh=}r (h?]h@]hA]hB]hF]uhHNhIhhJ]r hSXfailurerr}r(h.Uh/j ubaubh)r}r(h.X = Falseh/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSX = Falserr}r(h.Uh/jubaubeubh0)r}r(h.Uh/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubhW)r}r(h.Uh/jh9Nh;h[h=}r(hB]hA]h?]h@]hF]Uentries]r(h^X/complete (circuits.core.events.Event attribute)hUtrauhHNhIhhJ]ubh3)r }r!(h.Uh/jh9Nh;hsh=}r"(huhvXpyhB]hA]h?]h@]hF]hwX attributer#hyj#uhHNhIhhJ]r$(h{)r%}r&(h.XEvent.completeh/j h9jih;hh=}r'(hB]r(hahhXcircuits.core.eventsr)r*}r+bhA]h?]h@]hF]r,hahXEvent.completehhhuhHNhIhhJ]r-(h)r.}r/(h.Xcompleteh/j%h9jih;hh=}r0(h?]h@]hA]hB]hF]uhHNhIhhJ]r1hSXcompleter2r3}r4(h.Uh/j.ubaubh)r5}r6(h.X = Falseh/j%h9jih;hh=}r7(h?]h@]hA]hB]hF]uhHNhIhhJ]r8hSX = Falser9r:}r;(h.Uh/j5ubaubeubh0)r<}r=(h.Uh/j h9jih;hh=}r>(h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubhW)r?}r@(h.Uh/jh9Nh;h[h=}rA(hB]hA]h?]h@]hF]Uentries]rB(h^X1alert_done (circuits.core.events.Event attribute)hUtrCauhHNhIhhJ]ubh3)rD}rE(h.Uh/jh9Nh;hsh=}rF(huhvXpyhB]hA]h?]h@]hF]hwX attributerGhyjGuhHNhIhhJ]rH(h{)rI}rJ(h.XEvent.alert_doneh/jDh9jih;hh=}rK(hB]rLhahhXcircuits.core.eventsrMrN}rObhA]h?]h@]hF]rPhahXEvent.alert_donehhhuhHNhIhhJ]rQ(h)rR}rS(h.X alert_doneh/jIh9jih;hh=}rT(h?]h@]hA]hB]hF]uhHNhIhhJ]rUhSX alert_donerVrW}rX(h.Uh/jRubaubh)rY}rZ(h.X = Falseh/jIh9jih;hh=}r[(h?]h@]hA]hB]hF]uhHNhIhhJ]r\hSX = Falser]r^}r_(h.Uh/jYubaubeubh0)r`}ra(h.Uh/jDh9jih;hh=}rb(h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubhW)rc}rd(h.Uh/jh9Nh;h[h=}re(hB]hA]h?]h@]hF]Uentries]rf(h^X6waitingHandlers (circuits.core.events.Event attribute)hUtrgauhHNhIhhJ]ubh3)rh}ri(h.Uh/jh9Nh;hsh=}rj(huhvXpyhB]hA]h?]h@]hF]hwX attributerkhyjkuhHNhIhhJ]rl(h{)rm}rn(h.XEvent.waitingHandlersh/jhh9jih;hh=}ro(hB]rphahhXcircuits.core.eventsrqrr}rsbhA]h?]h@]hF]rthahXEvent.waitingHandlershhhuhHNhIhhJ]ru(h)rv}rw(h.XwaitingHandlersh/jmh9jih;hh=}rx(h?]h@]hA]hB]hF]uhHNhIhhJ]ryhSXwaitingHandlersrzr{}r|(h.Uh/jvubaubh)r}}r~(h.X = 0h/jmh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSX = 0rr}r(h.Uh/j}ubaubeubh0)r}r(h.Uh/jhh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubhW)r}r(h.Uh/jh9Nh;h[h=}r(hB]hA]h?]h@]hF]Uentries]r(h^X2create() (circuits.core.events.Event class method)h%UtrauhHNhIhhJ]ubh3)r}r(h.Uh/jh9Nh;hsh=}r(huhvXpyhB]hA]h?]h@]hF]hwX classmethodrhyjuhHNhIhhJ]r(h{)r}r(h.X#Event.create(name, *args, **kwargs)h/jh9hh;hh=}r(hB]rh%ahhXcircuits.core.eventsrr}rbhA]h?]h@]hF]rh%ahX Event.createhhhuhHNhIhhJ]r(h)r}r(h.U classmethod rh/jh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSX classmethod rr}r(h.Uh/jubaubh)r}r(h.Xcreateh/jh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSXcreaterr}r(h.Uh/jubaubh)r}r(h.Uh/jh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]r(h)r}r(h.Xnameh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXnamerr}r(h.Uh/jubah;jubh)r}r(h.X*argsh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSX*argsrr}r(h.Uh/jubah;jubh)r}r(h.X**kwargsh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSX**kwargsrr}r(h.Uh/jubah;jubeubeubh0)r}r(h.Uh/jh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubhW)r}r(h.Uh/jh9Nh;h[h=}r(hB]hA]h?]h@]hF]Uentries]r(h^X+child() (circuits.core.events.Event method)hUtrauhHNhIhhJ]ubh3)r}r(h.Uh/jh9Nh;hsh=}r(huhvXpyhB]hA]h?]h@]hF]hwXmethodrhyjuhHNhIhhJ]r(h{)r}r(h.X"Event.child(name, *args, **kwargs)h/jh9hh;hh=}r(hB]rhahhXcircuits.core.eventsrr}rbhA]h?]h@]hF]rhahX Event.childhhhuhHNhIhhJ]r(h)r}r(h.Xchildh/jh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSXchildrr}r(h.Uh/jubaubh)r}r(h.Uh/jh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]r(h)r}r(h.Xnameh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXnamerr}r(h.Uh/jubah;jubh)r}r(h.X*argsh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSX*argsrr}r(h.Uh/jubah;jubh)r}r(h.X**kwargsh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSX**kwargsrr}r(h.Uh/jubah;jubeubeubh0)r}r(h.Uh/jh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubhW)r}r(h.Uh/jh9Nh;h[h=}r(hB]hA]h?]h@]hF]Uentries]r(h^X+name (circuits.core.events.Event attribute)hUtrauhHNhIhhJ]ubh3)r}r(h.Uh/jh9Nh;hsh=}r(huhvXpyhB]hA]h?]h@]hF]hwX attributerhyjuhHNhIhhJ]r(h{)r}r(h.X Event.nameh/jh9jih;hh=}r(hB]rhahhXcircuits.core.eventsr r }r bhA]h?]h@]hF]r hahX Event.namehhhuhHNhIhhJ]r (h)r}r(h.Xnameh/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSXnamerr}r(h.Uh/jubaubh)r}r(h.X = 'Event'h/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSX = 'Event'rr}r(h.Uh/jubaubeubh0)r}r(h.Uh/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubhW)r}r (h.Uh/jh9Xc/home/prologic/work/circuits/circuits/core/events.py:docstring of circuits.core.events.Event.cancelr!h;h[h=}r"(hB]hA]h?]h@]hF]Uentries]r#(h^X,cancel() (circuits.core.events.Event method)hUtr$auhHNhIhhJ]ubh3)r%}r&(h.Uh/jh9j!h;hsh=}r'(huhvXpyhB]hA]h?]h@]hF]hwXmethodr(hyj(uhHNhIhhJ]r)(h{)r*}r+(h.XEvent.cancel()h/j%h9hh;hh=}r,(hB]r-hahhXcircuits.core.eventsr.r/}r0bhA]h?]h@]hF]r1hahX Event.cancelhhhuhHNhIhhJ]r2(h)r3}r4(h.Xcancelh/j*h9hh;hh=}r5(h?]h@]hA]hB]hF]uhHNhIhhJ]r6hSXcancelr7r8}r9(h.Uh/j3ubaubh)r:}r;(h.Uh/j*h9hh;hh=}r<(h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubh0)r=}r>(h.Uh/j%h9hh;hh=}r?(h?]h@]hA]hB]hF]uhHNhIhhJ]r@h`)rA}rB(h.X6Cancel the event from being processed (if not already)rCh/j=h9j!h;heh=}rD(h?]h@]hA]hB]hF]uhHKhIhhJ]rEhSX6Cancel the event from being processed (if not already)rFrG}rH(h.jCh/jAubaubaubeubhW)rI}rJ(h.Uh/jh9Xa/home/prologic/work/circuits/circuits/core/events.py:docstring of circuits.core.events.Event.stoprKh;h[h=}rL(hB]hA]h?]h@]hF]Uentries]rM(h^X*stop() (circuits.core.events.Event method)hUtrNauhHNhIhhJ]ubh3)rO}rP(h.Uh/jh9jKh;hsh=}rQ(huhvXpyhB]hA]h?]h@]hF]hwXmethodrRhyjRuhHNhIhhJ]rS(h{)rT}rU(h.X Event.stop()h/jOh9hh;hh=}rV(hB]rWhahhXcircuits.core.eventsrXrY}rZbhA]h?]h@]hF]r[hahX Event.stophhhuhHNhIhhJ]r\(h)r]}r^(h.Xstoph/jTh9hh;hh=}r_(h?]h@]hA]hB]hF]uhHNhIhhJ]r`hSXstoprarb}rc(h.Uh/j]ubaubh)rd}re(h.Uh/jTh9hh;hh=}rf(h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubh0)rg}rh(h.Uh/jOh9hh;hh=}ri(h?]h@]hA]hB]hF]uhHNhIhhJ]rjh`)rk}rl(h.X%Stop further processing of this eventrmh/jgh9jKh;heh=}rn(h?]h@]hA]hB]hF]uhHKhIhhJ]rohSX%Stop further processing of this eventrprq}rr(h.jmh/jkubaubaubeubeubeubhW)rs}rt(h.Uh/h7h9Nh;h[h=}ru(hB]hA]h?]h@]hF]Uentries]rv(h^X)exception (class in circuits.core.events)hUtrwauhHNhIhhJ]ubh3)rx}ry(h.Uh/h7h9Nh;hsh=}rz(huhvXpyr{hB]hA]h?]h@]hF]hwXclassr|hyj|uhHNhIhhJ]r}(h{)r~}r(h.X<exception(type, value, traceback, handler=None, fevent=None)h/jxh9hh;hh=}r(hB]rhahhXcircuits.core.eventsrr}rbhA]h?]h@]hF]rhahX exceptionrhUhuhHNhIhhJ]r(h)r}r(h.Xclass h/j~h9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSXclass rr}r(h.Uh/jubaubh)r}r(h.Xcircuits.core.events.h/j~h9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSXcircuits.core.events.rr}r(h.Uh/jubaubh)r}r(h.jh/j~h9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSX exceptionrr}r(h.Uh/jubaubh)r}r(h.Uh/j~h9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]r(h)r}r(h.Xtypeh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXtyperr}r(h.Uh/jubah;jubh)r}r(h.Xvalueh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXvaluerr}r(h.Uh/jubah;jubh)r}r(h.X tracebackh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSX tracebackrr}r(h.Uh/jubah;jubh)r}r(h.X handler=Noneh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSX handler=Nonerr}r(h.Uh/jubah;jubh)r}r(h.X fevent=Noneh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSX fevent=Nonerr}r(h.Uh/jubah;jubeubeubh0)r}r(h.Uh/jxh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]r(h`)r}r(h.X*Bases: :class:`circuits.core.events.Event`h/jh9hmh;heh=}r(h?]h@]hA]hB]hF]uhHKhIhhJ]r(hSXBases: rr}r(h.XBases: h/jubh)r}r(h.X#:class:`circuits.core.events.Event`rh/jh9Nh;hh=}r(UreftypeXclasshhXcircuits.core.events.EventU refdomainXpyrhB]hA]U refexplicith?]h@]hF]hhhjhhuhHNhJ]rh)r}r(h.jh=}r(h?]h@]r(hjXpy-classrehA]hB]hF]uh/jhJ]rhSXcircuits.core.events.Eventrr}r(h.Uh/jubah;hubaubeubh`)r}r(h.Xexception Eventrh/jh9X`/home/prologic/work/circuits/circuits/core/events.py:docstring of circuits.core.events.exceptionrh;heh=}r(h?]h@]hA]hB]hF]uhHKhIhhJ]rhSXexception Eventrr}r(h.jh/jubaubh`)r}r(h.XThis event is sent for any exceptions that occur during the execution of an event Handler that is not SystemExit or KeyboardInterrupt.rh/jh9jh;heh=}r(h?]h@]hA]hB]hF]uhHKhIhhJ]rhSXThis event is sent for any exceptions that occur during the execution of an event Handler that is not SystemExit or KeyboardInterrupt.rr}r(h.jh/jubaubjS)r}r(h.Uh/jh9Nh;jVh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rjY)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]r(j^)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSX Parametersrr}r(h.Uh/jubah;jfubjg)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]rjl)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]r(jq)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]r h`)r }r (h.Uh=}r (h?]h@]hA]hB]hF]uh/jhJ]r (j)r}r(h.Xtypeh=}r(h?]h@]hA]hB]hF]uh/j hJ]rhSXtyperr}r(h.Uh/jubah;jubhSX (rr}r(h.Uh/j ubh)r}r(h.Uh=}r(Ureftypej}U reftargetXtyperU refdomainj{hB]hA]U refexplicith?]h@]hF]uh/j hJ]rcdocutils.nodes emphasis r)r}r(h.jh=}r (h?]h@]hA]hB]hF]uh/jhJ]r!hSXtyper"r#}r$(h.Uh/jubah;Uemphasisr%ubah;hubhSX)r&}r'(h.Uh/j ubhSX -- r(r)}r*(h.Uh/j ubhSXtype of exceptionr+r,}r-(h.Xtype of exceptionh/j ubeh;heubah;jubjq)r.}r/(h.Uh=}r0(h?]h@]hA]hB]hF]uh/jhJ]r1h`)r2}r3(h.Uh=}r4(h?]h@]hA]hB]hF]uh/j.hJ]r5(j)r6}r7(h.Xvalueh=}r8(h?]h@]hA]hB]hF]uh/j2hJ]r9hSXvaluer:r;}r<(h.Uh/j6ubah;jubhSX (r=r>}r?(h.Uh/j2ubh)r@}rA(h.Uh=}rB(Ureftypej}U reftargetXexceptions.TypeErrorrCU refdomainj{hB]hA]U refexplicith?]h@]hF]uh/j2hJ]rDj)rE}rF(h.jCh=}rG(h?]h@]hA]hB]hF]uh/j@hJ]rHhSXexceptions.TypeErrorrIrJ}rK(h.Uh/jEubah;j%ubah;hubhSX)rL}rM(h.Uh/j2ubhSX -- rNrO}rP(h.Uh/j2ubhSXexception objectrQrR}rS(h.Xexception objecth/j2ubeh;heubah;jubjq)rT}rU(h.Uh=}rV(h?]h@]hA]hB]hF]uh/jhJ]rWh`)rX}rY(h.Uh=}rZ(h?]h@]hA]hB]hF]uh/jThJ]r[(j)r\}r](h.X tracebackh=}r^(h?]h@]hA]hB]hF]uh/jXhJ]r_hSX tracebackr`ra}rb(h.Uh/j\ubah;jubhSX (rcrd}re(h.Uh/jXubh)rf}rg(h.Uh=}rh(Ureftypej}U reftargetX tracebackriU refdomainj{hB]hA]U refexplicith?]h@]hF]uh/jXhJ]rjj)rk}rl(h.jih=}rm(h?]h@]hA]hB]hF]uh/jfhJ]rnhSX tracebackrorp}rq(h.Uh/jkubah;j%ubah;hubhSX)rr}rs(h.Uh/jXubhSX -- rtru}rv(h.Uh/jXubhSXtraceback of exceptionrwrx}ry(h.Xtraceback of exceptionh/jXubeh;heubah;jubjq)rz}r{(h.Uh=}r|(h?]h@]hA]hB]hF]uh/jhJ]r}h`)r~}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jzhJ]r(j)r}r(h.Xhandlerh=}r(h?]h@]hA]hB]hF]uh/j~hJ]rhSXhandlerrr}r(h.Uh/jubah;jubhSX (rr}r(h.Uh/j~ubh)r}r(h.Uh=}r(Ureftypej}U reftargetX@handler()rU refdomainj{hB]hA]U refexplicith?]h@]hF]uh/j~hJ]rj)r}r(h.jh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSX@handler()rr}r(h.Uh/jubah;j%ubah;hubhSX)r}r(h.Uh/j~ubhSX -- rr}r(h.Uh/j~ubhSX!handler that raised the exceptionrr}r(h.X!handler that raised the exceptionh/j~ubeh;heubah;jubjq)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]rh`)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]r(j)r}r(h.Xfeventh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXfeventrr}r(h.Uh/jubah;jubhSX (rr}r(h.Uh/jubh)r}r(h.Uh=}r(Ureftypej}U reftargetXeventrU refdomainj{hB]hA]U refexplicith?]h@]hF]uh/jhJ]rj)r}r(h.jh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXeventrr}r(h.Uh/jubah;j%ubah;hubhSX)r}r(h.Uh/jubhSX -- rr}r(h.Uh/jubhSXevent that failedrr}r(h.Xevent that failedh/jubeh;heubah;jubeh;jYubah;jZubeh;j[ubaubhW)r}r(h.Uh/jh9Nh;h[h=}r(hB]hA]h?]h@]hF]Uentries]r(h^X/name (circuits.core.events.exception attribute)hUtrauhHNhIhhJ]ubh3)r}r(h.Uh/jh9Nh;hsh=}r(huhvXpyhB]hA]h?]h@]hF]hwX attributerhyjuhHNhIhhJ]r(h{)r}r(h.Xexception.nameh/jh9jih;hh=}r(hB]rhahhXcircuits.core.eventsrr}rbhA]h?]h@]hF]rhahXexception.namehjhuhHNhIhhJ]r(h)r}r(h.Xnameh/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSXnamerr}r(h.Uh/jubaubh)r}r(h.X = 'exception'h/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSX = 'exception'rr}r(h.Uh/jubaubeubh0)r}r(h.Uh/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubeubeubhW)r}r(h.Uh/h7h9Nh;h[h=}r(hB]hA]h?]h@]hF]Uentries]r(h^X'started (class in circuits.core.events)hUtrauhHNhIhhJ]ubh3)r}r(h.Uh/h7h9Nh;hsh=}r(huhvXpyrhB]hA]h?]h@]hF]hwXclassrhyjuhHNhIhhJ]r(h{)r}r(h.Xstarted(manager)h/jh9hh;hh=}r(hB]rhahhXcircuits.core.eventsrr}rbhA]h?]h@]hF]rhahXstartedrhUhuhHNhIhhJ]r(h)r}r(h.Xclass h/jh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSXclass rr}r(h.Uh/jubaubh)r}r(h.Xcircuits.core.events.h/jh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]r hSXcircuits.core.events.r r }r (h.Uh/jubaubh)r }r(h.jh/jh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSXstartedrr}r(h.Uh/j ubaubh)r}r(h.Uh/jh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rh)r}r(h.Xmanagerh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXmanagerrr}r(h.Uh/jubah;jubaubeubh0)r}r (h.Uh/jh9hh;hh=}r!(h?]h@]hA]hB]hF]uhHNhIhhJ]r"(h`)r#}r$(h.X*Bases: :class:`circuits.core.events.Event`h/jh9hmh;heh=}r%(h?]h@]hA]hB]hF]uhHKhIhhJ]r&(hSXBases: r'r(}r)(h.XBases: h/j#ubh)r*}r+(h.X#:class:`circuits.core.events.Event`r,h/j#h9Nh;hh=}r-(UreftypeXclasshhXcircuits.core.events.EventU refdomainXpyr.hB]hA]U refexplicith?]h@]hF]hhhjhhuhHNhJ]r/h)r0}r1(h.j,h=}r2(h?]h@]r3(hj.Xpy-classr4ehA]hB]hF]uh/j*hJ]r5hSXcircuits.core.events.Eventr6r7}r8(h.Uh/j0ubah;hubaubeubh`)r9}r:(h.X started Eventr;h/jh9X^/home/prologic/work/circuits/circuits/core/events.py:docstring of circuits.core.events.startedr<h;heh=}r=(h?]h@]hA]hB]hF]uhHKhIhhJ]r>hSX started Eventr?r@}rA(h.j;h/j9ubaubh`)rB}rC(h.XCThis Event is sent when a Component or Manager has started running.rDh/jh9j<h;heh=}rE(h?]h@]hA]hB]hF]uhHKhIhhJ]rFhSXCThis Event is sent when a Component or Manager has started running.rGrH}rI(h.jDh/jBubaubjS)rJ}rK(h.Uh/jh9Nh;jVh=}rL(h?]h@]hA]hB]hF]uhHNhIhhJ]rMjY)rN}rO(h.Uh=}rP(h?]h@]hA]hB]hF]uh/jJhJ]rQ(j^)rR}rS(h.Uh=}rT(h?]h@]hA]hB]hF]uh/jNhJ]rUhSX ParametersrVrW}rX(h.Uh/jRubah;jfubjg)rY}rZ(h.Uh=}r[(h?]h@]hA]hB]hF]uh/jNhJ]r\h`)r]}r^(h.Uh=}r_(h?]h@]hA]hB]hF]uh/jYhJ]r`(j)ra}rb(h.Xmanagerh=}rc(h?]h@]hA]hB]hF]uh/j]hJ]rdhSXmanagerrerf}rg(h.Uh/jaubah;jubhSX (rhri}rj(h.Uh/j]ubh)rk}rl(h.Uh=}rm(Ureftypej}U reftargetXComponent or ManagerrnU refdomainjhB]hA]U refexplicith?]h@]hF]uh/j]hJ]roj)rp}rq(h.jnh=}rr(h?]h@]hA]hB]hF]uh/jkhJ]rshSXComponent or Managerrtru}rv(h.Uh/jpubah;j%ubah;hubhSX)rw}rx(h.Uh/j]ubhSX -- ryrz}r{(h.Uh/j]ubhSX)The component or manager that was startedr|r}}r~(h.X)The component or manager that was startedh/j]ubeh;heubah;jZubeh;j[ubaubhW)r}r(h.Uh/jh9Nh;h[h=}r(hB]hA]h?]h@]hF]Uentries]r(h^X-name (circuits.core.events.started attribute)h#UtrauhHNhIhhJ]ubh3)r}r(h.Uh/jh9Nh;hsh=}r(huhvXpyhB]hA]h?]h@]hF]hwX attributerhyjuhHNhIhhJ]r(h{)r}r(h.X started.nameh/jh9jih;hh=}r(hB]rh#ahhXcircuits.core.eventsrr}rbhA]h?]h@]hF]rh#ahX started.namehjhuhHNhIhhJ]r(h)r}r(h.Xnameh/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSXnamerr}r(h.Uh/jubaubh)r}r(h.X = 'started'h/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSX = 'started'rr}r(h.Uh/jubaubeubh0)r}r(h.Uh/jh9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubeubeubhW)r}r(h.Uh/h7h9Nh;h[h=}r(hB]hA]h?]h@]hF]Uentries]r(h^X'stopped (class in circuits.core.events)h$UtrauhHNhIhhJ]ubh3)r}r(h.Uh/h7h9Nh;hsh=}r(huhvXpyrhB]hA]h?]h@]hF]hwXclassrhyjuhHNhIhhJ]r(h{)r}r(h.Xstopped(manager)h/jh9hh;hh=}r(hB]rh$ahhXcircuits.core.eventsrr}rbhA]h?]h@]hF]rh$ahXstoppedrhUhuhHNhIhhJ]r(h)r}r(h.Xclass h/jh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSXclass rr}r(h.Uh/jubaubh)r}r(h.Xcircuits.core.events.h/jh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSXcircuits.core.events.rr}r(h.Uh/jubaubh)r}r(h.jh/jh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSXstoppedrr}r(h.Uh/jubaubh)r}r(h.Uh/jh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rh)r}r(h.Xmanagerh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXmanagerrr}r(h.Uh/jubah;jubaubeubh0)r}r(h.Uh/jh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]r(h`)r}r(h.X*Bases: :class:`circuits.core.events.Event`h/jh9hmh;heh=}r(h?]h@]hA]hB]hF]uhHKhIhhJ]r(hSXBases: rr}r(h.XBases: h/jubh)r}r(h.X#:class:`circuits.core.events.Event`rh/jh9Nh;hh=}r(UreftypeXclasshhXcircuits.core.events.EventU refdomainXpyrhB]hA]U refexplicith?]h@]hF]hhhjhhuhHNhJ]rh)r}r(h.jh=}r(h?]h@]r(hjXpy-classrehA]hB]hF]uh/jhJ]rhSXcircuits.core.events.Eventrr}r(h.Uh/jubah;hubaubeubh`)r}r(h.X stopped Eventrh/jh9X^/home/prologic/work/circuits/circuits/core/events.py:docstring of circuits.core.events.stoppedrh;heh=}r(h?]h@]hA]hB]hF]uhHKhIhhJ]rhSX stopped Eventrr}r(h.jh/jubaubh`)r}r(h.XCThis Event is sent when a Component or Manager has stopped running.rh/jh9jh;heh=}r(h?]h@]hA]hB]hF]uhHKhIhhJ]rhSXCThis Event is sent when a Component or Manager has stopped running.rr}r(h.jh/jubaubjS)r}r(h.Uh/jh9Nh;jVh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rjY)r}r(h.Uh=}r (h?]h@]hA]hB]hF]uh/jhJ]r (j^)r }r (h.Uh=}r (h?]h@]hA]hB]hF]uh/jhJ]rhSX Parametersrr}r(h.Uh/j ubah;jfubjg)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]rh`)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]r(j)r}r(h.Xmanagerh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXmanagerrr}r (h.Uh/jubah;jubhSX (r!r"}r#(h.Uh/jubh)r$}r%(h.Uh=}r&(Ureftypej}U reftargetXComponent or Managerr'U refdomainjhB]hA]U refexplicith?]h@]hF]uh/jhJ]r(j)r)}r*(h.j'h=}r+(h?]h@]hA]hB]hF]uh/j$hJ]r,hSXComponent or Managerr-r.}r/(h.Uh/j)ubah;j%ubah;hubhSX)r0}r1(h.Uh/jubhSX -- r2r3}r4(h.Uh/jubhSX)The component or manager that has stoppedr5r6}r7(h.X)The component or manager that has stoppedh/jubeh;heubah;jZubeh;j[ubaubhW)r8}r9(h.Uh/jh9Nh;h[h=}r:(hB]hA]h?]h@]hF]Uentries]r;(h^X-name (circuits.core.events.stopped attribute)h Utr<auhHNhIhhJ]ubh3)r=}r>(h.Uh/jh9Nh;hsh=}r?(huhvXpyhB]hA]h?]h@]hF]hwX attributer@hyj@uhHNhIhhJ]rA(h{)rB}rC(h.X stopped.nameh/j=h9jih;hh=}rD(hB]rEh ahhXcircuits.core.eventsrFrG}rHbhA]h?]h@]hF]rIh ahX stopped.namehjhuhHNhIhhJ]rJ(h)rK}rL(h.Xnameh/jBh9jih;hh=}rM(h?]h@]hA]hB]hF]uhHNhIhhJ]rNhSXnamerOrP}rQ(h.Uh/jKubaubh)rR}rS(h.X = 'stopped'h/jBh9jih;hh=}rT(h?]h@]hA]hB]hF]uhHNhIhhJ]rUhSX = 'stopped'rVrW}rX(h.Uh/jRubaubeubh0)rY}rZ(h.Uh/j=h9jih;hh=}r[(h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubeubeubhW)r\}r](h.Uh/h7h9Nh;h[h=}r^(hB]hA]h?]h@]hF]Uentries]r_(h^X&signal (class in circuits.core.events)hUtr`auhHNhIhhJ]ubh3)ra}rb(h.Uh/h7h9Nh;hsh=}rc(huhvXpyhB]hA]h?]h@]hF]hwXclassrdhyjduhHNhIhhJ]re(h{)rf}rg(h.Xsignal(signo, stack)h/jah9hh;hh=}rh(hB]rihahhXcircuits.core.eventsrjrk}rlbhA]h?]h@]hF]rmhahXsignalrnhUhuhHNhIhhJ]ro(h)rp}rq(h.Xclass h/jfh9hh;hh=}rr(h?]h@]hA]hB]hF]uhHNhIhhJ]rshSXclass rtru}rv(h.Uh/jpubaubh)rw}rx(h.Xcircuits.core.events.h/jfh9hh;hh=}ry(h?]h@]hA]hB]hF]uhHNhIhhJ]rzhSXcircuits.core.events.r{r|}r}(h.Uh/jwubaubh)r~}r(h.jnh/jfh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSXsignalrr}r(h.Uh/j~ubaubh)r}r(h.Uh/jfh9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]r(h)r}r(h.Xsignoh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXsignorr}r(h.Uh/jubah;jubh)r}r(h.Xstackh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXstackrr}r(h.Uh/jubah;jubeubeubh0)r}r(h.Uh/jah9hh;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]r(h`)r}r(h.X*Bases: :class:`circuits.core.events.Event`h/jh9hmh;heh=}r(h?]h@]hA]hB]hF]uhHKhIhhJ]r(hSXBases: rr}r(h.XBases: h/jubh)r}r(h.X#:class:`circuits.core.events.Event`rh/jh9Nh;hh=}r(UreftypeXclasshhXcircuits.core.events.EventU refdomainXpyrhB]hA]U refexplicith?]h@]hF]hhhjnhhuhHNhJ]rh)r}r(h.jh=}r(h?]h@]r(hjXpy-classrehA]hB]hF]uh/jhJ]rhSXcircuits.core.events.Eventrr}r(h.Uh/jubah;hubaubeubh`)r}r(h.X signal Eventrh/jh9X]/home/prologic/work/circuits/circuits/core/events.py:docstring of circuits.core.events.signalrh;heh=}r(h?]h@]hA]hB]hF]uhHKhIhhJ]rhSX signal Eventrr}r(h.jh/jubaubh`)r}r(h.X6This Event is sent when a Component receives a signal.rh/jh9jh;heh=}r(h?]h@]hA]hB]hF]uhHKhIhhJ]rhSX6This Event is sent when a Component receives a signal.rr}r(h.jh/jubaubjS)r}r(h.Uh/jh9Nh;jVh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rjY)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]r(j^)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSX Parametersrr}r(h.Uh/jubah;jfubjg)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]rjl)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]r(jq)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]rh`)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]r(j)r}r(h.Xsignoh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXsignorr}r(h.Uh/jubah;jubhSX -- rr}r(h.Uh/jubhSXThe signal number received.rr}r(h.XThe signal number received.h/jubeh;heubah;jubjq)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]rh`)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]r(j)r}r(h.Xstackh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXstackrr}r(h.Uh/jubah;jubhSX -- rr}r(h.Uh/jubhSXThe interrupted stack frame.rr}r(h.XThe interrupted stack frame.h/jubeh;heubah;jubeh;jYubah;jZubeh;j[ubaubhW)r}r(h.Uh/jh9Nh;h[h=}r(hB]hA]h?]h@]hF]Uentries]r(h^X,name (circuits.core.events.signal attribute)hUtrauhHNhIhhJ]ubh3)r}r (h.Uh/jh9Nh;hsh=}r (huhvXpyhB]hA]h?]h@]hF]hwX attributer hyj uhHNhIhhJ]r (h{)r }r(h.X signal.nameh/jh9jih;hh=}r(hB]rhahhXcircuits.core.eventsrr}rbhA]h?]h@]hF]rhahX signal.namehjnhuhHNhIhhJ]r(h)r}r(h.Xnameh/j h9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rhSXnamerr}r(h.Uh/jubaubh)r}r(h.X = 'signal'h/j h9jih;hh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]r hSX = 'signal'r!r"}r#(h.Uh/jubaubeubh0)r$}r%(h.Uh/jh9jih;hh=}r&(h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubeubeubhW)r'}r((h.Uh/h7h9Nh;h[h=}r)(hB]hA]h?]h@]hF]Uentries]r*(h^X*registered (class in circuits.core.events)h Utr+auhHNhIhhJ]ubh3)r,}r-(h.Uh/h7h9Nh;hsh=}r.(huhvXpyr/hB]hA]h?]h@]hF]hwXclassr0hyj0uhHNhIhhJ]r1(h{)r2}r3(h.Xregistered(component, manager)h/j,h9hh;hh=}r4(hB]r5h ahhXcircuits.core.eventsr6r7}r8bhA]h?]h@]hF]r9h ahX registeredr:hUhuhHNhIhhJ]r;(h)r<}r=(h.Xclass h/j2h9hh;hh=}r>(h?]h@]hA]hB]hF]uhHNhIhhJ]r?hSXclass r@rA}rB(h.Uh/j<ubaubh)rC}rD(h.Xcircuits.core.events.h/j2h9hh;hh=}rE(h?]h@]hA]hB]hF]uhHNhIhhJ]rFhSXcircuits.core.events.rGrH}rI(h.Uh/jCubaubh)rJ}rK(h.j:h/j2h9hh;hh=}rL(h?]h@]hA]hB]hF]uhHNhIhhJ]rMhSX registeredrNrO}rP(h.Uh/jJubaubh)rQ}rR(h.Uh/j2h9hh;hh=}rS(h?]h@]hA]hB]hF]uhHNhIhhJ]rT(h)rU}rV(h.X componenth=}rW(h?]h@]hA]hB]hF]uh/jQhJ]rXhSX componentrYrZ}r[(h.Uh/jUubah;jubh)r\}r](h.Xmanagerh=}r^(h?]h@]hA]hB]hF]uh/jQhJ]r_hSXmanagerr`ra}rb(h.Uh/j\ubah;jubeubeubh0)rc}rd(h.Uh/j,h9hh;hh=}re(h?]h@]hA]hB]hF]uhHNhIhhJ]rf(h`)rg}rh(h.X*Bases: :class:`circuits.core.events.Event`h/jch9hmh;heh=}ri(h?]h@]hA]hB]hF]uhHKhIhhJ]rj(hSXBases: rkrl}rm(h.XBases: h/jgubh)rn}ro(h.X#:class:`circuits.core.events.Event`rph/jgh9Nh;hh=}rq(UreftypeXclasshhXcircuits.core.events.EventU refdomainXpyrrhB]hA]U refexplicith?]h@]hF]hhhj:hhuhHNhJ]rsh)rt}ru(h.jph=}rv(h?]h@]rw(hjrXpy-classrxehA]hB]hF]uh/jnhJ]ryhSXcircuits.core.events.Eventrzr{}r|(h.Uh/jtubah;hubaubeubh`)r}}r~(h.Xregistered Eventrh/jch9Xa/home/prologic/work/circuits/circuits/core/events.py:docstring of circuits.core.events.registeredrh;heh=}r(h?]h@]hA]hB]hF]uhHKhIhhJ]rhSXregistered Eventrr}r(h.jh/j}ubaubh`)r}r(h.XThis Event is sent when a Component has registered with another Component or Manager. This Event is only sent if the Component or Manager being registered which is not itself.rh/jch9jh;heh=}r(h?]h@]hA]hB]hF]uhHKhIhhJ]rhSXThis Event is sent when a Component has registered with another Component or Manager. This Event is only sent if the Component or Manager being registered which is not itself.rr}r(h.jh/jubaubjS)r}r(h.Uh/jch9Nh;jVh=}r(h?]h@]hA]hB]hF]uhHNhIhhJ]rjY)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]r(j^)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSX Parametersrr}r(h.Uh/jubah;jfubjg)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]rjl)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]r(jq)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]rh`)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]r(j)r}r(h.X componenth=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSX componentrr}r(h.Uh/jubah;jubhSX (rr}r(h.Uh/jubh)r}r(h.Uh=}r(Ureftypej}U reftargetX ComponentrU refdomainj/hB]hA]U refexplicith?]h@]hF]uh/jhJ]rj)r}r(h.jh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSX Componentrr}r(h.Uh/jubah;j%ubah;hubhSX)r}r(h.Uh/jubhSX -- rr}r(h.Uh/jubhSXThe Component being registeredrr}r(h.XThe Component being registeredh/jubeh;heubah;jubjq)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]rh`)r}r(h.Uh=}r(h?]h@]hA]hB]hF]uh/jhJ]r(j)r}r(h.Xmanagerh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXmanagerrr}r(h.Uh/jubah;jubhSX (rr}r(h.Uh/jubh)r}r(h.Uh=}r(Ureftypej}U reftargetXComponent or ManagerrU refdomainj/hB]hA]U refexplicith?]h@]hF]uh/jhJ]rj)r}r(h.jh=}r(h?]h@]hA]hB]hF]uh/jhJ]rhSXComponent or Managerrr}r(h.Uh/jubah;j%ubah;hubhSX)r}r(h.Uh/jubhSX -- rr}r(h.Uh/jubhSX.The Component or Manager being registered withrr}r(h.X.The Component or Manager being registered withh/jubeh;heubah;jubeh;jYubah;jZubeh;j[ubaubhW)r}r(h.Uh/jch9Nh;h[h=}r(hB]hA]h?]h@]hF]Uentries]r(h^X0name (circuits.core.events.registered attribute)hUtrauhHNhIhhJ]ubh3)r}r(h.Uh/jch9Nh;hsh=}r(huhvXpyhB]hA]h?]h@]hF]hwX attributerhyjuhHNhIhhJ]r(h{)r}r(h.Xregistered.nameh/jh9jih;hh=}r(hB]rhahhXcircuits.core.eventsrr }r bhA]h?]h@]hF]r hahXregistered.namehj:huhHNhIhhJ]r (h)r }r (h.Xnameh/jh9jih;hh=}r (h?]h@]hA]hB]hF]uhHNhIhhJ]r hSXnamer r }r (h.Uh/j ubaubh)r }r (h.X = 'registered'h/jh9jih;hh=}r (h?]h@]hA]hB]hF]uhHNhIhhJ]r hSX = 'registered'r r }r (h.Uh/j ubaubeubh0)r }r (h.Uh/jh9jih;hh=}r (h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubeubeubhW)r }r (h.Uh/h7h9Nh;h[h=}r (hB]hA]h?]h@]hF]Uentries]r (h^X,unregistered (class in circuits.core.events)hUtr auhHNhIhhJ]ubh3)r }r (h.Uh/h7h9Nh;hsh=}r (huhvXpyr hB]hA]h?]h@]hF]hwXclassr hyj uhHNhIhhJ]r (h{)r }r! (h.Xunregistered(*args, **kwargs)h/j h9hh;hh=}r" (hB]r# hahhXcircuits.core.eventsr$ r% }r& bhA]h?]h@]hF]r' hahX unregisteredr( hUhuhHNhIhhJ]r) (h)r* }r+ (h.Xclass h/j h9hh;hh=}r, (h?]h@]hA]hB]hF]uhHNhIhhJ]r- hSXclass r. r/ }r0 (h.Uh/j* ubaubh)r1 }r2 (h.Xcircuits.core.events.h/j h9hh;hh=}r3 (h?]h@]hA]hB]hF]uhHNhIhhJ]r4 hSXcircuits.core.events.r5 r6 }r7 (h.Uh/j1 ubaubh)r8 }r9 (h.j( h/j h9hh;hh=}r: (h?]h@]hA]hB]hF]uhHNhIhhJ]r; hSX unregisteredr< r= }r> (h.Uh/j8 ubaubh)r? }r@ (h.Uh/j h9hh;hh=}rA (h?]h@]hA]hB]hF]uhHNhIhhJ]rB (h)rC }rD (h.X*argsh=}rE (h?]h@]hA]hB]hF]uh/j? hJ]rF hSX*argsrG rH }rI (h.Uh/jC ubah;jubh)rJ }rK (h.X**kwargsh=}rL (h?]h@]hA]hB]hF]uh/j? hJ]rM hSX**kwargsrN rO }rP (h.Uh/jJ ubah;jubeubeubh0)rQ }rR (h.Uh/j h9hh;hh=}rS (h?]h@]hA]hB]hF]uhHNhIhhJ]rT (h`)rU }rV (h.X*Bases: :class:`circuits.core.events.Event`h/jQ h9hmh;heh=}rW (h?]h@]hA]hB]hF]uhHKhIhhJ]rX (hSXBases: rY rZ }r[ (h.XBases: h/jU ubh)r\ }r] (h.X#:class:`circuits.core.events.Event`r^ h/jU h9Nh;hh=}r_ (UreftypeXclasshhXcircuits.core.events.EventU refdomainXpyr` hB]hA]U refexplicith?]h@]hF]hhhj( hhuhHNhJ]ra h)rb }rc (h.j^ h=}rd (h?]h@]re (hj` Xpy-classrf ehA]hB]hF]uh/j\ hJ]rg hSXcircuits.core.events.Eventrh ri }rj (h.Uh/jb ubah;hubaubeubh`)rk }rl (h.Xunregistered Eventrm h/jQ h9Xc/home/prologic/work/circuits/circuits/core/events.py:docstring of circuits.core.events.unregisteredrn h;heh=}ro (h?]h@]hA]hB]hF]uhHKhIhhJ]rp hSXunregistered Eventrq rr }rs (h.jm h/jk ubaubh`)rt }ru (h.XXThis Event is sent when a Component has been unregistered from its Component or Manager.rv h/jQ h9jn h;heh=}rw (h?]h@]hA]hB]hF]uhHKhIhhJ]rx hSXXThis Event is sent when a Component has been unregistered from its Component or Manager.ry rz }r{ (h.jv h/jt ubaubh`)r| }r} (h.XAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r~ h/jQ h9jn h;heh=}r (h?]h@]hA]hB]hF]uhHKhIhhJ]r hSXAn event is a message send to one or more channels. It is eventually dispatched to all components that have handlers for one of the channels and the event type.r r }r (h.j~ h/j| ubaubh`)r }r (h.XAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.r h/jQ h9jn h;heh=}r (h?]h@]hA]hB]hF]uhHK hIhhJ]r hSXAll normal arguments and keyword arguments passed to the constructor of an event are passed on to the handler. When declaring a handler, its argument list must therefore match the arguments used for creating the event.r r }r (h.j h/j ubaubh`)r }r (h.X_Every event has a :attr:`name` attribute that is used for matching the event with the handlers.h/jQ h9jn h;heh=}r (h?]h@]hA]hB]hF]uhHKhIhhJ]r (hSXEvery event has a r r }r (h.XEvery event has a h/j ubh)r }r (h.X :attr:`name`r h/j h9Nh;hh=}r (UreftypeXattrhhXnameU refdomainXpyr hB]hA]U refexplicith?]h@]hF]hhhj( hhuhHNhJ]r h)r }r (h.j h=}r (h?]h@]r (hj Xpy-attrr ehA]hB]hF]uh/j hJ]r hSXnamer r }r (h.Uh/j ubah;hubaubhSXA attribute that is used for matching the event with the handlers.r r }r (h.XA attribute that is used for matching the event with the handlers.h/j ubeubjS)r }r (h.Uh/jQ h9Nh;jVh=}r (h?]h@]hA]hB]hF]uhHNhIhhJ]r jY)r }r (h.Uh=}r (h?]h@]hA]hB]hF]uh/j hJ]r (j^)r }r (h.Uh=}r (h?]h@]hA]hB]hF]uh/j hJ]r hSX Variablesr r }r (h.Uh/j ubah;jfubjg)r }r (h.Uh=}r (h?]h@]hA]hB]hF]uh/j hJ]r jl)r }r (h.Uh=}r (h?]h@]hA]hB]hF]uh/j hJ]r (jq)r }r (h.Uh=}r (h?]h@]hA]hB]hF]uh/j hJ]r h`)r }r (h.Uh=}r (h?]h@]hA]hB]hF]uh/j hJ]r (h)r }r (h.Uh=}r (Ureftypej}U reftargetXchannelsr U refdomainj hB]hA]U refexplicith?]h@]hF]uh/j hJ]r j)r }r (h.j h=}r (h?]h@]hA]hB]hF]uh/j hJ]r hSXchannelsr r }r (h.Uh/j ubah;jubah;hubhSX -- r r }r (h.Uh/j ubh`)r }r (h.Xan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.r h/j h9jn h;heh=}r (h?]h@]hA]hB]hF]uhHKhJ]r hSXan optional attribute that may be set before firing the event. If defined (usually as a class variable), the attribute specifies the channels that the event should be delivered to as a tuple. This overrides the default behavior of sending the event to the firing component's channel.r r }r (h.j h/j ubaubh`)r }r (h.XWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.r h/j h9jn h;heh=}r (h?]h@]hA]hB]hF]uhHKhJ]r hSXWhen an event is fired, the value in this attribute is replaced for the instance with the channels that the event is actually sent to. This information may be used e.g. when the event is passed as a parameter to a handler.r r }r (h.j h/j ubaubeh;heubah;jubjq)r }r (h.Uh=}r (h?]h@]hA]hB]hF]uh/j hJ]r h`)r }r (h.Uh=}r (h?]h@]hA]hB]hF]uh/j hJ]r (h)r }r (h.Uh=}r (Ureftypej}U reftargetXvaluer U refdomainj hB]hA]U refexplicith?]h@]hF]uh/j hJ]r j)r }r (h.j h=}r (h?]h@]hA]hB]hF]uh/j hJ]r hSXvaluer r }r (h.Uh/j ubah;jubah;hubhSX -- r r }r (h.Uh/j ubhSX this is a r r }r (h.X this is a h/j ubh)r }r (h.X#:class:`circuits.core.values.Value`r h/j h9Nh;hh=}r (UreftypeXclasshhXcircuits.core.values.ValueU refdomainXpyr hB]hA]U refexplicith?]h@]hF]hhhj( hhuhHNhJ]r h)r }r (h.j h=}r (h?]h@]r (hj Xpy-classr ehA]hB]hF]uh/j hJ]r hSXcircuits.core.values.Valuer r }r (h.Uh/j ubah;hubaubhSXN object that holds the results returned by the handlers invoked for the event.r r }r (h.XN object that holds the results returned by the handlers invoked for the event.h/j ubeh;heubah;jubjq)r }r (h.Uh=}r (h?]h@]hA]hB]hF]uh/j hJ]r h`)r }r (h.Uh=}r (h?]h@]hA]hB]hF]uh/j hJ]r (h)r }r (h.Uh=}r (Ureftypej}U reftargetXsuccessr U refdomainj hB]hA]U refexplicith?]h@]hF]uh/j hJ]r j)r }r (h.j h=}r (h?]h@]hA]hB]hF]uh/j hJ]r hSXsuccessr r! }r" (h.Uh/j ubah;jubah;hubhSX -- r# r$ }r% (h.Uh/j ubhSX%if this optional attribute is set to r& r' }r( (h.X%if this optional attribute is set to h/j ubh)r) }r* (h.X``True``h=}r+ (h?]h@]hA]hB]hF]uh/j hJ]r, hSXTruer- r. }r/ (h.Uh/j) ubah;hubhSX, an associated event r0 r1 }r2 (h.X, an associated event h/j ubh)r3 }r4 (h.X ``success``h=}r5 (h?]h@]hA]hB]hF]uh/j hJ]r6 hSXsuccessr7 r8 }r9 (h.Uh/j3 ubah;hubhSX (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.r: r; }r< (h.X (original name with "_success" appended) will automatically be fired when all handlers for the event have been invoked successfully.h/j ubeh;heubah;jubjq)r= }r> (h.Uh=}r? (h?]h@]hA]hB]hF]uh/j hJ]r@ h`)rA }rB (h.Uh=}rC (h?]h@]hA]hB]hF]uh/j= hJ]rD (h)rE }rF (h.Uh=}rG (Ureftypej}U reftargetXsuccess_channelsrH U refdomainj hB]hA]U refexplicith?]h@]hF]uh/jA hJ]rI j)rJ }rK (h.jH h=}rL (h?]h@]hA]hB]hF]uh/jE hJ]rM hSXsuccess_channelsrN rO }rP (h.Uh/jJ ubah;jubah;hubhSX -- rQ rR }rS (h.Uh/jA ubhSXthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.rT rU }rV (h.Xthe success event is, by default, delivered to same channels as the successfully dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h/jA ubeh;heubah;jubjq)rW }rX (h.Uh=}rY (h?]h@]hA]hB]hF]uh/j hJ]rZ h`)r[ }r\ (h.Uh=}r] (h?]h@]hA]hB]hF]uh/jW hJ]r^ (h)r_ }r` (h.Uh=}ra (Ureftypej}U reftargetXcompleterb U refdomainj hB]hA]U refexplicith?]h@]hF]uh/j[ hJ]rc j)rd }re (h.jb h=}rf (h?]h@]hA]hB]hF]uh/j_ hJ]rg hSXcompleterh ri }rj (h.Uh/jd ubah;jubah;hubhSX -- rk rl }rm (h.Uh/j[ ubhSX%if this optional attribute is set to rn ro }rp (h.X%if this optional attribute is set to h/j[ ubh)rq }rr (h.X``True``h=}rs (h?]h@]hA]hB]hF]uh/j[ hJ]rt hSXTrueru rv }rw (h.Uh/jq ubah;hubhSX, an associated event rx ry }rz (h.X, an associated event h/j[ ubh)r{ }r| (h.X ``complete``h=}r} (h?]h@]hA]hB]hF]uh/j[ hJ]r~ hSXcompleter r }r (h.Uh/j{ ubah;hubhSX (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.r r }r (h.X (original name with "_complete" appended) will automatically be fired when all handlers for the event and all events fired by these handlers (recursively) have been invoked successfully.h/j[ ubeh;heubah;jubjq)r }r (h.Uh=}r (h?]h@]hA]hB]hF]uh/j hJ]r h`)r }r (h.Uh=}r (h?]h@]hA]hB]hF]uh/j hJ]r (h)r }r (h.Uh=}r (Ureftypej}U reftargetXcomplete_channelsr U refdomainj hB]hA]U refexplicith?]h@]hF]uh/j hJ]r j)r }r (h.j h=}r (h?]h@]hA]hB]hF]uh/j hJ]r hSXcomplete_channelsr r }r (h.Uh/j ubah;jubah;hubhSX -- r r }r (h.Uh/j ubhSXthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.r r }r (h.Xthe complete event is, by default, delivered to same channels as the initially dispatched event itself. This may be overridden by specifying an alternative list of destinations using this attribute.h/j ubeh;heubah;jubeh;jYubah;jZubeh;j[ubaubhW)r }r (h.Uh/jQ h9Nh;h[h=}r (hB]hA]h?]h@]hF]Uentries]r (h^X2name (circuits.core.events.unregistered attribute)h Utr auhHNhIhhJ]ubh3)r }r (h.Uh/jQ h9Nh;hsh=}r (huhvXpyhB]hA]h?]h@]hF]hwX attributer hyj uhHNhIhhJ]r (h{)r }r (h.Xunregistered.nameh/j h9jih;hh=}r (hB]r h ahhXcircuits.core.eventsr r }r bhA]h?]h@]hF]r h ahXunregistered.namehj( huhHNhIhhJ]r (h)r }r (h.Xnameh/j h9jih;hh=}r (h?]h@]hA]hB]hF]uhHNhIhhJ]r hSXnamer r }r (h.Uh/j ubaubh)r }r (h.X = 'unregistered'h/j h9jih;hh=}r (h?]h@]hA]hB]hF]uhHNhIhhJ]r hSX = 'unregistered'r r }r (h.Uh/j ubaubeubh0)r }r (h.Uh/j h9jih;hh=}r (h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubeubeubhW)r }r (h.Uh/h7h9Nh;h[h=}r (hB]hA]h?]h@]hF]Uentries]r (h^X/generate_events (class in circuits.core.events)h Utr auhHNhIhhJ]ubh4eubh9Nh;hsh=}r (huhvXpyhB]hA]h?]h@]hF]hwXclassr hyj uhHNhIhhJ]r (h{)r }r (h.Xgenerate_events(lock, max_wait)h/h4h9hh;hh=}r (hB]r h ahhXcircuits.core.eventsr r }r bhA]h?]h@]hF]r h ahXgenerate_eventsr hUhuhHNhIhhJ]r (h)r }r (h.Xclass h/j h9hh;hh=}r (h?]h@]hA]hB]hF]uhHNhIhhJ]r hSXclass r r }r (h.Uh/j ubaubh)r }r (h.Xcircuits.core.events.h/j h9hh;hh=}r (h?]h@]hA]hB]hF]uhHNhIhhJ]r hSXcircuits.core.events.r r }r (h.Uh/j ubaubh)r }r (h.j h/j h9hh;hh=}r (h?]h@]hA]hB]hF]uhHNhIhhJ]r hSXgenerate_eventsr r }r (h.Uh/j ubaubh)r }r (h.Uh/j h9hh;hh=}r (h?]h@]hA]hB]hF]uhHNhIhhJ]r (h)r }r (h.Xlockh=}r (h?]h@]hA]hB]hF]uh/j hJ]r hSXlockr r }r (h.Uh/j ubah;jubh)r }r (h.Xmax_waith=}r (h?]h@]hA]hB]hF]uh/j hJ]r hSXmax_waitr r }r (h.Uh/j ubah;jubeubeubh1eubh9hh;hh=}r (h?]h@]hA]hB]hF]uhHNhIhhJ]r (h`)r }r (h.X*Bases: :class:`circuits.core.events.Event`r h/h1h9hmh;heh=}r (h?]h@]hA]hB]hF]uhHKhIhhJ]r (hSXBases: r r }r (h.XBases: h/j ubh)r }r (h.X#:class:`circuits.core.events.Event`r h/j h9Nh;hh=}r (UreftypeXclasshhXcircuits.core.events.EventU refdomainXpyr hB]hA]U refexplicith?]h@]hF]hhhj hhuhHNhJ]r h)r }r (h.j h=}r (h?]h@]r (hj Xpy-classr ehA]hB]hF]uh/j hJ]r hSXcircuits.core.events.Eventr r }r (h.Uh/j ubah;hubaubeubh`)r }r (h.Xgenerate_events Eventr h/h1h9Xf/home/prologic/work/circuits/circuits/core/events.py:docstring of circuits.core.events.generate_eventsr h;heh=}r (h?]h@]hA]hB]hF]uhHKhIhhJ]r hSXgenerate_events Eventr r }r (h.j h/j ubaubh`)r }r (h.XThis Event is sent by the circuits core. All components that generate timed events or events from external sources (e.g. data becoming available) should fire any pending events in their "generate_events" handler.r h/h1h9j h;heh=}r! (h?]h@]hA]hB]hF]uhHKhIhhJ]r" hSXThis Event is sent by the circuits core. All components that generate timed events or events from external sources (e.g. data becoming available) should fire any pending events in their "generate_events" handler.r# r$ }r% (h.j h/j ubaubh`)r& }r' (h.XThe handler must either call :meth:`~stop` (*preventing other handlers from being called in the same iteration) or must invoke :meth:`~.reduce_time_left` with parameter 0.h/h1h9j h;heh=}r( (h?]h@]hA]hB]hF]uhHKhIhhJ]r) (hSXThe handler must either call r* r+ }r, (h.XThe handler must either call h/j& ubh)r- }r. (h.X :meth:`~stop`r/ h/j& h9Nh;hh=}r0 (UreftypeXmethhhXstopU refdomainXpyr1 hB]hA]U refexplicith?]h@]hF]hhhj hhuhHNhJ]r2 h)r3 }r4 (h.j/ h=}r5 (h?]h@]r6 (hj1 Xpy-methr7 ehA]hB]hF]uh/j- hJ]r8 hSXstop()r9 r: }r; (h.Uh/j3 ubah;hubaubhSX (r< r= }r> (h.X (h/j& ubcdocutils.nodes problematic r? )r@ }rA (h.X*h=}rB (hB]rC Uid2rD ahA]h?]h@]hF]UrefidUid1rE uh/j& hJ]rF hSX*rG }rH (h.Uh/j@ ubah;U problematicrI ubhSXRpreventing other handlers from being called in the same iteration) or must invoke rJ rK }rL (h.XRpreventing other handlers from being called in the same iteration) or must invoke h/j& ubh)rM }rN (h.X:meth:`~.reduce_time_left`rO h/j& h9Nh;hh=}rP (UreftypeXmethU refspecificrQ hhXreduce_time_leftU refdomainXpyrR hB]hA]U refexplicith?]h@]hF]hhhj hhuhHNhJ]rS h)rT }rU (h.jO h=}rV (h?]h@]rW (hjR Xpy-methrX ehA]hB]hF]uh/jM hJ]rY hSXreduce_time_left()rZ r[ }r\ (h.Uh/jT ubah;hubaubhSX with parameter 0.r] r^ }r_ (h.X with parameter 0.h/j& ubeubjS)r` }ra (h.Uh/h1h9Nh;jVh=}rb (h?]h@]hA]hB]hF]uhHNhIhhJ]rc jY)rd }re (h.Uh=}rf (h?]h@]hA]hB]hF]uh/j` hJ]rg (j^)rh }ri (h.Uh=}rj (h?]h@]hA]hB]hF]uh/jd hJ]rk hSX Parametersrl rm }rn (h.Uh/jh ubah;jfubjg)ro }rp (h.Uh=}rq (h?]h@]hA]hB]hF]uh/jd hJ]rr h`)rs }rt (h.Uh=}ru (h?]h@]hA]hB]hF]uh/jo hJ]rv (j)rw }rx (h.Xmax_waith=}ry (h?]h@]hA]hB]hF]uh/js hJ]rz hSXmax_waitr{ r| }r} (h.Uh/jw ubah;jubhSX -- r~ r }r (h.Uh/js ubhSX-maximum time available for generating events.r r }r (h.X-maximum time available for generating events.r h/js ubeh;heubah;jZubeh;j[ubaubh`)r }r (h.XComponents that actually consume time waiting for events to be generated, thus suspending normal execution, must provide a method ``resume`` that interrupts waiting for events.h/h1h9j h;heh=}r (h?]h@]hA]hB]hF]uhHKhIhhJ]r (hSXComponents that actually consume time waiting for events to be generated, thus suspending normal execution, must provide a method r r }r (h.XComponents that actually consume time waiting for events to be generated, thus suspending normal execution, must provide a method h/j ubh)r }r (h.X ``resume``h=}r (h?]h@]hA]hB]hF]uh/j hJ]r hSXresumer r }r (h.Uh/j ubah;hubhSX$ that interrupts waiting for events.r r }r (h.X$ that interrupts waiting for events.h/j ubeubhW)r }r (h.Uh/h1h9Xp/home/prologic/work/circuits/circuits/core/events.py:docstring of circuits.core.events.generate_events.time_leftr h;h[h=}r (hB]hA]h?]h@]hF]Uentries]r (h^X:time_left (circuits.core.events.generate_events attribute)h!Utr auhHNhIhhJ]ubh3)r }r (h.Uh/h1h9j h;hsh=}r (huhvXpyhB]hA]h?]h@]hF]hwX attributer hyj uhHNhIhhJ]r (h{)r }r (h.Xgenerate_events.time_lefth/j h9hh;hh=}r (hB]r h!ahhXcircuits.core.eventsr r }r bhA]h?]h@]hF]r h!ahXgenerate_events.time_lefthj huhHNhIhhJ]r h)r }r (h.X time_lefth/j h9hh;hh=}r (h?]h@]hA]hB]hF]uhHNhIhhJ]r hSX time_leftr r }r (h.Uh/j ubaubaubh0)r }r (h.Uh/j h9hh;hh=}r (h?]h@]hA]hB]hF]uhHNhIhhJ]r h`)r }r (h.XThe time left for generating events. A value less than 0 indicates unlimited time. You should have only one component in your system (usually a poller component) that spends up to "time left" until it generates an event.r h/j h9j h;heh=}r (h?]h@]hA]hB]hF]uhHKhIhhJ]r hSXThe time left for generating events. A value less than 0 indicates unlimited time. You should have only one component in your system (usually a poller component) that spends up to "time left" until it generates an event.r r }r (h.j h/j ubaubaubeubhW)r }r (h.Uh/h1h9Xw/home/prologic/work/circuits/circuits/core/events.py:docstring of circuits.core.events.generate_events.reduce_time_leftr h;h[h=}r (hB]hA]h?]h@]hF]Uentries]r (h^X@reduce_time_left() (circuits.core.events.generate_events method)hUtr auhHNhIhhJ]ubh3)r }r (h.Uh/h1h9j h;hsh=}r (huhvXpyhB]hA]h?]h@]hF]hwXmethodr hyj uhHNhIhhJ]r (h{)r }r (h.X+generate_events.reduce_time_left(time_left)h/j h9hh;hh=}r (hB]r hahhXcircuits.core.eventsr r }r bhA]h?]h@]hF]r hahX generate_events.reduce_time_lefthj huhHNhIhhJ]r (h)r }r (h.Xreduce_time_lefth/j h9hh;hh=}r (h?]h@]hA]hB]hF]uhHNhIhhJ]r hSXreduce_time_leftr r }r (h.Uh/j ubaubh)r }r (h.Uh/j h9hh;hh=}r (h?]h@]hA]hB]hF]uhHNhIhhJ]r h)r }r (h.X time_lefth=}r (h?]h@]hA]hB]hF]uh/j hJ]r hSX time_leftr r }r (h.Uh/j ubah;jubaubeubh0)r }r (h.Uh/j h9hh;hh=}r (h?]h@]hA]hB]hF]uhHNhIhhJ]r (h`)r }r (h.X7Update the time left for generating events. This is typically used by event generators that currently don't want to generate an event but know that they will within a certain time. By reducing the time left, they make sure that they are reinvoked when the time for generating the event has come (at the latest).r h/j h9j h;heh=}r (h?]h@]hA]hB]hF]uhHKhIhhJ]r hSX7Update the time left for generating events. This is typically used by event generators that currently don't want to generate an event but know that they will within a certain time. By reducing the time left, they make sure that they are reinvoked when the time for generating the event has come (at the latest).r r }r (h.j h/j ubaubh`)r }r (h.XThis method can only be used to reduce the time left. If the parameter is larger than the current value of time left, it is ignored.r h/j h9j h;heh=}r (h?]h@]hA]hB]hF]uhHKhIhhJ]r hSXThis method can only be used to reduce the time left. If the parameter is larger than the current value of time left, it is ignored.r r }r (h.j h/j ubaubh`)r }r (h.XtIf the time left is reduced to 0 and the event is currently being handled, the handler's *resume* method is invoked.h/j h9j h;heh=}r (h?]h@]hA]hB]hF]uhHK hIhhJ]r (hSXYIf the time left is reduced to 0 and the event is currently being handled, the handler's r r }r (h.XYIf the time left is reduced to 0 and the event is currently being handled, the handler's h/j ubj)r }r (h.X*resume*h=}r (h?]h@]hA]hB]hF]uh/j hJ]r hSXresumer r }r (h.Uh/j ubah;j%ubhSX method is invoked.r r }r (h.X method is invoked.h/j ubeubeubeubhW)r }r (h.Uh/h1h9Nh;h[h=}r (hB]hA]h?]h@]hF]Uentries]r (h^X5lock (circuits.core.events.generate_events attribute)h Utr auhHNhIhhJ]ubh3)r }r (h.Uh/h1h9Nh;hsh=}r (huhvXpyhB]hA]h?]h@]hF]hwX attributer hyj uhHNhIhhJ]r (h{)r }r (h.Xgenerate_events.lockh/j h9hh;hh=}r (hB]r h ahhXcircuits.core.eventsr r }r bhA]h?]h@]hF]r h ahXgenerate_events.lockhj huhHNhIhhJ]r h)r }r (h.Xlockh/j h9hh;hh=}r (h?]h@]hA]hB]hF]uhHNhIhhJ]r hSXlockr r }r! (h.Uh/j ubaubaubh0)r" }r# (h.Uh/j h9hh;hh=}r$ (h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubhW)r% }r& (h.Uh/h1h9Nh;h[h=}r' (hB]hA]h?]h@]hF]Uentries]r( (h^X5name (circuits.core.events.generate_events attribute)hUtr) auhHNhIhhJ]ubh3)r* }r+ (h.Uh/h1h9Nh;hsh=}r, (huhvXpyhB]hA]h?]h@]hF]hwX attributer- hyj- uhHNhIhhJ]r. (h{)r/ }r0 (h.Xgenerate_events.namer1 h/j* h9jih;hh=}r2 (hB]r3 hahhXcircuits.core.eventsr4 r5 }r6 bhA]h?]h@]hF]r7 hahXgenerate_events.namehj huhHNhIhhJ]r8 (h)r9 }r: (h.Xnameh/j/ h9jih;hh=}r; (h?]h@]hA]hB]hF]uhHNhIhhJ]r< hSXnamer= r> }r? (h.Uh/j9 ubaubh)r@ }rA (h.X = 'generate_events'h/j/ h9jih;hh=}rB (h?]h@]hA]hB]hF]uhHNhIhhJ]rC hSX = 'generate_events'rD rE }rF (h.Uh/j@ ubaubeubh0)rG }rH (h.Uh/j* h9jih;hh=}rI (h?]h@]hA]hB]hF]uhHNhIhhJ]ubeubeubh9j h;Usystem_messagerJ h=}rK (h?]UlevelKhB]rL jE ahA]rM jD aUsourcej h@]hF]UlineKUtypeUWARNINGrN uhHK hIhhJ]rO h`)rP }rQ (h.Uh=}rR (h?]h@]hA]hB]hF]uh/h,hJ]rS hSX0Inline emphasis start-string without end-string.rT rU }rV (h.Uh/jP ubah;heubaubaUcurrent_sourcerW NU decorationrX NUautofootnote_startrY KUnameidsrZ }r[ (hhhhhhh h h h h h h h h h hhhhhhhhhhhhhhhhhhhhhhhhEhhhhhhhhhhhhh h h!h!h"h"h#h#h$h$h%h%h&h&uhJ]r\ h7ah.UU transformerr] NU footnote_refsr^ }r_ Urefnamesr` }ra Usymbol_footnotesrb ]rc Uautofootnote_refsrd ]re Usymbol_footnote_refsrf ]rg U citationsrh ]ri hIhU current_linerj NUtransform_messagesrk ]rl Ureporterrm NUid_startrn KU autofootnotesro ]rp U citation_refsrq }rr Uindirect_targetsrs ]rt Usettingsru (cdocutils.frontend Values rv orw }rx (Ufootnote_backlinksry KUrecord_dependenciesrz NU rfc_base_urlr{ Uhttp://tools.ietf.org/html/r| U tracebackr} Upep_referencesr~ NUstrip_commentsr NU toc_backlinksr Uentryr U language_coder Uenr U datestampr NU report_levelr KU _destinationr NU halt_levelr KU strip_classesr NhPNUerror_encoding_error_handlerr Ubackslashreplacer Udebugr NUembed_stylesheetr Uoutput_encoding_error_handlerr Ustrictr U sectnum_xformr KUdump_transformsr NU docinfo_xformr KUwarning_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_referencesr NUoutput_encodingr Uutf-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 h: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 j Uauto_id_prefixr Uidr Udoctitle_xformr Ustrip_elements_with_classesr NU _config_filesr ]Ufile_insertion_enabledr U raw_enabledr KU dump_settingsr NubUsymbol_footnote_startr KUidsr }r (hj/ hjIhh|hDcdocutils.nodes target r )r }r (h.Uh/h7h9hZh;Utargetr h=}r (h?]hB]r hDahA]Uismodh@]hF]uhHKhIhhJ]ubh j h j h j h hh j2jE h,hjhjhj jD j@ hj hjhEh7hjhjghjfhj%hj*hj~hj hjmhjhjhjhjTh jBh!j h"jh#jh$jh%jh&juUsubstitution_namesr }r h;hIh=}r (h?]hB]hA]Usourceh:h@]hF]uU footnotesr ]r Urefidsr }r ub.circuits-3.1.0/docs/build/doctrees/faq.doctree0000644000014400001440000003120312425011107022276 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xfrequently asked questionsqNXgeneralqNX mailing listqX#circuits irc channelq uUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUfrequently-asked-questionsqhUgeneralqhU mailing-listqh Ucircuits-irc-channelquUchildrenq]q(cdocutils.nodes target q)q}q(U rawsourceqX].. _#circuits IRC Channel: http://webchat.freenode.net/?randomnick=1&channels=circuits&uio=d4U referencedqKUparentqhUsourceqX0/home/prologic/work/circuits/docs/source/faq.rstq Utagnameq!Utargetq"U attributesq#}q$(Urefuriq%XBhttp://webchat.freenode.net/?randomnick=1&channels=circuits&uio=d4q&Uidsq']q(haUbackrefsq)]Udupnamesq*]Uclassesq+]Unamesq,]q-h auUlineq.KUdocumentq/hh]ubh)q0}q1(hX?.. _Mailing List: http://groups.google.com/group/circuits-usershKhhhh h!h"h#}q2(h%X-http://groups.google.com/group/circuits-usersq3h']q4hah)]h*]h+]h,]q5hauh.Kh/hh]ubcdocutils.nodes comment q6)q7}q8(hXfaq:hhhh h!Ucommentq9h#}q:(U xml:spaceq;UpreserveqXfaq:q?q@}qA(hUhh7ubaubcdocutils.nodes section qB)qC}qD(hUhhhh h!UsectionqEh#}qF(h*]h+]h)]h']qGhah,]qHhauh.Kh/hh]qI(cdocutils.nodes title qJ)qK}qL(hXFrequently Asked QuestionsqMhhChh h!UtitleqNh#}qO(h*]h+]h)]h']h,]uh.Kh/hh]qPh>XFrequently Asked QuestionsqQqR}qS(hhMhhKubaubh6)qT}qU(hXgeneral:hhChh h!h9h#}qV(h;hXgeneral:qXqY}qZ(hUhhTubaubhB)q[}q\(hUhhChh h!hEh#}q](h*]h+]h)]h']q^hah,]q_hauh.K h/hh]q`(hJ)qa}qb(hXGeneralqchh[hh h!hNh#}qd(h*]h+]h)]h']h,]uh.K h/hh]qeh>XGeneralqfqg}qh(hhchhaubaubcdocutils.nodes definition_list qi)qj}qk(hUhh[hh h!Udefinition_listqlh#}qm(h*]h+]h)]h']h,]uh.Nh/hh]qn(cdocutils.nodes definition_list_item qo)qp}qq(hX... What is circuits? circuits is an event-driven framework with a high focus on Component architectures making your life as a software developer much easier. circuits allows you to write maintainable and scalable systems easily hhjhh h!Udefinition_list_itemqrh#}qs(h*]h+]h)]h']h,]uh.Kh]qt(cdocutils.nodes term qu)qv}qw(hX... What is circuits?qxhhphh h!Utermqyh#}qz(h*]h+]h)]h']h,]uh.Kh]q{h>X... What is circuits?q|q}}q~(hhxhhvubaubcdocutils.nodes definition q)q}q(hUh#}q(h*]h+]h)]h']h,]uhhph]qcdocutils.nodes paragraph q)q}q(hXcircuits is an event-driven framework with a high focus on Component architectures making your life as a software developer much easier. circuits allows you to write maintainable and scalable systems easilyqhhhh h!U paragraphqh#}q(h*]h+]h)]h']h,]uh.Kh]qh>Xcircuits is an event-driven framework with a high focus on Component architectures making your life as a software developer much easier. circuits allows you to write maintainable and scalable systems easilyqq}q(hhhhubaubah!U definitionqubeubho)q}q(hX... Can I write networking applications with circuits? Yes absolutely. circuits comes with socket I/O components for tcp, udp and unix sockets with asynchronous polling implementations for select, poll, epoll and kqueue. hhjhh h!hrh#}q(h*]h+]h)]h']h,]uh.Kh/hh]q(hu)q}q(hX6... Can I write networking applications with circuits?qhhhh h!hyh#}q(h*]h+]h)]h']h,]uh.Kh]qh>X6... Can I write networking applications with circuits?qq}q(hhhhubaubh)q}q(hUh#}q(h*]h+]h)]h']h,]uhhh]qh)q}q(hXYes absolutely. circuits comes with socket I/O components for tcp, udp and unix sockets with asynchronous polling implementations for select, poll, epoll and kqueue.qhhhh h!hh#}q(h*]h+]h)]h']h,]uh.Kh]qh>XYes absolutely. circuits comes with socket I/O components for tcp, udp and unix sockets with asynchronous polling implementations for select, poll, epoll and kqueue.qq}q(hhhhubaubah!hubeubho)q}q(hX|... Can I integrate circuits with a GUI library? This is entirely possible. You will have to hook into the GUI's main loop. hhjhh h!hrh#}q(h*]h+]h)]h']h,]uh.Kh/hh]q(hu)q}q(hX0... Can I integrate circuits with a GUI library?qhhhh h!hyh#}q(h*]h+]h)]h']h,]uh.Kh]qh>X0... Can I integrate circuits with a GUI library?qq}q(hhhhubaubh)q}q(hUh#}q(h*]h+]h)]h']h,]uhhh]qh)q}q(hXJThis is entirely possible. You will have to hook into the GUI's main loop.qhhhh h!hh#}q(h*]h+]h)]h']h,]uh.Kh]qh>XJThis is entirely possible. You will have to hook into the GUI's main loop.qq}q(hhhhubaubah!hubeubho)q}q(hX... What are the core concepts in circuits? Components and Events. Components are maintainable reusable units of behavior that communicate with other components via a powerful message passing system. hhjhh h!hrh#}q(h*]h+]h)]h']h,]uh.Kh/hh]q(hu)q}q(hX+... What are the core concepts in circuits?qhhhh h!hyh#}q(h*]h+]h)]h']h,]uh.Kh]qh>X+... What are the core concepts in circuits?qȅq}q(hhhhubaubh)q}q(hUh#}q(h*]h+]h)]h']h,]uhhh]qh)q}q(hXComponents and Events. Components are maintainable reusable units of behavior that communicate with other components via a powerful message passing system.qhhhh h!hh#}q(h*]h+]h)]h']h,]uh.Kh]qh>XComponents and Events. Components are maintainable reusable units of behavior that communicate with other components via a powerful message passing system.qԅq}q(hhhhubaubah!hubeubho)q}q(hX... How would you compare circuits to Twisted? Others have said that circuits is very elegant in terms of it's usage. circuits' component architecture allows you to define clear interfaces between components while maintaining a high level of scalability and maintainability. hhjhh h!hrh#}q(h*]h+]h)]h']h,]uh.K%h/hh]q(hu)q}q(hX.... How would you compare circuits to Twisted?qhhhh h!hyh#}q(h*]h+]h)]h']h,]uh.K%h]qh>X.... How would you compare circuits to Twisted?qq}q(hhhhubaubh)q}q(hUh#}q(h*]h+]h)]h']h,]uhhh]qh)q}q(hXOthers have said that circuits is very elegant in terms of it's usage. circuits' component architecture allows you to define clear interfaces between components while maintaining a high level of scalability and maintainability.qhhhh h!hh#}q(h*]h+]h)]h']h,]uh.K"h]qh>XOthers have said that circuits is very elegant in terms of it's usage. circuits' component architecture allows you to define clear interfaces between components while maintaining a high level of scalability and maintainability.q셁q}q(hhhhubaubah!hubeubho)q}q(hXu... Can Components communicate with other processes? Yes. circuits implements currently component bridging and nodes hhjhh h!hrh#}q(h*]h+]h)]h']h,]uh.K(h/hh]q(hu)q}q(hX4... Can Components communicate with other processes?qhhhh h!hyh#}q(h*]h+]h)]h']h,]uh.K(h]qh>X4... Can Components communicate with other processes?qq}q(hhhhubaubh)q}q(hUh#}q(h*]h+]h)]h']h,]uhhh]qh)q}r(hX?Yes. circuits implements currently component bridging and nodesrhhhh h!hh#}r(h*]h+]h)]h']h,]uh.K(h]rh>X?Yes. circuits implements currently component bridging and nodesrr}r(hjhhubaubah!hubeubho)r}r(hX... What platforms does circuits support? circuits currently supports Linux, FreeBSD, OSX and Windows and is currently continually tested against Linux and Windows against Python versions 2.6, 2.7, 3.1 and 3.2 hhjhh h!hrh#}r (h*]h+]h)]h']h,]uh.K-h/hh]r (hu)r }r (hX)... What platforms does circuits support?r hjhh h!hyh#}r(h*]h+]h)]h']h,]uh.K-h]rh>X)... What platforms does circuits support?rr}r(hj hj ubaubh)r}r(hUh#}r(h*]h+]h)]h']h,]uhjh]rh)r}r(hXcircuits currently supports Linux, FreeBSD, OSX and Windows and is currently continually tested against Linux and Windows against Python versions 2.6, 2.7, 3.1 and 3.2rhjhh h!hh#}r(h*]h+]h)]h']h,]uh.K+h]rh>Xcircuits currently supports Linux, FreeBSD, OSX and Windows and is currently continually tested against Linux and Windows against Python versions 2.6, 2.7, 3.1 and 3.2rr}r(hjhjubaubah!hubeubho)r}r (hX... Can circuits be used for concurrent or distributed programming? Yes. We also have plans to build more distributed components into circuits making distributing computing with circuits very trivial. hhjhh h!hrh#}r!(h*]h+]h)]h']h,]uh.K1h/hh]r"(hu)r#}r$(hXC... Can circuits be used for concurrent or distributed programming?r%hjhh h!hyh#}r&(h*]h+]h)]h']h,]uh.K1h]r'h>XC... Can circuits be used for concurrent or distributed programming?r(r)}r*(hj%hj#ubaubh)r+}r,(hUh#}r-(h*]h+]h)]h']h,]uhjh]r.h)r/}r0(hXYes. We also have plans to build more distributed components into circuits making distributing computing with circuits very trivial.r1hj+hh h!hh#}r2(h*]h+]h)]h']h,]uh.K0h]r3h>XYes. We also have plans to build more distributed components into circuits making distributing computing with circuits very trivial.r4r5}r6(hj1hj/ubaubah!hubeubeubh)r7}r8(hXGot more questions?r9hh[hh h!hh#}r:(h*]h+]h)]h']h,]uh.K3h/hh]r;h>XGot more questions?r<r=}r>(hj9hj7ubaubcdocutils.nodes bullet_list r?)r@}rA(hUhh[hh h!U bullet_listrBh#}rC(UbulletrDX*h']h)]h*]h+]h,]uh.K5h/hh]rE(cdocutils.nodes list_item rF)rG}rH(hX%Send an email to our `Mailing List`_.rIhj@hh h!U list_itemrJh#}rK(h*]h+]h)]h']h,]uh.Nh/hh]rLh)rM}rN(hjIhjGhh h!hh#}rO(h*]h+]h)]h']h,]uh.K5h]rP(h>XSend an email to our rQrR}rS(hXSend an email to our hjMubcdocutils.nodes reference rT)rU}rV(hX`Mailing List`_UresolvedrWKhjMh!U referencerXh#}rY(UnameX Mailing Listh%h3h']h)]h*]h+]h,]uh]rZh>X Mailing Listr[r\}r](hUhjUubaubh>X.r^}r_(hX.hjMubeubaubjF)r`}ra(hX1Talk to us online on the `#circuits IRC Channel`_rbhj@hh h!jJh#}rc(h*]h+]h)]h']h,]uh.Nh/hh]rdh)re}rf(hjbhj`hh h!hh#}rg(h*]h+]h)]h']h,]uh.K6h]rh(h>XTalk to us online on the rirj}rk(hXTalk to us online on the hjeubjT)rl}rm(hX`#circuits IRC Channel`_jWKhjeh!jXh#}rn(UnameX#circuits IRC Channelh%h&h']h)]h*]h+]h,]uh]roh>X#circuits IRC Channelrprq}rr(hUhjlubaubeubaubeubeubeubehUU transformerrsNU footnote_refsrt}ruUrefnamesrv}rw(X mailing list]rxjUaX#circuits irc channel]ryjlauUsymbol_footnotesrz]r{Uautofootnote_refsr|]r}Usymbol_footnote_refsr~]rU citationsr]rh/hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNhNNUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hh0hhhhChh[uUsubstitution_namesr}rh!h/h#}r(h*]h']h)]Usourceh h+]h,]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/tutorials/0000755000014400001440000000000012425013643022216 5ustar prologicusers00000000000000circuits-3.1.0/docs/build/doctrees/tutorials/woof/0000755000014400001440000000000012425013643023170 5ustar prologicusers00000000000000circuits-3.1.0/docs/build/doctrees/tutorials/woof/index.doctree0000644000014400001440000017663512425011107025661 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X event objectsqNX the componentqNXregistering componentsqNXoverviewq NXcomplex componentsq NXdiamond problemq Xcomponent channelsq NXpython programming languageq X the debuggerqNXcomponent inheritanceqNXevent handlersqNXtutorialqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hU event-objectsqhU the-componentqhUregistering-componentsqh Uoverviewqh Ucomplex-componentsqh Udiamond-problemq h Ucomponent-channelsq!h Upython-programming-languageq"hU the-debuggerq#hUcomponent-inheritanceq$hUevent-handlersq%hUtutorialq&uUchildrenq']q((cdocutils.nodes target q))q*}q+(U rawsourceq,X7.. _Python Programming Language: http://www.python.org/U referencedq-KUparentq.hUsourceq/XA/home/prologic/work/circuits/docs/source/tutorials/woof/index.rstq0Utagnameq1Utargetq2U attributesq3}q4(Urefuriq5Xhttp://www.python.org/q6Uidsq7]q8h"aUbackrefsq9]Udupnamesq:]Uclassesq;]Unamesq<]q=h auUlineq>KUdocumentq?hh']ubcdocutils.nodes section q@)qA}qB(h,Uh.hh/h0h1UsectionqCh3}qD(h:]h;]h9]h7]qEh&ah<]qFhauh>Kh?hh']qG(cdocutils.nodes title qH)qI}qJ(h,XTutorialqKh.hAh/h0h1UtitleqLh3}qM(h:]h;]h9]h7]h<]uh>Kh?hh']qNcdocutils.nodes Text qOXTutorialqPqQ}qR(h,hKh.hIubaubh@)qS}qT(h,Uh.hAh/h0h1hCh3}qU(h:]h;]h9]h7]qVhah<]qWh auh>K h?hh']qX(hH)qY}qZ(h,XOverviewq[h.hSh/h0h1hLh3}q\(h:]h;]h9]h7]h<]uh>K h?hh']q]hOXOverviewq^q_}q`(h,h[h.hYubaubcdocutils.nodes paragraph qa)qb}qc(h,XRWelcome to the circuits tutorial. This 5-minute tutorial will guide you through the basic concepts of circuits. The goal is to introduce new concepts incrementally with walk-through examples that you can try out! By the time you've finished, you should have a good basic understanding of circuits, how it feels and where to go from there.qdh.hSh/h0h1U paragraphqeh3}qf(h:]h;]h9]h7]h<]uh>K h?hh']qghOXRWelcome to the circuits tutorial. This 5-minute tutorial will guide you through the basic concepts of circuits. The goal is to introduce new concepts incrementally with walk-through examples that you can try out! By the time you've finished, you should have a good basic understanding of circuits, how it feels and where to go from there.qhqi}qj(h,hdh.hbubaubeubh@)qk}ql(h,Uh.hAh/h0h1hCh3}qm(h:]h;]h9]h7]qnhah<]qohauh>Kh?hh']qp(hH)qq}qr(h,X The Componentqsh.hkh/h0h1hLh3}qt(h:]h;]h9]h7]h<]uh>Kh?hh']quhOX The Componentqvqw}qx(h,hsh.hqubaubha)qy}qz(h,X_First up, let's show how you can use the ``Component`` and run it in a very simple application.h.hkh/h0h1heh3}q{(h:]h;]h9]h7]h<]uh>Kh?hh']q|(hOX)First up, let's show how you can use the q}q~}q(h,X)First up, let's show how you can use the h.hyubcdocutils.nodes literal q)q}q(h,X ``Component``h3}q(h:]h;]h9]h7]h<]uh.hyh']qhOX Componentqq}q(h,Uh.hubah1UliteralqubhOX) and run it in a very simple application.qq}q(h,X) and run it in a very simple application.h.hyubeubcdocutils.nodes literal_block q)q}q(h,XI#!/usr/bin/env python from circuits import Component Component().run() h.hkh/h0h1U literal_blockqh3}q(UlinenosqUlanguageqcdocutils.nodes reprunicode qXpythonqq}qbh:]U xml:spaceqUpreserveqh7]h9]UsourceX>/home/prologic/work/circuits/docs/source/tutorials/woof/001.pyh;]h<]uh>Kh?hh']qhOXI#!/usr/bin/env python from circuits import Component Component().run() qq}q(h,Uh.hubaubha)q}q(h,X$:download:`Download 001.py <001.py>`qh.hkh/h0h1heh3}q(h:]h;]h9]h7]h<]uh>Kh?hh']qcsphinx.addnodes download_reference q)q}q(h,hh.hh/h0h1Udownload_referenceqh3}q(UreftypeXdownloadqUrefwarnqU reftargetqX001.pyU refdomainUh7]h9]U refexplicith:]h;]h<]UrefdocqXtutorials/woof/indexqUfilenameqX001.pyquh>Kh']qh)q}q(h,hh3}q(h:]h;]q(Uxrefqheh9]h7]h<]uh.hh']qhOXDownload 001.pyqq}q(h,Uh.hubah1hubaubaubha)q}q(h,XTOkay so that's pretty boring as it doesn't do very much! But that's okay... Read on!qh.hkh/h0h1heh3}q(h:]h;]h9]h7]h<]uh>Kh?hh']qhOXTOkay so that's pretty boring as it doesn't do very much! But that's okay... Read on!qq}q(h,hh.hubaubha)q}q(h,XrLet's try to create our own custom Component called ``MyComponent``. This is done using normal Python subclassing.h.hkh/h0h1heh3}q(h:]h;]h9]h7]h<]uh>K!h?hh']q(hOX4Let's try to create our own custom Component called qąq}q(h,X4Let's try to create our own custom Component called h.hubh)q}q(h,X``MyComponent``h3}q(h:]h;]h9]h7]h<]uh.hh']qhOX MyComponentq˅q}q(h,Uh.hubah1hubhOX/. This is done using normal Python subclassing.q΅q}q(h,X/. This is done using normal Python subclassing.h.hubeubh)q}q(h,X#!/usr/bin/env python from circuits import Component class MyComponent(Component): """My Component""" MyComponent().run() h.hkh/h0h1hh3}q(hhhXpythonqԅq}qbh:]hhh7]h9]UsourceX>/home/prologic/work/circuits/docs/source/tutorials/woof/002.pyh;]h<]uh>K$h?hh']qhOX#!/usr/bin/env python from circuits import Component class MyComponent(Component): """My Component""" MyComponent().run() q؅q}q(h,Uh.hubaubha)q}q(h,X$:download:`Download 002.py <002.py>`qh.hkh/h0h1heh3}q(h:]h;]h9]h7]h<]uh>K(h?hh']qh)q}q(h,hh.hh/h0h1hh3}q(UreftypeXdownloadqhhX002.pyU refdomainUh7]h9]U refexplicith:]h;]h<]hhhX002.pyquh>K(h']qh)q}q(h,hh3}q(h:]h;]q(hheh9]h7]h<]uh.hh']qhOXDownload 002.pyq녁q}q(h,Uh.hubah1hubaubaubha)q}q(h,XnOkay, so this still isn't very useful! But at least we can create custom components with the behavior we want.qh.hkh/h0h1heh3}q(h:]h;]h9]h7]h<]uh>K*h?hh']qhOXnOkay, so this still isn't very useful! But at least we can create custom components with the behavior we want.qq}q(h,hh.hubaubha)q}q(h,X.Let's move on to something more interesting...qh.hkh/h0h1heh3}q(h:]h;]h9]h7]h<]uh>K-h?hh']qhOX.Let's move on to something more interesting...qq}q(h,hh.hubaubcdocutils.nodes note q)q}r(h,XComponent(s) in circuits are what sets circuits apart from other Asynchronous or Concurrent Application Frameworks. Components(s) are used as building blocks from simple behaviors to complex ones (*composition of simpler components to form more complex ones*).h.hkh/h0h1Unoterh3}r(h:]h;]h9]h7]h<]uh>Nh?hh']rha)r}r(h,XComponent(s) in circuits are what sets circuits apart from other Asynchronous or Concurrent Application Frameworks. Components(s) are used as building blocks from simple behaviors to complex ones (*composition of simpler components to form more complex ones*).h.hh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>K/h']r(hOXComponent(s) in circuits are what sets circuits apart from other Asynchronous or Concurrent Application Frameworks. Components(s) are used as building blocks from simple behaviors to complex ones (rr }r (h,XComponent(s) in circuits are what sets circuits apart from other Asynchronous or Concurrent Application Frameworks. Components(s) are used as building blocks from simple behaviors to complex ones (h.jubcdocutils.nodes emphasis r )r }r (h,X=*composition of simpler components to form more complex ones*h3}r(h:]h;]h9]h7]h<]uh.jh']rhOX;composition of simpler components to form more complex onesrr}r(h,Uh.j ubah1UemphasisrubhOX).rr}r(h,X).h.jubeubaubeubh@)r}r(h,Uh.hAh/h0h1hCh3}r(h:]h;]h9]h7]rh%ah<]rhauh>K5h?hh']r(hH)r}r(h,XEvent Handlersrh.jh/h0h1hLh3}r (h:]h;]h9]h7]h<]uh>K5h?hh']r!hOXEvent Handlersr"r#}r$(h,jh.jubaubha)r%}r&(h,XLLet's now extend our little example to say "Hello World!" when it's started.r'h.jh/h0h1heh3}r((h:]h;]h9]h7]h<]uh>K7h?hh']r)hOXLLet's now extend our little example to say "Hello World!" when it's started.r*r+}r,(h,j'h.j%ubaubh)r-}r.(h,X#!/usr/bin/env python from circuits import Component class MyComponent(Component): def started(self, *args): print("Hello World!") MyComponent().run() h.jh/h0h1hh3}r/(hhhXpythonr0r1}r2bh:]hhh7]h9]UsourceX>/home/prologic/work/circuits/docs/source/tutorials/woof/003.pyh;]h<]uh>K9h?hh']r3hOX#!/usr/bin/env python from circuits import Component class MyComponent(Component): def started(self, *args): print("Hello World!") MyComponent().run() r4r5}r6(h,Uh.j-ubaubha)r7}r8(h,X$:download:`Download 003.py <003.py>`r9h.jh/h0h1heh3}r:(h:]h;]h9]h7]h<]uh>K=h?hh']r;h)r<}r=(h,j9h.j7h/h0h1hh3}r>(UreftypeXdownloadr?hhX003.pyU refdomainUh7]h9]U refexplicith:]h;]h<]hhhX003.pyr@uh>K=h']rAh)rB}rC(h,j9h3}rD(h:]h;]rE(hj?eh9]h7]h<]uh.j<h']rFhOXDownload 003.pyrGrH}rI(h,Uh.jBubah1hubaubaubha)rJ}rK(h,XUHere we've created a simple **Event Handler** that listens for the ``started`` Event.rLh.jh/h0h1heh3}rM(h:]h;]h9]h7]h<]uh>K?h?hh']rN(hOXHere we've created a simple rOrP}rQ(h,XHere we've created a simple h.jJubcdocutils.nodes strong rR)rS}rT(h,X**Event Handler**h3}rU(h:]h;]h9]h7]h<]uh.jJh']rVhOX Event HandlerrWrX}rY(h,Uh.jSubah1UstrongrZubhOX that listens for the r[r\}r](h,X that listens for the h.jJubh)r^}r_(h,X ``started``h3}r`(h:]h;]h9]h7]h<]uh.jJh']rahOXstartedrbrc}rd(h,Uh.j^ubah1hubhOX Event.rerf}rg(h,X Event.h.jJubeubh)rh}ri(h,XMethods defined in a custom subclassed ``Component`` are automatically turned into **Event Handlers**. The only exception to this are methods prefixed with an underscore (``_``).h.jh/h0h1jh3}rj(h:]h;]h9]h7]h<]uh>Nh?hh']rkha)rl}rm(h,XMethods defined in a custom subclassed ``Component`` are automatically turned into **Event Handlers**. The only exception to this are methods prefixed with an underscore (``_``).h.jhh/h0h1heh3}rn(h:]h;]h9]h7]h<]uh>KAh']ro(hOX'Methods defined in a custom subclassed rprq}rr(h,X'Methods defined in a custom subclassed h.jlubh)rs}rt(h,X ``Component``h3}ru(h:]h;]h9]h7]h<]uh.jlh']rvhOX Componentrwrx}ry(h,Uh.jsubah1hubhOX are automatically turned into rzr{}r|(h,X are automatically turned into h.jlubjR)r}}r~(h,X**Event Handlers**h3}r(h:]h;]h9]h7]h<]uh.jlh']rhOXEvent Handlersrr}r(h,Uh.j}ubah1jZubhOXF. The only exception to this are methods prefixed with an underscore (rr}r(h,XF. The only exception to this are methods prefixed with an underscore (h.jlubh)r}r(h,X``_``h3}r(h:]h;]h9]h7]h<]uh.jlh']rhOX_r}r(h,Uh.jubah1hubhOX).rr}r(h,X).h.jlubeubaubh)r}r(h,XIf you do not want this *automatic* behavior, inherit from ``BaseComponent`` instead which means you will **have to** use the ``~circuits.core.handlers.handler`` decorator to define your **Event Handlers**.h.jh/h0h1jh3}r(h:]h;]h9]h7]h<]uh>Nh?hh']rha)r}r(h,XIf you do not want this *automatic* behavior, inherit from ``BaseComponent`` instead which means you will **have to** use the ``~circuits.core.handlers.handler`` decorator to define your **Event Handlers**.h.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>KDh']r(hOXIf you do not want this rr}r(h,XIf you do not want this h.jubj )r}r(h,X *automatic*h3}r(h:]h;]h9]h7]h<]uh.jh']rhOX automaticrr}r(h,Uh.jubah1jubhOX behavior, inherit from rr}r(h,X behavior, inherit from h.jubh)r}r(h,X``BaseComponent``h3}r(h:]h;]h9]h7]h<]uh.jh']rhOX BaseComponentrr}r(h,Uh.jubah1hubhOX instead which means you will rr}r(h,X instead which means you will h.jubjR)r}r(h,X **have to**h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXhave torr}r(h,Uh.jubah1jZubhOX use the rr}r(h,X use the h.jubh)r}r(h,X#``~circuits.core.handlers.handler``h3}r(h:]h;]h9]h7]h<]uh.jh']rhOX~circuits.core.handlers.handlerrr}r(h,Uh.jubah1hubhOX decorator to define your rr}r(h,X decorator to define your h.jubjR)r}r(h,X**Event Handlers**h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXEvent Handlersrr}r(h,Uh.jubah1jZubhOX.r}r(h,X.h.jubeubaubha)r}r(h,XRunning this we get::rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>KHh?hh']rhOXRunning this we get:rr}r(h,XRunning this we get:h.jubaubh)r}r(h,X Hello World!h.jh/h0h1hh3}r(hhh7]h9]h:]h;]h<]uh>KJh?hh']rhOX Hello World!rr}r(h,Uh.jubaubha)r}r(h,XGAlright! We have something slightly more useful! Whoohoo it says hello!rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>KMh?hh']rhOXGAlright! We have something slightly more useful! Whoohoo it says hello!rr}r(h,jh.jubaubh)r}r(h,XPress ^C (*CTRL + C*) to exit.rh.jh/h0h1jh3}r(h:]h;]h9]h7]h<]uh>Nh?hh']rha)r}r(h,jh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>KOh']r(hOX Press ^C (rr}r(h,X Press ^C (h.jubj )r}r(h,X *CTRL + C*h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXCTRL + Crr}r(h,Uh.jubah1jubhOX ) to exit.rr}r(h,X ) to exit.h.jubeubaubeubh@)r}r(h,Uh.hAh/h0h1hCh3}r(h:]h;]h9]h7]rhah<]rhauh>KSh?hh']r(hH)r}r(h,XRegistering Componentsrh.jh/h0h1hLh3}r(h:]h;]h9]h7]h<]uh>KSh?hh']rhOXRegistering Componentsrr}r(h,jh.jubaubha)r}r(h,XSo now that we've learned how to use a Component, create a custom Component and create simple Event Handlers, let's try something a bit more complex by creating a complex component made up of two simpler ones.r h.jh/h0h1heh3}r (h:]h;]h9]h7]h<]uh>KUh?hh']r hOXSo now that we've learned how to use a Component, create a custom Component and create simple Event Handlers, let's try something a bit more complex by creating a complex component made up of two simpler ones.r r }r(h,j h.jubaubh)r}r(h,XgWe call this **Component Composition** which is the very essence of the circuits Application Framework.rh.jh/h0h1jh3}r(h:]h;]h9]h7]h<]uh>Nh?hh']rha)r}r(h,jh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>KYh']r(hOX We call this rr}r(h,X We call this h.jubjR)r}r(h,X**Component Composition**h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXComponent Compositionrr }r!(h,Uh.jubah1jZubhOXA which is the very essence of the circuits Application Framework.r"r#}r$(h,XA which is the very essence of the circuits Application Framework.h.jubeubaubha)r%}r&(h,XLet's create two components:r'h.jh/h0h1heh3}r((h:]h;]h9]h7]h<]uh>K[h?hh']r)hOXLet's create two components:r*r+}r,(h,j'h.j%ubaubcdocutils.nodes bullet_list r-)r.}r/(h,Uh.jh/h0h1U bullet_listr0h3}r1(Ubulletr2X-h7]h9]h:]h;]h<]uh>K]h?hh']r3(cdocutils.nodes list_item r4)r5}r6(h,X``Bob``r7h.j.h/h0h1U list_itemr8h3}r9(h:]h;]h9]h7]h<]uh>Nh?hh']r:ha)r;}r<(h,j7h.j5h/h0h1heh3}r=(h:]h;]h9]h7]h<]uh>K]h']r>h)r?}r@(h,j7h3}rA(h:]h;]h9]h7]h<]uh.j;h']rBhOXBobrCrD}rE(h,Uh.j?ubah1hubaubaubj4)rF}rG(h,X ``Fred`` h.j.h/h0h1j8h3}rH(h:]h;]h9]h7]h<]uh>Nh?hh']rIha)rJ}rK(h,X``Fred``rLh.jFh/h0h1heh3}rM(h:]h;]h9]h7]h<]uh>K^h']rNh)rO}rP(h,jLh3}rQ(h:]h;]h9]h7]h<]uh.jJh']rRhOXFredrSrT}rU(h,Uh.jOubah1hubaubaubeubh)rV}rW(h,X#!/usr/bin/env python from circuits import Component class Bob(Component): def started(self, *args): print("Hello I'm Bob!") class Fred(Component): def started(self, *args): print("Hello I'm Fred!") (Bob() + Fred()).run() h.jh/h0h1hh3}rX(hhhXpythonrYrZ}r[bh:]hhh7]h9]UsourceX>/home/prologic/work/circuits/docs/source/tutorials/woof/004.pyh;]h<]uh>K`h?hh']r\hOX#!/usr/bin/env python from circuits import Component class Bob(Component): def started(self, *args): print("Hello I'm Bob!") class Fred(Component): def started(self, *args): print("Hello I'm Fred!") (Bob() + Fred()).run() r]r^}r_(h,Uh.jVubaubha)r`}ra(h,X$:download:`Download 004.py <004.py>`rbh.jh/h0h1heh3}rc(h:]h;]h9]h7]h<]uh>Kdh?hh']rdh)re}rf(h,jbh.j`h/h0h1hh3}rg(UreftypeXdownloadrhhhX004.pyU refdomainUh7]h9]U refexplicith:]h;]h<]hhhX004.pyriuh>Kdh']rjh)rk}rl(h,jbh3}rm(h:]h;]rn(hjheh9]h7]h<]uh.jeh']rohOXDownload 004.pyrprq}rr(h,Uh.jkubah1hubaubaubha)rs}rt(h,XNotice the way we register the two components ``Bob`` and ``Fred`` together ? Don't worry if this doesn't make sense right now. Think of it as putting two components together and plugging them into a circuit board.h.jh/h0h1heh3}ru(h:]h;]h9]h7]h<]uh>Kfh?hh']rv(hOX.Notice the way we register the two components rwrx}ry(h,X.Notice the way we register the two components h.jsubh)rz}r{(h,X``Bob``h3}r|(h:]h;]h9]h7]h<]uh.jsh']r}hOXBobr~r}r(h,Uh.jzubah1hubhOX and rr}r(h,X and h.jsubh)r}r(h,X``Fred``h3}r(h:]h;]h9]h7]h<]uh.jsh']rhOXFredrr}r(h,Uh.jubah1hubhOX together ? Don't worry if this doesn't make sense right now. Think of it as putting two components together and plugging them into a circuit board.rr}r(h,X together ? Don't worry if this doesn't make sense right now. Think of it as putting two components together and plugging them into a circuit board.h.jsubeubha)r}r(h,X4Running this example produces the following result::rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Kjh?hh']rhOX3Running this example produces the following result:rr}r(h,X3Running this example produces the following result:h.jubaubh)r}r(h,XHello I'm Bob! Hello I'm Fred!h.jh/h0h1hh3}r(hhh7]h9]h:]h;]h<]uh>Klh?hh']rhOXHello I'm Bob! Hello I'm Fred!rr}r(h,Uh.jubaubha)r}r(h,X]Cool! We have two components that each do something and print a simple message on the screen!rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Koh?hh']rhOX]Cool! We have two components that each do something and print a simple message on the screen!rr}r(h,jh.jubaubeubh@)r}r(h,Uh.hAh/h0h1hCh3}r(h:]h;]h9]h7]rhah<]rh auh>Kth?hh']r(hH)r}r(h,XComplex Componentsrh.jh/h0h1hLh3}r(h:]h;]h9]h7]h<]uh>Kth?hh']rhOXComplex Componentsrr}r(h,jh.jubaubha)r}r(h,XNow, what if we wanted to create a Complex Component? Let's say we wanted to create a new Component made up of two other smaller components?rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Kvh?hh']rhOXNow, what if we wanted to create a Complex Component? Let's say we wanted to create a new Component made up of two other smaller components?rr}r(h,jh.jubaubha)r}r(h,X]We can do this by simply registering components to a Complex Component during initialization.rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Kyh?hh']rhOX]We can do this by simply registering components to a Complex Component during initialization.rr}r(h,jh.jubaubh)r}r(h,XpThis is also called **Component Composition** and avoids the classical `Diamond problem `_ of Multiple Inheritance. In circuits we do not use Multiple Inheritance to create **Complex Components** made up of two or more base classes of components, we instead compose them together via registration.h.jh/h0h1jh3}r(h:]h;]h9]h7]h<]uh>Nh?hh']rha)r}r(h,XpThis is also called **Component Composition** and avoids the classical `Diamond problem `_ of Multiple Inheritance. In circuits we do not use Multiple Inheritance to create **Complex Components** made up of two or more base classes of components, we instead compose them together via registration.h.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>K|h']r(hOXThis is also called rr}r(h,XThis is also called h.jubjR)r}r(h,X**Component Composition**h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXComponent Compositionrr}r(h,Uh.jubah1jZubhOX and avoids the classical rr}r(h,X and avoids the classical h.jubcdocutils.nodes reference r)r}r(h,XZ`Diamond problem `_h3}r(UnameXDiamond problemh5XEhttp://en.wikipedia.org/wiki/Multiple_inheritance#The_diamond_problemrh7]h9]h:]h;]h<]uh.jh']rhOXDiamond problemrr}r(h,Uh.jubah1U referencerubh))r}r(h,XH h-Kh.jh1h2h3}r(Urefurijh7]rh ah9]h:]h;]h<]rh auh']ubhOXS of Multiple Inheritance. In circuits we do not use Multiple Inheritance to create rr}r(h,XS of Multiple Inheritance. In circuits we do not use Multiple Inheritance to create h.jubjR)r}r(h,X**Complex Components**h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXComplex Componentsrr}r(h,Uh.jubah1jZubhOXf made up of two or more base classes of components, we instead compose them together via registration.rr}r(h,Xf made up of two or more base classes of components, we instead compose them together via registration.h.jubeubaubh)r}r(h,X#!/usr/bin/env python from circuits import Component from circuits.tools import graph class Pound(Component): def __init__(self): super(Pound, self).__init__() self.bob = Bob().register(self) self.fred = Fred().register(self) def started(self, *args): print(graph(self.root)) class Bob(Component): def started(self, *args): print("Hello I'm Bob!") class Fred(Component): def started(self, *args): print("Hello I'm Fred!") Pound().run() h.jh/h0h1hh3}r(hhhXpythonrr}rbh:]hhh7]h9]UsourceX>/home/prologic/work/circuits/docs/source/tutorials/woof/005.pyh;]h<]uh>Kh?hh']rhOX#!/usr/bin/env python from circuits import Component from circuits.tools import graph class Pound(Component): def __init__(self): super(Pound, self).__init__() self.bob = Bob().register(self) self.fred = Fred().register(self) def started(self, *args): print(graph(self.root)) class Bob(Component): def started(self, *args): print("Hello I'm Bob!") class Fred(Component): def started(self, *args): print("Hello I'm Fred!") Pound().run() rr}r(h,Uh.jubaubha)r}r(h,X$:download:`Download 005.py <005.py>`rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Kh?hh']rh)r}r(h,jh.jh/h0h1hh3}r(UreftypeXdownloadrhhX005.pyU refdomainUh7]h9]U refexplicith:]h;]h<]hhhX005.pyruh>Kh']rh)r }r (h,jh3}r (h:]h;]r (hjeh9]h7]h<]uh.jh']r hOXDownload 005.pyrr}r(h,Uh.j ubah1hubaubaubha)r}r(h,XlSo now ``Pound`` is a Component that consists of two other components registered to it: ``Bob`` and ``Fred``h.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Kh?hh']r(hOXSo now rr}r(h,XSo now h.jubh)r}r(h,X ``Pound``h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXPoundrr}r(h,Uh.jubah1hubhOXH is a Component that consists of two other components registered to it: rr }r!(h,XH is a Component that consists of two other components registered to it: h.jubh)r"}r#(h,X``Bob``h3}r$(h:]h;]h9]h7]h<]uh.jh']r%hOXBobr&r'}r((h,Uh.j"ubah1hubhOX and r)r*}r+(h,X and h.jubh)r,}r-(h,X``Fred``h3}r.(h:]h;]h9]h7]h<]uh.jh']r/hOXFredr0r1}r2(h,Uh.j,ubah1hubeubha)r3}r4(h,X1The output of this is identical to the previous::r5h.jh/h0h1heh3}r6(h:]h;]h9]h7]h<]uh>Kh?hh']r7hOX0The output of this is identical to the previous:r8r9}r:(h,X0The output of this is identical to the previous:h.j3ubaubh)r;}r<(h,X* * * Hello I'm Bob! Hello I'm Fred!h.jh/h0h1hh3}r=(hhh7]h9]h:]h;]h<]uh>Kh?hh']r>hOX* * * Hello I'm Bob! Hello I'm Fred!r?r@}rA(h,Uh.j;ubaubha)rB}rC(h,XThe only difference is that ``Bob`` and ``Fred`` are now part of a more Complex Component called ``Pound``. This can be illustrated by the following diagram:h.jh/h0h1heh3}rD(h:]h;]h9]h7]h<]uh>Kh?hh']rE(hOXThe only difference is that rFrG}rH(h,XThe only difference is that h.jBubh)rI}rJ(h,X``Bob``h3}rK(h:]h;]h9]h7]h<]uh.jBh']rLhOXBobrMrN}rO(h,Uh.jIubah1hubhOX and rPrQ}rR(h,X and h.jBubh)rS}rT(h,X``Fred``h3}rU(h:]h;]h9]h7]h<]uh.jBh']rVhOXFredrWrX}rY(h,Uh.jSubah1hubhOX1 are now part of a more Complex Component called rZr[}r\(h,X1 are now part of a more Complex Component called h.jBubh)r]}r^(h,X ``Pound``h3}r_(h:]h;]h9]h7]h<]uh.jBh']r`hOXPoundrarb}rc(h,Uh.j]ubah1hubhOX3. This can be illustrated by the following diagram:rdre}rf(h,X3. This can be illustrated by the following diagram:h.jBubeubcsphinx.ext.graphviz graphviz rg)rh}ri(h,Uh.jh/h0h1Ugraphvizrjh3}rk(UcoderlXLdigraph G { "Pound-1344" -> "Bob-9b0c"; "Pound-1344" -> "Fred-e98a"; }h7]h9]h:]h;]h<]UinlinermUoptionsrn]uh>Kh?hh']ubh)ro}rp(h,XtThe extra lines in the above output are an ASCII representation of the above graph (*produced by pydot + graphviz*).h.jh/h0h1jh3}rq(h:]h;]h9]h7]h<]uh>Nh?hh']rrha)rs}rt(h,XtThe extra lines in the above output are an ASCII representation of the above graph (*produced by pydot + graphviz*).h.joh/h0h1heh3}ru(h:]h;]h9]h7]h<]uh>Kh']rv(hOXTThe extra lines in the above output are an ASCII representation of the above graph (rwrx}ry(h,XTThe extra lines in the above output are an ASCII representation of the above graph (h.jsubj )rz}r{(h,X*produced by pydot + graphviz*h3}r|(h:]h;]h9]h7]h<]uh.jsh']r}hOXproduced by pydot + graphvizr~r}r(h,Uh.jzubah1jubhOX).rr}r(h,X).h.jsubeubaubha)r}r(h,XCool :-)rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Kh?hh']rhOXCool :-)rr}r(h,jh.jubaubeubh@)r}r(h,Uh.hAh/h0h1hCh3}r(h:]h;]h9]h7]rh$ah<]rhauh>Kh?hh']r(hH)r}r(h,XComponent Inheritancerh.jh/h0h1hLh3}r(h:]h;]h9]h7]h<]uh>Kh?hh']rhOXComponent Inheritancerr}r(h,jh.jubaubha)r}r(h,XSince circuits is a framework written for the `Python Programming Language`_ it naturally inherits properties of Object Orientated Programming (OOP) -- such as inheritance.h.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Kh?hh']r(hOX.Since circuits is a framework written for the rr}r(h,X.Since circuits is a framework written for the h.jubj)r}r(h,X`Python Programming Language`_UresolvedrKh.jh1jh3}r(UnameXPython Programming Languageh5h6h7]h9]h:]h;]h<]uh']rhOXPython Programming Languagerr}r(h,Uh.jubaubhOX` it naturally inherits properties of Object Orientated Programming (OOP) -- such as inheritance.rr}r(h,X` it naturally inherits properties of Object Orientated Programming (OOP) -- such as inheritance.h.jubeubha)r}r(h,XSo let's take our ``Bob`` and ``Fred`` components and create a Base Component called ``Dog`` and modify our two dogs (``Bob`` and ``Fred``) to subclass this.h.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Kh?hh']r(hOXSo let's take our rr}r(h,XSo let's take our h.jubh)r}r(h,X``Bob``h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXBobrr}r(h,Uh.jubah1hubhOX and rr}r(h,X and h.jubh)r}r(h,X``Fred``h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXFredrr}r(h,Uh.jubah1hubhOX/ components and create a Base Component called rr}r(h,X/ components and create a Base Component called h.jubh)r}r(h,X``Dog``h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXDogrr}r(h,Uh.jubah1hubhOX and modify our two dogs (rr}r(h,X and modify our two dogs (h.jubh)r}r(h,X``Bob``h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXBobrr}r(h,Uh.jubah1hubhOX and rr}r(h,X and h.jubh)r}r(h,X``Fred``h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXFredrr}r(h,Uh.jubah1hubhOX) to subclass this.rr}r(h,X) to subclass this.h.jubeubh)r}r(h,X#!/usr/bin/env python from circuits import Component, Event class woof(Event): """woof Event""" class Pound(Component): def __init__(self): super(Pound, self).__init__() self.bob = Bob().register(self) self.fred = Fred().register(self) def started(self, *args): self.fire(woof()) class Dog(Component): def woof(self): print("Woof! I'm %s!" % self.name) class Bob(Dog): """Bob""" class Fred(Dog): """Fred""" Pound().run() h.jh/h0h1hh3}r(hhhXpythonrr}rbh:]hhh7]h9]UsourceX>/home/prologic/work/circuits/docs/source/tutorials/woof/006.pyh;]h<]uh>Kh?hh']rhOX#!/usr/bin/env python from circuits import Component, Event class woof(Event): """woof Event""" class Pound(Component): def __init__(self): super(Pound, self).__init__() self.bob = Bob().register(self) self.fred = Fred().register(self) def started(self, *args): self.fire(woof()) class Dog(Component): def woof(self): print("Woof! I'm %s!" % self.name) class Bob(Dog): """Bob""" class Fred(Dog): """Fred""" Pound().run() rr}r(h,Uh.jubaubha)r}r(h,X$:download:`Download 006.py <006.py>`rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Kh?hh']rh)r}r(h,jh.jh/h0h1hh3}r(UreftypeXdownloadrhhX006.pyU refdomainUh7]h9]U refexplicith:]h;]h<]hhhX006.pyruh>Kh']rh)r}r(h,jh3}r(h:]h;]r(hjeh9]h7]h<]uh.jh']rhOXDownload 006.pyrr}r(h,Uh.jubah1hubaubaubha)r}r(h,X0Now let's try to run this and see what happens::rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Kh?hh']rhOX/Now let's try to run this and see what happens:rr}r (h,X/Now let's try to run this and see what happens:h.jubaubh)r }r (h,XWoof! I'm Bob! Woof! I'm Fred!h.jh/h0h1hh3}r (hhh7]h9]h:]h;]h<]uh>Kh?hh']r hOXWoof! I'm Bob! Woof! I'm Fred!rr}r(h,Uh.j ubaubha)r}r(h,XSo both dogs barked! Hmmmrh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Kh?hh']rhOXSo both dogs barked! Hmmmrr}r(h,jh.jubaubeubh@)r}r(h,Uh.hAh/h0h1hCh3}r(h:]h;]h9]h7]rh!ah<]rh auh>Kh?hh']r(hH)r}r (h,XComponent Channelsr!h.jh/h0h1hLh3}r"(h:]h;]h9]h7]h<]uh>Kh?hh']r#hOXComponent Channelsr$r%}r&(h,j!h.jubaubha)r'}r((h,XnWhat if we only want one of our dogs to bark? How do we do this without causing the other one to bark as well?r)h.jh/h0h1heh3}r*(h:]h;]h9]h7]h<]uh>Kh?hh']r+hOXnWhat if we only want one of our dogs to bark? How do we do this without causing the other one to bark as well?r,r-}r.(h,j)h.j'ubaubha)r/}r0(h,X)Easy! Use a separate ``channel`` like so:r1h.jh/h0h1heh3}r2(h:]h;]h9]h7]h<]uh>Kh?hh']r3(hOXEasy! Use a separate r4r5}r6(h,XEasy! Use a separate h.j/ubh)r7}r8(h,X ``channel``h3}r9(h:]h;]h9]h7]h<]uh.j/h']r:hOXchannelr;r<}r=(h,Uh.j7ubah1hubhOX like so:r>r?}r@(h,X like so:h.j/ubeubh)rA}rB(h,X*#!/usr/bin/env python from circuits import Component, Event class woof(Event): """woof Event""" class Pound(Component): def __init__(self): super(Pound, self).__init__() self.bob = Bob().register(self) self.fred = Fred().register(self) def started(self, *args): self.fire(woof(), self.bob) class Dog(Component): def woof(self): print("Woof! I'm %s!" % self.name) class Bob(Dog): """Bob""" channel = "bob" class Fred(Dog): """Fred""" channel = "fred" Pound().run() h.jh/h0h1hh3}rC(hhhXpythonrDrE}rFbh:]hhh7]h9]UsourceX>/home/prologic/work/circuits/docs/source/tutorials/woof/007.pyh;]h<]uh>Kh?hh']rGhOX*#!/usr/bin/env python from circuits import Component, Event class woof(Event): """woof Event""" class Pound(Component): def __init__(self): super(Pound, self).__init__() self.bob = Bob().register(self) self.fred = Fred().register(self) def started(self, *args): self.fire(woof(), self.bob) class Dog(Component): def woof(self): print("Woof! I'm %s!" % self.name) class Bob(Dog): """Bob""" channel = "bob" class Fred(Dog): """Fred""" channel = "fred" Pound().run() rHrI}rJ(h,Uh.jAubaubha)rK}rL(h,X$:download:`Download 007.py <007.py>`rMh.jh/h0h1heh3}rN(h:]h;]h9]h7]h<]uh>Kh?hh']rOh)rP}rQ(h,jMh.jKh/h0h1hh3}rR(UreftypeXdownloadrShhX007.pyU refdomainUh7]h9]U refexplicith:]h;]h<]hhhX007.pyrTuh>Kh']rUh)rV}rW(h,jMh3}rX(h:]h;]rY(hjSeh9]h7]h<]uh.jPh']rZhOXDownload 007.pyr[r\}r](h,Uh.jVubah1hubaubaubh)r^}r_(h,XQEvents can be fired with either the ``.fire(...)`` or ``.fireEvent(...)`` method.h.jh/h0h1jh3}r`(h:]h;]h9]h7]h<]uh>Nh?hh']raha)rb}rc(h,XQEvents can be fired with either the ``.fire(...)`` or ``.fireEvent(...)`` method.h.j^h/h0h1heh3}rd(h:]h;]h9]h7]h<]uh>Kh']re(hOX$Events can be fired with either the rfrg}rh(h,X$Events can be fired with either the h.jbubh)ri}rj(h,X``.fire(...)``h3}rk(h:]h;]h9]h7]h<]uh.jbh']rlhOX .fire(...)rmrn}ro(h,Uh.jiubah1hubhOX or rprq}rr(h,X or h.jbubh)rs}rt(h,X``.fireEvent(...)``h3}ru(h:]h;]h9]h7]h<]uh.jbh']rvhOX.fireEvent(...)rwrx}ry(h,Uh.jsubah1hubhOX method.rzr{}r|(h,X method.h.jbubeubaubha)r}}r~(h,XIf you run this, you'll get::rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Kh?hh']rhOXIf you run this, you'll get:rr}r(h,XIf you run this, you'll get:h.j}ubaubh)r}r(h,XWoof! I'm Bob!h.jh/h0h1hh3}r(hhh7]h9]h:]h;]h<]uh>Kh?hh']rhOXWoof! I'm Bob!rr}r(h,Uh.jubaubeubh@)r}r(h,Uh.hAh/h0h1hCh3}r(h:]h;]h9]h7]rhah<]rhauh>Kh?hh']r(hH)r}r(h,X Event Objectsrh.jh/h0h1hLh3}r(h:]h;]h9]h7]h<]uh>Kh?hh']rhOX Event Objectsrr}r(h,jh.jubaubha)r}r(h,X'So far in our tutorial we have been defining an Event Handler for a builtin Event called ``started``. What if we wanted to define our own Event Handlers and our own Events? You've already seen how easy it is to create a new Event Handler by simply defining a normal Python method on a Component.h.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Kh?hh']r(hOXYSo far in our tutorial we have been defining an Event Handler for a builtin Event called rr}r(h,XYSo far in our tutorial we have been defining an Event Handler for a builtin Event called h.jubh)r}r(h,X ``started``h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXstartedrr}r(h,Uh.jubah1hubhOX. What if we wanted to define our own Event Handlers and our own Events? You've already seen how easy it is to create a new Event Handler by simply defining a normal Python method on a Component.rr}r(h,X. What if we wanted to define our own Event Handlers and our own Events? You've already seen how easy it is to create a new Event Handler by simply defining a normal Python method on a Component.h.jubeubha)r}r(h,X_Defining your own Events helps with documentation and testing and makes things a little easier.rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Kh?hh']rhOX_Defining your own Events helps with documentation and testing and makes things a little easier.rr}r(h,jh.jubaubha)r}r(h,X Example::rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Kh?hh']rhOXExample:rr}r(h,XExample:h.jubaubh)r}r(h,X&class MyEvent(Event): """MyEvent"""h.jh/h0h1hh3}r(hhh7]h9]h:]h;]h<]uh>Kh?hh']rhOX&class MyEvent(Event): """MyEvent"""rr}r(h,Uh.jubaubha)r}r(h,XSo here's our example where we'll define a new Event called ``Bark`` and make our ``Dog`` fire a ``Bark`` event when our application starts up.h.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Kh?hh']r(hOX<So here's our example where we'll define a new Event called rr}r(h,X<So here's our example where we'll define a new Event called h.jubh)r}r(h,X``Bark``h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXBarkrr}r(h,Uh.jubah1hubhOX and make our rr}r(h,X and make our h.jubh)r}r(h,X``Dog``h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXDogrr}r(h,Uh.jubah1hubhOX fire a rr}r(h,X fire a h.jubh)r}r(h,X``Bark``h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXBarkrr}r(h,Uh.jubah1hubhOX& event when our application starts up.rr}r(h,X& event when our application starts up.h.jubeubh)r}r(h,X #!/usr/bin/env python from circuits import Component, Event class bark(Event): """bark Event""" class Pound(Component): def __init__(self): super(Pound, self).__init__() self.bob = Bob().register(self) self.fred = Fred().register(self) class Dog(Component): def started(self, *args): self.fire(bark()) def bark(self): print("Woof! I'm %s!" % self.name) class Bob(Dog): """Bob""" channel = "bob" class Fred(Dog): """Fred""" channel = "fred" Pound().run() h.jh/h0h1hh3}r(hhhXpythonrr}rbh:]hhh7]h9]UsourceX>/home/prologic/work/circuits/docs/source/tutorials/woof/008.pyh;]h<]uh>Kh?hh']rhOX #!/usr/bin/env python from circuits import Component, Event class bark(Event): """bark Event""" class Pound(Component): def __init__(self): super(Pound, self).__init__() self.bob = Bob().register(self) self.fred = Fred().register(self) class Dog(Component): def started(self, *args): self.fire(bark()) def bark(self): print("Woof! I'm %s!" % self.name) class Bob(Dog): """Bob""" channel = "bob" class Fred(Dog): """Fred""" channel = "fred" Pound().run() rr}r(h,Uh.jubaubha)r}r(h,X$:download:`Download 008.py <008.py>`rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Kh?hh']rh)r}r(h,jh.jh/h0h1hh3}r(UreftypeXdownloadrhhX008.pyU refdomainUh7]h9]U refexplicith:]h;]h<]hhhX008.pyruh>Kh']rh)r}r(h,jh3}r(h:]h;]r(hjeh9]h7]h<]uh.jh']rhOXDownload 008.pyrr}r(h,Uh.jubah1hubaubaubha)r}r(h,XIf you run this, you'll get::rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Kh?hh']rhOXIf you run this, you'll get:r r }r (h,XIf you run this, you'll get:h.jubaubh)r }r (h,XWoof! I'm Bob! Woof! I'm Fred!h.jh/h0h1hh3}r(hhh7]h9]h:]h;]h<]uh>Kh?hh']rhOXWoof! I'm Bob! Woof! I'm Fred!rr}r(h,Uh.j ubaubeubh@)r}r(h,Uh.hAh/h0h1hCh3}r(h:]h;]h9]h7]rh#ah<]rhauh>Kh?hh']r(hH)r}r(h,X The Debuggerrh.jh/h0h1hLh3}r(h:]h;]h9]h7]h<]uh>Kh?hh']rhOX The Debuggerrr}r (h,jh.jubaubha)r!}r"(h,X Lastly...r#h.jh/h0h1heh3}r$(h:]h;]h9]h7]h<]uh>Kh?hh']r%hOX Lastly...r&r'}r((h,j#h.j!ubaubha)r)}r*(h,XAsynchronous programming has many advantages but can be a little harder to write and follow. A silently caught exception in an Event Handler, or an Event that never gets fired, or any number of other weird things can cause your application to fail and leave you scratching your head.r+h.jh/h0h1heh3}r,(h:]h;]h9]h7]h<]uh>Kh?hh']r-hOXAsynchronous programming has many advantages but can be a little harder to write and follow. A silently caught exception in an Event Handler, or an Event that never gets fired, or any number of other weird things can cause your application to fail and leave you scratching your head.r.r/}r0(h,j+h.j)ubaubha)r1}r2(h,XFortunately circuits comes with a ``Debugger`` Component to help you keep track of what's going on in your application, and allows you to tell what your application is doing.h.jh/h0h1heh3}r3(h:]h;]h9]h7]h<]uh>Kh?hh']r4(hOX"Fortunately circuits comes with a r5r6}r7(h,X"Fortunately circuits comes with a h.j1ubh)r8}r9(h,X ``Debugger``h3}r:(h:]h;]h9]h7]h<]uh.j1h']r;hOXDebuggerr<r=}r>(h,Uh.j8ubah1hubhOX Component to help you keep track of what's going on in your application, and allows you to tell what your application is doing.r?r@}rA(h,X Component to help you keep track of what's going on in your application, and allows you to tell what your application is doing.h.j1ubeubha)rB}rC(h,XZLet's say that we defined out ``bark`` Event Handler in our ``Dog`` Component as follows::h.jh/h0h1heh3}rD(h:]h;]h9]h7]h<]uh>Mh?hh']rE(hOXLet's say that we defined out rFrG}rH(h,XLet's say that we defined out h.jBubh)rI}rJ(h,X``bark``h3}rK(h:]h;]h9]h7]h<]uh.jBh']rLhOXbarkrMrN}rO(h,Uh.jIubah1hubhOX Event Handler in our rPrQ}rR(h,X Event Handler in our h.jBubh)rS}rT(h,X``Dog``h3}rU(h:]h;]h9]h7]h<]uh.jBh']rVhOXDogrWrX}rY(h,Uh.jSubah1hubhOX Component as follows:rZr[}r\(h,X Component as follows:h.jBubeubh)r]}r^(h,X0def bark(self): print("Woof! I'm %s!" % name)h.jh/h0h1hh3}r_(hhh7]h9]h:]h;]h<]uh>Mh?hh']r`hOX0def bark(self): print("Woof! I'm %s!" % name)rarb}rc(h,Uh.j]ubaubha)rd}re(h,XENow clearly there is no such variable as ``name`` in the local scope.rfh.jh/h0h1heh3}rg(h:]h;]h9]h7]h<]uh>Mh?hh']rh(hOX)Now clearly there is no such variable as rirj}rk(h,X)Now clearly there is no such variable as h.jdubh)rl}rm(h,X``name``h3}rn(h:]h;]h9]h7]h<]uh.jdh']rohOXnamerprq}rr(h,Uh.jlubah1hubhOX in the local scope.rsrt}ru(h,X in the local scope.h.jdubeubha)rv}rw(h,X*For reference here's the entire example...rxh.jh/h0h1heh3}ry(h:]h;]h9]h7]h<]uh>M h?hh']rzhOX*For reference here's the entire example...r{r|}r}(h,jxh.jvubaubh)r~}r(h,X##!/usr/bin/env python from circuits import Component, Event class bark(Event): """bark Event""" class Pound(Component): def __init__(self): super(Pound, self).__init__() self.bob = Bob().register(self) self.fred = Fred().register(self) class Dog(Component): def started(self, *args): self.fire(bark()) def bark(self): print("Woof! I'm %s!" % name) # noqa class Bob(Dog): """Bob""" channel = "bob" class Fred(Dog): """Fred""" channel = "fred" Pound().run() h.jh/h0h1hh3}r(hhhXpythonrr}rbh:]hhh7]h9]UsourceX>/home/prologic/work/circuits/docs/source/tutorials/woof/009.pyh;]h<]uh>M h?hh']rhOX##!/usr/bin/env python from circuits import Component, Event class bark(Event): """bark Event""" class Pound(Component): def __init__(self): super(Pound, self).__init__() self.bob = Bob().register(self) self.fred = Fred().register(self) class Dog(Component): def started(self, *args): self.fire(bark()) def bark(self): print("Woof! I'm %s!" % name) # noqa class Bob(Dog): """Bob""" channel = "bob" class Fred(Dog): """Fred""" channel = "fred" Pound().run() rr}r(h,Uh.j~ubaubha)r}r(h,X$:download:`Download 009.py <009.py>`rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Mh?hh']rh)r}r(h,jh.jh/h0h1hh3}r(UreftypeXdownloadrhhX009.pyU refdomainUh7]h9]U refexplicith:]h;]h<]hhhX009.pyruh>Mh']rh)r}r(h,jh3}r(h:]h;]r(hjeh9]h7]h<]uh.jh']rhOXDownload 009.pyrr}r(h,Uh.jubah1hubaubaubha)r}r(h,XIf you run this, you'll get:rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Mh?hh']rhOXIf you run this, you'll get:rr}r(h,jh.jubaubha)r}r(h,X3That's right! You get nothing! Why? Well in circuits any error or exception that occurs in a running application is automatically caught and dealt with in a way that lets your application "keep on going". Crashing is unwanted behavior in a system so we expect to be able to recover from horrible situations.rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Mh?hh']rhOX3That's right! You get nothing! Why? Well in circuits any error or exception that occurs in a running application is automatically caught and dealt with in a way that lets your application "keep on going". Crashing is unwanted behavior in a system so we expect to be able to recover from horrible situations.rr}r(h,jh.jubaubha)r}r(h,XSO what do we do? Well that's easy. circuits comes with a ``Debugger`` that lets you log all events as well as all errors so you can quickly and easily discover which Event is causing a problem and which Event Handler to look at.h.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Mh?hh']r(hOX:SO what do we do? Well that's easy. circuits comes with a rr}r(h,X:SO what do we do? Well that's easy. circuits comes with a h.jubh)r}r(h,X ``Debugger``h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXDebuggerrr}r(h,Uh.jubah1hubhOX that lets you log all events as well as all errors so you can quickly and easily discover which Event is causing a problem and which Event Handler to look at.rr}r(h,X that lets you log all events as well as all errors so you can quickly and easily discover which Event is causing a problem and which Event Handler to look at.h.jubeubha)r}r(h,X'If you change Line 34 of our example...rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Mh?hh']rhOX'If you change Line 34 of our example...rr}r(h,jh.jubaubha)r}r(h,XFrom:rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>M h?hh']rhOXFrom:rr}r(h,jh.jubaubh)r}r(h,Xclass Fred(Dog): h.jh/h0h1hh3}r(hhXpythonrr}rbh:]hhh7]h9]UsourceX>/home/prologic/work/circuits/docs/source/tutorials/woof/009.pyh;]h<]uh>M"h?hh']rhOXclass Fred(Dog): rr}r(h,Uh.jubaubha)r}r(h,XTo:rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>M&h?hh']rhOXTo:rr}r(h,jh.jubaubh)r}r(h,X;from circuits import Debugger (Pound() + Debugger()).run()h.jh/h0h1hh3}r(hhXpythonhhh7]h9]h:]h;]h<]uh>M(h?hh']rhOX;from circuits import Debugger (Pound() + Debugger()).run()rr}r(h,Uh.jubaubha)r}r(h,X)Then run this, you'll get the following::rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>M.h?hh']rhOX(Then run this, you'll get the following:rr}r(h,X(Then run this, you'll get the following:h.jubaubh)r}r(h,Xq , ] {}> , ] {}> , ] {}> , None] {}> , NameError("global name 'name' is not defined",), [' File "/home/prologic/work/circuits/circuits/core/manager.py", line 459, in __handleEvent\n retval = handler(*eargs, **ekwargs)\n', ' File "source/tutorial/009.py", line 22, in bark\n print("Woof! I\'m %s!" % name)\n'], >] {}> ERROR (): global name 'name' is not defined File "/home/prologic/work/circuits/circuits/core/manager.py", line 459, in __handleEvent retval = handler(*eargs, **ekwargs) File "source/tutorial/009.py", line 22, in bark print("Woof! I'm %s!" % name) , NameError("global name 'name' is not defined",), [' File "/home/prologic/work/circuits/circuits/core/manager.py", line 459, in __handleEvent\n retval = handler(*eargs, **ekwargs)\n', ' File "source/tutorial/009.py", line 22, in bark\n print("Woof! I\'m %s!" % name)\n'], >] {}> ERROR (): global name 'name' is not defined File "/home/prologic/work/circuits/circuits/core/manager.py", line 459, in __handleEvent retval = handler(*eargs, **ekwargs) File "source/tutorial/009.py", line 22, in bark print("Woof! I'm %s!" % name) ^C] {}> ] {}> ] {}>h.jh/h0h1hh3}r(hhh7]h9]h:]h;]h<]uh>M0h?hh']rhOXq , ] {}> , ] {}> , ] {}> , None] {}> , NameError("global name 'name' is not defined",), [' File "/home/prologic/work/circuits/circuits/core/manager.py", line 459, in __handleEvent\n retval = handler(*eargs, **ekwargs)\n', ' File "source/tutorial/009.py", line 22, in bark\n print("Woof! I\'m %s!" % name)\n'], >] {}> ERROR (): global name 'name' is not defined File "/home/prologic/work/circuits/circuits/core/manager.py", line 459, in __handleEvent retval = handler(*eargs, **ekwargs) File "source/tutorial/009.py", line 22, in bark print("Woof! I'm %s!" % name) , NameError("global name 'name' is not defined",), [' File "/home/prologic/work/circuits/circuits/core/manager.py", line 459, in __handleEvent\n retval = handler(*eargs, **ekwargs)\n', ' File "source/tutorial/009.py", line 22, in bark\n print("Woof! I\'m %s!" % name)\n'], >] {}> ERROR (): global name 'name' is not defined File "/home/prologic/work/circuits/circuits/core/manager.py", line 459, in __handleEvent retval = handler(*eargs, **ekwargs) File "source/tutorial/009.py", line 22, in bark print("Woof! I'm %s!" % name) ^C] {}> ] {}> ] {}>rr}r(h,Uh.jubaubha)r}r(h,XNYou'll notice whereas there was no output before there is now a pretty detailed output with the ``Debugger`` added to the application. Looking through the output, we find that the application does indeed start correctly, but when we fire our ``Bark`` Event it coughs up two exceptions, one for each of our dogs (``Bob`` and ``Fred``).h.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>MHh?hh']r(hOX`You'll notice whereas there was no output before there is now a pretty detailed output with the rr}r(h,X`You'll notice whereas there was no output before there is now a pretty detailed output with the h.jubh)r}r(h,X ``Debugger``h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXDebuggerrr}r(h,Uh.jubah1hubhOX added to the application. Looking through the output, we find that the application does indeed start correctly, but when we fire our rr}r(h,X added to the application. Looking through the output, we find that the application does indeed start correctly, but when we fire our h.jubh)r}r(h,X``Bark``h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXBarkr r }r (h,Uh.jubah1hubhOX> Event it coughs up two exceptions, one for each of our dogs (r r }r(h,X> Event it coughs up two exceptions, one for each of our dogs (h.jubh)r}r(h,X``Bob``h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXBobrr}r(h,Uh.jubah1hubhOX and rr}r(h,X and h.jubh)r}r(h,X``Fred``h3}r(h:]h;]h9]h7]h<]uh.jh']rhOXFredrr}r(h,Uh.jubah1hubhOX).r r!}r"(h,X).h.jubeubha)r#}r$(h,XTFrom the error we can tell where the error is and roughly where to look in the code.r%h.jh/h0h1heh3}r&(h:]h;]h9]h7]h<]uh>MNh?hh']r'hOXTFrom the error we can tell where the error is and roughly where to look in the code.r(r)}r*(h,j%h.j#ubaubh)r+}r,(h,XcYou'll notice many other events that are displayed in the above output. These are all default events that circuits has builtin which your application can respond to. Each builtin Event has a special meaning with relation to the state of the application at that point. See: :py:mod:`circuits.core.events` for detailed documentation regarding these events.h.jh/h0h1jh3}r-(h:]h;]h9]h7]h<]uh>Nh?hh']r.(ha)r/}r0(h,X You'll notice many other events that are displayed in the above output. These are all default events that circuits has builtin which your application can respond to. Each builtin Event has a special meaning with relation to the state of the application at that point.r1h.j+h/h0h1heh3}r2(h:]h;]h9]h7]h<]uh>MRh']r3hOX You'll notice many other events that are displayed in the above output. These are all default events that circuits has builtin which your application can respond to. Each builtin Event has a special meaning with relation to the state of the application at that point.r4r5}r6(h,j1h.j/ubaubha)r7}r8(h,XVSee: :py:mod:`circuits.core.events` for detailed documentation regarding these events.h.j+h/h0h1heh3}r9(h:]h;]h9]h7]h<]uh>MWh']r:(hOXSee: r;r<}r=(h,XSee: h.j7ubcsphinx.addnodes pending_xref r>)r?}r@(h,X:py:mod:`circuits.core.events`rAh.j7h/h0h1U pending_xrefrBh3}rC(UreftypeXmodhhXcircuits.core.eventsU refdomainXpyrDh7]h9]U refexplicith:]h;]h<]hhUpy:classrENU py:modulerFNuh>MWh']rGh)rH}rI(h,jAh3}rJ(h:]h;]rK(hjDXpy-modrLeh9]h7]h<]uh.j?h']rMhOXcircuits.core.eventsrNrO}rP(h,Uh.jHubah1hubaubhOX3 for detailed documentation regarding these events.rQrR}rS(h,X3 for detailed documentation regarding these events.h.j7ubeubeubha)rT}rU(h,X;The correct code for the ``bark`` Event Handler should be::rVh.jh/h0h1heh3}rW(h:]h;]h9]h7]h<]uh>MZh?hh']rX(hOXThe correct code for the rYrZ}r[(h,XThe correct code for the h.jTubh)r\}r](h,X``bark``h3}r^(h:]h;]h9]h7]h<]uh.jTh']r_hOXbarkr`ra}rb(h,Uh.j\ubah1hubhOX Event Handler should be:rcrd}re(h,X Event Handler should be:h.jTubeubh)rf}rg(h,X6def bark(self): print("Woof! I'm %s!" % self.name)h.jh/h0h1hh3}rh(hhh7]h9]h:]h;]h<]uh>M\h?hh']rihOX6def bark(self): print("Woof! I'm %s!" % self.name)rjrk}rl(h,Uh.jfubaubha)rm}rn(h,XBRunning again with our correction results in the expected output::roh.jh/h0h1heh3}rp(h:]h;]h9]h7]h<]uh>M_h?hh']rqhOXARunning again with our correction results in the expected output:rrrs}rt(h,XARunning again with our correction results in the expected output:h.jmubaubh)ru}rv(h,XWoof! I'm Bob! Woof! I'm Fred!h.jh/h0h1hh3}rw(hhh7]h9]h:]h;]h<]uh>Mah?hh']rxhOXWoof! I'm Bob! Woof! I'm Fred!ryrz}r{(h,Uh.juubaubha)r|}r}(h,XThat's it folks!r~h.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Mdh?hh']rhOXThat's it folks!rr}r(h,j~h.j|ubaubha)r}r(h,XHopefully this gives you a feel of what circuits is all about and an easy tutorial on some of the basic concepts. As you're no doubt itching to get started on your next circuits project, here's some recommended reading:rh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Mfh?hh']rhOXHopefully this gives you a feel of what circuits is all about and an easy tutorial on some of the basic concepts. As you're no doubt itching to get started on your next circuits project, here's some recommended reading:rr}r(h,jh.jubaubj-)r}r(h,Uh.jh/h0h1j0h3}r(j2X-h7]h9]h:]h;]h<]uh>Mjh?hh']r(j4)r}r(h,X :doc:`../faq`rh.jh/h0h1j8h3}r(h:]h;]h9]h7]h<]uh>Nh?hh']rha)r}r(h,jh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Mjh']rj>)r}r(h,jh.jh/h0h1jBh3}r(UreftypeXdocrhhX../faqU refdomainUh7]h9]U refexplicith:]h;]h<]hhuh>Mjh']rh)r}r(h,jh3}r(h:]h;]r(hjeh9]h7]h<]uh.jh']rhOX../faqrr}r(h,Uh.jubah1hubaubaubaubj4)r}r(h,X:doc:`../api/index`rh.jh/h0h1j8h3}r(h:]h;]h9]h7]h<]uh>Nh?hh']rha)r}r(h,jh.jh/h0h1heh3}r(h:]h;]h9]h7]h<]uh>Mkh']rj>)r}r(h,jh.jh/h0h1jBh3}r(UreftypeXdocrhhX ../api/indexU refdomainUh7]h9]U refexplicith:]h;]h<]hhuh>Mkh']rh)r}r(h,jh3}r(h:]h;]r(hjeh9]h7]h<]uh.jh']rhOX ../api/indexrr}r(h,Uh.jubah1hubaubaubaubeubeubeubeh,UU transformerrNU footnote_refsr}rUrefnamesr}rXpython programming language]rjasUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh?hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNhLNUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8r U_sourcer h0Ugettext_compactr U generatorr NUdump_internalsr NU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(h!jhjh%jh$jhjhhSh#jh"h*hhkh jh&hAhjuUsubstitution_namesr}r h1h?h3}r!(h:]h7]h9]Usourceh0h;]h<]uU footnotesr"]r#Urefidsr$}r%ub.circuits-3.1.0/docs/build/doctrees/tutorials/index.doctree0000644000014400001440000000541512425011107024672 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}qXcircuits tutorialsqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUcircuits-tutorialsqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqX</home/prologic/work/circuits/docs/source/tutorials/index.rstqUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq ]Uidsq!]q"haUnamesq#]q$hauUlineq%KUdocumentq&hh]q'(cdocutils.nodes title q()q)}q*(hXcircuits Tutorialsq+hhhhhUtitleq,h}q-(h]h]h ]h!]h#]uh%Kh&hh]q.cdocutils.nodes Text q/Xcircuits Tutorialsq0q1}q2(hh+hh)ubaubcdocutils.nodes compound q3)q4}q5(hUhhhhhUcompoundq6h}q7(h]h]q8Utoctree-wrapperq9ah ]h!]h#]uh%Nh&hh]q:csphinx.addnodes toctree q;)q<}q=(hUhh4hhhUtoctreeq>h}q?(Unumberedq@KU includehiddenqAhXtutorials/indexqBU titlesonlyqCUglobqDh!]h ]h]h]h#]UentriesqE]qF(NXtutorials/woof/indexqGqHNXtutorials/telnet/indexqIqJeUhiddenqKU includefilesqL]qM(hGhIeUmaxdepthqNKuh%Kh]ubaubeubahUU transformerqONU footnote_refsqP}qQUrefnamesqR}qSUsymbol_footnotesqT]qUUautofootnote_refsqV]qWUsymbol_footnote_refsqX]qYU citationsqZ]q[h&hU current_lineq\NUtransform_messagesq]]q^Ureporterq_NUid_startq`KU autofootnotesqa]qbU citation_refsqc}qdUindirect_targetsqe]qfUsettingsqg(cdocutils.frontend Values qhoqi}qj(Ufootnote_backlinksqkKUrecord_dependenciesqlNU rfc_base_urlqmUhttp://tools.ietf.org/html/qnU tracebackqoUpep_referencesqpNUstrip_commentsqqNU toc_backlinksqrUentryqsU language_codeqtUenquU datestampqvNU report_levelqwKU _destinationqxNU halt_levelqyKU strip_classesqzNh,NUerror_encoding_error_handlerq{Ubackslashreplaceq|Udebugq}NUembed_stylesheetq~Uoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU 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_sourceqhUgettext_compactqU 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_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh&h}q(h]h!]h ]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.circuits-3.1.0/docs/build/doctrees/tutorials/telnet/0000755000014400001440000000000012425013643023511 5ustar prologicusers00000000000000circuits-3.1.0/docs/build/doctrees/tutorials/telnet/index.doctree0000644000014400001440000011227212425011107026165 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xechoserver exampleqXimplementationqNXoverviewqNX discussionq NXtestingq NXtelnet tutorialq NXpython programming languageq Xdesignq NXexamplesqX componentsqNXtelnet examplequUsubstitution_defsq}qUparse_messagesq]q(cdocutils.nodes system_message q)q}q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhh)q}q(hUhhUsourceqXC/home/prologic/work/circuits/docs/source/tutorials/telnet/index.rstq Utagnameq!Usectionq"U attributesq#}q$(Udupnamesq%]Uclassesq&]Ubackrefsq']Uidsq(]q)Utelnet-tutorialq*aUnamesq+]q,h auUlineq-KUdocumentq.hUchildrenq/]q0(cdocutils.nodes title q1)q2}q3(hXTelnet Tutorialq4hhhh h!Utitleq5h#}q6(h%]h&]h']h(]h+]uh-Kh.hh/]q7cdocutils.nodes Text q8XTelnet Tutorialq9q:}q;(hh4hh2ubaubh)q<}q=(hUhhhh h!h"h#}q>(h%]h&]h']h(]q?Uoverviewq@ah+]qAhauh-K h.hh/]qB(h1)qC}qD(hXOverviewqEhh`_ showing you how to various parts of the circuits component library for building a simple TCP client that also accepts user input.hh`_h#}qW(UnameXtelnet ExampleUrefuriqXXBhttps://bitbucket.org/circuits/circuits/src/tip/examples/telnet.pyqYh(]h']h%]h&]h+]uhhLh/]qZh8Xtelnet Exampleq[q\}q](hUhhUubah!U referenceq^ubcdocutils.nodes target q_)q`}qa(hXE U referencedqbKhhLh!Utargetqch#}qd(UrefurihYh(]qeUtelnet-exampleqfah']h%]h&]h+]qghauh/]ubh8X showing you how to various parts of the circuits component library for building a simple TCP client that also accepts user input.qhqi}qj(hX showing you how to various parts of the circuits component library for building a simple TCP client that also accepts user input.hhLubeubhK)qk}ql(hX5Be sure you have circuits installed before you start:qmhh Select [weight="2.0"]; Telnet -> TCPClient [weight="1.0"]; Telnet -> File [weight="1.0"]; } h(]h']h%]h&]h+]Uinliner;Uoptionsr<]uh-K,h.hh/]ubhK)r=}r>(hXThe above graph is the overall design of our Telnet application. What's shown here is a relationship of how the components fit together and the overall flow of events.r?hj&hh h!hNh#}r@(h%]h&]h']h(]h+]uh-K-h.hh/]rAh8XThe above graph is the overall design of our Telnet application. What's shown here is a relationship of how the components fit together and the overall flow of events.rBrC}rD(hj?hj=ubaubhK)rE}rF(hX For example:rGhj&hh h!hNh#}rH(h%]h&]h']h(]h+]uh-K2h.hh/]rIh8X For example:rJrK}rL(hjGhjEubaubh)rM}rN(hUhj&hh h!hh#}rO(hU.h(]h']h%]hUh&]h+]hhuh-K4h.hh/]rP(h)rQ}rR(hXConnect to remote TCP Server.rShjMhh h!hh#}rT(h%]h&]h']h(]h+]uh-Nh.hh/]rUhK)rV}rW(hjShjQhh h!hNh#}rX(h%]h&]h']h(]h+]uh-K4h/]rYh8XConnect to remote TCP Server.rZr[}r\(hjShjVubaubaubh)r]}r^(hXRead input from User.r_hjMhh h!hh#}r`(h%]h&]h']h(]h+]uh-Nh.hh/]rahK)rb}rc(hj_hj]hh h!hNh#}rd(h%]h&]h']h(]h+]uh-K5h/]reh8XRead input from User.rfrg}rh(hj_hjbubaubaubh)ri}rj(hX*Write input from User to connected Socket.rkhjMhh h!hh#}rl(h%]h&]h']h(]h+]uh-Nh.hh/]rmhK)rn}ro(hjkhjihh h!hNh#}rp(h%]h&]h']h(]h+]uh-K6h/]rqh8X*Write input from User to connected Socket.rrrs}rt(hjkhjnubaubaubh)ru}rv(hX1Wait for data from connected Socket and display. hjMhh h!hh#}rw(h%]h&]h']h(]h+]uh-Nh.hh/]rxhK)ry}rz(hX0Wait for data from connected Socket and display.r{hjuhh h!hNh#}r|(h%]h&]h']h(]h+]uh-K7h/]r}h8X0Wait for data from connected Socket and display.r~r}r(hj{hjyubaubaubeubcdocutils.nodes note r)r}r(hX The :class:`~.core.pollers.Select` Component shown is required by our application for Asynchronous I/O polling however we do not need to explicitly use it as it is automatically imported and registered simply by utilizing the :class:`~.net.sockets.TCPClient` Component.hj&hh h!Unoterh#}r(h%]h&]h']h(]h+]uh-Nh.hh/]rhK)r}r(hX The :class:`~.core.pollers.Select` Component shown is required by our application for Asynchronous I/O polling however we do not need to explicitly use it as it is automatically imported and registered simply by utilizing the :class:`~.net.sockets.TCPClient` Component.hjhh h!hNh#}r(h%]h&]h']h(]h+]uh-K9h/]r(h8XThe rr}r(hXThe hjubh)r}r(hX:class:`~.core.pollers.Select`rhjhh h!hh#}r(UreftypeXclassh҈hhXcore.pollers.SelectU refdomainXpyrh(]h']U refexplicith%]h&]h+]hhhNhNuh-K9h/]rh)r}r(hjh#}r(h%]h&]r(hjXpy-classreh']h(]h+]uhjh/]rh8XSelectrr}r(hUhjubah!hubaubh8X Component shown is required by our application for Asynchronous I/O polling however we do not need to explicitly use it as it is automatically imported and registered simply by utilizing the rr}r(hX Component shown is required by our application for Asynchronous I/O polling however we do not need to explicitly use it as it is automatically imported and registered simply by utilizing the hjubh)r}r(hX :class:`~.net.sockets.TCPClient`rhjhh h!hh#}r(UreftypeXclassh҈hhXnet.sockets.TCPClientU refdomainXpyrh(]h']U refexplicith%]h&]h+]hhhNhNuh-K9h/]rh)r}r(hjh#}r(h%]h&]r(hjXpy-classreh']h(]h+]uhjh/]rh8X TCPClientrr}r(hUhjubah!hubaubh8X Component.rr}r(hX Component.hjubeubaubeubh)r}r(hUhhhh h!h"h#}r(h%]h&]h']h(]rUimplementationrah+]rhauh-KAh.hh/]r(h1)r}r(hXImplementationrhjhh h!h5h#}r(h%]h&]h']h(]h+]uh-KAh.hh/]rh8XImplementationrr}r(hjhjubaubhK)r}r(hX&Without further delay here's the code:rhjhh h!hNh#}r(h%]h&]h']h(]h+]uh-KCh.hh/]rh8X&Without further delay here's the code:rr}r(hjhjubaubhs)r}r(hX#!/usr/bin/env python import sys from circuits.io import File from circuits import handler, Component from circuits.net.sockets import TCPClient from circuits.net.events import connect, write class Telnet(Component): channel = "telnet" def init(self, host, port): self.host = host self.port = port TCPClient(channel=self.channel).register(self) File(sys.stdin, channel="stdin").register(self) def ready(self, socket): self.fire(connect(self.host, self.port)) def read(self, data): print(data.strip()) @handler("read", channel="stdin") def read_user_input(self, data): self.fire(write(data)) host = sys.argv[1] port = int(sys.argv[2]) Telnet(host, port).run() hjhh h!hvh#}r(hxhycdocutils.nodes reprunicode rXpythonrr}rbh%]hzh{h(]h']UsourceXC/home/prologic/work/circuits/docs/source/tutorials/telnet/telnet.pyh&]h+]uh-KEh.hh/]rh8X#!/usr/bin/env python import sys from circuits.io import File from circuits import handler, Component from circuits.net.sockets import TCPClient from circuits.net.events import connect, write class Telnet(Component): channel = "telnet" def init(self, host, port): self.host = host self.port = port TCPClient(channel=self.channel).register(self) File(sys.stdin, channel="stdin").register(self) def ready(self, socket): self.fire(connect(self.host, self.port)) def read(self, data): print(data.strip()) @handler("read", channel="stdin") def read_user_input(self, data): self.fire(write(data)) host = sys.argv[1] port = int(sys.argv[2]) Telnet(host, port).run() rr}r(hUhjubaubhK)r}r(hX*:download:`Download telnet.py `rhjhh h!hNh#}r(h%]h&]h']h(]h+]uh-KIh.hh/]rcsphinx.addnodes download_reference r)r}r(hjhjhh h!Udownload_referencerh#}r(UreftypeXdownloadrhhX telnet.pyU refdomainUh(]h']U refexplicith%]h&]h+]hhUfilenamerX telnet.pyruh-KIh/]rh)r}r(hjh#}r(h%]h&]r(hjeh']h(]h+]uhjh/]rh8XDownload telnet.pyrr}r(hUhjubah!hubaubaubeubhh)r}r(hUhhhh h!h"h#}r(h%]h&]h']h(]rUtestingrah+]rh auh-Kh.hh/]r(h1)r}r(hXTestingrhjhh h!h5h#}r(h%]h&]h']h(]h+]uh-Kh.hh/]rh8XTestingrr}r(hjhjubaubhK)r}r(hXTo try this example out, download a copy of the `echoserver Example `_ and copy and paste the full source code of the ``Telnet`` example above into a file called ``telnet.py``.hjhh h!hNh#}r(h%]h&]h']h(]h+]uh-Kh.hh/]r(h8X0To try this example out, download a copy of the rr}r(hX0To try this example out, download a copy of the hjubhT)r}r(hXU`echoserver Example `_h#}r(UnameXechoserver ExamplehXX=https://bitbucket.org/circuits/circuits/src/tip/echoserver.pyrh(]h']h%]h&]h+]uhjh/]rh8Xechoserver Examplerr}r(hUhjubah!h^ubh_)r}r (hX@ hbKhjh!hch#}r (Urefurijh(]r Uechoserver-exampler ah']h%]h&]h+]r hauh/]ubh8X0 and copy and paste the full source code of the rr}r(hX0 and copy and paste the full source code of the hjubh)r}r(hX ``Telnet``h#}r(h%]h&]h']h(]h+]uhjh/]rh8XTelnetrr}r(hUhjubah!hubh8X" example above into a file called rr}r(hX" example above into a file called hjubh)r}r(hX ``telnet.py``h#}r(h%]h&]h']h(]h+]uhjh/]rh8X telnet.pyrr }r!(hUhjubah!hubh8X.r"}r#(hX.hjubeubhK)r$}r%(hXIn one terminal run::r&hjhh h!hNh#}r'(h%]h&]h']h(]h+]uh-Kh.hh/]r(h8XIn one terminal run:r)r*}r+(hXIn one terminal run:hj$ubaubhs)r,}r-(hX$ python echoserver.pyhjhh h!hvh#}r.(hzh{h(]h']h%]h&]h+]uh-Kh.hh/]r/h8X$ python echoserver.pyr0r1}r2(hUhj,ubaubhK)r3}r4(hXIn a second terminal run::r5hjhh h!hNh#}r6(h%]h&]h']h(]h+]uh-Kh.hh/]r7h8XIn a second terminal run:r8r9}r:(hXIn a second terminal run:hj3ubaubhs)r;}r<(hX!$ python telnet.py localhost 9000hjhh h!hvh#}r=(hzh{h(]h']h%]h&]h+]uh-Kh.hh/]r>h8X!$ python telnet.py localhost 9000r?r@}rA(hUhj;ubaubhK)rB}rC(hX Have fun!rDhjhh h!hNh#}rE(h%]h&]h']h(]h+]uh-Kh.hh/]rFh8X Have fun!rGrH}rI(hjDhjBubaubhK)rJ}rK(hX]For more examples see `examples `_.rLhjhh h!hNh#}rM(h%]h&]h']h(]h+]uh-Kh.hh/]rN(h8XFor more examples see rOrP}rQ(hXFor more examples see hjJubhT)rR}rS(hXF`examples `_h#}rT(UnamehhXX8https://bitbucket.org/circuits/circuits/src/tip/examplesrUh(]h']h%]h&]h+]uhjJh/]rVh8XexamplesrWrX}rY(hUhjRubah!h^ubh_)rZ}r[(hX; hbKhjJh!hch#}r\(UrefurijUh(]r]Uexamplesr^ah']h%]h&]h+]r_hauh/]ubh8X.r`}ra(hX.hjJubeubcsphinx.addnodes seealso rb)rc}rd(hX+- :doc:`../../faq` - :doc:`../../api/index`hjhNh!Useealsoreh#}rf(h%]h&]h']h(]h+]uh-Nh.hh/]rgcdocutils.nodes bullet_list rh)ri}rj(hUh#}rk(UbulletrlX-h(]h']h%]h&]h+]uhjch/]rm(h)rn}ro(hX:doc:`../../faq`rph#}rq(h%]h&]h']h(]h+]uhjih/]rrhK)rs}rt(hjphjnhh h!hNh#}ru(h%]h&]h']h(]h+]uh-Kh/]rvh)rw}rx(hjphjshh h!hh#}ry(UreftypeXdocrzhhX ../../faqU refdomainUh(]h']U refexplicith%]h&]h+]hhuh-Kh/]r{h)r|}r}(hjph#}r~(h%]h&]r(hjzeh']h(]h+]uhjwh/]rh8X ../../faqrr}r(hUhj|ubah!hubaubaubah!hubh)r}r(hX:doc:`../../api/index`rh#}r(h%]h&]h']h(]h+]uhjih/]rhK)r}r(hjhjhh h!hNh#}r(h%]h&]h']h(]h+]uh-Kh/]rh)r}r(hjhjhh h!hh#}r(UreftypeXdocrhhX../../api/indexU refdomainUh(]h']U refexplicith%]h&]h+]hhuh-Kh/]rh)r}r(hjh#}r(h%]h&]r(hjeh']h(]h+]uhjh/]rh8X../../api/indexrr}r(hUhjubah!hubaubaubah!hubeh!U bullet_listrubaubeubeubhh h!h"h#}r(h%]h&]h']h(]rU discussionrah+]rh auh-KMh.hh/]r(h1)r}r(hX Discussionrhhhh h!h5h#}r(h%]h&]h']h(]h+]uh-KMh.hh/]rh8X Discussionrr}r(hjhjubaubhK)r}r(hX Some important things to note...rhhhh h!hNh#}r(h%]h&]h']h(]h+]uh-KOh.hh/]rh8X Some important things to note...rr}r(hjhjubaubh)r}r(hUhhhh h!hh#}r(hU.h(]h']h%]hUh&]h+]hhuh-KQh.hh/]rh)r}r(hX Notice that we defined a ``channel`` for out ``Telnet`` Component? This is so that the events of :class:`~.net.sockets.TCPClient` and :class:`~.io.file.File` don't collide. Both of these components share a very similar interface in terms of the events they listen to. hjhh h!hh#}r(h%]h&]h']h(]h+]uh-Nh.hh/]r(hK)r}r(hXBNotice that we defined a ``channel`` for out ``Telnet`` Component?hjhh h!hNh#}r(h%]h&]h']h(]h+]uh-KQh/]r(h8XNotice that we defined a rr}r(hXNotice that we defined a hjubh)r}r(hX ``channel``h#}r(h%]h&]h']h(]h+]uhjh/]rh8Xchannelrr}r(hUhjubah!hubh8X for out rr}r(hX for out hjubh)r}r(hX ``Telnet``h#}r(h%]h&]h']h(]h+]uhjh/]rh8XTelnetrr}r(hUhjubah!hubh8X Component?rr}r(hX Component?hjubeubhK)r}r(hXThis is so that the events of :class:`~.net.sockets.TCPClient` and :class:`~.io.file.File` don't collide. Both of these components share a very similar interface in terms of the events they listen to.hjhh h!hNh#}r(h%]h&]h']h(]h+]uh-KSh/]r(h8XThis is so that the events of rr}r(hXThis is so that the events of hjubh)r}r(hX :class:`~.net.sockets.TCPClient`rhjhh h!hh#}r(UreftypeXclassh҈hhXnet.sockets.TCPClientU refdomainXpyrh(]h']U refexplicith%]h&]h+]hhhNhNuh-KSh/]rh)r}r(hjh#}r(h%]h&]r(hjXpy-classreh']h(]h+]uhjh/]rh8X TCPClientrr}r(hUhjubah!hubaubh8X and rr}r(hX and hjubh)r}r(hX:class:`~.io.file.File`rhjhh h!hh#}r(UreftypeXclassh҈hhX io.file.FileU refdomainXpyrh(]h']U refexplicith%]h&]h+]hhhNhNuh-KSh/]rh)r}r(hjh#}r(h%]h&]r(hjXpy-classreh']h(]h+]uhjh/]rh8XFilerr}r(hUhjubah!hubaubh8Xn don't collide. Both of these components share a very similar interface in terms of the events they listen to.rr}r(hXn don't collide. Both of these components share a very similar interface in terms of the events they listen to.hjubeubeubaubhs)r}r(hX0class Telnet(Component): channel = "telnet"hhhh h!hvh#}r(hxhyXpythonhzh{h(]h']h%]h&]h+]uh-KWh.hh/]rh8X0class Telnet(Component): channel = "telnet"rr}r(hUhjubaubh)r}r(hUhhhh h!hh#}r(hU.UstartrKh(]h']h%]hUh&]h+]hhuh-K]h.hh/]r h)r }r (hXFNotice as well that in defining a ``channel`` for our ``Telnet`` Component we've also "registered" the :class:`~.net.sockets.TCPClient` Component so that it has the same channel as our ``Telnet`` Component. Why? We want our ``Telnet`` Component to receive all of the events of the :class:`~.net.sockets.TCPClient` Component. hjhh h!hh#}r (h%]h&]h']h(]h+]uh-Nh.hh/]r (hK)r}r(hXNotice as well that in defining a ``channel`` for our ``Telnet`` Component we've also "registered" the :class:`~.net.sockets.TCPClient` Component so that it has the same channel as our ``Telnet`` Component.hj hh h!hNh#}r(h%]h&]h']h(]h+]uh-K]h/]r(h8X"Notice as well that in defining a rr}r(hX"Notice as well that in defining a hjubh)r}r(hX ``channel``h#}r(h%]h&]h']h(]h+]uhjh/]rh8Xchannelrr}r(hUhjubah!hubh8X for our rr}r(hX for our hjubh)r}r (hX ``Telnet``h#}r!(h%]h&]h']h(]h+]uhjh/]r"h8XTelnetr#r$}r%(hUhjubah!hubh8X' Component we've also "registered" the r&r'}r((hX' Component we've also "registered" the hjubh)r)}r*(hX :class:`~.net.sockets.TCPClient`r+hjhh h!hh#}r,(UreftypeXclassh҈hhXnet.sockets.TCPClientU refdomainXpyr-h(]h']U refexplicith%]h&]h+]hhhNhNuh-K]h/]r.h)r/}r0(hj+h#}r1(h%]h&]r2(hj-Xpy-classr3eh']h(]h+]uhj)h/]r4h8X TCPClientr5r6}r7(hUhj/ubah!hubaubh8X2 Component so that it has the same channel as our r8r9}r:(hX2 Component so that it has the same channel as our hjubh)r;}r<(hX ``Telnet``h#}r=(h%]h&]h']h(]h+]uhjh/]r>h8XTelnetr?r@}rA(hUhj;ubah!hubh8X Component.rBrC}rD(hX Component.hjubeubhK)rE}rF(hXuWhy? We want our ``Telnet`` Component to receive all of the events of the :class:`~.net.sockets.TCPClient` Component.hj hh h!hNh#}rG(h%]h&]h']h(]h+]uh-Kah/]rH(h8XWhy? We want our rIrJ}rK(hXWhy? We want our hjEubh)rL}rM(hX ``Telnet``h#}rN(h%]h&]h']h(]h+]uhjEh/]rOh8XTelnetrPrQ}rR(hUhjLubah!hubh8X/ Component to receive all of the events of the rSrT}rU(hX/ Component to receive all of the events of the hjEubh)rV}rW(hX :class:`~.net.sockets.TCPClient`rXhjEhh h!hh#}rY(UreftypeXclassh҈hhXnet.sockets.TCPClientU refdomainXpyrZh(]h']U refexplicith%]h&]h+]hhhNhNuh-Kah/]r[h)r\}r](hjXh#}r^(h%]h&]r_(hjZXpy-classr`eh']h(]h+]uhjVh/]rah8X TCPClientrbrc}rd(hUhj\ubah!hubaubh8X Component.rerf}rg(hX Component.hjEubeubeubaubhs)rh}ri(hX.TCPClient(channel=self.channel).register(self)hhhh h!hvh#}rj(hxhyXpythonhzh{h(]h']h%]h&]h+]uh-Kdh.hh/]rkh8X.TCPClient(channel=self.channel).register(self)rlrm}rn(hUhjhubaubh)ro}rp(hUhhhh h!hh#}rq(hU.jKh(]h']h%]hUh&]h+]hhuh-Khh.hh/]rrh)rs}rt(hXIn addition to our :class:`~.net.sockets.TCPClient` Component being registered with the same ``channel`` as our ``Telnet`` Component we can also see that we have registered a :class:`~.io.file.File` Component however we have chosen a different channel here called ``stdin``. Why? We don't want the events from :class:`~.net.sockets.TCPClient` and subsequently our ``Telnet`` Component to collide with the events from :class:`~.io.file.File`. So we setup a Component for reading user input by using the :class:`~.io.file.File` Component and attaching an event handler to our ``Telnet`` Component but listening to events from our ``stdin`` channel. hjohh h!hh#}ru(h%]h&]h']h(]h+]uh-Nh.hh/]rv(hK)rw}rx(hXIn addition to our :class:`~.net.sockets.TCPClient` Component being registered with the same ``channel`` as our ``Telnet`` Component we can also see that we have registered a :class:`~.io.file.File` Component however we have chosen a different channel here called ``stdin``.hjshh h!hNh#}ry(h%]h&]h']h(]h+]uh-Khh/]rz(h8XIn addition to our r{r|}r}(hXIn addition to our hjwubh)r~}r(hX :class:`~.net.sockets.TCPClient`rhjwhh h!hh#}r(UreftypeXclassh҈hhXnet.sockets.TCPClientU refdomainXpyrh(]h']U refexplicith%]h&]h+]hhhNhNuh-Khh/]rh)r}r(hjh#}r(h%]h&]r(hjXpy-classreh']h(]h+]uhj~h/]rh8X TCPClientrr}r(hUhjubah!hubaubh8X* Component being registered with the same rr}r(hX* Component being registered with the same hjwubh)r}r(hX ``channel``h#}r(h%]h&]h']h(]h+]uhjwh/]rh8Xchannelrr}r(hUhjubah!hubh8X as our rr}r(hX as our hjwubh)r}r(hX ``Telnet``h#}r(h%]h&]h']h(]h+]uhjwh/]rh8XTelnetrr}r(hUhjubah!hubh8X5 Component we can also see that we have registered a rr}r(hX5 Component we can also see that we have registered a hjwubh)r}r(hX:class:`~.io.file.File`rhjwhh h!hh#}r(UreftypeXclassh҈hhX io.file.FileU refdomainXpyrh(]h']U refexplicith%]h&]h+]hhhNhNuh-Khh/]rh)r}r(hjh#}r(h%]h&]r(hjXpy-classreh']h(]h+]uhjh/]rh8XFilerr}r(hUhjubah!hubaubh8XB Component however we have chosen a different channel here called rr}r(hXB Component however we have chosen a different channel here called hjwubh)r}r(hX ``stdin``h#}r(h%]h&]h']h(]h+]uhjwh/]rh8Xstdinrr}r(hUhjubah!hubh8X.r}r(hX.hjwubeubhK)r}r(hXWhy? We don't want the events from :class:`~.net.sockets.TCPClient` and subsequently our ``Telnet`` Component to collide with the events from :class:`~.io.file.File`.hjshh h!hNh#}r(h%]h&]h']h(]h+]uh-Kmh/]r(h8X#Why? We don't want the events from rr}r(hX#Why? We don't want the events from hjubh)r}r(hX :class:`~.net.sockets.TCPClient`rhjhh h!hh#}r(UreftypeXclassh҈hhXnet.sockets.TCPClientU refdomainXpyrh(]h']U refexplicith%]h&]h+]hhhNhNuh-Kmh/]rh)r}r(hjh#}r(h%]h&]r(hjXpy-classreh']h(]h+]uhjh/]rh8X TCPClientrr}r(hUhjubah!hubaubh8X and subsequently our rr}r(hX and subsequently our hjubh)r}r(hX ``Telnet``h#}r(h%]h&]h']h(]h+]uhjh/]rh8XTelnetrr}r(hUhjubah!hubh8X+ Component to collide with the events from rr}r(hX+ Component to collide with the events from hjubh)r}r(hX:class:`~.io.file.File`rhjhh h!hh#}r(UreftypeXclassh҈hhX io.file.FileU refdomainXpyrh(]h']U refexplicith%]h&]h+]hhhNhNuh-Kmh/]rh)r}r(hjh#}r(h%]h&]r(hjXpy-classreh']h(]h+]uhjh/]rh8XFilerr}r(hUhjubah!hubaubh8X.r}r(hX.hjubeubhK)r}r(hXSo we setup a Component for reading user input by using the :class:`~.io.file.File` Component and attaching an event handler to our ``Telnet`` Component but listening to events from our ``stdin`` channel.hjshh h!hNh#}r(h%]h&]h']h(]h+]uh-Kph/]r(h8X<So we setup a Component for reading user input by using the rr}r(hX<So we setup a Component for reading user input by using the hjubh)r}r(hX:class:`~.io.file.File`rhjhh h!hh#}r(UreftypeXclassh҈hhX io.file.FileU refdomainXpyrh(]h']U refexplicith%]h&]h+]hhhNhNuh-Kph/]rh)r}r(hjh#}r(h%]h&]r(hjXpy-classreh']h(]h+]uhjh/]rh8XFilerr}r(hUhjubah!hubaubh8X1 Component and attaching an event handler to our r r }r (hX1 Component and attaching an event handler to our hjubh)r }r (hX ``Telnet``h#}r(h%]h&]h']h(]h+]uhjh/]rh8XTelnetrr}r(hUhj ubah!hubh8X, Component but listening to events from our rr}r(hX, Component but listening to events from our hjubh)r}r(hX ``stdin``h#}r(h%]h&]h']h(]h+]uhjh/]rh8Xstdinrr}r(hUhjubah!hubh8X channel.rr}r(hX channel.hjubeubeubaubhs)r }r!(hX/File(sys.stdin, channel="stdin").register(self)hhhh h!hvh#}r"(hxhyXpythonhzh{h(]h']h%]h&]h+]uh-Kth.hh/]r#h8X/File(sys.stdin, channel="stdin").register(self)r$r%}r&(hUhj ubaubhs)r'}r((hX]@handler("read", channel="stdin") def read_user_input(self, data): self.fire(write(data))hhhh h!hvh#}r)(hxhyXpythonhzh{h(]h']h%]h&]h+]uh-Kxh.hh/]r*h8X]@handler("read", channel="stdin") def read_user_input(self, data): self.fire(write(data))r+r,}r-(hUhj'ubaubhK)r.}r/(hXxHere is what the event flow would look like if you were to register the :class:`~.Debugger` to the ``Telnet`` Component.hhhh h!hNh#}r0(h%]h&]h']h(]h+]uh-K~h.hh/]r1(h8XHHere is what the event flow would look like if you were to register the r2r3}r4(hXHHere is what the event flow would look like if you were to register the hj.ubh)r5}r6(hX:class:`~.Debugger`r7hj.hh h!hh#}r8(UreftypeXclassh҈hhXDebuggerU refdomainXpyr9h(]h']U refexplicith%]h&]h+]hhhNhNuh-K~h/]r:h)r;}r<(hj7h#}r=(h%]h&]r>(hj9Xpy-classr?eh']h(]h+]uhj5h/]r@h8XDebuggerrArB}rC(hUhj;ubah!hubaubh8X to the rDrE}rF(hX to the hj.ubh)rG}rH(hX ``Telnet``h#}rI(h%]h&]h']h(]h+]uhj.h/]rJh8XTelnetrKrL}rM(hUhjGubah!hubh8X Component.rNrO}rP(hX Component.hj.ubeubhs)rQ}rR(hXEfrom circuits import Debugger (Telnet(host, port) + Debugger()).run()hhhh h!hvh#}rS(hxhyXpythonhzh{h(]h']h%]h&]h+]uh-Kh.hh/]rTh8XEfrom circuits import Debugger (Telnet(host, port) + Debugger()).run()rUrV}rW(hUhjQubaubhs)rX}rY(hX_$ python telnet.py 10.0.0.2 9000 , )> , )> , )> )> , )> )> )> <_open[stdin] ( )> ', 'r' )> Hello World! <_read[stdin] (', mode 'r' at 0x7f32ff5ab0c0> )> <_write[telnet] ( )> <_read[telnet] ( )> Hello World! ^C )> )> hhhh h!hvh#}rZ(hxhyXbashhzh{h(]h']h%]h&]h+]uh-Kh.hh/]r[h8X_$ python telnet.py 10.0.0.2 9000 , )> , )> , )> )> , )> )> )> <_open[stdin] ( )> ', 'r' )> Hello World! <_read[stdin] (', mode 'r' at 0x7f32ff5ab0c0> )> <_write[telnet] ( )> <_read[telnet] ( )> Hello World! ^C )> )> r\r]}r^(hUhjXubaubeubhh h!Usystem_messager_h#}r`(h%]UlevelKh(]h']Usourceh h&]h+]UlineKUtypeUINFOrauh-K]h.hh/]rbhK)rc}rd(hUh#}re(h%]h&]h']h(]h+]uhhh/]rfh8X:Enumerated list start value not ordinal-1: "2" (ordinal 2)rgrh}ri(hUhjcubah!hNubaubh)rj}rk(hUhhhh h!j_h#}rl(h%]UlevelKh(]h']Usourceh h&]h+]UlineKUtypejauh-Khh.hh/]rmhK)rn}ro(hUh#}rp(h%]h&]h']h(]h+]uhjjh/]rqh8X:Enumerated list start value not ordinal-1: "3" (ordinal 3)rrrs}rt(hUhjnubah!hNubaubeUcurrent_sourceruNU decorationrvNUautofootnote_startrwKUnameidsrx}ry(hj hjhh@h jh jh h*h Upython-programming-languagerzh j*hj^hhhhfuh/]r{(h_)r|}r}(hX7.. _Python Programming Language: http://www.python.org/hhhh h!hch#}r~(hXXhttp://www.python.org/h(]rjzah']h%]h&]h+]rh auh-Kh.hh/]ubhehUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh.hU current_linerNUtransform_messagesr]rh)r}r(hUh#}r(h%]UlevelKh(]h']Usourceh h&]h+]UlineKUtypejauh/]rhK)r}r(hUh#}r(h%]h&]h']h(]h+]uhjh/]rh8XAHyperlink target "python programming language" is not referenced.rr}r(hUhjubah!hNubah!j_ubaUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh5NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hfh`j jjjh@h(hX)Excellent. Here's what you need to know.q?hhhhhh7h}q@(h]h]h ]h!]h#]uh%K h&hh]qAh/X)Excellent. Here's what you need to know.qBqC}qD(hh?hh=ubaubcdocutils.nodes compound qE)qF}qG(hUhhhhhUcompoundqHh}qI(h]h]qJUtoctree-wrapperqKah ]h!]h#]uh%Nh&hh]qLcsphinx.addnodes toctree qM)qN}qO(hUhhFhhhUtoctreeqPh}qQ(UnumberedqRKU includehiddenqShX dev/indexqTU titlesonlyqUUglobqVh!]h ]h]h]h#]UentriesqW]qX(NXdev/introductionqYqZNXdev/contributingq[q\NX dev/processesq]q^NX dev/standardsq_q`eUhiddenqaU includefilesqb]qc(hYh[h]h_eUmaxdepthqdKuh%K h]ubaubeubahUU transformerqeNU footnote_refsqf}qgUrefnamesqh}qiUsymbol_footnotesqj]qkUautofootnote_refsql]qmUsymbol_footnote_refsqn]qoU citationsqp]qqh&hU current_lineqrNUtransform_messagesqs]qtUreporterquNUid_startqvKU autofootnotesqw]qxU citation_refsqy}qzUindirect_targetsq{]q|Usettingsq}(cdocutils.frontend Values q~oq}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_classesqNh,NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU 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_sourceqhUgettext_compactqU 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]qUfile_insertion_enabledqˆU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh&h}q(h]h!]h ]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.circuits-3.1.0/docs/build/doctrees/dev/contributing.doctree0000644000014400001440000002434612425011107025026 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X3chat to us on #circuits on the freenode irc networkqXsubmitting bug reportsqNXshare your storyqNXwriting new testsq NX fork circuitsq X pull requestq Xcontributing to circuitsq NXsubmit a **new** issueq Xadding new featuresqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hU2chat-to-us-on-circuits-on-the-freenode-irc-networkqhUsubmitting-bug-reportsqhUshare-your-storyqh Uwriting-new-testsqh U fork-circuitsqh U pull-requestqh Ucontributing-to-circuitsqh Usubmit-a-new-issueqhUadding-new-featuresq uUchildrenq!]q"cdocutils.nodes section q#)q$}q%(U rawsourceq&UUparentq'hUsourceq(X=/home/prologic/work/circuits/docs/source/dev/contributing.rstq)Utagnameq*Usectionq+U attributesq,}q-(Udupnamesq.]Uclassesq/]Ubackrefsq0]Uidsq1]q2haUnamesq3]q4h auUlineq5KUdocumentq6hh!]q7(cdocutils.nodes title q8)q9}q:(h&XContributing to circuitsq;h'h$h(h)h*Utitleqcdocutils.nodes Text q?XContributing to circuitsq@qA}qB(h&h;h'h9ubaubcdocutils.nodes paragraph qC)qD}qE(h&X)Here's how you can contribute to circuitsqFh'h$h(h)h*U paragraphqGh,}qH(h.]h/]h0]h1]h3]uh5Kh6hh!]qIh?X)Here's how you can contribute to circuitsqJqK}qL(h&hFh'hDubaubh#)qM}qN(h&Uh'h$h(h)h*h+h,}qO(h.]h/]h0]h1]qPhah3]qQhauh5Kh6hh!]qR(h8)qS}qT(h&XShare your storyqUh'hMh(h)h*h`_, write more tests that cover more of our code base and submit a `Pull Request `_. Many Thanks!h'hh(h)h*hGh,}q(h.]h/]h0]h1]h3]uh5K$h6hh!]q(h?XlWe're not perfect, and we're still writing more tests to ensure quality code. If you'd like to help, please qq}q(h&XlWe're not perfect, and we're still writing more tests to ensure quality code. If you'd like to help, please h'hubh)q}q(h&X?`Fork circuits `_h,}q(UnameX Fork circuitsUrefuriqX,https://bitbucket.org/circuits/circuits/forkqh1]h0]h.]h/]h3]uh'hh!]qh?X Fork circuitsqɅq}q(h&Uh'hubah*hubcdocutils.nodes target q)q}q(h&X/ U referencedqKh'hh*Utargetqh,}q(Urefurihh1]qhah0]h.]h/]h3]qh auh!]ubh?XA, write more tests that cover more of our code base and submit a qԅq}q(h&XA, write more tests that cover more of our code base and submit a h'hubh)q}q(h&XJ`Pull Request `_h,}q(UnameX Pull RequesthX8https://bitbucket.org/circuits/circuits/pull-request/newqh1]h0]h.]h/]h3]uh'hh!]qh?X Pull Requestq܅q}q(h&Uh'hubah*hubh)q}q(h&X; hKh'hh*hh,}q(Urefurihh1]qhah0]h.]h/]h3]qh auh!]ubh?X. Many Thanks!q䅁q}q(h&X. Many Thanks!h'hubeubeubh#)q}q(h&Uh'h$h(h)h*h+h,}q(h.]h/]h0]h1]qh ah3]qhauh5K*h6hh!]q(h8)q}q(h&XAdding New Featuresqh'hh(h)h*h`_ or h'hh(h)h*U list_itemrh,}r(h.]h/]h0]h1]h3]uh5Nh6hh!]r (hC)r }r (h&XL`Chat to us on #circuits on the FreeNode IRC Network `_r h'jh(h)h*hGh,}r (h.]h/]h0]h1]h3]uh5K1h!]r(h)r}r(h&j h,}r(UnameX3Chat to us on #circuits on the FreeNode IRC NetworkhXhttp://freenode.orgrh1]h0]h.]h/]h3]uh'j h!]rh?X3Chat to us on #circuits on the FreeNode IRC Networkrr}r(h&Uh'jubah*hubh)r}r(h&X hKh'j h*hh,}r(Urefurijh1]rhah0]h.]h/]h3]rhauh!]ubeubhC)r}r(h&Xorrh'jh(h)h*hGh,}r(h.]h/]h0]h1]h3]uh5K3h!]r h?Xorr!r"}r#(h&jh'jubaubeubj)r$}r%(h&XI`Submit a **New** Issue `_r&h'hh(h)h*jh,}r'(h.]h/]h0]h1]h3]uh5Nh6hh!]r(hC)r)}r*(h&j&h'j$h(h)h*hGh,}r+(h.]h/]h0]h1]h3]uh5K5h!]r,(h)r-}r.(h&j&h,}r/(UnameXSubmit a **New** IssuehX-http://bitbucket.org/circuits/circuits/issuesr0h1]h0]h.]h/]h3]uh'j)h!]r1h?XSubmit a **New** Issuer2r3}r4(h&Uh'j-ubah*hubh)r5}r6(h&X0 hKh'j)h*hh,}r7(Urefurij0h1]r8hah0]h.]h/]h3]r9h auh!]ubeubaubeubeubeubah&UU transformerr:NU footnote_refsr;}r<Urefnamesr=}r>Usymbol_footnotesr?]r@Uautofootnote_refsrA]rBUsymbol_footnote_refsrC]rDU citationsrE]rFh6hU current_linerGNUtransform_messagesrH]rIUreporterrJNUid_startrKKU autofootnotesrL]rMU citation_refsrN}rOUindirect_targetsrP]rQUsettingsrR(cdocutils.frontend Values rSorT}rU(Ufootnote_backlinksrVKUrecord_dependenciesrWNU rfc_base_urlrXUhttp://tools.ietf.org/html/rYU tracebackrZUpep_referencesr[NUstrip_commentsr\NU toc_backlinksr]Uentryr^U language_coder_Uenr`U datestampraNU report_levelrbKU _destinationrcNU halt_levelrdKU strip_classesreNh`_q0h,cdocutils.nodes bullet_list q1)q2}q3(h Uh,cdocutils.nodes section q4)q5}q6(h Uh,h4)q7}q8(h Uh,hUsourceq9h(Utagnameq:Usectionq;h!}q<(h#]h)]h%]h$]q=Udevelopment-introductionq>ah*]q?hauUlineq@KUdocumentqAhUchildrenqB]qC(cdocutils.nodes title qD)qE}qF(h XDevelopment IntroductionqGh,h7h9h(h:UtitleqHh!}qI(h#]h)]h%]h$]h*]uh@KhAhhB]qJcdocutils.nodes Text qKXDevelopment IntroductionqLqM}qN(h hGh,hEubaubcdocutils.nodes paragraph qO)qP}qQ(h X&Here's how we do things in circuits...qRh,h7h9h(h:U paragraphqSh!}qT(h#]h)]h%]h$]h*]uh@K hAhhB]qUhKX&Here's how we do things in circuits...qVqW}qX(h hRh,hPubaubh4)qY}qZ(h Uh,h7h9h(h:h;h!}q[(h#]h)]h%]h$]q\U communicationq]ah*]q^hauh@KhAhhB]q_(hD)q`}qa(h X Communicationqbh,hYh9h(h:hHh!}qc(h#]h)]h%]h$]h*]uh@KhAhhB]qdhKX Communicationqeqf}qg(h hbh,h`ubaubh1)qh}qi(h Uh,hYh9h(h:U bullet_listqjh!}qk(UbulletqlX-h$]h%]h#]h)]h*]uh@KhAhhB]qm(h-)qn}qo(h X-`IRC Channel`_ on the `FreeNode IRC Network`_qph,hhh9h(h:U list_itemqqh!}qr(h#]h)]h%]h$]h*]uh@NhAhhB]qshO)qt}qu(h hph,hnh9h(h:hSh!}qv(h#]h)]h%]h$]h*]uh@KhB]qw(cdocutils.nodes reference qx)qy}qz(h X`IRC Channel`_Uresolvedq{Kh,hth:U referenceq|h!}q}(UnameX IRC ChannelUrefuriq~XBhttp://webchat.freenode.net/?randomnick=1&channels=circuits&uio=d4qh$]h%]h#]h)]h*]uhB]qhKX IRC Channelqq}q(h Uh,hyubaubhKX on the qq}q(h X on the h,htubhx)q}q(h X`FreeNode IRC Network`_h{Kh,hth:h|h!}q(UnameXFreeNode IRC Networkh~Xhttp://freenode.netqh$]h%]h#]h)]h*]uhB]qhKXFreeNode IRC Networkqq}q(h Uh,hubaubeubaubh-)q}q(h X`Developer Mailing List`_qh,hhh9h(h:hqh!}q(h#]h)]h%]h$]h*]uh@NhAhhB]qhO)q}q(h hh,hh9h(h:hSh!}q(h#]h)]h%]h$]h*]uh@KhB]qhx)q}q(h hh{Kh,hh:h|h!}q(UnameXDeveloper Mailing Listh~X+http://groups.google.com/group/circuits-devqh$]h%]h#]h)]h*]uhB]qhKXDeveloper Mailing Listqq}q(h Uh,hubaubaubaubh-)q}q(h X`Issue Tracker`_ h,hhh9h(h:hqh!}q(h#]h)]h%]h$]h*]uh@NhAhhB]qhO)q}q(h X`Issue Tracker`_qh,hh9h(h:hSh!}q(h#]h)]h%]h$]h*]uh@KhB]qhx)q}q(h hh{Kh,hh:h|h!}q(UnameX Issue Trackerh~X.https://bitbucket.org/circuits/circuits/issuesqh$]h%]h#]h)]h*]uhB]qhKX Issue Trackerqq}q(h Uh,hubaubaubaubeubcdocutils.nodes note q)q}q(h XIf you are familiar with `IRC `_ and use your own IRC Client then connect to the FreeNode Network and ``/join #circuits``.h,hYh9h(h:Unoteqh!}q(h#]h)]h%]h$]h*]uh@NhAhhB]qhO)q}q(h XIf you are familiar with `IRC `_ and use your own IRC Client then connect to the FreeNode Network and ``/join #circuits``.h,hh9h(h:hSh!}q(h#]h)]h%]h$]h*]uh@KhB]q(hKXIf you are familiar with qq}q(h XIf you are familiar with h,hubhx)q}q(h X9`IRC `_h!}q(UnameXIRCh~X0http://en.wikipedia.org/wiki/Internet_Relay_Chatqh$]h%]h#]h)]h*]uh,hhB]qhKXIRCqÅq}q(h Uh,hubah:h|ubcdocutils.nodes target q)q}q(h X3 U referencedqKh,hh:Utargetqh!}q(Urefurihh$]qUircqah%]h#]h)]h*]qhauhB]ubhKXF and use your own IRC Client then connect to the FreeNode Network and qυq}q(h XF and use your own IRC Client then connect to the FreeNode Network and h,hubcdocutils.nodes literal q)q}q(h X``/join #circuits``h!}q(h#]h)]h%]h$]h*]uh,hhB]qhKX/join #circuitsqׅq}q(h Uh,hubah:UliteralqubhKX.q}q(h X.h,hubeubaubeubh5h4)q}q(h Uh,h7h9h(h:h;h!}q(h#]h)]h%]h$]qUtoolsqah*]qhauh@K0hAhhB]q(hD)q}q(h XToolsqh,hh9h(h:hHh!}q(h#]h)]h%]h$]h*]uh@K0hAhhB]qhKXToolsq酁q}q(h hh,hubaubhO)q}q(h X>We use the following tools to develop circuits and share code:qh,hh9h(h:hSh!}q(h#]h)]h%]h$]h*]uh@K2hAhhB]qhKX>We use the following tools to develop circuits and share code:qq}q(h hh,hubaubh1)q}q(h Uh,hh9h(h:hjh!}q(hlX-h$]h%]h#]h)]h*]uh@K4hAhhB]q(h-)q}q(h X>**Code Sharing:** `Mercurial `_h,hh9h(h:hqh!}q(h#]h)]h%]h$]h*]uh@NhAhhB]qhO)q}q(h X>**Code Sharing:** `Mercurial `_h,hh9h(h:hSh!}q(h#]h)]h%]h$]h*]uh@K4hB]q(cdocutils.nodes strong r)r}r(h X**Code Sharing:**h!}r(h#]h)]h%]h$]h*]uh,hhB]rhKX Code Sharing:rr}r(h Uh,jubah:UstrongrubhKX r }r (h X h,hubhx)r }r (h X,`Mercurial `_h!}r (UnameX Mercurialh~Xhttp://mercurial.selenic.com/rh$]h%]h#]h)]h*]uh,hhB]rhKX Mercurialrr}r(h Uh,j ubah:h|ubh)r}r(h X hKh,hh:hh!}r(Urefurijh$]rU mercurialrah%]h#]h)]h*]rhauhB]ubeubaubh-)r}r(h X**Code Hosting and Bug Reporting:** `BitBucket `_ `GitHub `_ (*Mirror Only*)h,hh9h(h:hqh!}r(h#]h)]h%]h$]h*]uh@NhAhhB]rhO)r}r(h X**Code Hosting and Bug Reporting:** `BitBucket `_ `GitHub `_ (*Mirror Only*)h,jh9h(h:hSh!}r(h#]h)]h%]h$]h*]uh@K6hB]r (j)r!}r"(h X#**Code Hosting and Bug Reporting:**h!}r#(h#]h)]h%]h$]h*]uh,jhB]r$hKXCode Hosting and Bug Reporting:r%r&}r'(h Uh,j!ubah:jubhKX r(}r)(h X h,jubhx)r*}r+(h X6`BitBucket `_h!}r,(UnameX BitBucketh~X'https://bitbucket.org/circuits/circuitsr-h$]h%]h#]h)]h*]uh,jhB]r.hKX BitBucketr/r0}r1(h Uh,j*ubah:h|ubh)r2}r3(h X* hKh,jh:hh!}r4(Urefurij-h$]r5U bitbucketr6ah%]h#]h)]h*]r7hauhB]ubhKX r8}r9(h X h,jubhx)r:}r;(h X0`GitHub `_h!}r<(UnameXGitHubh~X$https://github.com/circuits/circuitsr=h$]h%]h#]h)]h*]uh,jhB]r>hKXGitHubr?r@}rA(h Uh,j:ubah:h|ubh)rB}rC(h X' hKh,jh:hh!}rD(Urefurij=h$]rEUgithubrFah%]h#]h)]h*]rGhauhB]ubhKX (rHrI}rJ(h X (h,jubcdocutils.nodes emphasis rK)rL}rM(h X *Mirror Only*h!}rN(h#]h)]h%]h$]h*]uh,jhB]rOhKX Mirror OnlyrPrQ}rR(h Uh,jLubah:UemphasisrSubhKX)rT}rU(h X)h,jubeubaubh-)rV}rW(h XT**Issue Tracker:** `Issue Tracker `_h,hh9h(h:hqh!}rX(h#]h)]h%]h$]h*]uh@NhAhhB]rYhO)rZ}r[(h XT**Issue Tracker:** `Issue Tracker `_h,jVh9h(h:hSh!}r\(h#]h)]h%]h$]h*]uh@K9hB]r](j)r^}r_(h X**Issue Tracker:**h!}r`(h#]h)]h%]h$]h*]uh,jZhB]rahKXIssue Tracker:rbrc}rd(h Uh,j^ubah:jubhKX re}rf(h X h,jZubhx)rg}rh(h XA`Issue Tracker `_h!}ri(UnameX Issue Trackerh~X.https://bitbucket.org/circuits/circuits/issuesrjh$]h%]h#]h)]h*]uh,jZhB]rkhKX Issue Trackerrlrm}rn(h Uh,jgubah:h|ubh)ro}rp(h X1 hKh,jZh:hh!}rq(Urefurijjh$]rrUid2rsah%]h#]rtX issue trackerruah)]h*]uhB]ubeubaubh-)rv}rw(h XM**Documentation Hosting:** `Read the Docs `_h,hh9h(h:hqh!}rx(h#]h)]h%]h$]h*]uh@NhAhhB]ryhO)rz}r{(h XM**Documentation Hosting:** `Read the Docs `_h,jvh9h(h:hSh!}r|(h#]h)]h%]h$]h*]uh@K;hB]r}(j)r~}r(h X**Documentation Hosting:**h!}r(h#]h)]h%]h$]h*]uh,jzhB]rhKXDocumentation Hosting:rr}r(h Uh,j~ubah:jubhKX r}r(h X h,jzubhx)r}r(h X2`Read the Docs `_h!}r(UnameX Read the Docsh~Xhttp://circuits.readthedocs.orgrh$]h%]h#]h)]h*]uh,jzhB]rhKX Read the Docsrr}r(h Uh,jubah:h|ubh)r}r(h X" hKh,jzh:hh!}r(Urefurijh$]rU read-the-docsrah%]h#]h)]h*]rhauhB]ubeubaubh-)r}r(h XZ**Package Hosting:** `Python Package Index (PyPi) `_h,hh9h(h:hqh!}r(h#]h)]h%]h$]h*]uh@NhAhhB]rhO)r}r(h XZ**Package Hosting:** `Python Package Index (PyPi) `_h,jh9h(h:hSh!}r(h#]h)]h%]h$]h*]uh@K=hB]r(j)r}r(h X**Package Hosting:**h!}r(h#]h)]h%]h$]h*]uh,jhB]rhKXPackage Hosting:rr}r(h Uh,jubah:jubhKX r}r(h X h,jubhx)r}r(h XE`Python Package Index (PyPi) `_h!}r(UnameXPython Package Index (PyPi)h~X$http://pypi.python.org/pypi/circuitsrh$]h%]h#]h)]h*]uh,jhB]rhKXPython Package Index (PyPi)rr}r(h Uh,jubah:h|ubh)r}r(h X' hKh,jh:hh!}r(Urefurijh$]rUpython-package-index-pypirah%]h#]h)]h*]rh auhB]ubeubaubh-)r}r(h XW**Continuous Integration:** `Drone `_h,hh9h(h:hqh!}r(h#]h)]h%]h$]h*]uh@NhAhhB]rhO)r}r(h XW**Continuous Integration:** `Drone `_h,jh9h(h:hSh!}r(h#]h)]h%]h$]h*]uh@K?hB]r(j)r}r(h X**Continuous Integration:**h!}r(h#]h)]h%]h$]h*]uh,jhB]rhKXContinuous Integration:rr}r(h Uh,jubah:jubhKX r}r(h X h,jubhx)r}r(h X;`Drone `_h!}r(UnameXDroneh~X0https://drone.io/bitbucket.org/circuits/circuitsrh$]h%]h#]h)]h*]uh,jhB]rhKXDronerr}r(h Uh,jubah:h|ubh)r}r(h X3 hKh,jh:hh!}r(Urefurijh$]rUdronerah%]h#]h)]h*]rh auhB]ubeubaubeubeubeubh9h(h:h;h!}r(h#]h)]h%]h$]rU standardsrah*]rhauh@KhAhhB]r(hD)r}r(h X Standardsrh,h5h9h(h:hHh!}r(h#]h)]h%]h$]h*]uh@KhAhhB]rhKX Standardsrr}r(h jh,jubaubhO)r}r(h X%We use the following coding standard:rh,h5h9h(h:hSh!}r(h#]h)]h%]h$]h*]uh@KhAhhB]rhKX%We use the following coding standard:rr}r(h jh,jubaubh1)r}r(h Uh,h5h9h(h:hjh!}r(hlX-h$]h%]h#]h)]h*]uh@KhAhhB]rh-)r}r(h X3`pep8 `_ h,jh9h(h:hqh!}r(h#]h)]h%]h$]h*]uh@NhAhhB]rhO)r}r(h X2`pep8 `_rh,jh9h(h:hSh!}r(h#]h)]h%]h$]h*]uh@KhB]r(hx)r}r(h jh!}r(Unamehh~X(http://www.python.org/dev/peps/pep-0008/rh$]h%]h#]h)]h*]uh,jhB]rhKXpep8rr}r(h Uh,jubah:h|ubh)r}r(h X+ hKh,jh:hh!}r(Urefurijh$]rUpep8rah%]h#]rXpep8rah)]h*]uhB]ubeubaubaubhO)r}r(h X3We also lint our codebase with the following tools:rh,h5h9h(h:hSh!}r(h#]h)]h%]h$]h*]uh@K!hAhhB]rhKX3We also lint our codebase with the following tools:r r }r (h jh,jubaubh2hO)r }r (h XePlease ensure your Development IDE or Editor has the above linters and checkers in place and enabled.rh,h5h9h(h:hSh!}r(h#]h)]h%]h$]h*]uh@K'hAhhB]rhKXePlease ensure your Development IDE or Editor has the above linters and checkers in place and enabled.rr}r(h jh,j ubaubhO)r}r(h X:Alternatively you can use the following command line tool:rh,h5h9h(h:hSh!}r(h#]h)]h%]h$]h*]uh@K*hAhhB]rhKX:Alternatively you can use the following command line tool:rr}r(h jh,jubaubh1)r}r(h Uh,h5h9h(h:hjh!}r(hlX-h$]h%]h#]h)]h*]uh@K,hAhhB]rh-)r }r!(h X1`flake8 `_ h,jh9h(h:hqh!}r"(h#]h)]h%]h$]h*]uh@NhAhhB]r#hO)r$}r%(h X/`flake8 `_r&h,j h9h(h:hSh!}r'(h#]h)]h%]h$]h*]uh@K,hB]r((hx)r)}r*(h j&h!}r+(Unamehh~X#https://pypi.python.org/pypi/flake8r,h$]h%]h#]h)]h*]uh,j$hB]r-hKXflake8r.r/}r0(h Uh,j)ubah:h|ubh)r1}r2(h X& hKh,j$h:hh!}r3(Urefurij,h$]r4Uflake8r5ah%]h#]h)]h*]r6hauhB]ubeubaubaubeubh9h(h:hjh!}r7(hlX-h$]h%]h#]h)]h*]uh@K#hAhhB]r8(h-)r9}r:(h X3`pyflakes `_r;h,h2h9h(h:hqh!}r<(h#]h)]h%]h$]h*]uh@NhAhhB]r=hO)r>}r?(h j;h,j9h9h(h:hSh!}r@(h#]h)]h%]h$]h*]uh@K#hB]rA(hx)rB}rC(h j;h!}rD(Unameh h~X%https://pypi.python.org/pypi/pyflakesrEh$]h%]h#]h)]h*]uh,j>hB]rFhKXpyflakesrGrH}rI(h Uh,jBubah:h|ubh)rJ}rK(h X( hKh,j>h:hh!}rL(UrefurijEh$]rMUpyflakesrNah%]h#]h)]h*]rOh auhB]ubeubaubh.h-)rP}rQ(h X6`mccabe `_ h,h2h9h(h:hqh!}rR(h#]h)]h%]h$]h*]uh@NhAhhB]rShO)rT}rU(h X5`mccabe `_rVh,jPh9h(h:hSh!}rW(h#]h)]h%]h$]h*]uh@K%hB]rX(hx)rY}rZ(h jVh!}r[(Unamehh~X)https://pypi.python.org/pypi/mccabe/0.2.1r\h$]h%]h#]h)]h*]uh,jThB]r]hKXmccaber^r_}r`(h Uh,jYubah:h|ubh)ra}rb(h X, hKh,jTh:hh!}rc(Urefurij\h$]rdUmccabereah%]h#]h)]h*]rfhauhB]ubeubaubeubh9h(h:hqh!}rg(h#]h)]h%]h$]h*]uh@NhAhhB]rhhO)ri}rj(h h0h,h.h9h(h:hSh!}rk(h#]h)]h%]h$]h*]uh@K$hB]rl(hx)rm}rn(h h0h!}ro(Unamejh~X!https://pypi.python.org/pypi/pep8rph$]h%]h#]h)]h*]uh,jihB]rqhKXpep8rrrs}rt(h Uh,jmubah:h|ubh)ru}rv(h X$ hKh,jih:hh!}rw(Urefurijph$]rxh'ah%]h#]ryjah)]h*]uhB]ubeubaubhB]rzhO)r{}r|(h Uh!}r}(h#]h)]h%]h$]h*]uh,hhB]r~hKX'Duplicate explicit target name: "pep8".rr}r(h Uh,j{ubah:hSubah:Usystem_messagerubh)r}r(h Uh!}r(h#]UlevelKh$]h%]rjsaUsourceh(h)]h*]UlineKUtypeUINFOruh,jVhB]rhO)r}r(h Uh!}r(h#]h)]h%]h$]h*]uh,jhB]rhKX0Duplicate explicit target name: "issue tracker".rr}r(h Uh,jubah:hSubah:jubeUcurrent_sourcerNU decorationrNUautofootnote_startrKUnameidsr}r(hj6hjhjFh jh jNh Ufreenode-irc-networkrh Udeveloper-mailing-listrh jhh>hjhjhNhjehh]hU issue-trackerrhU irc-channelrhhhhhj5uhB]r(h)r}r(h XG.. _Developer Mailing List: http://groups.google.com/group/circuits-devhKh,hh9h(h:hh!}r(h~hh$]rjah%]h#]h)]h*]rh auh@KhAhhB]ubh)r}r(h XA.. _Issue Tracker: https://bitbucket.org/circuits/circuits/issueshKh,hh9h(h:hh!}r(h~hh$]rjah%]h#]h)]h*]rhauh@KhAhhB]ubh)r}r(h X-.. _FreeNode IRC Network: http://freenode.nethKh,hh9h(h:hh!}r(h~hh$]rjah%]h#]h)]h*]rh auh@KhAhhB]ubh)r}r(h XS.. _IRC Channel: http://webchat.freenode.net/?randomnick=1&channels=circuits&uio=d4hKh,hh9h(h:hh!}r(h~hh$]rjah%]h#]h)]h*]rhauh@KhAhhB]ubh7eh UU transformerrNU footnote_refsr}rUrefnamesr}r(Xfreenode irc network]rhaXdeveloper mailing list]rhaX irc channel]rhyaX issue tracker]rhauUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rhAhU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNhHNUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh(Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixr Uidr Udoctitle_xformr Ustrip_elements_with_classesr NU _config_filesr ]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(jjj6j2jFjBjjjjjNjJh>h7h]hYjjjsjojjjh5jjjjj5j1hhjjhhjjh'jujejauUsubstitution_namesr}rh:hAh!}r(h#]h$]h%]Usourceh(h)]h*]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/dev/processes.doctree0000644000014400001440000007071012425011107024321 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xrunning the testsqNX bug reportsqNX new issueqX pytest-covq X pull requestq Xfeature requestsq NXdevelopment processesq NXscrum agile processq XpytestqX change logqXwriting new codeqNX issue trackerqXnew pull requestqXtoxqX&software development life cycle (sdlc)qNXflake8quUsubstitution_defsq}qUparse_messagesq]q(cdocutils.nodes system_message q)q}q(U rawsourceqUU attributesq}q(Udupnamesq ]UlevelKUidsq!]Ubackrefsq"]q#Uid1q$aUsourceX:/home/prologic/work/circuits/docs/source/dev/processes.rstq%Uclassesq&]Unamesq']UlineKUtypeUINFOq(uUparentq)cdocutils.nodes list_item q*)q+}q,(hXbA `New Pull Request `_ created with the fix. This must contains: - A new or modified unit test. - A patch that implements the new feature ensuring all unit tests pass. - The `Change Log `_ updated. - Appropriate documentation updated.h)cdocutils.nodes bullet_list q-)q.}q/(hUh)cdocutils.nodes section q0)q1}q2(hUh)h0)q3}q4(hUh)hUsourceq5h%Utagnameq6Usectionq7h}q8(h ]h&]h"]h!]q9Udevelopment-processesq:ah']q;h auUlineq]q?(cdocutils.nodes title q@)qA}qB(hXDevelopment ProcessesqCh)h3h5h%h6UtitleqDh}qE(h ]h&]h"]h!]h']uh]qFcdocutils.nodes Text qGXDevelopment ProcessesqHqI}qJ(hhCh)hAubaubcdocutils.nodes paragraph qK)qL}qM(hXWe document all our internal development processes here so you know exactly how we work and what to expect. If you find any issues or problems please let us know!qNh)h3h5h%h6U paragraphqOh}qP(h ]h&]h"]h!]h']uh]qQhGXWe document all our internal development processes here so you know exactly how we work and what to expect. If you find any issues or problems please let us know!qRqS}qT(hhNh)hLubaubh0)qU}qV(hUh)h3h5h%h6h7h}qW(h ]h&]h"]h!]qXU$software-development-life-cycle-sdlcqYah']qZhauh]q[(h@)q\}q](hX&Software Development Life Cycle (SDLC)q^h)hUh5h%h6hDh}q_(h ]h&]h"]h!]h']uh]q`hGX&Software Development Life Cycle (SDLC)qaqb}qc(hh^h)h\ubaubhK)qd}qe(hX5We employ the use of the `SCRUM Agile Process `_ and use our `Issue Tracker`_ to track features, bugs, chores and releases. If you wish to contribute to circuits, please familiarize yourself with SCRUM and `BitBucket `'s Issue Tracker.h)hUh5h%h6hOh}qf(h ]h&]h"]h!]h']uh]qg(hGXWe employ the use of the qhqi}qj(hXWe employ the use of the h)hdubcdocutils.nodes reference qk)ql}qm(hXI`SCRUM Agile Process `_h}qn(UnameXSCRUM Agile ProcessUrefuriqoX0http://en.wikipedia.org/wiki/Scrum_(development)qph!]h"]h ]h&]h']uh)hdh>]qqhGXSCRUM Agile Processqrqs}qt(hUh)hlubah6U referencequubcdocutils.nodes target qv)qw}qx(hX3 U referencedqyKh)hdh6Utargetqzh}q{(Urefurihph!]q|Uscrum-agile-processq}ah"]h ]h&]h']q~h auh>]ubhGX and use our qq}q(hX and use our h)hdubhk)q}q(hX`Issue Tracker`_UresolvedqKh)hdh6huh}q(UnameX Issue TrackerhoX.https://bitbucket.org/circuits/circuits/issuesqh!]h"]h ]h&]h']uh>]qhGX Issue Trackerqq}q(hUh)hubaubhGX to track features, bugs, chores and releases. If you wish to contribute to circuits, please familiarize yourself with SCRUM and qq}q(hX to track features, bugs, chores and releases. If you wish to contribute to circuits, please familiarize yourself with SCRUM and h)hdubcdocutils.nodes title_reference q)q}q(hX$`BitBucket `h}q(h ]h&]h"]h!]h']uh)hdh>]qhGX"BitBucket qq}q(hUh)hubah6Utitle_referencequbhGX's Issue Tracker.qq}q(hX's Issue Tracker.h)hdubeubeubh0)q}q(hUh)h3h5h%h6h7h}q(h ]h&]h"]h!]qU bug-reportsqah']qhauh]q(h@)q}q(hX Bug Reportsqh)hh5h%h6hDh}q(h ]h&]h"]h!]h']uh]qhGX Bug Reportsqq}q(hhh)hubaubh-)q}q(hUh)hh5h%h6U bullet_listqh}q(UbulletqX-h!]h"]h ]h&]h']uh]q(h*)q}q(hXPNew Bug Reports are submitted via: http://bitbucket.org/circuits/circuits/issuesh)hh5h%h6U list_itemqh}q(h ]h&]h"]h!]h']uh]qhK)q}q(hXPNew Bug Reports are submitted via: http://bitbucket.org/circuits/circuits/issuesh)hh5h%h6hOh}q(h ]h&]h"]h!]h']uh]q(hGX#New Bug Reports are submitted via: qq}q(hX#New Bug Reports are submitted via: h)hubhk)q}q(hX-http://bitbucket.org/circuits/circuits/issuesqh}q(Urefurihh!]h"]h ]h&]h']uh)hh>]qhGX-http://bitbucket.org/circuits/circuits/issuesqq}q(hUh)hubah6huubeubaubh*)q}q(hX3Confirmation and Discussion of all New Bug Reports.qh)hh5h%h6hh}q(h ]h&]h"]h!]h']uh]qhK)q}q(hhh)hh5h%h6hOh}q(h ]h&]h"]h!]h']uh]qhGX3Confirmation and Discussion of all New Bug Reports.q̅q}q(hhh)hubaubaubh*)q}q(hX;Once confirmed, a new Bug is raised in our `Issue Tracker`_qh)hh5h%h6hh}q(h ]h&]h"]h!]h']uh]qhK)q}q(hhh)hh5h%h6hOh}q(h ]h&]h"]h!]h']uh]q(hGX+Once confirmed, a new Bug is raised in our q؅q}q(hX+Once confirmed, a new Bug is raised in our h)hubhk)q}q(hX`Issue Tracker`_hKh)hh6huh}q(UnameX Issue Trackerhohh!]h"]h ]h&]h']uh>]qhGX Issue Trackerq߅q}q(hUh)hubaubeubaubh*)q}q(hX`An appropriate milestone will be set (*depending on current milestone's schedule and resources*)qh)hh5h%h6hh}q(h ]h&]h"]h!]h']uh]qhK)q}q(hhh)hh5h%h6hOh}q(h ]h&]h"]h!]h']uh]q(hGX&An appropriate milestone will be set (q녁q}q(hX&An appropriate milestone will be set (h)hubcdocutils.nodes emphasis q)q}q(hX9*depending on current milestone's schedule and resources*h}q(h ]h&]h"]h!]h']uh)hh>]qhGX7depending on current milestone's schedule and resourcesqq}q(hUh)hubah6UemphasisqubhGX)q}q(hX)h)hubeubaubh*)q}q(hX:A unit test developed that demonstrates the bug's failure.qh)hh5h%h6hh}q(h ]h&]h"]h!]h']uh]qhK)q}q(hhh)hh5h%h6hOh}r(h ]h&]h"]h!]h']uh]rhGX:A unit test developed that demonstrates the bug's failure.rr}r(hhh)hubaubaubh*)r}r(hX?A fix developed that passes the unit test and breaks no others.rh)hh5h%h6hh}r(h ]h&]h"]h!]h']uh]r hK)r }r (hjh)jh5h%h6hOh}r (h ]h&]h"]h!]h']uh]r hGX?A fix developed that passes the unit test and breaks no others.rr}r(hjh)j ubaubaubh*)r}r(hXUA `New Pull Request `_ created with the fix. This must contains: - A new or modified unit test. - A patch that fixes the bug ensuring all unit tests pass. - The `Change Log `_ updated. - Appropriate documentation updated.h)hh5h%h6hh}r(h ]h&]h"]h!]h']uh]r(hK)r}r(hXfA `New Pull Request `_ created with the fix.h)jh5h%h6hOh}r(h ]h&]h"]h!]h']uh]r(hGXA rr}r(hXA h)jubhk)r}r(hXN`New Pull Request `_h}r(UnameXNew Pull RequesthoX8https://bitbucket.org/circuits/circuits/pull-request/newrh!]h"]h ]h&]h']uh)jh>]r hGXNew Pull Requestr!r"}r#(hUh)jubah6huubhv)r$}r%(hX; hyKh)jh6hzh}r&(Urefurijh!]r'Unew-pull-requestr(ah"]h ]h&]h']r)hauh>]ubhGX created with the fix.r*r+}r,(hX created with the fix.h)jubeubhK)r-}r.(hXThis must contains: - A new or modified unit test. - A patch that fixes the bug ensuring all unit tests pass. - The `Change Log `_ updated. - Appropriate documentation updated.h)jh5h%h6hOh}r/(h ]h&]h"]h!]h']uh]r0(hGXtThis must contains: - A new or modified unit test. - A patch that fixes the bug ensuring all unit tests pass. - The r1r2}r3(hXtThis must contains: - A new or modified unit test. - A patch that fixes the bug ensuring all unit tests pass. - The h)j-ubhk)r4}r5(hXK`Change Log `_h}r6(UnameX Change LoghoX;https://bitbucket.org/circuits/circuits/src/tip/CHANGES.rstr7h!]h"]h ]h&]h']uh)j-h>]r8hGX Change Logr9r:}r;(hUh)j4ubah6huubhv)r<}r=(hX> hyKh)j-h6hzh}r>(Urefurij7h!]r?U change-logr@ah"]h ]h&]h']rAhauh>]ubhGX. updated. - Appropriate documentation updated.rBrC}rD(hX. updated. - Appropriate documentation updated.h)j-ubeubeubh*)rE}rF(hXThe `Pull Request `_ is reviewed and approved by at least two other developers. h)hh5h%h6hh}rG(h ]h&]h"]h!]h']uh]rHhK)rI}rJ(hXThe `Pull Request `_ is reviewed and approved by at least two other developers.h)jEh5h%h6hOh}rK(h ]h&]h"]h!]h']uh]rL(hGXThe rMrN}rO(hXThe h)jIubhk)rP}rQ(hXF`Pull Request `_h}rR(UnameX Pull RequesthoX4https://bitbucket.org/circuits/circuits/pull-requestrSh!]h"]h ]h&]h']uh)jIh>]rThGX Pull RequestrUrV}rW(hUh)jPubah6huubhv)rX}rY(hX7 hyKh)jIh6hzh}rZ(UrefurijSh!]r[U pull-requestr\ah"]h ]h&]h']r]h auh>]ubhGX; is reviewed and approved by at least two other developers.r^r_}r`(hX; is reviewed and approved by at least two other developers.h)jIubeubaubeubeubh1h0)ra}rb(hUh)h3h5h%h6h7h}rc(h ]h&]h"]h!]rdUwriting-new-codereah']rfhauh]rg(h@)rh}ri(hXWriting new Coderjh)jah5h%h6hDh}rk(h ]h&]h"]h!]h']uh]rlhGXWriting new Codermrn}ro(hjjh)jhubaubh-)rp}rq(hUh)jah5h%h6hh}rr(hX-h!]h"]h ]h&]h']uh]rs(h*)rt}ru(hXJSubmit a `New Issue `_rvh)jph5h%h6hh}rw(h ]h&]h"]h!]h']uh]rxhK)ry}rz(hjvh)jth5h%h6hOh}r{(h ]h&]h"]h!]h']uh]r|(hGX Submit a r}r~}r(hX Submit a h)jyubhk)r}r(hXA`New Issue `_h}r(UnameX New IssuehoX2https://bitbucket.org/circuits/circuits/issues/newrh!]h"]h ]h&]h']uh)jyh>]rhGX New Issuerr}r(hUh)jubah6huubhv)r}r(hX5 hyKh)jyh6hzh}r(Urefurijh!]rU new-issuerah"]h ]h&]h']rhauh>]ubeubaubh*)r}r(hXWrite your code.rh)jph5h%h6hh}r(h ]h&]h"]h!]h']uh]rhK)r}r(hjh)jh5h%h6hOh}r(h ]h&]h"]h!]h']uh]rhGXWrite your code.rr}r(hjh)jubaubaubh*)r}r(hXJUse `flake8 `_ to ensure code quality.rh)jph5h%h6hh}r(h ]h&]h"]h!]h']uh]rhK)r}r(hjh)jh5h%h6hOh}r(h ]h&]h"]h!]h']uh]r(hGXUse rr}r(hXUse h)jubhk)r}r(hX.`flake8 `_h}r(UnamehhoX"http://pypi.python.org/pypi/flake8rh!]h"]h ]h&]h']uh)jh>]rhGXflake8rr}r(hUh)jubah6huubhv)r}r(hX% hyKh)jh6hzh}r(Urefurijh!]rUflake8rah"]h ]h&]h']rhauh>]ubhGX to ensure code quality.rr}r(hX to ensure code quality.h)jubeubaubh*)r}r(hXRun the tests:: $ tox h)jph5h%h6hh}r(h ]h&]h"]h!]h']uh]r(hK)r}r(hXRun the tests::h)jh5h%h6hOh}r(h ]h&]h"]h!]h']uh]rhGXRun the tests:rr}r(hXRun the tests:h)jubaubcdocutils.nodes literal_block r)r}r(hX$ toxh)jh6U literal_blockrh}r(U xml:spacerUpreserverh!]h"]h ]h&]h']uh]rhGX$ toxrr}r(hUh)jubaubeubh*)r}r(hXCEnsure any new or modified code does not break existing unit tests.rh)jph5h%h6hh}r(h ]h&]h"]h!]h']uh]rhK)r}r(hjh)jh5h%h6hOh}r(h ]h&]h"]h!]h']uh]rhGXCEnsure any new or modified code does not break existing unit tests.rr}r(hjh)jubaubaubh*)r}r(hX1Update any relevant doc strings or documentation.rh)jph5h%h6hh}r(h ]h&]h"]h!]h']uh]rhK)r}r(hjh)jh5h%h6hOh}r(h ]h&]h"]h!]h']uh]rhGX1Update any relevant doc strings or documentation.rr}r(hjh)jubaubaubh*)r}r(hX_Update the `Change Log `_ updated.rh)jph5h%h6hh}r(h ]h&]h"]h!]h']uh]rhK)r}r(hjh)jh5h%h6hOh}r(h ]h&]h"]h!]h']uh]r(hGX Update the rr}r(hX Update the h)jubhk)r}r(hXK`Change Log `_h}r(UnameX Change LoghoX;https://bitbucket.org/circuits/circuits/src/tip/CHANGES.rstrh!]h"]h ]h&]h']uh)jh>]rhGX Change Logrr}r(hUh)jubah6huubhv)r}r(hX> hyKh)jh6hzh}r(Urefurijh!]rUid4rah"]h ]rX change lograh&]h']uh>]ubhGX updated.rr}r(hX updated.h)jubeubaubh*)r}r(hXZSubmit a `New Pull Request `_. h)jph5h%h6hh}r(h ]h&]h"]h!]h']uh]rhK)r}r(hXXSubmit a `New Pull Request `_.h)jh5h%h6hOh}r (h ]h&]h"]h!]h']uh]r (hGX Submit a r r }r (hX Submit a h)jubhk)r}r(hXN`New Pull Request `_h}r(UnameXNew Pull RequesthoX8https://bitbucket.org/circuits/circuits/pull-request/newrh!]h"]h ]h&]h']uh)jh>]rhGXNew Pull Requestrr}r(hUh)jubah6huubhv)r}r(hX; hyKh)jh6hzh}r(Urefurijh!]rUid5rah"]h ]rXnew pull requestrah&]h']uh>]ubhGX.r}r(hX.h)jubeubaubeubeubh0)r}r (hUh)h3h5h%h6h7h}r!(h ]h&]h"]h!]r"Urunning-the-testsr#ah']r$hauh]r%(h@)r&}r'(hXRunning the Testsr(h)jh5h%h6hDh}r)(h ]h&]h"]h!]h']uh]r*hGXRunning the Testsr+r,}r-(hj(h)j&ubaubhK)r.}r/(hX7To run the tests you will need the following installed:r0h)jh5h%h6hOh}r1(h ]h&]h"]h!]h']uh]r2hGX7To run the tests you will need the following installed:r3r4}r5(hj0h)j.ubaubh-)r6}r7(hUh)jh5h%h6hh}r8(hX-h!]h"]h ]h&]h']uh]r9(h*)r:}r;(hX7`tox `_ installed as well asr<h)j6h5h%h6hh}r=(h ]h&]h"]h!]h']uh]r>hK)r?}r@(hj<h)j:h5h%h6hOh}rA(h ]h&]h"]h!]h']uh]rB(hk)rC}rD(hX"`tox `_h}rE(UnamehhoXhttp://codespeak.net/tox/rFh!]h"]h ]h&]h']uh)j?h>]rGhGXtoxrHrI}rJ(hUh)jCubah6huubhv)rK}rL(hX hyKh)j?h6hzh}rM(UrefurijFh!]rNUtoxrOah"]h ]h&]h']rPhauh>]ubhGX installed as well asrQrR}rS(hX installed as well ash)j?ubeubaubh*)rT}rU(hX6`pytest-cov `_rVh)j6h5h%h6hh}rW(h ]h&]h"]h!]h']uh]rXhK)rY}rZ(hjVh)jTh5h%h6hOh}r[(h ]h&]h"]h!]h']uh]r\(hk)r]}r^(hjVh}r_(Unameh hoX&http://pypi.python.org/pypi/pytest-covr`h!]h"]h ]h&]h']uh)jYh>]rahGX pytest-covrbrc}rd(hUh)j]ubah6huubhv)re}rf(hX) hyKh)jYh6hzh}rg(Urefurij`h!]rhU pytest-covriah"]h ]h&]h']rjh auh>]ubeubaubh*)rk}rl(hX&`pytest `_ h)j6h5h%h6hh}rm(h ]h&]h"]h!]h']uh]rnhK)ro}rp(hX%`pytest `_rqh)jkh5h%h6hOh}rr(h ]h&]h"]h!]h']uh]rs(hk)rt}ru(hjqh}rv(UnamehhoXhttp://pytest.org/latest/rwh!]h"]h ]h&]h']uh)joh>]rxhGXpytestryrz}r{(hUh)jtubah6huubhv)r|}r}(hX hyKh)joh6hzh}r~(Urefurijwh!]rUpytestrah"]h ]h&]h']rhauh>]ubeubaubeubhK)r}r(hX>All of these can be installed via ``easy_install`` or ``pip``.rh)jh5h%h6hOh}r(h ]h&]h"]h!]h']uh]r(hGX"All of these can be installed via rr}r(hX"All of these can be installed via h)jubcdocutils.nodes literal r)r}r(hX``easy_install``h}r(h ]h&]h"]h!]h']uh)jh>]rhGX easy_installrr}r(hUh)jubah6UliteralrubhGX or rr}r(hX or h)jubj)r}r(hX``pip``h}r(h ]h&]h"]h!]h']uh)jh>]rhGXpiprr}r(hUh)jubah6jubhGX.r}r(hX.h)jubeubhK)r}r(hXPlease also ensure that you you have all supported versions of Python that circuits supports installed in your local environment.rh)jh5h%h6hOh}r(h ]h&]h"]h!]h']uh]rhGXPlease also ensure that you you have all supported versions of Python that circuits supports installed in your local environment.rr}r(hjh)jubaubhK)r}r(hXTo run the tests::rh)jh5h%h6hOh}r(h ]h&]h"]h!]h']uh]rhGXTo run the tests:rr}r(hXTo run the tests:h)jubaubj)r}r(hX$ toxh)jh5h%h6jh}r(jjh!]h"]h ]h&]h']uh]rhGX$ toxrr}r(hUh)jubaubeubeubh5h%h6h7h}r(h ]h&]h"]h!]rUfeature-requestsrah']rh auh]r(h@)r}r(hXFeature Requestsrh)h1h5h%h6hDh}r(h ]h&]h"]h!]h']uh]rhGXFeature Requestsrr}r(hjh)jubaubh.eubh5h%h6hh}r(hX-h!]h"]h ]h&]h']uh]r(h*)r}r(hXUNew Feature Requests are submitted via: http://bitbucket.org/circuits/circuits/issuesh)h.h5h%h6hh}r(h ]h&]h"]h!]h']uh]rhK)r}r(hXUNew Feature Requests are submitted via: http://bitbucket.org/circuits/circuits/issuesh)jh5h%h6hOh}r(h ]h&]h"]h!]h']uh]r(hGX(New Feature Requests are submitted via: rr}r(hX(New Feature Requests are submitted via: h)jubhk)r}r(hX-http://bitbucket.org/circuits/circuits/issuesrh}r(Urefurijh!]h"]h ]h&]h']uh)jh>]rhGX-http://bitbucket.org/circuits/circuits/issuesrr}r(hUh)jubah6huubeubaubh*)r}r(hX8Confirmation and Discussion of all New Feature Requests.rh)h.h5h%h6hh}r(h ]h&]h"]h!]h']uh]rhK)r}r(hjh)jh5h%h6hOh}r(h ]h&]h"]h!]h']uh]rhGX8Confirmation and Discussion of all New Feature Requests.rr}r(hjh)jubaubaubh*)r}r(hX?Once confirmed, a new Feature is raised in our `Issue Tracker`_rh)h.h5h%h6hh}r(h ]h&]h"]h!]h']uh]rhK)r}r(hjh)jh5h%h6hOh}r(h ]h&]h"]h!]h']uh]r(hGX/Once confirmed, a new Feature is raised in our rr}r(hX/Once confirmed, a new Feature is raised in our h)jubhk)r}r(hX`Issue Tracker`_hKh)jh6huh}r(UnameX Issue Trackerhohh!]h"]h ]h&]h']uh>]rhGX Issue Trackerrr}r(hUh)jubaubeubaubh*)r}r(hX`An appropriate milestone will be set (*depending on current milestone's schedule and resources*)rh)h.h5h%h6hh}r(h ]h&]h"]h!]h']uh]rhK)r}r(hjh)jh5h%h6hOh}r(h ]h&]h"]h!]h']uh]r(hGX&An appropriate milestone will be set (rr}r(hX&An appropriate milestone will be set (h)jubh)r}r(hX9*depending on current milestone's schedule and resources*h}r(h ]h&]h"]h!]h']uh)jh>]rhGX7depending on current milestone's schedule and resourcesrr}r (hUh)jubah6hubhGX)r }r (hX)h)jubeubaubh*)r }r (hX8A unit test developed that demonstrates the new feature.rh)h.h5h%h6hh}r(h ]h&]h"]h!]h']uh]rhK)r}r(hjh)j h5h%h6hOh}r(h ]h&]h"]h!]h']uh]rhGX8A unit test developed that demonstrates the new feature.rr}r(hjh)jubaubaubh*)r}r(hXIThe new feature developed that passes the unit test and breaks no others.rh)h.h5h%h6hh}r(h ]h&]h"]h!]h']uh]rhK)r}r(hjh)jh5h%h6hOh}r(h ]h&]h"]h!]h']uh]r hGXIThe new feature developed that passes the unit test and breaks no others.r!r"}r#(hjh)jubaubaubh+h*)r$}r%(hXThe `Pull Request `_ is reviewed and approved by at least two other developers. h)h.h5h%h6hh}r&(h ]h&]h"]h!]h']uh]r'hK)r(}r)(hXThe `Pull Request `_ is reviewed and approved by at least two other developers.h)j$h5h%h6hOh}r*(h ]h&]h"]h!]h']uh]r+(hGXThe r,r-}r.(hXThe h)j(ubhk)r/}r0(hXF`Pull Request `_h}r1(UnameX Pull RequesthoX4https://bitbucket.org/circuits/circuits/pull-requestr2h!]h"]h ]h&]h']uh)j(h>]r3hGX Pull Requestr4r5}r6(hUh)j/ubah6huubhv)r7}r8(hX7 hyKh)j(h6hzh}r9(Urefurij2h!]r:Uid3r;ah"]h ]r<X pull requestr=ah&]h']uh>]ubhGX; is reviewed and approved by at least two other developers.r>r?}r@(hX; is reviewed and approved by at least two other developers.h)j(ubeubaubeubh5h%h6hh}rA(h ]h&]h"]h!]h']uh]rB(hK)rC}rD(hXfA `New Pull Request `_ created with the fix.h)h+h5h%h6hOh}rE(h ]h&]h"]h!]h']uh]rF(hGXA rGrH}rI(hXA h)jCubhk)rJ}rK(hXN`New Pull Request `_h}rL(UnameXNew Pull RequesthoX8https://bitbucket.org/circuits/circuits/pull-request/newrMh!]h"]h ]h&]h']uh)jCh>]rNhGXNew Pull RequestrOrP}rQ(hUh)jJubah6huubhv)rR}rS(hX; hyKh)jCh6hzh}rT(UrefurijMh!]rUh$ah"]h ]rVXnew pull requestrWah&]h']uh>]ubhGX created with the fix.rXrY}rZ(hX created with the fix.h)jCubeubhK)r[}r\(hXThis must contains: - A new or modified unit test. - A patch that implements the new feature ensuring all unit tests pass. - The `Change Log `_ updated. - Appropriate documentation updated.h)h+h5h%h6hOh}r](h ]h&]h"]h!]h']uh]r^(hGXThis must contains: - A new or modified unit test. - A patch that implements the new feature ensuring all unit tests pass. - The r_r`}ra(hXThis must contains: - A new or modified unit test. - A patch that implements the new feature ensuring all unit tests pass. - The h)j[ubhk)rb}rc(hXK`Change Log `_h}rd(UnameX Change LoghoX;https://bitbucket.org/circuits/circuits/src/tip/CHANGES.rstreh!]h"]h ]h&]h']uh)j[h>]rfhGX Change Logrgrh}ri(hUh)jbubah6huubhv)rj}rk(hX> hyKh)j[h6hzh}rl(Urefurijeh!]rmUid2rnah"]h ]roX change logrpah&]h']uh>]ubhGX. updated. - Appropriate documentation updated.rqrr}rs(hX. updated. - Appropriate documentation updated.h)j[ubeubeubh>]rthK)ru}rv(hUh}rw(h ]h&]h"]h!]h']uh)hh>]rxhGX3Duplicate explicit target name: "new pull request".ryrz}r{(hUh)juubah6hOubah6Usystem_messager|ubh)r}}r~(hUh}r(h ]UlevelKh!]h"]rjnaUsourceh%h&]h']UlineKUtypeh(uh)h+h>]rhK)r}r(hUh}r(h ]h&]h"]h!]h']uh)j}h>]rhGX-Duplicate explicit target name: "change log".rr}r(hUh)jubah6hOubah6j|ubh)r}r(hUh}r(h ]UlevelKh!]h"]rj;aUsourceh%h&]h']UlineKUtypeh(uh)j$h>]rhK)r}r(hUh}r(h ]h&]h"]h!]h']uh)jh>]rhGX/Duplicate explicit target name: "pull request".rr}r(hUh)jubah6hOubah6j|ubh)r}r(hUh}r(h ]UlevelKh!]h"]rjaUsourceh%h&]h']UlineKUtypeh(uh)jh>]rhK)r}r(hUh}r(h ]h&]h"]h!]h']uh)jh>]rhGX-Duplicate explicit target name: "change log".rr}r(hUh)jubah6hOubah6j|ubh)r}r(hUh}r(h ]UlevelKh!]h"]rjaUsourceh%h&]h']UlineKUtypeh(uh)jh>]rhK)r}r(hUh}r(h ]h&]h"]h!]h']uh)jh>]rhGX3Duplicate explicit target name: "new pull request".rr}r(hUh)jubah6hOubah6j|ubeUcurrent_sourcerNU decorationrNUautofootnote_startrKUnameidsr}r(hj#hhhjh jih j\h jh h:h h}hjhj@hjehU issue-trackerrhj(hjOhhYhjuh>]r(hv)r}r(hXA.. _Issue Tracker: https://bitbucket.org/circuits/circuits/issueshyKh)hh5h%h6hzh}r(hohh!]rjah"]h ]h&]h']rhauh]ubh3ehUU transformerrNU footnote_refsr}rUrefnamesr}rX issue tracker]r(hhjesUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh=hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNhDNUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh%Ugettext_compactrU generatorr NUdump_internalsr NU smart_quotesr U pep_base_urlr Uhttp://www.python.org/dev/peps/r Usyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(jOjKj;j7h:h3jjh}hwjejajjjjjnjjjh1hYhUh$jRjjj\jXj(j$jj|j#jjjjijehhj@j<uUsubstitution_namesr}rh6h=h}r(h ]h!]h"]Usourceh%h&]h']uU footnotesr]r Urefidsr!}r"ub.circuits-3.1.0/docs/build/doctrees/dev/standards.doctree0000644000014400001440000002551112425011107024275 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X unit testsqNXdevelopment standardsqNXpep257qXrevision historyq NXpep8q Xlimiting cyclomatic complexityq X coding styleq NXcyclomatic complexityq NuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hU unit-testsqhUdevelopment-standardsqhUpep257qh Urevision-historyqh Upep8qh Ulimiting-cyclomatic-complexityqh U coding-styleqh Ucyclomatic-complexityquUchildrenq]q cdocutils.nodes section q!)q"}q#(U rawsourceq$UUparentq%hUsourceq&X:/home/prologic/work/circuits/docs/source/dev/standards.rstq'Utagnameq(Usectionq)U attributesq*}q+(Udupnamesq,]Uclassesq-]Ubackrefsq.]Uidsq/]q0haUnamesq1]q2hauUlineq3KUdocumentq4hh]q5(cdocutils.nodes title q6)q7}q8(h$XDevelopment Standardsq9h%h"h&h'h(Utitleq:h*}q;(h,]h-]h.]h/]h1]uh3Kh4hh]qq?}q@(h$h9h%h7ubaubcdocutils.nodes paragraph qA)qB}qC(h$X+We use the following development standards:qDh%h"h&h'h(U paragraphqEh*}qF(h,]h-]h.]h/]h1]uh3Kh4hh]qGh=X+We use the following development standards:qHqI}qJ(h$hDh%hBubaubh!)qK}qL(h$Uh%h"h&h'h(h)h*}qM(h,]h-]h.]h/]qNhah1]qOh auh3K h4hh]qP(h6)qQ}qR(h$XCyclomatic ComplexityqSh%hKh&h'h(h:h*}qT(h,]h-]h.]h/]h1]uh3K h4hh]qUh=XCyclomatic ComplexityqVqW}qX(h$hSh%hQubaubcdocutils.nodes bullet_list qY)qZ}q[(h$Uh%hKh&h'h(U bullet_listq\h*}q](Ubulletq^X-h/]h.]h,]h-]h1]uh3K h4hh]q_cdocutils.nodes list_item q`)qa}qb(h$XCode Complexity shall not exceed ``10`` See: `Limiting Cyclomatic Complexity `_ h%hZh&h'h(U list_itemqch*}qd(h,]h-]h.]h/]h1]uh3Nh4hh]qe(hA)qf}qg(h$X'Code Complexity shall not exceed ``10``h%hah&h'h(hEh*}qh(h,]h-]h.]h/]h1]uh3K h]qi(h=X!Code Complexity shall not exceed qjqk}ql(h$X!Code Complexity shall not exceed h%hfubcdocutils.nodes literal qm)qn}qo(h$X``10``h*}qp(h,]h-]h.]h/]h1]uh%hfh]qqh=X10qrqs}qt(h$Uh%hnubah(UliteralquubeubhA)qv}qw(h$XSee: `Limiting Cyclomatic Complexity `_h%hah&h'h(hEh*}qx(h,]h-]h.]h/]h1]uh3K h]qy(h=XSee: qzq{}q|(h$XSee: h%hvubcdocutils.nodes reference q})q~}q(h$X}`Limiting Cyclomatic Complexity `_h*}q(UnameXLimiting Cyclomatic ComplexityUrefuriqXYhttp://en.wikipedia.org/wiki/Cyclomatic_complexity#Limiting_complexity_during_developmentqh/]h.]h,]h-]h1]uh%hvh]qh=XLimiting Cyclomatic Complexityqq}q(h$Uh%h~ubah(U referencequbcdocutils.nodes target q)q}q(h$X\ U referencedqKh%hvh(Utargetqh*}q(Urefurihh/]qhah.]h,]h-]h1]qh auh]ubeubeubaubeubh!)q}q(h$Uh%h"h&h'h(h)h*}q(h,]h-]h.]h/]qhah1]qh auh3Kh4hh]q(h6)q}q(h$X Coding Styleqh%hh&h'h(h:h*}q(h,]h-]h.]h/]h1]uh3Kh4hh]qh=X Coding Styleqq}q(h$hh%hubaubhY)q}q(h$Uh%hh&h'h(h\h*}q(h^X-h/]h.]h,]h-]h1]uh3Kh4hh]qh`)q}q(h$X]Code shall confirm to the `PEP8 `_ Style Guide. h%hh&h'h(hch*}q(h,]h-]h.]h/]h1]uh3Nh4hh]qhA)q}q(h$X\Code shall confirm to the `PEP8 `_ Style Guide.h%hh&h'h(hEh*}q(h,]h-]h.]h/]h1]uh3Kh]q(h=XCode shall confirm to the qq}q(h$XCode shall confirm to the h%hubh})q}q(h$X5`PEP8 `_h*}q(UnameXPEP8hX+http://legacy.python.org/dev/peps/pep-0008/qh/]h.]h,]h-]h1]uh%hh]qh=XPEP8qq}q(h$Uh%hubah(hubh)q}q(h$X. hKh%hh(hh*}q(Urefurihh/]qhah.]h,]h-]h1]qh auh]ubh=X Style Guide.qq}q(h$X Style Guide.h%hubeubaubaubcdocutils.nodes note q)q}q(h$X%This includes the 79 character limit!qh%hh&h'h(Unoteqh*}q(h,]h-]h.]h/]h1]uh3Nh4hh]qhA)q}q(h$hh%hh&h'h(hEh*}q(h,]h-]h.]h/]h1]uh3Kh]qh=X%This includes the 79 character limit!qȅq}q(h$hh%hubaubaubhY)q}q(h$Uh%hh&h'h(h\h*}q(h^X-h/]h.]h,]h-]h1]uh3Kh4hh]qh`)q}q(h$XeDoc Strings shall confirm to the `PEP257 `_ Convention. h%hh&h'h(hch*}q(h,]h-]h.]h/]h1]uh3Nh4hh]qhA)q}q(h$XdDoc Strings shall confirm to the `PEP257 `_ Convention.h%hh&h'h(hEh*}q(h,]h-]h.]h/]h1]uh3Kh]q(h=X!Doc Strings shall confirm to the qׅq}q(h$X!Doc Strings shall confirm to the h%hubh})q}q(h$X7`PEP257 `_h*}q(UnameXPEP257hX+http://legacy.python.org/dev/peps/pep-0257/qh/]h.]h,]h-]h1]uh%hh]qh=XPEP257q߅q}q(h$Uh%hubah(hubh)q}q(h$X. hKh%hh(hh*}q(Urefurihh/]qhah.]h,]h-]h1]qhauh]ubh=X Convention.q煁q}q(h$X Convention.h%hubeubaubaubh)q}q(h$XArguments, Keyword Arguments, Return and Exceptions must be documented with the appropriate Sphinx`Python Domain `_.h%hh&h'h(hh*}q(h,]h-]h.]h/]h1]uh3Nh4hh]qhA)q}q(h$XArguments, Keyword Arguments, Return and Exceptions must be documented with the appropriate Sphinx`Python Domain `_.h%hh&h'h(hEh*}q(h,]h-]h.]h/]h1]uh3Kh]q(h=XrArguments, Keyword Arguments, Return and Exceptions must be documented with the appropriate Sphinx`Python Domain `_.qq}q(h$X>`_.h%hubeubaubeubh!)r}r(h$Uh%h"h&h'h(h)h*}r(h,]h-]h.]h/]rhah1]rh auh3Kh4hh]r(h6)r}r(h$XRevision Historyrh%jh&h'h(h:h*}r (h,]h-]h.]h/]h1]uh3Kh4hh]r h=XRevision Historyr r }r (h$jh%jubaubhY)r}r(h$Uh%jh&h'h(h\h*}r(h^X-h/]h.]h,]h-]h1]uh3K h4hh]r(h`)r}r(h$XCommits shall be small tangible pieces of work. - Each commit must be concise and manageable. - Large changes are to be done over smaller commits.h%jh&h'h(hch*}r(h,]h-]h.]h/]h1]uh3Nh4hh]rhA)r}r(h$XCommits shall be small tangible pieces of work. - Each commit must be concise and manageable. - Large changes are to be done over smaller commits.rh%jh&h'h(hEh*}r(h,]h-]h.]h/]h1]uh3K h]rh=XCommits shall be small tangible pieces of work. - Each commit must be concise and manageable. - Large changes are to be done over smaller commits.rr}r(h$jh%jubaubaubh`)r}r(h$X#There shall be no commit squashing.r h%jh&h'h(hch*}r!(h,]h-]h.]h/]h1]uh3Nh4hh]r"hA)r#}r$(h$j h%jh&h'h(hEh*}r%(h,]h-]h.]h/]h1]uh3K#h]r&h=X#There shall be no commit squashing.r'r(}r)(h$j h%j#ubaubaubh`)r*}r+(h$X*Rebase your changes as often as you can. h%jh&h'h(hch*}r,(h,]h-]h.]h/]h1]uh3Nh4hh]r-hA)r.}r/(h$X(Rebase your changes as often as you can.r0h%j*h&h'h(hEh*}r1(h,]h-]h.]h/]h1]uh3K$h]r2h=X(Rebase your changes as often as you can.r3r4}r5(h$j0h%j.ubaubaubeubeubh!)r6}r7(h$Uh%h"h&h'h(h)h*}r8(h,]h-]h.]h/]r9hah1]r:hauh3K(h4hh]r;(h6)r<}r=(h$X Unit Testsr>h%j6h&h'h(h:h*}r?(h,]h-]h.]h/]h1]uh3K(h4hh]r@h=X Unit TestsrArB}rC(h$j>h%j<ubaubhY)rD}rE(h$Uh%j6h&h'h(h\h*}rF(h^X-h/]h.]h,]h-]h1]uh3K*h4hh]rGh`)rH}rI(h$X}Every new feature and bug fix must be accompanied with a unit test. (*The only exception to this are minor trivial changes*).h%jDh&h'h(hch*}rJ(h,]h-]h.]h/]h1]uh3Nh4hh]rKhA)rL}rM(h$X}Every new feature and bug fix must be accompanied with a unit test. (*The only exception to this are minor trivial changes*).h%jHh&h'h(hEh*}rN(h,]h-]h.]h/]h1]uh3K*h]rO(h=XEEvery new feature and bug fix must be accompanied with a unit test. (rPrQ}rR(h$XEEvery new feature and bug fix must be accompanied with a unit test. (h%jLubcdocutils.nodes emphasis rS)rT}rU(h$X6*The only exception to this are minor trivial changes*h*}rV(h,]h-]h.]h/]h1]uh%jLh]rWh=X4The only exception to this are minor trivial changesrXrY}rZ(h$Uh%jTubah(Uemphasisr[ubh=X).r\r]}r^(h$X).h%jLubeubaubaubeubeubah$UU transformerr_NU footnote_refsr`}raUrefnamesrb}rcUsymbol_footnotesrd]reUautofootnote_refsrf]rgUsymbol_footnote_refsrh]riU citationsrj]rkh4hU current_linerlNUtransform_messagesrm]rnUreporterroNUid_startrpKU autofootnotesrq]rrU citation_refsrs}rtUindirect_targetsru]rvUsettingsrw(cdocutils.frontend Values rxory}rz(Ufootnote_backlinksr{KUrecord_dependenciesr|NU rfc_base_urlr}Uhttp://tools.ietf.org/html/r~U tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh:NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh'Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hjhhhj6hhhhhhhhKhh"uUsubstitution_namesr}rh(h4h*}r(h,]h/]h.]Usourceh'h-]h1]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/web/0000755000014400001440000000000012425013643020745 5ustar prologicusers00000000000000circuits-3.1.0/docs/build/doctrees/web/miscellaneous.doctree0000644000014400001440000002715212425011107025157 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X writing toolsqNX miscellaneousqNXwriting dispatchersqNuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hU writing-toolsqhU miscellaneousqhUwriting-dispatchersquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqX>/home/prologic/work/circuits/docs/source/web/miscellaneous.rstqUtagnameqUsectionqU attributesq }q!(Udupnamesq"]Uclassesq#]Ubackrefsq$]Uidsq%]q&haUnamesq']q(hauUlineq)KUdocumentq*hh]q+(cdocutils.nodes title q,)q-}q.(hX Miscellaneousq/hhhhhUtitleq0h }q1(h"]h#]h$]h%]h']uh)Kh*hh]q2cdocutils.nodes Text q3X Miscellaneousq4q5}q6(hh/hh-ubaubh)q7}q8(hUhhhhhhh }q9(h"]h#]h$]h%]q:hah']q;hauh)Kh*hh]q<(h,)q=}q>(hX Writing Toolsq?hh7hhhh0h }q@(h"]h#]h$]h%]h']uh)Kh*hh]qAh3X Writing ToolsqBqC}qD(hh?hh=ubaubcdocutils.nodes paragraph qE)qF}qG(hX6Most of the internal tools used by circuits.web in circuits.web.tools are simply functions that modify the Request or Response objects in some way or another... We won't be covering that here... What we will cover is how to build simple tools that do something to the Request or Response along it's life-cycle.qHhh7hhhU paragraphqIh }qJ(h"]h#]h$]h%]h']uh)Kh*hh]qKh3X6Most of the internal tools used by circuits.web in circuits.web.tools are simply functions that modify the Request or Response objects in some way or another... We won't be covering that here... What we will cover is how to build simple tools that do something to the Request or Response along it's life-cycle.qLqM}qN(hhHhhFubaubhE)qO}qP(hXHere is a simple example of a tool that uses the pytidylib library to tidy up the HTML output before it gets sent back to the requesting client.qQhh7hhhhIh }qR(h"]h#]h$]h%]h']uh)Kh*hh]qSh3XHere is a simple example of a tool that uses the pytidylib library to tidy up the HTML output before it gets sent back to the requesting client.qTqU}qV(hhQhhOubaubhE)qW}qX(hXCode:qYhh7hhhhIh }qZ(h"]h#]h$]h%]h']uh)Kh*hh]q[h3XCode:q\q]}q^(hhYhhWubaubcdocutils.nodes literal_block q_)q`}qa(hX9#!/usr/bin/env python from tidylib import tidy_document from circuits import Component class Tidy(Component): channel = "http" def response(self, response): document, errors = tidy_document("".join(response.body)) response.body = document Usage: (Server(8000) + Tidy() + Root()).run()hh7hhhU literal_blockqbh }qc(UlinenosqdUlanguageqeXpythonU xml:spaceqfUpreserveqgh%]h$]h"]h#]h']uh)Kh*hh]qhh3X9#!/usr/bin/env python from tidylib import tidy_document from circuits import Component class Tidy(Component): channel = "http" def response(self, response): document, errors = tidy_document("".join(response.body)) response.body = document Usage: (Server(8000) + Tidy() + Root()).run()qiqj}qk(hUhh`ubaubhE)ql}qm(hX**How it works:**qnhh7hhhhIh }qo(h"]h#]h$]h%]h']uh)K&h*hh]qpcdocutils.nodes strong qq)qr}qs(hhnh }qt(h"]h#]h$]h%]h']uhhlh]quh3X How it works:qvqw}qx(hUhhrubahUstrongqyubaubhE)qz}q{(hX=This tool works by intercepting the Response Event on the "response" channel of the "http" target (*or Component*). For more information about the life cycle of Request and Response events, their channels and where and how they can be intercepted to perform various tasks read the Request/Response Life Cycle section.hh7hhhhIh }q|(h"]h#]h$]h%]h']uh)K(h*hh]q}(h3XcThis tool works by intercepting the Response Event on the "response" channel of the "http" target (q~q}q(hXcThis tool works by intercepting the Response Event on the "response" channel of the "http" target (hhzubcdocutils.nodes emphasis q)q}q(hX*or Component*h }q(h"]h#]h$]h%]h']uhhzh]qh3X or Componentqq}q(hUhhubahUemphasisqubh3X). For more information about the life cycle of Request and Response events, their channels and where and how they can be intercepted to perform various tasks read the Request/Response Life Cycle section.qq}q(hX). For more information about the life cycle of Request and Response events, their channels and where and how they can be intercepted to perform various tasks read the Request/Response Life Cycle section.hhzubeubeubh)q}q(hUhhhhhhh }q(h"]h#]h$]h%]qhah']qhauh)K0h*hh]q(h,)q}q(hXWriting Dispatchersqhhhhhh0h }q(h"]h#]h$]h%]h']uh)K0h*hh]qh3XWriting Dispatchersqq}q(hhhhubaubhE)q}q(hXdIn circuits.web writing a custom "dispatcher" is only a matter of writing a Component that listens for incoming Request events on the "request" channel of the "web" target. The simplest kind of "dispatcher" is one that simply modifies the request.path in some way. To demonstrate this we'll illustrate and describe how the !VirtualHosts "dispatcher" works.qhhhhhhIh }q(h"]h#]h$]h%]h']uh)K3h*hh]qh3XdIn circuits.web writing a custom "dispatcher" is only a matter of writing a Component that listens for incoming Request events on the "request" channel of the "web" target. The simplest kind of "dispatcher" is one that simply modifies the request.path in some way. To demonstrate this we'll illustrate and describe how the !VirtualHosts "dispatcher" works.qq}q(hhhhubaubhE)q}q(hXVirtualHosts code:qhhhhhhIh }q(h"]h#]h$]h%]h']uh)K9h*hh]qh3XVirtualHosts code:qq}q(hhhhubaubh_)q}q(hX'class VirtualHosts(Component): channel = "web" def __init__(self, domains): super(VirtualHosts, self).__init__() self.domains = domains @handler("request", filter=True, priority=1) def request(self, event, request, response): path = request.path.strip("/") header = request.headers.get domain = header("X-Forwarded-Host", header("Host", "")) prefix = self.domains.get(domain, "") if prefix: path = _urljoin("/%s/" % prefix, path) request.path = pathhhhhhhbh }q(hdheXpythonhfhgh%]h$]h"]h#]h']uh)K;h*hh]qh3X'class VirtualHosts(Component): channel = "web" def __init__(self, domains): super(VirtualHosts, self).__init__() self.domains = domains @handler("request", filter=True, priority=1) def request(self, event, request, response): path = request.path.strip("/") header = request.headers.get domain = header("X-Forwarded-Host", header("Host", "")) prefix = self.domains.get(domain, "") if prefix: path = _urljoin("/%s/" % prefix, path) request.path = pathqq}q(hUhhubaubhE)q}q(hXThe important thing here to note is the Event Handler listening on the appropriate channel and the request.path being modified appropriately.qhhhhhhIh }q(h"]h#]h$]h%]h']uh)KSh*hh]qh3XThe important thing here to note is the Event Handler listening on the appropriate channel and the request.path being modified appropriately.qq}q(hhhhubaubhE)q}q(hXYou'll also note that in [source:circuits/web/dispatchers.py] all of the dispatchers have a set priority. These priorities are defined as::hhhhhhIh }q(h"]h#]h$]h%]h']uh)KVh*hh]qh3XYou'll also note that in [source:circuits/web/dispatchers.py] all of the dispatchers have a set priority. These priorities are defined as:qq}q(hXYou'll also note that in [source:circuits/web/dispatchers.py] all of the dispatchers have a set priority. These priorities are defined as:hhubaubh_)q}q(hXt$ grin "priority" circuits/web/dispatchers/ circuits/web/dispatchers/dispatcher.py: 92 : @handler("request", filter=True, priority=0.1) circuits/web/dispatchers/jsonrpc.py: 38 : @handler("request", filter=True, priority=0.2) circuits/web/dispatchers/static.py: 59 : @handler("request", filter=True, priority=0.9) circuits/web/dispatchers/virtualhosts.py: 49 : @handler("request", filter=True, priority=1.0) circuits/web/dispatchers/websockets.py: 53 : @handler("request", filter=True, priority=0.2) circuits/web/dispatchers/xmlrpc.py: 36 : @handler("request", filter=True, priority=0.2)hhhhhhbh }q(hfhgh%]h$]h"]h#]h']uh)KYh*hh]qh3Xt$ grin "priority" circuits/web/dispatchers/ circuits/web/dispatchers/dispatcher.py: 92 : @handler("request", filter=True, priority=0.1) circuits/web/dispatchers/jsonrpc.py: 38 : @handler("request", filter=True, priority=0.2) circuits/web/dispatchers/static.py: 59 : @handler("request", filter=True, priority=0.9) circuits/web/dispatchers/virtualhosts.py: 49 : @handler("request", filter=True, priority=1.0) circuits/web/dispatchers/websockets.py: 53 : @handler("request", filter=True, priority=0.2) circuits/web/dispatchers/xmlrpc.py: 36 : @handler("request", filter=True, priority=0.2)qŅq}q(hUhhubaubhE)q}q(hXin web applications that use multiple dispatchers these priorities set precedences for each "dispatcher" over another in terms of who's handling the Request Event before the other.qhhhhhhIh }q(h"]h#]h$]h%]h']uh)Kgh*hh]qh3Xin web applications that use multiple dispatchers these priorities set precedences for each "dispatcher" over another in terms of who's handling the Request Event before the other.qͅq}q(hhhhubaubcdocutils.nodes note q)q}q(hXSome dispatchers are designed to filter the Request Event and prevent it from being processed by other dispatchers in the system.qhhhhhUnoteqh }q(h"]h#]h$]h%]h']uh)Nh*hh]qhE)q}q(hhhhhhhhIh }q(h"]h#]h$]h%]h']uh)Kkh]qh3XSome dispatchers are designed to filter the Request Event and prevent it from being processed by other dispatchers in the system.qۅq}q(hhhhubaubaubeubeubahUU 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_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesr Nh0NUerror_encoding_error_handlerr Ubackslashreplacer Udebugr NUembed_stylesheetr Uoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesr NUoutput_encodingr!Uutf-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+hUgettext_compactr,U generatorr-NUdump_internalsr.NU smart_quotesr/U pep_base_urlr0Uhttp://www.python.org/dev/peps/r1Usyntax_highlightr2Ulongr3Uinput_encoding_error_handlerr4jUauto_id_prefixr5Uidr6Udoctitle_xformr7Ustrip_elements_with_classesr8NU _config_filesr9]Ufile_insertion_enabledr:U raw_enabledr;KU dump_settingsr<NubUsymbol_footnote_startr=KUidsr>}r?(hhhhhh7uUsubstitution_namesr@}rAhh*h }rB(h"]h%]h$]Usourcehh#]h']uU footnotesrC]rDUrefidsrE}rFub.circuits-3.1.0/docs/build/doctrees/web/index.doctree0000644000014400001440000000553712425011107023426 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}qXcircuits.web user manualqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUcircuits-web-user-manualqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqX6/home/prologic/work/circuits/docs/source/web/index.rstqUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq ]Uidsq!]q"haUnamesq#]q$hauUlineq%KUdocumentq&hh]q'(cdocutils.nodes title q()q)}q*(hXcircuits.web User Manualq+hhhhhUtitleq,h}q-(h]h]h ]h!]h#]uh%Kh&hh]q.cdocutils.nodes Text q/Xcircuits.web User Manualq0q1}q2(hh+hh)ubaubcdocutils.nodes compound q3)q4}q5(hUhhhhhUcompoundq6h}q7(h]h]q8Utoctree-wrapperq9ah ]h!]h#]uh%Nh&hh]q:csphinx.addnodes toctree q;)q<}q=(hUhh4hhhUtoctreeq>h}q?(Unumberedq@KU includehiddenqAhX web/indexqBU titlesonlyqCUglobqDh!]h ]h]h]h#]UentriesqE]qF(NXweb/introductionqGqHNXweb/gettingstartedqIqJNX web/featuresqKqLNX web/howtosqMqNNXweb/miscellaneousqOqPeUhiddenqQU includefilesqR]qS(hGhIhKhMhOeUmaxdepthqTKuh%Kh]ubaubeubahUU transformerqUNU footnote_refsqV}qWUrefnamesqX}qYUsymbol_footnotesqZ]q[Uautofootnote_refsq\]q]Usymbol_footnote_refsq^]q_U citationsq`]qah&hU current_lineqbNUtransform_messagesqc]qdUreporterqeNUid_startqfKU autofootnotesqg]qhU citation_refsqi}qjUindirect_targetsqk]qlUsettingsqm(cdocutils.frontend Values qnoqo}qp(Ufootnote_backlinksqqKUrecord_dependenciesqrNU rfc_base_urlqsUhttp://tools.ietf.org/html/qtU tracebackquUpep_referencesqvNUstrip_commentsqwNU toc_backlinksqxUentryqyU language_codeqzUenq{U datestampq|NU report_levelq}KU _destinationq~NU halt_levelqKU strip_classesqNh,NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU 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_sourceqhUgettext_compactqU 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_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh&h}q(h]h!]h ]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.circuits-3.1.0/docs/build/doctrees/web/features.doctree0000644000014400001440000023034212425011107024127 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(XcookiesqNXloggingqNXfeaturesqNXcherrypyq X virtualhostsq NXxmlrpcq NX dispatcherq NXauthenticationq NXstaticqNXcachingqNXjsonrpcqNXsession handlingqNX dispatchersqNX compressionqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUcookiesqhUloggingqhUfeaturesqh Ucherrypyq h U virtualhostsq!h Uxmlrpcq"h U dispatcherq#h Uauthenticationq$hUstaticq%hUcachingq&hUjsonrpcq'hUsession-handlingq(hU dispatchersq)hU compressionq*uUchildrenq+]q,(cdocutils.nodes target q-)q.}q/(U rawsourceq0X&.. _CherryPy: http://www.cherrypy.org/U referencedq1KUparentq2hUsourceq3X9/home/prologic/work/circuits/docs/source/web/features.rstq4Utagnameq5Utargetq6U attributesq7}q8(Urefuriq9Xhttp://www.cherrypy.org/q:Uidsq;]q]Uclassesq?]Unamesq@]qAh auUlineqBKUdocumentqChh+]ubh-)qD}qE(h0Uh2hh3h4h5h6h7}qF(h>]h;]qGXmodule-circuits.webqHah=]Uismodh?]h@]uhBKhChh+]ubcsphinx.addnodes index qI)qJ}qK(h0Uh2hh3h4h5UindexqLh7}qM(h;]h=]h>]h?]h@]Uentries]qN(UsingleqOXcircuits.web (module)Xmodule-circuits.webUtqPauhBKhChh+]ubcdocutils.nodes section qQ)qR}qS(h0Uh2hh3h4h5UsectionqTh7}qU(h>]h?]h=]h;]qVhah@]qWhauhBKhChh+]qX(cdocutils.nodes title qY)qZ}q[(h0XFeaturesq\h2hRh3h4h5Utitleq]h7}q^(h>]h?]h=]h;]h@]uhBKhChh+]q_cdocutils.nodes Text q`XFeaturesqaqb}qc(h0h\h2hZubaubcdocutils.nodes paragraph qd)qe}qf(h0Xcircuits.web is not a **Full Stack** or **High Level** web framework, rather it is more closely aligned with `CherryPy`_ and offers enough functionality to make quickly developing web applications easy and as flexible as possible.h2hRh3h4h5U paragraphqgh7}qh(h>]h?]h=]h;]h@]uhBK hChh+]qi(h`Xcircuits.web is not a qjqk}ql(h0Xcircuits.web is not a h2heubcdocutils.nodes strong qm)qn}qo(h0X**Full Stack**h7}qp(h>]h?]h=]h;]h@]uh2heh+]qqh`X Full Stackqrqs}qt(h0Uh2hnubah5Ustrongquubh`X or qvqw}qx(h0X or h2heubhm)qy}qz(h0X**High Level**h7}q{(h>]h?]h=]h;]h@]uh2heh+]q|h`X High Levelq}q~}q(h0Uh2hyubah5huubh`X7 web framework, rather it is more closely aligned with qq}q(h0X7 web framework, rather it is more closely aligned with h2heubcdocutils.nodes reference q)q}q(h0X `CherryPy`_UresolvedqKh2heh5U referenceqh7}q(UnameXCherryPyh9h:h;]h=]h>]h?]h@]uh+]qh`XCherryPyqq}q(h0Uh2hubaubh`Xn and offers enough functionality to make quickly developing web applications easy and as flexible as possible.qq}q(h0Xn and offers enough functionality to make quickly developing web applications easy and as flexible as possible.h2heubeubhd)q}q(h0X:circuits.web does not provide high level features such as:qh2hRh3h4h5hgh7}q(h>]h?]h=]h;]h@]uhBKhChh+]qh`X:circuits.web does not provide high level features such as:qq}q(h0hh2hubaubcdocutils.nodes bullet_list q)q}q(h0Uh2hRh3h4h5U bullet_listqh7}q(UbulletqX-h;]h=]h>]h?]h@]uhBKhChh+]q(cdocutils.nodes list_item q)q}q(h0X Templatingqh2hh3h4h5U list_itemqh7}q(h>]h?]h=]h;]h@]uhBNhChh+]qhd)q}q(h0hh2hh3h4h5hgh7}q(h>]h?]h=]h;]h@]uhBKh+]qh`X Templatingqq}q(h0hh2hubaubaubh)q}q(h0XDatabase accessqh2hh3h4h5hh7}q(h>]h?]h=]h;]h@]uhBNhChh+]qhd)q}q(h0hh2hh3h4h5hgh7}q(h>]h?]h=]h;]h@]uhBKh+]qh`XDatabase accessqq}q(h0hh2hubaubaubh)q}q(h0XForm Validationqh2hh3h4h5hh7}q(h>]h?]h=]h;]h@]uhBNhChh+]qhd)q}q(h0hh2hh3h4h5hgh7}q(h>]h?]h=]h;]h@]uhBKh+]qh`XForm Validationq…q}q(h0hh2hubaubaubh)q}q(h0XModel View Controllerqh2hh3h4h5hh7}q(h>]h?]h=]h;]h@]uhBNhChh+]qhd)q}q(h0hh2hh3h4h5hgh7}q(h>]h?]h=]h;]h@]uhBKh+]qh`XModel View Controllerq΅q}q(h0hh2hubaubaubh)q}q(h0XObject Relational Mapper h2hh3h4h5hh7}q(h>]h?]h=]h;]h@]uhBNhChh+]qhd)q}q(h0XObject Relational Mapperqh2hh3h4h5hgh7}q(h>]h?]h=]h;]h@]uhBKh+]qh`XObject Relational Mapperqڅq}q(h0hh2hubaubaubeubhd)q}q(h0XThe functionality that circutis.web **does** provide ensures that circuits.web is fully HTTP/1.1 and WSGI/1.0 compliant and offers all the essential tools you need to build your web application or website.h2hRh3h4h5hgh7}q(h>]h?]h=]h;]h@]uhBKhChh+]q(h`X$The functionality that circutis.web qᅁq}q(h0X$The functionality that circutis.web h2hubhm)q}q(h0X**does**h7}q(h>]h?]h=]h;]h@]uh2hh+]qh`Xdoesq腁q}q(h0Uh2hubah5huubh`X provide ensures that circuits.web is fully HTTP/1.1 and WSGI/1.0 compliant and offers all the essential tools you need to build your web application or website.q녁q}q(h0X provide ensures that circuits.web is fully HTTP/1.1 and WSGI/1.0 compliant and offers all the essential tools you need to build your web application or website.h2hubeubhd)q}q(h0XTo demonstrate each feature, we're going to use the classical "Hello World!" example as demonstrated earlier in :doc:`gettingstarted`.h2hRh3h4h5hgh7}q(h>]h?]h=]h;]h@]uhBKhChh+]q(h`XpTo demonstrate each feature, we're going to use the classical "Hello World!" example as demonstrated earlier in qq}q(h0XpTo demonstrate each feature, we're going to use the classical "Hello World!" example as demonstrated earlier in h2hubcsphinx.addnodes pending_xref q)q}q(h0X:doc:`gettingstarted`qh2hh3h4h5U pending_xrefqh7}q(UreftypeXdocqUrefwarnqU reftargetqXgettingstartedU refdomainUh;]h=]U refexplicith>]h?]h@]UrefdocqX web/featuresquhBKh+]rcdocutils.nodes literal r)r}r(h0hh7}r(h>]h?]r(Uxrefrheh=]h;]h@]uh2hh+]rh`Xgettingstartedrr }r (h0Uh2jubah5Uliteralr ubaubh`X.r }r (h0X.h2hubeubhd)r}r(h0X)Here's the code again for easy reference:rh2hRh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBKhChh+]rh`X)Here's the code again for easy reference:rr}r(h0jh2jubaubcdocutils.nodes literal_block r)r}r(h0Xfrom circuits.web import Server, Controller class Root(Controller): def index(self): return "Hello World!" (Server(8000) + Root()).run()h2hRh3h4h5U literal_blockrh7}r(UlinenosrUlanguagerXpythonU xml:spacerUpreserverh;]h=]h>]h?]h@]uhBK hChh+]rh`Xfrom circuits.web import Server, Controller class Root(Controller): def index(self): return "Hello World!" (Server(8000) + Root()).run()r r!}r"(h0Uh2jubaubhQ)r#}r$(h0Uh2hRh3h4h5hTh7}r%(h>]h?]h=]h;]r&hah@]r'hauhBK0hChh+]r((hY)r)}r*(h0XLoggingr+h2j#h3h4h5h]h7}r,(h>]h?]h=]h;]h@]uhBK0hChh+]r-h`XLoggingr.r/}r0(h0j+h2j)ubaubhd)r1}r2(h0Xcircuits.web's :class:`~.Logger` component allows you to add logging support compatible with Apache log file formats to your web application.h2j#h3h4h5hgh7}r3(h>]h?]h=]h;]h@]uhBK3hChh+]r4(h`Xcircuits.web's r5r6}r7(h0Xcircuits.web's h2j1ubh)r8}r9(h0X:class:`~.Logger`r:h2j1h3h4h5hh7}r;(UreftypeXclassU refspecificr<hhXLoggerU refdomainXpyr=h;]h=]U refexplicith>]h?]h@]hhUpy:classr>NU py:moduler?X circuits.webr@uhBK3h+]rAj)rB}rC(h0j:h7}rD(h>]h?]rE(jj=Xpy-classrFeh=]h;]h@]uh2j8h+]rGh`XLoggerrHrI}rJ(h0Uh2jBubah5j ubaubh`Xn component allows you to add logging support compatible with Apache log file formats to your web application.rKrL}rM(h0Xn component allows you to add logging support compatible with Apache log file formats to your web application.h2j1ubeubhd)rN}rO(h0X>To use the :class:`~Logger` simply add it to your application:rPh2j#h3h4h5hgh7}rQ(h>]h?]h=]h;]h@]uhBK7hChh+]rR(h`X To use the rSrT}rU(h0X To use the h2jNubh)rV}rW(h0X:class:`~Logger`rXh2jNh3h4h5hh7}rY(UreftypeXclasshhXLoggerU refdomainXpyrZh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBK7h+]r[j)r\}r](h0jXh7}r^(h>]h?]r_(jjZXpy-classr`eh=]h;]h@]uh2jVh+]rah`XLoggerrbrc}rd(h0Uh2j\ubah5j ubaubh`X# simply add it to your application:rerf}rg(h0X# simply add it to your application:h2jNubeubj)rh}ri(h0X((Server(8000) + Logger() + Root()).run()h2j#h3h4h5jh7}rj(jjXpythonjjh;]h=]h>]h?]h@]uhBK9hChh+]rkh`X((Server(8000) + Logger() + Root()).run()rlrm}rn(h0Uh2jhubaubhd)ro}rp(h0XExample Log Output::rqh2j#h3h4h5hgh7}rr(h>]h?]h=]h;]h@]uhBK=hChh+]rsh`XExample Log Output:rtru}rv(h0XExample Log Output:h2joubaubj)rw}rx(h0X127.0.0.1 - - [05/Apr/2014:10:13:01] "GET / HTTP/1.1" 200 12 "" "curl/7.35.0" 127.0.0.1 - - [05/Apr/2014:10:13:02] "GET /docs/build/html/index.html HTTP/1.1" 200 22402 "" "curl/7.35.0"h2j#h3h4h5jh7}ry(jjh;]h=]h>]h?]h@]uhBK?hChh+]rzh`X127.0.0.1 - - [05/Apr/2014:10:13:01] "GET / HTTP/1.1" 200 12 "" "curl/7.35.0" 127.0.0.1 - - [05/Apr/2014:10:13:02] "GET /docs/build/html/index.html HTTP/1.1" 200 22402 "" "curl/7.35.0"r{r|}r}(h0Uh2jwubaubeubhQ)r~}r(h0Uh2hRh3h4h5hTh7}r(h>]h?]h=]h;]rhah@]rhauhBKDhChh+]r(hY)r}r(h0XCookiesrh2j~h3h4h5h]h7}r(h>]h?]h=]h;]h@]uhBKDhChh+]rh`XCookiesrr}r(h0jh2jubaubhd)r}r(h0X(Access to cookies are provided through the :class:`~.Request` Object which holds data about the request. The attribute :attr:`~.Request.cookie` is provided as part of the :class:`~.Request` Object. It is a dict-like object, an instance of ``Cookie.SimpleCookie`` from the python standard library.h2j~h3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBKGhChh+]r(h`X+Access to cookies are provided through the rr}r(h0X+Access to cookies are provided through the h2jubh)r}r(h0X:class:`~.Request`rh2jh3h4h5hh7}r(UreftypeXclassj<hhXRequestU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBKGh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-classreh=]h;]h@]uh2jh+]rh`XRequestrr}r(h0Uh2jubah5j ubaubh`X: Object which holds data about the request. The attribute rr}r(h0X: Object which holds data about the request. The attribute h2jubh)r}r(h0X:attr:`~.Request.cookie`rh2jh3h4h5hh7}r(UreftypeXattrj<hhXRequest.cookieU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBKGh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-attrreh=]h;]h@]uh2jh+]rh`Xcookierr}r(h0Uh2jubah5j ubaubh`X is provided as part of the rr}r(h0X is provided as part of the h2jubh)r}r(h0X:class:`~.Request`rh2jh3h4h5hh7}r(UreftypeXclassj<hhXRequestU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBKGh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-classreh=]h;]h@]uh2jh+]rh`XRequestrr}r(h0Uh2jubah5j ubaubh`X2 Object. It is a dict-like object, an instance of rr}r(h0X2 Object. It is a dict-like object, an instance of h2jubj)r}r(h0X``Cookie.SimpleCookie``h7}r(h>]h?]h=]h;]h@]uh2jh+]rh`XCookie.SimpleCookierr}r(h0Uh2jubah5j ubh`X" from the python standard library.rr}r(h0X" from the python standard library.h2jubeubhd)r}r(h0X_To demonstrate "Using Cookies" we'll write a very simple application that remembers who we are:rh2j~h3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBKLhChh+]rh`X_To demonstrate "Using Cookies" we'll write a very simple application that remembers who we are:rr}r(h0jh2jubaubhd)r}r(h0XIf a cookie **name** is found, display "Hello !". Otherwise, display "Hello World!" If an argument is given or a query parameter **name** is given, store this as the **name** for the cookie. Here's how we do it:h2j~h3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBKOhChh+]r(h`X If a cookie rr}r(h0X If a cookie h2jubhm)r}r(h0X**name**h7}r(h>]h?]h=]h;]h@]uh2jh+]rh`Xnamerr}r(h0Uh2jubah5huubh`Xs is found, display "Hello !". Otherwise, display "Hello World!" If an argument is given or a query parameter rr}r(h0Xs is found, display "Hello !". Otherwise, display "Hello World!" If an argument is given or a query parameter h2jubhm)r}r(h0X**name**h7}r(h>]h?]h=]h;]h@]uh2jh+]rh`Xnamerr}r(h0Uh2jubah5huubh`X is given, store this as the rr}r(h0X is given, store this as the h2jubhm)r}r(h0X**name**h7}r(h>]h?]h=]h;]h@]uh2jh+]rh`Xnamerr}r(h0Uh2jubah5huubh`X% for the cookie. Here's how we do it:rr}r(h0X% for the cookie. Here's how we do it:h2jubeubj)r}r(h0Xefrom circuits.web import Server, Controller class Root(Controller): def index(self, name=None): if name: self.cookie["name"] = name else: name = self.cookie.get("name", None) name = "World!" if name is None else name.value return "Hello {0:s}!".format(name) (Server(8000) + Root()).run()h2j~h3h4h5jh7}r(jjXpythonjjh;]h=]h>]h?]h@]uhBKUhChh+]rh`Xefrom circuits.web import Server, Controller class Root(Controller): def index(self, name=None): if name: self.cookie["name"] = name else: name = self.cookie.get("name", None) name = "World!" if name is None else name.value return "Hello {0:s}!".format(name) (Server(8000) + Root()).run()rr}r(h0Uh2jubaubcdocutils.nodes note r)r}r (h0XDTo access the actual value of a cookie use the ``.value`` attribute.r h2j~h3h4h5Unoter h7}r (h>]h?]h=]h;]h@]uhBNhChh+]r hd)r}r(h0j h2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBKih+]r(h`X/To access the actual value of a cookie use the rr}r(h0X/To access the actual value of a cookie use the h2jubj)r}r(h0X ``.value``h7}r(h>]h?]h=]h;]h@]uh2jh+]rh`X.valuerr}r(h0Uh2jubah5j ubh`X attribute.rr}r(h0X attribute.h2jubeubaubcdocutils.nodes warning r)r }r!(h0XCookies can be vulnerable to XSS (*Cross Site Scripting*) attacks so use them at your own risk. See: http://en.wikipedia.org/wiki/Cross-site_scripting#Cookie_securityh2j~h3h4h5Uwarningr"h7}r#(h>]h?]h=]h;]h@]uhBNhChh+]r$hd)r%}r&(h0XCookies can be vulnerable to XSS (*Cross Site Scripting*) attacks so use them at your own risk. See: http://en.wikipedia.org/wiki/Cross-site_scripting#Cookie_securityh2j h3h4h5hgh7}r'(h>]h?]h=]h;]h@]uhBKkh+]r((h`X"Cookies can be vulnerable to XSS (r)r*}r+(h0X"Cookies can be vulnerable to XSS (h2j%ubcdocutils.nodes emphasis r,)r-}r.(h0X*Cross Site Scripting*h7}r/(h>]h?]h=]h;]h@]uh2j%h+]r0h`XCross Site Scriptingr1r2}r3(h0Uh2j-ubah5Uemphasisr4ubh`X-) attacks so use them at your own risk. See: r5r6}r7(h0X-) attacks so use them at your own risk. See: h2j%ubh)r8}r9(h0XAhttp://en.wikipedia.org/wiki/Cross-site_scripting#Cookie_securityr:h7}r;(Urefurij:h;]h=]h>]h?]h@]uh2j%h+]r<h`XAhttp://en.wikipedia.org/wiki/Cross-site_scripting#Cookie_securityr=r>}r?(h0Uh2j8ubah5hubeubaubeubhQ)r@}rA(h0Uh2hRh3h4h5hTh7}rB(h>]h?]h=]h;]rCh)ah@]rDhauhBKphChh+]rE(hY)rF}rG(h0X DispatchersrHh2j@h3h4h5h]h7}rI(h>]h?]h=]h;]h@]uhBKphChh+]rJh`X DispatchersrKrL}rM(h0jHh2jFubaubhd)rN}rO(h0Xcircuits.web provides several dispatchers in the :mod:`~.dispatchers` module. Most of these are available directly from the circuits.web namespace by simply importing the required "dispatcher" from circuits.web.h2j@h3h4h5hgh7}rP(h>]h?]h=]h;]h@]uhBKrhChh+]rQ(h`X1circuits.web provides several dispatchers in the rRrS}rT(h0X1circuits.web provides several dispatchers in the h2jNubh)rU}rV(h0X:mod:`~.dispatchers`rWh2jNh3h4h5hh7}rX(UreftypeXmodj<hhX dispatchersU refdomainXpyrYh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBKrh+]rZj)r[}r\(h0jWh7}r](h>]h?]r^(jjYXpy-modr_eh=]h;]h@]uh2jUh+]r`h`X dispatchersrarb}rc(h0Uh2j[ubah5j ubaubh`X module. Most of these are available directly from the circuits.web namespace by simply importing the required "dispatcher" from circuits.web.rdre}rf(h0X module. Most of these are available directly from the circuits.web namespace by simply importing the required "dispatcher" from circuits.web.h2jNubeubhd)rg}rh(h0XExample:rih2j@h3h4h5hgh7}rj(h>]h?]h=]h;]h@]uhBKvhChh+]rkh`XExample:rlrm}rn(h0jih2jgubaubj)ro}rp(h0Xfrom circuits.web import Statich2j@h3h4h5jh7}rq(jjXpythonjjh;]h=]h>]h?]h@]uhBKxhChh+]rrh`Xfrom circuits.web import Staticrsrt}ru(h0Uh2joubaubhd)rv}rw(h0X?The most important "dispatcher" is the default :class:`~.Dispatcher` used by the circuits.web :class:`~.Server` to dispatch incoming requests onto a channel mapping (*remember that circuits is event-driven and uses channels*), quite similar to that of CherryPy or any other web framework that supports object traversal.h2j@h3h4h5hgh7}rx(h>]h?]h=]h;]h@]uhBK|hChh+]ry(h`X/The most important "dispatcher" is the default rzr{}r|(h0X/The most important "dispatcher" is the default h2jvubh)r}}r~(h0X:class:`~.Dispatcher`rh2jvh3h4h5hh7}r(UreftypeXclassj<hhX DispatcherU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBK|h+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-classreh=]h;]h@]uh2j}h+]rh`X Dispatcherrr}r(h0Uh2jubah5j ubaubh`X used by the circuits.web rr}r(h0X used by the circuits.web h2jvubh)r}r(h0X:class:`~.Server`rh2jvh3h4h5hh7}r(UreftypeXclassj<hhXServerU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBK|h+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-classreh=]h;]h@]uh2jh+]rh`XServerrr}r(h0Uh2jubah5j ubaubh`X7 to dispatch incoming requests onto a channel mapping (rr}r(h0X7 to dispatch incoming requests onto a channel mapping (h2jvubj,)r}r(h0X:*remember that circuits is event-driven and uses channels*h7}r(h>]h?]h=]h;]h@]uh2jvh+]rh`X8remember that circuits is event-driven and uses channelsrr}r(h0Uh2jubah5j4ubh`X_), quite similar to that of CherryPy or any other web framework that supports object traversal.rr}r(h0X_), quite similar to that of CherryPy or any other web framework that supports object traversal.h2jvubeubhd)r}r(h0XNormally you don't have to worry about any of the details of the *default* :class:`~.Dispatcher` nor do you have to import it or use it in any way as it's already included as part of the circuits.web :class:`~.Server` Component structure.h2j@h3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBKhChh+]r(h`XANormally you don't have to worry about any of the details of the rr}r(h0XANormally you don't have to worry about any of the details of the h2jubj,)r}r(h0X *default*h7}r(h>]h?]h=]h;]h@]uh2jh+]rh`Xdefaultrr}r(h0Uh2jubah5j4ubh`X r}r(h0X h2jubh)r}r(h0X:class:`~.Dispatcher`rh2jh3h4h5hh7}r(UreftypeXclassj<hhX DispatcherU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBKh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-classreh=]h;]h@]uh2jh+]rh`X Dispatcherrr}r(h0Uh2jubah5j ubaubh`Xh nor do you have to import it or use it in any way as it's already included as part of the circuits.web rr}r(h0Xh nor do you have to import it or use it in any way as it's already included as part of the circuits.web h2jubh)r}r(h0X:class:`~.Server`rh2jh3h4h5hh7}r(UreftypeXclassj<hhXServerU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBKh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-classreh=]h;]h@]uh2jh+]rh`XServerrr}r(h0Uh2jubah5j ubaubh`X Component structure.rr}r(h0X Component structure.h2jubeubhQ)r}r(h0Uh2j@h3h4h5hTh7}r(h>]h?]h=]h;]rh%ah@]rhauhBKhChh+]r(hY)r}r(h0XStaticrh2jh3h4h5h]h7}r(h>]h?]h=]h;]h@]uhBKhChh+]rh`XStaticrr}r(h0jh2jubaubhd)r}r(h0XThe :class:`~.Static` "dispatcher" is used for serving static resources/files in your application. To use this, simply add it to your application. It takes some optional configuration which affects it's behavior.h2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBKhChh+]r(h`XThe rr}r(h0XThe h2jubh)r}r(h0X:class:`~.Static`rh2jh3h4h5hh7}r(UreftypeXclassj<hhXStaticU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBKh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-classreh=]h;]h@]uh2jh+]rh`XStaticrr}r(h0Uh2jubah5j ubaubh`X "dispatcher" is used for serving static resources/files in your application. To use this, simply add it to your application. It takes some optional configuration which affects it's behavior.rr}r(h0X "dispatcher" is used for serving static resources/files in your application. To use this, simply add it to your application. It takes some optional configuration which affects it's behavior.h2jubeubhd)r}r(h0X1The simplest example (*as per our Base Example*):rh2jh3h4h5hgh7}r (h>]h?]h=]h;]h@]uhBKhChh+]r (h`XThe simplest example (r r }r (h0XThe simplest example (h2jubj,)r}r(h0X*as per our Base Example*h7}r(h>]h?]h=]h;]h@]uh2jh+]rh`Xas per our Base Examplerr}r(h0Uh2jubah5j4ubh`X):rr}r(h0X):h2jubeubj)r}r(h0X((Server(8000) + Static() + Root()).run()h2jh3h4h5jh7}r(jjXpythonjjh;]h=]h>]h?]h@]uhBKhChh+]rh`X((Server(8000) + Static() + Root()).run()rr}r(h0Uh2jubaubhd)r}r (h0XHThis will serve up files in the *current directory* as static resources.r!h2jh3h4h5hgh7}r"(h>]h?]h=]h;]h@]uhBKhChh+]r#(h`X This will serve up files in the r$r%}r&(h0X This will serve up files in the h2jubj,)r'}r((h0X*current directory*h7}r)(h>]h?]h=]h;]h@]uh2jh+]r*h`Xcurrent directoryr+r,}r-(h0Uh2j'ubah5j4ubh`X as static resources.r.r/}r0(h0X as static resources.h2jubeubj)r1}r2(h0X0This may override your **index** request handler of your top-most (``Root``) :class:`~.Controller`. As this might be undesirable and it's normally common to serve static resources via a different path and even have them stored in a separate physical file path, you can configure the Static "dispatcher".h2jh3h4h5j h7}r3(h>]h?]h=]h;]h@]uhBNhChh+]r4hd)r5}r6(h0X0This may override your **index** request handler of your top-most (``Root``) :class:`~.Controller`. As this might be undesirable and it's normally common to serve static resources via a different path and even have them stored in a separate physical file path, you can configure the Static "dispatcher".h2j1h3h4h5hgh7}r7(h>]h?]h=]h;]h@]uhBKh+]r8(h`XThis may override your r9r:}r;(h0XThis may override your h2j5ubhm)r<}r=(h0X **index**h7}r>(h>]h?]h=]h;]h@]uh2j5h+]r?h`Xindexr@rA}rB(h0Uh2j<ubah5huubh`X# request handler of your top-most (rCrD}rE(h0X# request handler of your top-most (h2j5ubj)rF}rG(h0X``Root``h7}rH(h>]h?]h=]h;]h@]uh2j5h+]rIh`XRootrJrK}rL(h0Uh2jFubah5j ubh`X) rMrN}rO(h0X) h2j5ubh)rP}rQ(h0X:class:`~.Controller`rRh2j5h3h4h5hh7}rS(UreftypeXclassj<hhX ControllerU refdomainXpyrTh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBKh+]rUj)rV}rW(h0jRh7}rX(h>]h?]rY(jjTXpy-classrZeh=]h;]h@]uh2jPh+]r[h`X Controllerr\r]}r^(h0Uh2jVubah5j ubaubh`X. As this might be undesirable and it's normally common to serve static resources via a different path and even have them stored in a separate physical file path, you can configure the Static "dispatcher".r_r`}ra(h0X. As this might be undesirable and it's normally common to serve static resources via a different path and even have them stored in a separate physical file path, you can configure the Static "dispatcher".h2j5ubeubaubhd)rb}rc(h0X*Static files stored in ``/home/joe/www/``:rdh2jh3h4h5hgh7}re(h>]h?]h=]h;]h@]uhBKhChh+]rf(h`XStatic files stored in rgrh}ri(h0XStatic files stored in h2jbubj)rj}rk(h0X``/home/joe/www/``h7}rl(h>]h?]h=]h;]h@]uh2jbh+]rmh`X/home/joe/www/rnro}rp(h0Uh2jjubah5j ubh`X:rq}rr(h0X:h2jbubeubj)rs}rt(h0X@(Server(8000) + Static(docroot="/home/joe/www/") + Root()).run()h2jh3h4h5jh7}ru(jjXpythonjjh;]h=]h>]h?]h@]uhBKhChh+]rvh`X@(Server(8000) + Static(docroot="/home/joe/www/") + Root()).run()rwrx}ry(h0Uh2jsubaubhd)rz}r{(h0X_Static files stored in ``/home/joe/www/`` **and** we want them served up as ``/static`` URI(s):h2jh3h4h5hgh7}r|(h>]h?]h=]h;]h@]uhBKhChh+]r}(h`XStatic files stored in r~r}r(h0XStatic files stored in h2jzubj)r}r(h0X``/home/joe/www/``h7}r(h>]h?]h=]h;]h@]uh2jzh+]rh`X/home/joe/www/rr}r(h0Uh2jubah5j ubh`X r}r(h0X h2jzubhm)r}r(h0X**and**h7}r(h>]h?]h=]h;]h@]uh2jzh+]rh`Xandrr}r(h0Uh2jubah5huubh`X we want them served up as rr}r(h0X we want them served up as h2jzubj)r}r(h0X ``/static``h7}r(h>]h?]h=]h;]h@]uh2jzh+]rh`X/staticrr}r(h0Uh2jubah5j ubh`X URI(s):rr}r(h0X URI(s):h2jzubeubj)r}r(h0XK(Server(8000) + Static("/static", docroot="/home/joe/www/") + Root()).run()h2jh3h4h5jh7}r(jjXpythonjjh;]h=]h>]h?]h@]uhBKhChh+]rh`XK(Server(8000) + Static("/static", docroot="/home/joe/www/") + Root()).run()rr}r(h0Uh2jubaubeubhQ)r}r(h0Uh2j@h3h4h5hTh7}r(h>]h?]h=]h;]rh#ah@]rh auhBKhChh+]r(hY)r}r(h0X Dispatcherrh2jh3h4h5h]h7}r(h>]h?]h=]h;]h@]uhBKhChh+]rh`X Dispatcherrr}r(h0jh2jubaubhd)r}r(h0X-The :class:`~.Dispatcher` (*the default*) is used to dispatch requests and map them onto channels with a similar URL Mapping as CherryPy's. A set of "paths" are maintained by the Dispatcher as Controller(s) are registered to the system or unregistered from it. A channel mapping is found by traversing the set of known paths (*Controller(s)*) and successively matching parts of the path (*split by /*) until a suitable Controller and Request Handler is found. If no Request Handler is found that matches but there is a "default" Request Handler, it is used.h2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBKhChh+]r(h`XThe rr}r(h0XThe h2jubh)r}r(h0X:class:`~.Dispatcher`rh2jh3h4h5hh7}r(UreftypeXclassj<hhX DispatcherU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBKh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-classreh=]h;]h@]uh2jh+]rh`X Dispatcherrr}r(h0Uh2jubah5j ubaubh`X (rr}r(h0X (h2jubj,)r}r(h0X *the default*h7}r(h>]h?]h=]h;]h@]uh2jh+]rh`X the defaultrr}r(h0Uh2jubah5j4ubh`X) is used to dispatch requests and map them onto channels with a similar URL Mapping as CherryPy's. A set of "paths" are maintained by the Dispatcher as Controller(s) are registered to the system or unregistered from it. A channel mapping is found by traversing the set of known paths (rr}r(h0X) is used to dispatch requests and map them onto channels with a similar URL Mapping as CherryPy's. A set of "paths" are maintained by the Dispatcher as Controller(s) are registered to the system or unregistered from it. A channel mapping is found by traversing the set of known paths (h2jubj,)r}r(h0X*Controller(s)*h7}r(h>]h?]h=]h;]h@]uh2jh+]rh`X Controller(s)rr}r(h0Uh2jubah5j4ubh`X/) and successively matching parts of the path (rr}r(h0X/) and successively matching parts of the path (h2jubj,)r}r(h0X *split by /*h7}r(h>]h?]h=]h;]h@]uh2jh+]rh`X split by /rr}r(h0Uh2jubah5j4ubh`X) until a suitable Controller and Request Handler is found. If no Request Handler is found that matches but there is a "default" Request Handler, it is used.rr}r(h0X) until a suitable Controller and Request Handler is found. If no Request Handler is found that matches but there is a "default" Request Handler, it is used.h2jubeubhd)r}r(h0XHThis Dispatcher also included support for matching against HTTP methods:rh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBKhChh+]rh`XHThis Dispatcher also included support for matching against HTTP methods:rr}r(h0jh2jubaubh)r}r(h0Uh2jh3h4h5hh7}r(hX-h;]h=]h>]h?]h@]uhBKhChh+]r(h)r}r(h0XGETrh2jh3h4h5hh7}r(h>]h?]h=]h;]h@]uhBNhChh+]rhd)r}r(h0jh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBKh+]rh`XGETrr}r(h0jh2jubaubaubh)r}r(h0XPOSTrh2jh3h4h5hh7}r(h>]h?]h=]h;]h@]uhBNhChh+]rhd)r}r(h0jh2jh3h4h5hgh7}r (h>]h?]h=]h;]h@]uhBKh+]r h`XPOSTr r }r (h0jh2jubaubaubh)r}r(h0XPUTrh2jh3h4h5hh7}r(h>]h?]h=]h;]h@]uhBNhChh+]rhd)r}r(h0jh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBKh+]rh`XPUTrr}r(h0jh2jubaubaubh)r}r(h0XDELETE. h2jh3h4h5hh7}r(h>]h?]h=]h;]h@]uhBNhChh+]rhd)r}r(h0XDELETE.r h2jh3h4h5hgh7}r!(h>]h?]h=]h;]h@]uhBKh+]r"h`XDELETE.r#r$}r%(h0j h2jubaubaubeubhd)r&}r'(h0XHere are some examples:r(h2jh3h4h5hgh7}r)(h>]h?]h=]h;]h@]uhBKhChh+]r*h`XHere are some examples:r+r,}r-(h0j(h2j&ubaubj)r.}r/(h0Xxclass Root(Controller): def index(self): return "Hello World!" def foo(self, arg1, arg2, arg3): return "Foo: %r, %r, %r" % (arg1, arg2, arg3) def bar(self, kwarg1="foo", kwarg2="bar"): return "Bar: kwarg1=%r, kwarg2=%r" % (kwarg1, kwarg2) def foobar(self, arg1, kwarg1="foo"): return "FooBar: %r, kwarg1=%r" % (arg1, kwarg1)h2jh3h4h5jh7}r0(jjXpythonjjh;]h=]h>]h?]h@]uhBKhChh+]r1h`Xxclass Root(Controller): def index(self): return "Hello World!" def foo(self, arg1, arg2, arg3): return "Foo: %r, %r, %r" % (arg1, arg2, arg3) def bar(self, kwarg1="foo", kwarg2="bar"): return "Bar: kwarg1=%r, kwarg2=%r" % (kwarg1, kwarg2) def foobar(self, arg1, kwarg1="foo"): return "FooBar: %r, kwarg1=%r" % (arg1, kwarg1)r2r3}r4(h0Uh2j.ubaubhd)r5}r6(h0XWith the following requests::r7h2jh3h4h5hgh7}r8(h>]h?]h=]h;]h@]uhBKhChh+]r9h`XWith the following requests:r:r;}r<(h0XWith the following requests:h2j5ubaubj)r=}r>(h0Xhttp://127.0.0.1:8000/ http://127.0.0.1:8000/foo/1/2/3 http://127.0.0.1:8000/bar?kwarg1=1 http://127.0.0.1:8000/bar?kwarg1=1&kwarg=2 http://127.0.0.1:8000/foobar/1 http://127.0.0.1:8000/foobar/1?kwarg1=1h2jh3h4h5jh7}r?(jjh;]h=]h>]h?]h@]uhBKhChh+]r@h`Xhttp://127.0.0.1:8000/ http://127.0.0.1:8000/foo/1/2/3 http://127.0.0.1:8000/bar?kwarg1=1 http://127.0.0.1:8000/bar?kwarg1=1&kwarg=2 http://127.0.0.1:8000/foobar/1 http://127.0.0.1:8000/foobar/1?kwarg1=1rArB}rC(h0Uh2j=ubaubhd)rD}rE(h0X"The following output is produced::rFh2jh3h4h5hgh7}rG(h>]h?]h=]h;]h@]uhBKhChh+]rHh`X!The following output is produced:rIrJ}rK(h0X!The following output is produced:h2jDubaubj)rL}rM(h0XHello World! Foo: '1', '2', '3' Bar: kwargs1='1', kwargs2='bar' Bar: kwargs1='1', kwargs2='bar' FooBar: '1', kwargs1='foo' FooBar: '1', kwargs1='1'h2jh3h4h5jh7}rN(jjh;]h=]h>]h?]h@]uhBKhChh+]rOh`XHello World! Foo: '1', '2', '3' Bar: kwargs1='1', kwargs2='bar' Bar: kwargs1='1', kwargs2='bar' FooBar: '1', kwargs1='foo' FooBar: '1', kwargs1='1'rPrQ}rR(h0Uh2jLubaubhd)rS}rT(h0XThis demonstrates how the Dispatcher handles basic paths and how it handles extra parts of a path as well as the query string. These are essentially translated into arguments and keyword arguments.rUh2jh3h4h5hgh7}rV(h>]h?]h=]h;]h@]uhBKhChh+]rWh`XThis demonstrates how the Dispatcher handles basic paths and how it handles extra parts of a path as well as the query string. These are essentially translated into arguments and keyword arguments.rXrY}rZ(h0jUh2jSubaubhd)r[}r\(h0XtTo define a Request Handler that is specifically for the HTTP ``POST`` method, simply define a Request Handler like:r]h2jh3h4h5hgh7}r^(h>]h?]h=]h;]h@]uhBKhChh+]r_(h`X>To define a Request Handler that is specifically for the HTTP r`ra}rb(h0X>To define a Request Handler that is specifically for the HTTP h2j[ubj)rc}rd(h0X``POST``h7}re(h>]h?]h=]h;]h@]uh2j[h+]rfh`XPOSTrgrh}ri(h0Uh2jcubah5j ubh`X. method, simply define a Request Handler like:rjrk}rl(h0X. method, simply define a Request Handler like:h2j[ubeubj)rm}rn(h0Xclass Root(Controller): def index(self): return "Hello World!" class Test(Controller): channel = "/test" def POST(self, *args, **kwargs): #*** return "%r %r" % (args, kwargs)h2jh3h4h5jh7}ro(jjXpythonjjh;]h=]h>]h?]h@]uhBKhChh+]rph`Xclass Root(Controller): def index(self): return "Hello World!" class Test(Controller): channel = "/test" def POST(self, *args, **kwargs): #*** return "%r %r" % (args, kwargs)rqrr}rs(h0Uh2jmubaubhd)rt}ru(h0X^This will handles ``POST`` requests to "/test", which brings us to the final point of creating URL structures in your application. As seen above to create a sub-structure of Request Handlers (*a tree*) simply create another :class:`~.Controller` Component giving it a different channel and add it to the system along with your existing Controller(s).h2jh3h4h5hgh7}rv(h>]h?]h=]h;]h@]uhBKhChh+]rw(h`XThis will handles rxry}rz(h0XThis will handles h2jtubj)r{}r|(h0X``POST``h7}r}(h>]h?]h=]h;]h@]uh2jth+]r~h`XPOSTrr}r(h0Uh2j{ubah5j ubh`X requests to "/test", which brings us to the final point of creating URL structures in your application. As seen above to create a sub-structure of Request Handlers (rr}r(h0X requests to "/test", which brings us to the final point of creating URL structures in your application. As seen above to create a sub-structure of Request Handlers (h2jtubj,)r}r(h0X*a tree*h7}r(h>]h?]h=]h;]h@]uh2jth+]rh`Xa treerr}r(h0Uh2jubah5j4ubh`X) simply create another rr}r(h0X) simply create another h2jtubh)r}r(h0X:class:`~.Controller`rh2jth3h4h5hh7}r(UreftypeXclassj<hhX ControllerU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBKh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-classreh=]h;]h@]uh2jh+]rh`X Controllerrr}r(h0Uh2jubah5j ubaubh`Xi Component giving it a different channel and add it to the system along with your existing Controller(s).rr}r(h0Xi Component giving it a different channel and add it to the system along with your existing Controller(s).h2jtubeubj)r}r(h0XAll public methods defined in your :class:`~.Controller`(s) are exposed as valid URI(s) in your web application. If you don't want something exposed either subclass from :class:`~BaseController` whereby you have to explicitly use :meth:`~.expose` or use ``@expose(False)`` to decorate a public method as **NOT Exposed** or simply prefix the desired method with an underscore (e.g: ``def _foo(...):``).h2jh3h4h5j"h7}r(h>]h?]h=]h;]h@]uhBNhChh+]rhd)r}r(h0XAll public methods defined in your :class:`~.Controller`(s) are exposed as valid URI(s) in your web application. If you don't want something exposed either subclass from :class:`~BaseController` whereby you have to explicitly use :meth:`~.expose` or use ``@expose(False)`` to decorate a public method as **NOT Exposed** or simply prefix the desired method with an underscore (e.g: ``def _foo(...):``).h2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMh+]r(h`X#All public methods defined in your rr}r(h0X#All public methods defined in your h2jubh)r}r(h0X:class:`~.Controller`(s) are exposed as valid URI(s) in your web application. If you don't want something exposed either subclass from :class:`~BaseController`rh2jh3h4h5hh7}r(UreftypeXclassj<hhXController`(s) are exposed as valid URI(s) in your web application. If you don't want something exposed either subclass from :class:`~BaseControllerU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-classreh=]h;]h@]uh2jh+]rh`XQ If you don't want something exposed either subclass from :class:`~BaseControllerrr}r(h0Uh2jubah5j ubaubh`X$ whereby you have to explicitly use rr}r(h0X$ whereby you have to explicitly use h2jubh)r}r(h0X:meth:`~.expose`rh2jh3h4h5hh7}r(UreftypeXmethj<hhXexposeU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-methreh=]h;]h@]uh2jh+]rh`Xexpose()rr}r(h0Uh2jubah5j ubaubh`X or use rr}r(h0X or use h2jubj)r}r(h0X``@expose(False)``h7}r(h>]h?]h=]h;]h@]uh2jh+]rh`X@expose(False)rr}r(h0Uh2jubah5j ubh`X to decorate a public method as rr}r(h0X to decorate a public method as h2jubhm)r}r(h0X**NOT Exposed**h7}r(h>]h?]h=]h;]h@]uh2jh+]rh`X NOT Exposedrr}r(h0Uh2jubah5huubh`X> or simply prefix the desired method with an underscore (e.g: rr}r(h0X> or simply prefix the desired method with an underscore (e.g: h2jubj)r}r(h0X``def _foo(...):``h7}r(h>]h?]h=]h;]h@]uh2jh+]rh`Xdef _foo(...):rr}r(h0Uh2jubah5j ubh`X).rr}r(h0X).h2jubeubaubeubhQ)r}r(h0Uh2j@h3h4h5hTh7}r(h>]h?]h=]h;]rh!ah@]rh auhBM hChh+]r(hY)r}r(h0X VirtualHostsrh2jh3h4h5h]h7}r(h>]h?]h=]h;]h@]uhBM hChh+]rh`X VirtualHostsrr}r(h0jh2jubaubhd)r}r(h0XThe :class:`~.VirtualHosts` "dispatcher" allows you to serves up different parts of your application for different "virtual" hosts.h2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBM hChh+]r(h`XThe rr}r(h0XThe h2jubh)r}r(h0X:class:`~.VirtualHosts`rh2jh3h4h5hh7}r(UreftypeXclassj<hhX VirtualHostsU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBM h+]rj)r }r (h0jh7}r (h>]h?]r (jjXpy-classr eh=]h;]h@]uh2jh+]rh`X VirtualHostsrr}r(h0Uh2j ubah5j ubaubh`Xh "dispatcher" allows you to serves up different parts of your application for different "virtual" hosts.rr}r(h0Xh "dispatcher" allows you to serves up different parts of your application for different "virtual" hosts.h2jubeubhd)r}r(h0X;Consider for example you have the following hosts defined::rh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMhChh+]rh`X:Consider for example you have the following hosts defined:rr}r(h0X:Consider for example you have the following hosts defined:h2jubaubj)r}r(h0X+localdomain foo.localdomain bar.localdomainh2jh3h4h5jh7}r(jjh;]h=]h>]h?]h@]uhBMhChh+]r h`X+localdomain foo.localdomain bar.localdomainr!r"}r#(h0Uh2jubaubhd)r$}r%(h0XYou want to display something different on the default domain name "localdomain" and something different for each of the sub-domains "foo.localdomain" and "bar.localdomain".r&h2jh3h4h5hgh7}r'(h>]h?]h=]h;]h@]uhBMhChh+]r(h`XYou want to display something different on the default domain name "localdomain" and something different for each of the sub-domains "foo.localdomain" and "bar.localdomain".r)r*}r+(h0j&h2j$ubaubhd)r,}r-(h0X1To do this, we use the VirtualHosts "dispatcher":r.h2jh3h4h5hgh7}r/(h>]h?]h=]h;]h@]uhBMhChh+]r0h`X1To do this, we use the VirtualHosts "dispatcher":r1r2}r3(h0j.h2j,ubaubj)r4}r5(h0Xfrom circuits.web import Server, Controller, VirtualHosts class Root(Controller): def index(self): return "I am the main vhost" class Foo(Controller): channel = "/foo" def index(self): return "I am foo." class Bar(Controller): channel = "/bar" def index(self): return "I am bar." domains = { "foo.localdomain:8000": "foo", "bar.localdomain:8000": "bar", } (Server(8000) + VirtualHosts(domains) + Root() + Foo() + Bar()).run()h2jh3h4h5jh7}r6(jjXpythonjjh;]h=]h>]h?]h@]uhBMhChh+]r7h`Xfrom circuits.web import Server, Controller, VirtualHosts class Root(Controller): def index(self): return "I am the main vhost" class Foo(Controller): channel = "/foo" def index(self): return "I am foo." class Bar(Controller): channel = "/bar" def index(self): return "I am bar." domains = { "foo.localdomain:8000": "foo", "bar.localdomain:8000": "bar", } (Server(8000) + VirtualHosts(domains) + Root() + Foo() + Bar()).run()r8r9}r:(h0Uh2j4ubaubhd)r;}r<(h0XWith the following requests::r=h2jh3h4h5hgh7}r>(h>]h?]h=]h;]h@]uhBM?hChh+]r?h`XWith the following requests:r@rA}rB(h0XWith the following requests:h2j;ubaubj)rC}rD(h0XRhttp://localdomain:8000/ http://foo.localdomain:8000/ http://bar.localdomain:8000/h2jh3h4h5jh7}rE(jjh;]h=]h>]h?]h@]uhBMAhChh+]rFh`XRhttp://localdomain:8000/ http://foo.localdomain:8000/ http://bar.localdomain:8000/rGrH}rI(h0Uh2jCubaubhd)rJ}rK(h0X"The following output is produced::rLh2jh3h4h5hgh7}rM(h>]h?]h=]h;]h@]uhBMEhChh+]rNh`X!The following output is produced:rOrP}rQ(h0X!The following output is produced:h2jJubaubj)rR}rS(h0X'I am the main vhost I am foo. I am bar.h2jh3h4h5jh7}rT(jjh;]h=]h>]h?]h@]uhBMGhChh+]rUh`X'I am the main vhost I am foo. I am bar.rVrW}rX(h0Uh2jRubaubhd)rY}rZ(h0XhThe argument **domains** pasted to VirtualHosts' constructor is a mapping (*dict*) of: domain -> channelh2jh3h4h5hgh7}r[(h>]h?]h=]h;]h@]uhBMKhChh+]r\(h`X The argument r]r^}r_(h0X The argument h2jYubhm)r`}ra(h0X **domains**h7}rb(h>]h?]h=]h;]h@]uh2jYh+]rch`Xdomainsrdre}rf(h0Uh2j`ubah5huubh`X3 pasted to VirtualHosts' constructor is a mapping (rgrh}ri(h0X3 pasted to VirtualHosts' constructor is a mapping (h2jYubj,)rj}rk(h0X*dict*h7}rl(h>]h?]h=]h;]h@]uh2jYh+]rmh`Xdictrnro}rp(h0Uh2jjubah5j4ubh`X) of: domain -> channelrqrr}rs(h0X) of: domain -> channelh2jYubeubeubhQ)rt}ru(h0Uh2j@h3h4h5hTh7}rv(h>]h?]h=]h;]rwh"ah@]rxh auhBMPhChh+]ry(hY)rz}r{(h0XXMLRPCr|h2jth3h4h5h]h7}r}(h>]h?]h=]h;]h@]uhBMPhChh+]r~h`XXMLRPCrr}r(h0j|h2jzubaubhd)r}r(h0XThe :class:`~.XMLRPC` "dispatcher" provides a circuits.web application with the capability of serving up RPC Requests encoded in XML (XML-RPC).rh2jth3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMShChh+]r(h`XThe rr}r(h0XThe h2jubh)r}r(h0X:class:`~.XMLRPC`rh2jh3h4h5hh7}r(UreftypeXclassj<hhXXMLRPCU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMSh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-classreh=]h;]h@]uh2jh+]rh`XXMLRPCrr}r(h0Uh2jubah5j ubaubh`Xz "dispatcher" provides a circuits.web application with the capability of serving up RPC Requests encoded in XML (XML-RPC).rr}r(h0Xz "dispatcher" provides a circuits.web application with the capability of serving up RPC Requests encoded in XML (XML-RPC).h2jubeubhd)r}r(h0XWithout going into too much details (*if you're using any kind of RPC "dispatcher" you should know what you're doing...*), here is a simple example:rh2jth3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMUhChh+]r(h`X%Without going into too much details (rr}r(h0X%Without going into too much details (h2jubj,)r}r(h0XS*if you're using any kind of RPC "dispatcher" you should know what you're doing...*h7}r(h>]h?]h=]h;]h@]uh2jh+]rh`XQif you're using any kind of RPC "dispatcher" you should know what you're doing...rr}r(h0Uh2jubah5j4ubh`X), here is a simple example:rr}r(h0X), here is a simple example:h2jubeubj)r}r(h0Xfrom circuits import Component from circuits.web import Server, Logger, XMLRPC class Test(Component): def foo(self, a, b, c): return a, b, c (Server(8000) + Logger() + XMLRPC() + Test()).run()h2jth3h4h5jh7}r(jjXpythonjjh;]h=]h>]h?]h@]uhBMWhChh+]rh`Xfrom circuits import Component from circuits.web import Server, Logger, XMLRPC class Test(Component): def foo(self, a, b, c): return a, b, c (Server(8000) + Logger() + XMLRPC() + Test()).run()rr}r(h0Uh2jubaubhd)r}r(h0X&Here is a simple interactive session::rh2jth3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMfhChh+]rh`X%Here is a simple interactive session:rr}r(h0X%Here is a simple interactive session:h2jubaubj)r}r(h0X{>>> import xmlrpclib >>> xmlrpc = xmlrpclib.ServerProxy("http://127.0.0.1:8000/rpc/") >>> xmlrpc.foo(1, 2, 3) [1, 2, 3] >>>h2jth3h4h5jh7}r(jjh;]h=]h>]h?]h@]uhBMhhChh+]rh`X{>>> import xmlrpclib >>> xmlrpc = xmlrpclib.ServerProxy("http://127.0.0.1:8000/rpc/") >>> xmlrpc.foo(1, 2, 3) [1, 2, 3] >>>rr}r(h0Uh2jubaubeubhQ)r}r(h0Uh2j@h3h4h5hTh7}r(h>]h?]h=]h;]rh'ah@]rhauhBMphChh+]r(hY)r}r(h0XJSONRPCrh2jh3h4h5h]h7}r(h>]h?]h=]h;]h@]uhBMphChh+]rh`XJSONRPCrr}r(h0jh2jubaubhd)r}r(h0XhThe :class:`~.JSONRPC` "dispatcher" is Identical in functionality to the :class:`~.XMLRPC` "dispatcher".rh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMrhChh+]r(h`XThe rr}r(h0XThe h2jubh)r}r(h0X:class:`~.JSONRPC`rh2jh3h4h5hh7}r(UreftypeXclassj<hhXJSONRPCU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMrh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-classreh=]h;]h@]uh2jh+]rh`XJSONRPCrr}r(h0Uh2jubah5j ubaubh`X3 "dispatcher" is Identical in functionality to the rr}r(h0X3 "dispatcher" is Identical in functionality to the h2jubh)r}r(h0X:class:`~.XMLRPC`rh2jh3h4h5hh7}r(UreftypeXclassj<hhXXMLRPCU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMrh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-classreh=]h;]h@]uh2jh+]rh`XXMLRPCrr}r(h0Uh2jubah5j ubaubh`X "dispatcher".rr}r(h0X "dispatcher".h2jubeubhd)r}r(h0XExample:rh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMthChh+]rh`XExample:rr}r(h0jh2jubaubj)r}r(h0Xfrom circuits import Component from circuits.web import Server, Logger, JSONRPC class Test(Component): def foo(self, a, b, c): return a, b, c (Server(8000) + Logger() + JSONRPC() + Test()).run()h2jh3h4h5jh7}r(jjXpythonjjh;]h=]h>]h?]h@]uhBMvhChh+]r h`Xfrom circuits import Component from circuits.web import Server, Logger, JSONRPC class Test(Component): def foo(self, a, b, c): return a, b, c (Server(8000) + Logger() + JSONRPC() + Test()).run()r r }r (h0Uh2jubaubhd)r }r(h0XcInteractive session (*requires the `jsonrpclib `_ library*)::rh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMhChh+]r(h`XInteractive session (rr}r(h0XInteractive session (h2j ubj,)r}r(h0XK*requires the `jsonrpclib `_ library*h7}r(h>]h?]h=]h;]h@]uh2j h+]rh`XIrequires the `jsonrpclib `_ libraryrr}r(h0Uh2jubah5j4ubh`X):rr}r(h0X):h2j ubeubj)r}r (h0X>>> import jsonrpclib >>> jsonrpc = jsonrpclib.ServerProxy("http://127.0.0.1:8000/rpc/") >>> jsonrpc.foo(1, 2, 3) {'result': [1, 2, 3], 'version': '1.1', 'id': 2, 'error': None} >>>h2jh3h4h5jh7}r!(jjh;]h=]h>]h?]h@]uhBMhChh+]r"h`X>>> import jsonrpclib >>> jsonrpc = jsonrpclib.ServerProxy("http://127.0.0.1:8000/rpc/") >>> jsonrpc.foo(1, 2, 3) {'result': [1, 2, 3], 'version': '1.1', 'id': 2, 'error': None} >>>r#r$}r%(h0Uh2jubaubeubeubhQ)r&}r'(h0Uh2hRh3h4h5hTh7}r((h>]h?]h=]h;]r)h&ah@]r*hauhBMhChh+]r+(hY)r,}r-(h0XCachingr.h2j&h3h4h5h]h7}r/(h>]h?]h=]h;]h@]uhBMhChh+]r0h`XCachingr1r2}r3(h0j.h2j,ubaubhd)r4}r5(h0Xccircuits.web includes all the usual **Cache Control**, **Expires** and **ETag** caching mechanisms.h2j&h3h4h5hgh7}r6(h>]h?]h=]h;]h@]uhBMhChh+]r7(h`X$circuits.web includes all the usual r8r9}r:(h0X$circuits.web includes all the usual h2j4ubhm)r;}r<(h0X**Cache Control**h7}r=(h>]h?]h=]h;]h@]uh2j4h+]r>h`X Cache Controlr?r@}rA(h0Uh2j;ubah5huubh`X, rBrC}rD(h0X, h2j4ubhm)rE}rF(h0X **Expires**h7}rG(h>]h?]h=]h;]h@]uh2j4h+]rHh`XExpiresrIrJ}rK(h0Uh2jEubah5huubh`X and rLrM}rN(h0X and h2j4ubhm)rO}rP(h0X**ETag**h7}rQ(h>]h?]h=]h;]h@]uh2j4h+]rRh`XETagrSrT}rU(h0Uh2jOubah5huubh`X caching mechanisms.rVrW}rX(h0X caching mechanisms.h2j4ubeubhd)rY}rZ(h0XfFor simple expires style caching use the :meth:`~.tools.expires` tool from :mod:`.circuits.web.tools`.r[h2j&h3h4h5hgh7}r\(h>]h?]h=]h;]h@]uhBMhChh+]r](h`X)For simple expires style caching use the r^r_}r`(h0X)For simple expires style caching use the h2jYubh)ra}rb(h0X:meth:`~.tools.expires`rch2jYh3h4h5hh7}rd(UreftypeXmethj<hhX tools.expiresU refdomainXpyreh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMh+]rfj)rg}rh(h0jch7}ri(h>]h?]rj(jjeXpy-methrkeh=]h;]h@]uh2jah+]rlh`X expires()rmrn}ro(h0Uh2jgubah5j ubaubh`X tool from rprq}rr(h0X tool from h2jYubh)rs}rt(h0X:mod:`.circuits.web.tools`ruh2jYh3h4h5hh7}rv(UreftypeXmodj<hhXcircuits.web.toolsU refdomainXpyrwh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMh+]rxj)ry}rz(h0juh7}r{(h>]h?]r|(jjwXpy-modr}eh=]h;]h@]uh2jsh+]r~h`Xcircuits.web.toolsrr}r(h0Uh2jyubah5j ubaubh`X.r}r(h0X.h2jYubeubhd)r}r(h0XExample:rh2j&h3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMhChh+]rh`XExample:rr}r(h0jh2jubaubj)r}r(h0X from circuits.web import Server, Controller class Root(Controller): def index(self): self.expires(3600) return "Hello World!" (Server(8000) + Root()).run()h2j&h3h4h5jh7}r(jjXpythonjjh;]h=]h>]h?]h@]uhBMhChh+]rh`X from circuits.web import Server, Controller class Root(Controller): def index(self): self.expires(3600) return "Hello World!" (Server(8000) + Root()).run()rr}r(h0Uh2jubaubhd)r}r(h0XhFor other caching mechanisms and validation please refer to the :mod:`circuits.web.tools` documentation.h2j&h3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMhChh+]r(h`X@For other caching mechanisms and validation please refer to the rr}r(h0X@For other caching mechanisms and validation please refer to the h2jubh)r}r(h0X:mod:`circuits.web.tools`rh2jh3h4h5hh7}r(UreftypeXmodhhXcircuits.web.toolsU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-modreh=]h;]h@]uh2jh+]rh`Xcircuits.web.toolsrr}r(h0Uh2jubah5j ubaubh`X documentation.rr}r(h0X documentation.h2jubeubhd)r}r(h0XSee in particular:rh2j&h3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMhChh+]rh`XSee in particular:rr}r(h0jh2jubaubh)r}r(h0Uh2j&h3h4h5hh7}r(hX-h;]h=]h>]h?]h@]uhBMhChh+]r(h)r}r(h0X:meth:`~.tools.expires`rh2jh3h4h5hh7}r(h>]h?]h=]h;]h@]uhBNhChh+]rhd)r}r(h0jh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMh+]rh)r}r(h0jh2jh3h4h5hh7}r(UreftypeXmethj<hhX tools.expiresU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-methreh=]h;]h@]uh2jh+]rh`X expires()rr}r(h0Uh2jubah5j ubaubaubaubh)r}r(h0X:meth:`~.tools.validate_since` h2jh3h4h5hh7}r(h>]h?]h=]h;]h@]uhBNhChh+]rhd)r}r(h0X:meth:`~.tools.validate_since`rh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMh+]rh)r}r(h0jh2jh3h4h5hh7}r(UreftypeXmethj<hhXtools.validate_sinceU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-methreh=]h;]h@]uh2jh+]rh`Xvalidate_since()rr}r(h0Uh2jubah5j ubaubaubaubeubj)r}r(h0XIn the example above we used ``self.expires(3600)`` which is just a convenience method built into the :class:`~.Controller`. The :class:`~.Controller` has other such convenience methods such as ``.uri``, ``.forbidden()``, ``.redirect()``, ``.notfound()``, ``.serve_file()``, ``.serve_download()`` and ``.expires()``. These are just wrappers around :mod:`~.tools` and :mod:`~.events`.h2j&h3h4h5j h7}r(h>]h?]h=]h;]h@]uhBNhChh+]r(hd)r}r(h0X<In the example above we used ``self.expires(3600)`` which is just a convenience method built into the :class:`~.Controller`. The :class:`~.Controller` has other such convenience methods such as ``.uri``, ``.forbidden()``, ``.redirect()``, ``.notfound()``, ``.serve_file()``, ``.serve_download()`` and ``.expires()``.h2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMh+]r(h`XIn the example above we used rr}r(h0XIn the example above we used h2jubj)r}r(h0X``self.expires(3600)``h7}r(h>]h?]h=]h;]h@]uh2jh+]rh`Xself.expires(3600)rr}r(h0Uh2jubah5j ubh`X3 which is just a convenience method built into the rr}r(h0X3 which is just a convenience method built into the h2jubh)r}r(h0X:class:`~.Controller`rh2jh3h4h5hh7}r(UreftypeXclassj<hhX ControllerU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-classreh=]h;]h@]uh2jh+]rh`X Controllerrr}r (h0Uh2jubah5j ubaubh`X. The r r }r (h0X. The h2jubh)r }r(h0X:class:`~.Controller`rh2jh3h4h5hh7}r(UreftypeXclassj<hhX ControllerU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-classreh=]h;]h@]uh2j h+]rh`X Controllerrr}r(h0Uh2jubah5j ubaubh`X, has other such convenience methods such as rr}r(h0X, has other such convenience methods such as h2jubj)r}r (h0X``.uri``h7}r!(h>]h?]h=]h;]h@]uh2jh+]r"h`X.urir#r$}r%(h0Uh2jubah5j ubh`X, r&r'}r((h0X, h2jubj)r)}r*(h0X``.forbidden()``h7}r+(h>]h?]h=]h;]h@]uh2jh+]r,h`X .forbidden()r-r.}r/(h0Uh2j)ubah5j ubh`X, r0r1}r2(h0X, h2jubj)r3}r4(h0X``.redirect()``h7}r5(h>]h?]h=]h;]h@]uh2jh+]r6h`X .redirect()r7r8}r9(h0Uh2j3ubah5j ubh`X, r:r;}r<(h0X, h2jubj)r=}r>(h0X``.notfound()``h7}r?(h>]h?]h=]h;]h@]uh2jh+]r@h`X .notfound()rArB}rC(h0Uh2j=ubah5j ubh`X, rDrE}rF(h0X, h2jubj)rG}rH(h0X``.serve_file()``h7}rI(h>]h?]h=]h;]h@]uh2jh+]rJh`X .serve_file()rKrL}rM(h0Uh2jGubah5j ubh`X, rNrO}rP(h0X, h2jubj)rQ}rR(h0X``.serve_download()``h7}rS(h>]h?]h=]h;]h@]uh2jh+]rTh`X.serve_download()rUrV}rW(h0Uh2jQubah5j ubh`X and rXrY}rZ(h0X and h2jubj)r[}r\(h0X``.expires()``h7}r](h>]h?]h=]h;]h@]uh2jh+]r^h`X .expires()r_r`}ra(h0Uh2j[ubah5j ubh`X.rb}rc(h0X.h2jubeubhd)rd}re(h0XBThese are just wrappers around :mod:`~.tools` and :mod:`~.events`.h2jh3h4h5hgh7}rf(h>]h?]h=]h;]h@]uhBMh+]rg(h`XThese are just wrappers around rhri}rj(h0XThese are just wrappers around h2jdubh)rk}rl(h0X:mod:`~.tools`rmh2jdh3h4h5hh7}rn(UreftypeXmodj<hhXtoolsU refdomainXpyroh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMh+]rpj)rq}rr(h0jmh7}rs(h>]h?]rt(jjoXpy-modrueh=]h;]h@]uh2jkh+]rvh`Xtoolsrwrx}ry(h0Uh2jqubah5j ubaubh`X and rzr{}r|(h0X and h2jdubh)r}}r~(h0X:mod:`~.events`rh2jdh3h4h5hh7}r(UreftypeXmodj<hhXeventsU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-modreh=]h;]h@]uh2j}h+]rh`Xeventsrr}r(h0Uh2jubah5j ubaubh`X.r}r(h0X.h2jdubeubeubeubhQ)r}r(h0Uh2hRh3h4h5hTh7}r(h>]h?]h=]h;]rh*ah@]rhauhBMhChh+]r(hY)r}r(h0X Compressionrh2jh3h4h5h]h7}r(h>]h?]h=]h;]h@]uhBMhChh+]rh`X Compressionrr}r(h0jh2jubaubhd)r}r(h0Xcircuits.web includes the necessary low-level tools in order to achieve compression. These tools are provided as a set of functions that can be applied to the response before it is sent to the client.rh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMhChh+]rh`Xcircuits.web includes the necessary low-level tools in order to achieve compression. These tools are provided as a set of functions that can be applied to the response before it is sent to the client.rr}r(h0jh2jubaubhd)r}r(h0XiHere's how you can create a simple Component that enables compression in your web application or website.rh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMhChh+]rh`XiHere's how you can create a simple Component that enables compression in your web application or website.rr}r(h0jh2jubaubj)r}r(h0Xfrom circuits import handler, Component from circuits.web.tools import gzip from circuits.web import Server, Controller, Logger class Gzip(Component): @handler("response", priority=1.0) def compress_response(self, event, response): event[0] = gzip(response) class Root(Controller): def index(self): return "Hello World!" (Server(8000) + Gzip() + Root()).run()h2jh3h4h5jh7}r(jjXpythonjjh;]h=]h>]h?]h@]uhBMhChh+]rh`Xfrom circuits import handler, Component from circuits.web.tools import gzip from circuits.web import Server, Controller, Logger class Gzip(Component): @handler("response", priority=1.0) def compress_response(self, event, response): event[0] = gzip(response) class Root(Controller): def index(self): return "Hello World!" (Server(8000) + Gzip() + Root()).run()rr}r(h0Uh2jubaubhd)r}r(h0X6Please refer to the documentation for further details:rh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMhChh+]rh`X6Please refer to the documentation for further details:rr}r(h0jh2jubaubh)r}r(h0Uh2jh3h4h5hh7}r(hX-h;]h=]h>]h?]h@]uhBMhChh+]r(h)r}r(h0X:func:`.tools.gzip`rh2jh3h4h5hh7}r(h>]h?]h=]h;]h@]uhBNhChh+]rhd)r}r(h0jh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMh+]rh)r}r(h0jh2jh3h4h5hh7}r(UreftypeXfuncj<hhX tools.gzipU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-funcreh=]h;]h@]uh2jh+]rh`X tools.gzip()rr}r(h0Uh2jubah5j ubaubaubaubh)r}r(h0X:func:`.utils.compress` h2jh3h4h5hh7}r(h>]h?]h=]h;]h@]uhBNhChh+]rhd)r}r(h0X:func:`.utils.compress`rh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMh+]rh)r}r(h0jh2jh3h4h5hh7}r(UreftypeXfuncj<hhXutils.compressU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMh+]rj)r}r(h0jh7}r(h>]h?]r(jjXpy-funcreh=]h;]h@]uh2jh+]rh`Xutils.compress()rr}r(h0Uh2jubah5j ubaubaubaubeubeubhQ)r}r(h0Uh2hRh3h4h5hTh7}r(h>]h?]h=]h;]rh$ah@]rh auhBMhChh+]r(hY)r}r(h0XAuthenticationrh2jh3h4h5h]h7}r(h>]h?]h=]h;]h@]uhBMhChh+]rh`XAuthenticationrr}r(h0jh2jubaubhd)r}r(h0Xwcircuits.web provides both HTTP Plain and Digest Authentication provided by the functions in :mod:`circuits.web.tools`:rh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMhChh+]r(h`X]circuits.web provides both HTTP Plain and Digest Authentication provided by the functions in rr}r(h0X]circuits.web provides both HTTP Plain and Digest Authentication provided by the functions in h2jubh)r}r(h0X:mod:`circuits.web.tools`rh2jh3h4h5hh7}r(UreftypeXmodhhXcircuits.web.toolsU refdomainXpyrh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMh+]rj)r }r (h0jh7}r (h>]h?]r (jjXpy-modr eh=]h;]h@]uh2jh+]rh`Xcircuits.web.toolsrr}r(h0Uh2j ubah5j ubaubh`X:r}r(h0X:h2jubeubh)r}r(h0Uh2jh3h4h5hh7}r(hX-h;]h=]h>]h?]h@]uhBMhChh+]r(h)r}r(h0X:func:`.tools.basic_auth`rh2jh3h4h5hh7}r(h>]h?]h=]h;]h@]uhBNhChh+]rhd)r}r(h0jh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMh+]r h)r!}r"(h0jh2jh3h4h5hh7}r#(UreftypeXfuncj<hhXtools.basic_authU refdomainXpyr$h;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMh+]r%j)r&}r'(h0jh7}r((h>]h?]r)(jj$Xpy-funcr*eh=]h;]h@]uh2j!h+]r+h`Xtools.basic_auth()r,r-}r.(h0Uh2j&ubah5j ubaubaubaubh)r/}r0(h0X:func:`.tools.check_auth`r1h2jh3h4h5hh7}r2(h>]h?]h=]h;]h@]uhBNhChh+]r3hd)r4}r5(h0j1h2j/h3h4h5hgh7}r6(h>]h?]h=]h;]h@]uhBMh+]r7h)r8}r9(h0j1h2j4h3h4h5hh7}r:(UreftypeXfuncj<hhXtools.check_authU refdomainXpyr;h;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMh+]r<j)r=}r>(h0j1h7}r?(h>]h?]r@(jj;Xpy-funcrAeh=]h;]h@]uh2j8h+]rBh`Xtools.check_auth()rCrD}rE(h0Uh2j=ubah5j ubaubaubaubh)rF}rG(h0X:func:`.tools.digest_auth` h2jh3h4h5hh7}rH(h>]h?]h=]h;]h@]uhBNhChh+]rIhd)rJ}rK(h0X:func:`.tools.digest_auth`rLh2jFh3h4h5hgh7}rM(h>]h?]h=]h;]h@]uhBMh+]rNh)rO}rP(h0jLh2jJh3h4h5hh7}rQ(UreftypeXfuncj<hhXtools.digest_authU refdomainXpyrRh;]h=]U refexplicith>]h?]h@]hhj>Nj?j@uhBMh+]rSj)rT}rU(h0jLh7}rV(h>]h?]rW(jjRXpy-funcrXeh=]h;]h@]uh2jOh+]rYh`Xtools.digest_auth()rZr[}r\(h0Uh2jTubah5j ubaubaubaubeubhd)r]}r^(h0XEThe first 2 arguments are always (*as with most circuits.web tools*):r_h2jh3h4h5hgh7}r`(h>]h?]h=]h;]h@]uhBMhChh+]ra(h`X"The first 2 arguments are always (rbrc}rd(h0X"The first 2 arguments are always (h2j]ubj,)re}rf(h0X!*as with most circuits.web tools*h7}rg(h>]h?]h=]h;]h@]uh2j]h+]rhh`Xas with most circuits.web toolsrirj}rk(h0Uh2jeubah5j4ubh`X):rlrm}rn(h0X):h2j]ubeubh)ro}rp(h0Uh2jh3h4h5hh7}rq(hX-h;]h=]h>]h?]h@]uhBMhChh+]rrh)rs}rt(h0X``(request, response)`` h2joh3h4h5hh7}ru(h>]h?]h=]h;]h@]uhBNhChh+]rvhd)rw}rx(h0X``(request, response)``ryh2jsh3h4h5hgh7}rz(h>]h?]h=]h;]h@]uhBMh+]r{j)r|}r}(h0jyh7}r~(h>]h?]h=]h;]h@]uh2jwh+]rh`X(request, response)rr}r(h0Uh2j|ubah5j ubaubaubaubhd)r}r(h0X1An example demonstrating the use of "Basic Auth":rh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMhChh+]rh`X1An example demonstrating the use of "Basic Auth":rr}r(h0jh2jubaubj)r}r(h0Xfrom circuits.web import Server, Controller from circuits.web.tools import check_auth, basic_auth class Root(Controller): def index(self): realm = "Test" users = {"admin": "admin"} encrypt = str if check_auth(self.request, self.response, realm, users, encrypt): return "Hello %s" % self.request.login return basic_auth(self.request, self.response, realm, users, encrypt) (Server(8000) + Root()).run()h2jh3h4h5jh7}r(jjXpythonjjh;]h=]h>]h?]h@]uhBMhChh+]rh`Xfrom circuits.web import Server, Controller from circuits.web.tools import check_auth, basic_auth class Root(Controller): def index(self): realm = "Test" users = {"admin": "admin"} encrypt = str if check_auth(self.request, self.response, realm, users, encrypt): return "Hello %s" % self.request.login return basic_auth(self.request, self.response, realm, users, encrypt) (Server(8000) + Root()).run()rr}r(h0Uh2jubaubhd)r}r(h0XFor "Digest Auth":rh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBMhChh+]rh`XFor "Digest Auth":rr}r(h0jh2jubaubj)r}r(h0Xfrom circuits.web import Server, Controller from circuits.web.tools import check_auth, digest_auth class Root(Controller): def index(self): realm = "Test" users = {"admin": "admin"} encrypt = str if check_auth(self.request, self.response, realm, users, encrypt): return "Hello %s" % self.request.login return digest_auth(self.request, self.response, realm, users, encrypt) (Server(8000) + Root()).run()h2jh3h4h5jh7}r(jjXpythonjjh;]h=]h>]h?]h@]uhBMhChh+]rh`Xfrom circuits.web import Server, Controller from circuits.web.tools import check_auth, digest_auth class Root(Controller): def index(self): realm = "Test" users = {"admin": "admin"} encrypt = str if check_auth(self.request, self.response, realm, users, encrypt): return "Hello %s" % self.request.login return digest_auth(self.request, self.response, realm, users, encrypt) (Server(8000) + Root()).run()rr}r(h0Uh2jubaubeubhQ)r}r(h0Uh2hRh3h4h5hTh7}r(h>]h?]h=]h;]rh(ah@]rhauhBM hChh+]r(hY)r}r(h0XSession Handlingrh2jh3h4h5h]h7}r(h>]h?]h=]h;]h@]uhBM hChh+]rh`XSession Handlingrr}r(h0jh2jubaubhd)r}r(h0XSession Handling in circuits.web is very similar to Cookies. A dict-like object called **.session** is attached to every Request Object during the life-cycle of that request. Internally a Cookie named **circuits.session** is set in the response.h2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBM"hChh+]r(h`XWSession Handling in circuits.web is very similar to Cookies. A dict-like object called rr}r(h0XWSession Handling in circuits.web is very similar to Cookies. A dict-like object called h2jubhm)r}r(h0X **.session**h7}r(h>]h?]h=]h;]h@]uh2jh+]rh`X.sessionrr}r(h0Uh2jubah5huubh`Xf is attached to every Request Object during the life-cycle of that request. Internally a Cookie named rr}r(h0Xf is attached to every Request Object during the life-cycle of that request. Internally a Cookie named h2jubhm)r}r(h0X**circuits.session**h7}r(h>]h?]h=]h;]h@]uh2jh+]rh`Xcircuits.sessionrr}r(h0Uh2jubah5huubh`X is set in the response.rr}r(h0X is set in the response.h2jubeubhd)r}r(h0X6Rewriting the Cookie Example to use a session instead:rh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBM'hChh+]rh`X6Rewriting the Cookie Example to use a session instead:rr}r(h0jh2jubaubj)r}r(h0X=from circuits.web import Server, Controller, Sessions class Root(Controller): def index(self, name=None): if name: self.session["name"] = name else: name = self.session.get("name", "World!") return "Hello %s!" % name (Server(8000) + Sessions() + Root()).run()h2jh3h4h5jh7}r(jjXpythonjjh;]h=]h>]h?]h@]uhBM)hChh+]rh`X=from circuits.web import Server, Controller, Sessions class Root(Controller): def index(self, name=None): if name: self.session["name"] = name else: name = self.session.get("name", "World!") return "Hello %s!" % name (Server(8000) + Sessions() + Root()).run()rr}r(h0Uh2jubaubj)r}r(h0XThe only Session Handling provided is a temporary in-memory based one and will not persist. No future Session Handling components are planned. For persistent data you should use some kind of Database.h2jh3h4h5j h7}r(h>]h?]h=]h;]h@]uhBNhChh+]rhd)r}r(h0XThe only Session Handling provided is a temporary in-memory based one and will not persist. No future Session Handling components are planned. For persistent data you should use some kind of Database.rh2jh3h4h5hgh7}r(h>]h?]h=]h;]h@]uhBM<h+]rh`XThe only Session Handling provided is a temporary in-memory based one and will not persist. No future Session Handling components are planned. For persistent data you should use some kind of Database.rr}r(h0jh2jubaubaubeubeubeh0UU transformerrNU footnote_refsr}rUrefnamesr}rXcherrypy]rhasUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rhChU current_linerNUtransform_messagesr]rcdocutils.nodes system_message r)r}r(h0Uh7}r(h>]UlevelKh;]h=]Usourceh4h?]h@]UlineKUtypeUINFOruh+]rhd)r}r(h0Uh7}r(h>]h?]h=]h;]h@]uh2jh+]rh`X9Hyperlink target "module-circuits.web" is not referenced.r r }r (h0Uh2jubah5hgubah5Usystem_messager ubaUreporterr 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 tracebackr Upep_referencesr NUstrip_commentsr NU toc_backlinksr Uentryr U language_coder Uenr U datestampr NU report_levelr KU _destinationr NU halt_levelr KU strip_classesr Nh]NUerror_encoding_error_handlerr Ubackslashreplacer! Udebugr" NUembed_stylesheetr# Uoutput_encoding_error_handlerr$ Ustrictr% U sectnum_xformr& KUdump_transformsr' NU docinfo_xformr( KUwarning_streamr) NUpep_file_url_templater* Upep-%04dr+ Uexit_status_levelr, KUconfigr- NUstrict_visitorr. NUcloak_email_addressesr/ Utrim_footnote_reference_spacer0 Uenvr1 NUdump_pseudo_xmlr2 NUexpose_internalsr3 NUsectsubtitle_xformr4 U source_linkr5 NUrfc_referencesr6 NUoutput_encodingr7 Uutf-8r8 U source_urlr9 NUinput_encodingr: U utf-8-sigr; U_disable_configr< NU id_prefixr= UU tab_widthr> KUerror_encodingr? UUTF-8r@ U_sourcerA h4Ugettext_compactrB U generatorrC NUdump_internalsrD NU smart_quotesrE U pep_base_urlrF Uhttp://www.python.org/dev/peps/rG Usyntax_highlightrH UlongrI Uinput_encoding_error_handlerrJ j% Uauto_id_prefixrK UidrL Udoctitle_xformrM Ustrip_elements_with_classesrN NU _config_filesrO ]Ufile_insertion_enabledrP U raw_enabledrQ KU dump_settingsrR NubUsymbol_footnote_startrS KUidsrT }rU (hHhDhj#hhRh h.h!jh"jthj~h#jh$jh%jh&j&h'jh(jh)j@h*juUsubstitution_namesrV }rW h5hCh7}rX (h>]h;]h=]Usourceh4h?]h@]uU footnotesrY ]rZ Urefidsr[ }r\ ub.circuits-3.1.0/docs/build/doctrees/web/introduction.doctree0000644000014400001440000001070412425011107025030 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X introductionqNXcherrypyquUsubstitution_defsq}q Uparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startqKUnameidsq}q(hU introductionqhUcherrypyquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqX=/home/prologic/work/circuits/docs/source/web/introduction.rstqUtagnameqUsectionqU attributesq}q(Udupnamesq ]Uclassesq!]Ubackrefsq"]Uidsq#]q$haUnamesq%]q&hauUlineq'KUdocumentq(hh]q)(cdocutils.nodes title q*)q+}q,(hX Introductionq-hhhhhUtitleq.h}q/(h ]h!]h"]h#]h%]uh'Kh(hh]q0cdocutils.nodes Text q1X Introductionq2q3}q4(hh-hh+ubaubcdocutils.nodes paragraph q5)q6}q7(hXcircuits.web is a set of components for building high performance HTTP/1.1 and WSGI/1.0 compliant web applications. These components make it easy to rapidly develop rich, scalable web applications with minimal effort.q8hhhhhU paragraphq9h}q:(h ]h!]h"]h#]h%]uh'Kh(hh]q;h1Xcircuits.web is a set of components for building high performance HTTP/1.1 and WSGI/1.0 compliant web applications. These components make it easy to rapidly develop rich, scalable web applications with minimal effort.q(hh8hh6ubaubh5)q?}q@(hXcircuits.web borrows fromqAhhhhhh9h}qB(h ]h!]h"]h#]h%]uh'Kh(hh]qCh1Xcircuits.web borrows fromqDqE}qF(hhAhh?ubaubcdocutils.nodes bullet_list qG)qH}qI(hUhhhhhU bullet_listqJh}qK(UbulletqLX*h#]h"]h ]h!]h%]uh'K h(hh]qM(cdocutils.nodes list_item qN)qO}qP(hX%`CherryPy `_qQhhHhhhU list_itemqRh}qS(h ]h!]h"]h#]h%]uh'Nh(hh]qTh5)qU}qV(hhQhhOhhhh9h}qW(h ]h!]h"]h#]h%]uh'K h]qX(cdocutils.nodes reference qY)qZ}q[(hhQh}q\(UnameXCherryPyUrefuriq]Xhttp://www.cherrypy.orgq^h#]h"]h ]h!]h%]uhhUh]q_h1XCherryPyq`qa}qb(hUhhZubahU referenceqcubcdocutils.nodes target qd)qe}qf(hX U referencedqgKhhUhUtargetqhh}qi(Urefurih^h#]qjhah"]h ]h!]h%]qkhauh]ubeubaubhN)ql}qm(hX"BaseHTTPServer (*Python std. lib*)qnhhHhhhhRh}qo(h ]h!]h"]h#]h%]uh'Nh(hh]qph5)qq}qr(hhnhhlhhhh9h}qs(h ]h!]h"]h#]h%]uh'K h]qt(h1XBaseHTTPServer (quqv}qw(hXBaseHTTPServer (hhqubcdocutils.nodes emphasis qx)qy}qz(hX*Python std. lib*h}q{(h ]h!]h"]h#]h%]uhhqh]q|h1XPython std. libq}q~}q(hUhhyubahUemphasisqubh1X)q}q(hX)hhqubeubaubhN)q}q(hXwsgiref (*Python std. lib*)qhhHhhhhRh}q(h ]h!]h"]h#]h%]uh'Nh(hh]qh5)q}q(hhhhhhhh9h}q(h ]h!]h"]h#]h%]uh'K h]q(h1X wsgiref (qq}q(hX wsgiref (hhubhx)q}q(hX*Python std. lib*h}q(h ]h!]h"]h#]h%]uhhh]qh1XPython std. libqq}q(hUhhubahhubh1X)q}q(hX)hhubeubaubeubeubahUU 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_classesqNh.NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqljUoutput_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_sourceqhUgettext_compactqU 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]qUfile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hhhheuUsubstitution_namesq}qhh(h}q(h ]h#]h"]Usourcehh!]h%]uU footnotesq]qUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/web/gettingstarted.doctree0000644000014400001440000001730612425011107025344 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(Xgetting startedqNXweb_getting_startedquUsubstitution_defsq}q Uparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startqKUnameidsq}q(hUgetting-startedqhUweb-getting-startedquUchildrenq]q(cdocutils.nodes target q)q}q(U rawsourceqX.. _web_getting_started:UparentqhUsourceqX?/home/prologic/work/circuits/docs/source/web/gettingstarted.rstqUtagnameqUtargetqU attributesq}q(Uidsq ]Ubackrefsq!]Udupnamesq"]Uclassesq#]Unamesq$]Urefidq%huUlineq&KUdocumentq'hh]ubcdocutils.nodes section q()q)}q*(hUhhhhUexpect_referenced_by_nameq+}q,hhshUsectionq-h}q.(h"]h#]h!]h ]q/(hheh$]q0(hheuh&Kh'hUexpect_referenced_by_idq1}q2hhsh]q3(cdocutils.nodes title q4)q5}q6(hXGetting Startedq7hh)hhhUtitleq8h}q9(h"]h#]h!]h ]h$]uh&Kh'hh]q:cdocutils.nodes Text q;XGetting Startedq(hh7hh5ubaubcdocutils.nodes paragraph q?)q@}qA(hX<Just like any application or system built with circuits, a circuits.web application follows the standard Component based design and structure whereby functionality is encapsulated in components. circuits.web itself is designed and built in this fashion. For example a circuits.web Server's structure looks like this:qBhh)hhhU paragraphqCh}qD(h"]h#]h!]h ]h$]uh&Kh'hh]qEh;X<Just like any application or system built with circuits, a circuits.web application follows the standard Component based design and structure whereby functionality is encapsulated in components. circuits.web itself is designed and built in this fashion. For example a circuits.web Server's structure looks like this:qFqG}qH(hhBhh@ubaubcdocutils.nodes image qI)qJ}qK(hX+.. image:: ../images/CircuitsWebServer.png hh)hhhUimageqLh}qM(UuriX#web/../images/CircuitsWebServer.pngqNh ]h!]h"]h#]U candidatesqO}qPU*hNsh$]uh&K h'hh]ubh?)qQ}qR(hXTo illustrate the basic steps, we will demonstrate developing your classical "Hello World!" applications in a web-based way with circuits.webqShh)hhhhCh}qT(h"]h#]h!]h ]h$]uh&Kh'hh]qUh;XTo illustrate the basic steps, we will demonstrate developing your classical "Hello World!" applications in a web-based way with circuits.webqVqW}qX(hhShhQubaubh?)qY}qZ(hX9To get started, we first import the necessary components:q[hh)hhhhCh}q\(h"]h#]h!]h ]h$]uh&Kh'hh]q]h;X9To get started, we first import the necessary components:q^q_}q`(hh[hhYubaubcdocutils.nodes literal_block qa)qb}qc(hX+from circutis.web import Server, Controllerhh)hhhU literal_blockqdh}qe(UlinenosqfUlanguageqgXpythonU xml:spaceqhUpreserveqih ]h!]h"]h#]h$]uh&Kh'hh]qjh;X+from circutis.web import Server, Controllerqkql}qm(hUhhbubaubh?)qn}qo(hXNext we define our first Controller with a single Request Handler defined as our index. We simply return "Hello World!" as the response for our Request Handler.qphh)hhhhCh}qq(h"]h#]h!]h ]h$]uh&Kh'hh]qrh;XNext we define our first Controller with a single Request Handler defined as our index. We simply return "Hello World!" as the response for our Request Handler.qsqt}qu(hhphhnubaubha)qv}qw(hXHclass Root(Controller): def index(self): return "Hello World!"hh)hhhhdh}qx(hfhgXpythonhhhih ]h!]h"]h#]h$]uh&Kh'hh]qyh;XHclass Root(Controller): def index(self): return "Hello World!"qzq{}q|(hUhhvubaubh?)q}}q~(hXiThis completes our simple web application which will respond with "Hello World!" when anyone accesses it.qhh)hhhhCh}q(h"]h#]h!]h ]h$]uh&K%h'hh]qh;XiThis completes our simple web application which will respond with "Hello World!" when anyone accesses it.qq}q(hhhh}ubaubh?)q}q(hXz*Admittedly this is a stupidly simple web application! But circuits.web is very powerful and plays nice with other tools.*qhh)hhhhCh}q(h"]h#]h!]h ]h$]uh&K(h'hh]qcdocutils.nodes emphasis q)q}q(hhh}q(h"]h#]h!]h ]h$]uhhh]qh;XxAdmittedly this is a stupidly simple web application! But circuits.web is very powerful and plays nice with other tools.qq}q(hUhhubahUemphasisqubaubh?)q}q(hX#Now we need to run the application:qhh)hhhhCh}q(h"]h#]h!]h ]h$]uh&K+h'hh]qh;X#Now we need to run the application:qq}q(hhhhubaubha)q}q(hX(Server(8000) + Root()).run()hh)hhhhdh}q(hfhgXpythonhhhih ]h!]h"]h#]h$]uh&K-h'hh]qh;X(Server(8000) + Root()).run()qq}q(hUhhubaubh?)q}q(hXBThat's it! Navigate to: http://127.0.0.1:8000/ and see the result.qhh)hhhhCh}q(h"]h#]h!]h ]h$]uh&K2h'hh]q(h;XThat's it! Navigate to: qq}q(hXThat's it! Navigate to: hhubcdocutils.nodes reference q)q}q(hXhttp://127.0.0.1:8000/qh}q(Urefurihh ]h!]h"]h#]h$]uhhh]qh;Xhttp://127.0.0.1:8000/qq}q(hUhhubahU referencequbh;X and see the result.qq}q(hX and see the result.hhubeubh?)q}q(hXHere's the complete code:qhh)hhhhCh}q(h"]h#]h!]h ]h$]uh&K4h'hh]qh;XHere's the complete code:qq}q(hhhhubaubha)q}q(hXfrom circuits.web import Server, Controller class Root(Controller): def index(self): return "Hello World!" (Server(8000) + Root()).run()hh)hhhhdh}q(hfhgXpythonhhhih ]h!]h"]h#]h$]uh&K6h'hh]qh;Xfrom circuits.web import Server, Controller class Root(Controller): def index(self): return "Hello World!" (Server(8000) + Root()).run()qÅq}q(hUhhubaubh?)q}q(hX Have fun!qhh)hhhhCh}q(h"]h#]h!]h ]h$]uh&KCh'hh]qh;X Have fun!q˅q}q(hhhhubaubeubehUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh'hU current_lineqNUtransform_messagesq]qcdocutils.nodes system_message q)q}q(hUh}q(h"]UlevelKh ]h!]Usourcehh#]h$]UlineKUtypeUINFOquh]qh?)q}q(hUh}q(h"]h#]h!]h ]h$]uhhh]qh;X9Hyperlink target "web-getting-started" is not referenced.q腁q}q(hUhhubahhCubahUsystem_messagequbaUreporterqNUid_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_backlinksqUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh8NUerror_encoding_error_handlerrUbackslashreplacer Udebugr NUembed_stylesheetr Uoutput_encoding_error_handlerr Ustrictr U sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_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)hUgettext_compactr*U generatorr+NUdump_internalsr,NU smart_quotesr-U pep_base_urlr.Uhttp://www.python.org/dev/peps/r/Usyntax_highlightr0Ulongr1Uinput_encoding_error_handlerr2j Uauto_id_prefixr3Uidr4Udoctitle_xformr5Ustrip_elements_with_classesr6NU _config_filesr7]Ufile_insertion_enabledr8U raw_enabledr9KU dump_settingsr:NubUsymbol_footnote_startr;KUidsr<}r=(hh)hh)uUsubstitution_namesr>}r?hh'h}r@(h"]h ]h!]Usourcehh#]h$]uU footnotesrA]rBUrefidsrC}rDh]rEhasub.circuits-3.1.0/docs/build/doctrees/web/howtos.doctree0000644000014400001440000011533212425011107023635 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X!how do i: use a templating engineqNXhaproxyqX sqlalchemyqXother examplesq NXhow do i: use websocketsq NX)how do i: deploy with apache and mod_wsgiq NX#how do i: integrate with a databaseq NXhow do i: upload a fileq NX-running your application with apache/mod_wsgiqNXnginxqXconfiguring apacheqNX*how do i: integrate with wsgi applicationsqNXexample: using makoqNXcircuits.web examplesqXhow do i: build a simple formqNX how to guidesqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hU how-do-i-use-a-templating-engineqhUhaproxyq hU sqlalchemyq!h Uother-examplesq"h Uhow-do-i-use-websocketsq#h U(how-do-i-deploy-with-apache-and-mod-wsgiq$h U"how-do-i-integrate-with-a-databaseq%h Uhow-do-i-upload-a-fileq&hU-running-your-application-with-apache-mod-wsgiq'hUnginxq(hUconfiguring-apacheq)hU)how-do-i-integrate-with-wsgi-applicationsq*hUexample-using-makoq+hUcircuits-web-examplesq,hUhow-do-i-build-a-simple-formq-hU how-to-guidesq.uUchildrenq/]q0(cdocutils.nodes target q1)q2}q3(U rawsourceq4UUparentq5hUsourceq6X7/home/prologic/work/circuits/docs/source/web/howtos.rstq7Utagnameq8Utargetq9U attributesq:}q;(Udupnamesq<]Uidsq=]q>Xmodule-circuitsq?aUbackrefsq@]UismodUclassesqA]UnamesqB]uUlineqCKUdocumentqDhh/]ubcsphinx.addnodes index qE)qF}qG(h4Uh5hh6h7h8UindexqHh:}qI(h=]h@]h<]hA]hB]Uentries]qJ(UsingleqKXcircuits (module)Xmodule-circuitsUtqLauhCKhDhh/]ubcdocutils.nodes section qM)qN}qO(h4Uh5hh6h7h8UsectionqPh:}qQ(h<]hA]h@]h=]qRh.ahB]qShauhCKhDhh/]qT(cdocutils.nodes title qU)qV}qW(h4X How To GuidesqXh5hNh6h7h8UtitleqYh:}qZ(h<]hA]h@]h=]hB]uhCKhDhh/]q[cdocutils.nodes Text q\X How To Guidesq]q^}q_(h4hXh5hVubaubcdocutils.nodes paragraph q`)qa}qb(h4X}These "How To" guides will steer you in the right direction for common aspects of modern web applications and website design.qch5hNh6h7h8U paragraphqdh:}qe(h<]hA]h@]h=]hB]uhCKhDhh/]qfh\X}These "How To" guides will steer you in the right direction for common aspects of modern web applications and website design.qgqh}qi(h4hch5haubaubhM)qj}qk(h4Uh5hNh6h7h8hPh:}ql(h<]hA]h@]h=]qmhahB]qnhauhCK hDhh/]qo(hU)qp}qq(h4X!How Do I: Use a Templating Engineqrh5hjh6h7h8hYh:}qs(h<]hA]h@]h=]hB]uhCK hDhh/]qth\X!How Do I: Use a Templating Enginequqv}qw(h4hrh5hpubaubh`)qx}qy(h4Xcircuits.web tries to stay out of your way as much as possible and doesn't impose any restrictions on what external libraries and tools you can use throughout your web application or website. As such you can use any template language/engine you wish.qzh5hjh6h7h8hdh:}q{(h<]hA]h@]h=]hB]uhCKhDhh/]q|h\Xcircuits.web tries to stay out of your way as much as possible and doesn't impose any restrictions on what external libraries and tools you can use throughout your web application or website. As such you can use any template language/engine you wish.q}q~}q(h4hzh5hxubaubhM)q}q(h4Uh5hjh6h7h8hPh:}q(h<]hA]h@]h=]qh+ahB]qhauhCKhDhh/]q(hU)q}q(h4XExample: Using Makoqh5hh6h7h8hYh:}q(h<]hA]h@]h=]hB]uhCKhDhh/]qh\XExample: Using Makoqq}q(h4hh5hubaubh`)q}q(h4XThis basic example of using the Mako Templating Language. First a TemplateLookup instance is created. Finally a function called ``render(name, **d)`` is created that is used by Request Handlers to render a given template and apply data to it.h5hh6h7h8hdh:}q(h<]hA]h@]h=]hB]uhCKhDhh/]q(h\XThis basic example of using the Mako Templating Language. First a TemplateLookup instance is created. Finally a function called qq}q(h4XThis basic example of using the Mako Templating Language. First a TemplateLookup instance is created. Finally a function called h5hubcdocutils.nodes literal q)q}q(h4X``render(name, **d)``h:}q(h<]hA]h@]h=]hB]uh5hh/]qh\Xrender(name, **d)qq}q(h4Uh5hubah8Uliteralqubh\X] is created that is used by Request Handlers to render a given template and apply data to it.qq}q(h4X] is created that is used by Request Handlers to render a given template and apply data to it.h5hubeubh`)q}q(h4XHere is the basic example:qh5hh6h7h8hdh:}q(h<]hA]h@]h=]hB]uhCKhDhh/]qh\XHere is the basic example:qq}q(h4hh5hubaubcdocutils.nodes literal_block q)q}q(h4X#!/usr/bin/env python import os import mako from mako.lookup import TemplateLookup from circuits.web import Server, Controller templates = TemplateLookup( directories=[os.path.join(os.path.dirname(__file__), "tpl")], module_directory="/tmp", output_encoding="utf-8" ) def render(name, **d): #** try: return templates.get_template(name).render(**d) #** except: return mako.exceptions.html_error_template().render() class Root(Controller): def index(self): return render("index.html") def submit(self, firstName, lastName): msg = "Thank you %s %s" % (firstName, lastName) return render("index.html", message=msg) (Server(8000) + Root()).run()h5hh6h7h8U literal_blockqh:}q(UlinenosqUlanguageqXpythonU xml:spaceqUpreserveqh=]h@]h<]hA]hB]uhCK!hDhh/]qh\X#!/usr/bin/env python import os import mako from mako.lookup import TemplateLookup from circuits.web import Server, Controller templates = TemplateLookup( directories=[os.path.join(os.path.dirname(__file__), "tpl")], module_directory="/tmp", output_encoding="utf-8" ) def render(name, **d): #** try: return templates.get_template(name).render(**d) #** except: return mako.exceptions.html_error_template().render() class Root(Controller): def index(self): return render("index.html") def submit(self, firstName, lastName): msg = "Thank you %s %s" % (firstName, lastName) return render("index.html", message=msg) (Server(8000) + Root()).run()qq}q(h4Uh5hubaubeubhM)q}q(h4Uh5hjh6h7h8hPh:}q(h<]hA]h@]h=]qh"ahB]qh auhCKLhDhh/]q(hU)q}q(h4XOther Examplesqh5hh6h7h8hYh:}q(h<]hA]h@]h=]hB]uhCKLhDhh/]qh\XOther Examplesqq}q(h4hh5hubaubh`)q}q(h4X<Other Templating engines will be quite similar to integrate.qh5hh6h7h8hdh:}q(h<]hA]h@]h=]hB]uhCKNhDhh/]qh\X<Other Templating engines will be quite similar to integrate.qɅq}q(h4hh5hubaubeubeubhM)q}q(h4Uh5hNh6h7h8hPh:}q(h<]hA]h@]h=]qh%ahB]qh auhCKRhDhh/]q(hU)q}q(h4X#How Do I: Integrate with a Databaseqh5hh6h7h8hYh:}q(h<]hA]h@]h=]hB]uhCKRhDhh/]qh\X#How Do I: Integrate with a Databaseqׅq}q(h4hh5hubaubcdocutils.nodes warning q)q}q(h4XUsing databases in an asynchronous framework is problematic because most database implementations don't support asynchronous I/O operations. Generally the solution is to use threading to hand off database operations to a separate thread.h5hh6h7h8Uwarningqh:}q(h<]hA]h@]h=]hB]uhCNhDhh/]q(h`)q}q(h4XUsing databases in an asynchronous framework is problematic because most database implementations don't support asynchronous I/O operations.qh5hh6h7h8hdh:}q(h<]hA]h@]h=]hB]uhCKUh/]qh\XUsing databases in an asynchronous framework is problematic because most database implementations don't support asynchronous I/O operations.q允q}q(h4hh5hubaubh`)q}q(h4X`Generally the solution is to use threading to hand off database operations to a separate thread.qh5hh6h7h8hdh:}q(h<]hA]h@]h=]hB]uhCKYh/]qh\X`Generally the solution is to use threading to hand off database operations to a separate thread.q텁q}q(h4hh5hubaubeubh`)q}q(h4XEHere are some ways to help integrate databases into your application:qh5hh6h7h8hdh:}q(h<]hA]h@]h=]hB]uhCK\hDhh/]qh\XEHere are some ways to help integrate databases into your application:qq}q(h4hh5hubaubcdocutils.nodes enumerated_list q)q}q(h4Uh5hh6h7h8Uenumerated_listqh:}q(UsuffixqU.h=]h@]h<]UprefixqUhA]hB]UenumtypeqUarabicruhCK^hDhh/]r(cdocutils.nodes list_item r)r}r(h4XQEnsure your queries are optimized and do not block for extensive periods of time.h5hh6h7h8U list_itemrh:}r(h<]hA]h@]h=]hB]uhCNhDhh/]rh`)r}r (h4XQEnsure your queries are optimized and do not block for extensive periods of time.r h5jh6h7h8hdh:}r (h<]hA]h@]h=]hB]uhCK^h/]r h\XQEnsure your queries are optimized and do not block for extensive periods of time.r r}r(h4j h5jubaubaubj)r}r(h4XUse a library like `SQLAlchemy `_ that supports multi-threaded database operations to help prevent your circuits.web web application from blocking.h5hh6h7h8jh:}r(h<]hA]h@]h=]hB]uhCNhDhh/]rh`)r}r(h4XUse a library like `SQLAlchemy `_ that supports multi-threaded database operations to help prevent your circuits.web web application from blocking.h5jh6h7h8hdh:}r(h<]hA]h@]h=]hB]uhCK`h/]r(h\XUse a library like rr}r(h4XUse a library like h5jubcdocutils.nodes reference r)r}r(h4X*`SQLAlchemy `_h:}r(UnameX SQLAlchemyUrefurirXhttp://www.sqlalchemy.org/r h=]h@]h<]hA]hB]uh5jh/]r!h\X SQLAlchemyr"r#}r$(h4Uh5jubah8U referencer%ubh1)r&}r'(h4X U referencedr(Kh5jh8h9h:}r)(Urefurij h=]r*h!ah@]h<]hA]hB]r+hauh/]ubh\Xr that supports multi-threaded database operations to help prevent your circuits.web web application from blocking.r,r-}r.(h4Xr that supports multi-threaded database operations to help prevent your circuits.web web application from blocking.h5jubeubaubj)r/}r0(h4XX*Optionally* take advantage of the :class:`~circuits.Worker` component to fire :class:`~circuits.task` events wrapping database calls in a thread or process pool. You can then use the :meth:`~circuits.Component.call` and :meth:`~.circuits.Component.wait` synchronization primitives to help with the control flow of your requests and responses. h5hh6h7h8jh:}r1(h<]hA]h@]h=]hB]uhCNhDhh/]r2h`)r3}r4(h4XW*Optionally* take advantage of the :class:`~circuits.Worker` component to fire :class:`~circuits.task` events wrapping database calls in a thread or process pool. You can then use the :meth:`~circuits.Component.call` and :meth:`~.circuits.Component.wait` synchronization primitives to help with the control flow of your requests and responses.h5j/h6h7h8hdh:}r5(h<]hA]h@]h=]hB]uhCKdh/]r6(cdocutils.nodes emphasis r7)r8}r9(h4X *Optionally*h:}r:(h<]hA]h@]h=]hB]uh5j3h/]r;h\X Optionallyr<r=}r>(h4Uh5j8ubah8Uemphasisr?ubh\X take advantage of the r@rA}rB(h4X take advantage of the h5j3ubcsphinx.addnodes pending_xref rC)rD}rE(h4X:class:`~circuits.Worker`rFh5j3h6h7h8U pending_xrefrGh:}rH(UreftypeXclassUrefwarnrIU reftargetrJXcircuits.WorkerU refdomainXpyrKh=]h@]U refexplicith<]hA]hB]UrefdocrLX web/howtosrMUpy:classrNNU py:modulerOXcircuitsrPuhCKdh/]rQh)rR}rS(h4jFh:}rT(h<]hA]rU(UxrefrVjKXpy-classrWeh@]h=]hB]uh5jDh/]rXh\XWorkerrYrZ}r[(h4Uh5jRubah8hubaubh\X component to fire r\r]}r^(h4X component to fire h5j3ubjC)r_}r`(h4X:class:`~circuits.task`rah5j3h6h7h8jGh:}rb(UreftypeXclassjIjJX circuits.taskU refdomainXpyrch=]h@]U refexplicith<]hA]hB]jLjMjNNjOjPuhCKdh/]rdh)re}rf(h4jah:}rg(h<]hA]rh(jVjcXpy-classrieh@]h=]hB]uh5j_h/]rjh\Xtaskrkrl}rm(h4Uh5jeubah8hubaubh\XR events wrapping database calls in a thread or process pool. You can then use the rnro}rp(h4XR events wrapping database calls in a thread or process pool. You can then use the h5j3ubjC)rq}rr(h4X :meth:`~circuits.Component.call`rsh5j3h6h7h8jGh:}rt(UreftypeXmethjIjJXcircuits.Component.callU refdomainXpyruh=]h@]U refexplicith<]hA]hB]jLjMjNNjOjPuhCKdh/]rvh)rw}rx(h4jsh:}ry(h<]hA]rz(jVjuXpy-methr{eh@]h=]hB]uh5jqh/]r|h\Xcall()r}r~}r(h4Uh5jwubah8hubaubh\X and rr}r(h4X and h5j3ubjC)r}r(h4X!:meth:`~.circuits.Component.wait`rh5j3h6h7h8jGh:}r(UreftypeXmethU refspecificrjIjJXcircuits.Component.waitU refdomainXpyrh=]h@]U refexplicith<]hA]hB]jLjMjNNjOjPuhCKdh/]rh)r}r(h4jh:}r(h<]hA]r(jVjXpy-methreh@]h=]hB]uh5jh/]rh\Xwait()rr}r(h4Uh5jubah8hubaubh\XY synchronization primitives to help with the control flow of your requests and responses.rr}r(h4XY synchronization primitives to help with the control flow of your requests and responses.h5j3ubeubaubeubh`)r}r(h4XAnother way you can help improve performance is by load balancing across multiple backends of your web application. Using things like `haproxy `_ or `nginx `_ for load balancing can really help.h5hh6h7h8hdh:}r(h<]hA]h@]h=]hB]uhCKkhDhh/]r(h\XAnother way you can help improve performance is by load balancing across multiple backends of your web application. Using things like rr}r(h4XAnother way you can help improve performance is by load balancing across multiple backends of your web application. Using things like h5jubj)r}r(h4X#`haproxy `_h:}r(UnamehjXhttp://haproxy.1wt.eu/rh=]h@]h<]hA]hB]uh5jh/]rh\Xhaproxyrr}r(h4Uh5jubah8j%ubh1)r}r(h4X j(Kh5jh8h9h:}r(Urefurijh=]rh ah@]h<]hA]hB]rhauh/]ubh\X or rr}r(h4X or h5jubj)r}r(h4X`nginx `_h:}r(UnamehjXhttp://nginx.org/en/rh=]h@]h<]hA]hB]uh5jh/]rh\Xnginxrr}r(h4Uh5jubah8j%ubh1)r}r(h4X j(Kh5jh8h9h:}r(Urefurijh=]rh(ah@]h<]hA]hB]rhauh/]ubh\X$ for load balancing can really help.rr}r(h4X$ for load balancing can really help.h5jubeubeubhM)r}r(h4Uh5hNh6h7h8hPh:}r(h<]hA]h@]h=]rh#ahB]rh auhCKthDhh/]r(hU)r}r(h4XHow Do I: Use WebSocketsrh5jh6h7h8hYh:}r(h<]hA]h@]h=]hB]uhCKthDhh/]rh\XHow Do I: Use WebSocketsrr}r(h4jh5jubaubh`)r}r(h4XSince the :class:`~circuits.web.websockets.WebSocketDispatcher` id a circuits.web "dispatcher" it's quite easy to integrate into your web application. Here's a simple trivial example:h5jh6h7h8hdh:}r(h<]hA]h@]h=]hB]uhCKwhDhh/]r(h\X Since the rr}r(h4X Since the h5jubjC)r}r(h4X5:class:`~circuits.web.websockets.WebSocketDispatcher`rh5jh6h7h8jGh:}r(UreftypeXclassjIjJX+circuits.web.websockets.WebSocketDispatcherU refdomainXpyrh=]h@]U refexplicith<]hA]hB]jLjMjNNjOjPuhCKwh/]rh)r}r(h4jh:}r(h<]hA]r(jVjXpy-classreh@]h=]hB]uh5jh/]rh\XWebSocketDispatcherrr}r(h4Uh5jubah8hubaubh\Xx id a circuits.web "dispatcher" it's quite easy to integrate into your web application. Here's a simple trivial example:rr}r(h4Xx id a circuits.web "dispatcher" it's quite easy to integrate into your web application. Here's a simple trivial example:h5jubeubh)r}r(h4Xp#!/usr/bin/env python from circuits.net.events import write from circuits import Component, Debugger from circuits.web.dispatchers import WebSockets from circuits.web import Controller, Logger, Server, Static class Echo(Component): channel = "wsserver" def read(self, sock, data): self.fireEvent(write(sock, "Received: " + data)) class Root(Controller): def index(self): return "Hello World!" app = Server(("0.0.0.0", 8000)) Debugger().register(app) Static().register(app) Echo().register(app) Root().register(app) Logger().register(app) WebSockets("/websocket").register(app) app.run()h5jh6h7h8hh:}r(hhXpythonhhh=]h@]h<]hA]hB]uhCK|hDhh/]rh\Xp#!/usr/bin/env python from circuits.net.events import write from circuits import Component, Debugger from circuits.web.dispatchers import WebSockets from circuits.web import Controller, Logger, Server, Static class Echo(Component): channel = "wsserver" def read(self, sock, data): self.fireEvent(write(sock, "Received: " + data)) class Root(Controller): def index(self): return "Hello World!" app = Server(("0.0.0.0", 8000)) Debugger().register(app) Static().register(app) Echo().register(app) Root().register(app) Logger().register(app) WebSockets("/websocket").register(app) app.run()rr}r(h4Uh5jubaubh`)r}r(h4X`See the `circuits.web examples `_.rh5jh6h7h8hdh:}r(h<]hA]h@]h=]hB]uhCKhDhh/]r(h\XSee the rr}r(h4XSee the h5jubj)r}r(h4XW`circuits.web examples `_h:}r(UnameXcircuits.web examplesjX<https://bitbucket.org/circuits/circuits/src/tip/examples/webrh=]h@]h<]hA]hB]uh5jh/]rh\Xcircuits.web examplesrr}r(h4Uh5jubah8j%ubh1)r}r(h4X? j(Kh5jh8h9h:}r(Urefurijh=]rh,ah@]h<]hA]hB]rhauh/]ubh\X.r}r(h4X.h5jubeubeubhM)r}r(h4Uh5hNh6h7h8hPh:}r(h<]hA]h@]h=]rh-ahB]rhauhCKhDhh/]r(hU)r}r (h4XHow do I: Build a Simple Formr h5jh6h7h8hYh:}r (h<]hA]h@]h=]hB]uhCKhDhh/]r h\XHow do I: Build a Simple Formr r}r(h4j h5jubaubh`)r}r(h4Xcircuits.web parses all POST data as a request comes through and creates a dictionary of kwargs (Keyword Arguments) that are passed to Request Handlers.rh5jh6h7h8hdh:}r(h<]hA]h@]h=]hB]uhCKhDhh/]rh\Xcircuits.web parses all POST data as a request comes through and creates a dictionary of kwargs (Keyword Arguments) that are passed to Request Handlers.rr}r(h4jh5jubaubh`)r}r(h4X/Here is a simple example of handling form data:rh5jh6h7h8hdh:}r(h<]hA]h@]h=]hB]uhCKhDhh/]rh\X/Here is a simple example of handling form data:rr}r(h4jh5jubaubh)r }r!(h4X#!/usr/bin/env python from circuits.web import Server, Controller class Root(Controller): html = """\ Basic Form Handling

    Basic Form Handling

    Example of using circuits and it's Web Components to build a simple web application that handles some basic form data.

    First Name:
    Last Name:
    """ def index(self): return self.html def submit(self, firstName, lastName): return "Hello %s %s" % (firstName, lastName) (Server(8000) + Root()).run(h5jh6h7h8hh:}r"(hhXpythonhhh=]h@]h<]hA]hB]uhCKhDhh/]r#h\X#!/usr/bin/env python from circuits.web import Server, Controller class Root(Controller): html = """\ Basic Form Handling

    Basic Form Handling

    Example of using circuits and it's Web Components to build a simple web application that handles some basic form data.

    First Name:
    Last Name:
    """ def index(self): return self.html def submit(self, firstName, lastName): return "Hello %s %s" % (firstName, lastName) (Server(8000) + Root()).run(r$r%}r&(h4Uh5j ubaubeubhM)r'}r((h4Uh5hNh6h7h8hPh:}r)(h<]hA]h@]h=]r*h&ahB]r+h auhCKhDhh/]r,(hU)r-}r.(h4XHow Do I: Upload a Filer/h5j'h6h7h8hYh:}r0(h<]hA]h@]h=]hB]uhCKhDhh/]r1h\XHow Do I: Upload a Filer2r3}r4(h4j/h5j-ubaubh`)r5}r6(h4XYou can easily handle File Uploads as well using the same techniques as above. Basically the "name" you give your tag of type="file" will get passed as the Keyword Argument to your Request Handler. It has the following two attributes::h5j'h6h7h8hdh:}r7(h<]hA]h@]h=]hB]uhCKhDhh/]r8h\XYou can easily handle File Uploads as well using the same techniques as above. Basically the "name" you give your tag of type="file" will get passed as the Keyword Argument to your Request Handler. It has the following two attributes:r9r:}r;(h4XYou can easily handle File Uploads as well using the same techniques as above. Basically the "name" you give your tag of type="file" will get passed as the Keyword Argument to your Request Handler. It has the following two attributes:h5j5ubaubh)r<}r=(h4XV.filename - The name of the uploaded file. .value - The contents of the uploaded file.h5j'h6h7h8hh:}r>(hhh=]h@]h<]hA]hB]uhCKhDhh/]r?h\XV.filename - The name of the uploaded file. .value - The contents of the uploaded file.r@rA}rB(h4Uh5j<ubaubh`)rC}rD(h4XHere's the code!rEh5j'h6h7h8hdh:}rF(h<]hA]h@]h=]hB]uhCKhDhh/]rGh\XHere's the code!rHrI}rJ(h4jEh5jCubaubh)rK}rL(h4X#!/usr/bin/env python from circuits.web import Server, Controller UPLOAD_FORM = """ Upload Form

    Upload Form

    Description:
    """ UPLOADED_FILE = """ Uploaded File

    Uploaded File

    Filename: %s
    Description: %s

    File Contents:

      %s
      
    """ class Root(Controller): def index(self, file=None, desc=""): if file is None: return UPLOAD_FORM else: filename = file.filename return UPLOADED_FILE % (file.filename, desc, file.value) (Server(8000) + Root()).run()h5j'h6h7h8hh:}rM(hhXpythonhhh=]h@]h<]hA]hB]uhCKhDhh/]rNh\X#!/usr/bin/env python from circuits.web import Server, Controller UPLOAD_FORM = """ Upload Form

    Upload Form

    Description:
    """ UPLOADED_FILE = """ Uploaded File

    Uploaded File

    Filename: %s
    Description: %s

    File Contents:

      %s
      
    """ class Root(Controller): def index(self, file=None, desc=""): if file is None: return UPLOAD_FORM else: filename = file.filename return UPLOADED_FILE % (file.filename, desc, file.value) (Server(8000) + Root()).run()rOrP}rQ(h4Uh5jKubaubh`)rR}rS(h4Xcircuits.web automatically handles form and file uploads and gives you access to the uploaded file via arguments to the request handler after they've been processed by the dispatcher.rTh5j'h6h7h8hdh:}rU(h<]hA]h@]h=]hB]uhCM&hDhh/]rVh\Xcircuits.web automatically handles form and file uploads and gives you access to the uploaded file via arguments to the request handler after they've been processed by the dispatcher.rWrX}rY(h4jTh5jRubaubeubhM)rZ}r[(h4Uh5hNh6h7h8hPh:}r\(h<]hA]h@]h=]r]h*ahB]r^hauhCM,hDhh/]r_(hU)r`}ra(h4X*How Do I: Integrate with WSGI Applicationsrbh5jZh6h7h8hYh:}rc(h<]hA]h@]h=]hB]uhCM,hDhh/]rdh\X*How Do I: Integrate with WSGI Applicationsrerf}rg(h4jbh5j`ubaubh`)rh}ri(h4XIntegrating with other WSGI Applications is quite easy to do. Simply add in an instance of the :class:`~circuits.web.wsgi.Gateway` component into your circuits.web application.h5jZh6h7h8hdh:}rj(h<]hA]h@]h=]hB]uhCM/hDhh/]rk(h\X_Integrating with other WSGI Applications is quite easy to do. Simply add in an instance of the rlrm}rn(h4X_Integrating with other WSGI Applications is quite easy to do. Simply add in an instance of the h5jhubjC)ro}rp(h4X#:class:`~circuits.web.wsgi.Gateway`rqh5jhh6h7h8jGh:}rr(UreftypeXclassjIjJXcircuits.web.wsgi.GatewayU refdomainXpyrsh=]h@]U refexplicith<]hA]hB]jLjMjNNjOjPuhCM/h/]rth)ru}rv(h4jqh:}rw(h<]hA]rx(jVjsXpy-classryeh@]h=]hB]uh5joh/]rzh\XGatewayr{r|}r}(h4Uh5juubah8hubaubh\X. component into your circuits.web application.r~r}r(h4X. component into your circuits.web application.h5jhubeubh`)r}r(h4XExample:rh5jZh6h7h8hdh:}r(h<]hA]h@]h=]hB]uhCM4hDhh/]rh\XExample:rr}r(h4jh5jubaubh)r}r(h4X#!/usr/bin/env python from circuits.web.wsgi import Gateway from circuits.web import Controller, Server def foo(environ, start_response): start_response("200 OK", [("Content-Type", "text/plain")]) return ["Foo!"] class Root(Controller): """App Rot""" def index(self): return "Hello World!" app = Server(("0.0.0.0", 10000)) Root().register(app) Gateway({"/foo": foo}).register(app) app.run()h5jZh6h7h8hh:}r(hhXpythonhhh=]h@]h<]hA]hB]uhCM6hDhh/]rh\X#!/usr/bin/env python from circuits.web.wsgi import Gateway from circuits.web import Controller, Server def foo(environ, start_response): start_response("200 OK", [("Content-Type", "text/plain")]) return ["Foo!"] class Root(Controller): """App Rot""" def index(self): return "Hello World!" app = Server(("0.0.0.0", 10000)) Root().register(app) Gateway({"/foo": foo}).register(app) app.run()rr}r(h4Uh5jubaubh`)r}r(h4XThe ``apps`` argument of the :class:`~circuits.web.wsgi.Gateway` component takes a key/value pair of ``path -> callable`` (*a Python dictionary*) that maps each URI to a given WSGI callable.h5jZh6h7h8hdh:}r(h<]hA]h@]h=]hB]uhCMPhDhh/]r(h\XThe rr}r(h4XThe h5jubh)r}r(h4X``apps``h:}r(h<]hA]h@]h=]hB]uh5jh/]rh\Xappsrr}r(h4Uh5jubah8hubh\X argument of the rr}r(h4X argument of the h5jubjC)r}r(h4X#:class:`~circuits.web.wsgi.Gateway`rh5jh6h7h8jGh:}r(UreftypeXclassjIjJXcircuits.web.wsgi.GatewayU refdomainXpyrh=]h@]U refexplicith<]hA]hB]jLjMjNNjOjPuhCMPh/]rh)r}r(h4jh:}r(h<]hA]r(jVjXpy-classreh@]h=]hB]uh5jh/]rh\XGatewayrr}r(h4Uh5jubah8hubaubh\X% component takes a key/value pair of rr}r(h4X% component takes a key/value pair of h5jubh)r}r(h4X``path -> callable``h:}r(h<]hA]h@]h=]hB]uh5jh/]rh\Xpath -> callablerr}r(h4Uh5jubah8hubh\X (rr}r(h4X (h5jubj7)r}r(h4X*a Python dictionary*h:}r(h<]hA]h@]h=]hB]uh5jh/]rh\Xa Python dictionaryrr}r(h4Uh5jubah8j?ubh\X.) that maps each URI to a given WSGI callable.rr}r(h4X.) that maps each URI to a given WSGI callable.h5jubeubeubhM)r}r(h4Uh5hNh6h7h8hPh:}r(h<]hA]h@]h=]rh$ahB]rh auhCMWhDhh/]r(hU)r}r(h4X)How Do I: Deploy with Apache and mod_wsgirh5jh6h7h8hYh:}r(h<]hA]h@]h=]hB]uhCMWhDhh/]rh\X)How Do I: Deploy with Apache and mod_wsgirr}r(h4jh5jubaubh`)r}r(h4XXHere's how to deploy your new Circuits powered Web Application on Apache using mod_wsgi.rh5jh6h7h8hdh:}r(h<]hA]h@]h=]hB]uhCMZhDhh/]rh\XXHere's how to deploy your new Circuits powered Web Application on Apache using mod_wsgi.rr}r(h4jh5jubaubh`)r}r(h4X<Let's say you have a Web Hosting account with some provider.rh5jh6h7h8hdh:}r(h<]hA]h@]h=]hB]uhCM]hDhh/]rh\X<Let's say you have a Web Hosting account with some provider.rr}r(h4jh5jubaubcdocutils.nodes bullet_list r)r}r(h4Uh5jh6h7h8U bullet_listrh:}r(UbulletrX-h=]h@]h<]hA]hB]uhCM_hDhh/]r(j)r}r(h4XYour Username is: "joblogs"rh5jh6h7h8jh:}r(h<]hA]h@]h=]hB]uhCNhDhh/]rh`)r}r(h4jh5jh6h7h8hdh:}r(h<]hA]h@]h=]hB]uhCM_h/]rh\XYour Username is: "joblogs"rr}r(h4jh5jubaubaubj)r}r(h4X*Your URL is: http://example.com/~joeblogs/rh5jh6h7h8jh:}r(h<]hA]h@]h=]hB]uhCNhDhh/]rh`)r}r(h4jh5jh6h7h8hdh:}r(h<]hA]h@]h=]hB]uhCM`h/]r(h\X Your URL is: rr}r(h4X Your URL is: h5jubj)r}r(h4Xhttp://example.com/~joeblogs/rh:}r(Urefurijh=]h@]h<]hA]hB]uh5jh/]rh\Xhttp://example.com/~joeblogs/r r }r (h4Uh5jubah8j%ubeubaubj)r }r (h4X&Your Docroot is: /home/joeblogs/www/ h5jh6h7h8jh:}r(h<]hA]h@]h=]hB]uhCNhDhh/]rh`)r}r(h4X$Your Docroot is: /home/joeblogs/www/rh5j h6h7h8hdh:}r(h<]hA]h@]h=]hB]uhCMah/]rh\X$Your Docroot is: /home/joeblogs/www/rr}r(h4jh5jubaubaubeubhM)r}r(h4Uh5jh6h7h8hPh:}r(h<]hA]h@]h=]rh)ahB]rhauhCMehDhh/]r(hU)r}r(h4XConfiguring Apacher h5jh6h7h8hYh:}r!(h<]hA]h@]h=]hB]uhCMehDhh/]r"h\XConfiguring Apacher#r$}r%(h4j h5jubaubh`)r&}r'(h4XThe first step is to add in the following .htaccess file to tell Apache hat we want any and all requests to http://example.com/~joeblogs/ to be served up by our circuits.web application.h5jh6h7h8hdh:}r((h<]hA]h@]h=]hB]uhCMhhDhh/]r)(h\XlThe first step is to add in the following .htaccess file to tell Apache hat we want any and all requests to r*r+}r,(h4XlThe first step is to add in the following .htaccess file to tell Apache hat we want any and all requests to h5j&ubj)r-}r.(h4Xhttp://example.com/~joeblogs/r/h:}r0(Urefurij/h=]h@]h<]hA]hB]uh5j&h/]r1h\Xhttp://example.com/~joeblogs/r2r3}r4(h4Uh5j-ubah8j%ubh\X1 to be served up by our circuits.web application.r5r6}r7(h4X1 to be served up by our circuits.web application.h5j&ubeubh`)r8}r9(h4X0Created the .htaccess file in your **Docroot**::r:h5jh6h7h8hdh:}r;(h<]hA]h@]h=]hB]uhCMlhDhh/]r<(h\X#Created the .htaccess file in your r=r>}r?(h4X#Created the .htaccess file in your h5j8ubcdocutils.nodes strong r@)rA}rB(h4X **Docroot**h:}rC(h<]hA]h@]h=]hB]uh5j8h/]rDh\XDocrootrErF}rG(h4Uh5jAubah8UstrongrHubh\X:rI}rJ(h4X:h5j8ubeubh)rK}rL(h4XReWriteEngine On ReWriteCond %{REQUEST_FILENAME} !-f ReWriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /~joeblogs/index.wsgi/$1 [QSA,PT,L]h5jh6h7h8hh:}rM(hhh=]h@]h<]hA]hB]uhCMnhDhh/]rNh\XReWriteEngine On ReWriteCond %{REQUEST_FILENAME} !-f ReWriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /~joeblogs/index.wsgi/$1 [QSA,PT,L]rOrP}rQ(h4Uh5jKubaubeubhM)rR}rS(h4Uh5jh6h7h8hPh:}rT(h<]hA]h@]h=]rUh'ahB]rVhauhCMuhDhh/]rW(hU)rX}rY(h4X-Running your Application with Apache/mod_wsgirZh5jRh6h7h8hYh:}r[(h<]hA]h@]h=]hB]uhCMuhDhh/]r\h\X-Running your Application with Apache/mod_wsgir]r^}r_(h4jZh5jXubaubh`)r`}ra(h4XThe get your Web Application working and deployed on Apache using mod_wsgi, you need to make a few changes to your code. Based on our Basic Hello World example earlier, we modify it to the following:rbh5jRh6h7h8hdh:}rc(h<]hA]h@]h=]hB]uhCMxhDhh/]rdh\XThe get your Web Application working and deployed on Apache using mod_wsgi, you need to make a few changes to your code. Based on our Basic Hello World example earlier, we modify it to the following:rerf}rg(h4jbh5j`ubaubh)rh}ri(h4X#!/usr/bin/env python from circuits.web import Controller from circuits.web.wsgi import Application class Root(Controller): def index(self): return "Hello World!" application = Application() + Root()h5jRh6h7h8hh:}rj(hhXpythonhhh=]h@]h<]hA]hB]uhCM|hDhh/]rkh\X#!/usr/bin/env python from circuits.web import Controller from circuits.web.wsgi import Application class Root(Controller): def index(self): return "Hello World!" application = Application() + Root()rlrm}rn(h4Uh5jhubaubh`)ro}rp(h4XThat's it! To run this, save it as index.wsgi and place it in your Web Root (public-html or www directory) as per the above guidelines and point your favorite Web Browser to: http://example.com/~joeblogs/h5jRh6h7h8hdh:}rq(h<]hA]h@]h=]hB]uhCMhDhh/]rr(h\XThat's it! To run this, save it as index.wsgi and place it in your Web Root (public-html or www directory) as per the above guidelines and point your favorite Web Browser to: rsrt}ru(h4XThat's it! To run this, save it as index.wsgi and place it in your Web Root (public-html or www directory) as per the above guidelines and point your favorite Web Browser to: h5joubj)rv}rw(h4Xhttp://example.com/~joeblogs/rxh:}ry(Urefurijxh=]h@]h<]hA]hB]uh5joh/]rzh\Xhttp://example.com/~joeblogs/r{r|}r}(h4Uh5jvubah8j%ubeubcdocutils.nodes note r~)r}r(h4XHIt is recommended that you actually use a reverse proxy setup for deploying circuits.web web application so that you don't loose the advantages and functionality of using an event-driven component architecture in your web apps. In **production** you should use a load balance and reverse proxy combination for best performance.h5jRh6h7h8Unoterh:}r(h<]hA]h@]h=]hB]uhCNhDhh/]r(h`)r}r(h4XIt is recommended that you actually use a reverse proxy setup for deploying circuits.web web application so that you don't loose the advantages and functionality of using an event-driven component architecture in your web apps.rh5jh6h7h8hdh:}r(h<]hA]h@]h=]hB]uhCMh/]rh\XIt is recommended that you actually use a reverse proxy setup for deploying circuits.web web application so that you don't loose the advantages and functionality of using an event-driven component architecture in your web apps.rr}r(h4jh5jubaubh`)r}r(h4XcIn **production** you should use a load balance and reverse proxy combination for best performance.h5jh6h7h8hdh:}r(h<]hA]h@]h=]hB]uhCMh/]r(h\XIn rr}r(h4XIn h5jubj@)r}r(h4X**production**h:}r(h<]hA]h@]h=]hB]uh5jh/]rh\X productionrr}r(h4Uh5jubah8jHubh\XR you should use a load balance and reverse proxy combination for best performance.rr}r(h4XR you should use a load balance and reverse proxy combination for best performance.h5jubeubeubeubeubeubeh4UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rhDhU current_linerNUtransform_messagesr]rcdocutils.nodes system_message r)r}r(h4Uh:}r(h<]UlevelKh=]h@]Usourceh7hA]hB]UlineKUtypeUINFOruh/]rh`)r}r(h4Uh:}r(h<]hA]h@]h=]hB]uh5jh/]rh\X5Hyperlink target "module-circuits" is not referenced.rr}r(h4Uh5jubah8hdubah8Usystem_messagerubaUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNhYNUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerh7Ugettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsr NubUsymbol_footnote_startr KUidsr }r (h jh*jZh!j&h$jh%hh#jh)jh'jRhhjh+hh(jh?h2h"hh&j'h.hNh,jh-juUsubstitution_namesr }rh8hDh:}r(h<]h=]h@]Usourceh7hA]hB]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/examples/0000755000014400001440000000000012425013643022006 5ustar prologicusers00000000000000circuits-3.1.0/docs/build/doctrees/examples/index.doctree0000644000014400001440000001441012425013455024465 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X hello webqNX echo serverqNXhelloqNXexamplesq uUsubstitution_defsq }q Uparse_messagesq ]q (cdocutils.nodes system_message q)q}q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqX;/home/prologic/work/circuits/docs/source/examples/index.rstqUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq]q Uhelloq!aUnamesq"]q#hauUlineq$KUdocumentq%hUchildrenq&]q'(cdocutils.nodes title q()q)}q*(hXHelloq+hhhhhUtitleq,h}q-(h]h]h]h]h"]uh$Kh%hh&]q.cdocutils.nodes Text q/XHelloq0q1}q2(hh+hh)ubaubcdocutils.nodes paragraph q3)q4}q5(hX?Download Source Code: :download:`hello.py: `q6hhhhhU paragraphq7h}q8(h]h]h]h]h"]uh$K h%hh&]q9(h/XDownload Source Code: q:q;}q<(hXDownload Source Code: hh4ubcsphinx.addnodes download_reference q=)q>}q?(hX):download:`hello.py: `q@hh4hhhUdownload_referenceqAh}qB(UreftypeXdownloadqCUrefwarnqDU reftargetqEXexamples/hello.pyU refdomainUh]h]U refexplicith]h]h"]UrefdocqFXexamples/indexqGuh$K h&]qHcdocutils.nodes literal qI)qJ}qK(hh@h}qL(h]h]qM(UxrefqNhCeh]h]h"]uhh>h&]qOh/X hello.py:qPqQ}qR(hUhhJubahUliteralqSubaubeubeubhhhUsystem_messageqTh}qU(h]UlevelKh]h]Usourcehh]h"]UlineKUtypeUWARNINGqVuh$Nh%hh&]qWh3)qX}qY(hUh}qZ(h]h]h]h]h"]uhhh&]q[h/XrInclude file u'/home/prologic/work/circuits/docs/source/examples/examples/hello.py' not found or reading it failedq\q]}q^(hUhhXubahh7ubaubh)q_}q`(hUhh)qa}qb(hUhhhhhhh}qc(h]h]h]h]qdU echo-serverqeah"]qfhauh$Kh%hh&]qg(h()qh}qi(hX Echo Serverqjhhahhhh,h}qk(h]h]h]h]h"]uh$Kh%hh&]qlh/X Echo Serverqmqn}qo(hhjhhhubaubh3)qp}qq(hXIDownload Source Code: :download:`echoserver.py: `qrhhahhhh7h}qs(h]h]h]h]h"]uh$Kh%hh&]qt(h/XDownload Source Code: quqv}qw(hXDownload Source Code: hhpubh=)qx}qy(hX3:download:`echoserver.py: `qzhhphhhhAh}q{(UreftypeXdownloadq|hDhEXexamples/echoserver.pyU refdomainUh]h]U refexplicith]h]h"]hFhGuh$Kh&]q}hI)q~}q(hhzh}q(h]h]q(hNh|eh]h]h"]uhhxh&]qh/Xechoserver.py:qq}q(hUhh~ubahhSubaubeubeubhhhhTh}q(h]UlevelKh]h]Usourcehh]h"]UlineKUtypehVuh$Nh%hh&]qh3)q}q(hUh}q(h]h]h]h]h"]uhh_h&]qh/XwInclude file u'/home/prologic/work/circuits/docs/source/examples/examples/echoserver.py' not found or reading it failedqq}q(hUhhubahh7ubaubh)q}q(hUhh)q}q(hUhhhhhhh}q(h]h]h]h]qU hello-webqah"]qhauh$Kh%hh&]q(h()q}q(hX Hello Webqhhhhhh,h}q(h]h]h]h]h"]uh$Kh%hh&]qh/X Hello Webqq}q(hhhhubaubh3)q}q(hXEDownload Source Code: :download:`helloweb.py: `qhhhhhh7h}q(h]h]h]h]h"]uh$K"h%hh&]q(h/XDownload Source Code: qq}q(hXDownload Source Code: hhubh=)q}q(hX/:download:`helloweb.py: `qhhhhhhAh}q(UreftypeXdownloadqhDhEXexamples/helloweb.pyU refdomainUh]h]U refexplicith]h]h"]hFhGuh$K"h&]qhI)q}q(hhh}q(h]h]q(hNheh]h]h"]uhhh&]qh/X helloweb.py:qq}q(hUhhubahhSubaubeubh3)q}q(hXOMore `examples `_...qhhhhhh7h}q(h]h]h]h]h"]uh$K'h%hh&]q(h/XMore qq}q(hXMore hhubcdocutils.nodes reference q)q}q(hXG`examples `_h}q(Unameh UrefuriqX9https://bitbucket.org/circuits/circuits/src/tip/examples/qh]h]h]h]h"]uhhh&]qh/XexamplesqŅq}q(hUhhubahU referencequbcdocutils.nodes target q)q}q(hX< U referencedqKhhhUtargetqh}q(Urefurihh]qUexamplesqah]h]h]h"]qh auh&]ubh/X...q҅q}q(hX...hhubeubeubhhhhTh}q(h]UlevelKh]h]Usourcehh]h"]UlineKUtypehVuh$Nh%hh&]qh3)q}q(hUh}q(h]h]h]h]h"]uhhh&]qh/XuInclude file u'/home/prologic/work/circuits/docs/source/examples/examples/helloweb.py' not found or reading it failedqۅq}q(hUhhubahh7ubaubeUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhehh!h huh&]q(hhahehUU 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_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coder Uenr U datestampr NU report_levelr KU _destinationr NU halt_levelrKU strip_classesrNh,NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacer Uenvr!NUdump_pseudo_xmlr"NUexpose_internalsr#NUsectsubtitle_xformr$U source_linkr%NUrfc_referencesr&NUoutput_encodingr'Uutf-8r(U source_urlr)NUinput_encodingr*U utf-8-sigr+U_disable_configr,NU id_prefixr-UU tab_widthr.KUerror_encodingr/UUTF-8r0U_sourcer1hUgettext_compactr2U generatorr3NUdump_internalsr4NU smart_quotesr5U pep_base_urlr6Uhttp://www.python.org/dev/peps/r7Usyntax_highlightr8Ulongr9Uinput_encoding_error_handlerr:jUauto_id_prefixr;Uidr<Udoctitle_xformr=Ustrip_elements_with_classesr>NU _config_filesr?]Ufile_insertion_enabledr@U raw_enabledrAKU dump_settingsrBNubUsymbol_footnote_startrCKUidsrD}rE(hhh!hhehahhuUsubstitution_namesrF}rGhh%h}rH(h]h]h]Usourcehh]h"]uU footnotesrI]rJUrefidsrK}rLub.circuits-3.1.0/docs/build/doctrees/changes.doctree0000644000014400001440000026321412425013455023160 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(XzatoqXcircuits-2.1.0qXcircuits-2.0.1qXcircuits-2.0.0q Xpypiq X change logq NXolder change logsq NX circuits-1.5q X circuits-1.6quUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUzatoqhUcircuits-2-1-0qhUcircuits-2-0-1qh Ucircuits-2-0-0qh Upypiqh U change-logqh Uolder-change-logsqh U circuits-1-5qhU circuits-1-6q uUchildrenq!]q"cdocutils.nodes section q#)q$}q%(U rawsourceq&UUparentq'hUsourceq(cdocutils.nodes reprunicode q)X../CHANGES.rstq*q+}q,bUtagnameq-Usectionq.U attributesq/}q0(Udupnamesq1]Uclassesq2]Ubackrefsq3]Uidsq4]q5haUnamesq6]q7h auUlineq8KUdocumentq9hh!]q:(cdocutils.nodes title q;)q<}q=(h&X Change Logq>h'h$h(h+h-Utitleq?h/}q@(h1]h2]h3]h4]h6]uh8Kh9hh!]qAcdocutils.nodes Text qBX Change LogqCqD}qE(h&h>h'h3.1 2014-11-01qTqU}qV(h&Uh'hMubah-UrawqWubcdocutils.nodes bullet_list qX)qY}qZ(h&Uh/}q[(h1]h2]h3]h4]h6]uh'hFh!]q\(cdocutils.nodes list_item q])q^}q_(h&X1:bug:`115` Fixed FallbackErrorHandler API Change q`h/}qa(h1]h2]h3]h4]h6]uh'hYh!]qbcdocutils.nodes paragraph qc)qd}qe(h&X0:bug:`115` Fixed FallbackErrorHandler API Changeqfh/}qg(h1]h2]h3]h4]h6]uh'h^h!]qh(hL)qi}qj(h&Uh/}qk(UformathPhQhRh4]h3]h1]h2]h6]uh'hdh!]qlhBX*[Bug]qmqn}qo(h&Uh'hiubah-hWubcdocutils.nodes inline qp)qq}qr(h&Uh/}qs(h1]h2]h3]h4]h6]uh'hdh!]qthBX qu}qv(h&Uh'hqubah-Uinlineqwubcdocutils.nodes reference qx)qy}qz(h&X :bug:`115`h/}q{(UrefuriX1https://bitbucket.org/circuits/circuits/issue/115h4]h3]h1]h2]h6]uh'hdh!]q|hBX#115q}q~}q(h&Uh'hyubah-U referencequbhp)q}q(h&Uh/}q(h1]h2]h3]h4]h6]uh'hdh!]qhBX:q}q(h&Uh'hubah-hwubhBX& Fixed FallbackErrorHandler API Changeqq}q(h&X& Fixed FallbackErrorHandler API Changeqh'hdubeh-U paragraphqubah-U list_itemqubh])q}q(h&XE:bug:`113` Fixed bug with forced shutdown of subprocesses in Windows.qh/}q(h1]h2]h3]h4]h6]uh'hYh!]qhc)q}q(h&hh/}q(h1]h2]h3]h4]h6]uh'hh!]q(hL)q}q(h&Uh/}q(UformathPhQhRh4]h3]h1]h2]h6]uh'hh!]qhBX*[Bug]qq}q(h&Uh'hubah-hWubhp)q}q(h&Uh/}q(h1]h2]h3]h4]h6]uh'hh!]qhBX q}q(h&Uh'hubah-hwubhx)q}q(h&X :bug:`113`h/}q(UrefuriX1https://bitbucket.org/circuits/circuits/issue/113h4]h3]h1]h2]h6]uh'hh!]qhBX#113qq}q(h&Uh'hubah-hubhp)q}q(h&Uh/}q(h1]h2]h3]h4]h6]uh'hh!]qhBX:q}q(h&Uh'hubah-hwubhBX; Fixed bug with forced shutdown of subprocesses in Windows.qq}q(h&X; Fixed bug with forced shutdown of subprocesses in Windows.qh'hubeh-hubah-hubh])q}q(h&X:bug:`-` Bridge: Send exceptions via brige before change the exceptions weren't propagated via bridge because traceback object is not pickable, now traceback object is replaced by corresponding traceback listqh/}q(h1]h2]h3]h4]h6]uh'hYh!]qhc)q}q(h&hh/}q(h1]h2]h3]h4]h6]uh'hh!]q(hL)q}q(h&Uh/}q(UformathPhQhRh4]h3]h1]h2]h6]uh'hh!]qhBX*[Bug]qq}q(h&Uh'hubah-hWubhp)q}q(h&Uh/}q(h1]h2]h3]h4]h6]uh'hh!]qhBX:q}q(h&Uh'hubah-hwubhp)q}q(h&Uh/}q(h1]h2]h3]h4]h6]uh'hh!]qhBX q}q(h&Uh'hubah-hwubhBX Bridge: Send exceptions via brige before change the exceptions weren't propagated via bridge because traceback object is not pickable, now traceback object is replaced by corresponding traceback listqЅq}q(h&X Bridge: Send exceptions via brige before change the exceptions weren't propagated via bridge because traceback object is not pickable, now traceback object is replaced by corresponding traceback listqh'hubeh-hubah-hubh])q}q(h&X7:bug:`-` Bridge: Do not propagate no results via bridgeqh/}q(h1]h2]h3]h4]h6]uh'hYh!]qhc)q}q(h&hh/}q(h1]h2]h3]h4]h6]uh'hh!]q(hL)q}q(h&Uh/}q(UformathPhQhRh4]h3]h1]h2]h6]uh'hh!]qhBX*[Bug]qᅁq}q(h&Uh'hubah-hWubhp)q}q(h&Uh/}q(h1]h2]h3]h4]h6]uh'hh!]qhBX:q}q(h&Uh'hubah-hwubhp)q}q(h&Uh/}q(h1]h2]h3]h4]h6]uh'hh!]qhBX q}q(h&Uh'hubah-hwubhBX/ Bridge: Do not propagate no results via bridgeqq}q(h&X/ Bridge: Do not propagate no results via bridgeqh'hubeh-hubah-hubh])q}q(h&XQ:bug:`-` Fixed issue in brige with ommiting all but the first events sent at onceqh/}q(h1]h2]h3]h4]h6]uh'hYh!]qhc)q}q(h&hh/}q(h1]h2]h3]h4]h6]uh'hh!]q(hL)q}q(h&Uh/}q(UformathPhQhRh4]h3]h1]h2]h6]uh'hh!]rhBX*[Bug]rr}r(h&Uh'hubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'hh!]rhBX:r}r (h&Uh'jubah-hwubhp)r }r (h&Uh/}r (h1]h2]h3]h4]h6]uh'hh!]r hBX r}r(h&Uh'j ubah-hwubhBXI Fixed issue in brige with ommiting all but the first events sent at oncerr}r(h&XI Fixed issue in brige with ommiting all but the first events sent at oncerh'hubeh-hubah-hubh])r}r(h&X0:bug:`-` Fixed exception handing in circuits.webrh/}r(h1]h2]h3]h4]h6]uh'hYh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]r hBX*[Bug]r!r"}r#(h&Uh'jubah-hWubhp)r$}r%(h&Uh/}r&(h1]h2]h3]h4]h6]uh'jh!]r'hBX:r(}r)(h&Uh'j$ubah-hwubhp)r*}r+(h&Uh/}r,(h1]h2]h3]h4]h6]uh'jh!]r-hBX r.}r/(h&Uh'j*ubah-hwubhBX( Fixed exception handing in circuits.webr0r1}r2(h&X( Fixed exception handing in circuits.webr3h'jubeh-hubah-hubh])r4}r5(h&X1:bug:`-` Fixed import of FallBackExceptionHandlerr6h/}r7(h1]h2]h3]h4]h6]uh'hYh!]r8hc)r9}r:(h&j6h/}r;(h1]h2]h3]h4]h6]uh'j4h!]r<(hL)r=}r>(h&Uh/}r?(UformathPhQhRh4]h3]h1]h2]h6]uh'j9h!]r@hBX*[Bug]rArB}rC(h&Uh'j=ubah-hWubhp)rD}rE(h&Uh/}rF(h1]h2]h3]h4]h6]uh'j9h!]rGhBX:rH}rI(h&Uh'jDubah-hwubhp)rJ}rK(h&Uh/}rL(h1]h2]h3]h4]h6]uh'j9h!]rMhBX rN}rO(h&Uh'jJubah-hwubhBX) Fixed import of FallBackExceptionHandlerrPrQ}rR(h&X) Fixed import of FallBackExceptionHandlerrSh'j9ubeh-hubah-hubh])rT}rU(h&X!:bug:`-` Node: Add node examples.rVh/}rW(h1]h2]h3]h4]h6]uh'hYh!]rXhc)rY}rZ(h&jVh/}r[(h1]h2]h3]h4]h6]uh'jTh!]r\(hL)r]}r^(h&Uh/}r_(UformathPhQhRh4]h3]h1]h2]h6]uh'jYh!]r`hBX*[Bug]rarb}rc(h&Uh'j]ubah-hWubhp)rd}re(h&Uh/}rf(h1]h2]h3]h4]h6]uh'jYh!]rghBX:rh}ri(h&Uh'jdubah-hwubhp)rj}rk(h&Uh/}rl(h1]h2]h3]h4]h6]uh'jYh!]rmhBX rn}ro(h&Uh'jjubah-hwubhBX Node: Add node examples.rprq}rr(h&X Node: Add node examples.rsh'jYubeh-hubah-hubh])rt}ru(h&X*:bug:`-` Node: fixes event response flood.rvh/}rw(h1]h2]h3]h4]h6]uh'hYh!]rxhc)ry}rz(h&jvh/}r{(h1]h2]h3]h4]h6]uh'jth!]r|(hL)r}}r~(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jyh!]rhBX*[Bug]rr}r(h&Uh'j}ubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jyh!]rhBX:r}r(h&Uh'jubah-hwubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jyh!]rhBX r}r(h&Uh'jubah-hwubhBX" Node: fixes event response flood.rr}r(h&X" Node: fixes event response flood.rh'jyubeh-hubah-hubh])r}r(h&X+:bug:`-` Node: fixes the event value issue.rh/}r(h1]h2]h3]h4]h6]uh'hYh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX*[Bug]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhBX# Node: fixes the event value issue.rr}r(h&X# Node: fixes the event value issue.rh'jubeh-hubah-hubh])r}r(h&X4:bug:`-` Node: add event firewall (client / server).rh/}r(h1]h2]h3]h4]h6]uh'hYh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX*[Bug]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhBX, Node: add event firewall (client / server).rr}r(h&X, Node: add event firewall (client / server).rh'jubeh-hubah-hubh])r}r(h&X2:bug:`-` Node: add peer node: return channel name.rh/}r(h1]h2]h3]h4]h6]uh'hYh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX*[Bug]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhBX* Node: add peer node: return channel name.rr}r(h&X* Node: add peer node: return channel name.rh'jubeh-hubah-hubh])r}r(h&X>:bug:`-` Fixes optional parameters handling (client / server).rh/}r(h1]h2]h3]h4]h6]uh'hYh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX*[Bug]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r (h&Uh'jubah-hwubhp)r }r (h&Uh/}r (h1]h2]h3]h4]h6]uh'jh!]r hBX r}r(h&Uh'j ubah-hwubhBX6 Fixes optional parameters handling (client / server).rr}r(h&X6 Fixes optional parameters handling (client / server).rh'jubeh-hubah-hubh])r}r(h&Xm:bug:`-` Rename the FallbackErrorHandler to FallbackExceptionHandler and the event it listens to to exceptionrh/}r(h1]h2]h3]h4]h6]uh'hYh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]r hBX*[Bug]r!r"}r#(h&Uh'jubah-hWubhp)r$}r%(h&Uh/}r&(h1]h2]h3]h4]h6]uh'jh!]r'hBX:r(}r)(h&Uh'j$ubah-hwubhp)r*}r+(h&Uh/}r,(h1]h2]h3]h4]h6]uh'jh!]r-hBX r.}r/(h&Uh'j*ubah-hwubhBXe Rename the FallbackErrorHandler to FallbackExceptionHandler and the event it listens to to exceptionr0r1}r2(h&Xe Rename the FallbackErrorHandler to FallbackExceptionHandler and the event it listens to to exceptionr3h'jubeh-hubah-hubh])r4}r5(h&X:bug:`-` Bridge waits for event processing on the other side before proxy handler ends. Now it is possible to collect values from remote handlers in %_success event.r6h/}r7(h1]h2]h3]h4]h6]uh'hYh!]r8hc)r9}r:(h&j6h/}r;(h1]h2]h3]h4]h6]uh'j4h!]r<(hL)r=}r>(h&Uh/}r?(UformathPhQhRh4]h3]h1]h2]h6]uh'j9h!]r@hBX*[Bug]rArB}rC(h&Uh'j=ubah-hWubhp)rD}rE(h&Uh/}rF(h1]h2]h3]h4]h6]uh'j9h!]rGhBX:rH}rI(h&Uh'jDubah-hwubhp)rJ}rK(h&Uh/}rL(h1]h2]h3]h4]h6]uh'j9h!]rMhBX rN}rO(h&Uh'jJubah-hwubhBX Bridge waits for event processing on the other side before proxy handler ends. Now it is possible to collect values from remote handlers in %_success event.rPrQ}rR(h&X Bridge waits for event processing on the other side before proxy handler ends. Now it is possible to collect values from remote handlers in %_success event.rSh'j9ubeh-hubah-hubeh-U bullet_listrTubeubh#)rU}rV(h&Uh'h$h(Nh-h.h/}rW(h1]h2]h3]h4]rXX3.0.1rYah6]uh8Nh9hh!]rZ(hL)r[}r\(h&Uh/}r](UrawtextUUformathPhQhRh4]h3]h1]h2]h6]uh'jUh!]r^hBX

    3.0.1 2014-11-01

    r_r`}ra(h&Uh'j[ubah-hWubhX)rb}rc(h&Uh/}rd(h1]h2]h3]h4]h6]uh'jUh!]re(h])rf}rg(h&X,:support:`96` Link to ChangeLog from README rhh/}ri(h1]h2]h3]h4]h6]uh'jbh!]rjhc)rk}rl(h&X+:support:`96` Link to ChangeLog from READMErmh/}rn(h1]h2]h3]h4]h6]uh'jfh!]ro(hL)rp}rq(h&Uh/}rr(UformathPhQhRh4]h3]h1]h2]h6]uh'jkh!]rshBX.[Support]rtru}rv(h&Uh'jpubah-hWubhp)rw}rx(h&Uh/}ry(h1]h2]h3]h4]h6]uh'jkh!]rzhBX r{}r|(h&Uh'jwubah-hwubhx)r}}r~(h&X :support:`96`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/96h4]h3]h1]h2]h6]uh'jkh!]rhBX#96rr}r(h&Uh'j}ubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jkh!]rhBX:r}r(h&Uh'jubah-hwubhBX Link to ChangeLog from READMErr}r(h&X Link to ChangeLog from READMErh'jkubeh-hubah-hubh])r}r(h&X5:support:`117` Fixed inconsistent top-level examples.rh/}r(h1]h2]h3]h4]h6]uh'jbh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX.[Support]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X:support:`117`h/}r(UrefuriX1https://bitbucket.org/circuits/circuits/issue/117h4]h3]h1]h2]h6]uh'jh!]rhBX#117rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhBX' Fixed inconsistent top-level examples.rr}r(h&X' Fixed inconsistent top-level examples.rh'jubeh-hubah-hubeh-jTubeubh#)r}r(h&Uh'h$h(Nh-h.h/}r(h1]h2]h3]h4]rX3.0rah6]uh8Nh9hh!]r(hL)r}r(h&Uh/}r(UrawtextUUformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX

    3.0 2014-08-31

    rr}r(h&Uh'jubah-hWubhX)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]r(h])r}r(h&XA:bug:`37 major` Fixed a typo in :class:`~circuits.io.file.File` rh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&X?:bug:`37 major` Fixed a typo in :class:`~circuits.io.file.File`rh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX*[Bug]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X:bug:`37 major`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/37h4]h3]h1]h2]h6]uh'jh!]rhBX#37rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhBX Fixed a typo in rr}r(h&X Fixed a typo in rh'jubcsphinx.addnodes pending_xref r)r}r(h&X:class:`~circuits.io.file.File`rh/}r(UreftypeXclassrUrefwarnU reftargetXcircuits.io.file.FilerU refdomainXpyrh4]h3]U refexplicith1]h2]h6]UrefdocXchangesrUpy:classNU py:moduleNuh'jh!]rcdocutils.nodes literal r)r}r(h&jh/}r(h1]h2]r(UxrefrjXpy-classreh3]h4]h6]uh'jh!]rhBXFilerr}r(h&Uh'jubah-Uliteralrubah-U pending_xrefrubeh-hubah-hubh])r}r(h&X=:bug:`38 major` Guard against invalid headers. (circuits.web)rh/}r(h1]h2]h3]h4]h6]uh'jh!]r hc)r }r (h&jh/}r (h1]h2]h3]h4]h6]uh'jh!]r (hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'j h!]rhBX*[Bug]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'j h!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X:bug:`38 major`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/38h4]h3]h1]h2]h6]uh'j h!]rhBX#38rr }r!(h&Uh'jubah-hubhp)r"}r#(h&Uh/}r$(h1]h2]h3]h4]h6]uh'j h!]r%hBX:r&}r'(h&Uh'j"ubah-hwubhBX. Guard against invalid headers. (circuits.web)r(r)}r*(h&X. Guard against invalid headers. (circuits.web)r+h'j ubeh-hubah-hubh])r,}r-(h&XR:bug:`46 major` Set ``Content-Type`` header on response for errors. (circuits.web)r.h/}r/(h1]h2]h3]h4]h6]uh'jh!]r0hc)r1}r2(h&j.h/}r3(h1]h2]h3]h4]h6]uh'j,h!]r4(hL)r5}r6(h&Uh/}r7(UformathPhQhRh4]h3]h1]h2]h6]uh'j1h!]r8hBX*[Bug]r9r:}r;(h&Uh'j5ubah-hWubhp)r<}r=(h&Uh/}r>(h1]h2]h3]h4]h6]uh'j1h!]r?hBX r@}rA(h&Uh'j<ubah-hwubhx)rB}rC(h&X:bug:`46 major`h/}rD(UrefuriX0https://bitbucket.org/circuits/circuits/issue/46h4]h3]h1]h2]h6]uh'j1h!]rEhBX#46rFrG}rH(h&Uh'jBubah-hubhp)rI}rJ(h&Uh/}rK(h1]h2]h3]h4]h6]uh'j1h!]rLhBX:rM}rN(h&Uh'jIubah-hwubhBX Set rOrP}rQ(h&X Set rRh'j1ubj)rS}rT(h&X``Content-Type``rUh/}rV(h1]h2]h3]h4]h6]uh'j1h!]rWhBX Content-TyperXrY}rZ(h&Uh'jSubah-jubhBX. header on response for errors. (circuits.web)r[r\}r](h&X. header on response for errors. (circuits.web)r^h'j1ubeh-hubah-hubh])r_}r`(h&Xo:bug:`48 major` Allow ``event`` to be passed to the decorated function (*the request handler*) for circuits.webrah/}rb(h1]h2]h3]h4]h6]uh'jh!]rchc)rd}re(h&jah/}rf(h1]h2]h3]h4]h6]uh'j_h!]rg(hL)rh}ri(h&Uh/}rj(UformathPhQhRh4]h3]h1]h2]h6]uh'jdh!]rkhBX*[Bug]rlrm}rn(h&Uh'jhubah-hWubhp)ro}rp(h&Uh/}rq(h1]h2]h3]h4]h6]uh'jdh!]rrhBX rs}rt(h&Uh'joubah-hwubhx)ru}rv(h&X:bug:`48 major`h/}rw(UrefuriX0https://bitbucket.org/circuits/circuits/issue/48h4]h3]h1]h2]h6]uh'jdh!]rxhBX#48ryrz}r{(h&Uh'juubah-hubhp)r|}r}(h&Uh/}r~(h1]h2]h3]h4]h6]uh'jdh!]rhBX:r}r(h&Uh'j|ubah-hwubhBX Allow rr}r(h&X Allow rh'jdubj)r}r(h&X ``event``rh/}r(h1]h2]h3]h4]h6]uh'jdh!]rhBXeventrr}r(h&Uh'jubah-jubhBX) to be passed to the decorated function (rr}r(h&X) to be passed to the decorated function (rh'jdubcdocutils.nodes emphasis r)r}r(h&X*the request handler*rh/}r(h1]h2]h3]h4]h6]uh'jdh!]rhBXthe request handlerrr}r(h&Uh'jubah-UemphasisrubhBX) for circuits.webrr}r(h&X) for circuits.webrh'jdubeh-hubah-hubh])r}r(h&XT:bug:`45 major` Fixed use of ``cmp()`` and ``__cmp__()`` for Python 3 compatibility.rh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX*[Bug]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X:bug:`45 major`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/45h4]h3]h1]h2]h6]uh'jh!]rhBX#45rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhBX Fixed use of rr}r(h&X Fixed use of rh'jubj)r}r(h&X ``cmp()``rh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBXcmp()rr}r(h&Uh'jubah-jubhBX and rr}r(h&X and rh'jubj)r}r(h&X ``__cmp__()``rh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX __cmp__()rr}r(h&Uh'jubah-jubhBX for Python 3 compatibility.rr}r(h&X for Python 3 compatibility.rh'jubeh-hubah-hubh])r}r(h&X@:bug:`56 major` circuits.web HEAD request send response body webrh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX*[Bug]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X:bug:`56 major`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/56h4]h3]h1]h2]h6]uh'jh!]rhBX#56rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhBX1 circuits.web HEAD request send response body webrr}r(h&X1 circuits.web HEAD request send response body webrh'jubeh-hubah-hubh])r}r(h&Xt:bug:`62 major` Fix packaging and bump circuits 1.5.1 for @dsuch (*Dariusz Suchojad*) for `Zato `_rh/}r (h1]h2]h3]h4]h6]uh'jh!]r hc)r }r (h&jh/}r (h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'j h!]rhBX*[Bug]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'j h!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X:bug:`62 major`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/62h4]h3]h1]h2]h6]uh'j h!]rhBX#62r r!}r"(h&Uh'jubah-hubhp)r#}r$(h&Uh/}r%(h1]h2]h3]h4]h6]uh'j h!]r&hBX:r'}r((h&Uh'j#ubah-hwubhBX3 Fix packaging and bump circuits 1.5.1 for @dsuch (r)r*}r+(h&X3 Fix packaging and bump circuits 1.5.1 for @dsuch (r,h'j ubj)r-}r.(h&X*Dariusz Suchojad*r/h/}r0(h1]h2]h3]h4]h6]uh'j h!]r1hBXDariusz Suchojadr2r3}r4(h&Uh'j-ubah-jubhBX) for r5r6}r7(h&X) for r8h'j ubhx)r9}r:(h&X`Zato `_r;h/}r<(UnameXZator=UrefuriXhttps://zato.io/r>h4]h3]h1]h2]h6]uh'j h!]r?hBXZator@rA}rB(h&Uh'j9ubah-hubcdocutils.nodes target rC)rD}rE(h&X rFh/}rG(Urefurij>h4]rHhah3]h1]h2]h6]rIhauh'j h!]h-UtargetrJubeh-hubah-hubh])rK}rL(h&X{:bug:`53 major` WebSocketClient treating WebSocket data in same TCP segment as HTTP response as part the HTTP response. webrMh/}rN(h1]h2]h3]h4]h6]uh'jh!]rOhc)rP}rQ(h&jMh/}rR(h1]h2]h3]h4]h6]uh'jKh!]rS(hL)rT}rU(h&Uh/}rV(UformathPhQhRh4]h3]h1]h2]h6]uh'jPh!]rWhBX*[Bug]rXrY}rZ(h&Uh'jTubah-hWubhp)r[}r\(h&Uh/}r](h1]h2]h3]h4]h6]uh'jPh!]r^hBX r_}r`(h&Uh'j[ubah-hwubhx)ra}rb(h&X:bug:`53 major`h/}rc(UrefuriX0https://bitbucket.org/circuits/circuits/issue/53h4]h3]h1]h2]h6]uh'jPh!]rdhBX#53rerf}rg(h&Uh'jaubah-hubhp)rh}ri(h&Uh/}rj(h1]h2]h3]h4]h6]uh'jPh!]rkhBX:rl}rm(h&Uh'jhubah-hwubhBXl WebSocketClient treating WebSocket data in same TCP segment as HTTP response as part the HTTP response. webrnro}rp(h&Xl WebSocketClient treating WebSocket data in same TCP segment as HTTP response as part the HTTP response. webrqh'jPubeh-hubah-hubh])rr}rs(h&X):support:`63` typos in documentation docsrth/}ru(h1]h2]h3]h4]h6]uh'jh!]rvhc)rw}rx(h&jth/}ry(h1]h2]h3]h4]h6]uh'jrh!]rz(hL)r{}r|(h&Uh/}r}(UformathPhQhRh4]h3]h1]h2]h6]uh'jwh!]r~hBX.[Support]rr}r(h&Uh'j{ubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jwh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X :support:`63`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/63h4]h3]h1]h2]h6]uh'jwh!]rhBX#63rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jwh!]rhBX:r}r(h&Uh'jubah-hwubhBX typos in documentation docsrr}r(h&X typos in documentation docsrh'jwubeh-hubah-hubh])r}r(h&X=:bug:`67 major` web example jsontool is broken on python3 webrh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX*[Bug]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X:bug:`67 major`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/67h4]h3]h1]h2]h6]uh'jh!]rhBX#67rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhBX. web example jsontool is broken on python3 webrr}r(h&X. web example jsontool is broken on python3 webrh'jubeh-hubah-hubh])r}r(h&X::support:`60` meantion @handler decorator in tutorial docsrh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX.[Support]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X :support:`60`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/60h4]h3]h1]h2]h6]uh'jh!]rhBX#60rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhBX- meantion @handler decorator in tutorial docsrr}r(h&X- meantion @handler decorator in tutorial docsrh'jubeh-hubah-hubh])r}r(h&XM:support:`65` Update tutorial to match circuits 3.0 API(s) and Semantics docsrh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX.[Support]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X :support:`65`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/65h4]h3]h1]h2]h6]uh'jh!]rhBX#65rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r (h&Uh'jubah-hwubhBX@ Update tutorial to match circuits 3.0 API(s) and Semantics docsr r }r (h&X@ Update tutorial to match circuits 3.0 API(s) and Semantics docsr h'jubeh-hubah-hubh])r}r(h&XA:support:`69` Merge #circuits-dev FreeNode Channel into #circuitsrh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX.[Support]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r (h1]h2]h3]h4]h6]uh'jh!]r!hBX r"}r#(h&Uh'jubah-hwubhx)r$}r%(h&X :support:`69`h/}r&(UrefuriX0https://bitbucket.org/circuits/circuits/issue/69h4]h3]h1]h2]h6]uh'jh!]r'hBX#69r(r)}r*(h&Uh'j$ubah-hubhp)r+}r,(h&Uh/}r-(h1]h2]h3]h4]h6]uh'jh!]r.hBX:r/}r0(h&Uh'j+ubah-hwubhBX4 Merge #circuits-dev FreeNode Channel into #circuitsr1r2}r3(h&X4 Merge #circuits-dev FreeNode Channel into #circuitsr4h'jubeh-hubah-hubh])r5}r6(h&XO:bug:`77 major` Uncaught exceptions Event collides with sockets and others corer7h/}r8(h1]h2]h3]h4]h6]uh'jh!]r9hc)r:}r;(h&j7h/}r<(h1]h2]h3]h4]h6]uh'j5h!]r=(hL)r>}r?(h&Uh/}r@(UformathPhQhRh4]h3]h1]h2]h6]uh'j:h!]rAhBX*[Bug]rBrC}rD(h&Uh'j>ubah-hWubhp)rE}rF(h&Uh/}rG(h1]h2]h3]h4]h6]uh'j:h!]rHhBX rI}rJ(h&Uh'jEubah-hwubhx)rK}rL(h&X:bug:`77 major`h/}rM(UrefuriX0https://bitbucket.org/circuits/circuits/issue/77h4]h3]h1]h2]h6]uh'j:h!]rNhBX#77rOrP}rQ(h&Uh'jKubah-hubhp)rR}rS(h&Uh/}rT(h1]h2]h3]h4]h6]uh'j:h!]rUhBX:rV}rW(h&Uh'jRubah-hwubhBX@ Uncaught exceptions Event collides with sockets and others corerXrY}rZ(h&X@ Uncaught exceptions Event collides with sockets and others corer[h'j:ubeh-hubah-hubh])r\}r](h&X0:bug:`81 major` "index" method not serving / webr^h/}r_(h1]h2]h3]h4]h6]uh'jh!]r`hc)ra}rb(h&j^h/}rc(h1]h2]h3]h4]h6]uh'j\h!]rd(hL)re}rf(h&Uh/}rg(UformathPhQhRh4]h3]h1]h2]h6]uh'jah!]rhhBX*[Bug]rirj}rk(h&Uh'jeubah-hWubhp)rl}rm(h&Uh/}rn(h1]h2]h3]h4]h6]uh'jah!]rohBX rp}rq(h&Uh'jlubah-hwubhx)rr}rs(h&X:bug:`81 major`h/}rt(UrefuriX0https://bitbucket.org/circuits/circuits/issue/81h4]h3]h1]h2]h6]uh'jah!]ruhBX#81rvrw}rx(h&Uh'jrubah-hubhp)ry}rz(h&Uh/}r{(h1]h2]h3]h4]h6]uh'jah!]r|hBX:r}}r~(h&Uh'jyubah-hwubhBX! "index" method not serving / webrr}r(h&X! "index" method not serving / webrh'jaubeh-hubah-hubh])r}r(h&XE:support:`75` Document and show examples of using circuits.tools docsrh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX.[Support]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X :support:`75`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/75h4]h3]h1]h2]h6]uh'jh!]rhBX#75rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhBX8 Document and show examples of using circuits.tools docsrr}r(h&X8 Document and show examples of using circuits.tools docsrh'jubeh-hubah-hubh])r}r(h&X>:support:`70` Convention around method names of event handlersrh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX.[Support]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X :support:`70`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/70h4]h3]h1]h2]h6]uh'jh!]rhBX#70rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhBX1 Convention around method names of event handlersrr}r(h&X1 Convention around method names of event handlersrh'jubeh-hubah-hubh])r}r(h&X=:bug:`76 major` Missing unit test for DNS lookup failures netrh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX*[Bug]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X:bug:`76 major`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/76h4]h3]h1]h2]h6]uh'jh!]rhBX#76rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhBX. Missing unit test for DNS lookup failures netrr}r(h&X. Missing unit test for DNS lookup failures netrh'jubeh-hubah-hubh])r}r(h&XA:support:`72` Update Event Filtering section of Users Manual docsrh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX.[Support]rr}r(h&Uh'jubah-hWubhp)r}r (h&Uh/}r (h1]h2]h3]h4]h6]uh'jh!]r hBX r }r (h&Uh'jubah-hwubhx)r}r(h&X :support:`72`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/72h4]h3]h1]h2]h6]uh'jh!]rhBX#72rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhBX4 Update Event Filtering section of Users Manual docsrr}r(h&X4 Update Event Filtering section of Users Manual docsrh'jubeh-hubah-hubh])r}r (h&X>:support:`73` Fix duplication in auto generated API Docs. docsr!h/}r"(h1]h2]h3]h4]h6]uh'jh!]r#hc)r$}r%(h&j!h/}r&(h1]h2]h3]h4]h6]uh'jh!]r'(hL)r(}r)(h&Uh/}r*(UformathPhQhRh4]h3]h1]h2]h6]uh'j$h!]r+hBX.[Support]r,r-}r.(h&Uh'j(ubah-hWubhp)r/}r0(h&Uh/}r1(h1]h2]h3]h4]h6]uh'j$h!]r2hBX r3}r4(h&Uh'j/ubah-hwubhx)r5}r6(h&X :support:`73`h/}r7(UrefuriX0https://bitbucket.org/circuits/circuits/issue/73h4]h3]h1]h2]h6]uh'j$h!]r8hBX#73r9r:}r;(h&Uh'j5ubah-hubhp)r<}r=(h&Uh/}r>(h1]h2]h3]h4]h6]uh'j$h!]r?hBX:r@}rA(h&Uh'j<ubah-hwubhBX1 Fix duplication in auto generated API Docs. docsrBrC}rD(h&X1 Fix duplication in auto generated API Docs. docsrEh'j$ubeh-hubah-hubh])rF}rG(h&X6:bug:`66 major` web examples jsonserializer broken webrHh/}rI(h1]h2]h3]h4]h6]uh'jh!]rJhc)rK}rL(h&jHh/}rM(h1]h2]h3]h4]h6]uh'jFh!]rN(hL)rO}rP(h&Uh/}rQ(UformathPhQhRh4]h3]h1]h2]h6]uh'jKh!]rRhBX*[Bug]rSrT}rU(h&Uh'jOubah-hWubhp)rV}rW(h&Uh/}rX(h1]h2]h3]h4]h6]uh'jKh!]rYhBX rZ}r[(h&Uh'jVubah-hwubhx)r\}r](h&X:bug:`66 major`h/}r^(UrefuriX0https://bitbucket.org/circuits/circuits/issue/66h4]h3]h1]h2]h6]uh'jKh!]r_hBX#66r`ra}rb(h&Uh'j\ubah-hubhp)rc}rd(h&Uh/}re(h1]h2]h3]h4]h6]uh'jKh!]rfhBX:rg}rh(h&Uh'jcubah-hwubhBX' web examples jsonserializer broken webrirj}rk(h&X' web examples jsonserializer broken webrlh'jKubeh-hubah-hubh])rm}rn(h&XM:bug:`59 major` circuits.web DoS in serve_file (remote denial of service) webroh/}rp(h1]h2]h3]h4]h6]uh'jh!]rqhc)rr}rs(h&joh/}rt(h1]h2]h3]h4]h6]uh'jmh!]ru(hL)rv}rw(h&Uh/}rx(UformathPhQhRh4]h3]h1]h2]h6]uh'jrh!]ryhBX*[Bug]rzr{}r|(h&Uh'jvubah-hWubhp)r}}r~(h&Uh/}r(h1]h2]h3]h4]h6]uh'jrh!]rhBX r}r(h&Uh'j}ubah-hwubhx)r}r(h&X:bug:`59 major`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/59h4]h3]h1]h2]h6]uh'jrh!]rhBX#59rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jrh!]rhBX:r}r(h&Uh'jubah-hwubhBX> circuits.web DoS in serve_file (remote denial of service) webrr}r(h&X> circuits.web DoS in serve_file (remote denial of service) webrh'jrubeh-hubah-hubh])r}r(h&X::bug:`91 major` Call/Wait and specific instances of eventsrh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX*[Bug]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X:bug:`91 major`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/91h4]h3]h1]h2]h6]uh'jh!]rhBX#91rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhBX+ Call/Wait and specific instances of eventsrr}r(h&X+ Call/Wait and specific instances of eventsrh'jubeh-hubah-hubh])r}r(h&XB:support:`78` Migrate Change Log maintenance and build to Releasesrh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX.[Support]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X :support:`78`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/78h4]h3]h1]h2]h6]uh'jh!]rhBX#78rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhBX5 Migrate Change Log maintenance and build to Releasesrr}r(h&X5 Migrate Change Log maintenance and build to Releasesrh'jubeh-hubah-hubh])r}r(h&X3:support:`71` Document the value_changed event docsrh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX.[Support]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X :support:`71`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/71h4]h3]h1]h2]h6]uh'jh!]rhBX#71rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhBX& Document the value_changed event docsrr}r(h&X& Document the value_changed event docsrh'jubeh-hubah-hubh])r }r (h&X7:support:`92` Update circuitsframework.com content docsr h/}r (h1]h2]h3]h4]h6]uh'jh!]r hc)r}r(h&j h/}r(h1]h2]h3]h4]h6]uh'j h!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX.[Support]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r (h&X :support:`92`h/}r!(UrefuriX0https://bitbucket.org/circuits/circuits/issue/92h4]h3]h1]h2]h6]uh'jh!]r"hBX#92r#r$}r%(h&Uh'jubah-hubhp)r&}r'(h&Uh/}r((h1]h2]h3]h4]h6]uh'jh!]r)hBX:r*}r+(h&Uh'j&ubah-hwubhBX* Update circuitsframework.com content docsr,r-}r.(h&X* Update circuitsframework.com content docsr/h'jubeh-hubah-hubh])r0}r1(h&X[:bug:`89 major` Class attribtues that reference methods cause duplicate event handlers corer2h/}r3(h1]h2]h3]h4]h6]uh'jh!]r4hc)r5}r6(h&j2h/}r7(h1]h2]h3]h4]h6]uh'j0h!]r8(hL)r9}r:(h&Uh/}r;(UformathPhQhRh4]h3]h1]h2]h6]uh'j5h!]r<hBX*[Bug]r=r>}r?(h&Uh'j9ubah-hWubhp)r@}rA(h&Uh/}rB(h1]h2]h3]h4]h6]uh'j5h!]rChBX rD}rE(h&Uh'j@ubah-hwubhx)rF}rG(h&X:bug:`89 major`h/}rH(UrefuriX0https://bitbucket.org/circuits/circuits/issue/89h4]h3]h1]h2]h6]uh'j5h!]rIhBX#89rJrK}rL(h&Uh'jFubah-hubhp)rM}rN(h&Uh/}rO(h1]h2]h3]h4]h6]uh'j5h!]rPhBX:rQ}rR(h&Uh'jMubah-hwubhBXL Class attribtues that reference methods cause duplicate event handlers corerSrT}rU(h&XL Class attribtues that reference methods cause duplicate event handlers corerVh'j5ubeh-hubah-hubh])rW}rX(h&X`:support:`88` Document the implicit registration of components attached as class attributes docsrYh/}rZ(h1]h2]h3]h4]h6]uh'jh!]r[hc)r\}r](h&jYh/}r^(h1]h2]h3]h4]h6]uh'jWh!]r_(hL)r`}ra(h&Uh/}rb(UformathPhQhRh4]h3]h1]h2]h6]uh'j\h!]rchBX.[Support]rdre}rf(h&Uh'j`ubah-hWubhp)rg}rh(h&Uh/}ri(h1]h2]h3]h4]h6]uh'j\h!]rjhBX rk}rl(h&Uh'jgubah-hwubhx)rm}rn(h&X :support:`88`h/}ro(UrefuriX0https://bitbucket.org/circuits/circuits/issue/88h4]h3]h1]h2]h6]uh'j\h!]rphBX#88rqrr}rs(h&Uh'jmubah-hubhp)rt}ru(h&Uh/}rv(h1]h2]h3]h4]h6]uh'j\h!]rwhBX:rx}ry(h&Uh'jtubah-hwubhBXS Document the implicit registration of components attached as class attributes docsrzr{}r|(h&XS Document the implicit registration of components attached as class attributes docsr}h'j\ubeh-hubah-hubh])r~}r(h&XD:support:`87` A rendered example of ``circuits.tools.graph()``. docsrh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'j~h!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX.[Support]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X :support:`87`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/87h4]h3]h1]h2]h6]uh'jh!]rhBX#87rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhBX A rendered example of rr}r(h&X A rendered example of rh'jubj)r}r(h&X``circuits.tools.graph()``rh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBXcircuits.tools.graph()rr}r(h&Uh'jubah-jubhBX. docsrr}r(h&X. docsrh'jubeh-hubah-hubh])r}r(h&X,:support:`85` Migrate away from ShiningPandarh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX.[Support]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X :support:`85`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/85h4]h3]h1]h2]h6]uh'jh!]rhBX#85rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhBX Migrate away from ShiningPandarr}r(h&X Migrate away from ShiningPandarh'jubeh-hubah-hubh])r}r(h&X::support:`61` circuits.web documentation enhancements docsrh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX.[Support]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X :support:`61`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/61h4]h3]h1]h2]h6]uh'jh!]rhBX#61rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhBX- circuits.web documentation enhancements docsrr}r(h&X- circuits.web documentation enhancements docsrh'jubeh-hubah-hubh])r}r(h&XI:bug:`47 major` Dispatcher does not fully respect optional arguments. webrh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r (h&Uh/}r (UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]r hBX*[Bug]r r }r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X:bug:`47 major`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/47h4]h3]h1]h2]h6]uh'jh!]rhBX#47rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r }r!(h&Uh'jubah-hwubhBX: Dispatcher does not fully respect optional arguments. webr"r#}r$(h&X: Dispatcher does not fully respect optional arguments. webr%h'jubeh-hubah-hubh])r&}r'(h&X:support:`86` Telnet Tutorialr(h/}r)(h1]h2]h3]h4]h6]uh'jh!]r*hc)r+}r,(h&j(h/}r-(h1]h2]h3]h4]h6]uh'j&h!]r.(hL)r/}r0(h&Uh/}r1(UformathPhQhRh4]h3]h1]h2]h6]uh'j+h!]r2hBX.[Support]r3r4}r5(h&Uh'j/ubah-hWubhp)r6}r7(h&Uh/}r8(h1]h2]h3]h4]h6]uh'j+h!]r9hBX r:}r;(h&Uh'j6ubah-hwubhx)r<}r=(h&X :support:`86`h/}r>(UrefuriX0https://bitbucket.org/circuits/circuits/issue/86h4]h3]h1]h2]h6]uh'j+h!]r?hBX#86r@rA}rB(h&Uh'j<ubah-hubhp)rC}rD(h&Uh/}rE(h1]h2]h3]h4]h6]uh'j+h!]rFhBX:rG}rH(h&Uh'jCubah-hwubhBX Telnet TutorialrIrJ}rK(h&X Telnet TutorialrLh'j+ubeh-hubah-hubh])rM}rN(h&X^:feature:`94` Modified the :class:`circuits.web.Logger` to use the ``response_success`` event.rOh/}rP(h1]h2]h3]h4]h6]uh'jh!]rQhc)rR}rS(h&jOh/}rT(h1]h2]h3]h4]h6]uh'jMh!]rU(hL)rV}rW(h&Uh/}rX(UformathPhQhRh4]h3]h1]h2]h6]uh'jRh!]rYhBX.[Feature]rZr[}r\(h&Uh'jVubah-hWubhp)r]}r^(h&Uh/}r_(h1]h2]h3]h4]h6]uh'jRh!]r`hBX ra}rb(h&Uh'j]ubah-hwubhx)rc}rd(h&X :feature:`94`h/}re(UrefuriX0https://bitbucket.org/circuits/circuits/issue/94h4]h3]h1]h2]h6]uh'jRh!]rfhBX#94rgrh}ri(h&Uh'jcubah-hubhp)rj}rk(h&Uh/}rl(h1]h2]h3]h4]h6]uh'jRh!]rmhBX:rn}ro(h&Uh'jjubah-hwubhBX Modified the rprq}rr(h&X Modified the rsh'jRubj)rt}ru(h&X:class:`circuits.web.Logger`rvh/}rw(UreftypeXclassrxUrefwarnU reftargetXcircuits.web.LoggerryU refdomainXpyrzh4]h3]U refexplicith1]h2]h6]UrefdocjUpy:classNU py:moduleNuh'jRh!]r{j)r|}r}(h&jvh/}r~(h1]h2]r(jjzXpy-classreh3]h4]h6]uh'jth!]rhBXcircuits.web.Loggerrr}r(h&Uh'j|ubah-jubah-jubhBX to use the rr}r(h&X to use the rh'jRubj)r}r(h&X``response_success``rh/}r(h1]h2]h3]h4]h6]uh'jRh!]rhBXresponse_successrr}r(h&Uh'jubah-jubhBX event.rr}r(h&X event.rh'jRubeh-hubah-hubh])r}r(h&XR:support:`95` Updated Developer Documentation with corrections and a new workflow.rh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX.[Support]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X :support:`95`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/95h4]h3]h1]h2]h6]uh'jh!]rhBX#95rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhBXE Updated Developer Documentation with corrections and a new workflow.rr}r(h&XE Updated Developer Documentation with corrections and a new workflow.rh'jubeh-hubah-hubh])r}r(h&XQ:bug:`97 major` Fixed ``tests.net.test_tcp.test_lookup_failure`` test for Windowsrh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX*[Bug]rr}r(h&Uh'jubah-hWubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX r}r(h&Uh'jubah-hwubhx)r}r(h&X:bug:`97 major`h/}r(UrefuriX0https://bitbucket.org/circuits/circuits/issue/97h4]h3]h1]h2]h6]uh'jh!]rhBX#97rr}r(h&Uh'jubah-hubhp)r}r(h&Uh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX:r}r(h&Uh'jubah-hwubhBX Fixed rr}r(h&X Fixed rh'jubj)r}r(h&X*``tests.net.test_tcp.test_lookup_failure``rh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX&tests.net.test_tcp.test_lookup_failurerr}r(h&Uh'jubah-jubhBX test for Windowsrr}r(h&X test for Windowsrh'jubeh-hubah-hubh])r}r(h&X::feature:`98` Dockerized circuits. See: https://docker.io/rh/}r(h1]h2]h3]h4]h6]uh'jh!]rhc)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jh!]r(hL)r}r(h&Uh/}r(UformathPhQhRh4]h3]h1]h2]h6]uh'jh!]rhBX.[Feature]rr}r(h&Uh'jubah-hWubhp)r}r (h&Uh/}r (h1]h2]h3]h4]h6]uh'jh!]r hBX r }r (h&Uh'jubah-hwubhx)r }r (h&X :feature:`98`h/}r (UrefuriX0https://bitbucket.org/circuits/circuits/issue/98h4]h3]h1]h2]h6]uh'jh!]r hBX#98r r }r (h&Uh'j ubah-hubhp)r }r (h&Uh/}r (h1]h2]h3]h4]h6]uh'jh!]r hBX:r }r (h&Uh'j ubah-hwubhBX Dockerized circuits. See: r r }r (h&X Dockerized circuits. See: r h'jubhx)r }r (h&Xhttps://docker.io/r h/}r (Urefurij h4]h3]h1]h2]h6]uh'jh!]r hBXhttps://docker.io/r r }r (h&Uh'j ubah-hubeh-hubah-hubh])r }r (h&XH:feature:`99` Added Digest Auth support to the ``circuits.web`` CLI Toolr h/}r! (h1]h2]h3]h4]h6]uh'jh!]r" hc)r# }r$ (h&j h/}r% (h1]h2]h3]h4]h6]uh'j h!]r& (hL)r' }r( (h&Uh/}r) (UformathPhQhRh4]h3]h1]h2]h6]uh'j# h!]r* hBX.[Feature]r+ r, }r- (h&Uh'j' ubah-hWubhp)r. }r/ (h&Uh/}r0 (h1]h2]h3]h4]h6]uh'j# h!]r1 hBX r2 }r3 (h&Uh'j. ubah-hwubhx)r4 }r5 (h&X :feature:`99`h/}r6 (UrefuriX0https://bitbucket.org/circuits/circuits/issue/99h4]h3]h1]h2]h6]uh'j# h!]r7 hBX#99r8 r9 }r: (h&Uh'j4 ubah-hubhp)r; }r< (h&Uh/}r= (h1]h2]h3]h4]h6]uh'j# h!]r> hBX:r? }r@ (h&Uh'j; ubah-hwubhBX" Added Digest Auth support to the rA rB }rC (h&X" Added Digest Auth support to the rD h'j# ubj)rE }rF (h&X``circuits.web``rG h/}rH (h1]h2]h3]h4]h6]uh'j# h!]rI hBX circuits.webrJ rK }rL (h&Uh'jE ubah-jubhBX CLI ToolrM rN }rO (h&X CLI ToolrP h'j# ubeh-hubah-hubh])rQ }rR (h&XD:bug:`100 major` Fixed returned Content-Type in JSON-RPC Dispatcher.rS h/}rT (h1]h2]h3]h4]h6]uh'jh!]rU hc)rV }rW (h&jS h/}rX (h1]h2]h3]h4]h6]uh'jQ h!]rY (hL)rZ }r[ (h&Uh/}r\ (UformathPhQhRh4]h3]h1]h2]h6]uh'jV h!]r] hBX*[Bug]r^ r_ }r` (h&Uh'jZ ubah-hWubhp)ra }rb (h&Uh/}rc (h1]h2]h3]h4]h6]uh'jV h!]rd hBX re }rf (h&Uh'ja ubah-hwubhx)rg }rh (h&X:bug:`100 major`h/}ri (UrefuriX1https://bitbucket.org/circuits/circuits/issue/100h4]h3]h1]h2]h6]uh'jV h!]rj hBX#100rk rl }rm (h&Uh'jg ubah-hubhp)rn }ro (h&Uh/}rp (h1]h2]h3]h4]h6]uh'jV h!]rq hBX:rr }rs (h&Uh'jn ubah-hwubhBX4 Fixed returned Content-Type in JSON-RPC Dispatcher.rt ru }rv (h&X4 Fixed returned Content-Type in JSON-RPC Dispatcher.rw h'jV ubeh-hubah-hubh])rx }ry (h&Xv:bug:`102 major` Fixed minor bug with WebSocketsDispatcher causing superflusous ``connect()`` events from being fired.rz h/}r{ (h1]h2]h3]h4]h6]uh'jh!]r| hc)r} }r~ (h&jz h/}r (h1]h2]h3]h4]h6]uh'jx h!]r (hL)r }r (h&Uh/}r (UformathPhQhRh4]h3]h1]h2]h6]uh'j} h!]r hBX*[Bug]r r }r (h&Uh'j ubah-hWubhp)r }r (h&Uh/}r (h1]h2]h3]h4]h6]uh'j} h!]r hBX r }r (h&Uh'j ubah-hwubhx)r }r (h&X:bug:`102 major`h/}r (UrefuriX1https://bitbucket.org/circuits/circuits/issue/102h4]h3]h1]h2]h6]uh'j} h!]r hBX#102r r }r (h&Uh'j ubah-hubhp)r }r (h&Uh/}r (h1]h2]h3]h4]h6]uh'j} h!]r hBX:r }r (h&Uh'j ubah-hwubhBX@ Fixed minor bug with WebSocketsDispatcher causing superflusous r r }r (h&X@ Fixed minor bug with WebSocketsDispatcher causing superflusous r h'j} ubj)r }r (h&X ``connect()``r h/}r (h1]h2]h3]h4]h6]uh'j} h!]r hBX connect()r r }r (h&Uh'j ubah-jubhBX events from being fired.r r }r (h&X events from being fired.r h'j} ubeh-hubah-hubh])r }r (h&XW:feature:`103` Added the firing of a ``disconnect`` event for the WebSocketsDispatcher.r h/}r (h1]h2]h3]h4]h6]uh'jh!]r hc)r }r (h&j h/}r (h1]h2]h3]h4]h6]uh'j h!]r (hL)r }r (h&Uh/}r (UformathPhQhRh4]h3]h1]h2]h6]uh'j h!]r hBX.[Feature]r r }r (h&Uh'j ubah-hWubhp)r }r (h&Uh/}r (h1]h2]h3]h4]h6]uh'j h!]r hBX r }r (h&Uh'j ubah-hwubhx)r }r (h&X:feature:`103`h/}r (UrefuriX1https://bitbucket.org/circuits/circuits/issue/103h4]h3]h1]h2]h6]uh'j h!]r hBX#103r r }r (h&Uh'j ubah-hubhp)r }r (h&Uh/}r (h1]h2]h3]h4]h6]uh'j h!]r hBX:r }r (h&Uh'j ubah-hwubhBX Added the firing of a r r }r (h&X Added the firing of a r h'j ubj)r }r (h&X``disconnect``r h/}r (h1]h2]h3]h4]h6]uh'j h!]r hBX disconnectr r }r (h&Uh'j ubah-jubhBX$ event for the WebSocketsDispatcher.r r }r (h&X$ event for the WebSocketsDispatcher.r h'j ubeh-hubah-hubh])r }r (h&X@:bug:`104 major` Prevent other websockets sessions from closing.r h/}r (h1]h2]h3]h4]h6]uh'jh!]r hc)r }r (h&j h/}r (h1]h2]h3]h4]h6]uh'j h!]r (hL)r }r (h&Uh/}r (UformathPhQhRh4]h3]h1]h2]h6]uh'j h!]r hBX*[Bug]r r }r (h&Uh'j ubah-hWubhp)r }r (h&Uh/}r (h1]h2]h3]h4]h6]uh'j h!]r hBX r }r (h&Uh'j ubah-hwubhx)r }r (h&X:bug:`104 major`h/}r (UrefuriX1https://bitbucket.org/circuits/circuits/issue/104h4]h3]h1]h2]h6]uh'j h!]r hBX#104r r }r (h&Uh'j ubah-hubhp)r }r (h&Uh/}r (h1]h2]h3]h4]h6]uh'j h!]r hBX:r }r (h&Uh'j ubah-hwubhBX0 Prevent other websockets sessions from closing.r r }r (h&X0 Prevent other websockets sessions from closing.r h'j ubeh-hubah-hubh])r }r (h&XQ:bug:`106 major` Added ``__format__`` method to circuits.web.wrappers.HTTPStatus.r h/}r (h1]h2]h3]h4]h6]uh'jh!]r hc)r }r (h&j h/}r (h1]h2]h3]h4]h6]uh'j h!]r (hL)r }r (h&Uh/}r (UformathPhQhRh4]h3]h1]h2]h6]uh'j h!]r hBX*[Bug]r r }r (h&Uh'j ubah-hWubhp)r }r (h&Uh/}r (h1]h2]h3]h4]h6]uh'j h!]r hBX r }r (h&Uh'j ubah-hwubhx)r }r (h&X:bug:`106 major`h/}r (UrefuriX1https://bitbucket.org/circuits/circuits/issue/106h4]h3]h1]h2]h6]uh'j h!]r hBX#106r r }r! (h&Uh'j ubah-hubhp)r" }r# (h&Uh/}r$ (h1]h2]h3]h4]h6]uh'j h!]r% hBX:r& }r' (h&Uh'j" ubah-hwubhBX Added r( r) }r* (h&X Added r+ h'j ubj)r, }r- (h&X``__format__``r. h/}r/ (h1]h2]h3]h4]h6]uh'j h!]r0 hBX __format__r1 r2 }r3 (h&Uh'j, ubah-jubhBX, method to circuits.web.wrappers.HTTPStatus.r4 r5 }r6 (h&X, method to circuits.web.wrappers.HTTPStatus.r7 h'j ubeh-hubah-hubh])r8 }r9 (h&X`:bug:`107 major` Added ``__le__`` and ``__ge__`` methods to ``circuits.web.wrappers.HTTPStatus``r: h/}r; (h1]h2]h3]h4]h6]uh'jh!]r< hc)r= }r> (h&j: h/}r? (h1]h2]h3]h4]h6]uh'j8 h!]r@ (hL)rA }rB (h&Uh/}rC (UformathPhQhRh4]h3]h1]h2]h6]uh'j= h!]rD hBX*[Bug]rE rF }rG (h&Uh'jA ubah-hWubhp)rH }rI (h&Uh/}rJ (h1]h2]h3]h4]h6]uh'j= h!]rK hBX rL }rM (h&Uh'jH ubah-hwubhx)rN }rO (h&X:bug:`107 major`h/}rP (UrefuriX1https://bitbucket.org/circuits/circuits/issue/107h4]h3]h1]h2]h6]uh'j= h!]rQ hBX#107rR rS }rT (h&Uh'jN ubah-hubhp)rU }rV (h&Uh/}rW (h1]h2]h3]h4]h6]uh'j= h!]rX hBX:rY }rZ (h&Uh'jU ubah-hwubhBX Added r[ r\ }r] (h&X Added r^ h'j= ubj)r_ }r` (h&X ``__le__``ra h/}rb (h1]h2]h3]h4]h6]uh'j= h!]rc hBX__le__rd re }rf (h&Uh'j_ ubah-jubhBX and rg rh }ri (h&X and rj h'j= ubj)rk }rl (h&X ``__ge__``rm h/}rn (h1]h2]h3]h4]h6]uh'j= h!]ro hBX__ge__rp rq }rr (h&Uh'jk ubah-jubhBX methods to rs rt }ru (h&X methods to rv h'j= ubj)rw }rx (h&X$``circuits.web.wrappers.HTTPStatus``ry h/}rz (h1]h2]h3]h4]h6]uh'j= h!]r{ hBX circuits.web.wrappers.HTTPStatusr| r} }r~ (h&Uh'jw ubah-jubeh-hubah-hubh])r }r (h&X<:feature:`108` Improved server support for the IRC Protocol.r h/}r (h1]h2]h3]h4]h6]uh'jh!]r hc)r }r (h&j h/}r (h1]h2]h3]h4]h6]uh'j h!]r (hL)r }r (h&Uh/}r (UformathPhQhRh4]h3]h1]h2]h6]uh'j h!]r hBX.[Feature]r r }r (h&Uh'j ubah-hWubhp)r }r (h&Uh/}r (h1]h2]h3]h4]h6]uh'j h!]r hBX r }r (h&Uh'j ubah-hwubhx)r }r (h&X:feature:`108`h/}r (UrefuriX1https://bitbucket.org/circuits/circuits/issue/108h4]h3]h1]h2]h6]uh'j h!]r hBX#108r r }r (h&Uh'j ubah-hubhp)r }r (h&Uh/}r (h1]h2]h3]h4]h6]uh'j h!]r hBX:r }r (h&Uh'j ubah-hwubhBX. Improved server support for the IRC Protocol.r r }r (h&X. Improved server support for the IRC Protocol.r h'j ubeh-hubah-hubh])r }r (h&X@:bug:`109 major` Fixed ``Event.create()`` factory and metaclass.r h/}r (h1]h2]h3]h4]h6]uh'jh!]r hc)r }r (h&j h/}r (h1]h2]h3]h4]h6]uh'j h!]r (hL)r }r (h&Uh/}r (UformathPhQhRh4]h3]h1]h2]h6]uh'j h!]r hBX*[Bug]r r }r (h&Uh'j ubah-hWubhp)r }r (h&Uh/}r (h1]h2]h3]h4]h6]uh'j h!]r hBX r }r (h&Uh'j ubah-hwubhx)r }r (h&X:bug:`109 major`h/}r (UrefuriX1https://bitbucket.org/circuits/circuits/issue/109h4]h3]h1]h2]h6]uh'j h!]r hBX#109r r }r (h&Uh'j ubah-hubhp)r }r (h&Uh/}r (h1]h2]h3]h4]h6]uh'j h!]r hBX:r }r (h&Uh'j ubah-hwubhBX Fixed r r }r (h&X Fixed r h'j ubj)r }r (h&X``Event.create()``r h/}r (h1]h2]h3]h4]h6]uh'j h!]r hBXEvent.create()r r }r (h&Uh'j ubah-jubhBX factory and metaclass.r r }r (h&X factory and metaclass.r h'j ubeh-hubah-hubh])r }r (h&X':feature:`112` Improved Signal Handlingr h/}r (h1]h2]h3]h4]h6]uh'jh!]r hc)r }r (h&j h/}r (h1]h2]h3]h4]h6]uh'j h!]r (hL)r }r (h&Uh/}r (UformathPhQhRh4]h3]h1]h2]h6]uh'j h!]r hBX.[Feature]r r }r (h&Uh'j ubah-hWubhp)r }r (h&Uh/}r (h1]h2]h3]h4]h6]uh'j h!]r hBX r }r (h&Uh'j ubah-hwubhx)r }r (h&X:feature:`112`h/}r (UrefuriX1https://bitbucket.org/circuits/circuits/issue/112h4]h3]h1]h2]h6]uh'j h!]r hBX#112r r }r (h&Uh'j ubah-hubhp)r }r (h&Uh/}r (h1]h2]h3]h4]h6]uh'j h!]r hBX:r }r (h&Uh'j ubah-hwubhBX Improved Signal Handlingr r }r (h&X Improved Signal Handlingr h'j ubeh-hubah-hubh])r }r (h&X?:bug:`111 major` Fixed broken Digest Auth Test for circuits.webr h/}r (h1]h2]h3]h4]h6]uh'jh!]r hc)r }r (h&j h/}r (h1]h2]h3]h4]h6]uh'j h!]r (hL)r }r (h&Uh/}r (UformathPhQhRh4]h3]h1]h2]h6]uh'j h!]r hBX*[Bug]r r }r (h&Uh'j ubah-hWubhp)r }r (h&Uh/}r (h1]h2]h3]h4]h6]uh'j h!]r hBX r }r (h&Uh'j ubah-hwubhx)r }r (h&X:bug:`111 major`h/}r (UrefuriX1https://bitbucket.org/circuits/circuits/issue/111h4]h3]h1]h2]h6]uh'j h!]r hBX#111r r }r (h&Uh'j ubah-hubhp)r }r (h&Uh/}r (h1]h2]h3]h4]h6]uh'j h!]r hBX:r! }r" (h&Uh'j ubah-hwubhBX/ Fixed broken Digest Auth Test for circuits.webr# r$ }r% (h&X/ Fixed broken Digest Auth Test for circuits.webr& h'j ubeh-hubah-hubeh-jTubeubh#)r' }r( (h&Uh'h$h(h+h-h.h/}r) (h1]h2]h3]h4]r* hah6]r+ h auh8KRh9hh!]r, (h;)r- }r. (h&XOlder Change Logsr/ h'j' h(h+h-h?h/}r0 (h1]h2]h3]h4]h6]uh8KRh9hh!]r1 hBXOlder Change Logsr2 r3 }r4 (h&j/ h'j- ubaubhc)r5 }r6 (h&XFor older Change Logs of previous versions of circuits please see the respective `PyPi `_ page(s):r7 h'j' h(h+h-hh/}r8 (h1]h2]h3]h4]h6]uh8KTh9hh!]r9 (hBXQFor older Change Logs of previous versions of circuits please see the respective r: r; }r< (h&XQFor older Change Logs of previous versions of circuits please see the respective h'j5 ubhx)r= }r> (h&X%`PyPi `_h/}r? (UnameXPyPiUrefurir@ Xhttp://pypi.python.org/pypirA h4]h3]h1]h2]h6]uh'j5 h!]rB hBXPyPirC rD }rE (h&Uh'j= ubah-hubjC)rF }rG (h&X U referencedrH Kh'j5 h-jJh/}rI (UrefurijA h4]rJ hah3]h1]h2]h6]rK h auh!]ubhBX page(s):rL rM }rN (h&X page(s):h'j5 ubeubhX)rO }rP (h&Uh'j' h(h+h-jTh/}rQ (UbulletrR X-h4]h3]h1]h2]h6]uh8KVh9hh!]rS (h])rT }rU (h&X>`circuits-2.1.0 `_rV h'jO h(h+h-hh/}rW (h1]h2]h3]h4]h6]uh8Nh9hh!]rX hc)rY }rZ (h&jV h'jT h(h+h-hh/}r[ (h1]h2]h3]h4]h6]uh8KVh!]r\ (hx)r] }r^ (h&jV h/}r_ (Unamehj@ X*http://pypi.python.org/pypi/circuits/2.1.0r` h4]h3]h1]h2]h6]uh'jY h!]ra hBXcircuits-2.1.0rb rc }rd (h&Uh'j] ubah-hubjC)re }rf (h&X- jH Kh'jY h-jJh/}rg (Urefurij` h4]rh hah3]h1]h2]h6]ri hauh!]ubeubaubh])rj }rk (h&X>`circuits-2.0.1 `_rl h'jO h(h+h-hh/}rm (h1]h2]h3]h4]h6]uh8Nh9hh!]rn hc)ro }rp (h&jl h'jj h(h+h-hh/}rq (h1]h2]h3]h4]h6]uh8KWh!]rr (hx)rs }rt (h&jl h/}ru (Unamehj@ X*http://pypi.python.org/pypi/circuits/2.0.1rv h4]h3]h1]h2]h6]uh'jo h!]rw hBXcircuits-2.0.1rx ry }rz (h&Uh'js ubah-hubjC)r{ }r| (h&X- jH Kh'jo h-jJh/}r} (Urefurijv h4]r~ hah3]h1]h2]h6]r hauh!]ubeubaubh])r }r (h&X>`circuits-2.0.0 `_r h'jO h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&j h'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8KXh!]r (hx)r }r (h&j h/}r (Unameh j@ X*http://pypi.python.org/pypi/circuits/2.0.0r h4]h3]h1]h2]h6]uh'j h!]r hBXcircuits-2.0.0r r }r (h&Uh'j ubah-hubjC)r }r (h&X- jH Kh'j h-jJh/}r (Urefurij h4]r hah3]h1]h2]h6]r h auh!]ubeubaubh])r }r (h&X:`circuits-1.6 `_r h'jO h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&j h'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8KYh!]r (hx)r }r (h&j h/}r (Unamehj@ X(http://pypi.python.org/pypi/circuits/1.6r h4]h3]h1]h2]h6]uh'j h!]r hBX circuits-1.6r r }r (h&Uh'j ubah-hubjC)r }r (h&X+ jH Kh'j h-jJh/}r (Urefurij h4]r h ah3]h1]h2]h6]r hauh!]ubeubaubh])r }r (h&X;`circuits-1.5 `_ h'jO h(X%internal padding after ../CHANGES.rstr h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&X:`circuits-1.5 `_r h'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8KZh!]r (hx)r }r (h&j h/}r (Unameh j@ X(http://pypi.python.org/pypi/circuits/1.5r h4]h3]h1]h2]h6]uh'j h!]r hBX circuits-1.5r r }r (h&Uh'j ubah-hubjC)r }r (h&X+ jH Kh'j h-jJh/}r (Urefurij h4]r hah3]h1]h2]h6]r h auh!]ubeubaubeubeubeubah&UU transformerr NU footnote_refsr }r Urefnamesr }r Usymbol_footnotesr ]r Uautofootnote_refsr ]r Usymbol_footnote_refsr ]r U citationsr ]r h9hU current_liner NUtransform_messagesr ]r Ureporterr 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 tracebackr Upep_referencesr NUstrip_commentsr NU toc_backlinksr Uentryr U language_coder Uenr U datestampr NU report_levelr KU _destinationr NU halt_levelr KU strip_classesr Nh?NUerror_encoding_error_handlerr Ubackslashreplacer Udebugr NUembed_stylesheetr Uoutput_encoding_error_handlerr Ustrictr U sectnum_xformr KUdump_transformsr NU docinfo_xformr KUwarning_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_referencesr NUoutput_encodingr Uutf-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 X4/home/prologic/work/circuits/docs/source/changes.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 j Uauto_id_prefixr Uidr Udoctitle_xformr Ustrip_elements_with_classesr NU _config_filesr ]Ufile_insertion_enabledr U raw_enabledr! KU dump_settingsr" NubUsymbol_footnote_startr# KUidsr$ }r% (hjC)r& }r' (h&jFjH Kh'hc)r( }r) (h&jh'h])r* }r+ (h&jh'hX)r, }r- (h&Uh'h$h(h+h-jTh/}r. (jR X-h4]h3]h1]h2]h6]uh8K h9hh!]r/ (h])r0 }r1 (h&X:release:`3.1 <2014-11-01>`r2 h'j, h(h+h-hh/}r3 (h1]h2]h3]h4]h6]uh8Nh9hh!]r4 hc)r5 }r6 (h&j2 h'j0 h(h+h-hh/}r7 (h1]h2]h3]h4]h6]uh8K h!]ubaubh])r8 }r9 (h&j6h'j, h(h+h-hh/}r: (h1]h2]h3]h4]h6]uh8Nh9hh!]r; hc)r< }r= (h&j6h'j8 h(h+h-hh/}r> (h1]h2]h3]h4]h6]uh8K h!]r? hBX Bridge waits for event processing on the other side before proxy handler ends. Now it is possible to collect values from remote handlers in %_success event.r@ rA }rB (h&jSh'j< ubaubaubh])rC }rD (h&jh'j, h(h+h-hh/}rE (h1]h2]h3]h4]h6]uh8Nh9hh!]rF hc)rG }rH (h&jh'jC h(h+h-hh/}rI (h1]h2]h3]h4]h6]uh8K h!]rJ hBXe Rename the FallbackErrorHandler to FallbackExceptionHandler and the event it listens to to exceptionrK rL }rM (h&j3h'jG ubaubaubh])rN }rO (h&jh'j, h(h+h-hh/}rP (h1]h2]h3]h4]h6]uh8Nh9hh!]rQ hc)rR }rS (h&jh'jN h(h+h-hh/}rT (h1]h2]h3]h4]h6]uh8K h!]rU hBX6 Fixes optional parameters handling (client / server).rV rW }rX (h&jh'jR ubaubaubh])rY }rZ (h&jh'j, h(h+h-hh/}r[ (h1]h2]h3]h4]h6]uh8Nh9hh!]r\ hc)r] }r^ (h&jh'jY h(h+h-hh/}r_ (h1]h2]h3]h4]h6]uh8K h!]r` hBX* Node: add peer node: return channel name.ra rb }rc (h&jh'j] ubaubaubh])rd }re (h&jh'j, h(h+h-hh/}rf (h1]h2]h3]h4]h6]uh8Nh9hh!]rg hc)rh }ri (h&jh'jd h(h+h-hh/}rj (h1]h2]h3]h4]h6]uh8Kh!]rk hBX, Node: add event firewall (client / server).rl rm }rn (h&jh'jh ubaubaubh])ro }rp (h&jh'j, h(h+h-hh/}rq (h1]h2]h3]h4]h6]uh8Nh9hh!]rr hc)rs }rt (h&jh'jo h(h+h-hh/}ru (h1]h2]h3]h4]h6]uh8Kh!]rv hBX# Node: fixes the event value issue.rw rx }ry (h&jh'js ubaubaubh])rz }r{ (h&jvh'j, h(h+h-hh/}r| (h1]h2]h3]h4]h6]uh8Nh9hh!]r} hc)r~ }r (h&jvh'jz h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Kh!]r hBX" Node: fixes event response flood.r r }r (h&jh'j~ ubaubaubh])r }r (h&jVh'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&jVh'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Kh!]r hBX Node: Add node examples.r r }r (h&jsh'j ubaubaubh])r }r (h&j6h'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&j6h'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Kh!]r hBX) Fixed import of FallBackExceptionHandlerr r }r (h&jSh'j ubaubaubh])r }r (h&jh'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&jh'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Kh!]r hBX( Fixed exception handing in circuits.webr r }r (h&j3h'j ubaubaubh])r }r (h&hh'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&hh'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Kh!]r hBXI Fixed issue in brige with ommiting all but the first events sent at oncer r }r (h&jh'j ubaubaubh])r }r (h&hh'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&hh'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Kh!]r hBX/ Bridge: Do not propagate no results via bridger r }r (h&hh'j ubaubaubh])r }r (h&hh'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&hh'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Kh!]r hBX Bridge: Send exceptions via brige before change the exceptions weren't propagated via bridge because traceback object is not pickable, now traceback object is replaced by corresponding traceback listr r }r (h&hh'j ubaubaubh])r }r (h&hh'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&hh'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Kh!]r hBX; Fixed bug with forced shutdown of subprocesses in Windows.r r }r (h&hh'j ubaubaubh])r }r (h&h`h'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&hfh'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Kh!]r hBX& Fixed FallbackErrorHandler API Changer r }r (h&hh'j ubaubaubh])r }r (h&X:release:`3.0.1 <2014-11-01>`r h'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&j h'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Kh!]ubaubh])r }r (h&jh'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&jh'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Kh!]r hBX' Fixed inconsistent top-level examples.r r }r (h&jh'j ubaubaubh])r }r (h&jhh'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&jmh'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Kh!]r hBX Link to ChangeLog from READMEr r }r (h&jh'j ubaubaubh])r }r (h&X:release:`3.0 <2014-08-31>`r h'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&j h'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Kh!]ubaubh])r }r (h&j h'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&j h'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Kh!]r hBX/ Fixed broken Digest Auth Test for circuits.webr r }r (h&j& h'j ubaubaubh])r }r (h&j h'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&j h'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8K h!]r hBX Improved Signal Handlingr r }r (h&j h'j ubaubaubh])r }r (h&j h'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&j h'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8K!h!]r (hBX Fixed r! r" }r# (h&j h'j ubj)r$ }r% (h&j h/}r& (h1]h2]h3]h4]h6]uh'j h!]r' hBXEvent.create()r( r) }r* (h&Uh'j$ ubah-jubhBX factory and metaclass.r+ r, }r- (h&j h'j ubeubaubh])r. }r/ (h&j h'j, h(h+h-hh/}r0 (h1]h2]h3]h4]h6]uh8Nh9hh!]r1 hc)r2 }r3 (h&j h'j. h(h+h-hh/}r4 (h1]h2]h3]h4]h6]uh8K"h!]r5 hBX. Improved server support for the IRC Protocol.r6 r7 }r8 (h&j h'j2 ubaubaubh])r9 }r: (h&j: h'j, h(h+h-hh/}r; (h1]h2]h3]h4]h6]uh8Nh9hh!]r< hc)r= }r> (h&j: h'j9 h(h+h-hh/}r? (h1]h2]h3]h4]h6]uh8K#h!]r@ (hBX Added rA rB }rC (h&j^ h'j= ubj)rD }rE (h&ja h/}rF (h1]h2]h3]h4]h6]uh'j= h!]rG hBX__le__rH rI }rJ (h&Uh'jD ubah-jubhBX and rK rL }rM (h&jj h'j= ubj)rN }rO (h&jm h/}rP (h1]h2]h3]h4]h6]uh'j= h!]rQ hBX__ge__rR rS }rT (h&Uh'jN ubah-jubhBX methods to rU rV }rW (h&jv h'j= ubj)rX }rY (h&jy h/}rZ (h1]h2]h3]h4]h6]uh'j= h!]r[ hBX circuits.web.wrappers.HTTPStatusr\ r] }r^ (h&Uh'jX ubah-jubeubaubh])r_ }r` (h&j h'j, h(h+h-hh/}ra (h1]h2]h3]h4]h6]uh8Nh9hh!]rb hc)rc }rd (h&j h'j_ h(h+h-hh/}re (h1]h2]h3]h4]h6]uh8K$h!]rf (hBX Added rg rh }ri (h&j+ h'jc ubj)rj }rk (h&j. h/}rl (h1]h2]h3]h4]h6]uh'jc h!]rm hBX __format__rn ro }rp (h&Uh'jj ubah-jubhBX, method to circuits.web.wrappers.HTTPStatus.rq rr }rs (h&j7 h'jc ubeubaubh])rt }ru (h&j h'j, h(h+h-hh/}rv (h1]h2]h3]h4]h6]uh8Nh9hh!]rw hc)rx }ry (h&j h'jt h(h+h-hh/}rz (h1]h2]h3]h4]h6]uh8K%h!]r{ hBX0 Prevent other websockets sessions from closing.r| r} }r~ (h&j h'jx ubaubaubh])r }r (h&j h'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&j h'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8K&h!]r (hBX Added the firing of a r r }r (h&j h'j ubj)r }r (h&j h/}r (h1]h2]h3]h4]h6]uh'j h!]r hBX disconnectr r }r (h&Uh'j ubah-jubhBX$ event for the WebSocketsDispatcher.r r }r (h&j h'j ubeubaubh])r }r (h&jz h'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&jz h'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8K'h!]r (hBX@ Fixed minor bug with WebSocketsDispatcher causing superflusous r r }r (h&j h'j ubj)r }r (h&j h/}r (h1]h2]h3]h4]h6]uh'j h!]r hBX connect()r r }r (h&Uh'j ubah-jubhBX events from being fired.r r }r (h&j h'j ubeubaubh])r }r (h&jS h'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&jS h'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8K(h!]r hBX4 Fixed returned Content-Type in JSON-RPC Dispatcher.r r }r (h&jw h'j ubaubaubh])r }r (h&j h'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&j h'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8K)h!]r (hBX" Added Digest Auth support to the r r }r (h&jD h'j ubj)r }r (h&jG h/}r (h1]h2]h3]h4]h6]uh'j h!]r hBX circuits.webr r }r (h&Uh'j ubah-jubhBX CLI Toolr r }r (h&jP h'j ubeubaubh])r }r (h&jh'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&jh'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8K*h!]r (hBX Dockerized circuits. See: r r }r (h&j h'j ubhx)r }r (h&j h/}r (Urefurij h4]h3]h1]h2]h6]uh'j h!]r hBXhttps://docker.io/r r }r (h&Uh'j ubah-hubeubaubh])r }r (h&jh'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&jh'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8K+h!]r (hBX Fixed r r }r (h&jh'j ubj)r }r (h&jh/}r (h1]h2]h3]h4]h6]uh'j h!]r hBX&tests.net.test_tcp.test_lookup_failurer r }r (h&Uh'j ubah-jubhBX test for Windowsr r }r (h&jh'j ubeubaubh])r }r (h&jh'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r (h&jh'j h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8K,h!]r hBXE Updated Developer Documentation with corrections and a new workflow.r r }r (h&jh'j ubaubaubh])r }r (h&jOh'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r }r(h&jOh'j h(h+h-hh/}r(h1]h2]h3]h4]h6]uh8K-h!]r(hBX Modified the rr}r(h&jsh'j ubj)r}r(h&jvh'j h(h+h-jh/}r(UreftypejxUrefwarnr U reftargetr jyU refdomainjzh4]h3]U refexplicith1]h2]h6]Urefdocr jUpy:classr NU py:moduler Nuh8K-h!]rj)r}r(h&jvh/}r(h1]h2]r(jjzjeh3]h4]h6]uh'jh!]rhBXcircuits.web.Loggerrr}r(h&Uh'jubah-jubaubhBX to use the rr}r(h&jh'j ubj)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'j h!]rhBXresponse_successrr}r (h&Uh'jubah-jubhBX event.r!r"}r#(h&jh'j ubeubaubh])r$}r%(h&j(h'j, h(h+h-hh/}r&(h1]h2]h3]h4]h6]uh8Nh9hh!]r'hc)r(}r)(h&j(h'j$h(h+h-hh/}r*(h1]h2]h3]h4]h6]uh8K.h!]r+hBX Telnet Tutorialr,r-}r.(h&jLh'j(ubaubaubh])r/}r0(h&jh'j, h(h+h-hh/}r1(h1]h2]h3]h4]h6]uh8Nh9hh!]r2hc)r3}r4(h&jh'j/h(h+h-hh/}r5(h1]h2]h3]h4]h6]uh8K/h!]r6hBX: Dispatcher does not fully respect optional arguments. webr7r8}r9(h&j%h'j3ubaubaubh])r:}r;(h&jh'j, h(h+h-hh/}r<(h1]h2]h3]h4]h6]uh8Nh9hh!]r=hc)r>}r?(h&jh'j:h(h+h-hh/}r@(h1]h2]h3]h4]h6]uh8K0h!]rAhBX- circuits.web documentation enhancements docsrBrC}rD(h&jh'j>ubaubaubh])rE}rF(h&jh'j, h(h+h-hh/}rG(h1]h2]h3]h4]h6]uh8Nh9hh!]rHhc)rI}rJ(h&jh'jEh(h+h-hh/}rK(h1]h2]h3]h4]h6]uh8K1h!]rLhBX Migrate away from ShiningPandarMrN}rO(h&jh'jIubaubaubh])rP}rQ(h&jh'j, h(h+h-hh/}rR(h1]h2]h3]h4]h6]uh8Nh9hh!]rShc)rT}rU(h&jh'jPh(h+h-hh/}rV(h1]h2]h3]h4]h6]uh8K2h!]rW(hBX A rendered example of rXrY}rZ(h&jh'jTubj)r[}r\(h&jh/}r](h1]h2]h3]h4]h6]uh'jTh!]r^hBXcircuits.tools.graph()r_r`}ra(h&Uh'j[ubah-jubhBX. docsrbrc}rd(h&jh'jTubeubaubh])re}rf(h&jYh'j, h(h+h-hh/}rg(h1]h2]h3]h4]h6]uh8Nh9hh!]rhhc)ri}rj(h&jYh'jeh(h+h-hh/}rk(h1]h2]h3]h4]h6]uh8K3h!]rlhBXS Document the implicit registration of components attached as class attributes docsrmrn}ro(h&j}h'jiubaubaubh])rp}rq(h&j2h'j, h(h+h-hh/}rr(h1]h2]h3]h4]h6]uh8Nh9hh!]rshc)rt}ru(h&j2h'jph(h+h-hh/}rv(h1]h2]h3]h4]h6]uh8K4h!]rwhBXL Class attribtues that reference methods cause duplicate event handlers corerxry}rz(h&jVh'jtubaubaubh])r{}r|(h&j h'j, h(h+h-hh/}r}(h1]h2]h3]h4]h6]uh8Nh9hh!]r~hc)r}r(h&j h'j{h(h+h-hh/}r(h1]h2]h3]h4]h6]uh8K5h!]rhBX* Update circuitsframework.com content docsrr}r(h&j/h'jubaubaubh])r}r(h&jh'j, h(h+h-hh/}r(h1]h2]h3]h4]h6]uh8Nh9hh!]rhc)r}r(h&jh'jh(h+h-hh/}r(h1]h2]h3]h4]h6]uh8K6h!]rhBX& Document the value_changed event docsrr}r(h&jh'jubaubaubh])r}r(h&jh'j, h(h+h-hh/}r(h1]h2]h3]h4]h6]uh8Nh9hh!]rhc)r}r(h&jh'jh(h+h-hh/}r(h1]h2]h3]h4]h6]uh8K7h!]rhBX5 Migrate Change Log maintenance and build to Releasesrr}r(h&jh'jubaubaubh])r}r(h&jh'j, h(h+h-hh/}r(h1]h2]h3]h4]h6]uh8Nh9hh!]rhc)r}r(h&jh'jh(h+h-hh/}r(h1]h2]h3]h4]h6]uh8K8h!]rhBX+ Call/Wait and specific instances of eventsrr}r(h&jh'jubaubaubh])r}r(h&joh'j, h(h+h-hh/}r(h1]h2]h3]h4]h6]uh8Nh9hh!]rhc)r}r(h&joh'jh(h+h-hh/}r(h1]h2]h3]h4]h6]uh8K9h!]rhBX> circuits.web DoS in serve_file (remote denial of service) webrr}r(h&jh'jubaubaubh])r}r(h&jHh'j, h(h+h-hh/}r(h1]h2]h3]h4]h6]uh8Nh9hh!]rhc)r}r(h&jHh'jh(h+h-hh/}r(h1]h2]h3]h4]h6]uh8K:h!]rhBX' web examples jsonserializer broken webrr}r(h&jlh'jubaubaubh])r}r(h&j!h'j, h(h+h-hh/}r(h1]h2]h3]h4]h6]uh8Nh9hh!]rhc)r}r(h&j!h'jh(h+h-hh/}r(h1]h2]h3]h4]h6]uh8K;h!]rhBX1 Fix duplication in auto generated API Docs. docsrr}r(h&jEh'jubaubaubh])r}r(h&jh'j, h(h+h-hh/}r(h1]h2]h3]h4]h6]uh8Nh9hh!]rhc)r}r(h&jh'jh(h+h-hh/}r(h1]h2]h3]h4]h6]uh8Kh!]rhBX1 Convention around method names of event handlersrr}r(h&jh'jubaubaubh])r}r(h&jh'j, h(h+h-hh/}r(h1]h2]h3]h4]h6]uh8Nh9hh!]rhc)r}r(h&jh'jh(h+h-hh/}r(h1]h2]h3]h4]h6]uh8K?h!]rhBX8 Document and show examples of using circuits.tools docsrr}r(h&jh'jubaubaubh])r}r(h&j^h'j, h(h+h-hh/}r(h1]h2]h3]h4]h6]uh8Nh9hh!]rhc)r}r(h&j^h'jh(h+h-hh/}r(h1]h2]h3]h4]h6]uh8K@h!]rhBX! "index" method not serving / webrr}r(h&jh'jubaubaubh])r}r(h&j7h'j, h(h+h-hh/}r(h1]h2]h3]h4]h6]uh8Nh9hh!]rhc)r}r(h&j7h'jh(h+h-hh/}r(h1]h2]h3]h4]h6]uh8KAh!]rhBX@ Uncaught exceptions Event collides with sockets and others corerr}r (h&j[h'jubaubaubh])r }r (h&jh'j, h(h+h-hh/}r (h1]h2]h3]h4]h6]uh8Nh9hh!]r hc)r}r(h&jh'j h(h+h-hh/}r(h1]h2]h3]h4]h6]uh8KBh!]rhBX4 Merge #circuits-dev FreeNode Channel into #circuitsrr}r(h&j4h'jubaubaubh])r}r(h&jh'j, h(h+h-hh/}r(h1]h2]h3]h4]h6]uh8Nh9hh!]rhc)r}r(h&jh'jh(h+h-hh/}r(h1]h2]h3]h4]h6]uh8KCh!]rhBX@ Update tutorial to match circuits 3.0 API(s) and Semantics docsrr}r(h&j h'jubaubaubh])r }r!(h&jh'j, h(h+h-hh/}r"(h1]h2]h3]h4]h6]uh8Nh9hh!]r#hc)r$}r%(h&jh'j h(h+h-hh/}r&(h1]h2]h3]h4]h6]uh8KDh!]r'hBX- meantion @handler decorator in tutorial docsr(r)}r*(h&jh'j$ubaubaubh])r+}r,(h&jh'j, h(h+h-hh/}r-(h1]h2]h3]h4]h6]uh8Nh9hh!]r.hc)r/}r0(h&jh'j+h(h+h-hh/}r1(h1]h2]h3]h4]h6]uh8KEh!]r2hBX. web example jsontool is broken on python3 webr3r4}r5(h&jh'j/ubaubaubh])r6}r7(h&jth'j, h(h+h-hh/}r8(h1]h2]h3]h4]h6]uh8Nh9hh!]r9hc)r:}r;(h&jth'j6h(h+h-hh/}r<(h1]h2]h3]h4]h6]uh8KFh!]r=hBX typos in documentation docsr>r?}r@(h&jh'j:ubaubaubh])rA}rB(h&jMh'j, h(h+h-hh/}rC(h1]h2]h3]h4]h6]uh8Nh9hh!]rDhc)rE}rF(h&jMh'jAh(h+h-hh/}rG(h1]h2]h3]h4]h6]uh8KGh!]rHhBXl WebSocketClient treating WebSocket data in same TCP segment as HTTP response as part the HTTP response. webrIrJ}rK(h&jqh'jEubaubaubj* h])rL}rM(h&jh'j, h(h+h-hh/}rN(h1]h2]h3]h4]h6]uh8Nh9hh!]rOhc)rP}rQ(h&jh'jLh(h+h-hh/}rR(h1]h2]h3]h4]h6]uh8KIh!]rShBX1 circuits.web HEAD request send response body webrTrU}rV(h&jh'jPubaubaubh])rW}rX(h&jh'j, h(h+h-hh/}rY(h1]h2]h3]h4]h6]uh8Nh9hh!]rZhc)r[}r\(h&jh'jWh(h+h-hh/}r](h1]h2]h3]h4]h6]uh8KJh!]r^(hBX Fixed use of r_r`}ra(h&jh'j[ubj)rb}rc(h&jh/}rd(h1]h2]h3]h4]h6]uh'j[h!]rehBXcmp()rfrg}rh(h&Uh'jbubah-jubhBX and rirj}rk(h&jh'j[ubj)rl}rm(h&jh/}rn(h1]h2]h3]h4]h6]uh'j[h!]rohBX __cmp__()rprq}rr(h&Uh'jlubah-jubhBX for Python 3 compatibility.rsrt}ru(h&jh'j[ubeubaubh])rv}rw(h&jah'j, h(h+h-hh/}rx(h1]h2]h3]h4]h6]uh8Nh9hh!]ryhc)rz}r{(h&jah'jvh(h+h-hh/}r|(h1]h2]h3]h4]h6]uh8KKh!]r}(hBX Allow r~r}r(h&jh'jzubj)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jzh!]rhBXeventrr}r(h&Uh'jubah-jubhBX) to be passed to the decorated function (rr}r(h&jh'jzubj)r}r(h&jh/}r(h1]h2]h3]h4]h6]uh'jzh!]rhBXthe request handlerrr}r(h&Uh'jubah-jubhBX) for circuits.webrr}r(h&jh'jzubeubaubh])r}r(h&j.h'j, h(h+h-hh/}r(h1]h2]h3]h4]h6]uh8Nh9hh!]rhc)r}r(h&j.h'jh(h+h-hh/}r(h1]h2]h3]h4]h6]uh8KLh!]r(hBX Set rr}r(h&jRh'jubj)r}r(h&jUh/}r(h1]h2]h3]h4]h6]uh'jh!]rhBX Content-Typerr}r(h&Uh'jubah-jubhBX. header on response for errors. (circuits.web)rr}r(h&j^h'jubeubaubh])r}r(h&jh'j, h(h+h-hh/}r(h1]h2]h3]h4]h6]uh8Nh9hh!]rhc)r}r(h&jh'jh(h+h-hh/}r(h1]h2]h3]h4]h6]uh8KMh!]rhBX. Guard against invalid headers. (circuits.web)rr}r(h&j+h'jubaubaubh])r}r(h&jh'j, h(h+h-hh/}r(h1]h2]h3]h4]h6]uh8Nh9hh!]rhc)r}r(h&jh'jh(h+h-hh/}r(h1]h2]h3]h4]h6]uh8KNh!]r(hBX Fixed a typo in rr}r(h&jh'jubj)r}r(h&jh'jh(h+h-jh/}r(Ureftypejj j jU refdomainjh4]h3]U refexplicith1]h2]h6]j jj Nj Nuh8KNh!]rj)r}r(h&jh/}r(h1]h2]r(jjjeh3]h4]h6]uh'jh!]rhBXFilerr}r(h&Uh'jubah-jubaubeubaubeubh(h+h-hh/}r(h1]h2]h3]h4]h6]uh8Nh9hh!]rj( aubh(h+h-hh/}r(h1]h2]h3]h4]h6]uh8KHh!]r(hBX3 Fix packaging and bump circuits 1.5.1 for @dsuch (rr}r(h&j,h'j( ubj)r}r(h&j/h/}r(h1]h2]h3]h4]h6]uh'j( h!]rhBXDariusz Suchojadrr}r(h&Uh'jubah-jubhBX) for rr}r(h&j8h'j( ubhx)r}r(h&j;h/}r(Unamej=j@ j>h4]h3]h1]h2]h6]uh'j( h!]rhBXZatorr}r(h&Uh'jubah-hubj& eubh-jJh/}r(Urefurij>h4]rhah3]h1]h2]h6]rhauh!]ubhj{ hj hjF hj' hje h j hj hh$uUsubstitution_namesr}rh-h9h/}r(h1]h4]h3]Usourcej h2]h6]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/todo.doctree0000644000014400001440000000467612425011107022512 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}qXdocumentation todoqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUdocumentation-todoqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqX1/home/prologic/work/circuits/docs/source/todo.rstqUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq ]Uidsq!]q"haUnamesq#]q$hauUlineq%KUdocumentq&hh]q'(cdocutils.nodes title q()q)}q*(hXDocumentation TODOq+hhhhhUtitleq,h}q-(h]h]h ]h!]h#]uh%Kh&hh]q.cdocutils.nodes Text q/XDocumentation TODOq0q1}q2(hh+hh)ubaubcsphinx.ext.todo todolist q3)q4}q5(hUhhhhhUtodolistq6h}q7(h]h]h ]h!]h#]uh%Kh&hh]ubeubahUU transformerq8NU footnote_refsq9}q:Urefnamesq;}qUautofootnote_refsq?]q@Usymbol_footnote_refsqA]qBU citationsqC]qDh&hU current_lineqENUtransform_messagesqF]qGUreporterqHNUid_startqIKU autofootnotesqJ]qKU citation_refsqL}qMUindirect_targetsqN]qOUsettingsqP(cdocutils.frontend Values qQoqR}qS(Ufootnote_backlinksqTKUrecord_dependenciesqUNU rfc_base_urlqVUhttp://tools.ietf.org/html/qWU tracebackqXUpep_referencesqYNUstrip_commentsqZNU toc_backlinksq[Uentryq\U language_codeq]Uenq^U datestampq_NU report_levelq`KU _destinationqaNU halt_levelqbKU strip_classesqcNh,NUerror_encoding_error_handlerqdUbackslashreplaceqeUdebugqfNUembed_stylesheetqgUoutput_encoding_error_handlerqhUstrictqiU sectnum_xformqjKUdump_transformsqkNU docinfo_xformqlKUwarning_streamqmNUpep_file_url_templateqnUpep-%04dqoUexit_status_levelqpKUconfigqqNUstrict_visitorqrNUcloak_email_addressesqsUtrim_footnote_reference_spaceqtUenvquNUdump_pseudo_xmlqvNUexpose_internalsqwNUsectsubtitle_xformqxU source_linkqyNUrfc_referencesqzNUoutput_encodingq{Uutf-8q|U source_urlq}NUinput_encodingq~U utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqhUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhiUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh&h}q(h]h!]h ]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.circuits-3.1.0/docs/build/doctrees/roadmap.doctree0000644000014400001440000001361712425011107023163 0ustar prologicusers00000000000000cdocutils.nodes document q)q}q(U nametypesq}q(X circuits 3.1qNX circuits.webqXcircuits 3.1 milestoneqXroad mapq NuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hU circuits-3-1qhU circuits-webqhUcircuits-3-1-milestoneqh Uroad-mapquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqX4/home/prologic/work/circuits/docs/source/roadmap.rstqUtagnameq Usectionq!U attributesq"}q#(Udupnamesq$]Uclassesq%]Ubackrefsq&]Uidsq']q(haUnamesq)]q*h auUlineq+KUdocumentq,hh]q-(cdocutils.nodes title q.)q/}q0(hXRoad Mapq1hhhhh Utitleq2h"}q3(h$]h%]h&]h']h)]uh+Kh,hh]q4cdocutils.nodes Text q5XRoad Mapq6q7}q8(hh1hh/ubaubcdocutils.nodes paragraph q9)q:}q;(hXPHere's a list of upcoming releases of circuits in order of "next release first".q(h$]h%]h&]h']h)]uh+Kh,hh]q?h5XPHere's a list of upcoming releases of circuits in order of "next release first".q@qA}qB(hh`_ hhshhh U list_itemq|h"}q}(h$]h%]h&]h']h)]uh+Nh,hh]q~h9)q}q(hX1Improved `circuits.web `_hhzhhh h=h"}q(h$]h%]h&]h']h)]uh+Kh]q(h5X Improved qq}q(hX Improved hhubcdocutils.nodes reference q)q}q(hX(`circuits.web `_h"}q(UnamehUrefuriqXhttp://circuitsweb.comqh']h&]h$]h%]h)]uhhh]qh5X circuits.webqq}q(hUhhubah U referencequbcdocutils.nodes target q)q}q(hX U referencedqKhhh Utargetqh"}q(Urefurihh']qhah&]h$]h%]h)]qhauh]ubeubaubaubcsphinx.addnodes seealso q)q}q(hXo`circuits 3.1 milestone `_qhhdhhh Useealsoqh"}q(h$]h%]h&]h']h)]uh+Nh,hh]qh9)q}q(hhhhhhh h=h"}q(h$]h%]h&]h']h)]uh+Kh]q(h)q}q(hhh"}q(UnameXcircuits 3.1 milestonehXShttps://bitbucket.org/circuits/circuits/issues?milestone=3.1&status=open&status=newqh']h&]h$]h%]h)]uhhh]qh5Xcircuits 3.1 milestoneqq}q(hUhhubah hubh)q}q(hXV hKhhh hh"}q(Urefurihh']qhah&]h$]h%]h)]qhauh]ubeubaubeubeubahUU 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 tracebackqшUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh2NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU 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_sourceqhUgettext_compactqU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrhUauto_id_prefixrUidr Udoctitle_xformr Ustrip_elements_with_classesr NU _config_filesr ]Ufile_insertion_enabledr U raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhhhhhdhhuUsubstitution_namesr}rh h,h"}r(h$]h']h&]Usourcehh%]h)]uU footnotesr]rUrefidsr}rub.circuits-3.1.0/docs/build/doctrees/environment.pickle0000644000014400001440000100355712425013455023741 0ustar prologicusers00000000000000(csphinx.environment BuildEnvironment qoq}q(Udlfilesqcsphinx.util FilenameUniqDict q)q(X>/home/prologic/work/circuits/docs/source/tutorials/woof/009.pyqc__builtin__ set q]q Xtutorials/woof/indexq aRq X009.pyq q XK/home/prologic/work/circuits/docs/source/man/examples/handler_annotation.pyqh]qX man/handlersqaRqXhandler_annotation.pyqqX=/home/prologic/work/circuits/docs/source/examples/helloweb.pyqh]q(XreadmeqXindexqeRqX helloweb.pyqqXC/home/prologic/work/circuits/docs/source/tutorials/telnet/telnet.pyqh]qXtutorials/telnet/indexqaRqX telnet.pyqq X>/home/prologic/work/circuits/docs/source/tutorials/woof/001.pyq!h]q"h aRq#X001.pyq$q%X>/home/prologic/work/circuits/docs/source/tutorials/woof/006.pyq&h]q'h aRq(X006.pyq)q*X>/home/prologic/work/circuits/docs/source/tutorials/woof/007.pyq+h]q,h aRq-X007.pyq.q/XH/home/prologic/work/circuits/docs/source/man/examples/handler_returns.pyq0h]q1X man/eventsq2aRq3Xhandler_returns.pyq4q5X>/home/prologic/work/circuits/docs/source/tutorials/woof/003.pyq6h]q7h aRq8X003.pyq9q:X?/home/prologic/work/circuits/docs/source/examples/echoserver.pyq;h]q<(hheRq=X echoserver.pyq>q?X>/home/prologic/work/circuits/docs/source/tutorials/woof/005.pyq@h]qAh aRqBX005.pyqCqDX>/home/prologic/work/circuits/docs/source/tutorials/woof/004.pyqEh]qFh aRqGX004.pyqHqIX>/home/prologic/work/circuits/docs/source/tutorials/woof/008.pyqJh]qKh aRqLX008.pyqMqNX>/home/prologic/work/circuits/docs/source/tutorials/woof/002.pyqOh]qPh aRqQX002.pyqRqSX:/home/prologic/work/circuits/docs/source/examples/hello.pyqTh]qU(hheRqVXhello.pyqWqXuh]qY(h9h h)h4hh$hRh.hHhhChWhMhh>eRqZbUappq[NU reread_alwaysq\h]q]X man/indexq^aRq_Utitlesq`}qa(X$api/circuits.web.parsers.querystringqbcdocutils.nodes title qc)qd}qe(U rawsourceqfUU attributesqg}qh(Udupnamesqi]Uclassesqj]Ubackrefsqk]Unamesql]Uidsqm]uUchildrenqn]qocdocutils.nodes Text qpX'circuits.web.parsers.querystring moduleqqqr}qs(hfX'circuits.web.parsers.querystring moduleqtUparentquhdubaUtagnameqvUtitleqwubXapi/circuits.app.daemonqxhc)qy}qz(hfUhg}q{(hi]hj]hk]hl]hm]uhn]q|hpXcircuits.app.daemon moduleq}q~}q(hfXcircuits.app.daemon moduleqhuhyubahvhwubXweb/gettingstartedqhc)q}q(hfUhg}q(hi]hj]hk]hl]hm]uhn]qhpXGetting Startedqq}q(hfXGetting StartedqhuhubahvhwubX&api/circuits.web.websockets.dispatcherqhc)q}q(hfUhg}q(hi]hj]hk]hl]hm]uhn]qhpX)circuits.web.websockets.dispatcher moduleqq}q(hfX)circuits.web.websockets.dispatcher moduleqhuhubahvhwubXapi/circuits.protocolsqhc)q}q(hfUhg}q(hi]hj]hk]hl]hm]uhn]qhpXcircuits.protocols packageqq}q(hfXcircuits.protocols packageqhuhubahvhwubX dev/indexqhc)q}q(hfUhg}q(hi]hj]hk]hl]hm]uhn]qhpXDeveloper Docsqq}q(hfXDeveloper DocsqhuhubahvhwubX dev/standardsqhc)q}q(hfUhg}q(hi]hj]hk]hl]hm]uhn]qhpXDevelopment Standardsqq}q(hfXDevelopment StandardsqhuhubahvhwubXapi/circuits.io.notifyqhc)q}q(hfUhg}q(hi]hj]hk]hl]hm]uhn]qhpXcircuits.io.notify moduleqq}q(hfXcircuits.io.notify moduleqhuhubahvhwubX man/valuesqhc)q}q(hfUhg}q(hi]hj]hk]hl]hm]uhn]qhpXValuesqq}q(hfXValuesqhuhubahvhwubX"api/circuits.web.parsers.multipartqhc)q}q(hfUhg}q(hi]hj]hk]hl]hm]uhn]qhpX%circuits.web.parsers.multipart moduleqŅq}q(hfX%circuits.web.parsers.multipart moduleqhuhubahvhwubX web/indexqhc)q}q(hfUhg}q(hi]hj]hk]hl]hm]uhn]qhpXcircuits.web User Manualq΅q}q(hfXcircuits.web User ManualqhuhubahvhwubXapi/circuits.web.utilsqhc)q}q(hfUhg}q(hi]hj]hk]hl]hm]uhn]qhpXcircuits.web.utils moduleqׅq}q(hfXcircuits.web.utils moduleqhuhubahvhwubXapi/circuits.web.exceptionsqhc)q}q(hfUhg}q(hi]hj]hk]hl]hm]uhn]qhpXcircuits.web.exceptions moduleqq}q(hfXcircuits.web.exceptions moduleqhuhubahvhwubXapi/circuits.net.eventsqhc)q}q(hfUhg}q(hi]hj]hk]hl]hm]uhn]qhpXcircuits.net.events moduleq酁q}q(hfXcircuits.net.events moduleqhuhubahvhwubXapi/circuits.web.headersqhc)q}q(hfUhg}q(hi]hj]hk]hl]hm]uhn]qhpXcircuits.web.headers moduleqq}q(hfXcircuits.web.headers moduleqhuhubahvhwubXstart/downloadingqhc)q}q(hfUhg}q(hi]hj]hk]hl]hm]uhn]qhpX Downloadingqq}q(hfX DownloadingqhuhubahvhwubXfaqqhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXFrequently Asked Questionsrr}r(hfXFrequently Asked QuestionsrhujubahvhwubXapi/circuits.web.parsers.httprhc)r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r hpX circuits.web.parsers.http moduler r}r(hfX circuits.web.parsers.http modulerhuj ubahvhwubXapi/circuits.web.httprhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.web.http modulerr}r(hfXcircuits.web.http modulerhujubahvhwubX#api/circuits.web.dispatchers.xmlrpcrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpX&circuits.web.dispatchers.xmlrpc modulerr }r!(hfX&circuits.web.dispatchers.xmlrpc moduler"hujubahvhwubXapi/circuits.core.handlersr#hc)r$}r%(hfUhg}r&(hi]hj]hk]hl]hm]uhn]r'hpXcircuits.core.handlers moduler(r)}r*(hfXcircuits.core.handlers moduler+huj$ubahvhwubXapi/circuits.core.debuggerr,hc)r-}r.(hfUhg}r/(hi]hj]hk]hl]hm]uhn]r0hpXcircuits.core.debugger moduler1r2}r3(hfXcircuits.core.debugger moduler4huj-ubahvhwubXapi/circuits.netr5hc)r6}r7(hfUhg}r8(hi]hj]hk]hl]hm]uhn]r9hpXcircuits.net packager:r;}r<(hfXcircuits.net packager=huj6ubahvhwubXapi/circuits.io.eventsr>hc)r?}r@(hfUhg}rA(hi]hj]hk]hl]hm]uhn]rBhpXcircuits.io.events modulerCrD}rE(hfXcircuits.io.events modulerFhuj?ubahvhwubXapi/circuits.core.helpersrGhc)rH}rI(hfUhg}rJ(hi]hj]hk]hl]hm]uhn]rKhpXcircuits.core.helpers modulerLrM}rN(hfXcircuits.core.helpers modulerOhujHubahvhwubXstart/requirementsrPhc)rQ}rR(hfUhg}rS(hi]hj]hk]hl]hm]uhn]rThpXRequirements and DependenciesrUrV}rW(hfXRequirements and DependenciesrXhujQubahvhwubXapi/circuits.core.eventsrYhc)rZ}r[(hfUhg}r\(hi]hj]hk]hl]hm]uhn]r]hpXcircuits.core.events moduler^r_}r`(hfXcircuits.core.events modulerahujZubahvhwubXapi/circuits.io.serialrbhc)rc}rd(hfUhg}re(hi]hj]hk]hl]hm]uhn]rfhpXcircuits.io.serial modulergrh}ri(hfXcircuits.io.serial modulerjhujcubahvhwubX"api/circuits.web.websockets.clientrkhc)rl}rm(hfUhg}rn(hi]hj]hk]hl]hm]uhn]rohpX%circuits.web.websockets.client modulerprq}rr(hfX%circuits.web.websockets.client modulershujlubahvhwubXstart/installingrthc)ru}rv(hfUhg}rw(hi]hj]hk]hl]hm]uhn]rxhpX Installingryrz}r{(hfX Installingr|hujuubahvhwubXroadmapr}hc)r~}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXRoad Maprr}r(hfXRoad Maprhuj~ubahvhwubhhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXHandlersrr}r(hfXHandlersrhujubahvhwubX man/managerrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXManagerrr}r(hfXManagerrhujubahvhwubXtodorhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXDocumentation TODOrr}r(hfXDocumentation TODOrhujubahvhwubhhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]r(hpX circuits rr}r(hfX circuits rhujubhpX3.1rr}r(hfU3.1rhujubhpX Documentationrr}r(hfX DocumentationrhujubehvhwubXdev/contributingrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXContributing to circuitsrr}r(hfXContributing to circuitsrhujubahvhwubXapi/circuits.web.constantsrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.web.constants modulerr}r(hfXcircuits.web.constants modulerhujubahvhwubXtutorials/indexrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits Tutorialsrr}r(hfXcircuits TutorialsrhujubahvhwubXapi/circuits.web.serversrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.web.servers modulerr}r(hfXcircuits.web.servers modulerhujubahvhwubhhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXPyPi README Pagerr}r(hfXPyPi README PagerhujubahvhwubX#api/circuits.web.dispatchers.staticrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpX&circuits.web.dispatchers.static modulerr}r(hfX&circuits.web.dispatchers.static modulerhujubahvhwubh^hc)r}r(hfUhg}r(Udupnamesr]Uclassesr]Ubackrefsr]Uidsr]Unamesr]uhn]rhpXcircuits User Manualrr}r(hfXcircuits User ManualrhujubahvUtitlerubXapi/circuits.protocols.linerhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.protocols.line modulerr}r(hfXcircuits.protocols.line modulerhujubahvhwubXapi/circuits.web.toolsrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.web.tools modulerr}r(hfXcircuits.web.tools modulerhujubahvhwubXapi/circuits.core.managerrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]r hpXcircuits.core.manager moduler r }r (hfXcircuits.core.manager moduler hujubahvhwubXexamples/indexrhc)r}r(hfUhg}r(j]j]j]j]j]uhn]rhpXHellorr}r(hfXHellorhujubahvjubXapi/circuits.node.utilsrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.node.utils modulerr}r(hfXcircuits.node.utils modulerhujubahvhwubXapi/circuits.node.clientr hc)r!}r"(hfUhg}r#(hi]hj]hk]hl]hm]uhn]r$hpXcircuits.node.client moduler%r&}r'(hfXcircuits.node.client moduler(huj!ubahvhwubXapi/circuits.web.parsersr)hc)r*}r+(hfUhg}r,(hi]hj]hk]hl]hm]uhn]r-hpXcircuits.web.parsers packager.r/}r0(hfXcircuits.web.parsers packager1huj*ubahvhwubXapi/circuits.io.filer2hc)r3}r4(hfUhg}r5(hi]hj]hk]hl]hm]uhn]r6hpXcircuits.io.file moduler7r8}r9(hfXcircuits.io.file moduler:huj3ubahvhwubXapi/circuits.appr;hc)r<}r=(hfUhg}r>(hi]hj]hk]hl]hm]uhn]r?hpXcircuits.app packager@rA}rB(hfXcircuits.app packagerChuj<ubahvhwubXapi/circuits.core.componentsrDhc)rE}rF(hfUhg}rG(hi]hj]hk]hl]hm]uhn]rHhpXcircuits.core.components modulerIrJ}rK(hfXcircuits.core.components modulerLhujEubahvhwubXapi/circuits.iorMhc)rN}rO(hfUhg}rP(hi]hj]hk]hl]hm]uhn]rQhpXcircuits.io packagerRrS}rT(hfXcircuits.io packagerUhujNubahvhwubXapi/circuits.node.noderVhc)rW}rX(hfUhg}rY(hi]hj]hk]hl]hm]uhn]rZhpXcircuits.node.node moduler[r\}r](hfXcircuits.node.node moduler^hujWubahvhwubXapi/circuits.web.controllersr_hc)r`}ra(hfUhg}rb(hi]hj]hk]hl]hm]uhn]rchpXcircuits.web.controllers modulerdre}rf(hfXcircuits.web.controllers modulerghuj`ubahvhwubXchangesrhhc)ri}rj(hfUhg}rk(j]j]j]j]j]uhn]rlhpX Change Logrmrn}ro(hfX Change LogrphujiubahvjubX'api/circuits.web.dispatchers.dispatcherrqhc)rr}rs(hfUhg}rt(hi]hj]hk]hl]hm]uhn]ruhpX*circuits.web.dispatchers.dispatcher modulervrw}rx(hfX*circuits.web.dispatchers.dispatcher moduleryhujrubahvhwubX start/indexrzhc)r{}r|(hfUhg}r}(hi]hj]hk]hl]hm]uhn]r~hpXGetting Startedrr}r(hfXGetting Startedrhuj{ubahvhwubX api/circuitsrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits packagerr}r(hfXcircuits packagerhujubahvhwubXapi/circuits.noderhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.node packagerr}r(hfXcircuits.node packagerhujubahvhwubX dev/processesrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXDevelopment Processesrr}r(hfXDevelopment ProcessesrhujubahvhwubX contributorsrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpX Contributorsrr}r(hfX ContributorsrhujubahvhwubXapi/circuits.web.loggersrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.web.loggers modulerr}r(hfXcircuits.web.loggers modulerhujubahvhwubX$api/circuits.web.dispatchers.jsonrpcrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpX'circuits.web.dispatchers.jsonrpc modulerr}r(hfX'circuits.web.dispatchers.jsonrpc modulerhujubahvhwubXdev/introductionrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXDevelopment Introductionrr}r(hfXDevelopment IntroductionrhujubahvhwubXapi/circuits.core.workersrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.core.workers modulerr}r(hfXcircuits.core.workers modulerhujubahvhwubXapi/circuits.web.processorsrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.web.processors modulerr}r(hfXcircuits.web.processors modulerhujubahvhwubXapi/circuits.web.errorsrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.web.errors modulerr}r(hfXcircuits.web.errors modulerhujubahvhwubXapi/circuits.core.timersrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.core.timers modulerr}r(hfXcircuits.core.timers modulerhujubahvhwubXweb/introductionrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpX Introductionrr}r(hfX IntroductionrhujubahvhwubX web/featuresrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXFeaturesrr}r(hfXFeaturesrhujubahvhwubX web/howtosrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpX How To Guidesrr}r(hfX How To GuidesrhujubahvhwubXapi/circuits.versionrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.version modulerr}r(hfXcircuits.version moduler hujubahvhwubXapi/circuits.core.pollersr hc)r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]rhpXcircuits.core.pollers modulerr}r(hfXcircuits.core.pollers modulerhuj ubahvhwubX api/circuits.protocols.websocketrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpX#circuits.protocols.websocket modulerr}r(hfX#circuits.protocols.websocket modulerhujubahvhwubXglossaryrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]r hpXGlossaryr!r"}r#(hfXGlossaryr$hujubahvhwubXapi/circuits.web.wrappersr%hc)r&}r'(hfUhg}r((hi]hj]hk]hl]hm]uhn]r)hpXcircuits.web.wrappers moduler*r+}r,(hfXcircuits.web.wrappers moduler-huj&ubahvhwubXapi/circuits.web.mainr.hc)r/}r0(hfUhg}r1(hi]hj]hk]hl]hm]uhn]r2hpXcircuits.web.main moduler3r4}r5(hfXcircuits.web.main moduler6huj/ubahvhwubh hc)r7}r8(hfUhg}r9(hi]hj]hk]hl]hm]uhn]r:hpXTutorialr;r<}r=(hfXTutorialr>huj7ubahvhwubXapi/circuits.io.processr?hc)r@}rA(hfUhg}rB(hi]hj]hk]hl]hm]uhn]rChpXcircuits.io.process modulerDrE}rF(hfXcircuits.io.process modulerGhuj@ubahvhwubXapi/circuits.node.serverrHhc)rI}rJ(hfUhg}rK(hi]hj]hk]hl]hm]uhn]rLhpXcircuits.node.server modulerMrN}rO(hfXcircuits.node.server modulerPhujIubahvhwubX)api/circuits.web.dispatchers.virtualhostsrQhc)rR}rS(hfUhg}rT(hi]hj]hk]hl]hm]uhn]rUhpX,circuits.web.dispatchers.virtualhosts modulerVrW}rX(hfX,circuits.web.dispatchers.virtualhosts modulerYhujRubahvhwubX start/quickrZhc)r[}r\(hfUhg}r](hi]hj]hk]hl]hm]uhn]r^hpXQuick Start Guider_r`}ra(hfXQuick Start Guiderbhuj[ubahvhwubXman/misc/toolsrchc)rd}re(hfUhg}rf(hi]hj]hk]hl]hm]uhn]rghpXToolsrhri}rj(hfXToolsrkhujdubahvhwubXapi/circuits.webrlhc)rm}rn(hfUhg}ro(hi]hj]hk]hl]hm]uhn]rphpXcircuits.web packagerqrr}rs(hfXcircuits.web packagerthujmubahvhwubh2hc)ru}rv(hfUhg}rw(hi]hj]hk]hl]hm]uhn]rxhpXEventsryrz}r{(hfXEventsr|hujuubahvhwubXapi/circuits.core.valuesr}hc)r~}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.core.values modulerr}r(hfXcircuits.core.values modulerhuj~ubahvhwubXapi/circuits.core.utilsrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.core.utils modulerr}r(hfXcircuits.core.utils modulerhujubahvhwubX man/debuggerrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXDebuggerrr}r(hfXDebuggerrhujubahvhwubXapi/circuits.toolsrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.tools packagerr}r(hfXcircuits.tools packagerhujubahvhwubhhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXTelnet Tutorialrr}r(hfXTelnet TutorialrhujubahvhwubXapi/circuits.web.wsgirhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.web.wsgi modulerr}r(hfXcircuits.web.wsgi modulerhujubahvhwubXapi/circuits.web.dispatchersrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpX circuits.web.dispatchers packagerr}r(hfX circuits.web.dispatchers packagerhujubahvhwubXapi/circuits.web.eventsrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.web.events modulerr}r(hfXcircuits.web.events modulerhujubahvhwubXapi/circuits.protocols.ircrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.protocols.irc modulerr}r(hfXcircuits.protocols.irc modulerhujubahvhwubXapi/circuits.net.socketsrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.net.sockets modulerr}r(hfXcircuits.net.sockets modulerhujubahvhwubXman/componentsrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpX Componentsrr}r(hfX ComponentsrhujubahvhwubXapi/circuits.protocols.httprhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.protocols.http modulerr}r(hfXcircuits.protocols.http modulerhujubahvhwubXapi/circuits.web.urlrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.web.url modulerr}r(hfXcircuits.web.url modulerhujubahvhwubXapi/circuits.web.clientrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.web.client modulerr}r(hfXcircuits.web.client modulerhujubahvhwubXapi/circuits.web.sessionsrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.web.sessions modulerr}r(hfXcircuits.web.sessions modulerhujubahvhwubXapi/circuits.corerhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.core packagerr }r (hfXcircuits.core packager hujubahvhwubXapi/circuits.node.eventsr hc)r }r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.node.events modulerr}r(hfXcircuits.node.events modulerhuj ubahvhwubXapi/circuits.web.websocketsrhc)r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rhpXcircuits.web.websockets packagerr}r(hfXcircuits.web.websockets packagerhujubahvhwubXapi/circuits.sixrhc)r}r (hfUhg}r!(hi]hj]hk]hl]hm]uhn]r"hpXcircuits.six moduler#r$}r%(hfXcircuits.six moduler&hujubahvhwubXweb/miscellaneousr'hc)r(}r)(hfUhg}r*(hi]hj]hk]hl]hm]uhn]r+hpX Miscellaneousr,r-}r.(hfX Miscellaneousr/huj(ubahvhwubX api/indexr0hc)r1}r2(hfUhg}r3(hi]hj]hk]hl]hm]uhn]r4hpXAPI Documentationr5r6}r7(hfXAPI Documentationr8huj1ubahvhwubXapi/circuits.core.bridger9hc)r:}r;(hfUhg}r<(hi]hj]hk]hl]hm]uhn]r=hpXcircuits.core.bridge moduler>r?}r@(hfXcircuits.core.bridge modulerAhuj:ubahvhwubXapi/circuits.core.loaderrBhc)rC}rD(hfUhg}rE(hi]hj]hk]hl]hm]uhn]rFhpXcircuits.core.loader modulerGrH}rI(hfXcircuits.core.loader modulerJhujCubahvhwubuU domaindatarK}rL(Ustd}rM(U anonlabels}rN(UmodindexrOU py-modindexUUgenindexrPjPUUsearchrQUsearchUXweb_getting_startedrRhUweb-getting-startedrSXdocumentation-indexrThUdocumentation-indexrUuUlabels}rV(jOU py-modindexUcsphinx.locale _TranslationProxy rWcsphinx.locale mygettext rXU Module IndexrYrZjXjYr[bjPjPUjWjXUIndexr\r]jXj\r^bjQjQUjWjXU Search Pager_r`jXj_rabjRhjSXGetting StartedjThjUX DocumentationuUversionrbKUobjectsrc}rdUtermXvcsjUterm-vcsresU progoptions}uUc}rf(jc}jbKuUpy}rg(jc}rh(X4circuits.core.components.prepare_unregister.completerijDX attributeX,circuits.web.parsers.http.InvalidRequestLinerjjX exceptionX%circuits.net.sockets.UNIXClient.readyrkjXmethodXcircuits.net.sockets.TCPClientrljXclassXcircuits.six.iteritemsrmjXfunctionX%circuits.web.wrappers.Response.statusrnj%X attributeXcircuits.web.exceptionsrohUmodulerpX2circuits.web.exceptions.RequestTimeout.descriptionrqhX attributeX"circuits.web.exceptions.BadGatewayrrhX exceptionX#circuits.web.wrappers.Response.bodyrsj%X attributeX'circuits.web.parsers.http.InvalidHeaderrtjX exceptionX circuits.web.client.Client.writerujXmethodX"circuits.web.errors.httperror.namervjX attributeXcircuits.node.utils.dump_valuerwjXfunctionXcircuits.core.events.startedrxjYXclassX%circuits.web.servers.StdinServer.readryjXmethodX*circuits.core.pollers.BasePoller.isWritingrzj XmethodX(circuits.core.manager.Manager.addHandlerr{jXmethodXcircuits.web.client.parse_urlr|jXfunctionX,circuits.core.debugger.Debugger.IgnoreEventsr}j,X attributeX/circuits.web.parsers.http.HttpParser.is_upgrader~jXmethodX circuits.core.bridge.Bridge.sendrj9XmethodXcircuits.web.url.URL.unpunycoderjXmethodX"circuits.web.wsgi.Application.initrjXmethodX6circuits.web.exceptions.RangeUnsatisfiable.descriptionrhX attributeX6circuits.web.controllers.BaseController.serve_downloadrj_XmethodX&circuits.web.wrappers.Request.protocolrj%X attributeX%circuits.io.notify.Notify.remove_pathrhXmethodX%circuits.core.pollers.EPoll.addReaderrj XmethodX circuits.node.server.Server.sendrjHXmethodXcircuits.web.url.URL.punycoderjXmethodX)circuits.net.sockets.parse_ipv4_parameterrjXfunctionXcircuits.io.serial.Serial.writerjbXmethodX#circuits.web.controllers.Controllerrj_XclassXcircuits.io.events.created.namerj>X attributeXcircuits.web.url.URL.absoluterjXmethodXcircuits.io.events.readyrj>XclassXcircuits.net.sockets.ClientrjXclassX!circuits.node.client.Client.closerj XmethodXcircuits.web.http.HTTP.versionrjX attributeX8circuits.web.exceptions.UnsupportedMediaType.descriptionrhX attributeXcircuits.net.events.broadcastrhXclassX(circuits.core.pollers.EPoll.removeWriterrj XmethodX/circuits.core.components.BaseComponent.handlersrjDX classmethodX circuits.web.exceptions.RedirectrhX exceptionXcircuits.web.events.streamrjXclassXcircuits.web.utils.compressrhXfunctionX!circuits.core.values.Value.informrj}XmethodXcircuits.web.loggers.Logger.logrjXmethodX circuits.web.exceptions.NotFoundrhX exceptionX.circuits.core.BaseComponent.unregister_pendingrjX attributeX"circuits.web.events.terminate.namerjX attributeX"circuits.app.daemon.Daemon.channelrhxX attributeX!circuits.core.events.started.namerjYX attributeXcircuits.core.Manager.joinrjXmethodXcircuits.web.url.URL.abspathrjXmethodXcircuits.web.main.Root.hellorj.XmethodX0circuits.core.components.prepare_unregister.namerjDX attributeXcircuits.core.Event.alert_donerjX attributeXcircuits.io.events.openedrj>XclassX!circuits.core.manager.Manager.runrjXmethodX4circuits.web.parsers.http.HttpParser.is_partial_bodyrjXmethodX&circuits.core.manager.ExceptionWrapperrjXclassXcircuits.io.events.opened.namerj>X attributeX circuits.node.events.packet.namerj X attributeX,circuits.web.parsers.http.HttpParser.get_urlrjXmethodX#circuits.web.utils.IOrderedDict.poprhXmethodX!circuits.web.exceptions.Gone.coderhX attributeX.circuits.core.helpers.FallBackGenerator.resumerjGXmethodX(circuits.core.pollers.EPoll.removeReaderrj XmethodXcircuits.core.Timer.resetrjXmethodX$circuits.web.headers.header_elementsrhXfunctionXcircuits.web.utils.averagerhXfunctionX$circuits.web.exceptions.UnicodeErrorrhX exceptionXcircuits.net.events.connectedrhXclassXcircuits.net.events.write.namerhX attributeXcircuits.core.utilsrjjpX#circuits.core.events.Event.completerjYX attributeXcircuits.io.notify.NotifyrhXclassXcircuits.web.http.HTTP.protocolrjX attributeXcircuits.io.events.moved.namerj>X attributeXcircuits.io.file.File.closerj2XmethodX.circuits.web.parsers.http.HttpParser.recv_bodyrjXmethodX$circuits.core.BaseComponent.handlersrjX classmethodXcircuits.core.Manager.namerjX attributeXcircuits.core.pollers.Pollrj XclassX%circuits.core.pollers.EPoll.addWriterrj XmethodXcircuits.core.handlerrjXfunctionX/circuits.web.exceptions.ServiceUnavailable.coderhX attributeXcircuits.io.process.Processrj?XclassXcircuits.six.IteratorrjXclassX!circuits.web.client.HTTPExceptionrjX exceptionX circuits.net.sockets.Server.portrjX attributeX"circuits.core.bridge.Bridge.ignorerj9X attributeXcircuits.core.manager.CallValuerjXclassX-circuits.core.components.BaseComponent.eventsrjDX classmethodX)circuits.web.headers.AcceptElement.qvaluerhX attributeXcircuits.web.servers.ServerrjXclassXcircuits.web.utils.stddevrhXfunctionX(circuits.web.parsers.multipart.MultiDictrhXclassXcircuits.app.daemon.Daemon.initrhxXmethodXcircuits.net.events.connectrhXclassX4circuits.web.websockets.client.WebSocketClient.closerjkXmethodX!circuits.io.process.Process.writerj?XmethodXcircuits.core.Manager.callEventrjXmethodX"circuits.web.errors.forbidden.namerjX attributeX1circuits.web.exceptions.HTTPException.descriptionrhX attributeXcircuits.core.utils.flattenrjXfunctionX.circuits.web.dispatchers.dispatcher.DispatcherrjqXclassXcircuits.web.wrappers.Requestrj%XclassX2circuits.web.dispatchers.virtualhosts.VirtualHostsrjQXclassX circuits.core.timers.Timer.resetrjXmethodXcircuits.core.pollers.EPollrj XclassXcircuits.core.TimeoutErrorrjX exceptionXcircuits.web.controllers.exposerj_XfunctionXcircuits.node.client.Clientrj XclassXcircuits.web.tools.gziprjXfunctionX7circuits.web.exceptions.InternalServerError.descriptionrhX attributeX"circuits.web.wsgi.Application.portrjX attributeXcircuits.io.file.File.initrj2XmethodX$circuits.core.pollers.Select.channelrj X attributeXcircuits.web.url.URLrjXclassXcircuits.web.wrappers.Statusrj%XclassX(circuits.net.sockets.UDPServer.broadcastrjXmethodXcircuits.protocols.line.linerjXclassX%circuits.core.manager.Manager.runningrjX attributeXcircuits.node.utilsrjjpX#circuits.web.wrappers.Response.donerj%X attributeXcircuits.net.sockets.UNIXServerrjXclassXcircuits.web.utils.get_rangesrhXfunctionX9circuits.core.components.BaseComponent.unregister_pendingrjDX attributeX1circuits.web.dispatchers.dispatcher.find_handlersrjqXfunctionXcircuits.six.print_rjXfunctionX5circuits.web.parsers.http.HttpParser.is_message_beginrjXmethodX!circuits.web.errors.redirect.namerjX attributeX"circuits.core.Manager.registerTaskrjXmethodX circuits.apprj;jpXcircuits.io.events.deletedrj>XclassX!circuits.six.get_unbound_functionrjXfunctionX%circuits.protocols.http.response.namerjX attributeX circuits.io.events.accessed.namerj>X attributeX circuits.web.client.request.namerjX attributeXcircuits.web.tools.digest_authrjXfunctionX4circuits.web.parsers.multipart.MultipartPart.save_asrhXmethodXcircuits.io.events.seekrj>XclassX$circuits.core.events.registered.namerjYX attributeXcircuits.io.events.seek.namerj>X attributeX#circuits.net.events.disconnect.namerhX attributeX0circuits.net.sockets.Client.parse_bind_parameterrjXmethodXcircuits.io.events.modifiedrj>XclassXcircuits.web.parsers.multipartrhjpX/circuits.web.parsers.multipart.MultiDict.getallrhXmethodXcircuits.protocols.http.HTTPrjXclassX%circuits.net.sockets.Client.connectedrjX attributeXcircuits.web.servers.BaseServerrjXclassX/circuits.web.controllers.BaseController.expiresrj_XmethodXcircuits.six.MovedAttributerjXclassX!circuits.core.events.Event.createrjYX classmethodXcircuits.net.sockets.UDPClientrjX attributeXcircuits.web.url.URL.defragr jXmethodXcircuits.app.daemon.writepidr hxXclassXcircuits.web.utils.variancer hXfunctionX&circuits.core.pollers.KQueue.addReaderr j XmethodX*circuits.core.manager.Manager.registerTaskr jXmethodX"circuits.core.manager.Manager.tickrjXmethodX/circuits.web.exceptions.RequestURITooLarge.coderhX attributeX-circuits.core.manager.Manager.unregisterChildrjXmethodX,circuits.core.manager.Manager.unregisterTaskrjXmethodX#circuits.core.pollers.EPoll.channelrj X attributeX.circuits.core.helpers.FallBackExceptionHandlerrjGXclassXcircuits.web.wrappers.Responserj%XclassXcircuits.core.Event.namerjX attributeX&circuits.core.pollers.KQueue.addWriterrj XmethodX"circuits.web.client.Client.channelrjX attributeXcircuits.six.MovedModulerjXclassX"circuits.core.workers.task.failurerjX attributeX!circuits.protocols.line.line.namerjX attributeX#circuits.core.values.Value.getValuerj}XmethodX"circuits.core.workers.task.successrjX attributeXcircuits.io.events.startedrj>XclassX%circuits.app.daemon.Daemon.on_startedrhxXmethodX#circuits.node.server.Server.channelrjHX attributeX"circuits.web.errors.forbidden.coder jX attributeX&circuits.core.BaseComponent.unregisterr!jXmethodX circuits.web.parsers.querystringr"hbjpX"circuits.core.manager.Manager.namer#jX attributeXcircuits.core.Eventr$jXclassXcircuits.app.daemonr%hxjpX"circuits.web.loggers.Logger.formatr&jX attributeXcircuits.io.events.read.namer'j>X attributeXcircuits.core.timersr(jjpX%circuits.web.servers.StdinServer.portr)jX attributeX#circuits.web.events.request.successr*jX attributeX circuits.core.events.signal.namer+jYX attributeXcircuits.web.utilsr,hjpXcircuits.net.sockets.Serverr-jXclassXcircuits.net.sockets.UNIXClientr.jXclassX"circuits.core.manager.Manager.firer/jXmethodXcircuits.io.events.stoppedr0j>XclassX/circuits.web.headers.CaseInsensitiveDict.updater1hXmethodX)circuits.core.pollers.KQueue.removeWriterr2j XmethodX$circuits.core.BaseComponent.registerr3jXmethodXcircuits.core.workers.task.namer4jX attributeX%circuits.app.daemon.Daemon.registeredr5hxXmethodX1circuits.web.exceptions.NotAcceptable.descriptionr6hX attributeX$circuits.web.headers.Headers.get_allr7hXmethodX/circuits.web.exceptions.RangeUnsatisfiable.coder8hX attributeX*circuits.web.exceptions.HTTPException.coder9hX attributeX!circuits.net.sockets.Server.writer:jXmethodX"circuits.io.process.Process.signalr;j?XmethodX+circuits.protocols.http.ResponseObject.readr<jXmethodX4circuits.net.sockets.TCP6Client.parse_bind_parameterr=jXmethodXcircuits.core.events.Eventr>jYXclassX)circuits.core.events.generate_events.lockr?jYX attributeX6circuits.web.websockets.client.WebSocketClient.channelr@jkX attributeX$circuits.core.pollers.Poll.addReaderrAj XmethodXcircuits.core.task.successrBjX attributeX.circuits.core.manager.ExceptionWrapper.extractrCjXmethodXcircuits.core.handlers.UnknownrDj#XclassXcircuits.node.utils.load_valuerEjXfunctionXcircuits.core.Event.successrFjX attributeX'circuits.core.manager.Manager.callEventrGjXmethodX/circuits.web.exceptions.PreconditionFailed.coderHhX attributeX8circuits.web.websockets.client.WebSocketClient.connectedrIjkX attributeXcircuits.web.url.URL.parserJjX classmethodXcircuits.core.loader.LoaderrKjBXclassXcircuits.web.dispatchersrLjjpX&circuits.web.sessions.Sessions.requestrMjXmethodXcircuits.web.url.URL.deparamrNjXmethodX.circuits.web.exceptions.BadRequest.descriptionrOhX attributeXcircuits.core.Manager.runningrPjX attributeX$circuits.web.parsers.http.HttpParserrQjXclassX(circuits.web.exceptions.MethodNotAllowedrRhX exceptionX#circuits.core.bridge.Bridge.channelrSj9X attributeXcircuits.six.bytes_to_strrTjXfunctionX!circuits.io.serial.Serial.channelrUjbX attributeX$circuits.web.main.HelloWorld.channelrVj.X attributeX6circuits.core.components.prepare_unregister.in_subtreerWjDXmethodX#circuits.node.client.Client.channelrXj X attributeX.circuits.core.components.BaseComponent.handlesrYjDX classmethodXcircuits.web.errors.forbiddenrZjXclassX circuits.node.events.remote.namer[j X attributeX#circuits.core.values.Value.setValuer\j}XmethodX circuits.core.pollers.BasePollerr]j XclassXcircuits.core.loaderr^jBjpX*circuits.core.events.Event.waitingHandlersr_jYX attributeX+circuits.web.exceptions.InternalServerErrorr`hX exceptionXcircuits.core.values.Valueraj}XclassXcircuits.web.sessionsrbjjpX%circuits.web.utils.IOrderedDict.clearrchXmethodX#circuits.node.client.Client.connectrdj XmethodX3circuits.protocols.websocket.WebSocketCodec.channelrejX attributeXcircuits.io.events.write.namerfj>X attributeXcircuits.core.Manager.callrgjXmethodXcircuits.node.server.ServerrhjHXclassX)circuits.web.exceptions.Unauthorized.coderihX attributeX9circuits.web.parsers.querystring.QueryStringParser.tokensrjhbXmethodX&circuits.web.errors.httperror.sanitizerkjXmethodX!circuits.core.events.Event.parentrljYX attributeXcircuits.core.handlersrmj#jpX-circuits.core.pollers.BasePoller.removeWriterrnj XmethodX!circuits.core.Manager.getHandlersrojXmethodX!circuits.web.events.response.namerpjX attributeX#circuits.web.sessions.Sessions.loadrqjXmethodX$circuits.web.exceptions.UnauthorizedrrhX exceptionXcircuits.core.Manager.fireEventrsjXmethodXcircuits.web.eventsrtjjpX!circuits.web.errors.notfound.coderujX attributeX&circuits.web.main.Authentication.usersrvj.X attributeXcircuits.core.Event.completerwjX attributeXcircuits.net.eventsrxhjpX)circuits.web.servers.FakeSock.getpeernameryjXmethodXcircuits.node.clientrzj jpXcircuits.core.events.registeredr{jYXclassX"circuits.core.pollers.Poll.discardr|j XmethodXcircuits.node.noder}jVjpXcircuits.core.componentsr~jjpX(circuits.web.servers.StdinServer.channelrjX attributeXcircuits.core.Manager.startrjXmethodXcircuits.io.file.File.closedrj2X attributeXcircuits.six.exec_rjXfunctionX*circuits.web.exceptions.ServiceUnavailablerhX exceptionX'circuits.web.headers.Headers.add_headerrhXmethodX&circuits.web.utils.IOrderedDict.updaterhXmethodX&circuits.web.servers.StdinServer.writerjXmethodX0circuits.web.dispatchers.dispatcher.resolve_pathrjqXfunctionXcircuits.core.Manager.waitEventrjXmethodXcircuits.six.Iterator.nextrjXmethodXcircuits.io.serialrjbjpXcircuits.six.reraiserjXfunctionX%circuits.web.exceptions.NotFound.coderhX attributeX+circuits.web.headers.AcceptElement.from_strrhX classmethodX-circuits.web.parsers.http.HttpParser.get_pathrjXmethodX"circuits.web.headers.HeaderElementrhXclassXcircuits.io.events.accessedrj>XclassX$circuits.core.pollers.KQueue.channelrj X attributeX"circuits.web.events.stream.failurerjX attributeX!circuits.web.tools.serve_downloadrjXfunctionXcircuits.core.timers.TimerrjXclassX(circuits.core.pollers.BasePoller.discardrj XmethodXcircuits.web.url.URL.unicoderjXmethodX'circuits.web.exceptions.BadRequest.coderhX attributeXcircuits.web.wsgi.GatewayrjXclassX$circuits.web.dispatchers.jsonrpc.rpcrjXclassX'circuits.core.pollers.Poll.removeWriterrj XmethodX&circuits.web.wsgi.Application.responserjXmethodX6circuits.web.parsers.http.HttpParser.should_keep_aliverjXmethodXcircuits.web.events.stream.namerjX attributeXcircuits.core.task.namerjX attributeX+circuits.protocols.websocket.WebSocketCodecrjXclassX#circuits.core.manager.Manager.startrjXmethodX'circuits.web.exceptions.BadGateway.coderhX attributeXcircuits.core.Manager.firerjXmethodXcircuits.net.events.error.namerhX attributeX$circuits.core.workers.Worker.channelrjX attributeXcircuits.core.events.EventTyperjYXclassXcircuits.web.dispatchers.xmlrpcrjjpXcircuits.web.wsgirjjpX$circuits.app.daemon.Daemon.deletepidrhxXmethodXcircuits.web.utils.dictformrhXfunctionX circuits.core.bridge.Bridge.initrj9XmethodX"circuits.core.pollers.Poll.channelrj X attributeX$circuits.web.sessions.create_sessionrjXfunctionXcircuits.core.ComponentrjXclassX&circuits.web.main.Authentication.realmrj.X attributeXcircuits.io.file.File.channelrj2X attributeXcircuits.core.valuesrhjpX circuits.core.loader.Loader.loadrjBXmethodX&circuits.web.exceptions.LengthRequiredrhX exceptionX'circuits.core.pollers.BasePoller.resumerj XmethodXcircuits.app.Daemon.writepidrj;XmethodXcircuits.web.loggers.LoggerrjXclassX6circuits.web.exceptions.PreconditionFailed.descriptionrhX attributeX4circuits.net.sockets.UDP6Server.parse_bind_parameterrjXmethodX*circuits.web.exceptions.RequestURITooLargerhX exceptionX%circuits.web.dispatchers.virtualhostsrjQjpXcircuits.web.main.parse_optionsrj.XfunctionXcircuits.net.events.errorrhXclassX circuits.web.errors.unauthorizedrjXclassX3circuits.net.sockets.TCPServer.parse_bind_parameterrjXmethodX#circuits.net.sockets.Server.channelrjX attributeX.circuits.web.dispatchers.xmlrpc.XMLRPC.channelrjX attributeXcircuits.core.task.failurerjX attributeXcircuits.protocols.http.requestrjXclassXcircuits.io.events.openrj>XclassXcircuits.protocols.linerjjpX*circuits.web.exceptions.RangeUnsatisfiablerhX exceptionXcircuits.core.Worker.channelrjX attributeX'circuits.core.handlers.HandlerMetaClassrj#XclassXcircuits.web.url.URL.utf8rjXmethodX,circuits.web.headers.CaseInsensitiveDict.poprhXmethodXcircuits.node.node.Node.addrjVXmethodXcircuits.web.wrappersrj%jpX$circuits.web.servers.BaseServer.portrjX attributeX"circuits.core.events.Event.successrjYX attributeXcircuits.net.sockets.UDP6ClientrjX attributeX"circuits.core.events.Event.failurerjYX attributeXcircuits.net.events.readrhXclassX8circuits.web.parsers.querystring.QueryStringToken.OBJECTrhbX attributeX$circuits.protocols.http.request.namerjX attributeX-circuits.web.exceptions.MethodNotAllowed.coderhX attributeX+circuits.web.exceptions.RequestTimeout.coderhX attributeXcircuits.web.headersrhjpX1circuits.core.components.BaseComponent.unregisterrjDXmethodXcircuits.web.processors.processrjXfunctionXcircuits.io.events.movedrj>XclassX3circuits.web.headers.CaseInsensitiveDict.setdefaultrhXmethodXcircuits.core.Bridge.sendrjXmethodXcircuits.core.BaseComponentrjXclassX$circuits.web.events.request.completerjX attributeX*circuits.web.exceptions.PreconditionFailedrhX exceptionXcircuits.versionrjjpX circuits.net.events.connect.namerhX attributeX"circuits.web.websockets.dispatcherrhjpXcircuits.tools.graphrjXfunctionXcircuits.core.Manager.flushrjXmethodXcircuits.protocolsrhjpX)circuits.core.pollers.KQueue.removeReaderrj XmethodXcircuits.io.file.File.filenamerj2X attributeX circuits.web.wrappers.HTTPStatusrj%XclassX&circuits.net.sockets.TCPClient.connectrjXmethodXcircuits.node.serverrjHjpXcircuits.web.serversrjjpXcircuits.node.eventsrj jpXcircuits.web.url.URL.sanitizerjXmethodX'circuits.core.manager.Manager.waitEventrjXmethodX circuits.web.wsgi.create_environrjXfunctionXcircuits.web.wrappers.Host.portrj%X attributeX$circuits.web.wrappers.Request.remoterj%X attributeX7circuits.web.websockets.dispatcher.WebSocketsDispatcherrhXclassX"circuits.app.daemon.daemonize.namerhxX attributeX circuits.core.events.Event.childrjYXmethodXcircuits.web.httprjjpX"circuits.protocols.line.splitLinesrjXfunctionXcircuits.core.Bridge.initrjXmethodX%circuits.web.exceptions.Redirect.coderhX attributeXcircuits.web.tools.check_authrjXfunctionXcircuits.core.Manager.stoprjXmethodX/circuits.web.parsers.http.HttpParser.get_methodrjXmethodXcircuits.core.helpersrjGjpX,circuits.web.exceptions.UnsupportedMediaTyperhX exceptionX circuits.web.servers.StdinServerrjXclassX%circuits.web.wrappers.Response.streamrj%X attributeX#circuits.web.dispatchers.xmlrpc.rpcrjXclassX$circuits.web.sessions.verify_sessionrjXfunctionX'circuits.web.controllers.JSONControllerrj_XclassX.circuits.web.wsgi.Application.translateHeadersrjXmethodX%circuits.web.headers.Headers.elementsrhXmethodX#circuits.web.events.stream.completerjX attributeXcircuits.io.notifyrhjpXcircuits.io.file.File.seekrj2XmethodXcircuits.web.servers.FakeSockrjXclassX circuits.io.process.Process.stoprj?XmethodXcircuits.core.utils.findchannelrjXfunctionX?circuits.web.websockets.dispatcher.WebSocketsDispatcher.channelrhX attributeX)circuits.net.sockets.parse_ipv6_parameterr jXfunctionX%circuits.core.Debugger.IgnoreChannelsr jX attributeX circuits.net.sockets.Server.hostr jX attributeXcircuits.web.parsers.httpr jjpXcircuits.web.constantsr jjpX-circuits.net.sockets.TCP6Server.socket_familyrjX attributeX0circuits.web.exceptions.Unauthorized.descriptionrhX attributeX)circuits.web.errors.httperror.descriptionrjX attributeX$circuits.web.client.Client.connectedrjX attributeX)circuits.web.errors.httperror.contenttyperjX attributeXcircuits.six.byteindexrjXfunctionXcircuits.app.daemon.DaemonrhxXclassX#circuits.core.events.exception.namerjYX attributeXcircuits.core.Manager.pidrjX attributeXcircuits.web.utils.parse_qsrhXfunctionX+circuits.web.exceptions.NotImplemented.coderhX attributeX circuits.node.client.Client.sendrj XmethodXcircuits.tools.inspectrjXfunctionXcircuits.web.client.requestrjXclassX&circuits.core.components.BaseComponentrjDXclassX circuits.node.server.Server.hostrjHX attributeX+circuits.core.manager.Manager.removeHandlerrjXmethodXcircuits.web.dispatchers.staticrjjpX(circuits.web.utils.IOrderedDict.fromkeysr hX classmethodXcircuits.node.events.remoter!j XclassXcircuits.core.Bridger"jXclassX-circuits.web.parsers.multipart.header_unquoter#hXfunctionX(circuits.web.parsers.multipart.copy_filer$hXfunctionXcircuits.io.file.File.writer%j2XmethodXcircuits.core.Manager.waitr&jXmethodX#circuits.web.dispatchers.dispatcherr'jqjpXcircuits.net.socketsr(jjpX"circuits.core.manager.Manager.waitr)jXmethodXcircuits.io.file.Filer*j2XclassX"circuits.core.components.Componentr+jDXclassX&circuits.core.events.unregistered.namer,jYX attributeX!circuits.web.tools.validate_sincer-jXfunctionXcircuits.core.pollers.Pollerr.j X attributeXcircuits.web.loggersr/jjpX2circuits.web.exceptions.RequestEntityTooLarge.coder0hX attributeX&circuits.web.servers.BaseServer.securer1jX attributeXcircuits.web.main.parse_bindr2j.XfunctionX!circuits.web.tools.validate_etagsr3jXfunctionX)circuits.web.processors.process_multipartr4jXfunctionX$circuits.net.sockets.UDPServer.closer5jXmethodXcircuits.web.url.parse_urlr6jXfunctionX circuits.ior7jMjpX!circuits.core.Manager.flushEventsr8jXmethodXcircuits.core.events.stoppedr9jYXclassX&circuits.web.dispatchers.static.Staticr:jXclassX,circuits.web.exceptions.NotFound.descriptionr;hX attributeX*circuits.core.pollers.BasePoller.getTargetr<j XmethodX8circuits.web.parsers.http.HttpParser.is_headers_completer=jXmethodXcircuits.core.Manager.runr>jXmethodX#circuits.web.loggers.Logger.channelr?jX attributeX7circuits.web.parsers.querystring.QueryStringToken.ARRAYr@hbX attributeX+circuits.web.headers.HeaderElement.from_strrAhX classmethodXcircuits.web.main.mainrBj.XfunctionXcircuits.core.pollers.SelectrCj XclassX$circuits.web.main.HelloWorld.requestrDj.XmethodX&circuits.web.wrappers.Response.preparerEj%XmethodX4circuits.web.parsers.http.HttpParser.get_status_coderFjXmethodXcircuits.web.processorsrGjjpX circuits.web.client.NotConnectedrHjX exceptionX"circuits.core.handlers.reprhandlerrIj#XfunctionXcircuits.io.processrJj?jpX circuits.core.values.Value.valuerKj}X attributeX"circuits.web.parsers.multipart.tobrLhXfunctionX,circuits.web.parsers.http.HttpParser.executerMjXmethodX.circuits.web.parsers.multipart.MultipartParserrNhXclassXcircuits.six.with_metaclassrOjXfunctionXcircuits.web.controllersrPj_jpX)circuits.core.manager.Manager.flushEventsrQjXmethodX#circuits.app.daemon.Daemon.writepidrRhxXmethodX#circuits.core.Debugger.IgnoreEventsrSjX attributeX)circuits.web.dispatchers.jsonrpc.rpc.namerTjX attributeXcircuits.six.iterbytesrUjXfunctionXcircuits.core.events.Event.namerVjYX attributeX+circuits.core.manager.Manager.registerChildrWjXmethodX$circuits.core.pollers.Poll.addWriterrXj XmethodX/circuits.web.parsers.http.HttpParser.is_chunkedrYjXmethodXcircuits.node.events.packetrZj XclassX"circuits.core.manager.Manager.joinr[jXmethodX#circuits.core.events.Event.channelsr\jYX attributeX/circuits.web.parsers.http.HttpParser.get_schemer]jXmethodXcircuits.io.filer^j2jpXcircuits.core.Event.cancelr_jXmethodXcircuits.web.headers.Headersr`hXclassXcircuits.app.Daemon.on_startedraj;XmethodX"circuits.core.manager.Manager.callrbjXmethodX1circuits.web.headers.CaseInsensitiveDict.fromkeysrchX classmethodXcircuits.io.events.ready.namerdj>X attributeX8circuits.web.parsers.querystring.QueryStringParser.parserehbXmethodX#circuits.web.utils.is_ssl_handshakerfhXfunctionXcircuits.io.events.closed.namergj>X attributeX!circuits.web.wsgi.Gateway.channelrhjX attributeX$circuits.web.wrappers.Request.serverrij%X attributeXcircuits.io.events.eof.namerjj>X attributeXcircuits.core.utils.findcmprkjXfunctionXcircuits.io.serial.SerialrljbXclassXcircuits.net.sockets.UDP6ServerrmjXclassX2circuits.web.exceptions.NotImplemented.descriptionrnhX attributeX!circuits.io.notify.Notify.channelrohX attributeX circuits.net.events.disconnectedrphXclassX&circuits.web.wrappers.Response.chunkedrqj%X attributeX2circuits.web.parsers.multipart.MultipartPart.valuerrhX attributeXcircuits.io.events.createdrsj>XclassX circuits.webrtjjpXcircuits.web.main.select_pollerruj.XfunctionX-circuits.web.exceptions.Forbidden.descriptionrvhX attributeX1circuits.web.parsers.multipart.MultipartPart.feedrwhXmethodXcircuits.web.wrappers.Bodyrxj%XclassXcircuits.net.events.readyryhXclassX-circuits.web.exceptions.RequestEntityTooLargerzhX exceptionX)circuits.web.wrappers.Request.script_namer{j%X attributeXcircuits.io.events.writer|j>XclassX circuits.sixr}jjpX6circuits.web.parsers.multipart.MultipartParser.get_allr~hXmethodX"circuits.net.events.broadcast.namerhX attributeX$circuits.web.events.response.successrjX attributeX circuits.io.events.modified.namerj>X attributeX7circuits.web.parsers.multipart.MultipartPart.write_bodyrhXmethodX circuits.web.client.Client.closerjXmethodXcircuits.app.Daemon.registeredrj;XmethodXcircuits.web.http.HTTPrjXclassX%circuits.web.servers.StdinServer.hostrjX attributeX2circuits.web.exceptions.LengthRequired.descriptionrhX attributeX&circuits.web.dispatchers.xmlrpc.XMLRPCrjXclassX2circuits.web.parsers.multipart.MultipartParser.getrhXmethodX)circuits.core.manager.Manager.getHandlersrjXmethodXcircuits.core.managerrjjpX"circuits.core.manager.Manager.stoprjXmethodX,circuits.net.sockets.TCPClient.socket_familyrjX attributeX1circuits.web.controllers.BaseController.forbiddenrj_XmethodXcircuits.core.Bridge.ignorerjX attributeXcircuits.web.sessions.SessionsrjXclassX#circuits.io.process.Process.channelrj?X attributeXcircuits.web.parsersrj)jpX'circuits.web.servers.StdinServer.securerjX attributeXcircuits.io.events.deleted.namerj>X attributeX5circuits.web.parsers.http.HttpParser.get_query_stringrjXmethodX(circuits.web.controllers.ExposeMetaClassrj_XclassX"circuits.web.client.Client.connectrjXmethodX.circuits.web.dispatchers.static.Static.channelrjX attributeX!circuits.core.timers.Timer.expiryrjX attributeXcircuits.tools.tryimportrjXfunctionXcircuits.web.wsgi.ApplicationrjXclassXcircuits.web.wrappers.Host.namerj%X attributeXcircuits.web.url.URL.lowerrjXmethodXcircuits.core.Event.childrjXmethodXcircuits.core.WorkerrjXclassXcircuits.core.Bridge.channelrjX attributeX.circuits.core.events.generate_events.time_leftrjYX attributeXcircuits.web.tools.basic_authrjXfunctionX'circuits.web.controllers.BaseControllerrj_XclassXcircuits.web.main.Rootrj.XclassXcircuits.web.client.ClientrjXclassX/circuits.web.exceptions.HTTPException.tracebackrhX attributeX%circuits.web.errors.unauthorized.coderjX attributeX+circuits.web.controllers.BaseController.urirj_X attributeX*circuits.web.exceptions.NotAcceptable.coderhX attributeX1circuits.web.parsers.querystring.QueryStringTokenrhbXclassX$circuits.web.wsgi.Application.securerjX attributeX%circuits.core.events.Event.alert_donerjYX attributeX,circuits.net.sockets.UDPServer.socket_familyrjX attributeX8circuits.web.parsers.http.HttpParser.is_message_completerjXmethodXcircuits.core.Event.notifyrjX attributeX0circuits.web.parsers.http.HttpParser.get_versionrjXmethodX!circuits.net.sockets.Server.closerjXmethodXcircuits.node.utils.dump_eventrjXfunctionX0circuits.web.dispatchers.jsonrpc.JSONRPC.channelrjX attributeX6circuits.web.exceptions.ServiceUnavailable.descriptionrhX attributeX)circuits.web.wsgi.Application.headerNamesrjX attributeXcircuits.core.workers.taskrjXclassX"circuits.web.headers.AcceptElementrhXclassXcircuits.core.utils.findrootrjXfunctionX%circuits.web.events.response.completerjX attributeX#circuits.web.headers.Headers.appendrhXmethodXcircuits.web.errorsrjjpXcircuits.web.websockets.clientrjkjpXcircuits.core.handlers.handlerrj#XfunctionXcircuits.six.urjXfunctionX#circuits.web.controllers.exposeJSONrj_XfunctionXcircuits.core.pollers.KQueuerj XclassX(circuits.web.dispatchers.xmlrpc.rpc.namerjX attributeX.circuits.web.websockets.client.WebSocketClientrjkXclassX$circuits.core.events.generate_eventsrjYXclassX2circuits.web.parsers.querystring.QueryStringParserrhbXclassXcircuits.six.brjXfunctionX(circuits.core.pollers.BasePoller.channelrj X attributeXcircuits.app.daemon.deletepidrhxXclassX(circuits.web.loggers.Logger.log_responserjXmethodX!circuits.core.events.Event.notifyrjYX attributeXcircuits.net.sockets.TCP6ServerrjXclassX#circuits.net.sockets.Client.channelrjX attributeXcircuits.web.wrappers.Hostrj%XclassX8circuits.web.parsers.multipart.MultipartPart.is_bufferedrhXmethodXcircuits.io.events.errorrj>XclassX0circuits.web.controllers.BaseController.redirectrj_XmethodXcircuits.core.taskrjXclassX!circuits.net.sockets.Client.writerjXmethodX*circuits.web.parsers.http.InvalidChunkSizerjX exceptionX"circuits.web.events.stream.successrjX attributeX#circuits.core.BaseComponent.channelrjX attributeXcircuits.net.sockets.PiperjXfunctionXcircuits.net.events.ready.namerhX attributeX+circuits.web.exceptions.LengthRequired.coderhX attributeXcircuits.core.events.exceptionrjYXclassXcircuits.net.sockets.TCP6ClientrjXclassX(circuits.web.headers.CaseInsensitiveDictrhXclassXcircuits.core.Event.failurerjX attributeX#circuits.core.Manager.removeHandlerrjXmethodXcircuits.web.url.URL.equivrjXmethodX0circuits.web.controllers.BaseController.notfoundrj_XmethodX3circuits.web.dispatchers.dispatcher.resolve_methodsrjqXfunctionXcircuits.web.url.URL.canonicalrjXmethodXcircuits.core.Event.createrjX classmethodX.circuits.core.components.BaseComponent.channelrjDX attributeX%circuits.web.wsgi.Application.channelrjX attributeX1circuits.web.exceptions.UnsupportedMediaType.coderhX attributeXcircuits.core.Event.channelsrjX attributeX-circuits.net.sockets.TCP6Client.socket_familyrjX attributeXcircuits.web.utils.IOrderedDictrhXclassX#circuits.web.wrappers.Request.localrj%X attributeX!circuits.core.events.unregisteredrjYXclassX$circuits.core.pollers.KQueue.discardrj XmethodX!circuits.core.manager.Manager.pidrjX attributeXcircuits.net.events.read.namerhX attributeXcircuits.core.utils.findtyperjXfunctionXcircuits.io.events.readrj>XclassX*circuits.core.pollers.BasePoller.addReaderrj XmethodX"circuits.net.events.connected.namerhX attributeX4circuits.net.sockets.TCP6Server.parse_bind_parameterrjXmethodX!circuits.core.Manager.processTaskrjXmethodXcircuits.protocols.websocketrjjpX&circuits.web.exceptions.NotImplementedrhX exceptionXcircuits.web.url.URL.encoderjXmethodX circuits.io.process.Process.initrj?XmethodX!circuits.app.daemon.writepid.namerhxX attributeX"circuits.app.daemon.deletepid.namerhxX attributeXcircuits.web.wsgi.Gateway.initrjXmethodXcircuits.core.DebuggerrjXclassX$circuits.web.utils.IOrderedDict.copyrhXmethodXcircuits.net.events.closerhXclassX#circuits.web.utils.IOrderedDict.getrhXmethodXcircuits.web.errors.redirectrjXclassX(circuits.web.headers.HeaderElement.parserhX staticmethodX$circuits.web.wrappers.Request.schemerj%X attributeXcircuits.core.ManagerrjXclassX%circuits.net.events.disconnected.namerhX attributeXcircuits.web.mainrj.jpXcircuits.net.sockets.TCPServerrjXclassXcircuits.io.events.unmountedrj>XclassX4circuits.web.parsers.multipart.MultipartParser.partsrhXmethodXcircuits.app.Daemon.deletepidrj;XmethodXcircuits.six.iterkeysrjXfunctionXcircuits.six.remove_mover jXfunctionXcircuits.six.add_mover jXfunctionX!circuits.net.sockets.Client.closer jXmethodXcircuits.toolsr jjpXcircuits.io.events.closedr j>XclassX&circuits.web.exceptions.RequestTimeoutrhX exceptionXcircuits.web.tools.expiresrjXfunctionX circuits.web.events.request.namerjX attributeXcircuits.core.pollersrj jpXcircuits.app.daemon.daemonizerhxXclassXcircuits.six.itervaluesrjXfunctionXcircuits.node.node.NoderjVXclassX%circuits.core.Manager.unregisterChildrjXmethodXcircuits.core.events.Event.stoprjYXmethodXcircuits.web.events.responserjXclassX#circuits.core.Manager.registerChildrjXmethodX*circuits.core.pollers.BasePoller.isReadingrj XmethodX-circuits.web.parsers.multipart.MultiDict.keysrhXmethodX%circuits.web.utils.IOrderedDict.itemsrhXmethodX/circuits.web.controllers.BaseController.channelrj_X attributeX&circuits.web.utils.IOrderedDict.valuesrhXmethodXcircuits.net.sockets.UDPServerrjXclassXcircuits.app.Daemonrj;XclassXcircuits.web.wrappers.Host.ipr j%X attributeXcircuits.app.Daemon.channelr!j;X attributeXcircuits.web.clientr"jjpXcircuits.web.errors.httperrorr#jXclassXcircuits.net.events.close.namer$hX attributeX$circuits.web.utils.IOrderedDict.keysr%hXmethodXcircuits.node.node.Node.channelr&jVX attributeX$circuits.app.daemon.Daemon.daemonizer'hxXmethodX,circuits.net.sockets.TCPServer.socket_familyr(jX attributeXcircuits.web.http.HTTP.schemer)jX attributeXcircuits.core.debuggerr*jjpX5circuits.web.parsers.querystring.QueryStringToken.KEYr+hbX attributeX"circuits.web.client.Client.requestr,jXmethodX'circuits.core.manager.Manager.fireEventr-jXmethodX#circuits.core.pollers.EPoll.discardr.j XmethodXcircuits.core.Manager.tickr/jXmethodX$circuits.web.wrappers.file_generatorr0j%XfunctionXcircuits.app.Daemon.initr1j;XmethodX(circuits.web.main.Authentication.channelr2j.X attributeX,circuits.web.parsers.multipart.MultiDict.getr3hXmethodXcircuits.web.loggers.formattimer4jXfunctionXcircuits.tools.deprecatedr5jXfunctionX5circuits.core.events.generate_events.reduce_time_leftr6jYXmethodXcircuits.core.utils.safeimportr7jXfunctionX circuits.web.dispatchers.jsonrpcr8jjpX$circuits.web.events.response.failurer9jX attributeXcircuits.net.events.disconnectr:hXclassX*circuits.core.pollers.BasePoller.addWriterr;j XmethodXcircuits.web.urlr<jjpXcircuits.web.tools.serve_filer=jXfunctionXcircuits.web.http.HTTP.channelr>jX attributeX circuits.core.Manager.addHandlerr?jXmethodXcircuits.node.utils.load_eventr@jXfunctionX0circuits.net.sockets.Server.parse_bind_parameterrAjXmethodX#circuits.web.client.Client.responserBjX attributeX circuits.node.server.Server.portrCjHX attributeX3circuits.web.parsers.http.HttpParser.recv_body_intorDjXmethodXcircuits.web.main.HelloWorldrEj.XclassX circuits.netrFj5jpXcircuits.app.Daemon.daemonizerGj;XmethodXcircuits.web.sessions.whorHjXfunctionX"circuits.web.wrappers.Request.hostrIj%X attributeX/circuits.core.components.BaseComponent.registerrJjDXmethodX,circuits.web.parsers.multipart.MultipartPartrKhXclassX.circuits.web.parsers.multipart.parse_form_datarLhXfunctionX%circuits.web.exceptions.HTTPExceptionrMhX exceptionX*circuits.web.utils.IOrderedDict.setdefaultrNhXmethodXcircuits.web.events.requestrOjXclassX circuits.six.create_bound_methodrPjXfunctionX#circuits.web.wrappers.Request.loginrQj%X attributeX(circuits.core.manager.UnregistrableErrorrRjX exceptionX&circuits.protocols.http.ResponseObjectrSjXclassXcircuits.tools.edgesrTjXfunctionX!circuits.core.events.stopped.namerUjYX attributeXcircuits.web.events.terminaterVjXclassXcircuits.io.events.closerWj>XclassX2circuits.web.controllers.BaseController.serve_filerXj_XmethodX%circuits.web.exceptions.NotAcceptablerYhX exceptionXcircuits.io.events.close.namerZj>X attributeX0circuits.web.parsers.multipart.MultiDict.replacer[hXmethodX:circuits.web.parsers.querystring.QueryStringParser.processr\hbXmethodXcircuits.protocols.httpr]jjpX/circuits.web.parsers.multipart.MultiDict.appendr^hXmethodX-circuits.core.pollers.BasePoller.removeReaderr_j XmethodXcircuits.io.serial.Serial.closer`jbXmethodX%circuits.web.errors.unauthorized.namerajX attributeX%circuits.net.sockets.Server.connectedrbjX attributeX$circuits.net.sockets.UDPServer.writercjXmethodXcircuits.web.url.URL.relativerdjXmethodXcircuits.core.Event.stoprejXmethodX"circuits.io.process.Process.statusrfj?X attributeX)circuits.core.manager.Manager.processTaskrgjXmethodXcircuits.tools.findrootrhjXfunctionX)circuits.core.events.generate_events.namerijYX attributeXcircuits.web.utils.parse_bodyrjhXfunctionXcircuits.core.TimerrkjXclassX%circuits.web.wrappers.Request.handledrlj%X attributeXcircuits.io.file.File.modermj2X attributeX#circuits.web.wrappers.Request.indexrnj%X attributeXcircuits.core.workers.WorkerrojXclassXcircuits.web.toolsrpjjpXcircuits.core.eventsrqjYjpX.circuits.web.exceptions.BadGateway.descriptionrrhX attributeXcircuits.net.events.closedrshXclassXcircuits.tools.killrtjXfunctionX"circuits.web.wsgi.Application.hostrujX attributeX'circuits.web.utils.IOrderedDict.popitemrvhXmethodXcircuits.protocols.line.LinerwjXclassX"circuits.web.exceptions.BadRequestrxhX exceptionXcircuits.io.events.open.nameryj>X attributeX!circuits.web.exceptions.ForbiddenrzhX exceptionXcircuits.core.events.signalr{jYXclassXcircuits.io.events.eofr|j>XclassX"circuits.core.manager.TimeoutErrorr}jX exceptionX'circuits.web.wrappers.HTTPStatus.reasonr~j%X attributeXcircuits.io.eventsrj>jpX'circuits.core.helpers.FallBackGeneratorrjGXclassXcircuits.web.exceptions.GonerhX exceptionX'circuits.web.wrappers.HTTPStatus.statusrj%X attributeXcircuits.io.events.error.namerj>X attributeXcircuits.core.bridge.Bridgerj9XclassX,circuits.web.controllers.ExposeJSONMetaClassrj_XclassXcircuits.web.http.HTTP.baserjX attributeX3circuits.web.parsers.multipart.parse_options_headerrhXfunctionXcircuitsrjjpX9circuits.web.parsers.multipart.MultipartPart.write_headerrhXmethodX+circuits.web.parsers.multipart.header_quoterhXfunctionX-circuits.web.parsers.multipart.MultipartErrorrhX exceptionXcircuits.io.events.stopped.namerj>X attributeX(circuits.web.exceptions.Gone.descriptionrhX attributeX$circuits.protocols.http.HTTP.channelrjX attributeX!circuits.core.workers.Worker.initrjXmethodX!circuits.web.errors.notfound.namerjX attributeX#circuits.web.sessions.Sessions.saverjXmethodX&circuits.web.sessions.Sessions.channelrjX attributeX9circuits.web.exceptions.RequestEntityTooLarge.descriptionrhX attributeX*circuits.web.exceptions.HTTPException.namerhX attributeX!circuits.io.process.Process.startrj?XmethodXcircuits.core.Timer.expiryrjX attributeX:circuits.web.dispatchers.virtualhosts.VirtualHosts.channelrjQX attributeXcircuits.web.errors.notfoundrjXclassX!circuits.io.events.unmounted.namerj>X attributeX5circuits.web.parsers.multipart.MultiDict.iterallitemsrhXmethodX'circuits.core.pollers.Poll.removeReaderrj XmethodX$circuits.web.wrappers.Response.closerj%X attributeXcircuits.core.bridgerj9jpX'circuits.web.servers.BaseServer.channelrjX attributeXcircuits.web.url.URL.escaperjXmethodX.circuits.core.debugger.Debugger.IgnoreChannelsrj,X attributeX#circuits.core.Event.waitingHandlersrjX attributeX'circuits.net.sockets.UNIXClient.connectrjXmethodX0circuits.web.wsgi.Application.getRequestResponserjXmethodXcircuits.net.events.writerhXclassX#circuits.core.loader.Loader.channelrjBX attributeXcircuits.io.events.started.namerj>X attributeX,circuits.web.headers.CaseInsensitiveDict.getrhXmethodX circuits.io.process.Process.killrj?XmethodX circuits.web.main.Authenticationrj.XclassX0circuits.web.exceptions.InternalServerError.coderhX attributeX+circuits.core.helpers.FallBackSignalHandlerrjGXclassX+circuits.core.components.prepare_unregisterrjDXclassX(circuits.web.main.Authentication.requestrj.XmethodXcircuits.protocols.ircrjjpX!circuits.core.events.Event.cancelrjYXmethodX#circuits.core.BaseComponent.handlesrjX classmethodX:circuits.web.parsers.multipart.MultipartPart.finish_headerrhXmethodX6circuits.web.exceptions.RequestURITooLarge.descriptionrhX attributeX"circuits.core.BaseComponent.eventsrjX classmethodXcircuits.core.workersrjjpXcircuits.net.events.closed.namerhX attributeX$circuits.core.Manager.unregisterTaskrjXmethodX&circuits.web.exceptions.Forbidden.coderhX attributeX circuits.noderjjpX$circuits.web.servers.BaseServer.hostrjX attributeX"circuits.io.notify.Notify.add_pathrhXmethodX circuits.corerjjpX6circuits.web.dispatchers.dispatcher.Dispatcher.channelrjqX attributeX"circuits.web.errors.httperror.coderjX attributeXcircuits.core.debugger.Debuggerrj,XclassXcircuits.tools.walkrjXfunctionX circuits.io.process.Process.waitrj?XmethodX0circuits.web.parsers.http.HttpParser.get_headersrjXmethodXcircuits.core.Event.parentrjX attributeXcircuits.web.websocketsrjjpXcircuits.core.manager.ManagerrjXclassX circuits.protocols.http.responserjXclassX(circuits.web.dispatchers.jsonrpc.JSONRPCrjXclassXcircuits.core.Worker.initrjXmethodX#circuits.web.events.request.failurerjX attributeX#circuits.core.manager.Manager.flushrjXmethodX-circuits.net.sockets.UDP6Server.socket_familyrjX attributeX*circuits.web.processors.process_urlencodedrjXfunctionXcircuits.web.url.URL.unescaperjXmethoduUmodules}r(j*(jUUtj(hUUtjo(hUUtj(jUUtj(jUUtj(jUUtj(hUUtj}(jUUtjx(hUUtjz(j UUtj(jUUtj(hUUtj(jUUtj}(jVUUtj~(jUUtj(j9UUtj(jkUUtj(j)UUtj(jHUUtj(jUUtj(j UUtj(jQUUtj((jUUtjL(jUUtjP(j_UUtj(jUUtjp(jUUtj(jUUtj(j.UUtjq(jYUUtj(jbUUtj (jUUtj(jUUtj"(hbUUtjJ(j?UUtjt(jUUtjF(j5UUtj%(hxUUtj(jUUtj^(j2UUtj(jUUtj (jUUtj(j>UUtj'(jqUUtj(j;UUtj(jUUtj(jUUtj(jUUtj^(jBUUtj(j%UUtj(jGUUtjb(jUUtj/(jUUtj(jUUtj,(hUUtj(hUUtj((jUUtj(jUUtj(hUUtj(hUUtjG(jUUtj7(jMUUtj8(jUUtj](jUUtj"(jUUtj (jUUtjt(jUUtjm(j#UUtj(jUUtj(jUUtj<(jUUtj(j UUtujbKuUjs}r(jc}jbKuUrst}r(jc}jbKuUcpp}r(jc}jbKuuU glob_toctreesrh]rj0aRrUimagesrh)r(Xman/misc/../examples/Telnet.pngrh]rjcaRrX Telnet.pngrrX#web/../images/CircuitsWebServer.pngrh]rhaRrXCircuitsWebServer.pngrruh]r(jjeRrbU doctreedirrX0/home/prologic/work/circuits/docs/build/doctreesrUversioning_conditionrU citationsr}UversionrK*Utodo_all_todosr]UsrcdirrX(/home/prologic/work/circuits/docs/sourcerUconfigrcsphinx.config Config r)r}r(U html_contextr}rUpygments_stylerUsphinxrUreleases_document_namerUchangesrU html_themerUdefaultrUautodoc_member_orderrUbysourcerU exclude_treesr]rU master_docrUindexrU source_suffixrU.rstrU copyrightrX2004-2013, James MillsrUreleases_release_urirU6https://bitbucket.org/circuits/circuits/src/tip/?at=%srjU3.1rUautoclass_contentrUbothrUreleases_issue_urirU0https://bitbucket.org/circuits/circuits/issue/%srU today_fmtrU %B %d, %YrUtemplates_pathr ]r U _templatesr aUautodoc_default_flagsr ]r Ushow-inheritanceraUlatex_documentsr]r(UindexU circuits.texXcircuits DocumentationX James MillsUmanualtraUdevelrUhtml_static_pathr]rU_staticraUhtml_theme_pathr]rU_themesraUtodo_include_todosrU html_stylerUrtd.cssrUreleases_debugrU overridesr}Uhtmlhelp_basenamerU circuitsdocrUprojectr Xcircuitsr!U extensionsr"]r#(Usphinx.ext.autodocr$Usphinx.ext.autosummaryr%Usphinx.ext.graphvizr&Usphinx.ext.ifconfigr'Usphinx.ext.todor(Ureleasesr)eUreleaser*U 3.1.0.devr+ubUmetadatar,}r-(hb}hx}h}h}h}h}h}h}h}h}h}h}h}h}h}h}h}j}j}j}j#}j,}j5}j>}jG}jP}jY}jb}jk}jt}j}}h}j}j}h}j}j}j}j}h}j}h^}j}j}j}j}j}j }j)}j2}j;}jD}jM}jV}j_}jh}r.XorphanUsjq}jz}j}j}j}j}j}j}j}j}j}j}j}j}j}j}j}j }j}j}j%}j.}h }j?}jH}jQ}jZ}jc}jl}h2}j}}j}j}j}h}j}j}j}j}j}j}j}j}j}j}j}j }j}j}j'}j0}j9}jB}uUversionchangesr/}r0X3.0]r1(Xversionchangedh2K>NNX$Changed in version 3.0: In circuits 2.x you declared your event handler to be a filter by using @handler(filter=True) and returned a True-ish value from the respective event handler to achieve the same effect. This is no longer the case in circuits 3.x Please use event.stop() as noted above.tr2asUtoc_num_entriesr3}r4(hbKhxKhKhKhKhKhKhKhKhKhKhKhKhKhKhKhKjKjKjKj#Kj,Kj5Kj>KjGKjPKjYKjbKjkKjtKj}KhKjKjKhKjKjKjKjKhK jKh^KjKjKjKjKjKj Kj)Kj2Kj;KjDKjMKjVKj_KjhKjqKjzKjKjKjKjKjKjKjKjKjKjKjKjKjK jK jKj KjKjKj%Kj.Kh K j?KjHKjQKjZKjcKjlKh2Kj}KjKjKjKhKjKjKjKjKjKjKjKjKjKjKjKj KjKjKj'Kj0Kj9KjBKuUnumbered_toctreesr5h]Rr6U found_docsr7h]r8(X$api/circuits.web.parsers.querystringr9Xapi/circuits.app.daemonr:Xweb/gettingstartedr;X&api/circuits.web.websockets.dispatcherr<Xapi/circuits.protocolsr=X dev/indexr>X dev/standardsr?Xapi/circuits.io.notifyr@X man/valuesrAX"api/circuits.web.parsers.multipartrBX web/indexrCXapi/circuits.web.utilsrDXapi/circuits.web.exceptionsrEXapi/circuits.net.eventsrFXapi/circuits.web.headersrGXstart/downloadingrHXfaqrIXapi/circuits.web.parsers.httprJXapi/circuits.web.httprKX#api/circuits.web.dispatchers.xmlrpcrLXapi/circuits.core.handlersrMXapi/circuits.core.debuggerrNXapi/circuits.netrOXapi/circuits.core.helpersrPXapi/circuits.io.eventsrQXstart/requirementsrRXapi/circuits.core.eventsrSXapi/circuits.io.serialrTX"api/circuits.web.websockets.clientrUXstart/installingrVXroadmaprWX man/handlersrXX man/managerrYXtodorZXindexr[Xdev/contributingr\Xapi/circuits.web.constantsr]Xtutorials/indexr^Xapi/circuits.web.serversr_Xreadmer`X#api/circuits.web.dispatchers.staticrah^Xapi/circuits.protocols.linerbXapi/circuits.web.toolsrcXapi/circuits.core.managerrdjXapi/circuits.node.utilsreXapi/circuits.node.clientrfXapi/circuits.web.parsersrgXapi/circuits.io.filerhXapi/circuits.appriXapi/circuits.core.componentsrjXapi/circuits.iorkXapi/circuits.node.noderlXapi/circuits.web.controllersrmXapi/circuits.node.eventsrnX start/indexroX api/circuitsrpXapi/circuits.noderqX dev/processesrrXapi/circuits.core.valuesrsXapi/circuits.web.loggersrtX$api/circuits.web.dispatchers.jsonrpcruXdev/introductionrvXapi/circuits.core.workersrwXapi/circuits.web.processorsrxXapi/circuits.web.errorsryX web/howtosrzXapi/circuits.core.timersr{Xweb/introductionr|X web/featuresr}X'api/circuits.web.dispatchers.dispatcherr~Xapi/circuits.versionrXapi/circuits.core.pollersrX api/circuits.protocols.websocketrXglossaryrXapi/circuits.web.wrappersrXapi/circuits.web.mainrXtutorials/woof/indexrXapi/circuits.io.processrXapi/circuits.node.serverrX)api/circuits.web.dispatchers.virtualhostsrX start/quickrXman/misc/toolsrXapi/circuits.webrX man/eventsrX contributorsrXapi/circuits.core.utilsrX man/debuggerrXapi/circuits.toolsrXtutorials/telnet/indexrXapi/circuits.web.wsgirXapi/circuits.web.dispatchersrXapi/circuits.web.eventsrXapi/circuits.protocols.ircrXapi/circuits.net.socketsrXman/componentsrXapi/circuits.protocols.httprXapi/circuits.web.urlrXapi/circuits.web.clientrXapi/circuits.web.sessionsrXapi/circuits.corerjhXapi/circuits.web.websocketsrXapi/circuits.sixrXweb/miscellaneousrX api/indexrXapi/circuits.core.bridgerXapi/circuits.core.loaderreRrU longtitlesr}r(hbhdhxhyhhhhhhhhhhhhhhhhhhhhhhhhhhhhhjjj jjjjj#j$j,j-j5j6j>j?jGjHjPjQjYjZjbjcjkjljtjuj}j~hjjjjjhjjjjjjjjjhjjjh^jjjjjjjjjjjj j!j)j*j2j3j;j<jDjEjMjNjVjWj_j`jhjijqjrjzj{jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjj%j&j.j/h j7j?j@jHjIjQjRjZj[jcjdjljmh2juj}j~jjjjjjhjjjjjjjjjjjjjjjjjjjjjjjj j jjjjj'j(j0j1j9j:jBjCuU dependenciesr}r(hbh]rU)../../circuits/web/parsers/querystring.pyraRrhh]rU../../circuits/web/utils.pyraRrh2h]rXman/examples/handler_returns.pyraRrhxh]rU../../circuits/app/daemon.pyraRrj}h]rU../../circuits/core/values.pyraRrhh]rjaRrjh]rU../../circuits/core/utils.pyraRrjGh]rU../../circuits/core/helpers.pyraRrjh]rU(../../circuits/web/dispatchers/xmlrpc.pyraRrhh]rU+../../circuits/web/websockets/dispatcher.pyraRrjh]rU../../circuits/__init__.pyraRrhh]rU$../../circuits/protocols/__init__.pyraRrjhh]rX../../CHANGES.rstraRrhh]rX"man/examples/handler_annotation.pyraRrjh]rU../../circuits/node/__init__.pyraRrjh]rU ../../circuits/tools/__init__.pyraRrhh]r(Xexamples/helloweb.pyrXexamples/index.rstrX../../README.rstrXexamples/hello.pyrXexamples/echoserver.pyreRrhh]r(Xtutorials/telnet/Telnet.dotrXtutorials/telnet/telnet.pyreRrhh]rU../../circuits/io/notify.pyraRrj.h]rU../../circuits/web/main.pyraRrjh]rU../../circuits/web/constants.pyraRrhh]rU'../../circuits/web/parsers/multipart.pyraRrjh]rU../../circuits/web/loggers.pyraRrjh]rU*../../circuits/web/dispatchers/__init__.pyraRrjh]rU../../circuits/web/sessions.pyraRrjh]rU../../circuits/web/wsgi.pyraRrjh]rU)../../circuits/web/dispatchers/jsonrpc.pyraRrjh]rU../../circuits/web/servers.pyraRrjh]r U../../circuits/web/events.pyr aRr hh]r (Xexamples/helloweb.pyr Xexamples/index.rstr X../../README.rstr Xexamples/hello.pyr Xexamples/echoserver.pyr eRr jh]r U(../../circuits/protocols/irc/__init__.pyr aRr jh]r U../../circuits/net/sockets.pyr aRr jh]r U)../../circuits/web/websockets/__init__.pyr aRr jh]r U(../../circuits/web/dispatchers/static.pyr aRr jh]r U../../circuits/core/workers.pyr aRr hh]r U ../../circuits/web/exceptions.pyr aRr jh]r U ../../circuits/web/processors.pyr aRr hh]r U../../circuits/net/events.pyr aRr! j2h]r" U../../circuits/io/file.pyr# aRr$ jh]r% U../../circuits/web/errors.pyr& aRr' jh]r( U../../circuits/web/url.pyr) aRr* jh]r+ U"../../circuits/web/parsers/http.pyr, aRr- jh]r. U ../../circuits/protocols/line.pyr/ aRr0 jh]r1 U../../circuits/core/timers.pyr2 aRr3 jh]r4 U../../circuits/core/manager.pyr5 aRr6 jh]r7 U../../circuits/web/client.pyr8 aRr9 jh]r: (Xexamples/examples/helloweb.pyr; Xexamples/examples/hello.pyr< Xexamples/examples/echoserver.pyr= eRr> jqh]r? U,../../circuits/web/dispatchers/dispatcher.pyr@ aRrA jh]rB U../../circuits/node/utils.pyrC aRrD jh]rE U../../circuits/web/http.pyrF aRrG j h]rH U../../circuits/core/pollers.pyrI aRrJ j h]rK U../../circuits/node/client.pyrL aRrM j)h]rN U&../../circuits/web/parsers/__init__.pyrO aRrP j#h]rQ U../../circuits/core/handlers.pyrR aRrS hh]rT U../../circuits/web/headers.pyrU aRrV j,h]rW U../../circuits/core/debugger.pyrX aRrY j5h]rZ U../../circuits/net/__init__.pyr[ aRr\ jh]r] U%../../circuits/protocols/websocket.pyr^ aRr_ j>h]r` U../../circuits/io/events.pyra aRrb jh]rc U../../circuits/core/__init__.pyrd aRre j;h]rf U../../circuits/app/__init__.pyrg aRrh jkh]ri U'../../circuits/web/websockets/client.pyrj aRrk j%h]rl U../../circuits/web/wrappers.pyrm aRrn jDh]ro U!../../circuits/core/components.pyrp aRrq jh]rr U../../circuits/six.pyrs aRrt jh]ru U ../../circuits/protocols/http.pyrv aRrw jch]rx (jXman/misc/../examples/Telnet.dotry eRrz jMh]r{ U../../circuits/io/__init__.pyr| aRr} jVh]r~ U../../circuits/node/node.pyr aRr j_h]r U!../../circuits/web/controllers.pyr aRr j9h]r U../../circuits/core/bridge.pyr aRr h h]r (Xtutorials/woof/002.pyr Xtutorials/woof/004.pyr Xtutorials/woof/007.pyr Xtutorials/woof/008.pyr Xtutorials/woof/005.pyr Xtutorials/woof/009.pyr Xtutorials/woof/003.pyr Xtutorials/woof/006.pyr Xtutorials/woof/001.pyr eRr j?h]r U../../circuits/io/process.pyr aRr jHh]r U../../circuits/node/server.pyr aRr jYh]r U../../circuits/core/events.pyr aRr jQh]r U.../../circuits/web/dispatchers/virtualhosts.pyr aRr jbh]r U../../circuits/io/serial.pyr aRr jh]r U../../circuits/web/tools.pyr aRr jlh]r U../../circuits/web/__init__.pyr aRr j h]r U../../circuits/node/events.pyr aRr jBh]r U../../circuits/core/loader.pyr aRr jh]r U../../circuits/version.pyr aRr uUtoctree_includesr }r (h]r (X start/indexr Xtutorials/indexr X man/indexr X web/indexr X api/indexr X dev/indexr Xchangesr Xroadmapr X contributorsr Xfaqr Xglossaryr Xexamples/indexr Xtodor Xreadmer ej5]r (Xapi/circuits.net.eventsr Xapi/circuits.net.socketsr eh]r (Xdev/introductionr Xdev/contributingr X dev/processesr X dev/standardsr ej]r (Xapi/circuits.core.bridger Xapi/circuits.core.componentsr Xapi/circuits.core.debuggerr Xapi/circuits.core.eventsr Xapi/circuits.core.handlersr Xapi/circuits.core.helpersr Xapi/circuits.core.loaderr Xapi/circuits.core.managerr Xapi/circuits.core.pollersr Xapi/circuits.core.timersr Xapi/circuits.core.utilsr Xapi/circuits.core.valuesr Xapi/circuits.core.workersr ej;]r Xapi/circuits.app.daemonr aj]r (X'api/circuits.web.dispatchers.dispatcherr X$api/circuits.web.dispatchers.jsonrpcr X#api/circuits.web.dispatchers.staticr X)api/circuits.web.dispatchers.virtualhostsr X#api/circuits.web.dispatchers.xmlrpcr ej]r (X"api/circuits.web.websockets.clientr X&api/circuits.web.websockets.dispatcherr ejz]r (X start/quickr Xstart/downloadingr Xstart/installingr Xstart/requirementsr ej]r (Xtutorials/woof/indexr Xtutorials/telnet/indexr ejM]r (Xapi/circuits.io.eventsr Xapi/circuits.io.filer Xapi/circuits.io.notifyr Xapi/circuits.io.processr Xapi/circuits.io.serialr ej0]r (jj;hxjj9jDj,jYj#jGjBjj jjj}jjMj>j2hj?jbj5hjjj j jVjHjhjjjjjjjjljjj_jjqjjjQjjjhhjjj.j)jhhbjjjjjhjjkhj%jeh]r (Xweb/introductionr Xweb/gettingstartedr X web/featuresr X web/howtosr Xweb/miscellaneousr ej]r (Xapi/circuits.appr Xapi/circuits.corer Xapi/circuits.ior Xapi/circuits.netr Xapi/circuits.noder Xapi/circuits.protocolsr Xapi/circuits.toolsr Xapi/circuits.webr Xapi/circuits.sixr Xapi/circuits.versionr eh]r (Xapi/circuits.protocols.httpr Xapi/circuits.protocols.ircr Xapi/circuits.protocols.liner X api/circuits.protocols.websocketr eh^]r (Xman/componentsr X man/debuggerr X man/eventsr X man/handlersr X man/managerr X man/valuesr Xman/misc/toolsr ej]r (Xapi/circuits.node.clientr Xapi/circuits.node.eventsr Xapi/circuits.node.noder Xapi/circuits.node.serverr Xapi/circuits.node.utilsr ej)]r (Xapi/circuits.web.parsers.httpr X"api/circuits.web.parsers.multipartr X$api/circuits.web.parsers.querystringr ejl]r (Xapi/circuits.web.dispatchersr Xapi/circuits.web.parsersr Xapi/circuits.web.websocketsr Xapi/circuits.web.clientr Xapi/circuits.web.constantsr Xapi/circuits.web.controllersr Xapi/circuits.web.errorsr Xapi/circuits.web.eventsr! Xapi/circuits.web.exceptionsr" Xapi/circuits.web.headersr# Xapi/circuits.web.httpr$ Xapi/circuits.web.loggersr% Xapi/circuits.web.mainr& Xapi/circuits.web.processorsr' Xapi/circuits.web.serversr( Xapi/circuits.web.sessionsr) Xapi/circuits.web.toolsr* Xapi/circuits.web.urlr+ Xapi/circuits.web.utilsr, Xapi/circuits.web.wrappersr- Xapi/circuits.web.wsgir. euU temp_datar/ }Utocsr0 }r1 (hbcdocutils.nodes bullet_list r2 )r3 }r4 (hfUhg}r5 (hi]hj]hk]hl]hm]uhn]r6 cdocutils.nodes list_item r7 )r8 }r9 (hfUhg}r: (hi]hj]hk]hl]hm]uhuj3 hn]r; csphinx.addnodes compact_paragraph r< )r= }r> (hfUhg}r? (hi]hj]hk]hl]hm]uhuj8 hn]r@ cdocutils.nodes reference rA )rB }rC (hfUhg}rD (U anchornameUUrefurihbhm]hk]hi]hj]hl]Uinternaluhuj= hn]rE hpX'circuits.web.parsers.querystring modulerF rG }rH (hfhthujB ubahvU referencerI ubahvUcompact_paragraphrJ ubahvU list_itemrK ubahvU bullet_listrL ubhxj2 )rM }rN (hfUhg}rO (hi]hj]hk]hl]hm]uhn]rP j7 )rQ }rR (hfUhg}rS (hi]hj]hk]hl]hm]uhujM hn]rT j< )rU }rV (hfUhg}rW (hi]hj]hk]hl]hm]uhujQ hn]rX jA )rY }rZ (hfUhg}r[ (U anchornameUUrefurihxhm]hk]hi]hj]hl]UinternaluhujU hn]r\ hpXcircuits.app.daemon moduler] r^ }r_ (hfhhujY ubahvjI ubahvjJ ubahvjK ubahvjL ubhj2 )r` }ra (hfUhg}rb (hi]hj]hk]hl]hm]uhn]rc j7 )rd }re (hfUhg}rf (hi]hj]hk]hl]hm]uhuj` hn]rg j< )rh }ri (hfUhg}rj (hi]hj]hk]hl]hm]uhujd hn]rk jA )rl }rm (hfUhg}rn (U anchornameUUrefurihhm]hk]hi]hj]hl]Uinternaluhujh hn]ro hpXGetting Startedrp rq }rr (hfhhujl ubahvjI ubahvjJ ubahvjK ubahvjL ubhj2 )rs }rt (hfUhg}ru (hi]hj]hk]hl]hm]uhn]rv j7 )rw }rx (hfUhg}ry (hi]hj]hk]hl]hm]uhujs hn]rz j< )r{ }r| (hfUhg}r} (hi]hj]hk]hl]hm]uhujw hn]r~ jA )r }r (hfUhg}r (U anchornameUUrefurihhm]hk]hi]hj]hl]Uinternaluhuj{ hn]r hpX)circuits.web.websockets.dispatcher moduler r }r (hfhhuj ubahvjI ubahvjJ ubahvjK ubahvjL ubhj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r (j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameUUrefurihhm]hk]hi]hj]hl]Uinternaluhuj hn]r hpXcircuits.protocols packager r }r (hfhhuj ubahvjI ubahvjJ ubj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r (j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r (j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameU #submodulesUrefurihhm]hk]hi]hj]hl]Uinternaluhuj hn]r hpX Submodulesr r }r (hfX Submoduleshuj ubahvjI ubahvjJ ubj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r csphinx.addnodes toctree r )r }r (hfUhg}r (UnumberedKUparenthU titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]r (Nj r Nj r Nj r Nj r eUhiddenUmaxdepthJU includefiles]r (j j j j ehl]uhuj hn]hvUtoctreer ubahvjL ubehvjK ubj7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameX#module-circuits.protocolsUrefurihhm]hk]hi]hj]hl]Uinternaluhuj hn]r hpXModule contentsr r }r (hfXModule contentshuj ubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubhj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r (j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameUUrefurihhm]hk]hi]hj]hl]Uinternaluhuj hn]r hpXDeveloper Docsr r }r (hfhhuj ubahvjI ubahvjJ ubj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j )r }r (hfUhg}r (UnumberedKUparenthU titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]r (Nj r Nj r Nj r Nj r eUhiddenUmaxdepthKU includefiles]r (j j j j ehl]uhuj hn]hvj ubahvjL ubehvjK ubahvjL ubhj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r (j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameUUrefurihhm]hk]hi]hj]hl]Uinternaluhuj hn]r hpXDevelopment Standardsr r }r (hfhhuj ubahvjI ubahvjJ ubj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r (j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameU#cyclomatic-complexityUrefurihhm]hk]hi]hj]hl]Uinternaluhuj hn]r hpXCyclomatic Complexityr r }r (hfXCyclomatic Complexityhuj ubahvjI ubahvjJ ubahvjK ubj7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameU #coding-styleUrefurihhm]hk]hi]hj]hl]Uinternaluhuj hn]r hpX Coding Styler r }r (hfX Coding Stylehuj ubahvjI ubahvjJ ubahvjK ubj7 )r }r (hfUhg}r! (hi]hj]hk]hl]hm]uhuj hn]r" j< )r# }r$ (hfUhg}r% (hi]hj]hk]hl]hm]uhuj hn]r& jA )r' }r( (hfUhg}r) (U anchornameU#revision-historyUrefurihhm]hk]hi]hj]hl]Uinternaluhuj# hn]r* hpXRevision Historyr+ r, }r- (hfXRevision Historyhuj' ubahvjI ubahvjJ ubahvjK ubj7 )r. }r/ (hfUhg}r0 (hi]hj]hk]hl]hm]uhuj hn]r1 j< )r2 }r3 (hfUhg}r4 (hi]hj]hk]hl]hm]uhuj. hn]r5 jA )r6 }r7 (hfUhg}r8 (U anchornameU #unit-testsUrefurihhm]hk]hi]hj]hl]Uinternaluhuj2 hn]r9 hpX Unit Testsr: r; }r< (hfX Unit Testshuj6 ubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubhj2 )r= }r> (hfUhg}r? (hi]hj]hk]hl]hm]uhn]r@ j7 )rA }rB (hfUhg}rC (hi]hj]hk]hl]hm]uhuj= hn]rD j< )rE }rF (hfUhg}rG (hi]hj]hk]hl]hm]uhujA hn]rH jA )rI }rJ (hfUhg}rK (U anchornameUUrefurihhm]hk]hi]hj]hl]UinternaluhujE hn]rL hpXcircuits.io.notify modulerM rN }rO (hfhhujI ubahvjI ubahvjJ ubahvjK ubahvjL ubhj2 )rP }rQ (hfUhg}rR (hi]hj]hk]hl]hm]uhn]rS j7 )rT }rU (hfUhg}rV (hi]hj]hk]hl]hm]uhujP hn]rW j< )rX }rY (hfUhg}rZ (hi]hj]hk]hl]hm]uhujT hn]r[ jA )r\ }r] (hfUhg}r^ (U anchornameUUrefurihhm]hk]hi]hj]hl]UinternaluhujX hn]r_ hpXValuesr` ra }rb (hfhhuj\ ubahvjI ubahvjJ ubahvjK ubahvjL ubhj2 )rc }rd (hfUhg}re (hi]hj]hk]hl]hm]uhn]rf j7 )rg }rh (hfUhg}ri (hi]hj]hk]hl]hm]uhujc hn]rj (j< )rk }rl (hfUhg}rm (hi]hj]hk]hl]hm]uhujg hn]rn jA )ro }rp (hfUhg}rq (U anchornameUUrefurihhm]hk]hi]hj]hl]Uinternaluhujk hn]rr hpX%circuits.web.parsers.multipart modulers rt }ru (hfhhujo ubahvjI ubahvjJ ubj2 )rv }rw (hfUhg}rx (hi]hj]hk]hl]hm]uhujg hn]ry j7 )rz }r{ (hfUhg}r| (hi]hj]hk]hl]hm]uhujv hn]r} (j< )r~ }r (hfUhg}r (hi]hj]hk]hl]hm]uhujz hn]r jA )r }r (hfUhg}r (U anchornameU#parser-for-multipart-form-dataUrefurihhm]hk]hi]hj]hl]Uinternaluhuj~ hn]r hpXParser for multipart/form-datar r }r (hfXParser for multipart/form-datahuj ubahvjI ubahvjJ ubj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhujz hn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameU #licence-mitUrefurihhm]hk]hi]hj]hl]Uinternaluhuj hn]r hpX Licence (MIT)r r }r (hfX Licence (MIT)huj ubahvjI ubahvjJ ubahvjK ubahvjL ubehvjK ubahvjL ubehvjK ubahvjL ubhj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r (j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameUUrefurihhm]hk]hi]hj]hl]Uinternaluhuj hn]r hpXcircuits.web User Manualr r }r (hfhhuj ubahvjI ubahvjJ ubj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j )r }r (hfUhg}r (UnumberedKUparenthU titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]r (Nj r Nj r Nj r Nj r Nj r eUhiddenUmaxdepthKU includefiles]r (j j j j j ehl]uhuj hn]hvj ubahvjL ubehvjK ubahvjL ubhj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameUUrefurihhm]hk]hi]hj]hl]Uinternaluhuj hn]r hpXcircuits.web.utils moduler r }r (hfhhuj ubahvjI ubahvjJ ubahvjK ubahvjL ubhj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameUUrefurihhm]hk]hi]hj]hl]Uinternaluhuj hn]r hpXcircuits.web.exceptions moduler r }r (hfhhuj ubahvjI ubahvjJ ubahvjK ubahvjL ubhj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameUUrefurihhm]hk]hi]hj]hl]Uinternaluhuj hn]r hpXcircuits.net.events moduler r }r (hfhhuj ubahvjI ubahvjJ ubahvjK ubahvjL ubhj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameUUrefurihhm]hk]hi]hj]hl]Uinternaluhuj hn]r hpXcircuits.web.headers moduler r }r (hfhhuj ubahvjI ubahvjJ ubahvjK ubahvjL ubhj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r (j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameUUrefurihhm]hk]hi]hj]hl]Uinternaluhuj hn]r hpX Downloadingr r }r (hfhhuj ubahvjI ubahvjJ ubj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r (j7 )r }r! (hfUhg}r" (hi]hj]hk]hl]hm]uhuj hn]r# j< )r$ }r% (hfUhg}r& (hi]hj]hk]hl]hm]uhuj hn]r' jA )r( }r) (hfUhg}r* (U anchornameU#latest-stable-releaseUrefurihhm]hk]hi]hj]hl]Uinternaluhuj$ hn]r+ hpXLatest Stable Releaser, r- }r. (hfXLatest Stable Releasehuj( ubahvjI ubahvjJ ubahvjK ubj7 )r/ }r0 (hfUhg}r1 (hi]hj]hk]hl]hm]uhuj hn]r2 j< )r3 }r4 (hfUhg}r5 (hi]hj]hk]hl]hm]uhuj/ hn]r6 jA )r7 }r8 (hfUhg}r9 (U anchornameU#latest-development-source-codeUrefurihhm]hk]hi]hj]hl]Uinternaluhuj3 hn]r: hpXLatest Development Source Coder; r< }r= (hfXLatest Development Source Codehuj7 ubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubhj2 )r> }r? (hfUhg}r@ (hi]hj]hk]hl]hm]uhn]rA j7 )rB }rC (hfUhg}rD (hi]hj]hk]hl]hm]uhuj> hn]rE (j< )rF }rG (hfUhg}rH (hi]hj]hk]hl]hm]uhujB hn]rI jA )rJ }rK (hfUhg}rL (U anchornameUUrefurihhm]hk]hi]hj]hl]UinternaluhujF hn]rM hpXFrequently Asked QuestionsrN rO }rP (hfjhujJ ubahvjI ubahvjJ ubj2 )rQ }rR (hfUhg}rS (hi]hj]hk]hl]hm]uhujB hn]rT j7 )rU }rV (hfUhg}rW (hi]hj]hk]hl]hm]uhujQ hn]rX j< )rY }rZ (hfUhg}r[ (hi]hj]hk]hl]hm]uhujU hn]r\ jA )r] }r^ (hfUhg}r_ (U anchornameU#generalUrefurihhm]hk]hi]hj]hl]UinternaluhujY hn]r` hpXGeneralra rb }rc (hfXGeneralhuj] ubahvjI ubahvjJ ubahvjK ubahvjL ubehvjK ubahvjL ubjj2 )rd }re (hfUhg}rf (hi]hj]hk]hl]hm]uhn]rg j7 )rh }ri (hfUhg}rj (hi]hj]hk]hl]hm]uhujd hn]rk j< )rl }rm (hfUhg}rn (hi]hj]hk]hl]hm]uhujh hn]ro jA )rp }rq (hfUhg}rr (U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujl hn]rs hpX circuits.web.parsers.http modulert ru }rv (hfjhujp ubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )rw }rx (hfUhg}ry (hi]hj]hk]hl]hm]uhn]rz j7 )r{ }r| (hfUhg}r} (hi]hj]hk]hl]hm]uhujw hn]r~ j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj{ hn]r jA )r }r (hfUhg}r (U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhuj hn]r hpXcircuits.web.http moduler r }r (hfjhuj ubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhuj hn]r hpX&circuits.web.dispatchers.xmlrpc moduler r }r (hfj"huj ubahvjI ubahvjJ ubahvjK ubahvjL ubj#j2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameUUrefurij#hm]hk]hi]hj]hl]Uinternaluhuj hn]r hpXcircuits.core.handlers moduler r }r (hfj+huj ubahvjI ubahvjJ ubahvjK ubahvjL ubj,j2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameUUrefurij,hm]hk]hi]hj]hl]Uinternaluhuj hn]r hpXcircuits.core.debugger moduler r }r (hfj4huj ubahvjI ubahvjJ ubahvjK ubahvjL ubj5j2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r (j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameUUrefurij5hm]hk]hi]hj]hl]Uinternaluhuj hn]r hpXcircuits.net packager r }r (hfj=huj ubahvjI ubahvjJ ubj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r (j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r (j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameU #submodulesUrefurij5hm]hk]hi]hj]hl]Uinternaluhuj hn]r hpX Submodulesr r }r (hfX Submoduleshuj ubahvjI ubahvjJ ubj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j )r }r (hfUhg}r (UnumberedKUparentj5U titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]r (Nj r Nj r eUhiddenUmaxdepthJU includefiles]r (j j ehl]uhuj hn]hvj ubahvjL ubehvjK ubj7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameX#module-circuits.netUrefurij5hm]hk]hi]hj]hl]Uinternaluhuj hn]r hpXModule contentsr r }r (hfXModule contentshuj ubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubj>j2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameUUrefurij>hm]hk]hi]hj]hl]Uinternaluhuj hn]r hpXcircuits.io.events moduler r }r (hfjFhuj ubahvjI ubahvjJ ubahvjK ubahvjL ubjGj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r! jA )r" }r# (hfUhg}r$ (U anchornameUUrefurijGhm]hk]hi]hj]hl]Uinternaluhuj hn]r% hpXcircuits.core.helpers moduler& r' }r( (hfjOhuj" ubahvjI ubahvjJ ubahvjK ubahvjL ubjPj2 )r) }r* (hfUhg}r+ (hi]hj]hk]hl]hm]uhn]r, j7 )r- }r. (hfUhg}r/ (hi]hj]hk]hl]hm]uhuj) hn]r0 (j< )r1 }r2 (hfUhg}r3 (hi]hj]hk]hl]hm]uhuj- hn]r4 jA )r5 }r6 (hfUhg}r7 (U anchornameUUrefurijPhm]hk]hi]hj]hl]Uinternaluhuj1 hn]r8 hpXRequirements and Dependenciesr9 r: }r; (hfjXhuj5 ubahvjI ubahvjJ ubj2 )r< }r= (hfUhg}r> (hi]hj]hk]hl]hm]uhuj- hn]r? j7 )r@ }rA (hfUhg}rB (hi]hj]hk]hl]hm]uhuj< hn]rC j< )rD }rE (hfUhg}rF (hi]hj]hk]hl]hm]uhuj@ hn]rG jA )rH }rI (hfUhg}rJ (U anchornameU#other-optional-dependenciesUrefurijPhm]hk]hi]hj]hl]UinternaluhujD hn]rK hpXOther Optional DependenciesrL rM }rN (hfXOther Optional DependencieshujH ubahvjI ubahvjJ ubahvjK ubahvjL ubehvjK ubahvjL ubjYj2 )rO }rP (hfUhg}rQ (hi]hj]hk]hl]hm]uhn]rR j7 )rS }rT (hfUhg}rU (hi]hj]hk]hl]hm]uhujO hn]rV j< )rW }rX (hfUhg}rY (hi]hj]hk]hl]hm]uhujS hn]rZ jA )r[ }r\ (hfUhg}r] (U anchornameUUrefurijYhm]hk]hi]hj]hl]UinternaluhujW hn]r^ hpXcircuits.core.events moduler_ r` }ra (hfjahuj[ ubahvjI ubahvjJ ubahvjK ubahvjL ubjbj2 )rb }rc (hfUhg}rd (hi]hj]hk]hl]hm]uhn]re j7 )rf }rg (hfUhg}rh (hi]hj]hk]hl]hm]uhujb hn]ri j< )rj }rk (hfUhg}rl (hi]hj]hk]hl]hm]uhujf hn]rm jA )rn }ro (hfUhg}rp (U anchornameUUrefurijbhm]hk]hi]hj]hl]Uinternaluhujj hn]rq hpXcircuits.io.serial modulerr rs }rt (hfjjhujn ubahvjI ubahvjJ ubahvjK ubahvjL ubjkj2 )ru }rv (hfUhg}rw (hi]hj]hk]hl]hm]uhn]rx j7 )ry }rz (hfUhg}r{ (hi]hj]hk]hl]hm]uhuju hn]r| j< )r} }r~ (hfUhg}r (hi]hj]hk]hl]hm]uhujy hn]r jA )r }r (hfUhg}r (U anchornameUUrefurijkhm]hk]hi]hj]hl]Uinternaluhuj} hn]r hpX%circuits.web.websockets.client moduler r }r (hfjshuj ubahvjI ubahvjJ ubahvjK ubahvjL ubjtj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r (j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameUUrefurijthm]hk]hi]hj]hl]Uinternaluhuj hn]r hpX Installingr r }r (hfj|huj ubahvjI ubahvjJ ubj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r (j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameU!#installing-from-a-source-packageUrefurijthm]hk]hi]hj]hl]Uinternaluhuj hn]r hpX Installing from a Source Packager r }r (hfX Installing from a Source Packagehuj ubahvjI ubahvjJ ubahvjK ubj7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameU+#installing-from-the-development-repositoryUrefurijthm]hk]hi]hj]hl]Uinternaluhuj hn]r hpX*Installing from the Development Repositoryr r }r (hfX*Installing from the Development Repositoryhuj ubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubj}j2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r (j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameUUrefurij}hm]hk]hi]hj]hl]Uinternaluhuj hn]r hpXRoad Mapr r }r (hfjhuj ubahvjI ubahvjJ ubj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameU #circuits-3-1Urefurij}hm]hk]hi]hj]hl]Uinternaluhuj hn]r hpX circuits 3.1r r }r (hfX circuits 3.1huj ubahvjI ubahvjJ ubahvjK ubahvjL ubehvjK ubahvjL ubhj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r (j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r jA )r }r (hfUhg}r (U anchornameUUrefurihhm]hk]hi]hj]hl]Uinternaluhuj hn]r hpXHandlersr r }r (hfjhuj ubahvjI ubahvjJ ubj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r (j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j< )r }r (hfUhg}r(hi]hj]hk]hl]hm]uhuj hn]rjA )r}r(hfUhg}r(U anchornameU#explicit-event-handlersUrefurihhm]hk]hi]hj]hl]Uinternaluhuj hn]rhpXExplicit Event Handlersrr}r(hfXExplicit Event HandlershujubahvjI ubahvjJ ubahvjK ubj7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhuj hn]r j< )r }r(hfUhg}r(hi]hj]hk]hl]hm]uhuj hn]rjA )r}r(hfUhg}r(U anchornameU#implicit-event-handlersUrefurihhm]hk]hi]hj]hl]Uinternaluhuj hn]rhpXImplicit Event Handlersrr}r(hfXImplicit Event HandlershujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j< )r }r!(hfUhg}r"(hi]hj]hk]hl]hm]uhujhn]r#jA )r$}r%(hfUhg}r&(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhuj hn]r'hpXManagerr(r)}r*(hfjhuj$ubahvjI ubahvjJ ubj2 )r+}r,(hfUhg}r-(hi]hj]hk]hl]hm]uhujhn]r.j7 )r/}r0(hfUhg}r1(hi]hj]hk]hl]hm]uhuj+hn]r2j< )r3}r4(hfUhg}r5(hi]hj]hk]hl]hm]uhuj/hn]r6jA )r7}r8(hfUhg}r9(U anchornameU#usageUrefurijhm]hk]hi]hj]hl]Uinternaluhuj3hn]r:hpXUsager;r<}r=(hfXUsagehuj7ubahvjI ubahvjJ ubahvjK ubahvjL ubehvjK ubahvjL ubjj2 )r>}r?(hfUhg}r@(hi]hj]hk]hl]hm]uhn]rAj7 )rB}rC(hfUhg}rD(hi]hj]hk]hl]hm]uhuj>hn]rEj< )rF}rG(hfUhg}rH(hi]hj]hk]hl]hm]uhujBhn]rIjA )rJ}rK(hfUhg}rL(U anchornameUUrefurijhm]hk]hi]hj]hl]UinternaluhujFhn]rMhpXDocumentation TODOrNrO}rP(hfjhujJubahvjI ubahvjJ ubahvjK ubahvjL ubhj2 )rQ}rR(hfUhg}rS(hi]hj]hk]hl]hm]uhn]rTj7 )rU}rV(hfUhg}rW(hi]hj]hk]hl]hm]uhujQhn]rX(j< )rY}rZ(hfUhg}r[(hi]hj]hk]hl]hm]uhujUhn]r\jA )r]}r^(hfUhg}r_(U anchornameUUrefurihhm]hk]hi]hj]hl]UinternaluhujYhn]r`(hpX circuits rarb}rc(hfjhuj]ubhpX3.1rdre}rf(hfjhuj]ubhpX Documentationrgrh}ri(hfjhuj]ubehvjI ubahvjJ ubj2 )rj}rk(hfUhg}rl(hi]hj]hk]hl]hm]uhujUhn]rm(j7 )rn}ro(hfUhg}rp(hi]hj]hk]hl]hm]uhujjhn]rq(j< )rr}rs(hfUhg}rt(hi]hj]hk]hl]hm]uhujnhn]rujA )rv}rw(hfUhg}rx(U anchornameU#aboutUrefurihhm]hk]hi]hj]hl]Uinternaluhujrhn]ryhpXAboutrzr{}r|(hfXAbouthujvubahvjI ubahvjJ ubj2 )r}}r~(hfUhg}r(hi]hj]hk]hl]hm]uhujnhn]r(j7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj}hn]r(j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #examplesUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXExamplesrr}r(hfXExampleshujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#helloUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXHellorr}r(hfXHellohujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #echo-serverUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX Echo Serverrr}r(hfX Echo ServerhujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #hello-webUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX Hello Webrr}r(hfX Hello WebhujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj}hn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #featuresUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXFeaturesrr}r(hfXFeatureshujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj}hn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #requirementsUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX Requirementsrr}r(hfX RequirementshujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj}hn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#supported-platformsUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXSupported Platformsrr}r(hfXSupported PlatformshujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj}hn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #installationUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX Installationrr}r(hfX InstallationhujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj}hn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#licenseUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXLicenser r }r (hfXLicensehujubahvjI ubahvjJ ubahvjK ubj7 )r }r (hfUhg}r(hi]hj]hk]hl]hm]uhuj}hn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj hn]rjA )r}r(hfUhg}r(U anchornameU #feedbackUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXFeedbackrr}r(hfXFeedbackhujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj}hn]rj< )r}r (hfUhg}r!(hi]hj]hk]hl]hm]uhujhn]r"jA )r#}r$(hfUhg}r%(U anchornameU #communityUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]r&hpX Communityr'r(}r)(hfX Communityhuj#ubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubj7 )r*}r+(hfUhg}r,(hi]hj]hk]hl]hm]uhujjhn]r-(j< )r.}r/(hfUhg}r0(hi]hj]hk]hl]hm]uhuj*hn]r1jA )r2}r3(hfUhg}r4(U anchornameU#documentationUrefurihhm]hk]hi]hj]hl]Uinternaluhuj.hn]r5hpX Documentationr6r7}r8(hfX Documentationhuj2ubahvjI ubahvjJ ubj2 )r9}r:(hfUhg}r;(hi]hj]hk]hl]hm]uhuj*hn]r<(j )r=}r>(hfUhg}r?(UnumberedKUparenthU titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]r@(Nj rANj rBNj rCNj rDNj rENj rFNj rGNj rHNj rINj rJeUhiddenUmaxdepthKU includefiles]rK(j j j j j j j j j j ehl]uhuj9hn]hvj ubj )rL}rM(hfUhg}rN(UnumberedKUparenthU titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]rO(Nj rPNj rQeUhiddenUmaxdepthJU includefiles]rR(j j ehl]uhuj9hn]hvj ubj )rS}rT(hfUhg}rU(UnumberedKUparenthU titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]rV(Nj rWNj rXeUhiddenUmaxdepthJU includefiles]rY(j j ehl]uhuj9hn]hvj ubehvjL ubehvjK ubj7 )rZ}r[(hfUhg}r\(hi]hj]hk]hl]hm]uhujjhn]r]j< )r^}r_(hfUhg}r`(hi]hj]hk]hl]hm]uhujZhn]rajA )rb}rc(hfUhg}rd(U anchornameU#indices-and-tablesUrefurihhm]hk]hi]hj]hl]Uinternaluhuj^hn]rehpXIndices and tablesrfrg}rh(hfXIndices and tableshujbubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubjj2 )ri}rj(hfUhg}rk(hi]hj]hk]hl]hm]uhn]rlj7 )rm}rn(hfUhg}ro(hi]hj]hk]hl]hm]uhujihn]rp(j< )rq}rr(hfUhg}rs(hi]hj]hk]hl]hm]uhujmhn]rtjA )ru}rv(hfUhg}rw(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujqhn]rxhpXContributing to circuitsryrz}r{(hfjhujuubahvjI ubahvjJ ubj2 )r|}r}(hfUhg}r~(hi]hj]hk]hl]hm]uhujmhn]r(j7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj|hn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#share-your-storyUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXShare your storyrr}r(hfXShare your storyhujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj|hn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#submitting-bug-reportsUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXSubmitting Bug Reportsrr}r(hfXSubmitting Bug ReportshujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj|hn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#writing-new-testsUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXWriting new testsrr}r(hfXWriting new testshujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj|hn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#adding-new-featuresUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXAdding New Featuresrr}r(hfXAdding New FeatureshujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.web.constants modulerr}r(hfjhujubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits Tutorialsrr}r(hfjhujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj )r}r(hfUhg}r(UnumberedKUparentjU titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]r(Nj rNj reUhiddenUmaxdepthKU includefiles]r(j j ehl]uhujhn]hvj ubahvjL ubehvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.web.servers modulerr}r(hfjhujubahvjI ubahvjJ ubahvjK ubahvjL ubhj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j< )r}r (hfUhg}r (hi]hj]hk]hl]hm]uhujhn]r jA )r }r (hfUhg}r(U anchornameUUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXPyPi README Pagerr}r(hfjhuj ubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r (hfUhg}r!(U anchornameU #examplesUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]r"hpXExamplesr#r$}r%(hfXExampleshujubahvjI ubahvjJ ubj2 )r&}r'(hfUhg}r((hi]hj]hk]hl]hm]uhujhn]r)(j7 )r*}r+(hfUhg}r,(hi]hj]hk]hl]hm]uhuj&hn]r-j< )r.}r/(hfUhg}r0(hi]hj]hk]hl]hm]uhuj*hn]r1jA )r2}r3(hfUhg}r4(U anchornameU#helloUrefurihhm]hk]hi]hj]hl]Uinternaluhuj.hn]r5hpXHellor6r7}r8(hfXHellohuj2ubahvjI ubahvjJ ubahvjK ubj7 )r9}r:(hfUhg}r;(hi]hj]hk]hl]hm]uhuj&hn]r<j< )r=}r>(hfUhg}r?(hi]hj]hk]hl]hm]uhuj9hn]r@jA )rA}rB(hfUhg}rC(U anchornameU #echo-serverUrefurihhm]hk]hi]hj]hl]Uinternaluhuj=hn]rDhpX Echo ServerrErF}rG(hfX Echo ServerhujAubahvjI ubahvjJ ubahvjK ubj7 )rH}rI(hfUhg}rJ(hi]hj]hk]hl]hm]uhuj&hn]rKj< )rL}rM(hfUhg}rN(hi]hj]hk]hl]hm]uhujHhn]rOjA )rP}rQ(hfUhg}rR(U anchornameU #hello-webUrefurihhm]hk]hi]hj]hl]UinternaluhujLhn]rShpX Hello WebrTrU}rV(hfX Hello WebhujPubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubj7 )rW}rX(hfUhg}rY(hi]hj]hk]hl]hm]uhujhn]rZj< )r[}r\(hfUhg}r](hi]hj]hk]hl]hm]uhujWhn]r^jA )r_}r`(hfUhg}ra(U anchornameU #featuresUrefurihhm]hk]hi]hj]hl]Uinternaluhuj[hn]rbhpXFeaturesrcrd}re(hfXFeatureshuj_ubahvjI ubahvjJ ubahvjK ubj7 )rf}rg(hfUhg}rh(hi]hj]hk]hl]hm]uhujhn]rij< )rj}rk(hfUhg}rl(hi]hj]hk]hl]hm]uhujfhn]rmjA )rn}ro(hfUhg}rp(U anchornameU #requirementsUrefurihhm]hk]hi]hj]hl]Uinternaluhujjhn]rqhpX Requirementsrrrs}rt(hfX RequirementshujnubahvjI ubahvjJ ubahvjK ubj7 )ru}rv(hfUhg}rw(hi]hj]hk]hl]hm]uhujhn]rxj< )ry}rz(hfUhg}r{(hi]hj]hk]hl]hm]uhujuhn]r|jA )r}}r~(hfUhg}r(U anchornameU#supported-platformsUrefurihhm]hk]hi]hj]hl]Uinternaluhujyhn]rhpXSupported Platformsrr}r(hfXSupported Platformshuj}ubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #installationUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX Installationrr}r(hfX InstallationhujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#licenseUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXLicenserr}r(hfXLicensehujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #feedbackUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXFeedbackrr}r(hfXFeedbackhujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #communityUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX Communityrr}r(hfX CommunityhujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX&circuits.web.dispatchers.static modulerr}r(hfjhujubahvjI ubahvjJ ubahvjK ubahvjL ubh^j2 )r}r(hfUhg}r(j]j]j]j]j]uhn]rj7 )r}r(hfUhg}r(j]j]j]j]j]uhujhn]r(j< )r}r(hfUhg}r(j]j]j]j]j]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurih^j]j]j]j]j]Uinternaluhujhn]rhpXcircuits User Manualrr}r(hfjhujubahvU referencerubahvUcompact_paragraphrubj2 )r}r(hfUhg}r(j]j]j]j]j]uhujhn]r(j7 )r}r(hfUhg}r(j]j]j]j]j]uhujhn]r(j< )r}r(hfUhg}r(j]j]j]j]j]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #core-libraryUrefurih^j]j]j]j]j]Uinternaluhujhn]rhpX Core Libraryrr}r(hfX Core Libraryrhujubahvjubahvjubj2 )r}r(hfUhg}r(j]j]j]j]j]uhujhn]rj )r}r(hfUhg}r(UnumberedKUparenth^U titlesonlyUglobj]j]j]j]j]Uentries]r(Nj rNj rNj rNj rNj rNj r eUhiddenUmaxdepthKU includefiles]r (j j j j j j eU includehiddenuhujhn]hvUtoctreer ubahvU bullet_listr ubehvU list_itemr ubj7 )r}r(hfUhg}r(j]j]j]j]j]uhujhn]r(j< )r}r(hfUhg}r(j]j]j]j]j]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#miscellaneousUrefurih^j]j]j]j]j]Uinternaluhujhn]rhpX Miscellaneousrr}r(hfX Miscellaneousrhujubahvjubahvjubj2 )r}r(hfUhg}r (j]j]j]j]j]uhujhn]r!j )r"}r#(hfUhg}r$(UnumberedKUparenth^U titlesonlyUglobj]j]j]j]j]Uentries]r%Nj r&aUhiddenUmaxdepthKU includefiles]r'j aU includehiddenuhujhn]hvj ubahvj ubehvj ubehvj ubehvj ubahvj ubjj2 )r(}r)(hfUhg}r*(hi]hj]hk]hl]hm]uhn]r+j7 )r,}r-(hfUhg}r.(hi]hj]hk]hl]hm]uhuj(hn]r/j< )r0}r1(hfUhg}r2(hi]hj]hk]hl]hm]uhuj,hn]r3jA )r4}r5(hfUhg}r6(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhuj0hn]r7hpXcircuits.protocols.line moduler8r9}r:(hfjhuj4ubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r;}r<(hfUhg}r=(hi]hj]hk]hl]hm]uhn]r>j7 )r?}r@(hfUhg}rA(hi]hj]hk]hl]hm]uhuj;hn]rBj< )rC}rD(hfUhg}rE(hi]hj]hk]hl]hm]uhuj?hn]rFjA )rG}rH(hfUhg}rI(U anchornameUUrefurijhm]hk]hi]hj]hl]UinternaluhujChn]rJhpXcircuits.web.tools modulerKrL}rM(hfjhujGubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )rN}rO(hfUhg}rP(hi]hj]hk]hl]hm]uhn]rQj7 )rR}rS(hfUhg}rT(hi]hj]hk]hl]hm]uhujNhn]rUj< )rV}rW(hfUhg}rX(hi]hj]hk]hl]hm]uhujRhn]rYjA )rZ}r[(hfUhg}r\(U anchornameUUrefurijhm]hk]hi]hj]hl]UinternaluhujVhn]r]hpXcircuits.core.manager moduler^r_}r`(hfj hujZubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )ra}rb(hfUhg}rc(j]j]j]j]j]uhn]rd(j7 )re}rf(hfUhg}rg(j]j]j]j]j]uhujahn]rhj< )ri}rj(hfUhg}rk(j]j]j]j]j]uhujehn]rljA )rm}rn(hfUhg}ro(U anchornameUUrefurijj]j]j]j]j]Uinternaluhujihn]rphpXHellorqrr}rs(hfjhujmubahvjubahvjubahvj ubj7 )rt}ru(hfUhg}rv(j]j]j]j]j]uhujahn]rwj< )rx}ry(hfUhg}rz(j]j]j]j]j]uhujthn]r{jA )r|}r}(hfUhg}r~(U anchornameU #echo-serverUrefurijj]j]j]j]j]Uinternaluhujxhn]rhpX Echo Serverrr}r(hfX Echo Serverhuj|ubahvjubahvjubahvj ubj7 )r}r(hfUhg}r(j]j]j]j]j]uhujahn]rj< )r}r(hfUhg}r(j]j]j]j]j]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #hello-webUrefurijj]j]j]j]j]Uinternaluhujhn]rhpX Hello Webrr}r(hfX Hello Webhujubahvjubahvjubahvj ubehvj ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.node.utils modulerr}r(hfjhujubahvjI ubahvjJ ubahvjK ubahvjL ubj j2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurij hm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.node.client modulerr}r(hfj(hujubahvjI ubahvjJ ubahvjK ubahvjL ubj)j2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurij)hm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.web.parsers packagerr}r(hfj1hujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #submodulesUrefurij)hm]hk]hi]hj]hl]Uinternaluhujhn]rhpX Submodulesrr}r(hfX SubmoduleshujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj )r}r(hfUhg}r(UnumberedKUparentj)U titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]r(Nj rNj rNj reUhiddenUmaxdepthJU includefiles]r(j j j ehl]uhujhn]hvj ubahvjL ubehvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameX#module-circuits.web.parsersUrefurij)hm]hk]hi]hj]hl]Uinternaluhujhn]rhpXModule contentsrr}r(hfXModule contentshujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubj2j2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurij2hm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.io.file moduler r }r (hfj:hujubahvjI ubahvjJ ubahvjK ubahvjL ubj;j2 )r }r (hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj hn]r(j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurij;hm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.app packagerr}r(hfjChujubahvjI ubahvjJ ubj2 )r}r (hfUhg}r!(hi]hj]hk]hl]hm]uhujhn]r"(j7 )r#}r$(hfUhg}r%(hi]hj]hk]hl]hm]uhujhn]r&(j< )r'}r((hfUhg}r)(hi]hj]hk]hl]hm]uhuj#hn]r*jA )r+}r,(hfUhg}r-(U anchornameU #submodulesUrefurij;hm]hk]hi]hj]hl]Uinternaluhuj'hn]r.hpX Submodulesr/r0}r1(hfX Submoduleshuj+ubahvjI ubahvjJ ubj2 )r2}r3(hfUhg}r4(hi]hj]hk]hl]hm]uhuj#hn]r5j )r6}r7(hfUhg}r8(UnumberedKUparentj;U titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]r9Nj r:aUhiddenUmaxdepthJU includefiles]r;j ahl]uhuj2hn]hvj ubahvjL ubehvjK ubj7 )r<}r=(hfUhg}r>(hi]hj]hk]hl]hm]uhujhn]r?j< )r@}rA(hfUhg}rB(hi]hj]hk]hl]hm]uhuj<hn]rCjA )rD}rE(hfUhg}rF(U anchornameX#module-circuits.appUrefurij;hm]hk]hi]hj]hl]Uinternaluhuj@hn]rGhpXModule contentsrHrI}rJ(hfXModule contentshujDubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubjDj2 )rK}rL(hfUhg}rM(hi]hj]hk]hl]hm]uhn]rNj7 )rO}rP(hfUhg}rQ(hi]hj]hk]hl]hm]uhujKhn]rRj< )rS}rT(hfUhg}rU(hi]hj]hk]hl]hm]uhujOhn]rVjA )rW}rX(hfUhg}rY(U anchornameUUrefurijDhm]hk]hi]hj]hl]UinternaluhujShn]rZhpXcircuits.core.components moduler[r\}r](hfjLhujWubahvjI ubahvjJ ubahvjK ubahvjL ubjMj2 )r^}r_(hfUhg}r`(hi]hj]hk]hl]hm]uhn]raj7 )rb}rc(hfUhg}rd(hi]hj]hk]hl]hm]uhuj^hn]re(j< )rf}rg(hfUhg}rh(hi]hj]hk]hl]hm]uhujbhn]rijA )rj}rk(hfUhg}rl(U anchornameUUrefurijMhm]hk]hi]hj]hl]Uinternaluhujfhn]rmhpXcircuits.io packagernro}rp(hfjUhujjubahvjI ubahvjJ ubj2 )rq}rr(hfUhg}rs(hi]hj]hk]hl]hm]uhujbhn]rt(j7 )ru}rv(hfUhg}rw(hi]hj]hk]hl]hm]uhujqhn]rx(j< )ry}rz(hfUhg}r{(hi]hj]hk]hl]hm]uhujuhn]r|jA )r}}r~(hfUhg}r(U anchornameU #submodulesUrefurijMhm]hk]hi]hj]hl]Uinternaluhujyhn]rhpX Submodulesrr}r(hfX Submoduleshuj}ubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujuhn]rj )r}r(hfUhg}r(UnumberedKUparentjMU titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]r(Nj rNj rNj rNj rNj reUhiddenUmaxdepthJU includefiles]r(j j j j j ehl]uhujhn]hvj ubahvjL ubehvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujqhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameX#module-circuits.ioUrefurijMhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXModule contentsrr}r(hfXModule contentshujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubjVj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijVhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.node.node modulerr}r(hfj^hujubahvjI ubahvjJ ubahvjK ubahvjL ubj_j2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurij_hm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.web.controllers modulerr}r(hfjghujubahvjI ubahvjJ ubahvjK ubahvjL ubjhj2 )r}r(hfUhg}r(j]j]j]j]j]uhn]rj7 )r}r(hfUhg}r(j]j]j]j]j]uhujhn]r(j< )r}r(hfUhg}r(j]j]j]j]j]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhj]j]j]j]j]Uinternaluhujhn]rhpX Change Logrr}r(hfjphujubahvjubahvjubj2 )r}r(hfUhg}r(j]j]j]j]j]uhujhn]rj7 )r}r(hfUhg}r(j]j]j]j]j]uhujhn]rj< )r}r(hfUhg}r(j]j]j]j]j]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#older-change-logsUrefurijhj]j]j]j]j]Uinternaluhujhn]rhpXOlder Change Logsrr}r(hfXOlder Change Logsrhujubahvjubahvjubahvj ubahvj ubehvj ubahvj ubjqj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijqhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX*circuits.web.dispatchers.dispatcher modulerr}r(hfjyhujubahvjI ubahvjJ ubahvjK ubahvjL ubjzj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhujhn]r jA )r }r(hfUhg}r(U anchornameUUrefurijzhm]hk]hi]hj]hl]Uinternaluhuj hn]rhpXGetting Startedrr}r(hfjhuj ubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj )r}r(hfUhg}r(UnumberedKUparentjzU titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]r(Nj rNj rNj rNj reUhiddenUmaxdepthKU includefiles]r (j j j j ehl]uhujhn]hvj ubahvjL ubehvjK ubahvjL ubjj2 )r!}r"(hfUhg}r#(hi]hj]hk]hl]hm]uhn]r$j7 )r%}r&(hfUhg}r'(hi]hj]hk]hl]hm]uhuj!hn]r((j< )r)}r*(hfUhg}r+(hi]hj]hk]hl]hm]uhuj%hn]r,jA )r-}r.(hfUhg}r/(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhuj)hn]r0hpXcircuits packager1r2}r3(hfjhuj-ubahvjI ubahvjJ ubj2 )r4}r5(hfUhg}r6(hi]hj]hk]hl]hm]uhuj%hn]r7(j7 )r8}r9(hfUhg}r:(hi]hj]hk]hl]hm]uhuj4hn]r;(j< )r<}r=(hfUhg}r>(hi]hj]hk]hl]hm]uhuj8hn]r?jA )r@}rA(hfUhg}rB(U anchornameU #subpackagesUrefurijhm]hk]hi]hj]hl]Uinternaluhuj<hn]rChpX SubpackagesrDrE}rF(hfX Subpackageshuj@ubahvjI ubahvjJ ubj2 )rG}rH(hfUhg}rI(hi]hj]hk]hl]hm]uhuj8hn]rJj )rK}rL(hfUhg}rM(UnumberedKUparentjU titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]rN(Nj rONj rPNj rQNj rRNj rSNj rTNj rUNj rVeUhiddenUmaxdepthJU includefiles]rW(j j j j j j j j ehl]uhujGhn]hvj ubahvjL ubehvjK ubj7 )rX}rY(hfUhg}rZ(hi]hj]hk]hl]hm]uhuj4hn]r[(j< )r\}r](hfUhg}r^(hi]hj]hk]hl]hm]uhujXhn]r_jA )r`}ra(hfUhg}rb(U anchornameU #submodulesUrefurijhm]hk]hi]hj]hl]Uinternaluhuj\hn]rchpX Submodulesrdre}rf(hfX Submoduleshuj`ubahvjI ubahvjJ ubj2 )rg}rh(hfUhg}ri(hi]hj]hk]hl]hm]uhujXhn]rjj )rk}rl(hfUhg}rm(UnumberedKUparentjU titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]rn(Nj roNj rpeUhiddenUmaxdepthJU includefiles]rq(j j ehl]uhujghn]hvj ubahvjL ubehvjK ubj7 )rr}rs(hfUhg}rt(hi]hj]hk]hl]hm]uhuj4hn]ruj< )rv}rw(hfUhg}rx(hi]hj]hk]hl]hm]uhujrhn]ryjA )rz}r{(hfUhg}r|(U anchornameX#module-circuitsUrefurijhm]hk]hi]hj]hl]Uinternaluhujvhn]r}hpXModule contentsr~r}r(hfXModule contentshujzubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.node packagerr}r(hfjhujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #submodulesUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX Submodulesrr}r(hfX SubmoduleshujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj )r}r(hfUhg}r(UnumberedKUparentjU titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]r(Nj rNj rNj rNj rNj reUhiddenUmaxdepthJU includefiles]r(j j j j j ehl]uhujhn]hvj ubahvjL ubehvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameX#module-circuits.nodeUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXModule contentsrr}r(hfXModule contentshujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXDevelopment Processesrr}r(hfjhujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU%#software-development-life-cycle-sdlcUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX&Software Development Life Cycle (SDLC)rr}r(hfX&Software Development Life Cycle (SDLC)hujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #bug-reportsUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX Bug Reportsrr}r(hfX Bug ReportshujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#feature-requestsUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXFeature Requestsrr}r(hfXFeature RequestshujubahvjI ubahvjJ ubahvjK ubj7 )r}r (hfUhg}r (hi]hj]hk]hl]hm]uhujhn]r j< )r }r (hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#writing-new-codeUrefurijhm]hk]hi]hj]hl]Uinternaluhuj hn]rhpXWriting new Coderr}r(hfXWriting new CodehujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r (hfUhg}r!(U anchornameU#running-the-testsUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]r"hpXRunning the Testsr#r$}r%(hfXRunning the TestshujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubjj2 )r&}r'(hfUhg}r((hi]hj]hk]hl]hm]uhn]r)j7 )r*}r+(hfUhg}r,(hi]hj]hk]hl]hm]uhuj&hn]r-j< )r.}r/(hfUhg}r0(hi]hj]hk]hl]hm]uhuj*hn]r1jA )r2}r3(hfUhg}r4(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhuj.hn]r5hpX Contributorsr6r7}r8(hfjhuj2ubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r9}r:(hfUhg}r;(hi]hj]hk]hl]hm]uhn]r<j7 )r=}r>(hfUhg}r?(hi]hj]hk]hl]hm]uhuj9hn]r@j< )rA}rB(hfUhg}rC(hi]hj]hk]hl]hm]uhuj=hn]rDjA )rE}rF(hfUhg}rG(U anchornameUUrefurijhm]hk]hi]hj]hl]UinternaluhujAhn]rHhpXcircuits.web.loggers modulerIrJ}rK(hfjhujEubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )rL}rM(hfUhg}rN(hi]hj]hk]hl]hm]uhn]rOj7 )rP}rQ(hfUhg}rR(hi]hj]hk]hl]hm]uhujLhn]rSj< )rT}rU(hfUhg}rV(hi]hj]hk]hl]hm]uhujPhn]rWjA )rX}rY(hfUhg}rZ(U anchornameUUrefurijhm]hk]hi]hj]hl]UinternaluhujThn]r[hpX'circuits.web.dispatchers.jsonrpc moduler\r]}r^(hfjhujXubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r_}r`(hfUhg}ra(hi]hj]hk]hl]hm]uhn]rbj7 )rc}rd(hfUhg}re(hi]hj]hk]hl]hm]uhuj_hn]rf(j< )rg}rh(hfUhg}ri(hi]hj]hk]hl]hm]uhujchn]rjjA )rk}rl(hfUhg}rm(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujghn]rnhpXDevelopment Introductionrorp}rq(hfjhujkubahvjI ubahvjJ ubj2 )rr}rs(hfUhg}rt(hi]hj]hk]hl]hm]uhujchn]ru(j7 )rv}rw(hfUhg}rx(hi]hj]hk]hl]hm]uhujrhn]ryj< )rz}r{(hfUhg}r|(hi]hj]hk]hl]hm]uhujvhn]r}jA )r~}r(hfUhg}r(U anchornameU#communicationUrefurijhm]hk]hi]hj]hl]Uinternaluhujzhn]rhpX Communicationrr}r(hfX Communicationhuj~ubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujrhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #standardsUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX Standardsrr}r(hfX StandardshujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujrhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#toolsUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXToolsrr}r(hfXToolshujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.core.workers modulerr}r(hfjhujubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.web.processors modulerr}r(hfjhujubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.web.errors modulerr}r(hfjhujubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.core.timers modulerr}r(hfjhujubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX Introductionrr}r(hfjhujubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r (j< )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhujhn]r jA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhuj hn]rhpXFeaturesrr}r(hfjhujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r jA )r!}r"(hfUhg}r#(U anchornameU#loggingUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]r$hpXLoggingr%r&}r'(hfXLogginghuj!ubahvjI ubahvjJ ubahvjK ubj7 )r(}r)(hfUhg}r*(hi]hj]hk]hl]hm]uhujhn]r+j< )r,}r-(hfUhg}r.(hi]hj]hk]hl]hm]uhuj(hn]r/jA )r0}r1(hfUhg}r2(U anchornameU#cookiesUrefurijhm]hk]hi]hj]hl]Uinternaluhuj,hn]r3hpXCookiesr4r5}r6(hfXCookieshuj0ubahvjI ubahvjJ ubahvjK ubj7 )r7}r8(hfUhg}r9(hi]hj]hk]hl]hm]uhujhn]r:(j< )r;}r<(hfUhg}r=(hi]hj]hk]hl]hm]uhuj7hn]r>jA )r?}r@(hfUhg}rA(U anchornameU #dispatchersUrefurijhm]hk]hi]hj]hl]Uinternaluhuj;hn]rBhpX DispatchersrCrD}rE(hfX Dispatchershuj?ubahvjI ubahvjJ ubj2 )rF}rG(hfUhg}rH(hi]hj]hk]hl]hm]uhuj7hn]rI(j7 )rJ}rK(hfUhg}rL(hi]hj]hk]hl]hm]uhujFhn]rMj< )rN}rO(hfUhg}rP(hi]hj]hk]hl]hm]uhujJhn]rQjA )rR}rS(hfUhg}rT(U anchornameU#staticUrefurijhm]hk]hi]hj]hl]UinternaluhujNhn]rUhpXStaticrVrW}rX(hfXStatichujRubahvjI ubahvjJ ubahvjK ubj7 )rY}rZ(hfUhg}r[(hi]hj]hk]hl]hm]uhujFhn]r\j< )r]}r^(hfUhg}r_(hi]hj]hk]hl]hm]uhujYhn]r`jA )ra}rb(hfUhg}rc(U anchornameU #dispatcherUrefurijhm]hk]hi]hj]hl]Uinternaluhuj]hn]rdhpX Dispatcherrerf}rg(hfX DispatcherhujaubahvjI ubahvjJ ubahvjK ubj7 )rh}ri(hfUhg}rj(hi]hj]hk]hl]hm]uhujFhn]rkj< )rl}rm(hfUhg}rn(hi]hj]hk]hl]hm]uhujhhn]rojA )rp}rq(hfUhg}rr(U anchornameU #virtualhostsUrefurijhm]hk]hi]hj]hl]Uinternaluhujlhn]rshpX VirtualHostsrtru}rv(hfX VirtualHostshujpubahvjI ubahvjJ ubahvjK ubj7 )rw}rx(hfUhg}ry(hi]hj]hk]hl]hm]uhujFhn]rzj< )r{}r|(hfUhg}r}(hi]hj]hk]hl]hm]uhujwhn]r~jA )r}r(hfUhg}r(U anchornameU#xmlrpcUrefurijhm]hk]hi]hj]hl]Uinternaluhuj{hn]rhpXXMLRPCrr}r(hfXXMLRPChujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujFhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#jsonrpcUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXJSONRPCrr}r(hfXJSONRPChujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#cachingUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXCachingrr}r(hfXCachinghujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #compressionUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX Compressionrr}r(hfX CompressionhujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#authenticationUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXAuthenticationrr}r(hfXAuthenticationhujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#session-handlingUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXSession Handlingrr}r(hfXSession HandlinghujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX How To Guidesrr}r(hfjhujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU!#how-do-i-use-a-templating-engineUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX!How Do I: Use a Templating Enginerr}r(hfX!How Do I: Use a Templating EnginehujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#example-using-makoUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXExample: Using Makorr}r (hfXExample: Using MakohujubahvjI ubahvjJ ubahvjK ubj7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhujhn]r j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj hn]rjA )r}r(hfUhg}r(U anchornameU#other-examplesUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXOther Examplesrr}r(hfXOther ExampleshujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r jA )r!}r"(hfUhg}r#(U anchornameU##how-do-i-integrate-with-a-databaseUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]r$hpX#How Do I: Integrate with a Databaser%r&}r'(hfX#How Do I: Integrate with a Databasehuj!ubahvjI ubahvjJ ubahvjK ubj7 )r(}r)(hfUhg}r*(hi]hj]hk]hl]hm]uhujhn]r+j< )r,}r-(hfUhg}r.(hi]hj]hk]hl]hm]uhuj(hn]r/jA )r0}r1(hfUhg}r2(U anchornameU#how-do-i-use-websocketsUrefurijhm]hk]hi]hj]hl]Uinternaluhuj,hn]r3hpXHow Do I: Use WebSocketsr4r5}r6(hfXHow Do I: Use WebSocketshuj0ubahvjI ubahvjJ ubahvjK ubj7 )r7}r8(hfUhg}r9(hi]hj]hk]hl]hm]uhujhn]r:j< )r;}r<(hfUhg}r=(hi]hj]hk]hl]hm]uhuj7hn]r>jA )r?}r@(hfUhg}rA(U anchornameU#how-do-i-build-a-simple-formUrefurijhm]hk]hi]hj]hl]Uinternaluhuj;hn]rBhpXHow do I: Build a Simple FormrCrD}rE(hfXHow do I: Build a Simple Formhuj?ubahvjI ubahvjJ ubahvjK ubj7 )rF}rG(hfUhg}rH(hi]hj]hk]hl]hm]uhujhn]rIj< )rJ}rK(hfUhg}rL(hi]hj]hk]hl]hm]uhujFhn]rMjA )rN}rO(hfUhg}rP(U anchornameU#how-do-i-upload-a-fileUrefurijhm]hk]hi]hj]hl]UinternaluhujJhn]rQhpXHow Do I: Upload a FilerRrS}rT(hfXHow Do I: Upload a FilehujNubahvjI ubahvjJ ubahvjK ubj7 )rU}rV(hfUhg}rW(hi]hj]hk]hl]hm]uhujhn]rXj< )rY}rZ(hfUhg}r[(hi]hj]hk]hl]hm]uhujUhn]r\jA )r]}r^(hfUhg}r_(U anchornameU*#how-do-i-integrate-with-wsgi-applicationsUrefurijhm]hk]hi]hj]hl]UinternaluhujYhn]r`hpX*How Do I: Integrate with WSGI Applicationsrarb}rc(hfX*How Do I: Integrate with WSGI Applicationshuj]ubahvjI ubahvjJ ubahvjK ubj7 )rd}re(hfUhg}rf(hi]hj]hk]hl]hm]uhujhn]rg(j< )rh}ri(hfUhg}rj(hi]hj]hk]hl]hm]uhujdhn]rkjA )rl}rm(hfUhg}rn(U anchornameU)#how-do-i-deploy-with-apache-and-mod-wsgiUrefurijhm]hk]hi]hj]hl]Uinternaluhujhhn]rohpX)How Do I: Deploy with Apache and mod_wsgirprq}rr(hfX)How Do I: Deploy with Apache and mod_wsgihujlubahvjI ubahvjJ ubj2 )rs}rt(hfUhg}ru(hi]hj]hk]hl]hm]uhujdhn]rv(j7 )rw}rx(hfUhg}ry(hi]hj]hk]hl]hm]uhujshn]rzj< )r{}r|(hfUhg}r}(hi]hj]hk]hl]hm]uhujwhn]r~jA )r}r(hfUhg}r(U anchornameU#configuring-apacheUrefurijhm]hk]hi]hj]hl]Uinternaluhuj{hn]rhpXConfiguring Apacherr}r(hfXConfiguring ApachehujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujshn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU.#running-your-application-with-apache-mod-wsgiUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX-Running your Application with Apache/mod_wsgirr}r(hfX-Running your Application with Apache/mod_wsgihujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubehvjL ubehvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.version modulerr}r(hfj hujubahvjI ubahvjJ ubahvjK ubahvjL ubj j2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurij hm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.core.pollers modulerr}r(hfjhujubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX#circuits.protocols.websocket modulerr}r(hfjhujubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXGlossaryrr}r(hfj$hujubahvjI ubahvjJ ubahvjK ubahvjL ubj%j2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurij%hm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.web.wrappers modulerr}r(hfj-hujubahvjI ubahvjJ ubahvjK ubahvjL ubj.j2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurij.hm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.web.main modulerr}r(hfj6hujubahvjI ubahvjJ ubahvjK ubahvjL ubh j2 )r}r(hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhujhn]r(j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj hn]rjA )r}r(hfUhg}r(U anchornameUUrefurih hm]hk]hi]hj]hl]Uinternaluhujhn]rhpXTutorialrr}r(hfj>hujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj hn]r(j7 )r}r(hfUhg}r (hi]hj]hk]hl]hm]uhujhn]r!j< )r"}r#(hfUhg}r$(hi]hj]hk]hl]hm]uhujhn]r%jA )r&}r'(hfUhg}r((U anchornameU #overviewUrefurih hm]hk]hi]hj]hl]Uinternaluhuj"hn]r)hpXOverviewr*r+}r,(hfXOverviewhuj&ubahvjI ubahvjJ ubahvjK ubj7 )r-}r.(hfUhg}r/(hi]hj]hk]hl]hm]uhujhn]r0j< )r1}r2(hfUhg}r3(hi]hj]hk]hl]hm]uhuj-hn]r4jA )r5}r6(hfUhg}r7(U anchornameU#the-componentUrefurih hm]hk]hi]hj]hl]Uinternaluhuj1hn]r8hpX The Componentr9r:}r;(hfX The Componenthuj5ubahvjI ubahvjJ ubahvjK ubj7 )r<}r=(hfUhg}r>(hi]hj]hk]hl]hm]uhujhn]r?j< )r@}rA(hfUhg}rB(hi]hj]hk]hl]hm]uhuj<hn]rCjA )rD}rE(hfUhg}rF(U anchornameU#event-handlersUrefurih hm]hk]hi]hj]hl]Uinternaluhuj@hn]rGhpXEvent HandlersrHrI}rJ(hfXEvent HandlershujDubahvjI ubahvjJ ubahvjK ubj7 )rK}rL(hfUhg}rM(hi]hj]hk]hl]hm]uhujhn]rNj< )rO}rP(hfUhg}rQ(hi]hj]hk]hl]hm]uhujKhn]rRjA )rS}rT(hfUhg}rU(U anchornameU#registering-componentsUrefurih hm]hk]hi]hj]hl]UinternaluhujOhn]rVhpXRegistering ComponentsrWrX}rY(hfXRegistering ComponentshujSubahvjI ubahvjJ ubahvjK ubj7 )rZ}r[(hfUhg}r\(hi]hj]hk]hl]hm]uhujhn]r]j< )r^}r_(hfUhg}r`(hi]hj]hk]hl]hm]uhujZhn]rajA )rb}rc(hfUhg}rd(U anchornameU#complex-componentsUrefurih hm]hk]hi]hj]hl]Uinternaluhuj^hn]rehpXComplex Componentsrfrg}rh(hfXComplex ComponentshujbubahvjI ubahvjJ ubahvjK ubj7 )ri}rj(hfUhg}rk(hi]hj]hk]hl]hm]uhujhn]rlj< )rm}rn(hfUhg}ro(hi]hj]hk]hl]hm]uhujihn]rpjA )rq}rr(hfUhg}rs(U anchornameU#component-inheritanceUrefurih hm]hk]hi]hj]hl]Uinternaluhujmhn]rthpXComponent Inheritancerurv}rw(hfXComponent InheritancehujqubahvjI ubahvjJ ubahvjK ubj7 )rx}ry(hfUhg}rz(hi]hj]hk]hl]hm]uhujhn]r{j< )r|}r}(hfUhg}r~(hi]hj]hk]hl]hm]uhujxhn]rjA )r}r(hfUhg}r(U anchornameU#component-channelsUrefurih hm]hk]hi]hj]hl]Uinternaluhuj|hn]rhpXComponent Channelsrr}r(hfXComponent ChannelshujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#event-objectsUrefurih hm]hk]hi]hj]hl]Uinternaluhujhn]rhpX Event Objectsrr}r(hfX Event ObjectshujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #the-debuggerUrefurih hm]hk]hi]hj]hl]Uinternaluhujhn]rhpX The Debuggerrr}r(hfX The DebuggerhujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubj?j2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurij?hm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.io.process modulerr}r(hfjGhujubahvjI ubahvjJ ubahvjK ubahvjL ubjHj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijHhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.node.server modulerr}r(hfjPhujubahvjI ubahvjJ ubahvjK ubahvjL ubjQj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijQhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX,circuits.web.dispatchers.virtualhosts modulerr}r(hfjYhujubahvjI ubahvjJ ubahvjK ubahvjL ubjZj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijZhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXQuick Start Guiderr}r(hfjbhujubahvjI ubahvjJ ubahvjK ubahvjL ubjcj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijchm]hk]hi]hj]hl]Uinternaluhujhn]rhpXToolsrr}r(hfjkhujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j7 )r}r (hfUhg}r (hi]hj]hk]hl]hm]uhujhn]r j< )r }r (hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#introspecting-your-applicationUrefurijchm]hk]hi]hj]hl]Uinternaluhuj hn]rhpXIntrospecting your Applicationrr}r(hfXIntrospecting your ApplicationhujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r (hfUhg}r!(U anchornameU7#displaying-a-visual-representation-of-your-applicationUrefurijchm]hk]hi]hj]hl]Uinternaluhujhn]r"hpX6Displaying a Visual Representation of your Applicationr#r$}r%(hfX6Displaying a Visual Representation of your ApplicationhujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubjlj2 )r&}r'(hfUhg}r((hi]hj]hk]hl]hm]uhn]r)j7 )r*}r+(hfUhg}r,(hi]hj]hk]hl]hm]uhuj&hn]r-(j< )r.}r/(hfUhg}r0(hi]hj]hk]hl]hm]uhuj*hn]r1jA )r2}r3(hfUhg}r4(U anchornameUUrefurijlhm]hk]hi]hj]hl]Uinternaluhuj.hn]r5hpXcircuits.web packager6r7}r8(hfjthuj2ubahvjI ubahvjJ ubj2 )r9}r:(hfUhg}r;(hi]hj]hk]hl]hm]uhuj*hn]r<(j7 )r=}r>(hfUhg}r?(hi]hj]hk]hl]hm]uhuj9hn]r@(j< )rA}rB(hfUhg}rC(hi]hj]hk]hl]hm]uhuj=hn]rDjA )rE}rF(hfUhg}rG(U anchornameU #subpackagesUrefurijlhm]hk]hi]hj]hl]UinternaluhujAhn]rHhpX SubpackagesrIrJ}rK(hfX SubpackageshujEubahvjI ubahvjJ ubj2 )rL}rM(hfUhg}rN(hi]hj]hk]hl]hm]uhuj=hn]rOj )rP}rQ(hfUhg}rR(UnumberedKUparentjlU titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]rS(Nj rTNj rUNj rVeUhiddenUmaxdepthJU includefiles]rW(j j j ehl]uhujLhn]hvj ubahvjL ubehvjK ubj7 )rX}rY(hfUhg}rZ(hi]hj]hk]hl]hm]uhuj9hn]r[(j< )r\}r](hfUhg}r^(hi]hj]hk]hl]hm]uhujXhn]r_jA )r`}ra(hfUhg}rb(U anchornameU #submodulesUrefurijlhm]hk]hi]hj]hl]Uinternaluhuj\hn]rchpX Submodulesrdre}rf(hfX Submoduleshuj`ubahvjI ubahvjJ ubj2 )rg}rh(hfUhg}ri(hi]hj]hk]hl]hm]uhujXhn]rjj )rk}rl(hfUhg}rm(UnumberedKUparentjlU titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]rn(Nj roNj rpNj rqNj rrNj! rsNj" rtNj# ruNj$ rvNj% rwNj& rxNj' ryNj( rzNj) r{Nj* r|Nj+ r}Nj, r~Nj- rNj. reUhiddenUmaxdepthJU includefiles]r(j j j j j! j" j# j$ j% j& j' j( j) j* j+ j, j- j. ehl]uhujghn]hvj ubahvjL ubehvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj9hn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameX#module-circuits.webUrefurijlhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXModule contentsrr}r(hfXModule contentshujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubh2j2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurih2hm]hk]hi]hj]hl]Uinternaluhujhn]rhpXEventsrr}r(hfj|hujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #basic-usageUrefurih2hm]hk]hi]hj]hl]Uinternaluhujhn]rhpX Basic usagerr}r(hfX Basic usagehujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #filteringUrefurih2hm]hk]hi]hj]hl]Uinternaluhujhn]rhpX Filteringrr}r(hfX FilteringhujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#events-as-result-collectorsUrefurih2hm]hk]hi]hj]hl]Uinternaluhujhn]rhpXEvents as result collectorsrr}r(hfXEvents as result collectorshujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#advanced-usageUrefurih2hm]hk]hi]hj]hl]Uinternaluhujhn]rhpXAdvanced usagerr}r(hfXAdvanced usagehujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubj}j2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurij}hm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.core.values modulerr}r(hfjhujubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.core.utils modulerr}r (hfjhujubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r }r (hfUhg}r (hi]hj]hk]hl]hm]uhn]r j7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj hn]r(j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXDebuggerrr}r(hfjhujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r (j7 )r!}r"(hfUhg}r#(hi]hj]hk]hl]hm]uhujhn]r$j< )r%}r&(hfUhg}r'(hi]hj]hk]hl]hm]uhuj!hn]r(jA )r)}r*(hfUhg}r+(U anchornameU#usageUrefurijhm]hk]hi]hj]hl]Uinternaluhuj%hn]r,hpXUsager-r.}r/(hfXUsagehuj)ubahvjI ubahvjJ ubahvjK ubj7 )r0}r1(hfUhg}r2(hi]hj]hk]hl]hm]uhujhn]r3j< )r4}r5(hfUhg}r6(hi]hj]hk]hl]hm]uhuj0hn]r7jA )r8}r9(hfUhg}r:(U anchornameU#sample-output-sUrefurijhm]hk]hi]hj]hl]Uinternaluhuj4hn]r;hpXSample Output(s)r<r=}r>(hfXSample Output(s)huj8ubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubjj2 )r?}r@(hfUhg}rA(hi]hj]hk]hl]hm]uhn]rBj7 )rC}rD(hfUhg}rE(hi]hj]hk]hl]hm]uhuj?hn]rF(j< )rG}rH(hfUhg}rI(hi]hj]hk]hl]hm]uhujChn]rJjA )rK}rL(hfUhg}rM(U anchornameUUrefurijhm]hk]hi]hj]hl]UinternaluhujGhn]rNhpXcircuits.tools packagerOrP}rQ(hfjhujKubahvjI ubahvjJ ubj2 )rR}rS(hfUhg}rT(hi]hj]hk]hl]hm]uhujChn]rUj7 )rV}rW(hfUhg}rX(hi]hj]hk]hl]hm]uhujRhn]rYj< )rZ}r[(hfUhg}r\(hi]hj]hk]hl]hm]uhujVhn]r]jA )r^}r_(hfUhg}r`(U anchornameX#module-circuits.toolsUrefurijhm]hk]hi]hj]hl]UinternaluhujZhn]rahpXModule contentsrbrc}rd(hfXModule contentshuj^ubahvjI ubahvjJ ubahvjK ubahvjL ubehvjK ubahvjL ubhj2 )re}rf(hfUhg}rg(hi]hj]hk]hl]hm]uhn]rhj7 )ri}rj(hfUhg}rk(hi]hj]hk]hl]hm]uhujehn]rl(j< )rm}rn(hfUhg}ro(hi]hj]hk]hl]hm]uhujihn]rpjA )rq}rr(hfUhg}rs(U anchornameUUrefurihhm]hk]hi]hj]hl]Uinternaluhujmhn]rthpXTelnet Tutorialrurv}rw(hfjhujqubahvjI ubahvjJ ubj2 )rx}ry(hfUhg}rz(hi]hj]hk]hl]hm]uhujihn]r{(j7 )r|}r}(hfUhg}r~(hi]hj]hk]hl]hm]uhujxhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj|hn]rjA )r}r(hfUhg}r(U anchornameU #overviewUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXOverviewrr}r(hfXOverviewhujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujxhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #componentsUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX Componentsrr}r(hfX ComponentshujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujxhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#designUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXDesignrr}r(hfXDesignhujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujxhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#implementationUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXImplementationrr}r(hfXImplementationhujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujxhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU #discussionUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX Discussionrr}r(hfX DiscussionhujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujxhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#testingUrefurihhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXTestingrr}r(hfXTestinghujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.web.wsgi modulerr}r(hfjhujubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX circuits.web.dispatchers packagerr}r(hfjhujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r (hfUhg}r (U anchornameU #submodulesUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]r hpX Submodulesr r }r(hfX SubmoduleshujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj )r}r(hfUhg}r(UnumberedKUparentjU titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]r(Nj rNj rNj rNj rNj reUhiddenUmaxdepthJU includefiles]r(j j j j j ehl]uhujhn]hvj ubahvjL ubehvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r j< )r!}r"(hfUhg}r#(hi]hj]hk]hl]hm]uhujhn]r$jA )r%}r&(hfUhg}r'(U anchornameX #module-circuits.web.dispatchersUrefurijhm]hk]hi]hj]hl]Uinternaluhuj!hn]r(hpXModule contentsr)r*}r+(hfXModule contentshuj%ubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubjj2 )r,}r-(hfUhg}r.(hi]hj]hk]hl]hm]uhn]r/j7 )r0}r1(hfUhg}r2(hi]hj]hk]hl]hm]uhuj,hn]r3j< )r4}r5(hfUhg}r6(hi]hj]hk]hl]hm]uhuj0hn]r7jA )r8}r9(hfUhg}r:(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhuj4hn]r;hpXcircuits.web.events moduler<r=}r>(hfjhuj8ubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r?}r@(hfUhg}rA(hi]hj]hk]hl]hm]uhn]rBj7 )rC}rD(hfUhg}rE(hi]hj]hk]hl]hm]uhuj?hn]rFj< )rG}rH(hfUhg}rI(hi]hj]hk]hl]hm]uhujChn]rJjA )rK}rL(hfUhg}rM(U anchornameUUrefurijhm]hk]hi]hj]hl]UinternaluhujGhn]rNhpXcircuits.protocols.irc modulerOrP}rQ(hfjhujKubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )rR}rS(hfUhg}rT(hi]hj]hk]hl]hm]uhn]rUj7 )rV}rW(hfUhg}rX(hi]hj]hk]hl]hm]uhujRhn]rYj< )rZ}r[(hfUhg}r\(hi]hj]hk]hl]hm]uhujVhn]r]jA )r^}r_(hfUhg}r`(U anchornameUUrefurijhm]hk]hi]hj]hl]UinternaluhujZhn]rahpXcircuits.net.sockets modulerbrc}rd(hfjhuj^ubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )re}rf(hfUhg}rg(hi]hj]hk]hl]hm]uhn]rhj7 )ri}rj(hfUhg}rk(hi]hj]hk]hl]hm]uhujehn]rl(j< )rm}rn(hfUhg}ro(hi]hj]hk]hl]hm]uhujihn]rpjA )rq}rr(hfUhg}rs(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujmhn]rthpX Componentsrurv}rw(hfjhujqubahvjI ubahvjJ ubj2 )rx}ry(hfUhg}rz(hi]hj]hk]hl]hm]uhujihn]r{(j7 )r|}r}(hfUhg}r~(hi]hj]hk]hl]hm]uhujxhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhuj|hn]rjA )r}r(hfUhg}r(U anchornameU#component-registrationUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXComponent Registrationrr}r(hfXComponent RegistrationhujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujxhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#unregistering-componentsUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXUnregistering Componentsrr}r(hfXUnregistering ComponentshujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujxhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#convenient-shorthand-formUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXConvenient Shorthand Formrr}r(hfXConvenient Shorthand FormhujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujxhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU"#implicit-component-registration-sUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpX"Implicit Component Registration(s)rr}r(hfX"Implicit Component Registration(s)hujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.protocols.http modulerr}r(hfjhujubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.web.url modulerr}r(hfjhujubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.web.client modulerr}r(hfjhujubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.web.sessions modulerr}r(hfjhujubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r (hfUhg}r (hi]hj]hk]hl]hm]uhujhn]r (j< )r }r (hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhuj hn]rhpXcircuits.core packagerr}r(hfj hujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j< )r}r (hfUhg}r!(hi]hj]hk]hl]hm]uhujhn]r"jA )r#}r$(hfUhg}r%(U anchornameU #submodulesUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]r&hpX Submodulesr'r(}r)(hfX Submoduleshuj#ubahvjI ubahvjJ ubj2 )r*}r+(hfUhg}r,(hi]hj]hk]hl]hm]uhujhn]r-j )r.}r/(hfUhg}r0(UnumberedKUparentjU titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]r1(Nj r2Nj r3Nj r4Nj r5Nj r6Nj r7Nj r8Nj r9Nj r:Nj r;Nj r<Nj r=Nj r>eUhiddenUmaxdepthJU includefiles]r?(j j j j j j j j j j j j j ehl]uhuj*hn]hvj ubahvjL ubehvjK ubj7 )r@}rA(hfUhg}rB(hi]hj]hk]hl]hm]uhujhn]rCj< )rD}rE(hfUhg}rF(hi]hj]hk]hl]hm]uhuj@hn]rGjA )rH}rI(hfUhg}rJ(U anchornameX#module-circuits.coreUrefurijhm]hk]hi]hj]hl]UinternaluhujDhn]rKhpXModule contentsrLrM}rN(hfXModule contentshujHubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubj j2 )rO}rP(hfUhg}rQ(hi]hj]hk]hl]hm]uhn]rRj7 )rS}rT(hfUhg}rU(hi]hj]hk]hl]hm]uhujOhn]rVj< )rW}rX(hfUhg}rY(hi]hj]hk]hl]hm]uhujShn]rZjA )r[}r\(hfUhg}r](U anchornameUUrefurij hm]hk]hi]hj]hl]UinternaluhujWhn]r^hpXcircuits.node.events moduler_r`}ra(hfjhuj[ubahvjI ubahvjJ ubahvjK ubahvjL ubjj2 )rb}rc(hfUhg}rd(hi]hj]hk]hl]hm]uhn]rej7 )rf}rg(hfUhg}rh(hi]hj]hk]hl]hm]uhujbhn]ri(j< )rj}rk(hfUhg}rl(hi]hj]hk]hl]hm]uhujfhn]rmjA )rn}ro(hfUhg}rp(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujjhn]rqhpXcircuits.web.websockets packagerrrs}rt(hfjhujnubahvjI ubahvjJ ubj2 )ru}rv(hfUhg}rw(hi]hj]hk]hl]hm]uhujfhn]rx(j7 )ry}rz(hfUhg}r{(hi]hj]hk]hl]hm]uhujuhn]r|(j< )r}}r~(hfUhg}r(hi]hj]hk]hl]hm]uhujyhn]rjA )r}r(hfUhg}r(U anchornameU #submodulesUrefurijhm]hk]hi]hj]hl]Uinternaluhuj}hn]rhpX Submodulesrr}r(hfX SubmoduleshujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujyhn]rj )r}r(hfUhg}r(UnumberedKUparentjU titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]r(Nj rNj reUhiddenUmaxdepthJU includefiles]r(j j ehl]uhujhn]hvj ubahvjL ubehvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujuhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameX#module-circuits.web.websocketsUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXModule contentsrr}r(hfXModule contentshujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubjj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurijhm]hk]hi]hj]hl]Uinternaluhujhn]rhpXcircuits.six modulerr}r(hfj&hujubahvjI ubahvjJ ubahvjK ubahvjL ubj'j2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurij'hm]hk]hi]hj]hl]Uinternaluhujhn]rhpX Miscellaneousrr}r(hfj/hujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#writing-toolsUrefurij'hm]hk]hi]hj]hl]Uinternaluhujhn]rhpX Writing Toolsrr}r(hfX Writing ToolshujubahvjI ubahvjJ ubahvjK ubj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameU#writing-dispatchersUrefurij'hm]hk]hi]hj]hl]Uinternaluhujhn]rhpXWriting Dispatchersrr}r(hfXWriting DispatchershujubahvjI ubahvjJ ubahvjK ubehvjL ubehvjK ubahvjL ubj0j2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhn]rj7 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]r(j< )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rjA )r}r(hfUhg}r(U anchornameUUrefurij0hm]hk]hi]hj]hl]Uinternaluhujhn]rhpXAPI Documentationrr}r(hfj8hujubahvjI ubahvjJ ubj2 )r}r(hfUhg}r(hi]hj]hk]hl]hm]uhujhn]rj )r}r(hfUhg}r(UnumberedKUparentj0U titlesonlyUglobhm]hk]hi]hj]U includehiddenUentries]r(NjrNj;rNhxrNjrNj9r NjDr Nj,r NjYr Nj#r NjGrNjBrNjrNj rNjrNjrNj}rNjrNjMrNj>rNj2rNhrNj?rNjbrNj5rNhrNjrNjrNj r Nj r!NjVr"NjHr#Njr$Nhr%Njr&Njr'Njr(Njr)Njr*Njr+Njr,Njlr-Njr.Njr/Nj_r0Njr1Njqr2Njr3Njr4NjQr5Njr6Njr7Njr8Nhۆr9Nhr:Njr;Njr<Nj.r=Nj)r>Njr?Nhr@NhbrANjrBNjrCNjrDNjrENjrFNh҆rGNjrHNjkrINhrJNj%rKNjrLeUhiddenUmaxdepthKU includefiles]rM(jj;hxjj9jDj,jYj#jGjBjj jjj}jjMj>j2hj?jbj5hjjj j jVjHjhjjjjjjjjljjj_jjqjjjQjjjhhjjj.j)jhhbjjjjjhjjkhj%jehl]uhujhn]hvj ubahvjL ubehvjK ubahvjL ubj9j2 )rN}rO(hfUhg}rP(hi]hj]hk]hl]hm]uhn]rQj7 )rR}rS(hfUhg}rT(hi]hj]hk]hl]hm]uhujNhn]rUj< )rV}rW(hfUhg}rX(hi]hj]hk]hl]hm]uhujRhn]rYjA )rZ}r[(hfUhg}r\(U anchornameUUrefurij9hm]hk]hi]hj]hl]UinternaluhujVhn]r]hpXcircuits.core.bridge moduler^r_}r`(hfjAhujZubahvjI ubahvjJ ubahvjK ubahvjL ubjBj2 )ra}rb(hfUhg}rc(hi]hj]hk]hl]hm]uhn]rdj7 )re}rf(hfUhg}rg(hi]hj]hk]hl]hm]uhujahn]rhj< )ri}rj(hfUhg}rk(hi]hj]hk]hl]hm]uhujehn]rljA )rm}rn(hfUhg}ro(U anchornameUUrefurijBhm]hk]hi]hj]hl]Uinternaluhujihn]rphpXcircuits.core.loader modulerqrr}rs(hfjJhujmubahvjI ubahvjJ ubahvjK ubahvjL ubuU indexentriesrt}ru(hb]rv((UsinglerwX)circuits.web.parsers.querystring (module)X'module-circuits.web.parsers.querystringUtrx(jwX<QueryStringToken (class in circuits.web.parsers.querystring)jUtry(jwXCARRAY (circuits.web.parsers.querystring.QueryStringToken attribute)j@Utrz(jwXDOBJECT (circuits.web.parsers.querystring.QueryStringToken attribute)jUtr{(jwXAKEY (circuits.web.parsers.querystring.QueryStringToken attribute)j+Utr|(jwX=QueryStringParser (class in circuits.web.parsers.querystring)jUtr}(jwXEprocess() (circuits.web.parsers.querystring.QueryStringParser method)j\Utr~(jwXCparse() (circuits.web.parsers.querystring.QueryStringParser method)jeUtr(jwXDtokens() (circuits.web.parsers.querystring.QueryStringParser method)jjUtrehx]r((jwXcircuits.app.daemon (module)Xmodule-circuits.app.daemonUtr(jwX(daemonize (class in circuits.app.daemon)jUtr(jwX.name (circuits.app.daemon.daemonize attribute)jUtr(jwX(deletepid (class in circuits.app.daemon)jUtr(jwX.name (circuits.app.daemon.deletepid attribute)jUtr(jwX'writepid (class in circuits.app.daemon)j Utr(jwX-name (circuits.app.daemon.writepid attribute)jUtr(jwX%Daemon (class in circuits.app.daemon)jUtr(jwX.channel (circuits.app.daemon.Daemon attribute)jUtr(jwX*init() (circuits.app.daemon.Daemon method)jUtr(jwX/deletepid() (circuits.app.daemon.Daemon method)jUtr(jwX.writepid() (circuits.app.daemon.Daemon method)jRUtr(jwX/daemonize() (circuits.app.daemon.Daemon method)j'Utr(jwX0registered() (circuits.app.daemon.Daemon method)j5Utr(jwX0on_started() (circuits.app.daemon.Daemon method)jUtreh]h]r((jwX+circuits.web.websockets.dispatcher (module)X)module-circuits.web.websockets.dispatcherUtr(jwXBWebSocketsDispatcher (class in circuits.web.websockets.dispatcher)jUtr(jwXKchannel (circuits.web.websockets.dispatcher.WebSocketsDispatcher attribute)jUtreh]r(jwXcircuits.protocols (module)Xmodule-circuits.protocolsUtrah]h]h]r((jwXcircuits.io.notify (module)Xmodule-circuits.io.notifyUtr(jwX$Notify (class in circuits.io.notify)jUtr(jwX-channel (circuits.io.notify.Notify attribute)joUtr(jwX-add_path() (circuits.io.notify.Notify method)jUtr(jwX0remove_path() (circuits.io.notify.Notify method)jUtreh]r(jwXcircuits.core.values (module)Xmodule-circuits.core.valuesUtrah]r((jwX'circuits.web.parsers.multipart (module)X%module-circuits.web.parsers.multipartUtr(jwX3MultiDict (class in circuits.web.parsers.multipart)jUtr(jwX8keys() (circuits.web.parsers.multipart.MultiDict method)jUtr(jwX:append() (circuits.web.parsers.multipart.MultiDict method)j^Utr(jwX;replace() (circuits.web.parsers.multipart.MultiDict method)j[Utr(jwX:getall() (circuits.web.parsers.multipart.MultiDict method)jUtr(jwX7get() (circuits.web.parsers.multipart.MultiDict method)j3Utr(jwX@iterallitems() (circuits.web.parsers.multipart.MultiDict method)jUtr(jwX0tob() (in module circuits.web.parsers.multipart)jLUtr(jwX6copy_file() (in module circuits.web.parsers.multipart)j$Utr(jwX9header_quote() (in module circuits.web.parsers.multipart)jUtr(jwX;header_unquote() (in module circuits.web.parsers.multipart)j#Utr(jwXAparse_options_header() (in module circuits.web.parsers.multipart)jUtr(jwXMultipartErrorjUtr(jwX9MultipartParser (class in circuits.web.parsers.multipart)jNUtr(jwX?parts() (circuits.web.parsers.multipart.MultipartParser method)jUtr(jwX=get() (circuits.web.parsers.multipart.MultipartParser method)jUtr(jwXAget_all() (circuits.web.parsers.multipart.MultipartParser method)j~Utr(jwX7MultipartPart (class in circuits.web.parsers.multipart)jKUtr(jwX<feed() (circuits.web.parsers.multipart.MultipartPart method)jwUtr(jwXDwrite_header() (circuits.web.parsers.multipart.MultipartPart method)jUtr(jwXBwrite_body() (circuits.web.parsers.multipart.MultipartPart method)jUtr(jwXEfinish_header() (circuits.web.parsers.multipart.MultipartPart method)jUtr(jwXCis_buffered() (circuits.web.parsers.multipart.MultipartPart method)jUtr(jwX>value (circuits.web.parsers.multipart.MultipartPart attribute)jrUtr(jwX?save_as() (circuits.web.parsers.multipart.MultipartPart method)jUtr(jwX<parse_form_data() (in module circuits.web.parsers.multipart)jLUtreh]h]r((jwXcircuits.web.utils (module)Xmodule-circuits.web.utilsUtr(jwX(average() (in module circuits.web.utils)jUtr(jwX)variance() (in module circuits.web.utils)j Utr(jwX'stddev() (in module circuits.web.utils)jUtr(jwX+parse_body() (in module circuits.web.utils)jjUtr(jwX)parse_qs() (in module circuits.web.utils)jUtr(jwX)dictform() (in module circuits.web.utils)jUtr(jwX)compress() (in module circuits.web.utils)jUtr(jwX+get_ranges() (in module circuits.web.utils)jUtr(jwX*IOrderedDict (class in circuits.web.utils)jUtr(jwX0clear() (circuits.web.utils.IOrderedDict method)jcUtr(jwX.get() (circuits.web.utils.IOrderedDict method)jUtr(jwX5setdefault() (circuits.web.utils.IOrderedDict method)jNUtr(jwX1update() (circuits.web.utils.IOrderedDict method)jUtr(jwX.pop() (circuits.web.utils.IOrderedDict method)jUtr(jwX/keys() (circuits.web.utils.IOrderedDict method)j%Utr(jwX1values() (circuits.web.utils.IOrderedDict method)jUtr(jwX0items() (circuits.web.utils.IOrderedDict method)jUtr(jwX2popitem() (circuits.web.utils.IOrderedDict method)jvUtr(jwX/copy() (circuits.web.utils.IOrderedDict method)jUtr(jwX9fromkeys() (circuits.web.utils.IOrderedDict class method)j Utr(jwX1is_ssl_handshake() (in module circuits.web.utils)jfUtreh]r((jwX circuits.web.exceptions (module)Xmodule-circuits.web.exceptionsUtr(jwX HTTPExceptionjMUtr(jwX6code (circuits.web.exceptions.HTTPException attribute)j9Utr(jwX=description (circuits.web.exceptions.HTTPException attribute)jUtr(jwX;traceback (circuits.web.exceptions.HTTPException attribute)jUtr(jwX6name (circuits.web.exceptions.HTTPException attribute)jUtr(jwX BadRequestjxUtr(jwX3code (circuits.web.exceptions.BadRequest attribute)jUtr(jwX:description (circuits.web.exceptions.BadRequest attribute)jOUtr(jwX UnicodeErrorjUtr(jwX UnauthorizedjrUtr(jwX5code (circuits.web.exceptions.Unauthorized attribute)jiUtr(jwX<description (circuits.web.exceptions.Unauthorized attribute)jUtr(jwX ForbiddenjzUtr(jwX2code (circuits.web.exceptions.Forbidden attribute)jUtr(jwX9description (circuits.web.exceptions.Forbidden attribute)jvUtr(jwXNotFoundjUtr(jwX1code (circuits.web.exceptions.NotFound attribute)jUtr(jwX8description (circuits.web.exceptions.NotFound attribute)j;Utr(jwXMethodNotAllowedjRUtr(jwX9code (circuits.web.exceptions.MethodNotAllowed attribute)jUtr(jwX NotAcceptablejYUtr(jwX6code (circuits.web.exceptions.NotAcceptable attribute)jUtr(jwX=description (circuits.web.exceptions.NotAcceptable attribute)j6Utr(jwXRequestTimeoutjUtr(jwX7code (circuits.web.exceptions.RequestTimeout attribute)jUtr(jwX>description (circuits.web.exceptions.RequestTimeout attribute)jqUtr(jwXGonejUtr(jwX-code (circuits.web.exceptions.Gone attribute)jUtr(jwX4description (circuits.web.exceptions.Gone attribute)jUtr(jwXLengthRequiredjUtr(jwX7code (circuits.web.exceptions.LengthRequired attribute)jUtr(jwX>description (circuits.web.exceptions.LengthRequired attribute)jUtr(jwXPreconditionFailedjUtr(jwX;code (circuits.web.exceptions.PreconditionFailed attribute)jHUtr(jwXBdescription (circuits.web.exceptions.PreconditionFailed attribute)jUtr(jwXRequestEntityTooLargejzUtr(jwX>code (circuits.web.exceptions.RequestEntityTooLarge attribute)j0Utr(jwXEdescription (circuits.web.exceptions.RequestEntityTooLarge attribute)jUtr(jwXRequestURITooLargejUtr(jwX;code (circuits.web.exceptions.RequestURITooLarge attribute)jUtr(jwXBdescription (circuits.web.exceptions.RequestURITooLarge attribute)jUtr(jwXUnsupportedMediaTypejUtr(jwX=code (circuits.web.exceptions.UnsupportedMediaType attribute)jUtr(jwXDdescription (circuits.web.exceptions.UnsupportedMediaType attribute)jUtr(jwXRangeUnsatisfiablejUtr(jwX;code (circuits.web.exceptions.RangeUnsatisfiable attribute)j8Utr(jwXBdescription (circuits.web.exceptions.RangeUnsatisfiable attribute)jUtr(jwXInternalServerErrorj`Utr(jwX<code (circuits.web.exceptions.InternalServerError attribute)jUtr(jwXCdescription (circuits.web.exceptions.InternalServerError attribute)jUtr(jwXNotImplementedjUtr(jwX7code (circuits.web.exceptions.NotImplemented attribute)jUtr(jwX>description (circuits.web.exceptions.NotImplemented attribute)jnUtr(jwX BadGatewayjrUtr (jwX3code (circuits.web.exceptions.BadGateway attribute)jUtr (jwX:description (circuits.web.exceptions.BadGateway attribute)jrUtr (jwXServiceUnavailablejUtr (jwX;code (circuits.web.exceptions.ServiceUnavailable attribute)jUtr (jwXBdescription (circuits.web.exceptions.ServiceUnavailable attribute)jUtr(jwXRedirectjUtr(jwX1code (circuits.web.exceptions.Redirect attribute)jUtreh]r((jwXcircuits.net.events (module)Xmodule-circuits.net.eventsUtr(jwX&connect (class in circuits.net.events)jUtr(jwX,name (circuits.net.events.connect attribute)jUtr(jwX)disconnect (class in circuits.net.events)j:Utr(jwX/name (circuits.net.events.disconnect attribute)jUtr(jwX(connected (class in circuits.net.events)jUtr(jwX.name (circuits.net.events.connected attribute)jUtr(jwX+disconnected (class in circuits.net.events)jpUtr(jwX1name (circuits.net.events.disconnected attribute)jUtr(jwX#read (class in circuits.net.events)jUtr(jwX)name (circuits.net.events.read attribute)jUtr(jwX$error (class in circuits.net.events)jUtr(jwX*name (circuits.net.events.error attribute)jUtr(jwX(broadcast (class in circuits.net.events)jUtr(jwX.name (circuits.net.events.broadcast attribute)jUtr (jwX$write (class in circuits.net.events)jUtr!(jwX*name (circuits.net.events.write attribute)jUtr"(jwX$close (class in circuits.net.events)jUtr#(jwX*name (circuits.net.events.close attribute)j$Utr$(jwX$ready (class in circuits.net.events)jyUtr%(jwX*name (circuits.net.events.ready attribute)jUtr&(jwX%closed (class in circuits.net.events)jsUtr'(jwX+name (circuits.net.events.closed attribute)jUtr(eh]r)((jwXcircuits.web.headers (module)Xmodule-circuits.web.headersUtr*(jwX2header_elements() (in module circuits.web.headers)jUtr+(jwX-HeaderElement (class in circuits.web.headers)jUtr,(jwX:parse() (circuits.web.headers.HeaderElement static method)jUtr-(jwX<from_str() (circuits.web.headers.HeaderElement class method)jAUtr.(jwX-AcceptElement (class in circuits.web.headers)jUtr/(jwX<from_str() (circuits.web.headers.AcceptElement class method)jUtr0(jwX5qvalue (circuits.web.headers.AcceptElement attribute)jUtr1(jwX3CaseInsensitiveDict (class in circuits.web.headers)jUtr2(jwX7get() (circuits.web.headers.CaseInsensitiveDict method)jUtr3(jwX:update() (circuits.web.headers.CaseInsensitiveDict method)j1Utr4(jwXBfromkeys() (circuits.web.headers.CaseInsensitiveDict class method)jcUtr5(jwX>setdefault() (circuits.web.headers.CaseInsensitiveDict method)jUtr6(jwX7pop() (circuits.web.headers.CaseInsensitiveDict method)jUtr7(jwX'Headers (class in circuits.web.headers)j`Utr8(jwX0elements() (circuits.web.headers.Headers method)jUtr9(jwX/get_all() (circuits.web.headers.Headers method)j7Utr:(jwX.append() (circuits.web.headers.Headers method)jUtr;(jwX2add_header() (circuits.web.headers.Headers method)jUtr<eh]h]j]r=((jwX"circuits.web.parsers.http (module)X module-circuits.web.parsers.httpUtr>(jwXInvalidRequestLinejjUtr?(jwX InvalidHeaderjtUtr@(jwXInvalidChunkSizejUtrA(jwX/HttpParser (class in circuits.web.parsers.http)jQUtrB(jwX;get_version() (circuits.web.parsers.http.HttpParser method)jUtrC(jwX:get_method() (circuits.web.parsers.http.HttpParser method)jUtrD(jwX?get_status_code() (circuits.web.parsers.http.HttpParser method)jFUtrE(jwX7get_url() (circuits.web.parsers.http.HttpParser method)jUtrF(jwX:get_scheme() (circuits.web.parsers.http.HttpParser method)j]UtrG(jwX8get_path() (circuits.web.parsers.http.HttpParser method)jUtrH(jwX@get_query_string() (circuits.web.parsers.http.HttpParser method)jUtrI(jwX;get_headers() (circuits.web.parsers.http.HttpParser method)jUtrJ(jwX9recv_body() (circuits.web.parsers.http.HttpParser method)jUtrK(jwX>recv_body_into() (circuits.web.parsers.http.HttpParser method)jDUtrL(jwX:is_upgrade() (circuits.web.parsers.http.HttpParser method)j~UtrM(jwXCis_headers_complete() (circuits.web.parsers.http.HttpParser method)j=UtrN(jwX?is_partial_body() (circuits.web.parsers.http.HttpParser method)jUtrO(jwX@is_message_begin() (circuits.web.parsers.http.HttpParser method)jUtrP(jwXCis_message_complete() (circuits.web.parsers.http.HttpParser method)jUtrQ(jwX:is_chunked() (circuits.web.parsers.http.HttpParser method)jYUtrR(jwXAshould_keep_alive() (circuits.web.parsers.http.HttpParser method)jUtrS(jwX7execute() (circuits.web.parsers.http.HttpParser method)jMUtrTej]rU((jwXcircuits.web.http (module)Xmodule-circuits.web.httpUtrV(jwX!HTTP (class in circuits.web.http)jUtrW(jwX*channel (circuits.web.http.HTTP attribute)j>UtrX(jwX*version (circuits.web.http.HTTP attribute)jUtrY(jwX+protocol (circuits.web.http.HTTP attribute)jUtrZ(jwX)scheme (circuits.web.http.HTTP attribute)j)Utr[(jwX'base (circuits.web.http.HTTP attribute)jUtr\ej]r]((jwX(circuits.web.dispatchers.xmlrpc (module)X&module-circuits.web.dispatchers.xmlrpcUtr^(jwX.rpc (class in circuits.web.dispatchers.xmlrpc)jUtr_(jwX4name (circuits.web.dispatchers.xmlrpc.rpc attribute)jUtr`(jwX1XMLRPC (class in circuits.web.dispatchers.xmlrpc)jUtra(jwX:channel (circuits.web.dispatchers.xmlrpc.XMLRPC attribute)jUtrbej#]rc((jwXcircuits.core.handlers (module)Xmodule-circuits.core.handlersUtrd(jwX,handler() (in module circuits.core.handlers)jUtre(jwX)Unknown (class in circuits.core.handlers)jDUtrf(jwX0reprhandler() (in module circuits.core.handlers)jIUtrg(jwX2HandlerMetaClass (class in circuits.core.handlers)jUtrhej,]ri((jwXcircuits.core.debugger (module)Xmodule-circuits.core.debuggerUtrj(jwX*Debugger (class in circuits.core.debugger)jUtrk(jwX8IgnoreEvents (circuits.core.debugger.Debugger attribute)j}Utrl(jwX:IgnoreChannels (circuits.core.debugger.Debugger attribute)jUtrmej5]rn(jwXcircuits.net (module)Xmodule-circuits.netUtroaj>]rp((jwXcircuits.io.events (module)Xmodule-circuits.io.eventsUtrq(jwX!eof (class in circuits.io.events)j|Utrr(jwX'name (circuits.io.events.eof attribute)jjUtrs(jwX"seek (class in circuits.io.events)jUtrt(jwX(name (circuits.io.events.seek attribute)jUtru(jwX"read (class in circuits.io.events)jUtrv(jwX(name (circuits.io.events.read attribute)j'Utrw(jwX#close (class in circuits.io.events)jWUtrx(jwX)name (circuits.io.events.close attribute)jZUtry(jwX#write (class in circuits.io.events)j|Utrz(jwX)name (circuits.io.events.write attribute)jfUtr{(jwX#error (class in circuits.io.events)jUtr|(jwX)name (circuits.io.events.error attribute)jUtr}(jwX"open (class in circuits.io.events)jUtr~(jwX(name (circuits.io.events.open attribute)jyUtr(jwX$opened (class in circuits.io.events)jUtr(jwX*name (circuits.io.events.opened attribute)jUtr(jwX$closed (class in circuits.io.events)j Utr(jwX*name (circuits.io.events.closed attribute)jgUtr(jwX#ready (class in circuits.io.events)jUtr(jwX)name (circuits.io.events.ready attribute)jdUtr(jwX%started (class in circuits.io.events)jUtr(jwX+name (circuits.io.events.started attribute)jUtr(jwX%stopped (class in circuits.io.events)j0Utr(jwX+name (circuits.io.events.stopped attribute)jUtr(jwX#moved (class in circuits.io.events)jUtr(jwX)name (circuits.io.events.moved attribute)jUtr(jwX%created (class in circuits.io.events)jsUtr(jwX+name (circuits.io.events.created attribute)jUtr(jwX%deleted (class in circuits.io.events)jUtr(jwX+name (circuits.io.events.deleted attribute)jUtr(jwX&accessed (class in circuits.io.events)jUtr(jwX,name (circuits.io.events.accessed attribute)jUtr(jwX&modified (class in circuits.io.events)jUtr(jwX,name (circuits.io.events.modified attribute)jUtr(jwX'unmounted (class in circuits.io.events)jUtr(jwX-name (circuits.io.events.unmounted attribute)jUtrejG]r((jwXcircuits.core.helpers (module)Xmodule-circuits.core.helpersUtr(jwX2FallBackGenerator (class in circuits.core.helpers)jUtr(jwX9resume() (circuits.core.helpers.FallBackGenerator method)jUtr(jwX9FallBackExceptionHandler (class in circuits.core.helpers)jUtr(jwX6FallBackSignalHandler (class in circuits.core.helpers)jUtrejP]jY]r((jwXcircuits.core.events (module)Xmodule-circuits.core.eventsUtr(jwX)EventType (class in circuits.core.events)jUtr(jwX%Event (class in circuits.core.events)j>Utr(jwX/channels (circuits.core.events.Event attribute)j\Utr(jwX-parent (circuits.core.events.Event attribute)jlUtr(jwX-notify (circuits.core.events.Event attribute)jUtr(jwX.success (circuits.core.events.Event attribute)jUtr(jwX.failure (circuits.core.events.Event attribute)jUtr(jwX/complete (circuits.core.events.Event attribute)jUtr(jwX1alert_done (circuits.core.events.Event attribute)jUtr(jwX6waitingHandlers (circuits.core.events.Event attribute)j_Utr(jwX2create() (circuits.core.events.Event class method)jUtr(jwX+child() (circuits.core.events.Event method)jUtr(jwX+name (circuits.core.events.Event attribute)jVUtr(jwX,cancel() (circuits.core.events.Event method)jUtr(jwX*stop() (circuits.core.events.Event method)jUtr(jwX)exception (class in circuits.core.events)jUtr(jwX/name (circuits.core.events.exception attribute)jUtr(jwX'started (class in circuits.core.events)jxUtr(jwX-name (circuits.core.events.started attribute)jUtr(jwX'stopped (class in circuits.core.events)j9Utr(jwX-name (circuits.core.events.stopped attribute)jUUtr(jwX&signal (class in circuits.core.events)j{Utr(jwX,name (circuits.core.events.signal attribute)j+Utr(jwX*registered (class in circuits.core.events)j{Utr(jwX0name (circuits.core.events.registered attribute)jUtr(jwX,unregistered (class in circuits.core.events)jUtr(jwX2name (circuits.core.events.unregistered attribute)j,Utr(jwX/generate_events (class in circuits.core.events)jUtr(jwX:time_left (circuits.core.events.generate_events attribute)jUtr(jwX@reduce_time_left() (circuits.core.events.generate_events method)j6Utr(jwX5lock (circuits.core.events.generate_events attribute)j?Utr(jwX5name (circuits.core.events.generate_events attribute)jiUtrejb]r((jwXcircuits.io.serial (module)Xmodule-circuits.io.serialUtr(jwX$Serial (class in circuits.io.serial)jlUtr(jwX-channel (circuits.io.serial.Serial attribute)jUUtr(jwX*close() (circuits.io.serial.Serial method)j`Utr(jwX*write() (circuits.io.serial.Serial method)jUtrejk]r((jwX'circuits.web.websockets.client (module)X%module-circuits.web.websockets.clientUtr(jwX9WebSocketClient (class in circuits.web.websockets.client)jUtr(jwXBchannel (circuits.web.websockets.client.WebSocketClient attribute)j@Utr(jwX?close() (circuits.web.websockets.client.WebSocketClient method)jUtr(jwXDconnected (circuits.web.websockets.client.WebSocketClient attribute)jIUtrejt]j}]h]j]r(jwXcircuits.core.manager (module)Xmodule-circuits.core.managerUtraj]h]j]j]r(jwXcircuits.web.constants (module)Xmodule-circuits.web.constantsUtraj]j]r((jwXcircuits.web.servers (module)Xmodule-circuits.web.serversUtr(jwX*BaseServer (class in circuits.web.servers)jUtr(jwX3channel (circuits.web.servers.BaseServer attribute)jUtr(jwX0host (circuits.web.servers.BaseServer attribute)jUtr(jwX0port (circuits.web.servers.BaseServer attribute)jUtr(jwX2secure (circuits.web.servers.BaseServer attribute)j1Utr(jwX&Server (class in circuits.web.servers)jUtr(jwX(FakeSock (class in circuits.web.servers)jUtr(jwX4getpeername() (circuits.web.servers.FakeSock method)jyUtr(jwX+StdinServer (class in circuits.web.servers)jUtr(jwX4channel (circuits.web.servers.StdinServer attribute)jUtr(jwX1host (circuits.web.servers.StdinServer attribute)jUtr(jwX1port (circuits.web.servers.StdinServer attribute)j)Utr(jwX3secure (circuits.web.servers.StdinServer attribute)jUtr(jwX0read() (circuits.web.servers.StdinServer method)jyUtr(jwX1write() (circuits.web.servers.StdinServer method)jUtreh]j]r((jwX(circuits.web.dispatchers.static (module)X&module-circuits.web.dispatchers.staticUtr(jwX1Static (class in circuits.web.dispatchers.static)j:Utr(jwX:channel (circuits.web.dispatchers.static.Static attribute)jUtreh^]j]r((jwX circuits.protocols.line (module)Xmodule-circuits.protocols.lineUtr(jwX0splitLines() (in module circuits.protocols.line)jUtr(jwX'line (class in circuits.protocols.line)jUtr(jwX-name (circuits.protocols.line.line attribute)jUtr(jwX'Line (class in circuits.protocols.line)jwUtrej]r((jwXcircuits.web.tools (module)Xmodule-circuits.web.toolsUtr(jwX(expires() (in module circuits.web.tools)jUtr(jwX+serve_file() (in module circuits.web.tools)j=Utr(jwX/serve_download() (in module circuits.web.tools)jUtr(jwX/validate_etags() (in module circuits.web.tools)j3Utr(jwX/validate_since() (in module circuits.web.tools)j-Utr(jwX+check_auth() (in module circuits.web.tools)jUtr(jwX+basic_auth() (in module circuits.web.tools)jUtr(jwX,digest_auth() (in module circuits.web.tools)jUtr(jwX%gzip() (in module circuits.web.tools)jUtrej]r((jwXcircuits.core.manager (module)Xmodule-circuits.core.managerUtr(jwXUnregistrableErrorjRUtr(jwX TimeoutErrorj}Utr(jwX*CallValue (class in circuits.core.manager)jUtr(jwX1ExceptionWrapper (class in circuits.core.manager)jUtr(jwX9extract() (circuits.core.manager.ExceptionWrapper method)jCUtr(jwX(Manager (class in circuits.core.manager)jUtr(jwX.name (circuits.core.manager.Manager attribute)j#Utr(jwX1running (circuits.core.manager.Manager attribute)jUtr(jwX-pid (circuits.core.manager.Manager attribute)jUtr(jwX4getHandlers() (circuits.core.manager.Manager method)jUtr(jwX3addHandler() (circuits.core.manager.Manager method)j{Utr(jwX6removeHandler() (circuits.core.manager.Manager method)jUtr(jwX6registerChild() (circuits.core.manager.Manager method)jWUtr(jwX8unregisterChild() (circuits.core.manager.Manager method)jUtr(jwX2fireEvent() (circuits.core.manager.Manager method)j-Utr(jwX-fire() (circuits.core.manager.Manager method)j/Utr(jwX5registerTask() (circuits.core.manager.Manager method)j Utr(jwX7unregisterTask() (circuits.core.manager.Manager method)jUtr(jwX2waitEvent() (circuits.core.manager.Manager method)jUtr(jwX-wait() (circuits.core.manager.Manager method)j)Utr (jwX2callEvent() (circuits.core.manager.Manager method)jGUtr (jwX-call() (circuits.core.manager.Manager method)jbUtr (jwX4flushEvents() (circuits.core.manager.Manager method)jQUtr (jwX.flush() (circuits.core.manager.Manager method)jUtr (jwX.start() (circuits.core.manager.Manager method)jUtr(jwX-join() (circuits.core.manager.Manager method)j[Utr(jwX-stop() (circuits.core.manager.Manager method)jUtr(jwX4processTask() (circuits.core.manager.Manager method)jgUtr(jwX-tick() (circuits.core.manager.Manager method)jUtr(jwX,run() (circuits.core.manager.Manager method)jUtrej]j]r((jwXcircuits.node.utils (module)Xmodule-circuits.node.utilsUtr(jwX,load_event() (in module circuits.node.utils)j@Utr(jwX,dump_event() (in module circuits.node.utils)jUtr(jwX,dump_value() (in module circuits.node.utils)jwUtr(jwX,load_value() (in module circuits.node.utils)jEUtrej ]r((jwXcircuits.node.client (module)Xmodule-circuits.node.clientUtr(jwX&Client (class in circuits.node.client)jUtr(jwX/channel (circuits.node.client.Client attribute)jXUtr(jwX,close() (circuits.node.client.Client method)jUtr(jwX.connect() (circuits.node.client.Client method)jdUtr(jwX+send() (circuits.node.client.Client method)jUtr ej)]r!(jwXcircuits.web.parsers (module)Xmodule-circuits.web.parsersUtr"aj2]r#((jwXcircuits.io.file (module)Xmodule-circuits.io.fileUtr$(jwX File (class in circuits.io.file)j*Utr%(jwX)channel (circuits.io.file.File attribute)jUtr&(jwX%init() (circuits.io.file.File method)jUtr'(jwX(closed (circuits.io.file.File attribute)jUtr((jwX*filename (circuits.io.file.File attribute)jUtr)(jwX&mode (circuits.io.file.File attribute)jmUtr*(jwX&close() (circuits.io.file.File method)jUtr+(jwX%seek() (circuits.io.file.File method)jUtr,(jwX&write() (circuits.io.file.File method)j%Utr-ej;]r.((jwXcircuits.app (module)Xmodule-circuits.appUtr/(jwXDaemon (class in circuits.app)jUtr0(jwX'channel (circuits.app.Daemon attribute)j!Utr1(jwX(daemonize() (circuits.app.Daemon method)jGUtr2(jwX(deletepid() (circuits.app.Daemon method)jUtr3(jwX#init() (circuits.app.Daemon method)j1Utr4(jwX)on_started() (circuits.app.Daemon method)jaUtr5(jwX)registered() (circuits.app.Daemon method)jUtr6(jwX'writepid() (circuits.app.Daemon method)jUtr7ejD]r8((jwX!circuits.core.components (module)Xmodule-circuits.core.componentsUtr9(jwX6prepare_unregister (class in circuits.core.components)jUtr:(jwX@complete (circuits.core.components.prepare_unregister attribute)jiUtr;(jwXAin_subtree() (circuits.core.components.prepare_unregister method)jWUtr<(jwX<name (circuits.core.components.prepare_unregister attribute)jUtr=(jwX1BaseComponent (class in circuits.core.components)jUtr>(jwX:channel (circuits.core.components.BaseComponent attribute)jUtr?(jwX:register() (circuits.core.components.BaseComponent method)jJUtr@(jwX<unregister() (circuits.core.components.BaseComponent method)jUtrA(jwXEunregister_pending (circuits.core.components.BaseComponent attribute)jUtrB(jwX@handlers() (circuits.core.components.BaseComponent class method)jUtrC(jwX>events() (circuits.core.components.BaseComponent class method)jUtrD(jwX?handles() (circuits.core.components.BaseComponent class method)jYUtrE(jwX-Component (class in circuits.core.components)j+UtrFejM]rG(jwXcircuits.io (module)Xmodule-circuits.ioUtrHajV]rI((jwXcircuits.node.node (module)Xmodule-circuits.node.nodeUtrJ(jwX"Node (class in circuits.node.node)jUtrK(jwX+channel (circuits.node.node.Node attribute)j&UtrL(jwX&add() (circuits.node.node.Node method)jUtrMej_]rN((jwX!circuits.web.controllers (module)Xmodule-circuits.web.controllersUtrO(jwX-expose() (in module circuits.web.controllers)jUtrP(jwX3ExposeMetaClass (class in circuits.web.controllers)jUtrQ(jwX2BaseController (class in circuits.web.controllers)jUtrR(jwX;channel (circuits.web.controllers.BaseController attribute)jUtrS(jwX7uri (circuits.web.controllers.BaseController attribute)jUtrT(jwX<forbidden() (circuits.web.controllers.BaseController method)jUtrU(jwX;notfound() (circuits.web.controllers.BaseController method)jUtrV(jwX;redirect() (circuits.web.controllers.BaseController method)jUtrW(jwX=serve_file() (circuits.web.controllers.BaseController method)jXUtrX(jwXAserve_download() (circuits.web.controllers.BaseController method)jUtrY(jwX:expires() (circuits.web.controllers.BaseController method)jUtrZ(jwX.Controller (class in circuits.web.controllers)jUtr[(jwX1exposeJSON() (in module circuits.web.controllers)jUtr\(jwX7ExposeJSONMetaClass (class in circuits.web.controllers)jUtr](jwX2JSONController (class in circuits.web.controllers)jUtr^ejh]jq]r_((jwX,circuits.web.dispatchers.dispatcher (module)X*module-circuits.web.dispatchers.dispatcherUtr`(jwX>resolve_path() (in module circuits.web.dispatchers.dispatcher)jUtra(jwXAresolve_methods() (in module circuits.web.dispatchers.dispatcher)jUtrb(jwX?find_handlers() (in module circuits.web.dispatchers.dispatcher)jUtrc(jwX9Dispatcher (class in circuits.web.dispatchers.dispatcher)jUtrd(jwXBchannel (circuits.web.dispatchers.dispatcher.Dispatcher attribute)jUtreejz]j]rf(jwXcircuits (module)Xmodule-circuitsUtrgaj]rh(jwXcircuits.node (module)Xmodule-circuits.nodeUtriaj]j]j]rj((jwXcircuits.web.loggers (module)Xmodule-circuits.web.loggersUtrk(jwX-formattime() (in module circuits.web.loggers)j4Utrl(jwX&Logger (class in circuits.web.loggers)jUtrm(jwX/channel (circuits.web.loggers.Logger attribute)j?Utrn(jwX.format (circuits.web.loggers.Logger attribute)j&Utro(jwX3log_response() (circuits.web.loggers.Logger method)jUtrp(jwX*log() (circuits.web.loggers.Logger method)jUtrqej]rr((jwX)circuits.web.dispatchers.jsonrpc (module)X'module-circuits.web.dispatchers.jsonrpcUtrs(jwX/rpc (class in circuits.web.dispatchers.jsonrpc)jUtrt(jwX5name (circuits.web.dispatchers.jsonrpc.rpc attribute)jTUtru(jwX3JSONRPC (class in circuits.web.dispatchers.jsonrpc)jUtrv(jwX<channel (circuits.web.dispatchers.jsonrpc.JSONRPC attribute)jUtrwej]j]rx((jwXcircuits.core.workers (module)Xmodule-circuits.core.workersUtry(jwX%task (class in circuits.core.workers)jUtrz(jwX.success (circuits.core.workers.task attribute)jUtr{(jwX.failure (circuits.core.workers.task attribute)jUtr|(jwX+name (circuits.core.workers.task attribute)j4Utr}(jwX'Worker (class in circuits.core.workers)joUtr~(jwX0channel (circuits.core.workers.Worker attribute)jUtr(jwX,init() (circuits.core.workers.Worker method)jUtrej]r((jwX circuits.web.processors (module)Xmodule-circuits.web.processorsUtr(jwX7process_multipart() (in module circuits.web.processors)j4Utr(jwX8process_urlencoded() (in module circuits.web.processors)jUtr(jwX-process() (in module circuits.web.processors)jUtrej]r((jwXcircuits.web.errors (module)Xmodule-circuits.web.errorsUtr(jwX(httperror (class in circuits.web.errors)j#Utr(jwX5contenttype (circuits.web.errors.httperror attribute)jUtr(jwX.name (circuits.web.errors.httperror attribute)jvUtr(jwX.code (circuits.web.errors.httperror attribute)jUtr(jwX5description (circuits.web.errors.httperror attribute)jUtr(jwX1sanitize() (circuits.web.errors.httperror method)jkUtr(jwX(forbidden (class in circuits.web.errors)jZUtr(jwX.code (circuits.web.errors.forbidden attribute)j Utr(jwX.name (circuits.web.errors.forbidden attribute)jUtr(jwX+unauthorized (class in circuits.web.errors)jUtr(jwX1code (circuits.web.errors.unauthorized attribute)jUtr(jwX1name (circuits.web.errors.unauthorized attribute)jaUtr(jwX'notfound (class in circuits.web.errors)jUtr(jwX-code (circuits.web.errors.notfound attribute)juUtr(jwX-name (circuits.web.errors.notfound attribute)jUtr(jwX'redirect (class in circuits.web.errors)jUtr(jwX-name (circuits.web.errors.redirect attribute)jUtrej]r((jwXcircuits.core.timers (module)Xmodule-circuits.core.timersUtr(jwX%Timer (class in circuits.core.timers)jUtr(jwX+reset() (circuits.core.timers.Timer method)jUtr(jwX-expiry (circuits.core.timers.Timer attribute)jUtrej]j]r(jwXcircuits.web (module)Xmodule-circuits.webUtraj]r(jwXcircuits (module)Xmodule-circuitsUtraj]r(jwXcircuits.version (module)Xmodule-circuits.versionUtraj ]r((jwXcircuits.core.pollers (module)Xmodule-circuits.core.pollersUtr(jwX+BasePoller (class in circuits.core.pollers)j]Utr(jwX4channel (circuits.core.pollers.BasePoller attribute)jUtr(jwX2resume() (circuits.core.pollers.BasePoller method)jUtr(jwX5addReader() (circuits.core.pollers.BasePoller method)jUtr(jwX5addWriter() (circuits.core.pollers.BasePoller method)j;Utr(jwX8removeReader() (circuits.core.pollers.BasePoller method)j_Utr(jwX8removeWriter() (circuits.core.pollers.BasePoller method)jnUtr(jwX5isReading() (circuits.core.pollers.BasePoller method)jUtr(jwX5isWriting() (circuits.core.pollers.BasePoller method)jzUtr(jwX3discard() (circuits.core.pollers.BasePoller method)jUtr(jwX5getTarget() (circuits.core.pollers.BasePoller method)j<Utr(jwX'Select (class in circuits.core.pollers)jCUtr(jwX0channel (circuits.core.pollers.Select attribute)jUtr(jwX%Poll (class in circuits.core.pollers)jUtr(jwX.channel (circuits.core.pollers.Poll attribute)jUtr(jwX/addReader() (circuits.core.pollers.Poll method)jAUtr(jwX/addWriter() (circuits.core.pollers.Poll method)jXUtr(jwX2removeReader() (circuits.core.pollers.Poll method)jUtr(jwX2removeWriter() (circuits.core.pollers.Poll method)jUtr(jwX-discard() (circuits.core.pollers.Poll method)j|Utr(jwX&EPoll (class in circuits.core.pollers)jUtr(jwX/channel (circuits.core.pollers.EPoll attribute)jUtr(jwX0addReader() (circuits.core.pollers.EPoll method)jUtr(jwX0addWriter() (circuits.core.pollers.EPoll method)jUtr(jwX3removeReader() (circuits.core.pollers.EPoll method)jUtr(jwX3removeWriter() (circuits.core.pollers.EPoll method)jUtr(jwX.discard() (circuits.core.pollers.EPoll method)j.Utr(jwX'KQueue (class in circuits.core.pollers)jUtr(jwX0channel (circuits.core.pollers.KQueue attribute)jUtr(jwX1addReader() (circuits.core.pollers.KQueue method)j Utr(jwX1addWriter() (circuits.core.pollers.KQueue method)jUtr(jwX4removeReader() (circuits.core.pollers.KQueue method)jUtr(jwX4removeWriter() (circuits.core.pollers.KQueue method)j2Utr(jwX/discard() (circuits.core.pollers.KQueue method)jUtr(jwX(Poller (in module circuits.core.pollers)j.Utrej]r((jwX%circuits.protocols.websocket (module)X#module-circuits.protocols.websocketUtr(jwX6WebSocketCodec (class in circuits.protocols.websocket)jUtr(jwX?channel (circuits.protocols.websocket.WebSocketCodec attribute)jeUtrej]r(jwXVCSjeUmaintraj%]r((jwXcircuits.web.wrappers (module)Xmodule-circuits.web.wrappersUtr(jwX2file_generator() (in module circuits.web.wrappers)j0Utr(jwX%Host (class in circuits.web.wrappers)jUtr(jwX)ip (circuits.web.wrappers.Host attribute)j Utr(jwX+port (circuits.web.wrappers.Host attribute)jUtr(jwX+name (circuits.web.wrappers.Host attribute)jUtr(jwX+HTTPStatus (class in circuits.web.wrappers)jUtr(jwX3status (circuits.web.wrappers.HTTPStatus attribute)jUtr(jwX3reason (circuits.web.wrappers.HTTPStatus attribute)j~Utr(jwX(Request (class in circuits.web.wrappers)jUtr(jwX/index (circuits.web.wrappers.Request attribute)jnUtr(jwX5script_name (circuits.web.wrappers.Request attribute)j{Utr(jwX/login (circuits.web.wrappers.Request attribute)jQUtr(jwX1handled (circuits.web.wrappers.Request attribute)jlUtr(jwX0scheme (circuits.web.wrappers.Request attribute)jUtr(jwX2protocol (circuits.web.wrappers.Request attribute)jUtr(jwX0server (circuits.web.wrappers.Request attribute)jiUtr(jwX0remote (circuits.web.wrappers.Request attribute)jUtr(jwX/local (circuits.web.wrappers.Request attribute)jUtr(jwX.host (circuits.web.wrappers.Request attribute)jIUtr(jwX%Body (class in circuits.web.wrappers)jxUtr(jwX'Status (class in circuits.web.wrappers)jUtr(jwX)Response (class in circuits.web.wrappers)jUtr(jwX/body (circuits.web.wrappers.Response attribute)jsUtr(jwX1status (circuits.web.wrappers.Response attribute)jnUtr(jwX/done (circuits.web.wrappers.Response attribute)jUtr(jwX0close (circuits.web.wrappers.Response attribute)jUtr(jwX1stream (circuits.web.wrappers.Response attribute)jUtr(jwX2chunked (circuits.web.wrappers.Response attribute)jqUtr(jwX1prepare() (circuits.web.wrappers.Response method)jEUtrej.]r((jwXcircuits.web.main (module)Xmodule-circuits.web.mainUtr(jwX-parse_options() (in module circuits.web.main)jUtr(jwX+Authentication (class in circuits.web.main)jUtr(jwX4channel (circuits.web.main.Authentication attribute)j2Utr(jwX2realm (circuits.web.main.Authentication attribute)jUtr(jwX2users (circuits.web.main.Authentication attribute)jvUtr(jwX3request() (circuits.web.main.Authentication method)jUtr(jwX'HelloWorld (class in circuits.web.main)jEUtr(jwX0channel (circuits.web.main.HelloWorld attribute)jVUtr(jwX/request() (circuits.web.main.HelloWorld method)jDUtr(jwX!Root (class in circuits.web.main)jUtr(jwX'hello() (circuits.web.main.Root method)jUtr(jwX-select_poller() (in module circuits.web.main)juUtr(jwX*parse_bind() (in module circuits.web.main)j2Utr(jwX$main() (in module circuits.web.main)jBUtreh ]j?]r((jwXcircuits.io.process (module)Xmodule-circuits.io.processUtr(jwX&Process (class in circuits.io.process)jUtr(jwX/channel (circuits.io.process.Process attribute)jUtr(jwX+init() (circuits.io.process.Process method)jUtr(jwX,start() (circuits.io.process.Process method)jUtr(jwX+stop() (circuits.io.process.Process method)jUtr(jwX+kill() (circuits.io.process.Process method)jUtr(jwX-signal() (circuits.io.process.Process method)j;Utr(jwX+wait() (circuits.io.process.Process method)jUtr(jwX,write() (circuits.io.process.Process method)jUtr(jwX.status (circuits.io.process.Process attribute)jfUtr ejH]r ((jwXcircuits.node.server (module)Xmodule-circuits.node.serverUtr (jwX&Server (class in circuits.node.server)jhUtr (jwX/channel (circuits.node.server.Server attribute)jUtr (jwX+send() (circuits.node.server.Server method)jUtr(jwX,host (circuits.node.server.Server attribute)jUtr(jwX,port (circuits.node.server.Server attribute)jCUtrejQ]r((jwX.circuits.web.dispatchers.virtualhosts (module)X,module-circuits.web.dispatchers.virtualhostsUtr(jwX=VirtualHosts (class in circuits.web.dispatchers.virtualhosts)jUtr(jwXFchannel (circuits.web.dispatchers.virtualhosts.VirtualHosts attribute)jUtrejZ]jc]jl]r(jwXcircuits.web (module)Xmodule-circuits.webUtrah2]j}]r((jwXcircuits.core.values (module)Xmodule-circuits.core.valuesUtr(jwX%Value (class in circuits.core.values)jaUtr(jwX,inform() (circuits.core.values.Value method)jUtr(jwX.getValue() (circuits.core.values.Value method)jUtr(jwX.setValue() (circuits.core.values.Value method)j\Utr(jwX,value (circuits.core.values.Value attribute)jKUtrej]r((jwXcircuits.core.utils (module)Xmodule-circuits.core.utilsUtr(jwX)flatten() (in module circuits.core.utils)jUtr (jwX-findchannel() (in module circuits.core.utils)jUtr!(jwX*findtype() (in module circuits.core.utils)jUtr"(jwX)findcmp() (in module circuits.core.utils)jkUtr#(jwX*findroot() (in module circuits.core.utils)jUtr$(jwX,safeimport() (in module circuits.core.utils)j7Utr%ej]r&(jwXcircuits.core.debugger (module)Xmodule-circuits.core.debuggerUtr'aj]r(((jwXcircuits.tools (module)Xmodule-circuits.toolsUtr)(jwX&tryimport() (in module circuits.tools)jUtr*(jwX!walk() (in module circuits.tools)jUtr+(jwX"edges() (in module circuits.tools)jTUtr,(jwX%findroot() (in module circuits.tools)jhUtr-(jwX!kill() (in module circuits.tools)jtUtr.(jwX"graph() (in module circuits.tools)jUtr/(jwX$inspect() (in module circuits.tools)jUtr0(jwX'deprecated() (in module circuits.tools)j5Utr1eh]j]r2((jwXcircuits.web.wsgi (module)Xmodule-circuits.web.wsgiUtr3(jwX.create_environ() (in module circuits.web.wsgi)jUtr4(jwX(Application (class in circuits.web.wsgi)jUtr5(jwX1channel (circuits.web.wsgi.Application attribute)jUtr6(jwX5headerNames (circuits.web.wsgi.Application attribute)jUtr7(jwX-init() (circuits.web.wsgi.Application method)jUtr8(jwX9translateHeaders() (circuits.web.wsgi.Application method)jUtr9(jwX;getRequestResponse() (circuits.web.wsgi.Application method)jUtr:(jwX1response() (circuits.web.wsgi.Application method)jUtr;(jwX.host (circuits.web.wsgi.Application attribute)juUtr<(jwX.port (circuits.web.wsgi.Application attribute)jUtr=(jwX0secure (circuits.web.wsgi.Application attribute)jUtr>(jwX$Gateway (class in circuits.web.wsgi)jUtr?(jwX-channel (circuits.web.wsgi.Gateway attribute)jhUtr@(jwX)init() (circuits.web.wsgi.Gateway method)jUtrAej]rB(jwX!circuits.web.dispatchers (module)Xmodule-circuits.web.dispatchersUtrCaj]rD((jwXcircuits.web.events (module)Xmodule-circuits.web.eventsUtrE(jwX&request (class in circuits.web.events)jOUtrF(jwX/success (circuits.web.events.request attribute)j*UtrG(jwX/failure (circuits.web.events.request attribute)jUtrH(jwX0complete (circuits.web.events.request attribute)jUtrI(jwX,name (circuits.web.events.request attribute)jUtrJ(jwX'response (class in circuits.web.events)jUtrK(jwX0success (circuits.web.events.response attribute)jUtrL(jwX0failure (circuits.web.events.response attribute)j9UtrM(jwX1complete (circuits.web.events.response attribute)jUtrN(jwX-name (circuits.web.events.response attribute)jpUtrO(jwX%stream (class in circuits.web.events)jUtrP(jwX.success (circuits.web.events.stream attribute)jUtrQ(jwX.failure (circuits.web.events.stream attribute)jUtrR(jwX/complete (circuits.web.events.stream attribute)jUtrS(jwX+name (circuits.web.events.stream attribute)jUtrT(jwX(terminate (class in circuits.web.events)jVUtrU(jwX.name (circuits.web.events.terminate attribute)jUtrVej]rW(jwXcircuits.protocols.irc (module)Xmodule-circuits.protocols.ircUtrXaj]rY((jwXcircuits.net.sockets (module)Xmodule-circuits.net.socketsUtrZ(jwX&Client (class in circuits.net.sockets)jUtr[(jwX/channel (circuits.net.sockets.Client attribute)jUtr\(jwX;parse_bind_parameter() (circuits.net.sockets.Client method)jUtr](jwX1connected (circuits.net.sockets.Client attribute)jUtr^(jwX,close() (circuits.net.sockets.Client method)j Utr_(jwX,write() (circuits.net.sockets.Client method)jUtr`(jwX)TCPClient (class in circuits.net.sockets)jlUtra(jwX8socket_family (circuits.net.sockets.TCPClient attribute)jUtrb(jwX1connect() (circuits.net.sockets.TCPClient method)jUtrc(jwX*TCP6Client (class in circuits.net.sockets)jUtrd(jwX9socket_family (circuits.net.sockets.TCP6Client attribute)jUtre(jwX?parse_bind_parameter() (circuits.net.sockets.TCP6Client method)j=Utrf(jwX*UNIXClient (class in circuits.net.sockets)j.Utrg(jwX0ready() (circuits.net.sockets.UNIXClient method)jkUtrh(jwX2connect() (circuits.net.sockets.UNIXClient method)jUtri(jwX&Server (class in circuits.net.sockets)j-Utrj(jwX/channel (circuits.net.sockets.Server attribute)jUtrk(jwX;parse_bind_parameter() (circuits.net.sockets.Server method)jAUtrl(jwX1connected (circuits.net.sockets.Server attribute)jbUtrm(jwX,host (circuits.net.sockets.Server attribute)j Utrn(jwX,port (circuits.net.sockets.Server attribute)jUtro(jwX,close() (circuits.net.sockets.Server method)jUtrp(jwX,write() (circuits.net.sockets.Server method)j:Utrq(jwX)TCPServer (class in circuits.net.sockets)jUtrr(jwX8socket_family (circuits.net.sockets.TCPServer attribute)j(Utrs(jwX>parse_bind_parameter() (circuits.net.sockets.TCPServer method)jUtrt(jwX7parse_ipv4_parameter() (in module circuits.net.sockets)jUtru(jwX7parse_ipv6_parameter() (in module circuits.net.sockets)j Utrv(jwX*TCP6Server (class in circuits.net.sockets)jUtrw(jwX9socket_family (circuits.net.sockets.TCP6Server attribute)jUtrx(jwX?parse_bind_parameter() (circuits.net.sockets.TCP6Server method)jUtry(jwX*UNIXServer (class in circuits.net.sockets)jUtrz(jwX)UDPServer (class in circuits.net.sockets)jUtr{(jwX8socket_family (circuits.net.sockets.UDPServer attribute)jUtr|(jwX/close() (circuits.net.sockets.UDPServer method)j5Utr}(jwX/write() (circuits.net.sockets.UDPServer method)jcUtr~(jwX3broadcast() (circuits.net.sockets.UDPServer method)jUtr(jwX*UDPClient (in module circuits.net.sockets)jUtr(jwX*UDP6Server (class in circuits.net.sockets)jmUtr(jwX9socket_family (circuits.net.sockets.UDP6Server attribute)jUtr(jwX?parse_bind_parameter() (circuits.net.sockets.UDP6Server method)jUtr(jwX+UDP6Client (in module circuits.net.sockets)jUtr(jwX'Pipe() (in module circuits.net.sockets)jUtrej]r(jwX!circuits.core.components (module)Xmodule-circuits.core.componentsUtraj]r((jwX circuits.protocols.http (module)Xmodule-circuits.protocols.httpUtr(jwX*request (class in circuits.protocols.http)jUtr(jwX0name (circuits.protocols.http.request attribute)jUtr(jwX+response (class in circuits.protocols.http)jUtr(jwX1name (circuits.protocols.http.response attribute)jUtr(jwX1ResponseObject (class in circuits.protocols.http)jSUtr(jwX6read() (circuits.protocols.http.ResponseObject method)j<Utr(jwX'HTTP (class in circuits.protocols.http)jUtr(jwX0channel (circuits.protocols.http.HTTP attribute)jUtrej]r((jwXcircuits.web.url (module)Xmodule-circuits.web.urlUtr(jwX(parse_url() (in module circuits.web.url)j6Utr(jwXURL (class in circuits.web.url)jUtr(jwX+parse() (circuits.web.url.URL class method)jJUtr(jwX%equiv() (circuits.web.url.URL method)jUtr(jwX)canonical() (circuits.web.url.URL method)jUtr(jwX&defrag() (circuits.web.url.URL method)j Utr(jwX'deparam() (circuits.web.url.URL method)jNUtr(jwX'abspath() (circuits.web.url.URL method)jUtr(jwX%lower() (circuits.web.url.URL method)jUtr(jwX(sanitize() (circuits.web.url.URL method)jUtr(jwX&escape() (circuits.web.url.URL method)jUtr(jwX(unescape() (circuits.web.url.URL method)jUtr(jwX&encode() (circuits.web.url.URL method)jUtr(jwX(relative() (circuits.web.url.URL method)jdUtr(jwX(punycode() (circuits.web.url.URL method)jUtr(jwX*unpunycode() (circuits.web.url.URL method)jUtr(jwX(absolute() (circuits.web.url.URL method)jUtr(jwX'unicode() (circuits.web.url.URL method)jUtr(jwX$utf8() (circuits.web.url.URL method)jUtrej]r((jwXcircuits.web.client (module)Xmodule-circuits.web.clientUtr(jwX+parse_url() (in module circuits.web.client)j|Utr(jwX HTTPExceptionjUtr(jwX NotConnectedjHUtr(jwX&request (class in circuits.web.client)jUtr(jwX,name (circuits.web.client.request attribute)jUtr(jwX%Client (class in circuits.web.client)jUtr(jwX.channel (circuits.web.client.Client attribute)jUtr(jwX+write() (circuits.web.client.Client method)juUtr(jwX+close() (circuits.web.client.Client method)jUtr(jwX-connect() (circuits.web.client.Client method)jUtr(jwX-request() (circuits.web.client.Client method)j,Utr(jwX0connected (circuits.web.client.Client attribute)jUtr(jwX/response (circuits.web.client.Client attribute)jBUtrej]r((jwXcircuits.web.sessions (module)Xmodule-circuits.web.sessionsUtr(jwX'who() (in module circuits.web.sessions)jHUtr(jwX2create_session() (in module circuits.web.sessions)jUtr(jwX2verify_session() (in module circuits.web.sessions)jUtr(jwX)Sessions (class in circuits.web.sessions)jUtr(jwX2channel (circuits.web.sessions.Sessions attribute)jUtr(jwX.load() (circuits.web.sessions.Sessions method)jqUtr(jwX.save() (circuits.web.sessions.Sessions method)jUtr(jwX1request() (circuits.web.sessions.Sessions method)jMUtrej]r((jwXcircuits.core (module)Xmodule-circuits.coreUtr(jwX#handler() (in module circuits.core)jUtr(jwX&BaseComponent (class in circuits.core)jUtr(jwX/channel (circuits.core.BaseComponent attribute)jUtr(jwX3events() (circuits.core.BaseComponent class method)jUtr(jwX5handlers() (circuits.core.BaseComponent class method)jUtr(jwX4handles() (circuits.core.BaseComponent class method)jUtr(jwX/register() (circuits.core.BaseComponent method)j3Utr(jwX1unregister() (circuits.core.BaseComponent method)j!Utr(jwX:unregister_pending (circuits.core.BaseComponent attribute)jUtr(jwX"Component (class in circuits.core)jUtr(jwXEvent (class in circuits.core)j$Utr(jwX*alert_done (circuits.core.Event attribute)jUtr(jwX%cancel() (circuits.core.Event method)j_Utr(jwX(channels (circuits.core.Event attribute)jUtr(jwX$child() (circuits.core.Event method)jUtr(jwX(complete (circuits.core.Event attribute)jwUtr(jwX+create() (circuits.core.Event class method)jUtr(jwX'failure (circuits.core.Event attribute)jUtr(jwX$name (circuits.core.Event attribute)jUtr(jwX&notify (circuits.core.Event attribute)jUtr(jwX&parent (circuits.core.Event attribute)jUtr(jwX#stop() (circuits.core.Event method)jeUtr(jwX'success (circuits.core.Event attribute)jFUtr(jwX/waitingHandlers (circuits.core.Event attribute)jUtr(jwXtask (class in circuits.core)jUtr(jwX&failure (circuits.core.task attribute)jUtr(jwX#name (circuits.core.task attribute)jUtr(jwX&success (circuits.core.task attribute)jBUtr(jwXWorker (class in circuits.core)jUtr(jwX(channel (circuits.core.Worker attribute)jUtr(jwX$init() (circuits.core.Worker method)jUtr(jwXBridge (class in circuits.core)j"Utr(jwX(channel (circuits.core.Bridge attribute)jUtr(jwX'ignore (circuits.core.Bridge attribute)jUtr(jwX$init() (circuits.core.Bridge method)jUtr(jwX$send() (circuits.core.Bridge method)jUtr(jwX!Debugger (class in circuits.core)jUtr(jwX1IgnoreChannels (circuits.core.Debugger attribute)j Utr(jwX/IgnoreEvents (circuits.core.Debugger attribute)jSUtr(jwXTimer (class in circuits.core)jkUtr(jwX&expiry (circuits.core.Timer attribute)jUtr(jwX$reset() (circuits.core.Timer method)jUtr(jwX Manager (class in circuits.core)jUtr(jwX+addHandler() (circuits.core.Manager method)j?Utr(jwX%call() (circuits.core.Manager method)jgUtr(jwX*callEvent() (circuits.core.Manager method)jUtr(jwX%fire() (circuits.core.Manager method)jUtr(jwX*fireEvent() (circuits.core.Manager method)jsUtr(jwX&flush() (circuits.core.Manager method)jUtr(jwX,flushEvents() (circuits.core.Manager method)j8Utr(jwX,getHandlers() (circuits.core.Manager method)joUtr(jwX%join() (circuits.core.Manager method)jUtr(jwX&name (circuits.core.Manager attribute)jUtr(jwX%pid (circuits.core.Manager attribute)jUtr(jwX,processTask() (circuits.core.Manager method)jUtr(jwX.registerChild() (circuits.core.Manager method)jUtr(jwX-registerTask() (circuits.core.Manager method)jUtr(jwX.removeHandler() (circuits.core.Manager method)jUtr(jwX$run() (circuits.core.Manager method)j>Utr(jwX)running (circuits.core.Manager attribute)jPUtr(jwX&start() (circuits.core.Manager method)jUtr(jwX%stop() (circuits.core.Manager method)jUtr(jwX%tick() (circuits.core.Manager method)j/Utr (jwX0unregisterChild() (circuits.core.Manager method)jUtr (jwX/unregisterTask() (circuits.core.Manager method)jUtr (jwX%wait() (circuits.core.Manager method)j&Utr (jwX*waitEvent() (circuits.core.Manager method)jUtr (jwX TimeoutErrorjUtr ej ]r ((jwXcircuits.node.events (module)Xmodule-circuits.node.eventsUtr (jwX&packet (class in circuits.node.events)jZUtr (jwX,name (circuits.node.events.packet attribute)jUtr (jwX&remote (class in circuits.node.events)j!Utr (jwX,name (circuits.node.events.remote attribute)j[Utr ej]r (jwX circuits.web.websockets (module)Xmodule-circuits.web.websocketsUtr aj]r ((jwXcircuits.six (module)Xmodule-circuits.sixUtr (jwX$byteindex() (in module circuits.six)jUtr (jwX$iterbytes() (in module circuits.six)jUUtr (jwX#MovedModule (class in circuits.six)jUtr (jwX&MovedAttribute (class in circuits.six)jUtr (jwX#add_move() (in module circuits.six)j Utr (jwX&remove_move() (in module circuits.six)j Utr (jwX.create_bound_method() (in module circuits.six)jPUtr (jwX/get_unbound_function() (in module circuits.six)jUtr (jwX Iterator (class in circuits.six)jUtr (jwX%next() (circuits.six.Iterator method)jUtr (jwX#iterkeys() (in module circuits.six)jUtr (jwX%itervalues() (in module circuits.six)jUtr (jwX$iteritems() (in module circuits.six)jmUtr (jwXb() (in module circuits.six)jUtr (jwXu() (in module circuits.six)jUtr (jwX'bytes_to_str() (in module circuits.six)jTUtr (jwX"reraise() (in module circuits.six)jUtr (jwX exec_() (in module circuits.six)jUtr! (jwX!print_() (in module circuits.six)jUtr" (jwX)with_metaclass() (in module circuits.six)jOUtr# ej']j0]j9]r$ ((jwXcircuits.core.bridge (module)Xmodule-circuits.core.bridgeUtr% (jwX&Bridge (class in circuits.core.bridge)jUtr& (jwX/channel (circuits.core.bridge.Bridge attribute)jSUtr' (jwX.ignore (circuits.core.bridge.Bridge attribute)jUtr( (jwX+init() (circuits.core.bridge.Bridge method)jUtr) (jwX+send() (circuits.core.bridge.Bridge method)jUtr* ejB]r+ ((jwXcircuits.core.loader (module)Xmodule-circuits.core.loaderUtr, (jwX&Loader (class in circuits.core.loader)jKUtr- (jwX/channel (circuits.core.loader.Loader attribute)jUtr. (jwX+load() (circuits.core.loader.Loader method)jUtr/ euUall_docsr0 }r1 (hbGA'hxGA_hGA hGAnhGA5hGAeIhGA6hGAhGAbhGAEhGAhGA$%hGAQ&hGAchGAX!ShGAxShGAjGAw7jGA`h8jGA9j#GA0j,GAxN#j5GAj>GAz jGGAqjPGAAjYGAjbGAڿjkGA jtGAKj}GAhGA%jGAڝjGA*hGA!jGAjGA$ jGA_jGAhGAjGA5h^GAEcjGA jGAkjGA>GjGADkjGAFj GAj)GAjj2GA͞j;GAXijDGAuFjMGAnrjVGA̧j_GA,XjhGACܐjGAjGAjGAjGA-jGA:j GAjGAGgjGAˆj%GAخj.GAiYh GAtqj?GAjHGAjQGA70@jZGAjcGA!jlGA{gh2GA>j}GAjGAGjGAjGA~hGA"jGAjjGA-IjGAC0jGAjGAjGAOjGAy1jGAa|jGA#jGA?jGAkj GAjGA{jGAZj'GA߇j0GA Cj9GAoZjBGA=uUsettingsr2 }r3 (Ucloak_email_addressesUtrim_footnote_reference_spaceU halt_levelKUsectsubtitle_xformUembed_stylesheetU pep_base_urlUhttp://www.python.org/dev/peps/r4 Udoctitle_xformUwarning_streamcsphinx.util.nodes WarningStream r5 )r6 }r7 (U_rer8 cre _compile r9 U+\((DEBUG|INFO|WARNING|ERROR|SEVERE)/[0-4]\)r: KRr; Uwarnfuncr< NubUenvhU rfc_base_urlUhttp://tools.ietf.org/html/r= Ufile_insertion_enabledUgettext_compactUinput_encodingU utf-8-sigr> uUfiles_to_rebuildr? }r@ (j h]rA (j0j)eRrB j h]rC (j;j0eRrD j h]rE haRrF j h]rG (j0jeRrH j h]rI (j0jeRrJ j h]rK haRrL j h]rM haRrN j h]rO (jMj0eRrP j h]rQ h^aRrR j h]rS (j0j)eRrT j h]rU haRrV j, h]rW (j0jleRrX j h]rY h^aRrZ j h]r[ (j0j5eRr\ j# h]r] (j0jleRr^ j h]r_ jzaRr` j h]ra haRrb j h]rc (j0j)eRrd j$ h]re (j0jleRrf j h]rg (j0jeRrh j h]ri (j0jeRrj j h]rk (j0jeRrl j h]rm (j0jeRrn j h]ro (j0jeRrp j h]rq (jMj0eRrr j h]rs jzaRrt j h]ru (j0jeRrv j h]rw (jMj0eRrx j h]ry (j0jeRrz j h]r{ jzaRr| j h]r} haRr~ j h]r h^aRr j h]r h^aRr j h]r haRr j h]r haRr j h]r (j0jleRr j h]r haRr j( h]r (j0jleRr j h]r haRr j h]r (j0jeRr j h]r haRr j h]r (j0heRr j* h]r (j0jleRr j h]r (j0jeRr j h]r haRr j h]r (j0jeRr j h]r (j0jeRr j h]r (j0jleRr j h]r (jMj0eRr j h]r (j0jeRr j h]r (j0jeRr j h]r (j0jeRr j h]r (j0jeRr j h]r (j0jleRr j h]r haRr j h]r (j0jeRr j h]r haRr jh]r j0aRr j h]r (j0jeRr j h]r haRr j h]r haRr j% h]r (j0jleRr j h]r (j0jeRr j h]r haRr j h]r (j0jeRr j' h]r (j0jleRr j h]r (j0jleRr j h]r (j0jeRr j h]r haRr j h]r haRr j h]r haRr j h]r (j0jeRr j h]r (j0jeRr j h]r (j0heRr j h]r haRr j- h]r (j0jleRr j& h]r (j0jleRr j h]r jaRr j h]r (jMj0eRr j h]r (j0jeRr j h]r (j0jeRr j h]r jzaRr j h]r h^aRr j h]r (j0jeRr j h]r h^aRr j h]r (j0jeRr j h]r (j0jeRr j" h]r (j0jleRr j h]r (j0jeRr j h]r jaRr j h]r haRr j h]r (j0jleRr j! h]r (j0jleRr j h]r (j0heRr j h]r (j0j5eRr j h]r h^aRr!j h]r!(j0heRr!j+ h]r!(j0jleRr!j h]r!(j0jleRr!j) h]r!(j0jleRr!j h]r !(j0jeRr !j h]r !(j0jeRr !j h]r !(j0jleRr!j h]r!(j0jeRr!j h]r!haRr!j. h]r!(j0jleRr!j h]r!(j0jeRr!j h]r!(j0jeRr!uUtoc_secnumbersr!}U_nitpick_ignorer!h]Rr!U _warnfuncr!Nub.circuits-3.1.0/docs/logo.png0000644000014400001440000004515312402037676016746 0ustar prologicusers00000000000000PNG  IHDR5t`iCCPICC Profilexy<ǯ{v c_ʚ]&.dɾeXYٲْVO$*!%F",y~|_g^sssu@xxzLTXZqc?~ s$!ñU^K箥a6i@c?lAd2Cc"0ELM`.?c?rn{{{9{?Wٟ s˞p~^~!P 3}W؂8!tg ׭ ? >.;[1} Wi *l7عUSrb_X( ; '0-d IAÈ'U/bjz^ѝ95@.{gw|=SB"b8 FIicwՕVohjTh!t*t7U ;z&ѧ.sY:sjk+cgkDzƓ밷$9%(<4|~H^hnXv͈  J/F?؝8xDk^IןJYMKPϴ[Ws>vѝ⺒Һ.5&u;o&7ݳ@!#G?O5uU$9B+{ֳѶ/^vpt̽*tbNymC&a/]>~)!f2uƷ?O|:g2jJfjsƴL٦/ _|0'5W?/=oA~yQckt2iy[w;k\?776nno0e v#wwa (8BtP) ye.){4_ lL,l38E x 9ʈ3HI6IG(MVv|lZu> L ɧʍ[LN/Ag- mڎm:: 8\\Ϻ"ΦQ}ϧ7-"P;H.X ·"6#.\ܽ+bULu!>=ƴ􏙒Y/_n+O,\Z[l_rY,|#}`5lMy781SVŶSSq 7 Ft Q[X;09<uAv>a)` >+O_ACCCgÊ]##.\5tQt+F1± vjU\DIĎkyId7S)is22moFet˽O.p*-/Z+n)I.+/QUv9k5=u՗Ioz7}w^ؤ_OO5?nMԮ\ˡWZ;*s_'D z{ar{Apȋяc#m&>uN1|&M7¾#fst[WO c,`@W,cX_S9 pU]C/ ?Ak06! " %A%P#0.<HFT#sH*a>GCPJ('T,ՇBd-+:cb& Xml.v'#qN()3(ԨVFZjj_44!0GkKN^AQIYE [UΰqsqFp qrGH|8tW&!.*tXJ!'V,/qȔd%iG7e=%+-߯PtIvw/jcCÚt6p Lo45;hndNJƦ?P8Iquiv% z{z; tZ@r QnJWhcƮ'${nLIgɒ,\.a(0 .|޽UM -tTt ~50J}ec^][Lٶ?dx> >H2\0(ZhAFh"(D1D!בa."rPmE4+Z Fw70BKL<=uap8s\&nݍ%Қ@IՅoR;QU&2hiiiS003>f:لyœk aNK8r987ʹ-y<-x!  #DN3Ky)Y"-zTGFqEfJT%Z'T$Tyx9485ĵtuHA EZ>NZ%7[l[*Y]~nbba]!7]R9 [>OɛAoϫ<(~E0xkɪWS3(3nYKR}-i++Vu:6>!#&'-TK^i 83){|Um+pT`B@? @$ (Bt"V\H=dP({uXhQ&C`^`)t0.MMB1HBYMAG#483VΓ6 c*$s, ls ZpsZrqpMp%n~-[b%f,HJ9rx]*j+Z: zNFMJO/Z,Ya4,~G礷=?.3AM0ȠQgP_U{{#.ٚu)G+wVM]Eq}yVE~:; ==h|B\m۳"ݶ=o&z Hl=}6&7^7)qrts>r˖* ~]q\UYZ[[a)9nw[z{i׍=K{ k9x/'S߳>d97gWwM}vvT>iYG]}v2;>ۿkOLb?/lyټ< c:L8`h9G_[]5o~n$2 gg7qz3tU=UUVVHHBF ;dauHHH@"@ @ >N$@$@O S D$@$@ @ >N$@$@O S D$@$@ @ >N$@$@O S D$@$@ @ >N$@$@O S D$@$@ @ >N$@$@O S D$@$@ @ >N$@$@O @nPZ/vɟݻwU @ӦM>={t$@$`@RѣG?? .'8ٟmPuί^qVNDϲTjQ*URYj&V]dPbjTN,Ŀ85)PPV,!SңQ)ڷsӉ.^8B_ԬYc}p/ 0!}q0`xAAŝeiSۤ,"2K3Ԥԧ7DT G&" )ʓ; kX*d=.'IيT+)UCJ c|)STA"gA [*ar.m"Y%r>dRHId"=+޴igW ~^x 1H@O7d8t~!%TQYUp@S41g| k(q-**#gTR\Rz']up5K/xG$@O[nLz.Ŵ"5 Ib'U'>2:TG}ٳgө+( 3>'8D`XoÆ fo8\0fID.H0,N;h>8ĻGZlwLJ$@Z>?C{ ntad8U\g>2˦F3I$  C:es:e E ~)« ƥhXm d4=L;&S^=Xɚ{(ʫVkt>]ݗ4?L+KATB$yjݺ^?Qwd?%_?}  ܕno3 !ӃI!]$?atg??bg -O<',r*K[!nG/cjPI ǽ:+}8R~ܗ:4O,/Ҙ'dʥ~3%xd}M?ޜZ[[G\|ءl* @piOnyR9M3cJ4y,ҐyEb/\ư~jjɦ$ piVndÁ Kb~ξXK]x"6 d{>U;C\3YiؿQx•`On66C$@ ƿꤪ` \wS/`IBB}2Өr_9dw7Ն^ Oe2;Tܔ|<"H<6 UPPrG%r?Qu4$)1 KW??[ lU|SAty()F@pcLέe(i]o].,-Ku M~Nj :Vo-x^A+k!J @c!tvN[XY4I]W.;,Ns]fwة5+m6Uڔ $cmaMQ4fd}8M+>ɂAiP;uB}^4& O\T!35?譧Th0N~x!Q3ٷP. QYU{z8+o2^Î5S @>|'T֊q*j[U6ґ;-_ڰ{=;^ivʓ @9bC`R$(' s̉;4h|X7HQ٧gh}"}"_3ߗgE,c5I % f~+܄-//+ϊ7|E֩נvu`ψy |˪lˍLC$']牧[q,S+]F۟פ0;;+'+V.ّYYKvYfZ1$@٧'C.8B8]o43uW -kZ+oYkl\aa11$@$oPgi}3n91d-.\vYC%5;Z d*`g3඗zgV?s4lg#{qs;Ub|wCj֑Ɗ؞.csՀ[וewZR&߯hyY?x<j*5{L/׭4?wȐ!$ v<U{`殮(Aұ>a/r=$3'J~?y[%Y^KFL>9ˆ1$@ SS*5 ԰Ղ7\kHgJ"}W-fum{۵HyV/~8B5Fr9H2@.7?ϋ2Uգ`xGV>j)IMEMz{|g-zCM:>4wqn +ȑ# @)a_$uӋ⌶U8zZ{rB3fbV,@yq45%&2=WR`pU!Kq./J&DI^ O)1KBI@TJ~s1JIsO\`l#'kAgNܿf7t}&HO:yn5s5*D3q@xFppOi$Oޠcw>1N9۴4=,Q~{+/esgUr];rݝ[\lSط#C;uk]K50ܺ>oG1g$ (R>5Gi{iw)i tV~#'̝$"gmHf=s؏Է3^Ǐ$@I e8a׾#dž2YtF|@<|`\6(KwLDG)b̉Ә1c8)3@H 9']ϩMjᐖywӼŘ[~}.oVrέJv0"؁/&OsUf! $"iǫojyWήZT|\gYhg' N2x -OX~;7N㤽 ڷa) ?'G|D$%iSko9IȗW̟Q4=q}^x'FT -'$M?u֞ 8sw_gpw'b$nrmUbSGN9?W'=(m`ks+WZlT+U B-j-)TbjD=FX>^yrLYy-'tU8S ˗=pp9%؇)FI}:?jkW M:G(ݳ߱^S͋r%s1g9egKIGaOMvOK$t?}JU*[O SaOj{*UaS:g.ؼf.6!W53;ŏB()c<2}4z]L^ENbPL%$yiWZrSM6E8r):ʓ HswT}6aʂ.`^zwN.1 @:'An`|AI8]f͚PXXn:Ea#G֯_o@Qߎ j* S80KJ j\ &)v<0eG-&Gw-)/IHik.8\Tds[`]h`|&Q K =SóE+{1eA<iR _>X-S<>' HO4/:' aGg5HHi)-MkNd$@$NihrO;sO0!" 0HCtac;1} XC$@%)Y1  h쳢$ @>%5K" O>+J $SX$  h쳢$ @>%5K" O>+J $SX$  h쳢$ @>%5K" O>+J $SX$  h쳢$ @>%5K" O>+J $SX$  h쳢$ @>%5K" O>+J $SX$  h쳢$ @>%5K" O>+J $SX$  h쳢$ @>%5K" O>+J $SX$  h쳢$ @>%5K" O>+J $SX$  h쳢$ @>%5K" O>+J $SX$  h쳢$ @>%5K" O>+J $SX$  h쳢$ @>%5K" O>+J $SX$  h쳢$ @>%5K" O>+J $SX$  h쳢$ @>%5K" O>+J $SX$  rRH>ӧ/\pݵj"$pљ3g.[رc7߿UW]ΪAh& "~g6lP5k֬ϵ: >oQ3gF"|nݺN:/OJK#F@I1 {wftIL x/~q]m-[>|sM/wen0r|Qi @0 x%3{aD)Sx- ?)^[ly78"Q'xBz9{l]d&_?">?<J_}UA*BK`Ϟ=+VT7f R;nEuTi aRST5INwmIHO*S8k.ڷo/hJӦML -mۊ֤IS]}rYH .{7nZ$2rHA*BKޡC w 7R@ڧ*u,-Zq#N[n1U#+Vb,p*?~wWR2O𼀉ʜBcոj7։C㱥lʰ> \|)P{hzk36)8p :R0TdMݺu3'U`U piΪݻPYI (GIwN)i^sw#Is|-YW% жV<>x\b ^za艣:J6/`%Öe6}6m֭[wmWܹ3b7oѣGRS \d -..V+v|5x<_ʕ+9-P/֭CtO[<0!YU|p"Х}#(l)S5k,,,2#vډ@f:?ofsMb qݴsOFJ _r%⌁,7nQڥ~UVqZ8ZԢgڜL@yhMek'~_Yeeea1cn{i⛅Eo=$+곲"~"yy0U\CCCEE>c0 oU塇CСCP{#'۶mӦjJ|&!2EW 6Fu]O RrS3z ! @(S*aS Aޓ :IC%~zסGH'D~ڻqBk KDmDJ x`íkPyDe}R(+VKp_=)_>]GxmA(4S7)mؼLLgQ&1Dy }RMȎmz` Gr[k0FO0;Na] 4੽f_TQ+ID3d ^df|r& I\syv=JJ5LS{ni}M#6LiYKΖ,;W_`iFFz$'SRJW*p GCv˓5`)='̹y͛7/⛒X8Ģ(G1@3`>UsZD}OrgGjB8WT HG?r(;+%)*D$EgGӢzR$aBHRRS8A"gE8[*arlM"Y%TWHId"?Y{|<_IUwT̚8zj׭[ 4c/@sΝ1cKYzXD[)nnDୗa~Ɗ/z7tSr1ֳ3QF,attUvPh3#aOwP0i}n{JπȗIDATM0h蜏޵T>~Z~2j*Va7qSʠ3EaTcǘ~ ⚴lٲk׮K[<4+I,_|Νl^Jӳ/I5ި/U{j1$S!'~,bh< RoeEn"U^=Iawp#ү/H`8O t* l$˧#Q&MRv4CVgرxNh!nu#ţ8Ph쨮=裎'ɹDxe'!Oس!^^(]X5l#TSe˖aƀ;v@uuJ^䔱 @Ngc[_*ᫌ3<+xjDNM@C6cÀ7?at[B0Z;=;vsj]J\ 688ň*C )`[jwjV,OacQn/y֫WzL]؈{ MFŲ:u GO>k 郞imrdJADّ/WZ!e'NabߵW mXbpϒаHP࿇aG% >̪8Ů|`Vm7Eh4Թ}6\KL#T%|B?$3Nk h*zG}$VĭΜB ZkɓnR<^/?q[ NmW.R[ň_?N.E*J!^ԍ:Y_:ÇO]J%K&:8>eiV5:up>`CX,=ژ1Ļ9}, ǞJTwoH[<*;r[QecE %R=ɏj=٣ygE9G#'Pg\#*\5ZsaIl4Iu&N F/դX!"i%)X iVTb9ERy^\$ (f},4m{Sj$_3 ^(6O>}{éA%7T$a#]1ևOߊ`@~C[O)$Zإ"v8] ++7KVӪcW>AD)~R*#KJr$JP(R$aBH"-Qu ,paI#]yA*G$A<>8CV)!G!Fzkoܩ}|*8p@seoU`!E|qKW"79Ivv\41|) [P*=܍5.UGc+HQnI۫wӦz|mJ*bⅴ 0| b'G8`Swmڴ|Ayߟ|UͮU+p|N\k9qr* vL~.v %]j]u[eb\zGpQ;U 6;}Z݋=5Qr_+6a kFƫ ƾW~\5O)'tYy\t(ATS(cL >B%Y "h操K^ϋ8ޚ<$@v7>So]8P)?Lh˖-.zNv;`Qq}F=Eo(mHaٺ~8P+Vp LuŶ,I<Ǐ&'tJCR{slm{INa}.>`: hT[T^ērcqIO8i)+Eݪ[nsҌ29~|=  J͎7}{?>ۧx4h}~xӦbiڿԴ'7Pi-,O\*^akuĉi 6 : #~0Tp<1^no 9=iP]Ģ;JPOvGFݦ9UD*9]4ByWsaeC$YR7n ,'mGD7{2RDQ92*Pr7Ӭlo!IV| 4mOob`|k?CСC8*xO92i$|`fiH+&ݑnFT4r00<5=ܰaǗ_5<ܯRTOؒp@ LCbp1GQ} އ8"BxsW#w~ mt^$//OPJE,$s0HKl?<Q7pi<<6yMsdݴSi*vĴ2"bN -.]UV%zaW/"nڛx(qnw>v>oRZ::K]ا]=bLN찆c+rU?8M]ϝn>)abIvl'C<넘!ݱ|.HE;z24;wc50)e&B{3B!hh3Z˛6g'Q0 Ce$O_-YįӾ}毞T'.E6?R[ (voUzXbdOUاO5l:uiHR`Fq9*qk׮n6m L8!]r0kQؓŲ]R>8AvlШQ#q[틉Px,hذa⚄-SP]ӽM.0T1NL=B@o4}]L*'4QRNjmv=N{LJ?SFixHQ^ҐW<g? l-bҤIfw{MP'|R4Kxm.0+4iZO]a r)-   > ɫbPQKLS2⼌5Ϋ\@ǰKPAbD+eCUSu\٨k,/5qR0z&ŒI&l+_+HyL\U IEi1u1hʶQQyXv|ߣu#XHӄy|y+3[,<-ǂ, u:Cr ڂ6zJYêwyμ_X&;"Z1a-~H*ghu1;Nb2qsP#9uC,f%pYҌgΜQx)|1Kkc^g<~{#۶mSk<e=쳖[j=_ک}zk׮5nX^Q8=&5պa .jġᆌ7t=ܣkRAL ξ(G>ڢv rI%2MJp P'B6[O8L x/T6mڠd_ 2m۶˴p&զx#Ukz7#=VA{| gtOWfsp)Ũر¦6bXބJƌ!0^e9oSM1 vyttYPł'ì20-z"/F]( gހ[R'ib8g&uۘ1$! xC"9-Io⵺k ڵ3bU&ǂR#IA+!͛77*Kk Z }VdF\BEnߓ'(xh~N+3f %&jɴ12a[n@0ۆ32U>} XL.P'wRQ$<0Gz/z{BBU|:%;އ*`^9XW3}kU?~/nIO낏6&cF0!~Isc_vޖ+رcCEwxdXjHLZVz .\MK>ֆKKutD߯o޻1opҳ@J؈Ԗ@u7o.+kѢN8󴗉H: D8ݾy=u^UF|pu.vV9Raz 3}nXp8x9QCb;xZ1i|$vTV R a,WF X_-o <`eFa?0Y$hmSW7(,z5ki}6o\2Gd S@aKiP$m+a aw fMֆi4^0R+}KI6 j!SY8 @IZtF 9's.% SY: 9's.% SY: 9's.% SY: 9's.% SY: 9's.% SY: 9's.% SY: 9's.% SY: 9's.% SY: 9's.% SY: 9's.% SY: 9's.% SY: 9's.% SY: 9's.% SY: 9's.%  ,G;h(IENDB`circuits-3.1.0/docs/source/0000755000014400001440000000000012425013643016561 5ustar prologicusers00000000000000circuits-3.1.0/docs/source/man/0000755000014400001440000000000012425013643017334 5ustar prologicusers00000000000000circuits-3.1.0/docs/source/man/events.rst0000644000014400001440000001240112402037676021377 0ustar prologicusers00000000000000Events ====== Basic usage ----------- Events are objects that contain data (*arguments and keyword arguments*) about the message being sent to a receiving component. Events are triggered by using the :meth:`~circuits.core.manager.Manager.fire` method of any registered component. Some events in circuits are fired implicitly by the circuits core like the :class:`~circuits.core.events.started` event used in the tutorial or explicitly by components while handling some other event. Once fired, events are dispatched to the components that are interested in these events (*components whose event handlers match events of interest*). Events are usually fired on one or more channels, allowing components to gather in "interest groups". This is especially useful if you want to reuse basic components such as a :class:`~circuits.net.sockets.TCPServer`. A :class:`~circuits.net.sockets.TCPServer` component fires a :class:`~circuits.net.events.read` event for every package of data that it receives. If we did not have support for channels, it would be very difficult to build two servers in a single process without their read events colliding. Using channels, we can put one server and all components interested in its events on one channel, and another server and the components interested in this other server's events on another channel. Components are associated with a channel by setting their ``channel`` class or instance attribute. .. seealso:: :class:`~.components.Component` Besides having a name, events carry additional arbitrary information. This information is passed as arguments or keyword arguments to the constructor. It is then delivered to the event handler method that must have exactly the same number of arguments and keyword arguments. Of course, as is usual in Python, you can also pass additional information by setting attributes of the event object, though this usage pattern is discouraged. Filtering --------- Events can be filtered by stopping other event handlers from continuing to process the event. To do this, simply call the :meth:`~circuits.core.events.Event.stop` method. Example: .. code-block:: python @handler("foo") def stop_foo(self, event, *args, **kwargs): event.stop() Here any other event handlers also listening to "foo" will not be processed. .. note:: It's important to use priority event handlers here in this case as all event handlers and events run with the same priority unless explicitly told otherwise. .. versionchanged:: 3.0 In circuits 2.x you declared your event handler to be a filter by using ``@handler(filter=True)`` and returned a ``True``-ish value from the respective event handler to achieve the same effect. This is **no longer** the case in circuits 3.x Please use ``event.stop()`` as noted above. Events as result collectors --------------------------- Apart from delivering information to handlers, event objects may also collect information. If a handler returns something that is not ``None``, it is stored in the event's ``value`` attribute. If a second (or any subsequent) handler invocation also returns a value, the values are stored as a list. Note that the value attribute is of type :class:`~.values.Value` and you must access its property ``value`` to access the data stored (``collected_information = event.value.value``). The collected information can be accessed by handlers in order to find out about any return values from the previously invoked handlers. More useful though, is the possibility to access the information after all handlers have been invoked. After all handlers have run successfully (i.e. no handler has thrown an error) circuits may generate an event that indicates the successful handling. This event has the name of the event just handled with "Success" appended. So if the event is called ``Identify`` then the success event is called ``IdentifySuccess``. Success events aren't delivered by default. If you want successful handling to be indicated for an event, you have to set the optional attribute ``success`` of this event to ``True``. The handler for a success event must be defined with two arguments. When invoked, the first argument is the event just having been handled successfully and the second argument is (as a convenience) what has been collected in ``event.value.value`` (note that the first argument may not be called ``event``, for an explanation of this restriction as well as for an explanation why the method is called ``identify_success`` see the section on handlers). .. literalinclude:: examples/handler_returns.py :language: python :linenos: :download:`Download handler_returns.py ` Advanced usage -------------- Sometimes it may be necessary to take some action when all state changes triggered by an event are in effect. In this case it is not sufficient to wait for the completion of all handlers for this particular event. Rather, we also have to wait until all events that have been fired by those handlers have been processed (and again wait for the events fired by those events' handlers, and so on). To support this scenario, circuits can fire a ``Complete`` event. The usage is similar to the previously described success event. Details can be found in the API description of :class:`circuits.core.events.Event`. circuits-3.1.0/docs/source/man/handlers.rst0000644000014400001440000001035212402037676021676 0ustar prologicusers00000000000000Handlers ======== Explicit Event Handlers ----------------------- Event Handlers are methods of components that are invoked when a matching event is dispatched. These can be declared explicitly on a :class:`~circuits.core.components.BaseComponent` or :class:`~circuits.core.components.Component` or by using the :func:`~circuits.core.handlers.handler` decorator. .. literalinclude:: examples/handler_annotation.py :language: python :linenos: :download:`Download handler_annotation.py ` The handler decorator on line 14 turned the method ``system_started`` into an event handler for the event ``started``. When defining explicit event handlers in this way, it's convention to use the following pattern:: @handler("foo") def print_foobar(self, ...): print("FooBar!") This makes reading code clear and concise and obvious to the reader that the method is not part of the class's public API (*leading underscore as per Python convention*) and that it is invoked for events of type ``SomeEvent``. The optional keyword argument "``channel``" can be used to attach the handler to a different channel than the component's channel (*as specified by the component's channel attribute*). Handler methods must be declared with arguments and keyword arguments that match the arguments passed to the event upon its creation. Looking at the API for :class:`~circuits.core.events.started` you'll find that the component that has been started is passed as an argument to its constructor. Therefore, our handler method must declare one argument (*Line 14*). The :func:`~circuits.core.handlers.handler` decorator accepts other keyword arguments that influence the behavior of the event handler and its invocation. Details can be found in the API description of :func:`~circuits.core.handlers.handler`. Implicit Event Handlers ----------------------- To make things easier for the developer when creating many event handlers and thus save on some typing, the :class:`~circuits.core.components.Component` can be used and subclassed instead which provides an implicit mechanism for creating event handlers. Basically every method in the component is automatically and implicitly marked as an event handler with ``@handler()`` where ```` is the name of each method applied. The only exceptions are: - Methods that start with an underscore ``_``. - Methods already marked explicitly with the :func:`~circuits.core.handlers.handler` decorator. Example: .. code:: python #!/usr/bin/env python from circuits import handler, Component, Event class hello(Event): """hello Event""" class App(Component): def _say(self, message): """Print the given message This is a private method as denoted via the prefixed underscore. This will not be turned into an event handler. """ print(message) def started(self, manager): self._say("App Started!") self.fire(hello()) raise SystemExit(0) @handler("hello") def print_hello(self): """hello Event Handlers Print "Hello World!" when the ``hello`` Event is received. As this is already decorated with the ``@handler`` decorator, it will be left as it is and won't get touched by the implicit event handler creation mechanisms. """ print("Hello World!") @handler(False) def test(self, *args, **kwargs): """A simple test method that does nothing This will not be turned into an event handlers because of the ``False`` argument passed to the ``@handler`` decorator. This only makes sense when subclassing ``Component`` and you want to have fine grained control over what methods are not turned into event handlers. """ pass App().run() .. note:: You can specify that a method will not be marked as an event handler by passing ``False`` as the first argument to ``@handler()``. circuits-3.1.0/docs/source/man/manager.rst0000644000014400001440000000234612402037676021514 0ustar prologicusers00000000000000Manager ======= .. module:: circuits.core.manager The :mod:`~circuits.core` :class:`~Manager` class is the base class of all components in circuits. It is what defines the API(s) of all components and necessary machinery to run your application smoothly. .. note:: It is not recommended to actually use the :class:`~Manager` in your application code unless you know what you're doing. .. warning:: A :class:`~Manager` **does not** know how to register itself to other components! It is a manager, not a component, however it does form the basis of every component. Usage ----- Using the :class:`~Manager` in your application is not really recommended except in some special circumstances where you want to have a top-level object that you can register things to. Example: .. code-block:: python :linenos: from circuits import Component, Manager class App(Component): """Your Application""" manager = Manager() App().register(manager) manager.run() .. note:: If you *think* you need a :class:`~Manager` chances are you probably don't. Use a :class:`~circuits.core.components.Component` instead. circuits-3.1.0/docs/source/man/index.rst0000644000014400001440000000052412402037676021205 0ustar prologicusers00000000000000==================== circuits User Manual ==================== Core Library ------------ .. toctree:: :maxdepth: 2 bridge components debugger events handlers helpers loader manager pollers timers utils values workers Miscellaneous ------------- .. toctree:: :maxdepth: 2 misc/tools circuits-3.1.0/docs/source/man/debugger.rst0000644000014400001440000000442312402037676021664 0ustar prologicusers00000000000000Debugger ======== .. module:: circuits.core.debugger The :mod:`~circuits.core` :class:`~Debugger` component is the standard way to debug your circuits applications. It services two purposes: - Logging events as they flow through the system. - Logging any exceptions that might occurs in your application. Usage ----- Using the :class:`~Debugger` in your application is very straight forward just like any other component in the circuits component library. Simply add it to your application and register it somewhere (*it doesn't matter where*). Example: .. code-block:: python :linenos: from circuits import Component, Debugger class App(Component): """Your Application""" app = Appp() Debugger().register(app) app.run() Sample Output(s) ---------------- Here are some example outputs that you should expect to see when using the :class:`~Debugger` component in your application. Example Code: .. code-block:: python :linenos: from circuits import Event, Component, Debugger class foo(Event): """foo Event""" class App(Component): def foo(self, x, y): return x + y app = App() + Debugger() app.start() Run with:: python -i app.py Logged Events:: , )> )> >>> app.fire(foo(1, 2)) >>> Logged Exceptions:: >>> app.fire(foo()) >>> , TypeError('foo() takes exactly 3 arguments (1 given)',), [' File "/home/prologic/work/circuits/circuits/core/manager.py", line 561, in _dispatcher\n value = handler(*eargs, **ekwargs)\n'] handler=>, fevent=)> ERROR () {}: foo() takes exactly 3 arguments (1 given) File "/home/prologic/work/circuits/circuits/core/manager.py", line 561, in _dispatcher value = handler(*eargs, **ekwargs) circuits-3.1.0/docs/source/man/misc/0000755000014400001440000000000012425013643020267 5ustar prologicusers00000000000000circuits-3.1.0/docs/source/man/misc/tools.rst0000644000014400001440000000554712402037676022203 0ustar prologicusers00000000000000Tools ===== There are two main tools of interest in circuits. These are: - :py:func:`circuits.tools.inspect` - :py:func:`circuits.tools.graph` These can be found in the :py:mod:`circuits.tools` module. Introspecting your Application ------------------------------ The :py:func:`~circuits.tools.inspect` function is used to help introspect your application by displaying all the channels and events handlers defined through the system including any additional meta data about them. Example: .. code:: pycon >>> from circuits import Component >>> class App(Component): ... def foo(self): ... pass ... >>> app = App() >>> from circuits.tools import inspect >>> print(inspect(app)) Components: 0 Event Handlers: 3 unregister; 1 foo; 1 prepare_unregister_complete; 1 .prepare_unregister_complete] (App._on_prepare_unregister_complete)> Displaying a Visual Representation of your Application ------------------------------------------------------ The :py:func:`~circuits.tools.graph` function is used to help visualize the different components in your application and how they interact with one another and how they are registered in the system. In order to get a image from this you must have the following packages installed: - `networkx `_ - `pygraphviz `_ - `matplotlib `_ You can install the required dependencies via:: pip install matplotlib networkx pygraphviz Example: .. code:: pycon >>> from circuits import Component, Debugger >>> from circuits.net.events import write >>> from circuits.net.sockets import TCPServer >>> >>> class EchoServer(Component): ... def init(self, host="0.0.0.0", port=8000): ... TCPServer((host, port)).register(self) ... Debugger().register(self) ... def read(self, sock, data): ... self.fire(write(sock, data)) ... >>> server = EchoServer() >>> >>> from circuits.tools import graph >>> print(graph(server)) * * * An output image will be saved to your current working directory and by called ``.png`` where **** is the name of the top-level component in your application of the value you pass to the ``name=`` keyword argument of ``~circuits.tools.graph``. Example output of `telnet Example `_: .. image:: ../examples/Telnet.png And its DOT Graph: .. graphviz:: ../examples/Telnet.dot circuits-3.1.0/docs/source/man/components.rst0000644000014400001440000000773112402037676022272 0ustar prologicusers00000000000000.. module:: circuits.core.components Components ========== The architectural concept of circuits is to encapsulate system functionality into discrete manageable and reusable units, called *Components*, that interact by sending and handling events that flow throughout the system. Technically, a circuits *Component* is a Python class that inherits (*directly or indirectly*) from :class:`~BaseComponent`. Components can be sub-classed like any other normal Python class, however components can also be composed of other components and it is natural to do so. These are called *Complex Components*. An example of a Complex Component within the circuits library is the :class:`circuits.web.servers.Server` Component which is comprised of: - :class:`circuits.net.sockets.TCPServer` - :class:`circuits.web.servers.BaseServer` - :class:`circuits.web.http.HTTP` - :class:`circuits.web.dispatchers.dispatcher.Dispatcher` .. note:: There is no class or other technical means to mark a component as a complex component. Rather, all component instances in a circuits based application belong to some component tree (there may be several), with Complex Components being a subtree within that structure. A Component is attached to the tree by registering with the parent and detached by unregistering itself. See methods: - :meth:`~BaseComponent.register` - :meth:`~BaseComponent.unregister` Component Registration ---------------------- To register a component use the :meth:`~Component.register` method. .. code-block:: python :linenos: from circuits import Component class Foo(Component): """Foo Component""" class App(Component): """App Component""" def init(self): Foo().register(self) app = App() debugger = Debugger().register(app) app.run() Unregistering Components ------------------------ Components are unregistered via the :meth:`~Component.unregister` method. .. code-block:: python debugger.unregister() .. note:: You need a reference to the component you wish to unregister. The :meth:`~Component.register` method returns you a reference of the component that was registered. Convenient Shorthand Form ------------------------- After a while when your application becomes rather large and complex with many components and component registrations you will find it cumbersome to type ``.register(blah)``. circuits has several convenient methods for component registration and deregistration that work in an identical fashion to their :meth:`~Component.register` and :meth:`~Component.unregister` counterparts. These convenience methods follow normal mathematical operator precedence rules and are implemented by overloading the Python ``__add__``, ``__iadd__``, ``__sub__`` and ``__isub__``. The mapping is as follow: - :meth:`~Component.register` map to ``+`` and ``+=`` - :meth:`~Component.unregister` map to> ``-`` and ``-=`` For example the above could have been written as: .. code-block:: python :linenos: from circuits import Component class Foo(Component): """Foo Component""" class App(Component): """App Component""" def init(self): self += Foo() (App() + Debugger()).run() Implicit Component Registration(s) ---------------------------------- Sometimes it's handy to implicitly register components into another component by simply referencing the other component instance as a class attribute of the other. Example: .. code-block:: python >>> from circuits import Component >>> >>> class Foo(Component): ... """Foo Component""" ... >>> class App(Component): ... """App Component""" ... ... foo = Foo() ... >>> app = App() >>> app.components set([]) >>> The `telnet Example `_ does this for example. circuits-3.1.0/docs/source/man/values.rst0000644000014400001440000000605212402037676021377 0ustar prologicusers00000000000000Values ====== .. module:: circuits.core.values The :mod:`~circuits.core` :class:`~Value` class is an internal part of circuits' `Futures and Promises `_ used to fulfill promises of the return value of an event handler and any associated chains of events and event handlers. Basically when you fire an event ``foo()`` such as: .. code-block:: python x = self.fire(foo()) ``x`` here is an instance of the :class:`~Value` class which will contain the value returned by the event handler for ``foo`` in the ``.value`` property. .. note:: There is also :meth:`~Value.getValue` which can be used to also retrieve the underlying value held in the instance of the :class:`~Value` class but you should not need to use this as the ``.value`` property takes care of this for you. The only other API you may need in your application is the :py:attr:`~Value.notify` which can be used to trigger a ``value_changed`` event when the underlying :class:`~Value` of the event handler has changed. In this way you can do something asynchronously with the event handler's return value no matter when it finishes. Example Code: .. code-block:: python :linenos: #!/usr/bin/python -i from circuits import handler, Event, Component, Debugger class hello(Event): "hello Event" class test(Event): "test Event" class App(Component): def hello(self): return "Hello World!" def test(self): return self.fire(hello()) @handler("hello_value_changed") def _on_hello_value_changed(self, value): print("hello's return value was: {}".format(value)) app = App() Debugger().register(app) Example Session: .. code-block:: python :linenos: $ python -i ../app.py >>> x = app.fire(test()) >>> x.notify = True >>> app.tick() , )> >>> app.tick() >>> app.tick() ] ( )> >>> app.tick() >>> x >>> x.value 'Hello World!' >>> The :py:attr:`Value.notify` attribute can also be set to the name of an event which should be used to fire the ``value_changed`` event to. If the form ``x.notify = True`` used then the event that gets fired is a concatenation of the original event and the ``value_changed`` event. e.g: ``foo_value_changed``. .. note:: This is a bit advanced and should only be used by experienced users of the circuits framework. If you simply want basic synchronization of event handlers it's recommended that you try the :meth:`circuits.Component.call` and :meth:`circuits.Component.wait` synchronization primitives first. circuits-3.1.0/docs/source/man/examples/0000755000014400001440000000000012425013643021152 5ustar prologicusers00000000000000circuits-3.1.0/docs/source/man/examples/handler_annotation.py0000644000014400001440000000054212402037676025403 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import handler, BaseComponent, Debugger class MyComponent(BaseComponent): def __init__(self): super(MyComponent, self).__init__() Debugger().register(self) @handler("started", channel="*") def system_started(self, component): print "Start event detected" MyComponent().run() circuits-3.1.0/docs/source/man/examples/Telnet.dot0000644000014400001440000000020112402037676023115 0ustar prologicusers00000000000000strict digraph { TCPClient -> Select [weight="2.0"]; Telnet -> TCPClient [weight="1.0"]; Telnet -> File [weight="1.0"]; } circuits-3.1.0/docs/source/man/examples/Telnet.png0000644000014400001440000003645112402037676023133 0ustar prologicusers00000000000000PNG  IHDR XvpsBIT|d pHYsaa?i IDATxyt]HB ,b\n]ZEDEK+Z[uqt~u]quu ڊh-n 8f{?A$|Ys7=ԓW>["I$I@2$I$uI$I1H$ID$IRd $I"c$I$I@$I$E"I$)2I$I1H$ID$IRd $I"c$I$I@$I$E"I$)2I$I1H$ID$IRd $I"c$I$I@$I$E"I$)2I$I1H$ID$IRd $I"c$I$I@$I$E"I$)2I$I1H$ID$IRd $I"c$I$I@$I$E"I$)2I$I1H$ID$IRd $I"c$I$I@$I$E"I$)2I$I1H$ID$IRd $I"c$I$I@$I$E"I$)2I$I1H$ID$IRd $I"c$I$I@$I$E"I$)2I$I1H$ID$IRd $I"c$I$I@$I$E"I$)2I$I1H$ID$IRd $I"c$I$I@$I$E"I$)2I$I1H$ID$IRd $I"c$I$I@$I$E"I$)2I$I1H$ID$IRd $I"c$I$I@$I$E"I$)2I$I1H$ID$IRd $I"c$I$I@$I$E"I$)2I$I1H$ID$IRdq I>iӦtRH1dguwj% $Ije˖1fCL}*I=i,u6Ku0psYb$I&̜9nqcǒd89`_`/:f9Tt/3sA\v1D"P $Iڤj~keD2z75S)^f9裹{ׯ_V"I3Ys o 4t|nF -p,I$_$7goa s .18 ]$IuzW98 z;C^`p@&9K$I={6/UVT.GA wp?+[S $IZO&3x'(vnKywtvmZUԜ"I\L}]D>~ ;\2L-+JI$}ck*80 љ S}o9$Iq-ML xuSI$P^^Θ{G cRŋ?cj)I$0vXJI#;u~ށpU 8(ϷܲOQke$IOQ$9/]DkK2q$JKKIjm $I"r^NmX[ӻOV $I/`e5uJGv D=$SNݼ/6"I${= hH];Xoj+Y`ZmV4pO3J]$Iz5¬Y賉{6' oTj/;n̚[tݺ(ּ6ﻵWfp!/g /2zhD*jO$eUUmW^W\.C ;o~@Ϟ Ok3;B<G~8$6s&{ i"W^ih$IkDn+ְaw-/kܸquYIzl\n}$OӃ>  63u5#F'#u $CAv wg`0Xt>,=+)\`KGKx7~A@$IjC |5/9vg5˹xpXK&,cE 5dvb7j $2 _׽li)tW/_ocZPSO߿}i~p0Pl[儡c*0.lنK.+'u8IZXu pT} ݷ2c nvC,[ mi Djjy4v_z)C%m" "}SNeܹTTT׏HAj>f\EUl_3V u.ڂ O:u*ӦMcҥTVVҩS'2d%%% <  ZP6;W^atKL*ջv~Fbȑt9ՑԿG{Kg4>='v wԖ"٭^noO.dTY%#ܗWOYL#<1\w /+dmU,5^4<<ܻbqa/$i k?~)#s9.q5ܛJrmq9pmҥxu]Z aߟZb$5fQUUr7r`2lA[ec'K޽\ /RpӆAo_i$m"iqa2iW9$[~s$ߌOWkW^æָprv}JK1 "iTTTp±27G6-'4޽y7ׯ_ -zuݓ wŋ럸]T],$3Hj 8mp?x!n3;4w؁w}]pZcSF aSk$ah(*hxSO 7ݣDS$}3HjÆO3+=ZD82dv1gn.?55k9vݵgTTkp IZDR͛728/fƍcȑ1UѼԽ;x`y'ԿvQB:@$5UW]Řnl8"$8 ^~r/o@+// ;^fJP`>sCwkvoذҒ$@$5+ئRs`p  N$ۑGw 0;5S ܋poK:@$5JUM .T|L{ug֟ާ} -`:0vk@P -ܷon9@$"Q:uz +j&ikoUNqjm:n$Iҽeeelαm'|C|o}R=-75[\$ IgI >4l07^u#&5X [%p=p$5 m5݀ʂ,+VgϞMlM$Eid}Hz^@8k4Ἆ#Xb-22ccO7v]''I~{JJJu$IR ]R< :hxhT64׿I9(z(<w!sL6۠$Ij5 {pG:MM̵9d=`I /L'b\K.D$$5r&9Y8y23 #n;'ѳ',\HaaHDR~|L~x< $1IM2h x%v.K8sHN==%IRk,IMf9Ù曼Ͳ[ 82bi^L5nQ$57{@$5Y*'J~ pL*®]y $QI[d⟓&w84aI-Tݻ3q$-H@$m޽{߽ʷ L`D"fxn%p5pp"A=7dj'K@$m?S;G=5gMx F`p:͍4w[$I%m;a`HH$`ҥ\{J91\}!@sdL2駟 \IԎ@$5Yu5}7dCɢcr3mt vN$DYs9vqG~x\p'/%IZDR=̜ ^[oWfƌL:sRQQA.ߞgzM$)IMlY8˩$is@$I$EU$I$E"I$)2I$I1H$ID&-Z|w$=0HjPE<0f$IRI ?*+aH$H$uIze?N; ܠ\$5:͝ &G·w5$0HЫACF$'IdI煅0|>$IRJ]% F$7 paMI$Ip$I@$I$E"I$)2I$I1H؂PYw$#1HqW"I:UV Gw5$#1HLz5qtwE$#1H+ypiVqW#I:ԁ̛&;]$I RbE8$IRq ):pH]$IAq!I$cp$I@$I$E"I$)2I$I1HЗ_]$IR R;3s&q,Xw%$I3HȒ%пH$m"У f$u2H@ PV#GB^^I$"sB^qW#IT?}"v w5$I 3Hm\M +qDܕH$mZ" "$I$u H$ID$IRd $I"c$IFrF$ImDj#&N;+$Ij:|:t]$IR@VnR0$IR[fZ*xa D"$IDj (-#z%IJM gP\w5$I"BA.]$IRIA]>$IR{Iu3xH!X$I"c$I$I@UWp.I@r0n^  ̟w%$IDjf<(ׇ$I҆ R34 >N; zI"59sWਣ`F$1Hd2x1ewF$u2H͠~v!"I"5?+3!??j$IZDAEH_CnqW!IԺ@$I$E!X$I"c$I$I@$I$E"5¢EpP^w%$ImS:"lF$mD ACe%qtwE$ImD / iAϞqW#Iv@M;&M#o;j$I6ԀáW]$IRg0q"H]$IRۗ  WZ*\rwI$=D|9|3z@~C$9"55pݰxqnaa$IR1 x11cp$IC૯7G$=3C瞫6G[$IR{gQUZ <\8cµ `H)%I:l7(+ _~qꩮ~%I ꐞ>~Yf qDY$I᭷VgK 3~xJ$_u(O?-]wΝgpU"o$IDFe%LˆPT}]$IDRO¢Eu?ص%Iڥ)S` m=$I @,\>sys{'٠$IR\\KJYns=w|GtI&1  p\IDAT 5!S){o.br98 l=G%>0G23݋1|Ϙ8 Y`J()Ν߆ bI$)^E.pka;L󀞍|ټ0. OO`V=zO~I$H͟?FdAogs4"'$x[ɠAH `mpI$5 (2p+Ogr?lyL A⫿#X+N:!IH̜9ÿL6Kq pL"Mwa{ңGjI$IMaQ[t){ ˖1)#LT9IgK$fw٥RlOG>f+r-(IeZԣ>駟X}pO~>w9%ITZLyy9ߞCV u4=^|1%IT`Ō;˗@ |%fΜC$IڐD-"|͜HC3>w??OzIۛ I$5D J& w}#FЧO:wLyoLՎ[@mͫ8puFLC7"V$x 555;9sp19 7000:P16p {\r%\|̝;~'h"ƏK$iS "`]vؒ%KX|9{qAM+EqOc8 8p{$Hp'rE1`jy饗(..W^ݛ=>Q$cH]ڶI\'o`[Nfm0R {>\uקO.]LUH$>h 4ٳgsW#K$8uEAdk@&N:w_" ma$IȱKqq1]w7UAc]'o8co`7 9E|ﺯ@A~~wF:E$I-RXXwSO=ŰaØ8q"eee@&.nijFs Wzw)e\ Nֻwo:w3<ŋYjU#$IbQ$|L|&*$IJ0YS U.G$CD-bcj"A&B)f)))Iq'"w(֍C9$R$I:<ZĞ{M8?sα"I$Z%]\n+Y.$INBWbN;1/g.y] N8褓?aBĭK$.s1qG k"AErm1.I@Ԣ>h~IGcAMvma˒$IjCJKK)sO j&CnudN>_扒$I= jqEEEKTsD:ͧ-$d9Ǝ5|H$2Edt'YDm/J$BEf[s ~hK]~7/܅3$IjVEO><ӌ=ǻvetOx0L_?^ynFN8!=O`I$('+697pロUHpTP/)TTi,;|[\|e\z~sm6 = ¨QЧOd_K$I 0(vWfܸq7z4SLtΉ9I@ԪdY>CN… LRXX)))_~Uy9"IZ@$I$EA)$I"c$I$I@aUW]$IRcQr%|3|AܕH$u,uHݻ;‚qW#Iq@!%p)пcqW$I1@a0r$ <V]$IRgQիH$}35 !WñjjH$2H@^pP\$IRHA]$II$I1H$ID$IRd $I"c6!`$X$J$I> 550{v[_]$IRf6!//ܨ0CHEEI$]i3Bi)n$IMe6Sq1u|\I$=# $I|Na򸫑$Ij[Ap(- H$i@$I$E!X$I"c$I$I@fjTV]$IRdQg2qW#I@fH{|<J$m"5O>g5H$"]vOނɓF$H]^o[ /@׮qW$I?Ԃ8" !?=z@qW$I/ԂLJj+7j$IJ$I%I$E"I$)2I$I1H1s$IH R^y%'D$0H1wJwtIQ2xy(*w"IebvQn&@a!SI$`I1K$`P0~2$IZDjR)1xV"IaZ<8,,Iw!Z\i@$SI$I﬒$I"c$I$I@6 ͋ I-cڈɓa8䓸+$Ij:F|aY(j$I"ql< \wE$Igڐ|8lH`+$Ijt 0v,TW]$I3HmV[=!KIqW#IAq!i> :%I@$I$E!X$I"c$I$I@vy%IRkdڡ[aժ+$IZDj d2-"j$I2HPQsCAMMI$ R;U\ g_~ > \I$@v[߂#`\xipQI7 C”)+qW#I:tHjy{5J$IRGeH$IC$I$E"I$)2I$I1H$IDVgL&J$IRG`:=BƏwtI RfٳÞ$I-"AओF$g. (++$IR{dRx v9$IR{,IH${߃a$HŐpYΝD$7I$Iq$I@$I$E"I$)2IxcI3HlK_']$Ij 6[á /O>?.Iv F pa`((χ^N$vHjD ?_=\ PVom$3Hj _ wKf̀ X|P$fIJX;pl~8,ITHjj_畕aǶۮ=pp-Iu@$5Iy9{/,[Vc&I9KRt]}~dxhk$IDR g u9xhk$IDv[92^ ㏣I$^I[l>|A5n\B$IDR2?~ϙL8jŊpլ ?K"x rH9Y_34%ճ$IReԬ># CaaRQ˗رa$I U"ÆN;-=3#.IRGeR)8 5sBY?x".I:g[m;!dj5 r9>&NJI5ӵk[z.PT k[o[$IV"!e} p~zN$IRg׷o[z2~0 R$IDR$v N9s,<,^mM$)zɓ>WT\=zUU>SNe֬Yd(((wޔPRRB~Hl"Ibg o}??pj{1rmd2 tA@U23ٓg_n7$I")rA> 3g=bE\oA|[Buu9_n˖qx*ňl}=u< `**t% Gz(?9($IjDR,2;>8 ${o rW{߹|p!r\ 4vj`7t޽y$IlIѣaѢpw߅.)}%ey R)zl5ˑG @$5DR{!X˗W2nX4p9jƶ>F%LиqvitI9\WR얞_sϜJgFf< fnA$mDRzY3O?˄ -V@pJ0rMւI 9KR}YN8~QUف{EԲ$I= bj*.5cI.|`L69soa˒$ulIkXt)wrDo/?̙3'%I bj*.f>LrmT$IDRl>4PC>pa&_wfx$IjDR,,Y/ `-p<09Z~ ^nC$u,I:t(+Wg< `y l|1.IRb+W;0 G85?z݁36ܻ]εop3@/kmocsR$dO$/w:]ҩS'55׳ ,a a _ \XeaCr3gΤnݺ5w$I3H\:f!C1m=}k;Ꜵ+)?fwWTG5;s/¹ $ Xs:p>& p0W >Y'Fa= Ӄ־;Dej:G׾~Aس+!R/q_]bwlp.U{UWWovItI/(jcXD oxcN2˞= CfEhQ$5`Iܲey/` 7yT&?'Qn!>0S}j9p֣ÿ |r+{B$Ij!I+**b]weNp8_nxk5O.;0@,$  A} ^5ױݻ7ƍk+I֑zSOqI'1Fߟy ]$I= bk@T I=Xl6~IYN9M^+IoA8oR*d?@q5MЂRTjb"dA%xAJt` M/qЩ-ضϜB}J={211IO}sĉ{w8Ã$N;u*]7蛡|xl:~8Io` SSS}`}2pnn?z³od#9}t} r|bљ'94{xnܺxO\ ,|V|3?/>P%yʕ~Κ}^p|}=a/o2Y KJ_%]c=q.1ޝ8Ԫ߬OpS?wФ=( LO/69`/nwsp"r8MT\~/~uAx{@Q{;{^$sx0Sދ D^!{qD>\_% @tĝz&?c̍gMhM~tbꝎ9>>?/1Y/_/,5/-w|Xu[] -msfw[[>??vvvh[8 <= *YO!hi/3 <򎭑h*e^o>{-AI!&hIRI2UO3+Y+|PcR7Ѹ٨53'I4(7l14^2̨͏*~f3amO(t2uvt9w.gWw}r,@ `apd؉܎ڹw ]Wǂk8x7$ԒRR-l32ndiܒ+_RD^[P2\<"ҼJk5zfvnmCƀ64?d|}h@P|xQKaދ7/=}%A ,VozǍDBer *.u=m(IFnfxMlD|nw޽[1ێEabe`lk!oy m^rvv_Pc̟7 Rp݈Ũ'.G\=wbpč$tLҬ;qVdE_J*nT] kol{i^sW 3y{[ЃG4+?M~"Xqpsgt\`{3(Jjnh(+upx0B;D2HA#&EBŠ^I 88& MAJ2DDZMJEb08=Rʋm24},0USL ̅GXXY3,Y'99Jsvyx+ĈGy%u JI֧bJʢHUT4Zشeuuc *Xd8$Mg״}kՠMwp]%)&&RbXAJ\.=115RFέ۶E$fe;Uw6jR66f=pz})Is3m_^ tLwt+w{/1;|TkD$OZsٿ..X[.[\5[ؚúf-cۋ?vvwW*S/ 3&5z;!~b/7fwu䠪CTW7 ~}ϟ߹wP3G7f?UGӝ~3ǔzR .琟ywW7v rA_5缽<[ cHRMz&u0`:pQ<bKGD pHYs  rIDATx\{tTչo3{nI,jD< (eEZDBEAl*.ZP+WYg\!b * !y̙ !UcE5̞3}`8+BGrwm۶m6""~ tŚsn۶& 44MطCoYXscnҷK?>XmFp>,yJJ?ф^o0>q?ĶmY ø^ صm"B(\bɓ'nǚs.x-[N2?IC$<1DDD@B$" F!!JD$ʌ$BCv<NEF;ZwxZ3nn4MϷx~~Pb `#GvnBdHڱ& 2"Pb( %Bš0[@%Wt9@jXۛCm'+**222bl*ŋ9犢466ǭ3ܤ+nFn"XHLR lfiMM&Ѷڏ3mML;<;$)9CX8%5#7t?Fcm]meLe7Z{ضe\\>m<(N@ "ی#&);\uؙ Ĥ֖9ɼ썒K]"N!"zstSZv>fŕ́ :5vf`BЩ*l\R{o1x} @Rz~ul۾Pig$&C-=AD1I(2p֎5ID(!I %BL(1rH4ejw -;}uڵ{=N۶` ,6!p޿:8F; 2RSfՈADI6 GD`#Z&#4%B%9]~Cz}g5r&?33{T腪sn?sފɒ֏ݎn!#&pܶD4wSmFdU;?ʫ'%$$Vhin2ƘeY$}[H7-Bs&m;;MRB?]"LH"ܶ8!2 %8HNyh_y巒HHΜv}/fN+]GlokF1eceFl %Eb-F43Ɯ$&IHJ q69fQU Swoxp_̼c/^O+WM,G[` sǶ@0 +_ &\@`ȹm!"M<~dq+F0'==p@[ #a{6`vBbҵhܸ4|ּ=Pfn*_z}Ӵ?MӾ'@ypȑ?qӂ p>|}[9oHdcpɅE{O.b{rޓX\ĺ今eYP%"$֜s׫DwAD+I*WXȍ|/pl۶p|CpieeemmmnxTU$۶%41v}Me9cN2E4"]q;B,KU'(?~? ˲(/¸q-[(R9 䭭Dt]*kJdTNgKKK u4ΡeYDp8db1q󩪚"Ą(BDXLܶToZ뺨Yw;; 4ɶ@ AQ1[\.+eYL4 C$kQ-ۛy_گ&#aΝ;w˖-G~'dY 5kfCCC(RU5==iD&Lp1ߏ"icǎE" YEh$9~>/##Cc@9朻nDm{ӧOOKKs?@fy HLL4Msuѹ  -CKp/We>i}T0Pgxvf-ѣ_m&[>s?|EEHpr- ,p\eeeVJLL\lك>#ȲhѢH$|{キqٲe4M͛7oƌuuuҥK(ȶmYXXm۶3fꫯ61~ǖeۧM ^#G?8q3f̘zo߾qϽWh$)v,h1%iA6ьj]DCGQCGEI "BnBE;w> >oP۴iӉ'6lؐ~Æ ^{?v hnnnkk?pdeeח?ӧO_~=򗿌󏠗;wx 6DQ˵i&1xc9G7r92}Gk׮ؾ}, h̶:gΜp8i\`Auux)Q4 ӧ@ QX,g"?~VVӧhС7onnnKpo5% ̽ё>X)?b^FmniTj#?D@BB@c%Iڿqq… h޽m;m[4Y  >bk֬V8rˠAyfyVV7D9躎/HC0 Ƙa`mpX|>m۫V߿W\!LAQL@ּØ!fԝ3"0NezCC3n'_$.(Q'Hf$K$K!j;y?ok=p5ט)IRMMm ^zi2(X(2Mw6l> >Oxa<^,; .\}~{Сcƌ;v1cxh|C $I(! nYNn譎 Fb܊!IN+j'iDvBYI쐘C"EfCr:"cfeOyO|G%mvwYb# F1 B\N#cH7|{R4ho~YfE"3z-ZsdA)?3T)f³q@lA⥰,Cx}tĉ@(a]B`.舗]BgA;"r邎 8!P(4eʔ',#@G`0HD 8p=ܳo߾ٳgWUU[nv4-+/΢o(O3An܈G5\\C\grwjo0BI0 '{:[u;D=3榛nEnnnrrS6oEADLҿeY,wv9"!B.ZiZ<;p/ޡ(-smvG$.5:FPX{K_"޿<~.=O-c>wT.b{rޓJ@|| i%tEXtdate:create2014-03-07T23:13:57+10:00Mg%tEXtdate:modify2014-03-07T23:12:40+10:00)ߊ{IENDB`circuits-3.1.0/docs/source/_static/rtd.css0000644000014400001440000003563412402037676021534 0ustar prologicusers00000000000000/* * 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; max-width: 55em; 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; } /* 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 { 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; } /* 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 { padding: 0.5em 0; } 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 and warnings */ div.admonition, div.warning { 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 { margin: 0.5em 1em 0.5em 1em; padding: 0; } div.admonition pre, div.warning pre { margin: 0.4em 1em 0.4em 1em; } div.admonition p.admonition-title, div.warning p.admonition-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 { margin: 0.1em 0.5em 0.5em 3em; padding: 0; } /* Admonitions only */ div.admonition { border: 1px solid #609060; background-color: #e9ffe9; } div.admonition p.admonition-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; } 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; } /* 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 { margin: 1em 2em; } /* MOBILE LAYOUT -------------------------------------------------------------- */ @media screen and (max-width: 600px) { h1, h2, h3, h4, h5 { position: relative; } ul { padding-left: 1.75em; } 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 .badge { float: none; margin: 1em auto; position: static; } .rtd_doc_footer .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; } } circuits-3.1.0/docs/source/_static/tracsphinx.css0000644000014400001440000000531712402037676023121 0ustar prologicusers00000000000000/* Trac specific styling */ @import url("sphinxdoc.css"); /* Structure */ div.footer { background-color: #4b4d4d; text-align: center; } div.bodywrapper { border-right: none; } /* Sidebar */ div.sphinxsidebarwrapper { -moz-box-shadow: 2px 2px 7px 0 grey; -webkit-box-shadow: 2px 2px 7px 0 grey; box-shadow: 2px 2px 7px 0 grey; padding: 0 0 1px .4em; } div.sphinxsidebar h3 a, div.sphinxsidebar h4 a { color: #b00; } div.sphinxsidebar h3, div.sphinxsidebar h4 { padding: 0; color: black; } div.sphinxsidebar h3, div.sphinxsidebar h4 { background: none; border: none; border-bottom: 1px solid #ddd; } div.sphinxsidebar input { border: 1px solid #d7d7d7; } p.searchtip { font-size: 90%; color: #999; } /* Navigation */ div.related ul li a { color: #b00 } div.related ul li a:hover { color: #b00; } /* Content */ body { font: normal 13px Verdana,Arial,'Bitstream Vera Sans',Helvetica,sans-serif; background-color: #4b4d4d; border: none; border-top: 1px solid #aaa; } h1, h2, h3, h4 { font-family: Arial,Verdana,'Bitstream Vera Sans',Helvetica,sans-serif; font-weight: bold; letter-spacing: -0.018em; page-break-after: avoid; } h1 { color: #555 } h2 { border-bottom: 1px solid #ddd } div.body a { text-decoration: none } a, a tt { color: #b00 } a:visited, a:visited tt { color: #800 } :link:hover, :visited:hover, a:link:hover tt, a:visited:hover tt { background-color: #eee; color: #555; } a.headerlink, a.headerlink:hover { color: #d7d7d7 !important; font-size: .8em; font-weight: normal; vertical-align: text-top; margin: 0; padding: .5em; } a.headerlink:hover { background: none; } 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: #d7d7d7 !important; } dl.class { -moz-box-shadow: 1px 1px 6px 0 #888; -webkit-box-shadow: 1px 1px 6px 0 #888; box-shadow: 1px 1px 6px 0 #888; padding: .5em; } dl.function { margin-bottom: 24px; } dl.class > dt, dl.function > dt { border-bottom: 1px solid #ddd; } th.field-name { white-space: nowrap; font-size: 90%; color: #555; } td.field-body > ul { list-style-type: square; } td.field-body > ul > li > strong { font-weight: normal; font-style: italic; } /* Admonitions */ div.admonition p.admonition-title, div.warning p.admonition-title { background: none; color: #555; border: none; } div.admonition { background: none; border: none; border-left: 2px solid #acc; } div.warning { background: none; border: none; border-left: 3px solid #c33; } /* Search */ dl:target, dt:target, .highlighted { background-color: #ffa } circuits-3.1.0/docs/source/readme.rst0000644000014400001440000000012312402037676020553 0ustar prologicusers00000000000000================ PyPi README Page ================ .. include:: ../../README.rst circuits-3.1.0/docs/source/start/0000755000014400001440000000000012425013643017716 5ustar prologicusers00000000000000circuits-3.1.0/docs/source/start/quick.rst0000644000014400001440000000122712402037676021575 0ustar prologicusers00000000000000.. _pip: http://pypi.python.org/pypi/pip Quick Start Guide ================= The easiest way to download and install circuits is to use the `pip`_ command: .. code-block:: sh $ pip install circuits Now that you have successfully downloaded and installed circuits, let's test that circuits is properly installed and working. First, let's check the installed version: .. code-block:: python >>> import circuits >>> print circuits.__version__ This should output: .. program-output: python -c "import circuits; print circuits.__version__" Try some of the examples in the examples/ directory shipped with the distribution. Have fun :) circuits-3.1.0/docs/source/start/index.rst0000644000014400001440000000016512402037676021570 0ustar prologicusers00000000000000Getting Started =============== .. toctree:: :maxdepth: 2 quick downloading installing requirements circuits-3.1.0/docs/source/start/installing.rst0000644000014400001440000000173412402037676022630 0ustar prologicusers00000000000000Installing ========== Installing from a Source Package -------------------------------- *If you have downloaded a source archive, this applies to you.* .. code-block:: sh $ python setup.py install For other installation options see: .. code-block:: sh $ python setup.py --help install Installing from the Development Repository ------------------------------------------ *If you have cloned the source code repository, this applies to you.* If you have cloned the development repository, it is recommended that you use setuptools and use the following command: .. code-block:: sh $ python setup.py develop This will allow you to regularly update your copy of the circuits development repository by simply performing the following in the circuits working directory: .. code-block:: sh $ hg pull -u .. note:: You do not need to reinstall if you have installed with setuptools via the circuits repository and used setuptools to install in "develop" mode. circuits-3.1.0/docs/source/start/requirements.rst0000644000014400001440000000140312402037676023200 0ustar prologicusers00000000000000.. _Python Standard Library: http://docs.python.org/library/ Requirements and Dependencies ============================= - circuits has no **required** dependencies beyond the `Python Standard Library`_. - Python: >= 2.6 or pypy >= 2.0 :Supported Platforms: Linux, FreeBSD, Mac OS X, Windows :Supported Python Versions: 2.6, 2.7, 3.2, 3.3 :Supported pypy Versions: 2.0 Other Optional Dependencies --------------------------- These dependencies are not strictly required and only add additional features. - `pydot `_ -- For rendering component graphs of an application. - `pyinotify `_ -- For asynchronous file system event notifications and the :mod:`circuits.io.notify` module. circuits-3.1.0/docs/source/start/downloading.rst0000644000014400001440000000124412402037676022765 0ustar prologicusers00000000000000Downloading =========== Latest Stable Release --------------------- The latest stable releases can be downloaded from the `Downloads `_ page (*specifically the Tags tab*). Latest Development Source Code ------------------------------ We use `Mercurial `_ for source control and code sharing. The latest development branch can be cloned using the following command: .. code-block:: sh $ hg clone https://bitbucket.org/circuits/circuits/ For further instructions on how to use Mercurial, please refer to the `Mercurial Book `_. circuits-3.1.0/docs/source/faq.rst0000644000014400001440000000373512402037676020101 0ustar prologicusers00000000000000.. _#circuits IRC Channel: http://webchat.freenode.net/?randomnick=1&channels=circuits&uio=d4 .. _Mailing List: http://groups.google.com/group/circuits-users .. faq: Frequently Asked Questions ========================== .. general: General ------- ... What is circuits? circuits is an event-driven framework with a high focus on Component architectures making your life as a software developer much easier. circuits allows you to write maintainable and scalable systems easily ... Can I write networking applications with circuits? Yes absolutely. circuits comes with socket I/O components for tcp, udp and unix sockets with asynchronous polling implementations for select, poll, epoll and kqueue. ... Can I integrate circuits with a GUI library? This is entirely possible. You will have to hook into the GUI's main loop. ... What are the core concepts in circuits? Components and Events. Components are maintainable reusable units of behavior that communicate with other components via a powerful message passing system. ... How would you compare circuits to Twisted? Others have said that circuits is very elegant in terms of it's usage. circuits' component architecture allows you to define clear interfaces between components while maintaining a high level of scalability and maintainability. ... Can Components communicate with other processes? Yes. circuits implements currently component bridging and nodes ... What platforms does circuits support? circuits currently supports Linux, FreeBSD, OSX and Windows and is currently continually tested against Linux and Windows against Python versions 2.6, 2.7, 3.1 and 3.2 ... Can circuits be used for concurrent or distributed programming? Yes. We also have plans to build more distributed components into circuits making distributing computing with circuits very trivial. Got more questions? * Send an email to our `Mailing List`_. * Talk to us online on the `#circuits IRC Channel`_ circuits-3.1.0/docs/source/index.rst0000644000014400001440000000131212402037676020426 0ustar prologicusers00000000000000================================ circuits |version| Documentation ================================ :Release: |release| :Date: |today| About ===== .. include:: ../../README.rst .. _documentation-index: Documentation ============= .. toctree:: :maxdepth: 1 start/index tutorials/index man/index web/index api/index dev/index changes roadmap contributors faq .. toctree:: :hidden: glossary examples/index .. ifconfig:: devel .. toctree:: :hidden: todo readme Indices and tables ================== * :ref:`Index ` * :ref:`modindex` * :ref:`search` * :doc:`glossary` .. ifconfig:: devel * :doc:`todo` * :doc:`readme` circuits-3.1.0/docs/source/api/0000755000014400001440000000000012425013643017332 5ustar prologicusers00000000000000circuits-3.1.0/docs/source/api/circuits.core.events.rst0000644000014400001440000000022712402037676024153 0ustar prologicusers00000000000000circuits.core.events module =========================== .. automodule:: circuits.core.events :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.dispatchers.rst0000644000014400001440000000064612402037676025012 0ustar prologicusers00000000000000circuits.web.dispatchers package ================================ Submodules ---------- .. toctree:: circuits.web.dispatchers.dispatcher circuits.web.dispatchers.jsonrpc circuits.web.dispatchers.static circuits.web.dispatchers.virtualhosts circuits.web.dispatchers.xmlrpc Module contents --------------- .. automodule:: circuits.web.dispatchers :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.parsers.rst0000644000014400001440000000050312402037676024150 0ustar prologicusers00000000000000circuits.web.parsers package ============================ Submodules ---------- .. toctree:: circuits.web.parsers.http circuits.web.parsers.multipart circuits.web.parsers.querystring Module contents --------------- .. automodule:: circuits.web.parsers :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.node.server.rst0000644000014400001440000000022712402037676024152 0ustar prologicusers00000000000000circuits.node.server module =========================== .. automodule:: circuits.node.server :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.core.helpers.rst0000644000014400001440000000023212402037676024305 0ustar prologicusers00000000000000circuits.core.helpers module ============================ .. automodule:: circuits.core.helpers :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.io.serial.rst0000644000014400001440000000022112402037676023577 0ustar prologicusers00000000000000circuits.io.serial module ========================= .. automodule:: circuits.io.serial :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.main.rst0000644000014400001440000000021612402037676023416 0ustar prologicusers00000000000000circuits.web.main module ======================== .. automodule:: circuits.web.main :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.rst0000644000014400001440000000135412402037676022477 0ustar prologicusers00000000000000circuits.web package ==================== Subpackages ----------- .. toctree:: circuits.web.dispatchers circuits.web.parsers circuits.web.websockets Submodules ---------- .. toctree:: circuits.web.client circuits.web.constants circuits.web.controllers circuits.web.errors circuits.web.events circuits.web.exceptions circuits.web.headers circuits.web.http circuits.web.loggers circuits.web.main circuits.web.processors circuits.web.servers circuits.web.sessions circuits.web.tools circuits.web.url circuits.web.utils circuits.web.wrappers circuits.web.wsgi Module contents --------------- .. automodule:: circuits.web :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.dispatchers.virtualhosts.rst0000644000014400001440000000031212402037676027546 0ustar prologicusers00000000000000circuits.web.dispatchers.virtualhosts module ============================================ .. automodule:: circuits.web.dispatchers.virtualhosts :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.wsgi.rst0000644000014400001440000000021612402037676023443 0ustar prologicusers00000000000000circuits.web.wsgi module ======================== .. automodule:: circuits.web.wsgi :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.parsers.querystring.rst0000644000014400001440000000027312402037676026547 0ustar prologicusers00000000000000circuits.web.parsers.querystring module ======================================= .. automodule:: circuits.web.parsers.querystring :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.net.events.rst0000644000014400001440000000022412402037676024006 0ustar prologicusers00000000000000circuits.net.events module ========================== .. automodule:: circuits.net.events :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.protocols.irc.rst0000644000014400001440000000023512402037676024517 0ustar prologicusers00000000000000circuits.protocols.irc module ============================= .. automodule:: circuits.protocols.irc :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.core.manager.rst0000644000014400001440000000023212402037676024255 0ustar prologicusers00000000000000circuits.core.manager module ============================ .. automodule:: circuits.core.manager :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.node.rst0000644000014400001440000000050012402037676022637 0ustar prologicusers00000000000000circuits.node package ===================== Submodules ---------- .. toctree:: circuits.node.client circuits.node.events circuits.node.node circuits.node.server circuits.node.utils Module contents --------------- .. automodule:: circuits.node :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.node.events.rst0000644000014400001440000000022712402037676024150 0ustar prologicusers00000000000000circuits.node.events module =========================== .. automodule:: circuits.node.events :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.dispatchers.static.rst0000644000014400001440000000027012402037676026271 0ustar prologicusers00000000000000circuits.web.dispatchers.static module ====================================== .. automodule:: circuits.web.dispatchers.static :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.node.client.rst0000644000014400001440000000022712402037676024122 0ustar prologicusers00000000000000circuits.node.client module =========================== .. automodule:: circuits.node.client :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.protocols.rst0000644000014400001440000000051212402037676023741 0ustar prologicusers00000000000000circuits.protocols package ========================== Submodules ---------- .. toctree:: circuits.protocols.http circuits.protocols.irc circuits.protocols.line circuits.protocols.websocket Module contents --------------- .. automodule:: circuits.protocols :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.loggers.rst0000644000014400001440000000022712402037676024136 0ustar prologicusers00000000000000circuits.web.loggers module =========================== .. automodule:: circuits.web.loggers :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.dispatchers.xmlrpc.rst0000644000014400001440000000027012402037676026307 0ustar prologicusers00000000000000circuits.web.dispatchers.xmlrpc module ====================================== .. automodule:: circuits.web.dispatchers.xmlrpc :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.url.rst0000644000014400001440000000021312402037676023271 0ustar prologicusers00000000000000circuits.web.url module ======================= .. automodule:: circuits.web.url :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.node.node.rst0000644000014400001440000000022112402037676023563 0ustar prologicusers00000000000000circuits.node.node module ========================= .. automodule:: circuits.node.node :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.io.rst0000644000014400001440000000046212402037676022330 0ustar prologicusers00000000000000circuits.io package =================== Submodules ---------- .. toctree:: circuits.io.events circuits.io.file circuits.io.notify circuits.io.process circuits.io.serial Module contents --------------- .. automodule:: circuits.io :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.dispatchers.jsonrpc.rst0000644000014400001440000000027312402037676026463 0ustar prologicusers00000000000000circuits.web.dispatchers.jsonrpc module ======================================= .. automodule:: circuits.web.dispatchers.jsonrpc :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.constants.rst0000644000014400001440000000023512402037676024507 0ustar prologicusers00000000000000circuits.web.constants module ============================= .. automodule:: circuits.web.constants :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.exceptions.rst0000644000014400001440000000024012402037676024650 0ustar prologicusers00000000000000circuits.web.exceptions module ============================== .. automodule:: circuits.web.exceptions :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.core.timers.rst0000644000014400001440000000022712402037676024152 0ustar prologicusers00000000000000circuits.core.timers module =========================== .. automodule:: circuits.core.timers :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.version.rst0000644000014400001440000000021312402037676023400 0ustar prologicusers00000000000000circuits.version module ======================= .. automodule:: circuits.version :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.events.rst0000644000014400001440000000022412402037676023775 0ustar prologicusers00000000000000circuits.web.events module ========================== .. automodule:: circuits.web.events :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.client.rst0000644000014400001440000000022412402037676023747 0ustar prologicusers00000000000000circuits.web.client module ========================== .. automodule:: circuits.web.client :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.utils.rst0000644000014400001440000000022112402037676023626 0ustar prologicusers00000000000000circuits.web.utils module ========================= .. automodule:: circuits.web.utils :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.parsers.http.rst0000644000014400001440000000024612402037676025132 0ustar prologicusers00000000000000circuits.web.parsers.http module ================================ .. automodule:: circuits.web.parsers.http :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.core.values.rst0000644000014400001440000000022712402037676024146 0ustar prologicusers00000000000000circuits.core.values module =========================== .. automodule:: circuits.core.values :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.tools.rst0000644000014400001440000000022112402037676023626 0ustar prologicusers00000000000000circuits.web.tools module ========================= .. automodule:: circuits.web.tools :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.rst0000644000014400001440000000063112402037676021720 0ustar prologicusers00000000000000circuits package ================ Subpackages ----------- .. toctree:: circuits.app circuits.core circuits.io circuits.net circuits.node circuits.protocols circuits.tools circuits.web Submodules ---------- .. toctree:: circuits.six circuits.version Module contents --------------- .. automodule:: circuits :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.wrappers.rst0000644000014400001440000000023212402037676024333 0ustar prologicusers00000000000000circuits.web.wrappers module ============================ .. automodule:: circuits.web.wrappers :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.protocols.http.rst0000644000014400001440000000024012402037676024715 0ustar prologicusers00000000000000circuits.protocols.http module ============================== .. automodule:: circuits.protocols.http :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.http.rst0000644000014400001440000000021612402037676023451 0ustar prologicusers00000000000000circuits.web.http module ======================== .. automodule:: circuits.web.http :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.headers.rst0000644000014400001440000000022712402037676024107 0ustar prologicusers00000000000000circuits.web.headers module =========================== .. automodule:: circuits.web.headers :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.core.utils.rst0000644000014400001440000000022412402037676024004 0ustar prologicusers00000000000000circuits.core.utils module ========================== .. automodule:: circuits.core.utils :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/index.rst0000644000014400001440000000016412402037676021203 0ustar prologicusers00000000000000================= API Documentation ================= .. toctree:: :maxdepth: 1 :glob: circuits* circuits-3.1.0/docs/source/api/circuits.core.components.rst0000644000014400001440000000024312402037676025032 0ustar prologicusers00000000000000circuits.core.components module =============================== .. automodule:: circuits.core.components :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.parsers.multipart.rst0000644000014400001440000000026512402037676026175 0ustar prologicusers00000000000000circuits.web.parsers.multipart module ===================================== .. automodule:: circuits.web.parsers.multipart :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.io.notify.rst0000644000014400001440000000022112402037676023630 0ustar prologicusers00000000000000circuits.io.notify module ========================= .. automodule:: circuits.io.notify :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.protocols.websocket.rst0000644000014400001440000000025712402037676025734 0ustar prologicusers00000000000000circuits.protocols.websocket module =================================== .. automodule:: circuits.protocols.websocket :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.errors.rst0000644000014400001440000000022412402037676024005 0ustar prologicusers00000000000000circuits.web.errors module ========================== .. automodule:: circuits.web.errors :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.sessions.rst0000644000014400001440000000023212402037676024336 0ustar prologicusers00000000000000circuits.web.sessions module ============================ .. automodule:: circuits.web.sessions :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.core.workers.rst0000644000014400001440000000023212402037676024337 0ustar prologicusers00000000000000circuits.core.workers module ============================ .. automodule:: circuits.core.workers :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.tools.rst0000644000014400001440000000025012402037676023054 0ustar prologicusers00000000000000circuits.tools package ====================== Module contents --------------- .. automodule:: circuits.tools :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.core.bridge.rst0000644000014400001440000000022712402037676024103 0ustar prologicusers00000000000000circuits.core.bridge module =========================== .. automodule:: circuits.core.bridge :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.processors.rst0000644000014400001440000000024012402037676024671 0ustar prologicusers00000000000000circuits.web.processors module ============================== .. automodule:: circuits.web.processors :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.dispatchers.dispatcher.rst0000644000014400001440000000030412402037676027126 0ustar prologicusers00000000000000circuits.web.dispatchers.dispatcher module ========================================== .. automodule:: circuits.web.dispatchers.dispatcher :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.websockets.client.rst0000644000014400001440000000026512402037676026124 0ustar prologicusers00000000000000circuits.web.websockets.client module ===================================== .. automodule:: circuits.web.websockets.client :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.websockets.rst0000644000014400001440000000046112402037676024645 0ustar prologicusers00000000000000circuits.web.websockets package =============================== Submodules ---------- .. toctree:: circuits.web.websockets.client circuits.web.websockets.dispatcher Module contents --------------- .. automodule:: circuits.web.websockets :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.app.daemon.rst0000644000014400001440000000022412402037676023737 0ustar prologicusers00000000000000circuits.app.daemon module ========================== .. automodule:: circuits.app.daemon :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.six.rst0000644000014400001440000000017712402037676022527 0ustar prologicusers00000000000000circuits.six module =================== .. automodule:: circuits.six :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.core.debugger.rst0000644000014400001440000000023512402037676024432 0ustar prologicusers00000000000000circuits.core.debugger module ============================= .. automodule:: circuits.core.debugger :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.app.rst0000644000014400001440000000033712402037676022502 0ustar prologicusers00000000000000circuits.app package ==================== Submodules ---------- .. toctree:: circuits.app.daemon Module contents --------------- .. automodule:: circuits.app :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.core.loader.rst0000644000014400001440000000022712402037676024115 0ustar prologicusers00000000000000circuits.core.loader module =========================== .. automodule:: circuits.core.loader :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.core.rst0000644000014400001440000000101612402037676022645 0ustar prologicusers00000000000000circuits.core package ===================== Submodules ---------- .. toctree:: circuits.core.bridge circuits.core.components circuits.core.debugger circuits.core.events circuits.core.handlers circuits.core.helpers circuits.core.loader circuits.core.manager circuits.core.pollers circuits.core.timers circuits.core.utils circuits.core.values circuits.core.workers Module contents --------------- .. automodule:: circuits.core :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.io.file.rst0000644000014400001440000000021312402037676023240 0ustar prologicusers00000000000000circuits.io.file module ======================= .. automodule:: circuits.io.file :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.io.events.rst0000644000014400001440000000022112402037676023624 0ustar prologicusers00000000000000circuits.io.events module ========================= .. automodule:: circuits.io.events :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.core.handlers.rst0000644000014400001440000000023512402037676024446 0ustar prologicusers00000000000000circuits.core.handlers module ============================= .. automodule:: circuits.core.handlers :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.net.rst0000644000014400001440000000036712402037676022513 0ustar prologicusers00000000000000circuits.net package ==================== Submodules ---------- .. toctree:: circuits.net.events circuits.net.sockets Module contents --------------- .. automodule:: circuits.net :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.controllers.rst0000644000014400001440000000024312402037676025040 0ustar prologicusers00000000000000circuits.web.controllers module =============================== .. automodule:: circuits.web.controllers :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.servers.rst0000644000014400001440000000022712402037676024165 0ustar prologicusers00000000000000circuits.web.servers module =========================== .. automodule:: circuits.web.servers :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.io.process.rst0000644000014400001440000000022412402037676024001 0ustar prologicusers00000000000000circuits.io.process module ========================== .. automodule:: circuits.io.process :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.core.pollers.rst0000644000014400001440000000023212402037676024323 0ustar prologicusers00000000000000circuits.core.pollers module ============================ .. automodule:: circuits.core.pollers :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.protocols.line.rst0000644000014400001440000000024012402037676024665 0ustar prologicusers00000000000000circuits.protocols.line module ============================== .. automodule:: circuits.protocols.line :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.net.sockets.rst0000644000014400001440000000022712402037676024160 0ustar prologicusers00000000000000circuits.net.sockets module =========================== .. automodule:: circuits.net.sockets :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.web.websockets.dispatcher.rst0000644000014400001440000000030112402037676026763 0ustar prologicusers00000000000000circuits.web.websockets.dispatcher module ========================================= .. automodule:: circuits.web.websockets.dispatcher :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/api/circuits.node.utils.rst0000644000014400001440000000022412402037676024001 0ustar prologicusers00000000000000circuits.node.utils module ========================== .. automodule:: circuits.node.utils :members: :undoc-members: :show-inheritance: circuits-3.1.0/docs/source/todo.rst0000644000014400001440000000006612402037676020271 0ustar prologicusers00000000000000Documentation TODO ================== .. todolist:: circuits-3.1.0/docs/source/_templates/0000755000014400001440000000000012425013643020716 5ustar prologicusers00000000000000circuits-3.1.0/docs/source/_templates/layout.html0000644000014400001440000000160412402037676023131 0ustar prologicusers00000000000000{% extends "!layout.html" %} {%- block extrahead %} {{ super() }} {% endblock %} {% block sidebarlogo %} {{ super() }} {% if fabric_tags %}

    Project Versions

    {% endif %} {% endblock %} circuits-3.1.0/docs/source/conf.py0000644000014400001440000001762112425011010020051 0ustar prologicusers00000000000000# -*- coding: utf-8 -*- # # circuits documentation build configuration file, created by # sphinx-quickstart on Thu Feb 4 09:44:50 2010. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys from os import path from imp import new_module # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use path.abspath to make it absolute, like shown here. sys.path.insert(0, path.abspath('../..')) version_module = new_module("version") exec( compile( open( path.abspath(path.join( path.dirname(__file__), "../../circuits/version.py" )), "r" ).read(), "../../circuits/version.py", "exec" ), version_module.__dict__ ) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = [] bitbucket_project_url = 'https://bitbucket.org/circuits/circuits' # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'circuits' copyright = u'2004-2013, James Mills' url = "http://circuitsframework.com/" # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = ".".join(map(str, version_module.version_info[:2])) # The full version, including alpha/beta/rc tags. release = version_module.version # Devel or Release mode for the documentation (if devel, include TODOs, # can also be used in conditionals: .. ifconfig :: devel) devel = version_module.version_info[-1] == "dev" # -- Autodoc extensions.append('sphinx.ext.autodoc') autodoc_default_flags = ['show-inheritance'] autoclass_content = 'both' autodoc_member_order = 'bysource' # -- AutoSummary extensions.append('sphinx.ext.autosummary') # -- Graphviz extensions.append('sphinx.ext.graphviz') # -- Conditional content (see setup() below) extensions.append('sphinx.ext.ifconfig') # -- Keep track of :todo: items extensions.append('sphinx.ext.todo') todo_include_todos = devel # -- track statistics with google analytics #extensions.append("sphinxcontrib.googleanalytics") #googleanalytics_id = "UA-38618352-3" # -- release and issues extensions.append("releases") # 'releases' (changelog) settings releases_debug = True releases_issue_uri = "https://bitbucket.org/circuits/circuits/issue/%s" releases_release_uri = "https://bitbucket.org/circuits/circuits/src/tip/?at=%s" releases_document_name = "changes" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = [] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' html_style = 'rtd.css' html_context = {} # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. html_theme_path = ["_themes"] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = "_static/logo.png" # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'circuitsdoc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ( 'index', 'circuits.tex', u'circuits Documentation', u'James Mills', 'manual' ), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True def setup(app): # ifconfig variables app.add_config_value('devel', '', devel) circuits-3.1.0/docs/source/tutorials/0000755000014400001440000000000012425013643020607 5ustar prologicusers00000000000000circuits-3.1.0/docs/source/tutorials/woof/0000755000014400001440000000000012425013643021561 5ustar prologicusers00000000000000circuits-3.1.0/docs/source/tutorials/woof/004.py0000644000014400001440000000037612402037676022453 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import Component class Bob(Component): def started(self, *args): print("Hello I'm Bob!") class Fred(Component): def started(self, *args): print("Hello I'm Fred!") (Bob() + Fred()).run() circuits-3.1.0/docs/source/tutorials/woof/005.py0000644000014400001440000000100112402037676022436 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import Component from circuits.tools import graph class Pound(Component): def __init__(self): super(Pound, self).__init__() self.bob = Bob().register(self) self.fred = Fred().register(self) def started(self, *args): print(graph(self.root)) class Bob(Component): def started(self, *args): print("Hello I'm Bob!") class Fred(Component): def started(self, *args): print("Hello I'm Fred!") Pound().run() circuits-3.1.0/docs/source/tutorials/woof/006.py0000644000014400001440000000076512402037676022457 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import Component, Event class woof(Event): """woof Event""" class Pound(Component): def __init__(self): super(Pound, self).__init__() self.bob = Bob().register(self) self.fred = Fred().register(self) def started(self, *args): self.fire(woof()) class Dog(Component): def woof(self): print("Woof! I'm %s!" % self.name) class Bob(Dog): """Bob""" class Fred(Dog): """Fred""" Pound().run() circuits-3.1.0/docs/source/tutorials/woof/008.py0000644000014400001440000000104012402037676022444 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import Component, Event class bark(Event): """bark Event""" class Pound(Component): def __init__(self): super(Pound, self).__init__() self.bob = Bob().register(self) self.fred = Fred().register(self) class Dog(Component): def started(self, *args): self.fire(bark()) def bark(self): print("Woof! I'm %s!" % self.name) class Bob(Dog): """Bob""" channel = "bob" class Fred(Dog): """Fred""" channel = "fred" Pound().run() circuits-3.1.0/docs/source/tutorials/woof/009.py0000644000014400001440000000104312402037676022450 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import Component, Event class bark(Event): """bark Event""" class Pound(Component): def __init__(self): super(Pound, self).__init__() self.bob = Bob().register(self) self.fred = Fred().register(self) class Dog(Component): def started(self, *args): self.fire(bark()) def bark(self): print("Woof! I'm %s!" % name) # noqa class Bob(Dog): """Bob""" channel = "bob" class Fred(Dog): """Fred""" channel = "fred" Pound().run() circuits-3.1.0/docs/source/tutorials/woof/index.rst0000644000014400001440000002765712402037676023452 0ustar prologicusers00000000000000.. _Python Programming Language: http://www.python.org/ Tutorial ======== Overview -------- Welcome to the circuits tutorial. This 5-minute tutorial will guide you through the basic concepts of circuits. The goal is to introduce new concepts incrementally with walk-through examples that you can try out! By the time you've finished, you should have a good basic understanding of circuits, how it feels and where to go from there. The Component ------------- First up, let's show how you can use the ``Component`` and run it in a very simple application. .. literalinclude:: 001.py :language: python :linenos: :download:`Download 001.py <001.py>` Okay so that's pretty boring as it doesn't do very much! But that's okay... Read on! Let's try to create our own custom Component called ``MyComponent``. This is done using normal Python subclassing. .. literalinclude:: 002.py :language: python :linenos: :download:`Download 002.py <002.py>` Okay, so this still isn't very useful! But at least we can create custom components with the behavior we want. Let's move on to something more interesting... .. note:: Component(s) in circuits are what sets circuits apart from other Asynchronous or Concurrent Application Frameworks. Components(s) are used as building blocks from simple behaviors to complex ones (*composition of simpler components to form more complex ones*). Event Handlers -------------- Let's now extend our little example to say "Hello World!" when it's started. .. literalinclude:: 003.py :language: python :linenos: :download:`Download 003.py <003.py>` Here we've created a simple **Event Handler** that listens for the ``started`` Event. .. note:: Methods defined in a custom subclassed ``Component`` are automatically turned into **Event Handlers**. The only exception to this are methods prefixed with an underscore (``_``). .. note:: If you do not want this *automatic* behavior, inherit from ``BaseComponent`` instead which means you will **have to** use the ``~circuits.core.handlers.handler`` decorator to define your **Event Handlers**. Running this we get:: Hello World! Alright! We have something slightly more useful! Whoohoo it says hello! .. note:: Press ^C (*CTRL + C*) to exit. Registering Components ---------------------- So now that we've learned how to use a Component, create a custom Component and create simple Event Handlers, let's try something a bit more complex by creating a complex component made up of two simpler ones. .. note:: We call this **Component Composition** which is the very essence of the circuits Application Framework. Let's create two components: - ``Bob`` - ``Fred`` .. literalinclude:: 004.py :language: python :linenos: :download:`Download 004.py <004.py>` Notice the way we register the two components ``Bob`` and ``Fred`` together ? Don't worry if this doesn't make sense right now. Think of it as putting two components together and plugging them into a circuit board. Running this example produces the following result:: Hello I'm Bob! Hello I'm Fred! Cool! We have two components that each do something and print a simple message on the screen! Complex Components ------------------ Now, what if we wanted to create a Complex Component? Let's say we wanted to create a new Component made up of two other smaller components? We can do this by simply registering components to a Complex Component during initialization. .. note:: This is also called **Component Composition** and avoids the classical `Diamond problem `_ of Multiple Inheritance. In circuits we do not use Multiple Inheritance to create **Complex Components** made up of two or more base classes of components, we instead compose them together via registration. .. literalinclude:: 005.py :language: python :linenos: :download:`Download 005.py <005.py>` So now ``Pound`` is a Component that consists of two other components registered to it: ``Bob`` and ``Fred`` The output of this is identical to the previous:: * * * Hello I'm Bob! Hello I'm Fred! The only difference is that ``Bob`` and ``Fred`` are now part of a more Complex Component called ``Pound``. This can be illustrated by the following diagram: .. graphviz:: digraph G { "Pound-1344" -> "Bob-9b0c"; "Pound-1344" -> "Fred-e98a"; } .. note:: The extra lines in the above output are an ASCII representation of the above graph (*produced by pydot + graphviz*). Cool :-) Component Inheritance --------------------- Since circuits is a framework written for the `Python Programming Language`_ it naturally inherits properties of Object Orientated Programming (OOP) -- such as inheritance. So let's take our ``Bob`` and ``Fred`` components and create a Base Component called ``Dog`` and modify our two dogs (``Bob`` and ``Fred``) to subclass this. .. literalinclude:: 006.py :language: python :linenos: :download:`Download 006.py <006.py>` Now let's try to run this and see what happens:: Woof! I'm Bob! Woof! I'm Fred! So both dogs barked! Hmmm Component Channels ------------------ What if we only want one of our dogs to bark? How do we do this without causing the other one to bark as well? Easy! Use a separate ``channel`` like so: .. literalinclude:: 007.py :language: python :linenos: :download:`Download 007.py <007.py>` .. note:: Events can be fired with either the ``.fire(...)`` or ``.fireEvent(...)`` method. If you run this, you'll get:: Woof! I'm Bob! Event Objects ------------- So far in our tutorial we have been defining an Event Handler for a builtin Event called ``started``. What if we wanted to define our own Event Handlers and our own Events? You've already seen how easy it is to create a new Event Handler by simply defining a normal Python method on a Component. Defining your own Events helps with documentation and testing and makes things a little easier. Example:: class MyEvent(Event): """MyEvent""" So here's our example where we'll define a new Event called ``Bark`` and make our ``Dog`` fire a ``Bark`` event when our application starts up. .. literalinclude:: 008.py :language: python :linenos: :download:`Download 008.py <008.py>` If you run this, you'll get:: Woof! I'm Bob! Woof! I'm Fred! The Debugger ------------ Lastly... Asynchronous programming has many advantages but can be a little harder to write and follow. A silently caught exception in an Event Handler, or an Event that never gets fired, or any number of other weird things can cause your application to fail and leave you scratching your head. Fortunately circuits comes with a ``Debugger`` Component to help you keep track of what's going on in your application, and allows you to tell what your application is doing. Let's say that we defined out ``bark`` Event Handler in our ``Dog`` Component as follows:: def bark(self): print("Woof! I'm %s!" % name) Now clearly there is no such variable as ``name`` in the local scope. For reference here's the entire example... .. literalinclude:: 009.py :language: python :linenos: :download:`Download 009.py <009.py>` If you run this, you'll get: That's right! You get nothing! Why? Well in circuits any error or exception that occurs in a running application is automatically caught and dealt with in a way that lets your application "keep on going". Crashing is unwanted behavior in a system so we expect to be able to recover from horrible situations. SO what do we do? Well that's easy. circuits comes with a ``Debugger`` that lets you log all events as well as all errors so you can quickly and easily discover which Event is causing a problem and which Event Handler to look at. If you change Line 34 of our example... From: .. literalinclude:: 009.py :language: python :lines: 34 To: .. code-block:: python from circuits import Debugger (Pound() + Debugger()).run() Then run this, you'll get the following:: , ] {}> , ] {}> , ] {}> , None] {}> , NameError("global name 'name' is not defined",), [' File "/home/prologic/work/circuits/circuits/core/manager.py", line 459, in __handleEvent\n retval = handler(*eargs, **ekwargs)\n', ' File "source/tutorial/009.py", line 22, in bark\n print("Woof! I\'m %s!" % name)\n'], >] {}> ERROR (): global name 'name' is not defined File "/home/prologic/work/circuits/circuits/core/manager.py", line 459, in __handleEvent retval = handler(*eargs, **ekwargs) File "source/tutorial/009.py", line 22, in bark print("Woof! I'm %s!" % name) , NameError("global name 'name' is not defined",), [' File "/home/prologic/work/circuits/circuits/core/manager.py", line 459, in __handleEvent\n retval = handler(*eargs, **ekwargs)\n', ' File "source/tutorial/009.py", line 22, in bark\n print("Woof! I\'m %s!" % name)\n'], >] {}> ERROR (): global name 'name' is not defined File "/home/prologic/work/circuits/circuits/core/manager.py", line 459, in __handleEvent retval = handler(*eargs, **ekwargs) File "source/tutorial/009.py", line 22, in bark print("Woof! I'm %s!" % name) ^C] {}> ] {}> ] {}> You'll notice whereas there was no output before there is now a pretty detailed output with the ``Debugger`` added to the application. Looking through the output, we find that the application does indeed start correctly, but when we fire our ``Bark`` Event it coughs up two exceptions, one for each of our dogs (``Bob`` and ``Fred``). From the error we can tell where the error is and roughly where to look in the code. .. note:: You'll notice many other events that are displayed in the above output. These are all default events that circuits has builtin which your application can respond to. Each builtin Event has a special meaning with relation to the state of the application at that point. See: :py:mod:`circuits.core.events` for detailed documentation regarding these events. The correct code for the ``bark`` Event Handler should be:: def bark(self): print("Woof! I'm %s!" % self.name) Running again with our correction results in the expected output:: Woof! I'm Bob! Woof! I'm Fred! That's it folks! Hopefully this gives you a feel of what circuits is all about and an easy tutorial on some of the basic concepts. As you're no doubt itching to get started on your next circuits project, here's some recommended reading: - :doc:`../faq` - :doc:`../api/index` circuits-3.1.0/docs/source/tutorials/woof/007.py0000644000014400001440000000105212407376110022440 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import Component, Event class woof(Event): """woof Event""" class Pound(Component): def __init__(self): super(Pound, self).__init__() self.bob = Bob().register(self) self.fred = Fred().register(self) def started(self, *args): self.fire(woof(), self.bob) class Dog(Component): def woof(self): print("Woof! I'm %s!" % self.name) class Bob(Dog): """Bob""" channel = "bob" class Fred(Dog): """Fred""" channel = "fred" Pound().run() circuits-3.1.0/docs/source/tutorials/woof/002.py0000644000014400001440000000020212402037676022435 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import Component class MyComponent(Component): """My Component""" MyComponent().run() circuits-3.1.0/docs/source/tutorials/woof/003.py0000644000014400001440000000025012402037676022441 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import Component class MyComponent(Component): def started(self, *args): print("Hello World!") MyComponent().run() circuits-3.1.0/docs/source/tutorials/woof/001.py0000644000014400001440000000011112402037676022433 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits import Component Component().run() circuits-3.1.0/docs/source/tutorials/index.rst0000644000014400001440000000016712402037676022463 0ustar prologicusers00000000000000================== circuits Tutorials ================== .. toctree:: :maxdepth: 2 woof/index telnet/index circuits-3.1.0/docs/source/tutorials/telnet/0000755000014400001440000000000012425013643022102 5ustar prologicusers00000000000000circuits-3.1.0/docs/source/tutorials/telnet/telnet.py0000644000014400001440000000136112402037676023757 0ustar prologicusers00000000000000#!/usr/bin/env python import sys from circuits.io import File from circuits import handler, Component from circuits.net.sockets import TCPClient from circuits.net.events import connect, write class Telnet(Component): channel = "telnet" def init(self, host, port): self.host = host self.port = port TCPClient(channel=self.channel).register(self) File(sys.stdin, channel="stdin").register(self) def ready(self, socket): self.fire(connect(self.host, self.port)) def read(self, data): print(data.strip()) @handler("read", channel="stdin") def read_user_input(self, data): self.fire(write(data)) host = sys.argv[1] port = int(sys.argv[2]) Telnet(host, port).run() circuits-3.1.0/docs/source/tutorials/telnet/Telnet.dot0000644000014400001440000000020112402037676024045 0ustar prologicusers00000000000000strict digraph { TCPClient -> Select [weight="2.0"]; Telnet -> TCPClient [weight="1.0"]; Telnet -> File [weight="1.0"]; } circuits-3.1.0/docs/source/tutorials/telnet/index.rst0000644000014400001440000001324112402037676023753 0ustar prologicusers00000000000000.. _Python Programming Language: http://www.python.org/ Telnet Tutorial =============== Overview -------- Welcome to our 2nd circuits tutorial. This tutorial is going to walk you through the `telnet Example `_ showing you how to various parts of the circuits component library for building a simple TCP client that also accepts user input. Be sure you have circuits installed before you start: .. code-block:: bash pip install circuits See: :doc:`../../start/installing` Components ---------- You will need the following components: 1. The :class:`~.net.sockets.TCPClient` Component 2. The :class:`~.io.file.File` Component 3. The :class:`~.Component` Component All these are available in the circuits library so there is nothing for you to do. Click on each to read more about them. Design ------ .. graphviz:: Telnet.dot The above graph is the overall design of our Telnet application. What's shown here is a relationship of how the components fit together and the overall flow of events. For example: 1. Connect to remote TCP Server. 2. Read input from User. 3. Write input from User to connected Socket. 4. Wait for data from connected Socket and display. .. note:: The :class:`~.core.pollers.Select` Component shown is required by our application for Asynchronous I/O polling however we do not need to explicitly use it as it is automatically imported and registered simply by utilizing the :class:`~.net.sockets.TCPClient` Component. Implementation -------------- Without further delay here's the code: .. literalinclude:: telnet.py :language: python :linenos: :download:`Download telnet.py ` Discussion ---------- Some important things to note... 1. Notice that we defined a ``channel`` for out ``Telnet`` Component? This is so that the events of :class:`~.net.sockets.TCPClient` and :class:`~.io.file.File` don't collide. Both of these components share a very similar interface in terms of the events they listen to. .. code-block:: python class Telnet(Component): channel = "telnet" 2. Notice as well that in defining a ``channel`` for our ``Telnet`` Component we've also "registered" the :class:`~.net.sockets.TCPClient` Component so that it has the same channel as our ``Telnet`` Component. Why? We want our ``Telnet`` Component to receive all of the events of the :class:`~.net.sockets.TCPClient` Component. .. code-block:: python TCPClient(channel=self.channel).register(self) 3. In addition to our :class:`~.net.sockets.TCPClient` Component being registered with the same ``channel`` as our ``Telnet`` Component we can also see that we have registered a :class:`~.io.file.File` Component however we have chosen a different channel here called ``stdin``. Why? We don't want the events from :class:`~.net.sockets.TCPClient` and subsequently our ``Telnet`` Component to collide with the events from :class:`~.io.file.File`. So we setup a Component for reading user input by using the :class:`~.io.file.File` Component and attaching an event handler to our ``Telnet`` Component but listening to events from our ``stdin`` channel. .. code-block:: python File(sys.stdin, channel="stdin").register(self) .. code-block:: python @handler("read", channel="stdin") def read_user_input(self, data): self.fire(write(data)) Here is what the event flow would look like if you were to register the :class:`~.Debugger` to the ``Telnet`` Component. .. code-block:: python from circuits import Debugger (Telnet(host, port) + Debugger()).run() .. code-block:: bash $ python telnet.py 10.0.0.2 9000 , )> , )> , )> )> , )> )> )> <_open[stdin] ( )> ', 'r' )> Hello World! <_read[stdin] (', mode 'r' at 0x7f32ff5ab0c0> )> <_write[telnet] ( )> <_read[telnet] ( )> Hello World! ^C )> )> Testing ------- To try this example out, download a copy of the `echoserver Example `_ and copy and paste the full source code of the ``Telnet`` example above into a file called ``telnet.py``. In one terminal run:: $ python echoserver.py In a second terminal run:: $ python telnet.py localhost 9000 Have fun! For more examples see `examples `_. .. seealso:: - :doc:`../../faq` - :doc:`../../api/index` circuits-3.1.0/docs/source/tutorials/telnet/index.rst.bak0000644000014400001440000001502412402037676024510 0ustar prologicusers00000000000000.. _Python Programming Language: http://www.python.org/ Telnet Tutorial =============== Overview -------- Welcome to our 2nd circuits tutorial. This tutorial is going to walk you through the `telnet Example `_ showing you how to various parts of the circuits component library for building a simple TCP client that also accepts user input. Be sure you have circuits installed before you start: .. code-block:: bash pip install circuits See: :doc:`../../start/installing` Components ---------- You will need the following components: 1. The :class:`~.net.sockets.TCPClient` Component 2. The :class:`~.io.file.File` Component 3. The :class:`~.Component` Component All these are available in the circuits library so there is nothing for you to do. Click on each to read more about them. Design ------ .. graphviz:: ../../man/examples/Telnet.dot The above graph is the overall design of our Telnet application. What's shown here is a relationship of how the components fit together and the overall flow of events. For example: 1. Connect to remote TCP Server. 2. Read input from User. 3. Write input from User to connected Socket. 4. Wait for data from connected Socket and display. .. note:: The :class:`~.core.pollers.Select` Component shown is required by our application for Asynchronous I/O polling however we do not need to explicitly use it as it is automatically imported and registered simply by utilizing the :class:`~.net.sockets.TCPClient` Component. Implementation -------------- Without further adue here's the code: .. code-block:: python :linenos: #!/usr/bin/env python import sys from circuits.io import File from circuits import handler, Component from circuits.net.sockets import TCPClient from circuits.net.events import connect, write class Telnet(Component): channel = "telnet" def init(self, host, port): self.host = host self.port = port TCPClient(channel=self.channel).register(self) File(sys.stdin, channel="stdin").register(self) def ready(self, socket): self.fire(connect(self.host, self.port)) def read(self, data): print(data.strip()) @handler("read", channel="stdin") def read_user_input(self, data): self.fire(write(data)) host = sys.argv[1] port = int(sys.argv[2]) Telnet(host, port).run() Discussion ---------- Some important things to note... 1. Notice that we defined a ``channel`` for out ``Telnet`` Component? This is so that the events of :class:`~.net.sockets.TCPClient` and :class:`~.io.file.File` don't collide. Both of these components share a very similar interface in terms of the events they listen to. .. code-block:: python class Telnet(Component): channel = "telnet" 2. Notice as well that in defining a ``channel`` for our ``Telnet`` Component we've also "registered" the :class:`~.net.sockets.TCPClient` Component so that it has the same channel as our ``Telnet`` Component. Why? We want our ``Telnet`` Component to receieve all of the events of the :class:`~.net.sockets.TCPClient` Component. .. code-block:: python TCPClient(channel=self.channel).register(self) 3. In addition to our :class:`~.net.sockets.TCPClient` Component being registered with the same ``channel`` as our ``Telnet`` Component we can also see that we have registered a :class:`~.io.file.File` Component however we have chosen a different channel here called ``stdin``. Why? We don't want the events from :class:`~.net.sockets.TCPClient` and subsequently our ``Telnet`` Component to collide with the events from :class:`~.io.file.File`. So we setup a Component for reading user input by using the :class:`~.io.file.File` Component and attaching an event handler to our ``Telnet`` Component but listening to events from our ``stdin`` channel. .. code-block:: python File(sys.stdin, channel="stdin").register(self) .. code-block:: python @handler("read", channel="stdin") def read_user_input(self, data): self.fire(write(data)) Here is what the event flow would look like if you were to register the :class:`~.Debugger` to the ``Telnet`` Component. .. code-block:: python from circuits import Debugger (Telnet(host, port) + Debugger()).run() .. code-block:: bash $ python telnet.py 10.0.0.2 9000 , )> , )> , )> )> , )> )> )> <_open[stdin] ( )> ', 'r' )> Hello World! <_read[stdin] (', mode 'r' at 0x7f32ff5ab0c0> )> <_write[telnet] ( )> <_read[telnet] ( )> Hello World! ^C )> )> Testing ------- To try this example out, download a copy of the `echoserver Example `_ and copy and paste the full source code of the ``Telnet`` example above into a file called ``telnet.py``. In one terminal run:: $ python echoserver.py In a second terminal run:: $ python telnet.py localhost 9000 Have fun! For more examples see `examples `_. .. seealso:: - :doc:`../../faq` - :doc:`../../api/index` circuits-3.1.0/docs/source/dev/0000755000014400001440000000000012425013643017337 5ustar prologicusers00000000000000circuits-3.1.0/docs/source/dev/standards.rst0000644000014400001440000000230112402037676022057 0ustar prologicusers00000000000000Development Standards ===================== We use the following development standards: Cyclomatic Complexity --------------------- - Code Complexity shall not exceed ``10`` See: `Limiting Cyclomatic Complexity `_ Coding Style ------------ - Code shall confirm to the `PEP8 `_ Style Guide. .. note:: This includes the 79 character limit! - Doc Strings shall confirm to the `PEP257 `_ Convention. .. note:: Arguments, Keyword Arguments, Return and Exceptions must be documented with the appropriate Sphinx`Python Domain `_. Revision History ---------------- - Commits shall be small tangible pieces of work. - Each commit must be concise and manageable. - Large changes are to be done over smaller commits. - There shall be no commit squashing. - Rebase your changes as often as you can. Unit Tests ---------- - Every new feature and bug fix must be accompanied with a unit test. (*The only exception to this are minor trivial changes*). circuits-3.1.0/docs/source/dev/index.rst0000644000014400001440000000052112402037676021205 0ustar prologicusers00000000000000Developer Docs ============== So, you'd like to contribute to circuits in some way? Got a bug report? Having problems running the examples? Having problems getting circuits working in your environment? Excellent. Here's what you need to know. .. toctree:: :maxdepth: 2 introduction contributing processes standards circuits-3.1.0/docs/source/dev/contributing.rst0000644000014400001440000000315512402037676022613 0ustar prologicusers00000000000000Contributing to circuits ======================== Here's how you can contribute to circuits Share your story ---------------- One of the best ways you can contribute to circuits is by using circuits. Share with us your story of how you've used circuits to solve a problem or create a new software solution using the circuits framework and library of components. .. see: http://circuitsframework.com/Community Submitting Bug Reports ---------------------- We welcome all bug reports. We do however prefer bug reports in a clear and concise form with repeatable steps. One of the best ways you can report a bug to us is by writing a unit test (//similar to the ones in our tests//) so that we can verify the bug, fix it and commit the fix along with the test. To submit a bug report, please use: http://bitbucket.org/circuits/circuits/issues Writing new tests ----------------- We're not perfect, and we're still writing more tests to ensure quality code. If you'd like to help, please `Fork circuits `_, write more tests that cover more of our code base and submit a `Pull Request `_. Many Thanks! Adding New Features ------------------- If you'd like to see a new feature added to circuits, then we'd like to hear about it~ We would like to see some discussion around any new features as well as valid use-cases. To start the discussions off, please either: - `Chat to us on #circuits on the FreeNode IRC Network `_ or - `Submit a **New** Issue `_ circuits-3.1.0/docs/source/dev/introduction.rst0000644000014400001440000000353712402037676022631 0ustar prologicusers00000000000000.. _Developer Mailing List: http://groups.google.com/group/circuits-dev .. _Issue Tracker: https://bitbucket.org/circuits/circuits/issues .. _FreeNode IRC Network: http://freenode.net .. _IRC Channel: http://webchat.freenode.net/?randomnick=1&channels=circuits&uio=d4 Development Introduction ======================== Here's how we do things in circuits... Communication ------------- - `IRC Channel`_ on the `FreeNode IRC Network`_ - `Developer Mailing List`_ - `Issue Tracker`_ .. note:: If you are familiar with `IRC `_ and use your own IRC Client then connect to the FreeNode Network and ``/join #circuits``. Standards --------- We use the following coding standard: - `pep8 `_ We also lint our codebase with the following tools: - `pyflakes `_ - `pep8 `_ - `mccabe `_ Please ensure your Development IDE or Editor has the above linters and checkers in place and enabled. Alternatively you can use the following command line tool: - `flake8 `_ Tools ----- We use the following tools to develop circuits and share code: - **Code Sharing:** `Mercurial `_ - **Code Hosting and Bug Reporting:** `BitBucket `_ `GitHub `_ (*Mirror Only*) - **Issue Tracker:** `Issue Tracker `_ - **Documentation Hosting:** `Read the Docs `_ - **Package Hosting:** `Python Package Index (PyPi) `_ - **Continuous Integration:** `Drone `_ circuits-3.1.0/docs/source/dev/processes.rst0000644000014400001440000000707412402037676022116 0ustar prologicusers00000000000000.. _Issue Tracker: https://bitbucket.org/circuits/circuits/issues Development Processes ===================== We document all our internal development processes here so you know exactly how we work and what to expect. If you find any issues or problems please let us know! Software Development Life Cycle (SDLC) -------------------------------------- We employ the use of the `SCRUM Agile Process `_ and use our `Issue Tracker`_ to track features, bugs, chores and releases. If you wish to contribute to circuits, please familiarize yourself with SCRUM and `BitBucket `'s Issue Tracker. Bug Reports ----------- - New Bug Reports are submitted via: http://bitbucket.org/circuits/circuits/issues - Confirmation and Discussion of all New Bug Reports. - Once confirmed, a new Bug is raised in our `Issue Tracker`_ - An appropriate milestone will be set (*depending on current milestone's schedule and resources*) - A unit test developed that demonstrates the bug's failure. - A fix developed that passes the unit test and breaks no others. - A `New Pull Request `_ created with the fix. This must contains: - A new or modified unit test. - A patch that fixes the bug ensuring all unit tests pass. - The `Change Log `_ updated. - Appropriate documentation updated. - The `Pull Request `_ is reviewed and approved by at least two other developers. Feature Requests ---------------- - New Feature Requests are submitted via: http://bitbucket.org/circuits/circuits/issues - Confirmation and Discussion of all New Feature Requests. - Once confirmed, a new Feature is raised in our `Issue Tracker`_ - An appropriate milestone will be set (*depending on current milestone's schedule and resources*) - A unit test developed that demonstrates the new feature. - The new feature developed that passes the unit test and breaks no others. - A `New Pull Request `_ created with the fix. This must contains: - A new or modified unit test. - A patch that implements the new feature ensuring all unit tests pass. - The `Change Log `_ updated. - Appropriate documentation updated. - The `Pull Request `_ is reviewed and approved by at least two other developers. Writing new Code ---------------- - Submit a `New Issue `_ - Write your code. - Use `flake8 `_ to ensure code quality. - Run the tests:: $ tox - Ensure any new or modified code does not break existing unit tests. - Update any relevant doc strings or documentation. - Update the `Change Log `_ updated. - Submit a `New Pull Request `_. Running the Tests ----------------- To run the tests you will need the following installed: - `tox `_ installed as well as - `pytest-cov `_ - `pytest `_ All of these can be installed via ``easy_install`` or ``pip``. Please also ensure that you you have all supported versions of Python that circuits supports installed in your local environment. To run the tests:: $ tox circuits-3.1.0/docs/source/_themes/0000755000014400001440000000000012425013643020205 5ustar prologicusers00000000000000circuits-3.1.0/docs/source/_themes/om/0000755000014400001440000000000012425013643020620 5ustar prologicusers00000000000000circuits-3.1.0/docs/source/_themes/om/search.html0000644000014400001440000000015612402037676022764 0ustar prologicusers00000000000000{% extends "basic/search.html" %} {% block bodyclass %}{% endblock %} {% block sidebarwrapper %}{% endblock %}circuits-3.1.0/docs/source/_themes/om/theme.conf0000644000014400001440000000010712402037676022576 0ustar prologicusers00000000000000[theme] inherit = basic stylesheet = default.css pygments_style = trac circuits-3.1.0/docs/source/_themes/om/static/0000755000014400001440000000000012425013643022107 5ustar prologicusers00000000000000circuits-3.1.0/docs/source/_themes/om/static/docicons-note.png0000644000014400001440000000176512402037676025401 0ustar prologicusers00000000000000PNG  IHDR//E pHYs  IDATX ͙MhAǓuUFE[i+ 'IVZz9Y)jAOzbO VE6dggvv[J}>~y3;j>;3~ZYV[eM&Uٺ3?)VA a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, h4:hover > a.headerlink, h5:hover > a.headerlink, h6:hover > a.headerlink, dt:hover > a.headerlink { visibility: visible; } /*** index ***/ table.indextable td { text-align: left; vertical-align: top;} table.indextable dl, table.indextable dd { margin-top: 0; margin-bottom: 0; } table.indextable tr.pcap { height: 10px; } table.indextable tr.cap { margin-top: 10px; background-color: #f2f2f2;} /*** page-specific overrides ***/ div#contents ul { margin-bottom: 0;} div#contents ul li { margin-bottom: 0;} div#contents ul ul li { margin-top: 0.3em;} /*** IE hacks ***/ * pre { width: 100%; } circuits-3.1.0/docs/source/_themes/om/static/docicons-behindscenes.png0000644000014400001440000000433512402037676027062 0ustar prologicusers00000000000000PNG  IHDR//E pHYs  IDATX ͙kLWYY q>ƂXeSX[Q؆jMiZ4&M%Fjm54>P)Z*"X< *͞0̂m'pswFӧOr<]ZOԨ܅0 p,Gsй;U 3)"ut+膼> MYvp)l2ʥKjo(f Kcxj@>VG+JG0@`~D,bW}TfE_tE;% 8"&΋`1Vtlƍųт/-+'CesqS´`wY\t[P˯dGM@Pԉ.|SMg+\)o$wXl0]µX22$]KV"EZǰ)Qrʱ`,J1A`89I:C8KjuQ|sok`C  ÌƇ]OSu%8`Odeeڽ[YٓI;] t *Ko*haedo'䭨ȡSqGu;KH}uȸ) ɑjժB5vD:0_,Wf4IU^@aJ h#e`Ez sPV2a kCȡ岧tˆ4{O&1]鄹+ǐ^Q Y Ohҽn#edCY ^YAK[lYzuhhh{/$$LFzUC?L .5>(󫪂/+k.4w>~ghs_ &(mly)R!??2ܬٛ.RKw3;6qu`يW#Φ򑑦 ztw#Esl$[OT u*q I 'd})6-M<;Lq5=$)Lܬ{ !'$9DR:8|uGҨ;VJwGG/-kg*gGT#ZEH[R&zA|Y*b|҉{q3m!l!Ey, d̚5kM/ݯ8Շ%YqH JYa-/uC/.ţ=87.pt? ѓXԶoSJjAT*uF8JMIcIj$jwn(PAe o(;ؼR@# 'R"M} Qd4C *AO@Wa{72O)͆`IJhdϏKZ3].ҺG!hQ8"eFs#|0 h܅0 pTҗIENDB`circuits-3.1.0/docs/source/_themes/om/static/docicons-philosophy.png0000644000014400001440000000276312402037676026631 0ustar prologicusers00000000000000PNG  IHDR//E pHYs  IDATX ͙]h\Em+&SU5P֢*RPm_!M&<*>P1 }Ҫ$ښn&!) ~wO2;;w{99̙lXYYo=_"5Yͼ 88\yّ?n_s3{d3MOVMO/4ǟ޲eLu[ߌACD* |SC҅ÎwєξD[TG;2"O񞻾DdmE}UQLLr™SD*Pd6|wS ܍Orq t*\XXc;^I DٕwDP../@X-/ZjHnLzG"9ރͺ +@vuǁVFR)9&c}ބ?L:=11AϜzYeH'])(A K(qb *1e{{{XdDIbaQttt(J1\uȨe'@7**jllp(I1JԪ=44433c!^Ua#a*0SBs||\%"#R%  )'!)P$MOO#O!P6xu1ܐfAiX 8&&( "y薀rty$![e3dreض.( )e(u|!fREta)}gX$A+/ X@HTU2(>P%a~FD!@ DԘ>Ն|'H!B! C70[]ܟ!8ORc3V[9?GOp|7V7>9Gù }(n\x^GTӸҨ߽iE]4U=Uu[~: ڰԖ08;DqUf" E(ຄEĔП[­#S YmsqGfVb۾TM[Œ-4@ ph?56z(3iP0mA H].8:5u((hrIțs[btP%ĩ^/VtϰkKpOVǟaŞa?G}bfIENDB`circuits-3.1.0/docs/source/_themes/om/static/default.css0000644000014400001440000000013312402037676024251 0ustar prologicusers00000000000000@import url(reset-fonts-grids.css); @import url(djangodocs.css); @import url(homepage.css);circuits-3.1.0/docs/source/_themes/om/genindex.html0000644000014400001440000000016112402037676023314 0ustar prologicusers00000000000000{% extends "basic/genindex.html" %} {% block bodyclass %}{% endblock %} {% block sidebarwrapper %}{% endblock %}circuits-3.1.0/docs/source/_themes/om/modindex.html0000644000014400001440000000016012402037676023321 0ustar prologicusers00000000000000{% extends "basic/modindex.html" %} {% block bodyclass %}{% endblock %} {% block sidebarwrapper %}{% endblock %}circuits-3.1.0/docs/source/_themes/om/layout.html0000644000014400001440000000777112402037676023046 0ustar prologicusers00000000000000{% extends "basic/layout.html" %} {%- macro secondnav() %} {%- if prev %} « previous {{ reldelim2 }} {%- endif %} {%- if parents %} up {%- else %} up {%- endif %} {%- if next %} {{ reldelim2 }} next » {%- endif %} {%- endmacro %} {% block extrahead %} {{ super() }} {% endblock %} {% block document %}

    {{ docstitle }}

    {% block body %}{% endblock %}
    {% block sidebarwrapper %} {% if pagename != 'index' %} {% endif %} {% endblock %}
    {% endblock %} {% block sidebarrel %}

    Browse

    You are here:

    {% endblock %} {# Empty some default blocks out #} {% block relbar1 %}{% endblock %} {% block relbar2 %}{% endblock %} {% block sidebar1 %}{% endblock %} {% block sidebar2 %}{% endblock %} {% block footer %}{% endblock %} circuits-3.1.0/docs/source/web/0000755000014400001440000000000012425013643017336 5ustar prologicusers00000000000000circuits-3.1.0/docs/source/web/miscellaneous.rst0000644000014400001440000000705712402037676022753 0ustar prologicusers00000000000000Miscellaneous ============= Writing Tools ------------- Most of the internal tools used by circuits.web in circuits.web.tools are simply functions that modify the Request or Response objects in some way or another... We won't be covering that here... What we will cover is how to build simple tools that do something to the Request or Response along it's life-cycle. Here is a simple example of a tool that uses the pytidylib library to tidy up the HTML output before it gets sent back to the requesting client. Code: .. code-block:: python :linenos: #!/usr/bin/env python from tidylib import tidy_document from circuits import Component class Tidy(Component): channel = "http" def response(self, response): document, errors = tidy_document("".join(response.body)) response.body = document Usage: (Server(8000) + Tidy() + Root()).run() **How it works:** This tool works by intercepting the Response Event on the "response" channel of the "http" target (*or Component*). For more information about the life cycle of Request and Response events, their channels and where and how they can be intercepted to perform various tasks read the Request/Response Life Cycle section. Writing Dispatchers ------------------- In circuits.web writing a custom "dispatcher" is only a matter of writing a Component that listens for incoming Request events on the "request" channel of the "web" target. The simplest kind of "dispatcher" is one that simply modifies the request.path in some way. To demonstrate this we'll illustrate and describe how the !VirtualHosts "dispatcher" works. VirtualHosts code: .. code-block:: python :linenos: class VirtualHosts(Component): channel = "web" def __init__(self, domains): super(VirtualHosts, self).__init__() self.domains = domains @handler("request", filter=True, priority=1) def request(self, event, request, response): path = request.path.strip("/") header = request.headers.get domain = header("X-Forwarded-Host", header("Host", "")) prefix = self.domains.get(domain, "") if prefix: path = _urljoin("/%s/" % prefix, path) request.path = path The important thing here to note is the Event Handler listening on the appropriate channel and the request.path being modified appropriately. You'll also note that in [source:circuits/web/dispatchers.py] all of the dispatchers have a set priority. These priorities are defined as:: $ grin "priority" circuits/web/dispatchers/ circuits/web/dispatchers/dispatcher.py: 92 : @handler("request", filter=True, priority=0.1) circuits/web/dispatchers/jsonrpc.py: 38 : @handler("request", filter=True, priority=0.2) circuits/web/dispatchers/static.py: 59 : @handler("request", filter=True, priority=0.9) circuits/web/dispatchers/virtualhosts.py: 49 : @handler("request", filter=True, priority=1.0) circuits/web/dispatchers/websockets.py: 53 : @handler("request", filter=True, priority=0.2) circuits/web/dispatchers/xmlrpc.py: 36 : @handler("request", filter=True, priority=0.2) in web applications that use multiple dispatchers these priorities set precedences for each "dispatcher" over another in terms of who's handling the Request Event before the other. .. note:: Some dispatchers are designed to filter the Request Event and prevent it from being processed by other dispatchers in the system. circuits-3.1.0/docs/source/web/index.rst0000644000014400001440000000026312402037676021207 0ustar prologicusers00000000000000======================== circuits.web User Manual ======================== .. toctree:: :maxdepth: 2 introduction gettingstarted features howtos miscellaneous circuits-3.1.0/docs/source/web/features.rst0000644000014400001440000003715112402037676021724 0ustar prologicusers00000000000000.. _CherryPy: http://www.cherrypy.org/ .. module:: circuits.web Features ======== circuits.web is not a **Full Stack** or **High Level** web framework, rather it is more closely aligned with `CherryPy`_ and offers enough functionality to make quickly developing web applications easy and as flexible as possible. circuits.web does not provide high level features such as: - Templating - Database access - Form Validation - Model View Controller - Object Relational Mapper The functionality that circutis.web **does** provide ensures that circuits.web is fully HTTP/1.1 and WSGI/1.0 compliant and offers all the essential tools you need to build your web application or website. To demonstrate each feature, we're going to use the classical "Hello World!" example as demonstrated earlier in :doc:`gettingstarted`. Here's the code again for easy reference: .. code-block:: python :linenos: from circuits.web import Server, Controller class Root(Controller): def index(self): return "Hello World!" (Server(8000) + Root()).run() Logging ------- circuits.web's :class:`~.Logger` component allows you to add logging support compatible with Apache log file formats to your web application. To use the :class:`~Logger` simply add it to your application: .. code-block:: python (Server(8000) + Logger() + Root()).run() Example Log Output:: 127.0.0.1 - - [05/Apr/2014:10:13:01] "GET / HTTP/1.1" 200 12 "" "curl/7.35.0" 127.0.0.1 - - [05/Apr/2014:10:13:02] "GET /docs/build/html/index.html HTTP/1.1" 200 22402 "" "curl/7.35.0" Cookies ------- Access to cookies are provided through the :class:`~.Request` Object which holds data about the request. The attribute :attr:`~.Request.cookie` is provided as part of the :class:`~.Request` Object. It is a dict-like object, an instance of ``Cookie.SimpleCookie`` from the python standard library. To demonstrate "Using Cookies" we'll write a very simple application that remembers who we are: If a cookie **name** is found, display "Hello !". Otherwise, display "Hello World!" If an argument is given or a query parameter **name** is given, store this as the **name** for the cookie. Here's how we do it: .. code-block:: python :linenos: from circuits.web import Server, Controller class Root(Controller): def index(self, name=None): if name: self.cookie["name"] = name else: name = self.cookie.get("name", None) name = "World!" if name is None else name.value return "Hello {0:s}!".format(name) (Server(8000) + Root()).run() .. note:: To access the actual value of a cookie use the ``.value`` attribute. .. warning:: Cookies can be vulnerable to XSS (*Cross Site Scripting*) attacks so use them at your own risk. See: http://en.wikipedia.org/wiki/Cross-site_scripting#Cookie_security Dispatchers ----------- circuits.web provides several dispatchers in the :mod:`~.dispatchers` module. Most of these are available directly from the circuits.web namespace by simply importing the required "dispatcher" from circuits.web. Example: .. code-block:: python from circuits.web import Static The most important "dispatcher" is the default :class:`~.Dispatcher` used by the circuits.web :class:`~.Server` to dispatch incoming requests onto a channel mapping (*remember that circuits is event-driven and uses channels*), quite similar to that of CherryPy or any other web framework that supports object traversal. Normally you don't have to worry about any of the details of the *default* :class:`~.Dispatcher` nor do you have to import it or use it in any way as it's already included as part of the circuits.web :class:`~.Server` Component structure. Static ...... The :class:`~.Static` "dispatcher" is used for serving static resources/files in your application. To use this, simply add it to your application. It takes some optional configuration which affects it's behavior. The simplest example (*as per our Base Example*): .. code-block:: python (Server(8000) + Static() + Root()).run() This will serve up files in the *current directory* as static resources. .. note:: This may override your **index** request handler of your top-most (``Root``) :class:`~.Controller`. As this might be undesirable and it's normally common to serve static resources via a different path and even have them stored in a separate physical file path, you can configure the Static "dispatcher". Static files stored in ``/home/joe/www/``: .. code-block:: python (Server(8000) + Static(docroot="/home/joe/www/") + Root()).run() Static files stored in ``/home/joe/www/`` **and** we want them served up as ``/static`` URI(s): .. code-block:: python (Server(8000) + Static("/static", docroot="/home/joe/www/") + Root()).run() Dispatcher .......... The :class:`~.Dispatcher` (*the default*) is used to dispatch requests and map them onto channels with a similar URL Mapping as CherryPy's. A set of "paths" are maintained by the Dispatcher as Controller(s) are registered to the system or unregistered from it. A channel mapping is found by traversing the set of known paths (*Controller(s)*) and successively matching parts of the path (*split by /*) until a suitable Controller and Request Handler is found. If no Request Handler is found that matches but there is a "default" Request Handler, it is used. This Dispatcher also included support for matching against HTTP methods: - GET - POST - PUT - DELETE. Here are some examples: .. code-block:: python :linenos: class Root(Controller): def index(self): return "Hello World!" def foo(self, arg1, arg2, arg3): return "Foo: %r, %r, %r" % (arg1, arg2, arg3) def bar(self, kwarg1="foo", kwarg2="bar"): return "Bar: kwarg1=%r, kwarg2=%r" % (kwarg1, kwarg2) def foobar(self, arg1, kwarg1="foo"): return "FooBar: %r, kwarg1=%r" % (arg1, kwarg1) With the following requests:: http://127.0.0.1:8000/ http://127.0.0.1:8000/foo/1/2/3 http://127.0.0.1:8000/bar?kwarg1=1 http://127.0.0.1:8000/bar?kwarg1=1&kwarg=2 http://127.0.0.1:8000/foobar/1 http://127.0.0.1:8000/foobar/1?kwarg1=1 The following output is produced:: Hello World! Foo: '1', '2', '3' Bar: kwargs1='1', kwargs2='bar' Bar: kwargs1='1', kwargs2='bar' FooBar: '1', kwargs1='foo' FooBar: '1', kwargs1='1' This demonstrates how the Dispatcher handles basic paths and how it handles extra parts of a path as well as the query string. These are essentially translated into arguments and keyword arguments. To define a Request Handler that is specifically for the HTTP ``POST`` method, simply define a Request Handler like: .. code-block:: python :linenos: class Root(Controller): def index(self): return "Hello World!" class Test(Controller): channel = "/test" def POST(self, *args, **kwargs): #*** return "%r %r" % (args, kwargs) This will handles ``POST`` requests to "/test", which brings us to the final point of creating URL structures in your application. As seen above to create a sub-structure of Request Handlers (*a tree*) simply create another :class:`~.Controller` Component giving it a different channel and add it to the system along with your existing Controller(s). .. warning:: All public methods defined in your :class:`~.Controller`(s) are exposed as valid URI(s) in your web application. If you don't want something exposed either subclass from :class:`~BaseController` whereby you have to explicitly use :meth:`~.expose` or use ``@expose(False)`` to decorate a public method as **NOT Exposed** or simply prefix the desired method with an underscore (e.g: ``def _foo(...):``). VirtualHosts ............ The :class:`~.VirtualHosts` "dispatcher" allows you to serves up different parts of your application for different "virtual" hosts. Consider for example you have the following hosts defined:: localdomain foo.localdomain bar.localdomain You want to display something different on the default domain name "localdomain" and something different for each of the sub-domains "foo.localdomain" and "bar.localdomain". To do this, we use the VirtualHosts "dispatcher": .. code-block:: python :linenos: from circuits.web import Server, Controller, VirtualHosts class Root(Controller): def index(self): return "I am the main vhost" class Foo(Controller): channel = "/foo" def index(self): return "I am foo." class Bar(Controller): channel = "/bar" def index(self): return "I am bar." domains = { "foo.localdomain:8000": "foo", "bar.localdomain:8000": "bar", } (Server(8000) + VirtualHosts(domains) + Root() + Foo() + Bar()).run() With the following requests:: http://localdomain:8000/ http://foo.localdomain:8000/ http://bar.localdomain:8000/ The following output is produced:: I am the main vhost I am foo. I am bar. The argument **domains** pasted to VirtualHosts' constructor is a mapping (*dict*) of: domain -> channel XMLRPC ...... The :class:`~.XMLRPC` "dispatcher" provides a circuits.web application with the capability of serving up RPC Requests encoded in XML (XML-RPC). Without going into too much details (*if you're using any kind of RPC "dispatcher" you should know what you're doing...*), here is a simple example: .. code-block:: python :linenos: from circuits import Component from circuits.web import Server, Logger, XMLRPC class Test(Component): def foo(self, a, b, c): return a, b, c (Server(8000) + Logger() + XMLRPC() + Test()).run() Here is a simple interactive session:: >>> import xmlrpclib >>> xmlrpc = xmlrpclib.ServerProxy("http://127.0.0.1:8000/rpc/") >>> xmlrpc.foo(1, 2, 3) [1, 2, 3] >>> JSONRPC ....... The :class:`~.JSONRPC` "dispatcher" is Identical in functionality to the :class:`~.XMLRPC` "dispatcher". Example: .. code-block:: python :linenos: from circuits import Component from circuits.web import Server, Logger, JSONRPC class Test(Component): def foo(self, a, b, c): return a, b, c (Server(8000) + Logger() + JSONRPC() + Test()).run() Interactive session (*requires the `jsonrpclib `_ library*):: >>> import jsonrpclib >>> jsonrpc = jsonrpclib.ServerProxy("http://127.0.0.1:8000/rpc/") >>> jsonrpc.foo(1, 2, 3) {'result': [1, 2, 3], 'version': '1.1', 'id': 2, 'error': None} >>> Caching ------- circuits.web includes all the usual **Cache Control**, **Expires** and **ETag** caching mechanisms. For simple expires style caching use the :meth:`~.tools.expires` tool from :mod:`.circuits.web.tools`. Example: .. code-block:: python :linenos: from circuits.web import Server, Controller class Root(Controller): def index(self): self.expires(3600) return "Hello World!" (Server(8000) + Root()).run() For other caching mechanisms and validation please refer to the :mod:`circuits.web.tools` documentation. See in particular: - :meth:`~.tools.expires` - :meth:`~.tools.validate_since` .. note:: In the example above we used ``self.expires(3600)`` which is just a convenience method built into the :class:`~.Controller`. The :class:`~.Controller` has other such convenience methods such as ``.uri``, ``.forbidden()``, ``.redirect()``, ``.notfound()``, ``.serve_file()``, ``.serve_download()`` and ``.expires()``. These are just wrappers around :mod:`~.tools` and :mod:`~.events`. Compression ----------- circuits.web includes the necessary low-level tools in order to achieve compression. These tools are provided as a set of functions that can be applied to the response before it is sent to the client. Here's how you can create a simple Component that enables compression in your web application or website. .. code-block:: python :linenos: from circuits import handler, Component from circuits.web.tools import gzip from circuits.web import Server, Controller, Logger class Gzip(Component): @handler("response", priority=1.0) def compress_response(self, event, response): event[0] = gzip(response) class Root(Controller): def index(self): return "Hello World!" (Server(8000) + Gzip() + Root()).run() Please refer to the documentation for further details: - :func:`.tools.gzip` - :func:`.utils.compress` Authentication -------------- circuits.web provides both HTTP Plain and Digest Authentication provided by the functions in :mod:`circuits.web.tools`: - :func:`.tools.basic_auth` - :func:`.tools.check_auth` - :func:`.tools.digest_auth` The first 2 arguments are always (*as with most circuits.web tools*): - ``(request, response)`` An example demonstrating the use of "Basic Auth": .. code-block:: python :linenos: from circuits.web import Server, Controller from circuits.web.tools import check_auth, basic_auth class Root(Controller): def index(self): realm = "Test" users = {"admin": "admin"} encrypt = str if check_auth(self.request, self.response, realm, users, encrypt): return "Hello %s" % self.request.login return basic_auth(self.request, self.response, realm, users, encrypt) (Server(8000) + Root()).run() For "Digest Auth": .. code-block:: python :linenos: from circuits.web import Server, Controller from circuits.web.tools import check_auth, digest_auth class Root(Controller): def index(self): realm = "Test" users = {"admin": "admin"} encrypt = str if check_auth(self.request, self.response, realm, users, encrypt): return "Hello %s" % self.request.login return digest_auth(self.request, self.response, realm, users, encrypt) (Server(8000) + Root()).run() Session Handling ---------------- Session Handling in circuits.web is very similar to Cookies. A dict-like object called **.session** is attached to every Request Object during the life-cycle of that request. Internally a Cookie named **circuits.session** is set in the response. Rewriting the Cookie Example to use a session instead: .. code-block:: python :linenos: from circuits.web import Server, Controller, Sessions class Root(Controller): def index(self, name=None): if name: self.session["name"] = name else: name = self.session.get("name", "World!") return "Hello %s!" % name (Server(8000) + Sessions() + Root()).run() .. note:: The only Session Handling provided is a temporary in-memory based one and will not persist. No future Session Handling components are planned. For persistent data you should use some kind of Database. circuits-3.1.0/docs/source/web/introduction.rst0000644000014400001440000000057412402037676022626 0ustar prologicusers00000000000000Introduction ============ circuits.web is a set of components for building high performance HTTP/1.1 and WSGI/1.0 compliant web applications. These components make it easy to rapidly develop rich, scalable web applications with minimal effort. circuits.web borrows from * `CherryPy `_ * BaseHTTPServer (*Python std. lib*) * wsgiref (*Python std. lib*) circuits-3.1.0/docs/source/web/howtos.rst0000644000014400001440000002457112402037676021433 0ustar prologicusers00000000000000.. module:: circuits How To Guides ============= These "How To" guides will steer you in the right direction for common aspects of modern web applications and website design. How Do I: Use a Templating Engine --------------------------------- circuits.web tries to stay out of your way as much as possible and doesn't impose any restrictions on what external libraries and tools you can use throughout your web application or website. As such you can use any template language/engine you wish. Example: Using Mako ................... This basic example of using the Mako Templating Language. First a TemplateLookup instance is created. Finally a function called ``render(name, **d)`` is created that is used by Request Handlers to render a given template and apply data to it. Here is the basic example: .. code-block:: python :linenos: #!/usr/bin/env python import os import mako from mako.lookup import TemplateLookup from circuits.web import Server, Controller templates = TemplateLookup( directories=[os.path.join(os.path.dirname(__file__), "tpl")], module_directory="/tmp", output_encoding="utf-8" ) def render(name, **d): #** try: return templates.get_template(name).render(**d) #** except: return mako.exceptions.html_error_template().render() class Root(Controller): def index(self): return render("index.html") def submit(self, firstName, lastName): msg = "Thank you %s %s" % (firstName, lastName) return render("index.html", message=msg) (Server(8000) + Root()).run() Other Examples .............. Other Templating engines will be quite similar to integrate. How Do I: Integrate with a Database ----------------------------------- .. warning:: Using databases in an asynchronous framework is problematic because most database implementations don't support asynchronous I/O operations. Generally the solution is to use threading to hand off database operations to a separate thread. Here are some ways to help integrate databases into your application: 1. Ensure your queries are optimized and do not block for extensive periods of time. 2. Use a library like `SQLAlchemy `_ that supports multi-threaded database operations to help prevent your circuits.web web application from blocking. 3. *Optionally* take advantage of the :class:`~circuits.Worker` component to fire :class:`~circuits.task` events wrapping database calls in a thread or process pool. You can then use the :meth:`~circuits.Component.call` and :meth:`~.circuits.Component.wait` synchronization primitives to help with the control flow of your requests and responses. Another way you can help improve performance is by load balancing across multiple backends of your web application. Using things like `haproxy `_ or `nginx `_ for load balancing can really help. How Do I: Use WebSockets ------------------------ Since the :class:`~circuits.web.websockets.WebSocketDispatcher` id a circuits.web "dispatcher" it's quite easy to integrate into your web application. Here's a simple trivial example: .. code-block:: python :linenos: #!/usr/bin/env python from circuits.net.events import write from circuits import Component, Debugger from circuits.web.dispatchers import WebSockets from circuits.web import Controller, Logger, Server, Static class Echo(Component): channel = "wsserver" def read(self, sock, data): self.fireEvent(write(sock, "Received: " + data)) class Root(Controller): def index(self): return "Hello World!" app = Server(("0.0.0.0", 8000)) Debugger().register(app) Static().register(app) Echo().register(app) Root().register(app) Logger().register(app) WebSockets("/websocket").register(app) app.run() See the `circuits.web examples `_. How do I: Build a Simple Form ----------------------------- circuits.web parses all POST data as a request comes through and creates a dictionary of kwargs (Keyword Arguments) that are passed to Request Handlers. Here is a simple example of handling form data: .. code-block:: python :linenos: #!/usr/bin/env python from circuits.web import Server, Controller class Root(Controller): html = """\ Basic Form Handling

    Basic Form Handling

    Example of using circuits and it's Web Components to build a simple web application that handles some basic form data.

    First Name:
    Last Name:
    """ def index(self): return self.html def submit(self, firstName, lastName): return "Hello %s %s" % (firstName, lastName) (Server(8000) + Root()).run( How Do I: Upload a File ----------------------- You can easily handle File Uploads as well using the same techniques as above. Basically the "name" you give your tag of type="file" will get passed as the Keyword Argument to your Request Handler. It has the following two attributes:: .filename - The name of the uploaded file. .value - The contents of the uploaded file. Here's the code! .. code-block:: python :linenos: #!/usr/bin/env python from circuits.web import Server, Controller UPLOAD_FORM = """ Upload Form

    Upload Form

    Description:
    """ UPLOADED_FILE = """ Uploaded File

    Uploaded File

    Filename: %s
    Description: %s

    File Contents:

          %s
          
    """ class Root(Controller): def index(self, file=None, desc=""): if file is None: return UPLOAD_FORM else: filename = file.filename return UPLOADED_FILE % (file.filename, desc, file.value) (Server(8000) + Root()).run() circuits.web automatically handles form and file uploads and gives you access to the uploaded file via arguments to the request handler after they've been processed by the dispatcher. How Do I: Integrate with WSGI Applications ------------------------------------------ Integrating with other WSGI Applications is quite easy to do. Simply add in an instance of the :class:`~circuits.web.wsgi.Gateway` component into your circuits.web application. Example: .. code-block:: python :linenos: #!/usr/bin/env python from circuits.web.wsgi import Gateway from circuits.web import Controller, Server def foo(environ, start_response): start_response("200 OK", [("Content-Type", "text/plain")]) return ["Foo!"] class Root(Controller): """App Rot""" def index(self): return "Hello World!" app = Server(("0.0.0.0", 10000)) Root().register(app) Gateway({"/foo": foo}).register(app) app.run() The ``apps`` argument of the :class:`~circuits.web.wsgi.Gateway` component takes a key/value pair of ``path -> callable`` (*a Python dictionary*) that maps each URI to a given WSGI callable. How Do I: Deploy with Apache and mod_wsgi ----------------------------------------- Here's how to deploy your new Circuits powered Web Application on Apache using mod_wsgi. Let's say you have a Web Hosting account with some provider. - Your Username is: "joblogs" - Your URL is: http://example.com/~joeblogs/ - Your Docroot is: /home/joeblogs/www/ Configuring Apache .................. The first step is to add in the following .htaccess file to tell Apache hat we want any and all requests to http://example.com/~joeblogs/ to be served up by our circuits.web application. Created the .htaccess file in your **Docroot**:: ReWriteEngine On ReWriteCond %{REQUEST_FILENAME} !-f ReWriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /~joeblogs/index.wsgi/$1 [QSA,PT,L] Running your Application with Apache/mod_wsgi ............................................. The get your Web Application working and deployed on Apache using mod_wsgi, you need to make a few changes to your code. Based on our Basic Hello World example earlier, we modify it to the following: .. code-block:: python :linenos: #!/usr/bin/env python from circuits.web import Controller from circuits.web.wsgi import Application class Root(Controller): def index(self): return "Hello World!" application = Application() + Root() That's it! To run this, save it as index.wsgi and place it in your Web Root (public-html or www directory) as per the above guidelines and point your favorite Web Browser to: http://example.com/~joeblogs/ .. note:: It is recommended that you actually use a reverse proxy setup for deploying circuits.web web application so that you don't loose the advantages and functionality of using an event-driven component architecture in your web apps. In **production** you should use a load balance and reverse proxy combination for best performance. circuits-3.1.0/docs/source/web/gettingstarted.rst0000644000014400001440000000314212402037676023127 0ustar prologicusers00000000000000.. _web_getting_started: Getting Started =============== Just like any application or system built with circuits, a circuits.web application follows the standard Component based design and structure whereby functionality is encapsulated in components. circuits.web itself is designed and built in this fashion. For example a circuits.web Server's structure looks like this: .. image:: ../images/CircuitsWebServer.png To illustrate the basic steps, we will demonstrate developing your classical "Hello World!" applications in a web-based way with circuits.web To get started, we first import the necessary components: .. code-block:: python from circutis.web import Server, Controller Next we define our first Controller with a single Request Handler defined as our index. We simply return "Hello World!" as the response for our Request Handler. .. code-block:: python class Root(Controller): def index(self): return "Hello World!" This completes our simple web application which will respond with "Hello World!" when anyone accesses it. *Admittedly this is a stupidly simple web application! But circuits.web is very powerful and plays nice with other tools.* Now we need to run the application: .. code-block:: python (Server(8000) + Root()).run() That's it! Navigate to: http://127.0.0.1:8000/ and see the result. Here's the complete code: .. code-block:: python :linenos: from circuits.web import Server, Controller class Root(Controller): def index(self): return "Hello World!" (Server(8000) + Root()).run() Have fun! circuits-3.1.0/docs/source/glossary.rst0000644000014400001440000000021112402037676021157 0ustar prologicusers00000000000000======== Glossary ======== .. glossary:: :sorted: VCS Version Control System, what you use for versioning your source code circuits-3.1.0/docs/source/images/0000755000014400001440000000000012425013643020026 5ustar prologicusers00000000000000circuits-3.1.0/docs/source/images/CircuitsWebServer.png0000644000014400001440000007350512402037676024167 0ustar prologicusers00000000000000PNG  IHDRh MbKGD IDATxyXT?  DMԦT^|c4ik!FX6&&iMbQUDAPVeXdهmx~pf~]\:p8f8sy=!B! .B!B(B!BF!B!*B!>R===L&Bww7w_(`z&N}}„ ӃΈ=B!DP@#\jTVVΝ;H$H$CCC$ ޽HRtuu)MMM077 LLL`aab鰲¸qV !2őBƆ.7n@EEb1b1!\ 233wzzz{`kܸqFT*?7pknnFKK X[[ D2( Ғ4if !šF! c 7oDvv6]"C,ژ9sP3p6m ~ގJs!(++Css3Û#0gŅQBQY!D#==W\+WVFwJUWW"%%%(((@CCD"̙OOO瞃ʇRB!c4BQ3wErr2RRR".txxx`?>I߫YSSS~~~TB!c4BQq1ԩS8}4󡥥OOO,^i{O1".𦦦ݻ@hh(VXAB!DBTP__q)DGGΝ;ʕ+ PB%` 8}4Ҡ XVeB(B ѣGq VªU0k,shA.cŊذa,Y2#2(B:;;_?GNNlmm/׿5Owy:::p);v III011e̘1!!' '֭ƍ`K#OPYY ?Q[[5k3͛wiB4Baw;#?zzzxױyf]^8q>puu4B!jJw2Vtuu߇-~@DD35%~zhkk֮]J#hBF@bb"~B"`֭ؾ};.(c N¶mpڵ ۶mf"B!(QOOv܉?k֬G} "J&G߆;?KKK"(BTUUa(//7׿$2~zb?~+V$B!*A#%())E< gc._W^y?<+K"4.BF|,^8u.H[[ɓR:eBQQ4őBpttĉ'wID9r7oFBB|}}.B F! /YYY?oEnn..BF! r)_ٰSF.?q?i=C]Fz{{kkk?~\i!(B00gWݻPPTR`v|"77NNN#MB!!(@JJ QUU9{T-#hC G-;{񁋋 !.jO! ^?z?k{1$$qqqlB67n5G4=yO"eeeH$B!*F!D:;;1~QP4kÖyX81؞u=ֳ9%(Bݻ#] \[IS_2zk(QԶFcc#```0b$(Bxzz";;{DyyXwtI?4gEgCڕ+W0!AB`ըBVVֈoIׄ=6O 5Ϻ?#yK!b(BXZZ5u@C*ⷿ-ߥBQ1!DAcǎ)u;Ùiֳitcزe vEןBy}P5!(Б#GoҥKprrR6֠q_ }E|Բ/3Q2 -bcc!yRB!Q@#[npY8;;+|qeP~m=gYpe~?rK#J///۷>affwYB4BQ{ذan݊s">>ﲈ矇77xvB4B8x 1{lOF"w#nܸ8$$$! h2lll?"==Xr%̙/===|G)99AAA3gpa\v !!!|F!DMQ}BQQQv܉3g@$᷿-6l777K#PSS'Nѣχ3 CCCa4B!FBFX[[Ο?xǣ={6ZZZ'''lܸ/0}tK::: gϞ֮]7b޼y~ۉHJJBJJ ZZZ`aa.sI!I(B(((@\\㑞>xxx 44!!!pwwIرc׿F̛7+Vʕ+#;jkkqiERRcŊ~!''IIIHHHŋ [[[.x!u@B (X, %K<༯iiiFtt4nݺ3f ((=ѯ/^DJJ  }}}bʕ S/^DRRn` ~TB 4BQn… dpssCHHBCC {3HLLDFF:;;agg???,Z5kt\t HNN˗!1w\#44>>>R[[[D$&&ZZZ'D"·M!DQ@#ى.AAA AXXLMMmL˗/#99IIIta``777̟?ܹsaee ԡ.PXXl\r٨bʕXr%|}}addK}kLBzF!PVVx!%%]]]pqqF.\8aLJ~l߾ mmmNNNìY`ii }}Ud2QVV"hnnX[[cpww***B,cƍصkL#nݺŅdH$ߟk:bkkwB!\|qqqիW nƆ2I&yGvfTG% (--o'N 㻬ׇnŋ̙3xbhI!c4BZH$8w&XZZr=/^<1*RDgFU6ڀ|#::-¾}wYϤtlٙ lTB(BJ?rrr3g ;;Xh7JfggwCvogƗ^z QQQJȧdeeaΝHLLDpp0wwwR6r7N!uB򚚚pynD"ԩSQ@;cIIIǥKzjٳg5ߨC&%%Ǐ77Em$U@rcFɲ pB!,, NNN|TFKg+mӧ[,}6dH$L4 \ӑYf]&! hڊ!&&uuu077:.2h8c-?O=y$v X7b׮]2e ߥ) c ׯ_FRSS!J1m4.‚R !DQ@#&??񈉉ŋ.]0] Ό1\cǎ!226mDWD\,.effB&CCCK%B2bR)XTWWK,e4j:Ό1L> QQQ֭[opuvv"---77nnnט:yA!CT%%%Ù3g\777nmM O*8pB!mۆ-[PԄC7 p"ݡw2(B)))8s add`,[ 011LKڃZZZpA:tرc^}1ݮΝ;\ÑD`„ O{&'Fyfeee(م n|4c3pP@{DEEȑ#077GDD֯_?^f j82c $Fn\p111EYY K"$$|tmmmxdg᠀dUUUѣGacc={`͚54Z?}}}C^x9s&7?jG !c 4BȐbn,%%prr²e kE3P@RDDDᅦ "##wY*\˗/\H___{B(BA&!==%+))L:2GԽy1ۙq8( _~~> ///DEELJTV{{;RSS xzzrmc?BFTWWs-!Jaooύ-ZhPgƧGeeeaΝHLLDpp0wwwRy HJJBBBP^^]]]x{{sװtdBJF&ˑ3g >>E@@7JfiiwΌώڳKJJBxx8.]իWcϞ=ptt,qmnt-)) 022pd֬Y|I!(2qd hmm /_@GG2yG>}(((ukkkR+1s"SSSގiӦqk&&&ԙQ()V?N<ݻwC,cƍصkLwijI.\`DOO燉']*!dF($HX?MMMҥK ???]JΌCM9r9;HH$lڴ ۷o1ߥN\xk韛 puuF׼hJQ hFrrr ??? 44vvv|֙qΝt\()L&g}(tvvb֭x7a``wiBss3RRRDܸqX`!c|!D(X;wӧO-g=ufFT*ÇqBl۶ [lQ`s7;w@__\GGGqBSF`!77111˗!バɉ2ufYFVKK 444 @[[R !hLI̸w^[;kػw- IDATǏɓؽ{7b16n܈]v( ŋD1WWW7tuu.2Ln\p e%%%000@`` BBBɓ']FUիqԩ!-ڊ &("4r9;HH$lڴ ۷o1ߥGhnnFJJ wZqq1`n|Jy hvP@={v"OK&>CTT:;;uV0004555tȤ$TUUA__}!*!dHOOBY~~>QW۷ʕ+ԙQuvv]]]\F ~իG2,R)>@(b۶mزe \7ora-99055ŋ`k Q P]]ϣ vvv Ehh(|}}wcufTO/2N8hƏF0^5҂СCǎ;ꫯQ#//k韖XYYqam؊P@#c\.GFFrss ???bҥ1Ό.,YwYdD"]ǎ٢B544 ** G9"""~zjd2#YYY냣#w/]3JFƌ:.={---AHH.] ???]FG^?wF* UUUѣGacc={`͚5t]JHMMFخ_ # X`$Ȩׇ˗/#..qqqɁ6|||˗Ɔ2 3hi&|Ls4iie)--EDD{ 22򑣨}'H5utuuō5! B*Ν>,\sL \1ΌLzz:}M$^áCx([~~> ///DEE744 :uVJEEEŠuuu8q".E~ >>111r 455h"nΎ2ǜ2T6u:3n1L:555 T)YYYGBBo>?:tӧOGvv6LLLx]v!??֭CDDۇǏs HWWW$''TQ /^C1nۛsBAV$$$ >>gΜA]]͹AAAtU 88CD"ڵkԙq EYYt2e ɓ'{nDAll,}(҂CdQQ`3<==wQGll,°tR(ׇ+Wٳ|_(⭷Ν;3o>|CT\.… 3qI 8rk|}}쬐. hT T?>---ץ=hH^SSDĉH4bc$%$$@__ORCLL abb`,_AAA022RpժhmmEww7Z[[ʽJܲ&L---Lk?~_$a͚5F2HrDOOOFWWנeֆ: ī BPCC^dtv\]] /y;1ڊvHRttt :H$> O#COPZZʅdܽ{&&&DΜ9s}6fΜݻwc׮]cydqnOOw|+J8I9_?ZZZ}Fm@H$ŨD"A]]$ ޽:444 /EahhI&&&&0119LLL`jjiӦJGzzzc|x' gKJJ@\777nmTL}X,ƭ[PWW*444Gss0(000N 33AN6 Wۇ]v=oH  ''𬵵555hhhݻw܌f455q@Sku'nFFF777LMMGdYlΝ;ѳ{ BVbn\[[ D emmm Ì7zzz044,,,`jj SSSְPZ꠿ׯ_3f!?@ ܹsabtttΝ;ݻw}w777RƏ}}}_?_L2v`c86rܾ}(--Eyy9*++!Q^^>(̌qpzzzm :swtvvB&q#q}kmmBD"A}}= H311%f̘3fvvvpppNH _尶ƭ[|gg'RRRXb!((˗/GppZUnkkõkpuܸq(--EEE7o2e ͹MMM1qD q위Bk?\Vkjj;wPWW+H577-lll`kk ggg8;;~M6 iYMMM̙3C^?:jkkQ^^XJr:pryXoE@@vv6PRRܼy2 B 2;ydx[[[Q]]=J,nBcc#x͛Н"1tѭ[`mm/++C|| ....(;çсLdddڵkvn߾ aoo`֬Yҟd@YYPZZ2ܼy\]]wwwx{{cʔ)+::W~⨊444VgϞEppRhۋ2q'@+**79mmmL6 $333L4I-;8\SS:.VWWsn3g΄6L~w >v_G=w_./_QTT"Ɔ{N---O6Mgrqr6p1?ptt#ϟ771JHKK! ΍-X022z dBoYZk]]PRR2۷)B'Oɽ'wollϟ!z+HHHx TSS>XlBBBx{HMMŅ \a֬Y;w.bΝ;*HR\~ׯ_G^^putuuXhP[[ L&B!ttt`kkspppը 6p90PRR",,,ܙ8c}m Hagg;;;EN&n͛7qMMo'^z%XXXEGG&N9s 8::{PIR8``?QPP BXp!ݻHNN暎bܸqpvvFVVCfkx7yZݻwAlְ4:jiiӧS<$ƭ[@0hNNNprraxhpRRRapww\\\;R\r٨pBOΜ9W^yӒ@''',]XpZGLL ␑@777,ZSӃl#-- /^| q`ggWWWn*X~4d2 Wի~:ͅ7ٳgN-f+***PRR2( 7owsss!ߥ ktn޼v?lCHH@lmmi??/_tkjj J$&&?ƵkexP('?>&$wENNΠ[EE`ppp̙ccc<62X?%%%hooH$œ9sݜUtc W\Att4bbbp5D"̟?~~~ F$_ܹTBWWXb-[S>v#G@ 8իկ~XسMǒ%KQRow}888`ڵXb}0H$GBB&L_xwy*A" 11{C/,,72777X[[HjllիWqddd ==077-Z O?ĪU///:6PΝéS &`ٲeXz5.]:*O࡭E(bܹxZrS1o<=WCb999BZZߏ9sUj@|2?_hii/_+WVY%!ˑӧO#::n݂6n܈_裏CCC㑟iu?H^{ Rrφ1$>|O9^z%_...|q |wœ9syf_~LB2Ɛ}˗ ۛf r}}}ByZZ˗ŏ:|W8vJJJ0gZ WƼy.ǫAtt4~'$''C__k׮ņ wy //'.'  7䴞QgggQH*"##iiiHII+WׇE!,, ˖-{Ύ`NNNΝ;QLyffhhDL[[ikk3HĄBe^_0~rK]~߱q1CCCm6&H.Kid2;s ۰a377g {7ٳgYWW%屨(444 a}kll仼q9rJ&ۼy3,g|srr>cwilϞ==f100`VVVݝ1+++fk׮e_5`}}}|? 2:::ةSثʦN0+++e}ݾ}}KD"lܸ LfbmmmϜ JJJktuuۻw/们ax"sqqaB֭[|4IR2###fdd>g$؞={،3<Ȫ.N߳+W2mmm~_lK{&c3gd^`999|Eڵ1===sNwYϤm߾M< =Fb۷ӧ3Ã=zuww+lO$ ۴iD)cD"ao6c/P궶6yf& Ypp0+(($rf[o1H.\VONN۰af&&&lǎ(Ȏ9\]]h"vIwiÒɞ{9& ƍYYY%g8 X~W\ak׮e"M<;ﲈc_fZZZܜٳ544<wf``,,,vodx٦M&srrR3lڴiؘ?~rc\vyxx0---]cedd0___9;;/)#JžyO>3moogo@ `~~~ի|Dhļ&7o+,,令'd>>> ssscǏg===|EFsNfllttt͛ad9*𔔔&޽{U`/dlժU 9sAO.0MMMvZF[ZZV^0???wId *//g7ofZZZO|Pl֬YĄ?Dl…LWW}|P ,HII$2FtvvO?YXX &;z(3PȢ$RSS) dRZn߾<==Nojjjغu@ `o<1}gL ݻw?sdtilld=`%%%#oLCCΐUUUʊ-^CGa:::lѢEbķOP?L(^zPHS\\̦Nʼx{-l„ ՕBoa&L`L,?qT>cHFTʖ,YGt䣠ikkzĶIvÄB!nDm?1ooo2>s d'NT^^,--~_~444ؖ-[E+--ecӧO4GZfaanݪfϞ^|ٞ\.glÆ #=2ΈOFd{(RYY7,Fdwa,22rDGCNNΈK&;xmgc=2[yyy)}`m,xcw10]]]v)o/`&&&Jk(AU_oC/BCCl&Fc5s2TkYCY2^g=OSO3|:tM4577+u;|m{뭷{ 5󤟿CYwzԝ"^O󜌄V^e+lk׮ '+J+{Y冲2DDDɓ(((xd 憠 U6|sǗ'=׏{1^r=`eemOkL|zw?j=zL||̞=[i۹v͛B)m;{Уg=֧y|3C+Z?ΝҶ/"޽+~Oן,NsPP@0br8;;oŊ+CHLL"G j(z0}܁pNӦMCBBW 7nY `;XEnwaa=>̝;˗/޽{~ *++1qDlq{ɗy; v8.hrJoQ66oތ|*mz6q?&eСC8p*++! 8::";;Jƣ(55LׁGmm`|AXIII(,,XCѯϾ7 9ms'Ò .YVX6?T_hYSLJږeeʡC ޠ {sNb1\#2`;\|<\t sXr%4 8`:#Ebֵ)quÚҮ.ݻעmiƍ˓diX{`4Ru.hv¼yh:233ۋ?bu7ўF7cа$7ĺuss&h<cgN}#v5wb=[Lॗ^½ދSZR+Wb֭c(R$iƴ+Kk)Ү]ݍbuDGG㡇#<FczF|,;)֫Hq4??OkC;wh=-Fl۶ /bzr9O=}%g kֆ:fGfek;pA|1^{MJ5"f>>\9#=?R=j c0͔e¢!D^^pttÔ6rc-8k)qCDGGg}bu5770b j-^__}Cס:c1F5[cv=z,O>vvvV_ʕ+d4X^gbXNV)))BY>V+Ν+RSSE{{9hlg[7e5,giyyyM+C.3dTZVq"))ItvvZ$@CFv (j4VHpuTyMLYƜ򄯯x衇,RPDddXf1c_3eLӔq[h}^>|e@nI9s cjhϱ3}|)?,d2/ץKXnHkcs-]1e߶m۶ {{{e"22RXѴs[r.?~vf~M1'N'^u,233EOOϰˏٳgEXXHJJuuuf i=O?!r{,dž r:Yݻx$Jr-M{`N&"-Ğ={$#//Ox{{˗ iB&Y(@;W_嘀lʵkĊ+,z{{G|Q{/X.:4@-ك'hZ/ GGGcY;}=zTKz:/{I?風HxƂ ~ '''&._,uHDTO?IYQGGشioN'^y(nV'uH4[ &=jk{_vMZJى͛7[01*++ży󄋋xWG!DNNP*b٢Zp'2LlٲEp 9"Ν+Dffp! ġh+" P*6jZΟ?/̙#<==ŧ~*u8d"11Qxyy۷KN?b…B&_oA<&G~(<==ELLoL}řz^70h4^bROuu={P*>:2BiiHMM5N'o.O.\]]ţ>*JKK(&F/P!?/ja S2LZ*W%ӏ\]]mzRt׮]RD\ooسgXx V^=pT{nJ%V^-ŋӀhxb֭"$$Dr /H}3c7 L&-[Y3%~ '''*Ξ=+uHDttdn﷩#4={V<]( NJQ8 bccM'dN'DXX_"K;bƌB&KZ(hhkkovvvbٲe"''gLeiji@k׮GS0d;:;;| g7pa1sL!"uH$~ue\%9:N|7⮻2LDFF?ܹsRF@SSDZZdbƌ⭷ NOOx7B_46/N&8K/q"FMӉ\qF-ƍvvt:sNq-bܹb^8FAlٲE ggga\v:;;şgP(xy ۷O̚5.J%uHcR^^.z)&dkCqDш;vUV ggg.֯_/q5y13B!<==͛3fvvvb͚5X̢DlڴI ;;;q뭷>@477KgϞo&"""1gkׯ~9ȑ#bڵ^~Z V++q ggg'{qsl8MMMr\(JsωK.I֤!>C1k,!ʕ+mc+rrr?.|||;wزe8q/L7t.V\)rptt˖-}ٸ?NYj[SUU%{9'< ⺻?i&1}t@|Pl߾}BLx4>5k  Xnضmhhh:D~vvv܉6q3444w}W "**JKRbΝbÆ _bMɊjjjħ~*֯_/|||qM7g}V;v*2!!p7oߎ$%%aŊX|9f͚ei8x ۇ111կ~LI`Νx7q1Gff&ojhhۑcǎ!((7n#<ÓDEEߏo999̙3`,\-BDDa577ȑ#8|0>'N 뮻l2̛7R*/?Ƈ~jDEEaXjRSSagg'uڅ _b֮ͅ]| .L&:Dt:8qQRR$''cѢEXh,XOOOC%3QTCpaTVV K,wߍe˖aʔ)Vɢ Z_Z999ػw/ۇ*!##/ƒ%KjP&^ď?ltuua޼yX|9VX3gJdΟ?,deeXbn^mZUUk߿;֬YL,^_(((@NN>cǎAV#$$)))HJJœ9s0gΜIЎG'ODQQ q A&ᦛn2$ ,ڬ"޽_~%JKK;iiiHOOGPP!{Fvv68b(JXVBFF\\\&]v 8trrrpI@BBnf$%%!)) prr8ZIcc#N8B"??/_ϟoHofIקʰo>8z(0}t,Z .DRRbcc93ZFqq1?C!77͘2e /^ ,]~~~Rjs?;woAii)|}}qw; x@KK 9l|W(//R]w݅+Wbٲepvv:qAբGQQ*** @HH!aGLL O.^rEEE8{,z{{9s 99!uRee%كhkkCLL Ұ`?6BSS p1dgg#//ZgFzz:-[s5 Enn. PXX&8::"11III={6R)uȓNCUUΜ93g2JDRRRSSpB̞=ۦl,AKբpG?Yf!99g̘ ~| ĉ8wt:!!ߦM&uJuu5[۷B{{;BBBpB̟?C||nBTUU8z(>ӧOC&aΜ9;qw#99"Ikk+QTTd8"SQQV L6 qqqFtt4fΜ1vTWW(//Ǚ3gP^^sAV1{~G=}dӃ|N ˗R53gի CcKNNFrrjQ\\#G ''GA}}=Yfa֬Y馛0c HZ[[QQQ'O%%%8y$Z[[j8^zyyIݍٳ8 ;pwwԩSSbڴi:u*Rcc#\bWQ]] JJ="""Lxtt4ۿzzzPRR?~(//Nbcco;uuuPT#Oٳgq%?nfC⚒bЉիIo 5 A@@O;AUUoptt4%~m08 @Ixx8BBBT*(J8 KVʕ+hhh@CC\\p0hr z{{JFs%O?ؐ̔IDATӧnӦMCHH RԄZ\rx"*++QQQJr9 IٳyNtx񢡯6츪Q[[ Nda1/ ]ss3h؈z\z˗Q__.k "HFFF~Fڊ2ígΜAmm-)Sֳ~|I>.B z*P[[oVTbbb`MMM駟nH4wwwaYno>[A3F[[QWW>whiiשsw0#Vc+JM?s7~ꯣ0#TSSc!mnnXXCrNNN2 *􉟏Ows#D4hjj2Ѿ}b=}_W  }l<== }CѠW^5^~c@X8o...7)OOO>NȒ14 GD{{;Յtvv_ܷM'N0g NNN0W2?rֆ5MAT ׈l4""""""F0A#"""""LЈl4""""""F0A#"""""LЈl4""""""F0A#"""""LЈl4""""""F0A#"""""LЈl4""""""F0A#"""""LЈl4""""""F0A#"""""LЈl4""""""F0A#"""""LЈl4""""""F8HIST~;::"11jMV2!:"""""VxyyU{n GD<őh;ӂ 4""""IH'չbVhrcFDDDD4-]nnnC>舵k 4""""Is}ׯrT4""""I.33===>兌 +G4y1A#""""{㎎X~GMr̼!A#""""";v Xpp0._ L&QTΝPNNNdrfeLЈ2 <4n(HDDDDDӧO#110}tTTTH#hDDDDDHHH@TT`Æ 3I9HYNCKK ZZZV Z VkXᨨ'nnnpvv\.FSƩ&T*\|uuuz*  Zv ( " JG@@Np8;;[,  kllDYYPYYjTUUARٰT* I? G <==gggPGb޼yhkkCOOyj߭hiiAmm-P__o `ԩ6m"""ebFDDDDdt:Ξ=|:uʐ]rӧ#""[hhhSmMSS.^Juíppp@dd$$ 00P |塠jG|| VX˗cɒ%: ܹsg:tXt)֬Y˗ uuu/G}lcժUXv-/^ ]~{Ů]p`ݺuذan34""""Q믿> j˗/??;MZ֭[QRR$|wXx{ڜ2 p ua.cO())u.&5k k~>єa ieKKFKK wEcFDDDDZ}}=BBB"==ݢu Bfj_ ~f裏BR U$ ,\PlᘉVhF̷~;rrre&hDDDD4ɝ;wprrZ$2r{P?ƲZ̙3 JeѤ 7775Ծ PFzp7e>gk\.[>&hDDDD4Vo d 4 1wrAZ[}}=*1A#"""Im֬YpՓ.!ܧ81YȖE+..íR4""""-Z|V{6RyZvիV4""""ԜqFEoo뷵ɓ'?׿dFDDDD޿뿢izL9mo[3k%L"33 g P5+WDvv~jT !nXƜ$כrcH rmӦMػw/JJJP(,V@ׯzѣGىdWBiiԡt:v܉dSOaʔ)x'h"cǎHHH:AwЈ //v܉^s=ذanVKޤ܌/|9H<x$ux#bFDDDDdmmm|G˃/V\իW###R8a]z{_|~Xf |Aˌ.^]v/Dnn.qmnCZZq\A~~><رcҥKfypww:QaFDDDDdAػw/;v[o)))9s:cm(**B^^~:tmmmEzz:.]4899I1A#""""N'O8x rss/// %%HLLDxxJ(**ǑSNA"44[pp4"""""̐?~eee텧'bcc8#22SLԡY{{;T*QVV2ZHNNFjj!y :lcFDDDDdCQVVӧO̙3(--EYYjjj EDD"""0uTAT"((P*ptt=\zuuuGmm-.^jT*T*444OTT!CBB`g7~ 8Ԅ~INuu5peh4~+J򂗗<<< ;;;xyy^ 777Ч ZjK[[jԄf\zbCXX!'3&hDDDDD@[[\zQ@Vp_VCK/i[n}9BaH<<< BB (J"00J وwR'bFDDDDDd#&hDDDDDD6.{IENDB`circuits-3.1.0/docs/source/roadmap.rst0000644000014400001440000000127312402037676020750 0ustar prologicusers00000000000000Road Map ======== Here's a list of upcoming releases of circuits in order of "next release first". Each bullet point states a high level goal we're trying to achieve for the release whilst the "Issues List" (*linked to our Issue Tracker*) lists specific issues we've tagged with the respective milestone. .. note:: At this stage we don't have any good estimates for our milestones but we hope we can improve this with future releases and start adding estimates here. circuits 3.1 ------------ - Improved `circuits.web `_ .. seealso:: `circuits 3.1 milestone `_ circuits-3.1.0/docs/source/contributors.rst0000644000014400001440000000101512402037676022054 0ustar prologicusers00000000000000Contributors ============ circuits was originally designed, written and primarily maintained by James Mills (http://prologic.shortcircuit.net.au/). The following users and developers have contributed to circuits: - Alessio Deiana - Dariusz Suchojad - Tim Miller - Holger Krekel - Justin Giorgi - Edwin Marshall - Alex Mayfield - Toni Alatalo - Michael Lipp Anyone not listed here (*apologies as this list is taken directly from Mercurial's churn command and output*). We appreciate any and all contributions to circuits. circuits-3.1.0/docs/source/examples/0000755000014400001440000000000012425013643020377 5ustar prologicusers00000000000000circuits-3.1.0/docs/source/examples/hello.py0000755000014400001440000000111412402037676022063 0ustar prologicusers00000000000000#!/usr/bin/env python """circuits Hello World""" from circuits import Component, Event class hello(Event): """hello Event""" class App(Component): def hello(self): """Hello Event Handler""" print("Hello World!") def started(self, component): """Started Event Handler This is fired internally when your application starts up and can be used to trigger events that only occur once during startup. """ self.fire(hello()) # Fire hello Event raise SystemExit(0) # Terminate the Application App().run() circuits-3.1.0/docs/source/examples/index.rst0000644000014400001440000000112212402037676022243 0ustar prologicusers00000000000000Hello ..... .. literalinclude:: examples/hello.py :language: python :linenos: Download Source Code: :download:`hello.py: ` Echo Server ........... .. literalinclude:: examples/echoserver.py :language: python :linenos: Download Source Code: :download:`echoserver.py: ` Hello Web ......... .. literalinclude:: examples/helloweb.py :language: python :linenos: Download Source Code: :download:`helloweb.py: ` More `examples `_... circuits-3.1.0/docs/source/examples/helloweb.py0000755000014400001440000000071412412211602022546 0ustar prologicusers00000000000000#!/usr/bin/env python from circuits.web import Server, Controller class Root(Controller): def index(self): """Index Request Handler Controller(s) expose implicitly methods as request handlers. Request Handlers can still be customized by using the ``@expose`` decorator. For example exposing as a different path. """ return "Hello World!" app = Server(("0.0.0.0", 8000)) Root().register(app) app.run() circuits-3.1.0/docs/source/examples/echoserver.py0000755000014400001440000000171312412211567023124 0ustar prologicusers00000000000000#!/usr/bin/env python """Simple TCP Echo Server This example shows how you can create a simple TCP Server (an Echo Service) utilizing the builtin Socket Components that the circuits library ships with. """ from circuits import handler, Debugger from circuits.net.sockets import TCPServer class EchoServer(TCPServer): @handler("read") def on_read(self, sock, data): """Read Event Handler This is fired by the underlying Socket Component when there has been new data read from the connected client. ..note :: By simply returning, client/server socket components listen to ValueChagned events (feedback) to determine if a handler returned some data and fires a subsequent Write event with the value returned. """ return data # Start and "run" the system. # Bind to port 0.0.0.0:8000 app = EchoServer(("0.0.0.0", 8000)) Debugger().register(app) app.run() circuits-3.1.0/docs/Makefile0000644000014400001440000000607612402037676016741 0ustar prologicusers00000000000000# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/circuits.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/circuits.qhc" latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." circuits-3.1.0/docs/circuits-docs.xml0000644000014400001440000000043012402037676020562 0ustar prologicusers00000000000000circuits-3.1.0/docs/requirements.txt0000644000014400001440000000023512425011010020527 0ustar prologicusers00000000000000Sphinx #releases -e git+https://github.com/bitprophet/releases.git#egg=releases Sphinx-PyPI-upload sphinxcontrib-programoutput sphinxcontrib-googleanalytics circuits-3.1.0/docs/make.bat0000644000014400001440000000600712174742426016702 0ustar prologicusers00000000000000@ECHO OFF REM Command file for Sphinx documentation set SPHINXBUILD=sphinx-build set BUILDDIR=build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. changes to make an overview over all changed/added/deprecated items echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\circuits.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\circuits.ghc goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) :end circuits-3.1.0/docs/logo_small.png0000644000014400001440000002512412402037676020132 0ustar prologicusers00000000000000PNG  IHDR;LDiCCPiccHǭuTT.I FiicHiBR1@@1TARPR A]}:k~>~Κ}^p|}=a/o2Y KJ_%]c=q.1ޝ8Ԫ߬OpS?wФ=( LO/69`/nwsp"r8MT\~/~uAx{@Q{;{^$sx0Sދ D^!{qD>\_% @tĝz&?c̍gMhM~tbꝎ9>>?/1Y/_/,5/-w|Xu[] -msfw[[>??vvvh[8 <= *YO!hi/3 <򎭑h*e^o>{-AI!&hIRI2UO3+Y+|PcR7Ѹ٨53'I4(7l14^2̨͏*~f3amO(t2uvt9w.gWw}r,@ `apd؉܎ڹw ]Wǂk8x7$ԒRR-l32ndiܒ+_RD^[P2\<"ҼJk5zfvnmCƀ64?d|}h@P|xQKaދ7/=}%A ,VozǍDBer *.u=m(IFnfxMlD|nw޽[1ێEabe`lk!oy m^rvv_Pc̟7 Rp݈Ũ'.G\=wbpč$tLҬ;qVdE_J*nT] kol{i^sW 3y{[ЃG4+?M~"Xqpsgt\`{3(Jjnh(+upx0B;D2HA#&EBŠ^I 88& MAJ2DDZMJEb08=Rʋm24},0USL ̅GXXY3,Y'99Jsvyx+ĈGy%u JI֧bJʢHUT4Zشeuuc *Xd8$Mg״}kՠMwp]%)&&RbXAJ\.=115RFέ۶E$fe;Uw6jR66f=pz})Is3m_^ tLwt+w{/1;|TkD$OZsٿ..X[.[\5[ؚúf-cۋ?vvwW*S/ 3&5z;!~b/7fwu䠪CTW7 ~}ϟ߹wP3G7f?UGӝ~3ǔzR .琟ywW7v rA_5缽<[ cHRMz&u0`:pQ<bKGD oFFsgB pHYs   vpAg5#aHIDATx{\WϙD@R'twV-\ b]m>ĮPX~]]h烷m[hKbV%G}DQ5J1a&d}ə3gN2_Μ93n#eL&l6h4~z%f3 ß? z>---===**ǢOF1??߿ Z6'''33s% E/i&8&h47 a[2L6m2ph ǃ['f9555##fJTe222@,!hJJJt:̃e2222t DŽO !r|=}, c`t,9f .=0B4ffhDصεbphg}ջE$ ?2L)))8P5g~ӢbGƒ_ sYman1B7pN(3cnu"+.p\EW zdvK(LVџ 0A`A`pc1F H`ǺAJAA.vĘtk,Vq kx"0&0&○(q0AysKVVVr_/͖ Yb6jkvN k"1qwCCdmm>ċ/? - YrEږG/P\\,Az{Bj֒a 'G'4 īZ_* 'ǀ;9 :Zڳ;v{dGL +DaǐѪIZGJR~x߿ۯaÆ2VfEGG^-&|),*B%GEܸU_s:dD*[/ 0H{{9.vaKXP<u !dXq]EO}q.nfup82Qt]fC TE\EnhlnnvOqUTTt%&6+4"9Aݢ]uۙrIvԋFPP$P/]$1M5nf_nB}--3|ձPO*1u6v"oh==ݣT^j*?JOL^=*Y-~یS#^E\ a&P=gP"ܯ$!}%oW<>!"y9|@d<95T"\H_UŮ)ɫ t,H /ѯazEvEQTR[5W-IqU/1,ѯ{ᯞ01LڽZ._}p!''OOxq_mq1aZ8Z 9QƮk*z]0<$J^흦TӞf,9Kn7[O[:v&!!f]j|X,9i˿ x6%a-}.{y:h'?>YWrJD "Fq! cWmBOLԟ? #r933_p~="W"].*͹(A*BQ?IA`!t cK 0&g߾;?VeJ \9ZC]?w1a:bܝrJ19I,,,A/; ^:ck} u51y)a yhx&3u%"2 :QLAwdv$4˹. LQe,BZζ`̼GO-VK{-88(:::'''%%Æ~j Ѯxp]A0rvE"_Uc݀DeϞ=k׮-ϛB戇;au5U;QCTgXn1GGG rJϋ^0PmMj_ KZRT9OGGGJJJss3w4zNeqE5GkJ V]n(aݻ]'KjDSA.aTC5U}3_LoF^(.(䩉Xu5U9[<(X7!{B&r׆R8lg9a`Jdo?Co͙eu @}に0+/fu1'gp:ح{hn+WsW[vn[MEhf gJjVb=$pu1; a_rO[0H9jF >&JR/; w W~n|TT"T$ɬ,V7G/ZR >~"',zx`/Bm9:aUru ģ& ժgcXAAoȗzⰙI/wo E߲L O>Fcs YQd'*HT)k^ݶ1ΨQbbb?.hb|65k~鱷~D۷<Μ9Cܼyرc7o šv!R(g:)k]pRt5T'>}$k!_[fߵsI^?U` /}Ϲ'qOhZqdć:[9sG_h@0nN/_>fF{F1 3 @2k3 {C`t̡ nB(--=EsjvfYfn<d2eggC3ɻu:]mmmAAF4]NQQQQQ"vinn6 U/wFc}}f3L6_䭷btIp'23I'N`|рNNNV+v0N2r1 mwgϳB d7L:I Bbр^ `d%tEXtdate:create2014-03-07T23:13:57+10:00Mg%tEXtdate:modify2014-03-07T23:12:40+10:00)ߊ{JtEXtsignature9d14811ec09a04aaeeb8cc278b7646b54cc4f6f403a5580cce42dde4bacfe5c1YwIENDB`