===============
Common Overview
===============

OPC-UA is built around the concept of namespaces and nodes. This concept is
present in the server and the client and therefore much of the code is shared
by both. In this section we take a look at the shared part of the library.

The shared code lives in the :mod:`asyncua.common`, :mod:`asyncua.ua`
and :mod:`asyncua.crypto` packages and the most important classes and methods
from these packages will be discussed in the following sections.


asyncua.common package
======================

The :mod:`asyncua.common` package is provides the core functionality of the library.
Several important parts life in this subpackage, for example the :class:`~asyncua.common.node.Node`
class and the :mod:`~asyncua.common.subscription` module. You can find usage examples
of these classes and functionalities in the following sections.


asyncua.ua package
==================

The :mod:`asyncua.ua` package contains mostly autogenerated code which reflects the standard
objects, attributes and status codes provided by the OPC-UA standard.

asyncua.crypto package
======================

Code related to permissions, security and encryption is located in the :mod:`asyncua.crypto`
package.
