#####################################
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 are encouraged to place all modules into it. To do that, simply create
   a `pwc` directory in your project and place :file:`__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:

Extension Package
`````````````````

.. autoclass:: ExtensionPackage

   Uses setuptools resources_ to load attribute values from package metadata.
   See :doc:`package-spec` for more information about PowerConsole Extension packages.

   .. attribute:: name

     **Unique** name of the extension package.

   .. attribute:: version

      String containing package version.

   .. attribute:: summary

      Short package description.

   .. attribute:: url

      URL to package home website.

   .. attribute:: download_url

      URL to package download area.

   .. attribute:: description

      Package description.

   .. attribute:: author

      Name of package author.

   .. attribute:: author_email

      Author's contact e-mail address.

   .. attribute:: license

      License used for package distrbution.


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

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


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:

.. _resources: http://peak.telecommunity.com/DevCenter/PkgResources
