Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Python implementation of the Common Information Model.
Python
tag: v14.15.2

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
CIM14
PyCIM
model
.gitignore
LICENSE
MANIFEST.in
README
epydoc.config
setup.py

README

============
Introduction
============

PyCIM is a Python implementation of the IEC Common Information Model. Current
features include:

- Support for IEC 61970 14v15 and IEC 61968 10v31.
- Class and attribute documentation integrated as Python docstrings.
- Transparent bi-directional reference handling using Python properties.
- CIM RDF/XML parsing and serialisation according to IEC 61970-552.

Installation
------------

PyCIM has no dependencies beyond Python_ 2.5 or later. It can be easy_installed
using setuptools_::

  $ easy_install PyCIM

Alternatively, download and unpack the tarball and install::

  $ tar zxf PyCIM-14.15.tar.gz
  $ python setup.py install

On UNIX systems, use sudo for the latter command if you need to install the
scripts to a directory that requires root privileges::

  $ sudo python setup.py install

The development Git_ repository can be cloned from GitHub_::

  $ git clone https://github.com/rwl/PyCIM.git

Using PyCIM
-----------

To use PyCIM with the Python interpreter, iPython_ is recommended. For example,
to instantiate a ``ConnecticityNode``:

.. sourcecode:: ipython

  In [1]: from CIM14.IEC61970.Core import ConnectivityNode

  In [2]: node = ConnectivityNode(name='Node 1')

To associate the node with a ``Terminal``:

.. sourcecode:: ipython

  In [3]: from CIM14.IEC61970.Core import Terminal

  In [4]: t = Terminal(name='T1', ConnectivityNode=node)

  In [5]: node.Terminals[0].name
  Out[5]: 'T1'

To add a ``Terminal`` to a ``ConnectivityNode``:

.. sourcecode:: ipython

  In [6]: t2 = Terminal()

  In [7]: node.addTerminals(t2)

  In [8]: t2.ConnectivityNode.name
  Out[8]: 'Node 1'

To view the docstring for an attribute:

.. sourcecode:: ipython

  In [9]: t.connected?
  Type:     bool
  Base Class: <type 'bool'>
  String Form:    False
  Namespace:  Interactive
  Docstring:
      bool(x) -> bool

      Returns True when the argument x is true, False otherwise.
      The builtins True and False are the only two instances of the class bool.
      The class bool is a subclass of the class int, and cannot be subclassed.

To parse a CIM RDF/XML file:

.. sourcecode:: ipython

  In[1]: import logging

  In[2]: logging.basicConfig(level=logging.INFO)

  In[3]: from PyCIM import cimread

  In[4]: d = cimread('path/to/input_file.xml')
  INFO:PyCIM.RDFXMLReader:Created 5660 CIM objects in 1.04s.

The ``cimread`` function returns a Python dictionary that maps UUIDs to CIM
objects.  To serialise the dictionary of objects:

.. sourcecode:: ipython

  In[5]: from PyCIM import cimwrite

  In[6]: cimwrite(d, 'path/to/output_file.xml')
  INFO:PyCIM.RDFXMLWriter:5660 CIM objects serialised in 1.14s.

For further information refer to the `API documentation`_.

License
-------

PyCIM is licensed under the `GNU Lesser General Public License`_ version 2.1
to allow commercial use while ensuring it remains free and open source.

Credits
-------

PyCIM is developed by Richard Lincoln (r.w.lincoln@gmail.com).

.. _Python: http://www.python.org/
.. _setuptools: http://peak.telecommunity.com/DevCenter/setuptools/
.. _Git: http://git-scm.com/
.. _GitHub: http://github.com/
.. _iPython: http://ipython.scipy.org
.. _`GNU Lesser General Public License`: http://www.gnu.org/licenses/lgpl-2.1.html
.. _`API documentation`: http://packages.python.org/PyCIM
Something went wrong with that request. Please try again.