#####################################
PowerConsole Core modules and classes
#####################################

pwc
===

.. automodule:: pwc
   :synopsis: PowerConsole Namespace Package

   PowerConsole utilizes namespace package `pwc` to put all modules used by various command and extensions
   packages that are distributed separately into single cohesive system.

   So command and extension developers should place all modules into it. To do that, simply create a `pwc`
   directory in your project and place `__init__.py` file in it with next content::

      __import__('pkg_resources').declare_namespace(__name__)

pwc.base
========

.. automodule:: pwc.base
   :synopsis: Core PowerConsole Classes

Data
----

.. data:: pwc.base.displays
   Global cache of display instances. Dictionary where key is context of the display.

.. data:: pwc.base.renderers
   Global cache of object renderer classes.

Exceptions
----------

.. autoexception:: pcException
.. autoexception:: pcError
.. autoexception:: pcParseError

Functions
---------

.. autofunction:: isiterable
.. autofunction:: unquote
.. autofunction:: iif
.. autofunction:: asString
.. autofunction:: columnize

Classes
-------

Helper classes
``````````````

.. autoclass:: struct
   :member-order: groupwise
   :members:

.. autoclass:: LateBindingProperty
   :member-order: groupwise
   :members:

Command
```````

.. autoclass:: Command
   :member-order: groupwise
   :members:

   .. automethod:: __init__
   .. automethod:: _compile
   .. automethod:: _makeNameNode
   .. automethod:: _tokenToInt
   .. automethod:: _getContextLocals
   .. automethod:: _getUserNamespace
   .. automethod:: _fail
   .. automethod:: _getGrammar
   .. automethod:: _getCmdKeyword

User Interface Provider
```````````````````````

.. autoclass:: UserInterfaceProvider
   :member-order: groupwise
   :members:

Display
```````

.. autoclass:: Display
   :member-order: groupwise
   :members:

.. autoclass:: ObjectVisitor
   :member-order: groupwise
   :members:

   .. automethod:: __getattr__

Help Provider
`````````````

.. data:: HELP_PREFIX
   Name prefix for attributes/methods that define content for help topics.

   HELP_PREFIX   = 'help\_'

.. autoclass:: HelpProvider
   :member-order: groupwise
   :members:

pwc.interpreter
===============

.. automodule:: pwc.interpreter
   :synopsis: PowerConsole Execution Engine

This module could be also run directly as very simple CLI console.

Execution engine
----------------

.. autoclass:: Interpreter
   :member-order: groupwise
   :members:

Console
-------

.. autoclass:: Console
   :member-order: groupwise
   :members:

.. autofunction:: interact

pwc.Itpl
========

.. automodule:: pwc.Itpl
   :synopsis: String interpolation for Python

Exceptions
----------

.. autoexception:: ItplError

Functions
---------

.. autofunction:: filter
.. autofunction:: unfilter

Classes
-------

.. autoclass:: Itpl
   :member-order: groupwise
   :members:

   .. automethod:: __init__
   .. automethod:: _str
   .. automethod:: __str__

.. autoclass:: ItplNS
   :member-order: groupwise
   :members:

   .. automethod:: __init__

.. autoclass:: ItplFile
   :member-order: groupwise
   :members:

pwc.stdcmd
==========

.. automodule:: pwc.stdcmd
   :synopsis: Standard PowerConsole Commands

.. autoclass:: ShowExtender
   :member-order: groupwise
   :members:

