You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ariatosca.apache.org by em...@apache.org on 2017/06/26 22:35:49 UTC

[1/2] incubator-ariatosca git commit: Many improvements to docs

Repository: incubator-ariatosca
Updated Branches:
  refs/heads/ARIA-286-sphinx-documentation 66213279b -> 7ed92d0fe


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/modeling/service_template.py
----------------------------------------------------------------------
diff --git a/aria/modeling/service_template.py b/aria/modeling/service_template.py
index 063605d..ba62416 100644
--- a/aria/modeling/service_template.py
+++ b/aria/modeling/service_template.py
@@ -54,50 +54,46 @@ class ServiceTemplateBase(TemplateModelMixin):
     It is usually created by various DSL parsers, such as ARIA's TOSCA extension. However, it can
     also be created programmatically.
 
-    :ivar name: Name (unique for this ARIA installation)
+    :ivar name: name (unique for this ARIA installation)
     :vartype name: basestring
-    :ivar description: Human-readable description
-    :vartype description: basestring
-    :ivar main_file_name: Filename of CSAR or YAML file from which this service template was parsed
+    :ivar main_file_name: filename of CSAR or YAML file from which this service template was parsed
     :vartype main_file_name: basestring
-    :ivar meta_data: Custom annotations
-    :vartype meta_data: {basestring: :class:`Metadata`}
-    :ivar node_templates: Templates for creating nodes
-    :vartype node_templates: {basestring: :class:`NodeTemplate`}
-    :ivar group_templates: Templates for creating groups
-    :vartype group_templates: {basestring: :class:`GroupTemplate`}
-    :ivar policy_templates: Templates for creating policies
-    :vartype policy_templates: {basestring: :class:`PolicyTemplate`}
-    :ivar substitution_template: The entire service can appear as a node
+    :ivar meta_data: custom annotations
+    :vartype meta_data: {:obj:`basestring`: :class:`Metadata`}
+    :ivar node_templates: templates for creating nodes
+    :vartype node_templates: {:obj:`basestring`: :class:`NodeTemplate`}
+    :ivar group_templates: templates for creating groups
+    :vartype group_templates: {:obj:`basestring`: :class:`GroupTemplate`}
+    :ivar policy_templates: templates for creating policies
+    :vartype policy_templates: {:obj:`basestring`: :class:`PolicyTemplate`}
+    :ivar substitution_template: the entire service can appear as a node
     :vartype substitution_template: :class:`SubstitutionTemplate`
-    :ivar inputs: Externally provided parameters
-    :vartype inputs: {basestring: :class:`Input`}
-    :ivar outputs: These parameters are filled in after service installation
-    :vartype outputs: {basestring: :class:`Output`}
-    :ivar workflow_templates: Custom workflows that can be performed on the service
-    :vartype workflow_templates: {basestring: :class:`OperationTemplate`}
-    :ivar plugin_specifications: Plugins used by the service
-    :vartype plugin_specifications: {basestring: :class:`PluginSpecification`}
-    :ivar node_types: Base for the node type hierarchy
-    :vartype node_types: :class:`Type`
-    :ivar group_types: Base for the group type hierarchy
-    :vartype group_types: :class:`Type`
-    :ivar policy_types: Base for the policy type hierarchy
-    :vartype policy_types: :class:`Type`
-    :ivar relationship_types: Base for the relationship type hierarchy
-    :vartype relationship_types: :class:`Type`
-    :ivar capability_types: Base for the capability type hierarchy
-    :vartype capability_types: :class:`Type`
-    :ivar interface_types: Base for the interface type hierarchy
-    :vartype interface_types: :class:`Type`
-    :ivar artifact_types: Base for the artifact type hierarchy
-    :vartype artifact_types: :class:`Type`
-    :ivar created_at: Creation timestamp
-    :vartype created_at: :class:`datetime.datetime`
-    :ivar updated_at: Update timestamp
-    :vartype updated_at: :class:`datetime.datetime`
-    :ivar services: Instantiated services
-    :vartype services: [:class:`Service`]
+    :ivar inputs: externally provided parameters
+    :vartype inputs: {:obj:`basestring`: :class:`Input`}
+    :ivar outputs: these parameters are filled in after service installation
+    :vartype outputs: {:obj:`basestring`: :class:`Output`}
+    :ivar workflow_templates: custom workflows that can be performed on the service
+    :vartype workflow_templates: {:obj:`basestring`: :class:`OperationTemplate`}
+    :ivar plugin_specifications: plugins used by the service
+    :vartype plugin_specifications: {:obj:`basestring`: :class:`PluginSpecification`}
+    :ivar node_types: base for the node type hierarchy
+    :vartype node_types: Type
+    :ivar group_types: base for the group type hierarchy
+    :vartype group_types: Type
+    :ivar policy_types: base for the policy type hierarchy
+    :vartype policy_types: Type
+    :ivar relationship_types: base for the relationship type hierarchy
+    :vartype relationship_types: Type
+    :ivar capability_types: base for the capability type hierarchy
+    :vartype capability_types: Type
+    :ivar interface_types: base for the interface type hierarchy
+    :vartype interface_types: Type
+    :ivar artifact_types: base for the artifact type hierarchy
+    :vartype artifact_types: Type
+    :ivar created_at: creation timestamp
+    :vartype created_at: datetime.datetime
+    :ivar updated_at: update timestamp
+    :vartype updated_at: datetime.datetime
     """
 
     __tablename__ = 'service_template'
@@ -212,6 +208,11 @@ class ServiceTemplateBase(TemplateModelMixin):
 
     @declared_attr
     def services(cls):
+        """
+        Instantiated services.
+
+        :type: [:class:`Service`]
+        """
         return relationship.one_to_many(cls, 'service', dict_key='name')
 
     @declared_attr
@@ -403,40 +404,40 @@ class NodeTemplateBase(TemplateModelMixin):
     """
     A template for creating zero or more :class:`Node` instances.
 
-    :ivar name: Name (unique for this service template; will usually be used as a prefix for node
+    :ivar name: name (unique for this service template; will usually be used as a prefix for node
                 names)
     :vartype name: basestring
-    :ivar type: Node type
-    :vartype type: :class:`Type`
-    :ivar description: Human-readable description
+    :ivar type: node type
+    
+    :ivar description: human-readable description
     :vartype description: basestring
-    :ivar default_instances: Default number nodes that will appear in the service
+    :ivar default_instances: default number nodes that will appear in the service
     :vartype default_instances: int
-    :ivar min_instances: Minimum number nodes that will appear in the service
+    :ivar min_instances: minimum number nodes that will appear in the service
     :vartype min_instances: int
-    :ivar max_instances: Maximum number nodes that will appear in the service
+    :ivar max_instances: maximum number nodes that will appear in the service
     :vartype max_instances: int
-    :ivar properties: Associated parameters
-    :vartype properties: {basestring: :class:`Property`}
-    :ivar interface_templates: Bundles of operations
-    :vartype interface_templates: {basestring: :class:`InterfaceTemplate`}
-    :ivar artifact_templates: Associated files
-    :vartype artifact_templates: {basestring: :class:`ArtifactTemplate`}
-    :ivar capability_templates: Exposed capabilities
-    :vartype capability_templates: {basestring: :class:`CapabilityTemplate`}
-    :ivar requirement_templates: Potential relationships with other nodes
+    :ivar properties: associated parameters
+    :vartype properties: {:obj:`basestring`: :class:`Property`}
+    :ivar interface_templates: bundles of operations
+    :vartype interface_templates: {:obj:`basestring`: :class:`InterfaceTemplate`}
+    :ivar artifact_templates: associated files
+    :vartype artifact_templates: {:obj:`basestring`: :class:`ArtifactTemplate`}
+    :ivar capability_templates: exposed capabilities
+    :vartype capability_templates: {:obj:`basestring`: :class:`CapabilityTemplate`}
+    :ivar requirement_templates: potential relationships with other nodes
     :vartype requirement_templates: [:class:`RequirementTemplate`]
-    :ivar target_node_template_constraints: Constraints for filtering relationship targets
+    :ivar target_node_template_constraints: constraints for filtering relationship targets
     :vartype target_node_template_constraints: [:class:`NodeTemplateConstraint`]
-    :ivar service_template: Containing service template
-    :vartype service_template: :class:`ServiceTemplate`
-    :ivar group_templates: We are a member of these groups
+    :ivar service_template: containing service template
+    :vartype service_template: ServiceTemplate
+    :ivar group_templates: we are a member of these groups
     :vartype group_templates: [:class:`GroupTemplate`]
-    :ivar policy_templates: Policy templates enacted on this node
+    :ivar policy_templates: policy templates enacted on this node
     :vartype policy_templates: [:class:`PolicyTemplate`]
-    :ivar substitution_template_mapping: Our contribution to service substitution
+    :ivar substitution_template_mapping: our contribution to service substitution
     :vartype substitution_template_mapping: :class:`SubstitutionTemplateMapping`
-    :ivar nodes: Instantiated nodes
+    :ivar nodes: instantiated nodes
     :vartype nodes: [:class:`Node`]
     """
 
@@ -620,23 +621,23 @@ class GroupTemplateBase(TemplateModelMixin):
 
     Groups are logical containers for zero or more nodes.
 
-    :ivar name: Name (unique for this service template)
+    :ivar name: name (unique for this service template)
     :vartype name: basestring
-    :ivar type: Group type
-    :vartype type: :class:`Type`
-    :ivar description: Human-readable description
+    :ivar type: group type
+    
+    :ivar description: human-readable description
     :vartype description: basestring
-    :ivar node_templates: All nodes instantiated by these templates will be members of the group
+    :ivar node_templates: all nodes instantiated by these templates will be members of the group
     :vartype node_templates: [:class:`NodeTemplate`]
-    :ivar properties: Associated parameters
-    :vartype properties: {basestring: :class:`Property`}
-    :ivar interface_templates: Bundles of operations
-    :vartype interface_templates: {basestring: :class:`InterfaceTemplate`}
-    :ivar service_template: Containing service template
+    :ivar properties: associated parameters
+    :vartype properties: {:obj:`basestring`: :class:`Property`}
+    :ivar interface_templates: bundles of operations
+    :vartype interface_templates: {:obj:`basestring`: :class:`InterfaceTemplate`}
+    :ivar service_template: containing service template
     :vartype service_template: :class:`ServiceTemplate`
-    :ivar policy_templates: Policy templates enacted on this group
+    :ivar policy_templates: policy templates enacted on this group
     :vartype policy_templates: [:class:`PolicyTemplate`]
-    :ivar groups: Instantiated groups
+    :ivar groups: instantiated groups
     :vartype groups: [:class:`Group`]
     """
 
@@ -754,21 +755,20 @@ class PolicyTemplateBase(TemplateModelMixin):
     Policies can be applied to zero or more :class:`NodeTemplate` or :class:`GroupTemplate`
     instances.
 
-    :ivar name: Name (unique for this service template)
+    :ivar name: name (unique for this service template)
     :vartype name: basestring
-    :ivar type: Policy type
-    :vartype type: :class:`Type`
-    :ivar description: Human-readable description
+    :ivar type: policy type
+    :ivar description: human-readable description
     :vartype description: basestring
-    :ivar node_templates: Policy will be enacted on all nodes instantiated by these templates
+    :ivar node_templates: policy will be enacted on all nodes instantiated by these templates
     :vartype node_templates: [:class:`NodeTemplate`]
-    :ivar group_templates: Policy will be enacted on all nodes in these groups
+    :ivar group_templates: policy will be enacted on all nodes in these groups
     :vartype group_templates: [:class:`GroupTemplate`]
-    :ivar properties: Associated parameters
-    :vartype properties: {basestring: :class:`Property`}
-    :ivar service_template: Containing service template
+    :ivar properties: associated parameters
+    :vartype properties: {:obj:`basestring`: :class:`Property`}
+    :ivar service_template: containing service template
     :vartype service_template: :class:`ServiceTemplate`
-    :ivar policies: Instantiated policies
+    :ivar policies: instantiated policies
     :vartype policies: [:class:`Policy`]
     """
 
@@ -886,13 +886,13 @@ class SubstitutionTemplateBase(TemplateModelMixin):
     """
     Used to substitute a single node for the entire deployment.
 
-    :ivar node_type: Exposed node type
-    :vartype node_type: :class:`Type`
-    :ivar mappings: Requirement and capability mappings
-    :vartype mappings: {basestring: :class:`SubstitutionTemplateMapping`}
-    :ivar service_template: Containing service template
+    :ivar node_type: exposed node type
+    :vartype node_type: Type
+    :ivar mappings: requirement and capability mappings
+    :vartype mappings: {:obj:`basestring`: :class:`SubstitutionTemplateMapping`}
+    :ivar service_template: containing service template
     :vartype service_template: :class:`ServiceTemplate`
-    :ivar substitutions: Instantiated substitutions
+    :ivar substitutions: instantiated substitutions
     :vartype substitutions: [:class:`Substitution`]
     """
 
@@ -970,16 +970,16 @@ class SubstitutionTemplateMappingBase(TemplateModelMixin):
 
     Only one of `capability_template` and `requirement_template` can be set.
 
-    :ivar name: Exposed capability or requirement name
+    :ivar name: exposed capability or requirement name
     :vartype name: basestring
-    :ivar node_template: Node template
-    :vartype node_template: :class:`NodeTemplate`
-    :ivar capability_template: Capability template in the node template
-    :vartype capability_template: :class:`CapabilityTemplate`
-    :ivar requirement_template: Requirement template in the node template
-    :vartype requirement_template: :class:`RequirementTemplate`
-    :ivar substitution_template: Containing substitution template
-    :vartype substitution_template: :class:`SubstitutionTemplate`
+    :ivar node_template: node template
+    :vartype node_template: NodeTemplate
+    :ivar capability_template: capability template in the node template
+    :vartype capability_template: CapabilityTemplate
+    :ivar requirement_template: requirement template in the node template
+    :vartype requirement_template: RequirementTemplate
+    :ivar substitution_template: containing substitution template
+    :vartype substitution_template: SubstitutionTemplate
     """
 
     __tablename__ = 'substitution_template_mapping'
@@ -1106,26 +1106,26 @@ class RequirementTemplateBase(TemplateModelMixin):
     Requirements may optionally contain a :class:`RelationshipTemplate` that will be created between
     the nodes.
 
-    :ivar name: Name (a node template can have multiple requirements with the same name)
+    :ivar name: name (a node template can have multiple requirements with the same name)
     :vartype name: basestring
-    :ivar target_node_type: Required node type (optional)
-    :vartype target_node_type: :class:`Type`
-    :ivar target_node_template: Required node template (optional)
-    :vartype target_node_template: :class:`NodeTemplate`
-    :ivar target_capability_type: Required capability type (optional)
-    :vartype target_capability_type: :class:`Type`
-    :ivar target_capability_name: Name of capability in target node (optional)
+    :ivar target_node_type: required node type (optional)
+    :vartype target_node_type: Type
+    :ivar target_node_template: required node template (optional)
+    :vartype target_node_template: NodeTemplate
+    :ivar target_capability_type: required capability type (optional)
+    :vartype target_capability_type: Type
+    :ivar target_capability_name: name of capability in target node (optional)
     :vartype target_capability_name: basestring
-    :ivar target_node_template_constraints: Constraints for filtering relationship targets
+    :ivar target_node_template_constraints: constraints for filtering relationship targets
     :vartype target_node_template_constraints: [:class:`NodeTemplateConstraint`]
-    :ivar relationship_template: Template for relationships (optional)
-    :vartype relationship_template: :class:`RelationshipTemplate`
-    :ivar node_template: Containing node template
-    :vartype node_template: :class:`NodeTemplate`
-    :ivar substitution_template_mapping: Our contribution to service substitution
+    :ivar relationship_template: template for relationships (optional)
+    :vartype relationship_template: RelationshipTemplate
+    :ivar node_template: containing node template
+    :vartype node_template: NodeTemplate
+    :ivar substitution_template_mapping: our contribution to service substitution
     :vartype substitution_template_mapping: :class:`SubstitutionTemplateMapping`
-    :ivar substitution_mapping: Our contribution to service substitution
-    :vartype substitution_mapping: :class:`SubstitutionMapping`
+    :ivar substitution_mapping: our contribution to service substitution
+    :vartype substitution_mapping: SubstitutionMapping
     """
 
     __tablename__ = 'requirement_template'
@@ -1325,19 +1325,19 @@ class RelationshipTemplateBase(TemplateModelMixin):
     TOSCA. For example, a TOSCA requirement specifying a relationship type instead of a template
     would still be represented here as a relationship template.
 
-    :ivar name: Name (optional; if present is unique for this service template)
+    :ivar name: name (optional; if present is unique for this service template)
     :vartype name: basestring
-    :ivar type: Relationship type
-    :vartype type: :class:`Type`
-    :ivar description: Human-readable description
+    :ivar type: relationship type
+    
+    :ivar description: human-readable description
     :vartype description: basestring
-    :ivar properties: Associated parameters
-    :vartype properties: {basestring: :class:`Property`}
-    :ivar interface_templates: Bundles of operations
-    :vartype interface_templates: {basestring: :class:`InterfaceTemplate`}
-    :ivar requirement_template: Containing requirement template
-    :vartype requirement_template: :class:`RequirementTemplate`
-    :ivar relationships: Instantiated relationships
+    :ivar properties: associated parameters
+    :vartype properties: {:obj:`basestring`: :class:`Property`}
+    :ivar interface_templates: bundles of operations
+    :vartype interface_templates: {:obj:`basestring`: :class:`InterfaceTemplate`}
+    :ivar requirement_template: containing requirement template
+    :vartype requirement_template: RequirementTemplate
+    :ivar relationships: instantiated relationships
     :vartype relationships: [:class:`Relationship`]
     """
 
@@ -1434,25 +1434,25 @@ class CapabilityTemplateBase(TemplateModelMixin):
     A capability of a :class:`NodeTemplate`. Nodes expose zero or more capabilities that can be
     matched with :class:`Requirement` instances of other nodes.
 
-    :ivar name: Name (unique for the node template)
+    :ivar name: name (unique for the node template)
     :vartype name: basestring
-    :ivar type: Capability type
-    :vartype type: :class:`Type`
-    :ivar description: Human-readable description
+    :ivar type: capability type
+    
+    :ivar description: human-readable description
     :vartype description: basestring
-    :ivar valid_source_node_types: Reject requirements that are not from these node types (optional)
-    :vartype valid_source_node_types: [:class:`Type`]
-    :ivar min_occurrences: Minimum number of requirement matches required
+    :ivar valid_source_node_types: reject requirements that are not from these node types (optional)
+    :vartype valid_source_node_types: Type`
+    :ivar min_occurrences: minimum number of requirement matches required
     :vartype min_occurrences: int
-    :ivar max_occurrences: Maximum number of requirement matches allowed
+    :ivar max_occurrences: maximum number of requirement matches allowed
     :vartype min_occurrences: int
-    :ivar properties: Associated parameters
-    :vartype properties: {basestring: :class:`Property`}
-    :ivar node_template: Containing node template
-    :vartype node_template: :class:`NodeTemplate`
-    :ivar substitution_template_mapping: Our contribution to service substitution
-    :vartype substitution_template_mapping: :class:`SubstitutionTemplateMapping`
-    :ivar capabilities: Instantiated capabilities
+    :ivar properties: associated parameters
+    :vartype properties: {:obj:`basestring`: :class:`Property`}
+    :ivar node_template: containing node template
+    :vartype node_template: NodeTemplate
+    :ivar substitution_template_mapping: our contribution to service substitution
+    :vartype substitution_template_mapping: SubstitutionTemplateMapping
+    :ivar capabilities: instantiated capabilities
     :vartype capabilities: [:class:`Capability`]
     """
 
@@ -1595,23 +1595,23 @@ class InterfaceTemplateBase(TemplateModelMixin):
     """
     A typed set of :class:`OperationTemplate`.
 
-    :ivar name: Name (unique for the node, group, or relationship template)
+    :ivar name: name (unique for the node, group, or relationship template)
     :vartype name: basestring
-    :ivar type: Interface type
-    :vartype type: :class:`Type`
-    :ivar description: Human-readable description
+    :ivar type: interface type
+    
+    :ivar description: human-readable description
     :vartype description: basestring
-    :ivar inputs: Inputs that can be used by all operations in the interface
-    :vartype inputs: {basestring: :class:`Input`}
-    :ivar operation_templates: Operations
-    :vartype operation_templates: {basestring: :class:`OperationTemplate`}
-    :ivar node_template: Containing node template
-    :vartype node_template: :class:`NodeTemplate`
-    :ivar group_template: Containing group template
-    :vartype group_template: :class:`GroupTemplate`
-    :ivar relationship_template: Containing relationship template
-    :vartype relationship_template: :class:`RelationshipTemplate`
-    :ivar interfaces: Instantiated interfaces
+    :ivar inputs: inputs that can be used by all operations in the interface
+    :vartype inputs: {:obj:`basestring`: :class:`Input`}
+    :ivar operation_templates: operations
+    :vartype operation_templates: {:obj:`basestring`: :class:`OperationTemplate`}
+    :ivar node_template: containing node template
+    :vartype node_template: NodeTemplate
+    :ivar group_template: containing group template
+    :vartype group_template: GroupTemplate
+    :ivar relationship_template: containing relationship template
+    :vartype relationship_template: RelationshipTemplate
+    :ivar interfaces: instantiated interfaces
     :vartype interfaces: [:class:`Interface`]
     """
 
@@ -1737,37 +1737,37 @@ class OperationTemplateBase(TemplateModelMixin):
 
     Operations are executed by an associated :class:`PluginSpecification` via an executor.
 
-    :ivar name: Name (unique for the interface or service template)
+    :ivar name: name (unique for the interface or service template)
     :vartype name: basestring
-    :ivar description: Human-readable description
+    :ivar description: human-readable description
     :vartype description: basestring
-    :ivar relationship_edge: When true specified that the operation is on the relationship's
+    :ivar relationship_edge: when ``True`` specifies that the operation is on the relationship's
                              target edge instead of its source (only used by relationship
                              operations)
     :vartype relationship_edge: bool
-    :ivar implementation: Implementation (interpreted by the plugin)
+    :ivar implementation: implementation (interpreted by the plugin)
     :vartype implementation: basestring
-    :ivar dependencies: Dependency strings (interpreted by the plugin)
-    :vartype dependencies: [basestring]
-    :ivar inputs: Inputs that can be used by this operation
-    :vartype inputs: {basestring: :class:`Input`}
-    :ivar plugin_specification: Associated plugin
-    :vartype plugin_specification: :class:`PluginSpecification`
-    :ivar configurations: Configuration (interpreted by the plugin)
-    :vartype configurations: {basestring, :class:`Configuration`}
-    :ivar function: Name of the operation function
+    :ivar dependencies: dependency strings (interpreted by the plugin)
+    :vartype dependencies: [obj:`basestring`]
+    :ivar inputs: inputs that can be used by this operation
+    :vartype inputs: {:obj:`basestring`: :class:`Input`}
+    :ivar plugin_specification: associated plugin
+    :vartype plugin_specification: PluginSpecification
+    :ivar configurations: configuration (interpreted by the plugin)
+    :vartype configurations: {obj:`basestring`: :class:`Configuration`}
+    :ivar function: name of the operation function
     :vartype function: basestring
-    :ivar executor: Name of executor to run the operation with
+    :ivar executor: name of executor to run the operation with
     :vartype executor: basestring
-    :ivar max_attempts: Maximum number of attempts allowed in case of failure
+    :ivar max_attempts: maximum number of attempts allowed in case of failure
     :vartype max_attempts: int
-    :ivar retry_interval: Interval between retries (in seconds)
+    :ivar retry_interval: interval between retries (in seconds)
     :vartype retry_interval: int
-    :ivar interface_template: Containing interface template
-    :vartype interface_template: :class:`InterfaceTemplate`
-    :ivar service_template: Containing service template
-    :vartype service_template: :class:`ServiceTemplate`
-    :ivar operations: Instantiated operations
+    :ivar interface_template: containing interface template
+    :vartype interface_template: InterfaceTemplate
+    :ivar service_template: containing service template
+    :vartype service_template: ServiceTemplate
+    :ivar operations: instantiated operations
     :vartype operations: [:class:`Operation`]
     """
 
@@ -1924,25 +1924,25 @@ class ArtifactTemplateBase(TemplateModelMixin):
     """
     A file associated with a :class:`NodeTemplate`.
 
-    :ivar name: Name (unique for the node template)
+    :ivar name: name (unique for the node template)
     :vartype name: basestring
-    :ivar type: Artifact type
-    :vartype type: :class:`Type`
-    :ivar description: Human-readable description
+    :ivar type: artifact type
+    
+    :ivar description: human-readable description
     :vartype description: basestring
-    :ivar source_path: Source path (CSAR or repository)
+    :ivar source_path: source path (CSAR or repository)
     :vartype source_path: basestring
-    :ivar target_path: Path at destination machine
+    :ivar target_path: path at destination machine
     :vartype target_path: basestring
-    :ivar repository_url: Repository URL
+    :ivar repository_url: repository URL
     :vartype repository_path: basestring
-    :ivar repository_credential: Credentials for accessing the repository
-    :vartype repository_credential: {basestring: basestring}
-    :ivar properties: Associated parameters
-    :vartype properties: {basestring: :class:`Property`}
-    :ivar node_template: Containing node template
-    :vartype node_template: :class:`NodeTemplate`
-    :ivar artifacts: Instantiated artifacts
+    :ivar repository_credential: credentials for accessing the repository
+    :vartype repository_credential: {:obj:`basestring`: :obj:`basestring`}
+    :ivar properties: associated parameters
+    :vartype properties: {:obj:`basestring`: :class:`Property`}
+    :ivar node_template: containing node template
+    :vartype node_template: NodeTemplate
+    :ivar artifacts: instantiated artifacts
     :vartype artifacts: [:class:`Artifact`]
     """
 
@@ -2057,14 +2057,14 @@ class PluginSpecificationBase(TemplateModelMixin):
     """
     Plugin specification.
 
-    :ivar name: Required plugin name
+    :ivar name: required plugin name
     :vartype name: basestring
-    :ivar version: Minimum plugin version
+    :ivar version: minimum plugin version
     :vartype version: basestring
-    :ivar enabled: Whether the plugin is enabled
+    :ivar enabled: whether the plugin is enabled
     :vartype enabled: bool
-    :ivar plugin: The matching plugin (or None if not matched)
-    :vartype plugin: :class:`Plugin`
+    :ivar plugin: the matching plugin (or ``None`` if not matched)
+    :vartype plugin: Plugin
     """
 
     __tablename__ = 'plugin_specification'

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/modeling/types.py
----------------------------------------------------------------------
diff --git a/aria/modeling/types.py b/aria/modeling/types.py
index d420c6b..4c25f93 100644
--- a/aria/modeling/types.py
+++ b/aria/modeling/types.py
@@ -14,7 +14,7 @@
 # limitations under the License.
 
 """
-ARIA modeling types module (private)
+Allows JSON-serializable collections to be used as SQLAlchemy column types. 
 """
 
 import json
@@ -56,12 +56,18 @@ class _MutableType(TypeDecorator):
 
 
 class Dict(_MutableType):
+    """
+    JSON-serializable dict type for SQLAlchemy columns.
+    """
     @property
     def python_type(self):
         return dict
 
 
 class List(_MutableType):
+    """
+    JSON-serializable list type for SQLAlchemy columns.
+    """
     @property
     def python_type(self):
         return list
@@ -71,7 +77,9 @@ class _StrictDictMixin(object):
 
     @classmethod
     def coerce(cls, key, value):
-        "Convert plain dictionaries to MutableDict."
+        """
+        Convert plain dictionaries to MutableDict.
+        """
         try:
             if not isinstance(value, cls):
                 if isinstance(value, dict):
@@ -121,7 +129,9 @@ class _MutableDict(mutable.MutableDict):
 
     @classmethod
     def coerce(cls, key, value):
-        "Convert plain dictionaries to MutableDict."
+        """
+        Convert plain dictionaries to MutableDict.
+        """
         try:
             return mutable.MutableDict.coerce(key, value)
         except ValueError as e:
@@ -146,7 +156,9 @@ class _StrictListMixin(object):
             raise exceptions.ValueFormatException('could not coerce to MutableDict', cause=e)
 
     def __setitem__(self, index, value):
-        """Detect list set events and emit change events."""
+        """
+        Detect list set events and emit change events.
+        """
         self._assert_item(value)
         super(_StrictListMixin, self).__setitem__(index, value)
 
@@ -173,7 +185,9 @@ class _MutableList(mutable.MutableList):
 
     @classmethod
     def coerce(cls, key, value):
-        "Convert plain dictionaries to MutableDict."
+        """
+        Convert plain dictionaries to MutableDict.
+        """
         try:
             return mutable.MutableList.coerce(key, value)
         except ValueError as e:
@@ -185,9 +199,9 @@ _StrictValue = namedtuple('_StrictValue', 'type_cls, listener_cls')
 
 class _StrictDict(object):
     """
-    This entire class functions as a factory for strict dicts and their listeners.
-    No type class, and no listener type class is created more than once. If a relevant type class
-    exists it is returned.
+    This entire class functions as a factory for strict dicts and their listeners. No type class,
+    and no listener type class is created more than once. If a relevant type class exists it is
+    returned.
     """
     _strict_map = {}
 
@@ -220,13 +234,19 @@ class _StrictDict(object):
 
 
 StrictDict = _StrictDict()
+"""
+JSON-serializable strict dict type for SQLAlchemy columns.
+
+:param key_cls:
+:param value_cls:
+"""
 
 
 class _StrictList(object):
     """
-    This entire class functions as a factory for strict lists and their listeners.
-    No type class, and no listener type class is created more than once. If a relevant type class
-    exists it is returned.
+    This entire class functions as a factory for strict lists and their listeners. No type class,
+    and no listener type class is created more than once. If a relevant type class exists it is
+    returned.
     """
     _strict_map = {}
 
@@ -258,6 +278,11 @@ class _StrictList(object):
 
 
 StrictList = _StrictList()
+"""
+JSON-serializable strict list type for SQLAlchemy columns.
+
+:param item_cls:
+"""
 
 
 def _mutable_association_listener(mapper, cls):

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/modeling/utils.py
----------------------------------------------------------------------
diff --git a/aria/modeling/utils.py b/aria/modeling/utils.py
index 6a2d6df..9d02194 100644
--- a/aria/modeling/utils.py
+++ b/aria/modeling/utils.py
@@ -14,7 +14,7 @@
 # limitations under the License.
 
 """
-ARIA modeling utils module
+Miscellaneous modeling utilities.
 """
 
 import os
@@ -30,6 +30,13 @@ from ..utils.formatting import string_list_as_string
 
 
 class ModelJSONEncoder(JSONEncoder):
+    """
+    JSON encoder that automatically unwraps ``value`` attributes.
+    """
+    def __init__(self, *args, **kwargs):
+        # Hack to make sure Sphinx doesn't grab the base constructor's docstring
+        super(self, JSONEncoder).__init__(*args, **kwargs)
+    
     def default(self, o):  # pylint: disable=method-hidden
         from .mixins import ModelMixin
         if isinstance(o, ModelMixin):
@@ -44,8 +51,8 @@ class ModelJSONEncoder(JSONEncoder):
 
 class NodeTemplateContainerHolder(object):
     """
-    Wrapper that allows using a :class:`aria.modeling.models.NodeTemplate` model directly as the
-    ``container_holder`` input for :func:`aria.modeling.functions.evaluate`.
+    Wrapper that allows using a :class:`~aria.modeling.models.NodeTemplate` model directly as the
+    ``container_holder`` input for :func:`~aria.modeling.functions.evaluate`.
     """
 
     def __init__(self, node_template):
@@ -64,11 +71,11 @@ def merge_parameter_values(parameter_values, declared_parameters, model_cls):
     Exceptions will be raised for validation errors.
 
     :param parameter_values: provided parameter values or None
-    :type parameter_values: {basestring, object}
+    :type parameter_values: {:obj:`basestring`: object}
     :param declared_parameters: declared parameters
-    :type declared_parameters: {basestring, :class:`aria.modeling.models.Parameter`}
+    :type declared_parameters: {:obj:`basestring`: :class:`~aria.modeling.models.Parameter`}
     :return: the merged parameters
-    :rtype: {basestring, :class:`aria.modeling.models.Parameter`}
+    :rtype: {:obj:`basestring`: :class:`~aria.modeling.models.Parameter`}
     :raises aria.modeling.exceptions.UndeclaredParametersException: if a key in ``parameter_values``
             does not exist in ``declared_parameters``
     :raises aria.modeling.exceptions.MissingRequiredParametersException: if a key in

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/orchestrator/decorators.py
----------------------------------------------------------------------
diff --git a/aria/orchestrator/decorators.py b/aria/orchestrator/decorators.py
index 389bfb8..09a2167 100644
--- a/aria/orchestrator/decorators.py
+++ b/aria/orchestrator/decorators.py
@@ -32,7 +32,7 @@ OPERATION_DECORATOR_RESERVED_ARGUMENTS = set(('ctx', 'toolbelt'))
 
 def workflow(func=None, suffix_template=''):
     """
-    Workflow decorator
+    Workflow decorator.
     """
     if func is None:
         return partial(workflow, suffix_template=suffix_template)
@@ -58,7 +58,7 @@ def workflow(func=None, suffix_template=''):
 
 def operation(func=None, toolbelt=False, suffix_template='', logging_handlers=None):
     """
-    Operation decorator
+    Operation decorator.
     """
 
     if func is None:

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/orchestrator/workflows/api/task.py
----------------------------------------------------------------------
diff --git a/aria/orchestrator/workflows/api/task.py b/aria/orchestrator/workflows/api/task.py
index f7d2c66..c2600b0 100644
--- a/aria/orchestrator/workflows/api/task.py
+++ b/aria/orchestrator/workflows/api/task.py
@@ -60,17 +60,17 @@ class OperationTask(BaseTask):
     :ivar name: formatted name (includes actor type, actor name, and interface/operation names)
     :vartype name: basestring
     :ivar actor: node or relationship
-    :vartype actor: :class:`aria.modeling.models.Node`|:class:`aria.modeling.models.Relationship`
+    :vartype actor: :class:`Node`|:class:`Relationship`
     :ivar interface_name: interface name on actor
     :vartype interface_name: basestring
     :ivar operation_name: operation name on interface
     :vartype operation_name: basestring
     :ivar plugin: plugin (or None for default plugin)
-    :vartype plugin: :class:`aria.modeling.models.Plugin`
+    :vartype plugin: :class:`Plugin`
     :ivar function: path to Python function
     :vartype function: basestring
     :ivar arguments: arguments to send to Python function
-    :vartype arguments: {basestring, :class:`aria.modeling.models.Argument`}
+    :vartype arguments: {::obj:`basestring`: :class:`Argument`}
     :ivar ignore_failure: whether to ignore failures
     :vartype ignore_failure: bool
     :ivar max_attempts: maximum number of attempts allowed in case of failure
@@ -91,13 +91,13 @@ class OperationTask(BaseTask):
                  retry_interval=None):
         """
         :param actor: node or relationship
-        :type actor: :class:`aria.modeling.models.Node`|:class:`aria.modeling.models.Relationship`
+        :type actor: :class:`Node`|:class:`Relationship`
         :param interface_name: interface name on actor
         :type interface_name: basestring
         :param operation_name: operation name on interface
         :type operation_name: basestring
         :param arguments: override argument values
-        :type arguments: {basestring, object}
+        :type arguments: {:obj:`basestring`: object}
         :param ignore_failure: override whether to ignore failures
         :type ignore_failure: bool
         :param max_attempts: override maximum number of attempts allowed in case of failure

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/parser/consumption/context.py
----------------------------------------------------------------------
diff --git a/aria/parser/consumption/context.py b/aria/parser/consumption/context.py
index a8b75df..e73a8ab 100644
--- a/aria/parser/consumption/context.py
+++ b/aria/parser/consumption/context.py
@@ -29,16 +29,20 @@ _thread_locals = threading.local()
 
 class ConsumptionContext(object):
     """
-    Properties:
-
-    * :code:`args`: The runtime arguments (usually provided on the command line)
-    * :code:`out`: Message output stream (defaults to stdout)
-    * :code:`style`: Message output style
-    * :code:`validation`: :class:`aria.validation.ValidationContext`
-    * :code:`loading`: :class:`aria.loading.LoadingContext`
-    * :code:`reading`: :class:`aria.reading.ReadingContext`
-    * :code:`presentation`: :class:`aria.presentation.PresentationContext`
-    * :code:`modeling`: :class:`aria.service.ModelingContext`
+    :ivar args: runtime arguments (usually provided on the command line)
+    :ivar out: message output stream (defaults to stdout)
+    :ivar style: message output style
+    :vartype style: Style
+    :ivar validation: validation context
+    :vartype validation: :class:`ValidationContext`
+    :ivar loading: loading context
+    :vartype loading: :class:`LoadingContext`
+    :ivar reading: reading context
+    :vartype reading: :class:`ReadingContext`
+    :ivar presentation: presentation context
+    :vartype presentation: :class:`PresentationContext`
+    :ivar modeling: modeling context
+    :vartype modeling: :class:`ModelingContext`
     """
 
     @staticmethod
@@ -71,7 +75,7 @@ class ConsumptionContext(object):
 
     def write(self, string):
         """
-        Writes to our :code:`out`, making sure to encode UTF-8 if required.
+        Writes to our ``out``, making sure to encode UTF-8 if required.
         """
 
         try:

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/parser/consumption/presentation.py
----------------------------------------------------------------------
diff --git a/aria/parser/consumption/presentation.py b/aria/parser/consumption/presentation.py
index 7766473..fc41614 100644
--- a/aria/parser/consumption/presentation.py
+++ b/aria/parser/consumption/presentation.py
@@ -26,11 +26,11 @@ class Read(Consumer):
     """
     Reads the presentation, handling imports recursively.
 
-    It works by consuming a data source via appropriate :class:`aria.loader.Loader`,
-    :class:`aria.reader.Reader`, and :class:`aria.presenter.Presenter` instances.
+    It works by consuming a data source via appropriate :class:`aria.parser.loader.Loader`,
+    :class:`aria.parser.reader.Reader`, and :class:`aria.parser.presenter.Presenter` instances.
 
     It supports agnostic raw data composition for presenters that have
-    :code:`_get_import_locations` and :code:`_merge_import`.
+    ``_get_import_locations`` and ``_merge_import``.
 
     To improve performance, loaders are called asynchronously on separate threads.
 

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/parser/loading/context.py
----------------------------------------------------------------------
diff --git a/aria/parser/loading/context.py b/aria/parser/loading/context.py
index 44e3fd1..e4ada0e 100644
--- a/aria/parser/loading/context.py
+++ b/aria/parser/loading/context.py
@@ -22,8 +22,10 @@ class LoadingContext(object):
     """
     Properties:
 
-    * :code:`loader_source`: For finding loader instances
-    * :code:`prefixes`: List of additional prefixes for :class:`UriTextLoader`
+    :ivar loader_source: for finding loader instances
+    :vartype loader_source: LoaderSource 
+    :ivar prefixes: additional prefixes for :class:`UriTextLoader`
+    :vartype prefixes: [:obj:`basestring`]
     """
 
     def __init__(self):

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/parser/loading/literal.py
----------------------------------------------------------------------
diff --git a/aria/parser/loading/literal.py b/aria/parser/loading/literal.py
index 1b99fd8..c9a4335 100644
--- a/aria/parser/loading/literal.py
+++ b/aria/parser/loading/literal.py
@@ -21,7 +21,7 @@ class LiteralLoader(Loader):
     """
     ARIA literal loader.
 
-    See :class:`aria.loading.LiteralLocation`.
+    See :class:`aria.parser.loading.LiteralLocation`.
     """
 
     def __init__(self, location):

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/parser/loading/location.py
----------------------------------------------------------------------
diff --git a/aria/parser/loading/location.py b/aria/parser/loading/location.py
index 5bc6fab..f31c330 100644
--- a/aria/parser/loading/location.py
+++ b/aria/parser/loading/location.py
@@ -23,8 +23,8 @@ class Location(object):
     """
     Base class for ARIA locations.
 
-    Locations are used by :class:`aria.loading.LoaderSource` to delegate to
-    an appropriate :class:`aria.loading.Loader`.
+    Locations are used by :class:`aria.parser.loading.LoaderSource` to delegate to
+    an appropriate :class:`aria.parser.loading.Loader`.
     """
 
     def is_equivalent(self, location):
@@ -41,7 +41,7 @@ class UriLocation(Location):
 
     If no scheme is included, it should be treated as a filesystem path.
 
-    See :class:`aria.loading.UriTextLoader`.
+    See :class:`aria.parser.loading.UriTextLoader`.
     """
 
     def __init__(self, uri):
@@ -68,7 +68,7 @@ class LiteralLocation(Location):
     """
     A location that embeds content.
 
-    See :class:`aria.loading.LiteralLoader`.
+    See :class:`aria.parser.loading.LiteralLoader`.
     """
 
     def __init__(self, content, name='literal'):

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/parser/loading/uri.py
----------------------------------------------------------------------
diff --git a/aria/parser/loading/uri.py b/aria/parser/loading/uri.py
index 1b23bf6..30f4e44 100644
--- a/aria/parser/loading/uri.py
+++ b/aria/parser/loading/uri.py
@@ -29,14 +29,14 @@ class UriTextLoader(Loader):
     """
     Base class for ARIA URI loaders.
 
-    See :class:`aria.loading.UriLocation`.
+    See :class:`aria.parser.loading.UriLocation`.
 
     Supports a list of search prefixes that are tried in order if the URI cannot be found.
     They will be:
 
-    * If :code:`origin_location` is provided its prefix will come first.
+    * If ``origin_location`` is provided its prefix will come first.
     * Then the prefixes in the :class:`LoadingContext` will be added.
-    * Finally, the global prefixes specified in :code:`URI_LOADER_PREFIXES` will be added.
+    * Finally, the global prefixes specified in ``URI_LOADER_PREFIXES`` will be added.
     """
 
     def __init__(self, context, location, origin_location=None):

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/parser/modeling/context.py
----------------------------------------------------------------------
diff --git a/aria/parser/modeling/context.py b/aria/parser/modeling/context.py
index 4a53641..d482a10 100644
--- a/aria/parser/modeling/context.py
+++ b/aria/parser/modeling/context.py
@@ -38,14 +38,18 @@ class IdType(object):
 
 class ModelingContext(object):
     """
-    Properties:
-
-    * :code:`template`: The generated service template
-    * :code:`instance`: The generated service instance
-    * :code:`node_id_format`: Format for node instance IDs
-    * :code:`id_type`: Type of IDs to use for instances
-    * :code:`id_max_length`: Maximum allowed instance ID length
-    * :code:`inputs`: Dict of inputs values
+    :ivar template: generated service template
+    :vartype template: aria.modeling.models.ServiceTemplate
+    :ivar instance: generated service instance
+    :vartype instance: aria.modeling.models.Service
+    :ivar node_id_format: format for node instance IDs
+    :vartype node_id_format: basestring
+    :ivar id_type: type of IDs to use for instances
+    :vartype id_type: basestring
+    :ivar id_max_length: maximum allowed instance ID length
+    :vartype id_max_length: int
+    :ivar inputs: inputs values
+    :vartype inputs: {basestring, object}
     """
 
     def __init__(self):

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/parser/presentation/context.py
----------------------------------------------------------------------
diff --git a/aria/parser/presentation/context.py b/aria/parser/presentation/context.py
index 26dcb39..eaa2103 100644
--- a/aria/parser/presentation/context.py
+++ b/aria/parser/presentation/context.py
@@ -19,16 +19,22 @@ from .source import DefaultPresenterSource
 
 class PresentationContext(object):
     """
-    Properties:
-
-    * :code:`presenter`: The generated presenter instance
-    * :code:`location`: From where we will generate the presenter
-    * :code:`presenter_source`: For finding presenter classes
-    * :code:`presenter_class`: Overrides :code:`presenter_source` with a specific class
-    * :code:`import_profile`: Whether to import the profile by default (defaults to true)
-    * :code:`threads`: Number of threads to use when reading data
-    * :code:`timeout`: Timeout in seconds for loading data
-    * :code:`print_exceptions`: Whether to print exceptions while reading data
+    :ivar presenter: the generated presenter instance
+    :vartype presenter: Presenter
+    :ivar location: from where we will generate the presenter
+    :vartype location: Location
+    :ivar presenter_source: for finding presenter classes
+    :vartype presenter_source: PresenterSource
+    :ivar presenter_class: overrides ``presenter_source`` with a specific class
+    :vartype presenter_class: type
+    :ivar import_profile: whether to import the profile by default (defaults to ``True``)
+    :vartype import_profile: bool
+    :ivar threads: number of threads to use when reading data
+    :vartype threads: int
+    :ivar timeout: timeout in seconds for loading data
+    :vartype timeout: float
+    :ivar print_exceptions: whether to print exceptions while reading data
+    :vartype print_exceptions: bool
     """
 
     def __init__(self):

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/parser/presentation/field_validators.py
----------------------------------------------------------------------
diff --git a/aria/parser/presentation/field_validators.py b/aria/parser/presentation/field_validators.py
index 9903a1b..aa04913 100644
--- a/aria/parser/presentation/field_validators.py
+++ b/aria/parser/presentation/field_validators.py
@@ -25,9 +25,9 @@ def type_validator(type_name, *types_dict_names):
     Makes sure that the field refers to an existing type defined in the root presenter.
 
     The arguments from the second onwards are used to locate a nested field under
-    :code:`service_template` under the root presenter. The first of these can optionally
-    be a function, in which case it will be called to convert type names. This can be used
-    to support shorthand type names, aliases, etc.
+    ``service_template`` under the root presenter. The first of these can optionally be a function,
+    in which case it will be called to convert type names. This can be used to support shorthand
+    type names, aliases, etc.
 
     Can be used with the :func:`field_validator` decorator.
     """
@@ -58,9 +58,9 @@ def list_type_validator(type_name, *types_dict_names):
     Assumes that the field is a list.
 
     The arguments from the second onwards are used to locate a nested field under
-    :code:`service_template` under the root presenter. The first of these can optionally
-    be a function, in which case it will be called to convert type names. This can be used
-    to support shorthand type names, aliases, etc.
+    ``service_template`` under the root presenter. The first of these can optionally be a function,
+    in which case it will be called to convert type names. This can be used to support shorthand
+    type names, aliases, etc.
 
     Can be used with the :func:`field_validator` decorator.
     """
@@ -115,10 +115,9 @@ def derived_from_validator(*types_dict_names):
 
     Checks that we do not derive from ourselves and that we do not cause a circular hierarchy.
 
-    The arguments are used to locate a nested field under
-    :code:`service_template` under the root presenter.
-    The first of these can optionally be a function, in which case it will be called to convert type
-    names. This can be used to support shorthand type names, aliases, etc.
+    The arguments are used to locate a nested field under ``service_template`` under the root
+    presenter. The first of these can optionally be a function, in which case it will be called to
+    convert type names. This can be used to support shorthand type names, aliases, etc.
 
     Can be used with the :func:`field_validator` decorator.
     """

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/parser/presentation/fields.py
----------------------------------------------------------------------
diff --git a/aria/parser/presentation/fields.py b/aria/parser/presentation/fields.py
index 7f85723..959bad1 100644
--- a/aria/parser/presentation/fields.py
+++ b/aria/parser/presentation/fields.py
@@ -39,19 +39,16 @@ def has_fields(cls):
     """
     Class decorator for validated field support.
 
-    1. Adds a :code:`FIELDS` class property that is a dict of all the fields.
-       Will inherit and merge :code:`FIELDS` properties from base classes if
-       they have them.
+    1. Adds a ``FIELDS`` class property that is a dict of all the fields. Will inherit and merge
+       ``FIELDS`` properties from base classes if they have them.
 
-    2. Generates automatic :code:`@property` implementations for the fields
-       with the help of a set of special function decorators.
+    2. Generates automatic ``@property`` implementations for the fields with the help of a set of
+       special function decorators.
 
-    The class also works with the Python dict protocol, so that
-    fields can be accessed via dict semantics. The functionality is
-    identical to that of using attribute access.
+    The class also works with the Python dict protocol, so that fields can be accessed via dict
+    semantics. The functionality is identical to that of using attribute access.
 
-    The class will also gain two utility methods, :code:`_iter_field_names`
-    and :code:`_iter_fields`.
+    The class will also gain two utility methods, ``_iter_field_names`` and ``_iter_fields``.
     """
 
     # Make sure we have FIELDS
@@ -267,8 +264,8 @@ def field_getter(getter_func):
     """
     Method decorator for overriding the getter function of a field.
 
-    The signature of the getter function must be: :code:`f(field, presentation, context)`.
-    The default getter can be accessed as :code:`field.default_get(presentation, context)`.
+    The signature of the getter function must be: ``f(field, presentation, context)``.
+    The default getter can be accessed as ```field.default_get(presentation, context)``.
 
     The function must already be decorated with a field decorator.
     """
@@ -286,8 +283,8 @@ def field_setter(setter_func):
     """
     Method decorator for overriding the setter function of a field.
 
-    The signature of the setter function must be: :code:`f(field, presentation, context, value)`.
-    The default setter can be accessed as :code:`field.default_set(presentation, context, value)`.
+    The signature of the setter function must be: ``f(field, presentation, context, value)``.
+    The default setter can be accessed as ``field.default_set(presentation, context, value)``.
 
     The function must already be decorated with a field decorator.
     """
@@ -305,8 +302,8 @@ def field_validator(validator_fn):
     """
     Method decorator for overriding the validator function of a field.
 
-    The signature of the validator function must be: :code:f(field, presentation, context)`.
-    The default validator can be accessed as :code:`field.default_validate(presentation, context)`.
+    The signature of the validator function must be: ``f(field, presentation, context)``.
+    The default validator can be accessed as ``field.default_validate(presentation, context)``.
 
     The function must already be decorated with a field decorator.
     """
@@ -373,7 +370,7 @@ def has_fields_contains(self, key):
 
 class Field(object):
     """
-    Field handler used by :code:`@has_fields` decorator.
+    Field handler used by ``@has_fields`` decorator.
     """
 
     def __init__(self, field_variant, func, cls=None, default=None, allowed=None, required=False):

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/parser/presentation/null.py
----------------------------------------------------------------------
diff --git a/aria/parser/presentation/null.py b/aria/parser/presentation/null.py
index a018df4..287d2ba 100644
--- a/aria/parser/presentation/null.py
+++ b/aria/parser/presentation/null.py
@@ -33,7 +33,7 @@ NULL = Null()
 
 def none_to_null(value):
     """
-    Convert :code:`None` to :code:`NULL`, recursively.
+    Convert ``None`` to ``NULL``, recursively.
     """
 
     if value is None:
@@ -51,7 +51,7 @@ def none_to_null(value):
 
 def null_to_none(value):
     """
-    Convert :code:`NULL` to :code:`None`, recursively.
+    Convert ``NULL`` to ``None``, recursively.
     """
 
     if value is NULL:

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/parser/presentation/presentation.py
----------------------------------------------------------------------
diff --git a/aria/parser/presentation/presentation.py b/aria/parser/presentation/presentation.py
index 644d880..b92506c 100644
--- a/aria/parser/presentation/presentation.py
+++ b/aria/parser/presentation/presentation.py
@@ -52,18 +52,17 @@ class PresentationBase(HasCachedMethods):
 
     def _validate(self, context):
         """
-        Validates the presentation while reporting errors in the validation context but
-        *not* raising exceptions.
+        Validates the presentation while reporting errors in the validation context but *not*
+        raising exceptions.
 
-        The base class does not thing, but subclasses may override this for specialized
-        validation.
+        The base class does not thing, but subclasses may override this for specialized validation.
         """
 
     @property
     def _fullname(self):
         """
-        Always returns a usable full name of the presentation, whether it itself is named,
-        or recursing to its container, and finally defaulting to the class name.
+        Always returns a usable full name of the presentation, whether it itself is named, or
+        recursing to its container, and finally defaulting to the class name.
         """
 
         if self._name is not None:
@@ -75,10 +74,10 @@ class PresentationBase(HasCachedMethods):
     @property
     def _locator(self):
         """
-        Attempts to return the most relevant locator, whether we have one, or recursing
-        to our container.
+        Attempts to return the most relevant locator, whether we have one, or recursing to our
+        container.
 
-        :rtype: :class:`aria.reading.Locator`
+        :rtype: :class:`aria.parser.reading.Locator`
         """
 
         return get_locator(self._raw, self._container)
@@ -98,8 +97,8 @@ class PresentationBase(HasCachedMethods):
 
     def _get_from_dict(self, *names):
         """
-        Gets attributes recursively, except for the last name which is used
-        to get a value from the last dict.
+        Gets attributes recursively, except for the last name which is used to get a value from the
+        last dict.
         """
 
         if names:
@@ -110,10 +109,10 @@ class PresentationBase(HasCachedMethods):
 
     def _get_child_locator(self, *names):
         """
-        Attempts to return the locator of one our children. Will default to our locator
-        if not found.
+        Attempts to return the locator of one our children. Will default to our locator if not
+        found.
 
-        :rtype: :class:`aria.reading.Locator`
+        :rtype: :class:`aria.parser.reading.Locator`
         """
 
         if hasattr(self._raw, '_locator'):
@@ -126,9 +125,8 @@ class PresentationBase(HasCachedMethods):
         """
         Emits a colorized representation.
 
-        The base class will emit a sensible default representation of the fields,
-        (by calling :code:`_dump_content`), but subclasses may override this for specialized
-        dumping.
+        The base class will emit a sensible default representation of the fields, (by calling
+        ``_dump_content``), but subclasses may override this for specialized dumping.
         """
 
         if self._name:
@@ -142,8 +140,8 @@ class PresentationBase(HasCachedMethods):
         """
         Emits a colorized representation of the contents.
 
-        The base class will call :code:`_dump_field` on all the fields, but subclasses may
-        override this for specialized dumping.
+        The base class will call ``_dump_field`` on all the fields, but subclasses may override
+        this for specialized dumping.
         """
 
         if field_names:
@@ -159,8 +157,8 @@ class PresentationBase(HasCachedMethods):
         """
         Emits a colorized representation of the field.
 
-        According to the field type, this may trigger nested recursion. The nested
-        types will delegate to their :code:`_dump` methods.
+        According to the field type, this may trigger nested recursion. The nested types will
+        delegate to their ``_dump`` methods.
         """
 
         field = self.FIELDS[field_name]  # pylint: disable=no-member
@@ -179,16 +177,14 @@ class PresentationBase(HasCachedMethods):
 
 class Presentation(PresentationBase):
     """
-    Base class for ARIA presentations. A presentation is a Pythonic wrapper around
-    agnostic raw data, adding the ability to read and modify the data with proper
-    validation.
+    Base class for ARIA presentations. A presentation is a Pythonic wrapper around agnostic raw
+    data, adding the ability to read and modify the data with proper validation.
 
-    ARIA presentation classes will often be decorated with @has_fields, as that
-    mechanism automates a lot of field-specific validation. However, that is not a
-    requirement.
+    ARIA presentation classes will often be decorated with ``@has_fields``, as that mechanism
+    automates a lot of field-specific validation. However, that is not a requirement.
 
-    Make sure that your utility property and method names begin with a "_", because
-    those names without a "_" prefix are normally reserved for fields.
+    Make sure that your utility property and method names begin with a "\_", because those names
+    without a "\_" prefix are normally reserved for fields.
     """
 
     def _validate(self, context):

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/parser/presentation/source.py
----------------------------------------------------------------------
diff --git a/aria/parser/presentation/source.py b/aria/parser/presentation/source.py
index 7198b07..4bfb8e1 100644
--- a/aria/parser/presentation/source.py
+++ b/aria/parser/presentation/source.py
@@ -32,7 +32,7 @@ class PresenterSource(object):
 
 class DefaultPresenterSource(PresenterSource):
     """
-    The default ARIA presenter source supports TOSCA Simple Profile.
+    The default ARIA presenter source.
     """
 
     def __init__(self, classes=None):

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/parser/presentation/utils.py
----------------------------------------------------------------------
diff --git a/aria/parser/presentation/utils.py b/aria/parser/presentation/utils.py
index fbe971b..f0fd390 100644
--- a/aria/parser/presentation/utils.py
+++ b/aria/parser/presentation/utils.py
@@ -25,7 +25,7 @@ def get_locator(*values):
     """
     Gets the first available locator.
 
-    :rtype: :class:`aria.reading.Locator`
+    :rtype: :class:`aria.parser.reading.Locator`
     """
 
     for v in values:
@@ -53,7 +53,7 @@ def validate_primitive(value, cls, coerce=False):
     Checks if the value is of the primitive type, optionally attempting to coerce it
     if it is not.
 
-    Raises a :code:`ValueError` if it isn't or if coercion failed.
+    :raises ValueError: if not a primitive type or if coercion failed.
     """
 
     if (cls is not None) and (value is not None) and (value is not NULL):
@@ -112,14 +112,14 @@ def validate_known_fields(context, presentation):
 
 def get_parent_presentation(context, presentation, *types_dict_names):
     """
-    Returns the parent presentation according to the :code:`derived_from` field, or None if invalid.
+    Returns the parent presentation according to the ``derived_from`` field, or ``None`` if invalid.
 
     Checks that we do not derive from ourselves and that we do not cause a circular hierarchy.
 
     The arguments from the third onwards are used to locate a nested field under
-    :code:`service_template` under the root presenter. The first of these can optionally
-    be a function, in which case it will be called to convert type names. This can be used
-    to support shorthand type names, aliases, etc.
+    ``service_template`` under the root presenter. The first of these can optionally be a function,
+    in which case it will be called to convert type names. This can be used to support shorthand
+    type names, aliases, etc.
     """
 
     type_name = presentation.derived_from

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/parser/reading/context.py
----------------------------------------------------------------------
diff --git a/aria/parser/reading/context.py b/aria/parser/reading/context.py
index 02d4de9..12f27e8 100644
--- a/aria/parser/reading/context.py
+++ b/aria/parser/reading/context.py
@@ -16,10 +16,10 @@ from .source import DefaultReaderSource
 
 class ReadingContext(object):
     """
-    Properties:
-
-    * :code:`reader_source`: For finding reader instances
-    * :code:`reader`: Overrides :code:`reader_source` with a specific class
+    :ivar reader_source: for finding reader instances
+    :vartype reader_source: ReaderSource
+    :ivar reader: overrides ``reader_source`` with a specific class
+    :vartype reader: type
     """
 
     def __init__(self):

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/parser/reading/locator.py
----------------------------------------------------------------------
diff --git a/aria/parser/reading/locator.py b/aria/parser/reading/locator.py
index 4142ee7..965164d 100644
--- a/aria/parser/reading/locator.py
+++ b/aria/parser/reading/locator.py
@@ -124,7 +124,7 @@ class Locator(object):
 
 def deepcopy_with_locators(value):
     """
-    Like :code:`deepcopy`, but also copies over locators.
+    Like :func:`deepcopy`, but also copies over locators.
     """
 
     res = deepcopy(value)
@@ -134,7 +134,7 @@ def deepcopy_with_locators(value):
 
 def copy_locators(target, source):
     """
-    Copies over :code:`_locator` for all elements, recursively.
+    Copies over ``_locator`` for all elements, recursively.
 
     Assumes that target and source have exactly the same list/dict structure.
     """

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/parser/reading/reader.py
----------------------------------------------------------------------
diff --git a/aria/parser/reading/reader.py b/aria/parser/reading/reader.py
index fe64697..1a29f11 100644
--- a/aria/parser/reading/reader.py
+++ b/aria/parser/reading/reader.py
@@ -18,7 +18,7 @@ class Reader(object):
     """
     Base class for ARIA readers.
 
-    Readers provide agnostic raw data by consuming :class:`aria.loading.Loader` instances.
+    Readers provide agnostic raw data by consuming :class:`aria.parser.loading.Loader` instances.
     """
 
     def __init__(self, context, location, loader):

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/parser/validation/context.py
----------------------------------------------------------------------
diff --git a/aria/parser/validation/context.py b/aria/parser/validation/context.py
index d81f1cd..cc87973 100644
--- a/aria/parser/validation/context.py
+++ b/aria/parser/validation/context.py
@@ -23,13 +23,14 @@ from ...utils.formatting import as_raw
 
 class ValidationContext(object):
     """
-    Properties:
-
-    * :code:`allow_unknown_fields`: When False (the default) will report an issue
-            if an unknown field is used
-    * :code:`allow_primitive_coersion`: When False (the default) will not attempt to
-            coerce primitive field types
-    * :code:`max_level`: Maximum validation level to report (default is all)
+    :ivar allow_unknown_fields: when ``False`` (the default) will report an issue if an unknown
+                                field is used
+    :vartype allow_unknown_fields: bool
+    :ivar allow_primitive_coersion`: when ``False`` (the default) will not attempt to coerce
+                                     primitive field types
+    :vartype allow_primitive_coersion: bool
+    :ivar max_level: maximum validation level to report (default is all)
+    :vartype max_level: int
     """
 
     def __init__(self):

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/utils/__init__.py
----------------------------------------------------------------------
diff --git a/aria/utils/__init__.py b/aria/utils/__init__.py
index da51070..2a957a9 100644
--- a/aria/utils/__init__.py
+++ b/aria/utils/__init__.py
@@ -14,5 +14,5 @@
 # limitations under the License.
 
 """
-ARIA utilities package
+General-purpose utilities package.
 """

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/utils/argparse.py
----------------------------------------------------------------------
diff --git a/aria/utils/argparse.py b/aria/utils/argparse.py
index b4ad8ac..f8d7e88 100644
--- a/aria/utils/argparse.py
+++ b/aria/utils/argparse.py
@@ -31,7 +31,7 @@ class ArgumentParser(BaseArgumentParser):
 
     def add_flag_argument(self, name, help_true=None, help_false=None, default=False):
         """
-        Adds a flag argument as two arguments: :code:`--my-flag` and :code:`--no-my-flag`.
+        Adds a flag argument as two arguments: ``--my-flag`` and ``--no-my-flag``.
         """
 
         dest = name.replace('-', '_')

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/utils/caching.py
----------------------------------------------------------------------
diff --git a/aria/utils/caching.py b/aria/utils/caching.py
index 47aa7c4..5c82b0d 100644
--- a/aria/utils/caching.py
+++ b/aria/utils/caching.py
@@ -31,8 +31,8 @@ class cachedmethod(object):  # pylint: disable=invalid-name
 
     The implementation is thread-safe.
 
-    Supports :code:`cache_info` to be compatible with Python 3's :code:`functools.lru_cache`.
-    Note that the statistics are combined for all instances of the class.
+    Supports ``cache_info`` to be compatible with Python 3's ``functools.lru_cache``. Note that the
+    statistics are combined for all instances of the class.
 
     Won't use the cache if not called when bound to an object, allowing you to override the cache.
 
@@ -43,6 +43,7 @@ class cachedmethod(object):  # pylint: disable=invalid-name
     ENABLED = True
 
     def __init__(self, func):
+        self.__doc__  = func.__doc__
         self.func = func
         self.hits = 0
         self.misses = 0

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/utils/collections.py
----------------------------------------------------------------------
diff --git a/aria/utils/collections.py b/aria/utils/collections.py
index 93c56fa..89bb390 100644
--- a/aria/utils/collections.py
+++ b/aria/utils/collections.py
@@ -243,7 +243,7 @@ def is_removable(_container, _key, v):
 
 def prune(value, is_removable_function=is_removable):
     """
-    Deletes :code:`None` and empty lists and dicts, recursively.
+    Deletes ``None`` and empty lists and dicts, recursively.
     """
 
     if isinstance(value, list):
@@ -262,10 +262,10 @@ def prune(value, is_removable_function=is_removable):
     return value
 
 
-# TODO (left for tal): Move following two methods to some place parser specific
+# TODO: Move following two methods to some place parser specific
 def deepcopy_with_locators(value):
     """
-    Like :code:`deepcopy`, but also copies over locators.
+    Like :func:`deepcopy`, but also copies over locators.
     """
 
     res = deepcopy(value)
@@ -275,7 +275,7 @@ def deepcopy_with_locators(value):
 
 def copy_locators(target, source):
     """
-    Copies over :code:`_locator` for all elements, recursively.
+    Copies over ``_locator`` for all elements, recursively.
 
     Assumes that target and source have exactly the same list/dict structure.
     """

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/utils/formatting.py
----------------------------------------------------------------------
diff --git a/aria/utils/formatting.py b/aria/utils/formatting.py
index b35f801..0ccfa9f 100644
--- a/aria/utils/formatting.py
+++ b/aria/utils/formatting.py
@@ -46,8 +46,7 @@ yaml.representer.RoundTripRepresenter.add_representer(
 
 class JsonAsRawEncoder(json.JSONEncoder):
     """
-    A :class:`JSONEncoder` that will use the :code:`as_raw` property of objects
-    if available.
+    A :class:`JSONEncoder` that will use the ``as_raw`` property of objects if available.
     """
     def raw_encoder_default(self, obj):
         try:
@@ -65,8 +64,7 @@ class JsonAsRawEncoder(json.JSONEncoder):
 
 class YamlAsRawDumper(yaml.dumper.RoundTripDumper):  # pylint: disable=too-many-ancestors
     """
-    A :class:`RoundTripDumper` that will use the :code:`as_raw` property of objects
-    if available.
+    A :class:`RoundTripDumper` that will use the ``as_raw`` property of objects if available.
     """
 
     def represent_data(self, data):
@@ -105,8 +103,8 @@ def decode_dict(data):
 
 def safe_str(value):
     """
-    Like :code:`str` coercion, but makes sure that Unicode strings are properly
-    encoded, and will never return None.
+    Like :func:`str` coercion, but makes sure that Unicode strings are properly encoded, and will
+    never return ``None``.
     """
 
     try:
@@ -117,7 +115,7 @@ def safe_str(value):
 
 def safe_repr(value):
     """
-    Like :code:`repr`, but calls :code:`as_raw` and :code:`as_agnostic` first.
+    Like :func:`repr`, but calls :func:`as_raw` and :func:`as_agnostic` first.
     """
 
     return repr(as_agnostic(as_raw(value)))
@@ -147,7 +145,7 @@ def pluralize(noun):
 
 def as_raw(value):
     """
-    Converts values using their :code:`as_raw` property, if it exists, recursively.
+    Converts values using their ``as_raw`` property, if it exists, recursively.
     """
 
     if hasattr(value, 'as_raw'):
@@ -168,7 +166,7 @@ def as_raw(value):
 
 def as_raw_list(value):
     """
-    Assuming value is a list, converts its values using :code:`as_raw`.
+    Assuming value is a list, converts its values using :func:`as_raw`.
     """
 
     if value is None:
@@ -180,8 +178,7 @@ def as_raw_list(value):
 
 def as_raw_dict(value):
     """
-    Assuming value is a dict, converts its values using :code:`as_raw`.
-    The keys are left as is.
+    Assuming value is a dict, converts its values using :func:`as_raw`. The keys are left as is.
     """
 
     if value is None:
@@ -192,8 +189,8 @@ def as_raw_dict(value):
 
 def as_agnostic(value):
     """
-    Converts subclasses of list and dict to standard lists and dicts, and Unicode strings
-    to non-Unicode if possible, recursively.
+    Converts subclasses of list and dict to standard lists and dicts, and Unicode strings to
+    non-Unicode if possible, recursively.
 
     Useful for creating human-readable output of structures.
     """
@@ -220,8 +217,7 @@ def as_agnostic(value):
 
 def json_dumps(value, indent=2):
     """
-    JSON dumps that supports Unicode and the :code:`as_raw` property of objects
-    if available.
+    JSON dumps that supports Unicode and the ``as_raw`` property of objects if available.
     """
 
     return json.dumps(value, indent=indent, ensure_ascii=False, cls=JsonAsRawEncoder)
@@ -229,8 +225,7 @@ def json_dumps(value, indent=2):
 
 def yaml_dumps(value, indent=2):
     """
-    YAML dumps that supports Unicode and the :code:`as_raw` property of objects
-    if available.
+    YAML dumps that supports Unicode and the ``as_raw`` property of objects if available.
     """
 
     return yaml.dump(value, indent=indent, allow_unicode=True, Dumper=YamlAsRawDumper)

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/utils/threading.py
----------------------------------------------------------------------
diff --git a/aria/utils/threading.py b/aria/utils/threading.py
index 5bced68..d60f28f 100644
--- a/aria/utils/threading.py
+++ b/aria/utils/threading.py
@@ -30,6 +30,7 @@ from .exceptions import print_exception
 class ExecutorException(Exception):
     pass
 
+
 class DaemonThread(Thread):
     def __init__(self, *args, **kwargs):
         super(DaemonThread, self).__init__(*args, **kwargs)
@@ -58,6 +59,7 @@ class DaemonThread(Thread):
             # Exceptions might occur in daemon threads during interpreter shutdown
             pass
 
+
 # https://gist.github.com/tliron/81dd915166b0bfc64be08b4f8e22c835
 class FixedThreadPoolExecutor(object):
     """
@@ -135,7 +137,7 @@ class FixedThreadPoolExecutor(object):
 
         The task will be called ASAP on the next available worker thread in the pool.
 
-        Will raise an :class:`ExecutorException` exception if cannot be submitted.
+        :raises ExecutorException: if cannot be submitted
         """
 
         try:
@@ -242,6 +244,7 @@ class FixedThreadPoolExecutor(object):
         self.close()
         return False
 
+
 class LockedList(list):
     """
     A list that supports the "with" keyword with a built-in lock.

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/utils/uris.py
----------------------------------------------------------------------
diff --git a/aria/utils/uris.py b/aria/utils/uris.py
index 75f376d..c2f276e 100644
--- a/aria/utils/uris.py
+++ b/aria/utils/uris.py
@@ -26,7 +26,7 @@ _IS_WINDOWS = (os.name == 'nt')
 
 def as_file(uri):
     """
-    If the URI is a file (either the :code:`file` scheme or no scheme), then returns the normalized
+    If the URI is a file (either the ``file`` scheme or no scheme), then returns the normalized
     path. Otherwise, returns None.
     """
 

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/docs/aria.modeling.rst
----------------------------------------------------------------------
diff --git a/docs/aria.modeling.rst b/docs/aria.modeling.rst
index 3daa0a0..d7fd138 100644
--- a/docs/aria.modeling.rst
+++ b/docs/aria.modeling.rst
@@ -45,6 +45,11 @@
 
 .. automodule:: aria.modeling.relationship
 
+:mod:`aria.modeling.types`
+##########################
+
+.. automodule:: aria.modeling.types
+
 :mod:`aria.modeling.utils`
 ##########################
 

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/docs/conf.py
----------------------------------------------------------------------
diff --git a/docs/conf.py b/docs/conf.py
index 330118c..4f57968 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -48,7 +48,11 @@ with open('../VERSION') as f:
 # Add any Sphinx extension module names here, as strings. They can be
 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
 # ones.
-extensions = ['sphinx.ext.autodoc', 'sphinx_click.ext']
+extensions = [
+    'sphinx.ext.autodoc',
+    'sphinx.ext.intersphinx',
+    'sphinx_click.ext'
+]
 
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
@@ -351,19 +355,54 @@ texinfo_documents = [
 #
 # texinfo_no_detailmenu = False
 
+
+# -- Options for InterSphinx
+
+intersphinx_mapping = {
+    'python': ('https://docs.python.org/2.7', None)
+}
+
 # -- Options for Python domain
 
-# Include __init__ docstring into class docstring
+# Append __init__ docstring into class docstring
 autoclass_content = 'both'
 
 # Default to everything important
-autodoc_default_flags = ['members', 'undoc-members', 'show-inheritance']
+autodoc_default_flags = [
+    'members',
+    'undoc-members',
+    'show-inheritance'
+]
 
+_skip_fields = (
+    'FIELDS',
+    'ALLOW_UNKNOWN_FIELDS',
+    'SHORT_FORM_FIELD'
+)
+
+_no_skip_fields = (
+    '__evaluate__',
+)
+
+# Event handling
 def on_skip_members(app, what, name, obj, skip, options):
-    if not skip:
-        if name in ('FIELDS', 'ALLOW_UNKNOWN_FIELDS', 'SHORT_FORM_FIELD'):
-            skip = True
+    if (name in _skip_fields) or name.endswith('_fk'): 
+        skip = True
+    elif name in _no_skip_fields: 
+        skip = False
     return skip
-    
+
+from sphinx.domains.python import PythonDomain
+
+class PatchedPythonDomain(PythonDomain):
+    # See: https://github.com/sphinx-doc/sphinx/issues/3866
+    def resolve_xref(self, env, fromdocname, builder, typ, target, node, contnode):
+        if 'refspecific' in node:
+            del node['refspecific']
+        return super(PatchedPythonDomain, self).resolve_xref(
+            env, fromdocname, builder, typ, target, node, contnode)
+
 def setup(app):
     app.connect('autodoc-skip-member', on_skip_members)
+    app.override_domain(PatchedPythonDomain)
+    print PatchedPythonDomain.roles


[2/2] incubator-ariatosca git commit: Many improvements to docs

Posted by em...@apache.org.
Many improvements to docs


Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/7ed92d0f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/7ed92d0f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/7ed92d0f

Branch: refs/heads/ARIA-286-sphinx-documentation
Commit: 7ed92d0fe6edd0f44ea36c7ddd9403d62f9cead7
Parents: 6621327
Author: Tal Liron <ta...@gmail.com>
Authored: Mon Jun 26 17:35:35 2017 -0500
Committer: Tal Liron <ta...@gmail.com>
Committed: Mon Jun 26 17:35:35 2017 -0500

----------------------------------------------------------------------
 aria/__init__.py                             |  12 +-
 aria/cli/color.py                            |   3 +-
 aria/cli/core/aria.py                        |   9 +-
 aria/cli/defaults.py                         |   9 +-
 aria/cli/service_template_utils.py           |  55 +--
 aria/cli/table.py                            |  54 +--
 aria/cli/utils.py                            |  24 +-
 aria/core.py                                 |   2 +-
 aria/exceptions.py                           |   9 +-
 aria/extension.py                            |  32 +-
 aria/logger.py                               |  35 +-
 aria/modeling/__init__.py                    |   2 +-
 aria/modeling/constraints.py                 |   4 +-
 aria/modeling/exceptions.py                  |   2 +-
 aria/modeling/functions.py                   |  21 +-
 aria/modeling/mixins.py                      |  54 +--
 aria/modeling/models.py                      |   2 +-
 aria/modeling/orchestration.py               |  60 ++--
 aria/modeling/service_common.py              |  47 +--
 aria/modeling/service_instance.py            | 334 +++++++++---------
 aria/modeling/service_template.py            | 396 +++++++++++-----------
 aria/modeling/types.py                       |  47 ++-
 aria/modeling/utils.py                       |  19 +-
 aria/orchestrator/decorators.py              |   4 +-
 aria/orchestrator/workflows/api/task.py      |  10 +-
 aria/parser/consumption/context.py           |  26 +-
 aria/parser/consumption/presentation.py      |   6 +-
 aria/parser/loading/context.py               |   6 +-
 aria/parser/loading/literal.py               |   2 +-
 aria/parser/loading/location.py              |   8 +-
 aria/parser/loading/uri.py                   |   6 +-
 aria/parser/modeling/context.py              |  20 +-
 aria/parser/presentation/context.py          |  26 +-
 aria/parser/presentation/field_validators.py |  19 +-
 aria/parser/presentation/fields.py           |  31 +-
 aria/parser/presentation/null.py             |   4 +-
 aria/parser/presentation/presentation.py     |  54 ++-
 aria/parser/presentation/source.py           |   2 +-
 aria/parser/presentation/utils.py            |  12 +-
 aria/parser/reading/context.py               |   8 +-
 aria/parser/reading/locator.py               |   4 +-
 aria/parser/reading/reader.py                |   2 +-
 aria/parser/validation/context.py            |  15 +-
 aria/utils/__init__.py                       |   2 +-
 aria/utils/argparse.py                       |   2 +-
 aria/utils/caching.py                        |   5 +-
 aria/utils/collections.py                    |   8 +-
 aria/utils/formatting.py                     |  29 +-
 aria/utils/threading.py                      |   5 +-
 aria/utils/uris.py                           |   2 +-
 docs/aria.modeling.rst                       |   5 +
 docs/conf.py                                 |  53 ++-
 52 files changed, 868 insertions(+), 740 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/__init__.py
----------------------------------------------------------------------
diff --git a/aria/__init__.py b/aria/__init__.py
index 5eea665..521fc48 100644
--- a/aria/__init__.py
+++ b/aria/__init__.py
@@ -44,13 +44,17 @@ __all__ = (
     '__version__',
     'workflow',
     'operation',
+    'install_aria_extensions',
+    'application_model_storage',
+    'application_resource_storage'
 )
 
 
 def install_aria_extensions():
     """
-    Iterates all Python packages with names beginning with :code:`aria_extension_` and all
-    :code:`aria_extension` entry points and loads them.
+    Iterates all Python packages with names beginning with ``aria_extension_`` and all
+    ``aria_extension`` entry points and loads them.
+
     It then invokes all registered extension functions.
     """
     for loader, module_name, _ in iter_modules():
@@ -63,7 +67,7 @@ def install_aria_extensions():
 
 def application_model_storage(api, api_kwargs=None, initiator=None, initiator_kwargs=None):
     """
-    Initiate model storage
+    Initiate model storage.
     """
     return storage.ModelStorage(api_cls=api,
                                 api_kwargs=api_kwargs,
@@ -74,7 +78,7 @@ def application_model_storage(api, api_kwargs=None, initiator=None, initiator_kw
 
 def application_resource_storage(api, api_kwargs=None, initiator=None, initiator_kwargs=None):
     """
-    Initiate resource storage
+    Initiate resource storage.
     """
 
     return storage.ResourceStorage(api_cls=api,

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/cli/color.py
----------------------------------------------------------------------
diff --git a/aria/cli/color.py b/aria/cli/color.py
index 0761f6b..03381ba 100644
--- a/aria/cli/color.py
+++ b/aria/cli/color.py
@@ -80,8 +80,7 @@ class ColorSpec(object):
     def __init__(self, fore=None, back=None, style=None):
         """
         It is possible to provide fore, back and style arguments. each could be either
-        the color is lower case letter, or the actual color from colorama.
-
+        the color is lower case letter, or the actual color from Colorama.
         """
         self._kwargs = dict(fore=fore, back=back, style=style)
         self._str = StringIO()

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/cli/core/aria.py
----------------------------------------------------------------------
diff --git a/aria/cli/core/aria.py b/aria/cli/core/aria.py
index bcff367..344aacc 100644
--- a/aria/cli/core/aria.py
+++ b/aria/cli/core/aria.py
@@ -251,9 +251,8 @@ class AliasedGroup(click.Group):
 
     def resolve_command(self, ctx, args):
         """
-        Override clicks ``resolve_command`` method
-        and appends *Did you mean ...* suggestions
-        to the raised exception message.
+        Override clicks ``resolve_command`` method and appends *Did you mean ...* suggestions to the
+        raised exception message.
         """
         try:
             return super(AliasedGroup, self).resolve_command(ctx, args)
@@ -274,7 +273,7 @@ class AliasedGroup(click.Group):
 
 def group(name):
     """
-    Allow to create a group with a default click context and a cls for click's ``didyoueamn``
+    Allow to create a group with a default click context and a class for Click's ``didyoueamn``
     without having to repeat it for every group.
     """
     return click.group(
@@ -295,7 +294,7 @@ def command(*args, **kwargs):
 
 def argument(*args, **kwargs):
     """
-    Make Click arguments ARIA specific.
+    Make Click arguments specific to ARIA.
 
     This exists purely for aesthetic reasons, otherwise some decorators are called
     ``@click.something`` instead of ``@aria.something``

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/cli/defaults.py
----------------------------------------------------------------------
diff --git a/aria/cli/defaults.py b/aria/cli/defaults.py
index 8c1f3ae..e84abc0 100644
--- a/aria/cli/defaults.py
+++ b/aria/cli/defaults.py
@@ -14,10 +14,17 @@
 # limitations under the License.
 
 """
-CLI defaults.
+Various CLI default values.
 """
 
+#: Default service template filename
 SERVICE_TEMPLATE_FILENAME = 'service_template.yaml'
+
+#: Default task max attempts
 TASK_MAX_ATTEMPTS = 30
+
+#: Default task retry interval
 TASK_RETRY_INTERVAL = 30
+
+#: Default sort descending
 SORT_DESCENDING = False

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/cli/service_template_utils.py
----------------------------------------------------------------------
diff --git a/aria/cli/service_template_utils.py b/aria/cli/service_template_utils.py
index 8d4b009..abfbf9a 100644
--- a/aria/cli/service_template_utils.py
+++ b/aria/cli/service_template_utils.py
@@ -31,21 +31,20 @@ def get(source, service_template_filename):
     Get a source and return a path to the main service template file
 
     The behavior based on then source argument content is:
-        - local ``.yaml`` file: return the file
-        - local archive (``.csar``, ``.zip``, ``.tar``, ``.tar.gz``, and ``.tar.bz2``):
-            extract it locally and return path service template file
-        - URL:
-            - download and get service template from downloaded archive
-        - GitHub repo:
-            - download and get service template from downloaded archive
-
-    :param source: Path/URL/github repo to archive/service-template file
-    :type source: str
-    :param service_template_filename: Path to service template (if source is an archive [but
-     not a csar archive - with csars archives, this is read from the metadata file])
-    :type service_template_filename: str
-    :return: Path to main service template file
-    :rtype: str
+
+    * local ``.yaml`` file: return the file
+    * local archive (``.csar``, ``.zip``, ``.tar``, ``.tar.gz``, and ``.tar.bz2``): extract it
+      locally and return path service template file
+    * URL: download and get service template from downloaded archive
+    * GitHub repo: download and get service template from downloaded archive
+
+    :param source: path/URL/GitHub repo to archive/service-template file
+    :type source: basestring
+    :param service_template_filename: path to service template if source is a non-CSAR archive
+                                      (with CSAR archives, this is read from the metadata file)
+    :type service_template_filename: basestring
+    :return: path to main service template file
+    :rtype: basestring
     """
     if urlparse(source).scheme:
         downloaded_file = utils.download_file(source)
@@ -69,14 +68,15 @@ def get(source, service_template_filename):
 
 
 def _get_service_template_file_from_archive(archive, service_template_filename):
-    """Extract archive to temporary location and get path to service template file.
+    """
+    Extract archive to temporary location and get path to service template file.
 
-    :param archive: Path to archive file
-    :type archive: str
-    :param service_template_filename: Path to service template file relative to archive
-    :type service_template_filename: str
-    :return: Absolute path to service template file
-    :rtype: str
+    :param archive: path to archive file
+    :type archive: basestring
+    :param service_template_filename: path to service template file relative to archive
+    :type service_template_filename: basestring
+    :return: absolute path to service template file
+    :rtype: basestring
 
     """
     if csar.is_csar_archive(archive):
@@ -98,12 +98,13 @@ def _get_service_template_file_from_archive(archive, service_template_filename):
 
 
 def _map_to_github_url(source):
-    """Returns a path to a downloaded github archive.
+    """
+    Returns a path to a downloaded GitHub archive.
 
-    :param source: github repo in the format of `org/repo[:tag/branch]`.
-    :type source: str
-    :return: URL to the archive file for the given repo in github
-    :rtype: str
+    :param source: GitHub repo: ``org/repo[:tag/branch]``
+    :type source: basestring
+    :return: URL to the archive file for the given repo in GitHub
+    :rtype: basestring
 
     """
     source_parts = source.split(':', 1)

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/cli/table.py
----------------------------------------------------------------------
diff --git a/aria/cli/table.py b/aria/cli/table.py
index 9e53437..a4e959c 100644
--- a/aria/cli/table.py
+++ b/aria/cli/table.py
@@ -27,6 +27,24 @@ from .env import logger
 
 def print_data(columns, items, header_text,
                column_formatters=None, col_max_width=None, defaults=None):
+    """
+    Prints data in a tabular form.
+
+    :param columns: columns of the table, e.g. ``['id','name']``
+    :type columns: iterable of basestring
+    :param items: each element must have keys or attributes corresponding to the ``columns`` items,
+                  e.g. ``[{'id':'123', 'name':'Pete'}]``
+    :type data: [{:obj:`basestring`: :obj:`basestring`}]
+    :param column_formatters: maps column name to formatter, a function that may manipulate the
+                              string values printed for this column, e.g. 
+                              ``{'created_at': timestamp_formatter}``
+    :param col_max_width: maximum width of table
+    :type col_max_width: int
+    :type column_formatters: {obj:`basestring`: :obj:`function`}
+    :param defaults: default values for keys that don't exist in the data itself, e.g.
+                     ``{'serviceId':'123'}``
+    :type defaults: {:obj:`basestring`: :obj:`basestring`}
+    """
     if items is None:
         items = []
     elif not isinstance(items, list):
@@ -47,30 +65,18 @@ def _generate(cols, data, column_formatters=None, defaults=None):
     """
     Return a new PrettyTable instance representing the list.
 
-    Arguments:
-
-        cols - An iterable of strings that specify what
-               are the columns of the table.
-
-               for example: ['id','name']
-
-        data - An iterable of dictionaries or objects, each element must
-               have keys or attributes corresponding to the cols items.
-
-               for example: [{'id':'123', 'name':'Pete'}]
-
-        column_formatters - A dictionary from a column name to a formatter - a function that
-                            may manipulate the string values printed for this column.
-                            (See below for a few built-in formatter examples)
-
-                            for example: {'created_at': timestamp_formatter}
-
-        defaults - A dictionary specifying default values for
-                   key's that don't exist in the data itself.
-
-                   for example: {'serviceId':'123'} will set the
-                   serviceId value for all rows to '123'.
-
+    :param cols: columns of the table, e.g. ``['id','name']``
+    :type cols: iterable of :obj:`basestring`
+    :param data: each element must have keys or attributes corresponding to the ``cols`` items,
+                 e.g. ``[{'id':'123', 'name':'Pete'}]``
+    :type data: [{:obj:`basestring`: :obj:`basestring`}]
+    :param column_formatters: maps column name to formatter, a function that may manipulate the
+                              string values printed for this column, e.g. 
+                              ``{'created_at': timestamp_formatter}``
+    :type column_formatters: {:obj:`basestring`: :obj:`function`}
+    :param defaults: default values for keys that don't exist in the data itself, e.g.
+                     ``{'serviceId':'123'}``
+    :type defaults: {:obj:`basestring`: :obj:`basestring`}
     """
     def get_values_per_column(column, row_data):
         if hasattr(row_data, column) or (isinstance(row_data, dict) and column in row_data):

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/cli/utils.py
----------------------------------------------------------------------
diff --git a/aria/cli/utils.py b/aria/cli/utils.py
index 0ceb2ea..0d0666b 100644
--- a/aria/cli/utils.py
+++ b/aria/cli/utils.py
@@ -48,8 +48,8 @@ def get_parameter_templates_as_string(parameter_templates):
 
 def check_overriding_storage_exceptions(e, model_class, name):
     """
-    This method checks whether the storage exception is a known type where we'd like to override
-     the exception message; If so, it raises a new error. Otherwise it simply returns.
+    Checks whether the storage exception is a known type where we'd like to override the exception
+    message; If so, it raises a new error. Otherwise it simply returns.
     """
     assert isinstance(e, BaseException)
     if 'UNIQUE constraint failed' in e.message:
@@ -72,12 +72,13 @@ def download_file(url):
 
 
 def generate_progress_handler(file_path, action='', max_bar_length=80):
-    """Returns a function that prints a progress bar in the terminal
+    """
+    Returns a function that prints a progress bar in the terminal.
 
-    :param file_path: The name of the file being transferred
-    :param action: Uploading/Downloading
-    :param max_bar_length: Maximum allowed length of the bar. Default: 80
-    :return: The configured print_progress function
+    :param file_path: the name of the file being transferred
+    :param action: uploading/downloading
+    :param max_bar_length: maximum allowed length of the bar
+    :return: configured ``print_progress`` function
     """
     # We want to limit the maximum line length to 80, but allow for a smaller
     # terminal size. We also include the action string, and some extra chars
@@ -95,12 +96,13 @@ def generate_progress_handler(file_path, action='', max_bar_length=80):
     bar_length -= len(file_name)
 
     def print_progress(read_bytes, total_bytes):
-        """Print upload/download progress on a single line
+        """
+        Print upload/download progress on a single line.
 
-        Call this function in a loop to create a progress bar in the terminal
+        Call this function in a loop to create a progress bar in the terminal.
 
-        :param read_bytes: Number of bytes already processed
-        :param total_bytes: Total number of bytes in the file
+        :param read_bytes: number of bytes already processed
+        :param total_bytes: total number of bytes in the file
         """
 
         filled_length = min(bar_length, int(round(bar_length * read_bytes /

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/core.py
----------------------------------------------------------------------
diff --git a/aria/core.py b/aria/core.py
index 830a841..a8d5245 100644
--- a/aria/core.py
+++ b/aria/core.py
@@ -14,7 +14,7 @@
 # limitations under the License.
 
 """
-ARIA core module
+ARIA core module.
 """
 
 from . import exceptions

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/exceptions.py
----------------------------------------------------------------------
diff --git a/aria/exceptions.py b/aria/exceptions.py
index b7705ea..5d3e21d 100644
--- a/aria/exceptions.py
+++ b/aria/exceptions.py
@@ -14,8 +14,7 @@
 # limitations under the License.
 
 """
-The ARIA exceptions module provides base exception classes and other common exceptions used
-throughout ARIA.
+Base exception classes and other common exceptions used throughout ARIA.
 """
 
 import sys
@@ -47,21 +46,21 @@ class AriaException(Exception):
 
 class DependentServicesError(AriaError):
     """
-    Raised when attempting to delete a service template which has existing services
+    Raised when attempting to delete a service template which has existing services.
     """
     pass
 
 
 class DependentActiveExecutionsError(AriaError):
     """
-    Raised when attempting to delete a service which has active executions
+    Raised when attempting to delete a service which has active executions.
     """
     pass
 
 
 class DependentAvailableNodesError(AriaError):
     """
-    Raised when attempting to delete a service which has available nodes
+    Raised when attempting to delete a service which has available nodes.
     """
     pass
 

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/extension.py
----------------------------------------------------------------------
diff --git a/aria/extension.py b/aria/extension.py
index 3065435..e90750d 100644
--- a/aria/extension.py
+++ b/aria/extension.py
@@ -14,7 +14,7 @@
 # limitations under the License.
 
 """
-The ARIA extension module provides a mechanism for registering and loading ARIA extensions.
+Mechanism for registering and loading ARIA extensions.
 """
 
 # pylint: disable=no-self-use
@@ -53,7 +53,9 @@ def _registrar(function):
 
 
 class _ExtensionRegistration(object):
-    """Base class for extension class decorators"""
+    """
+    Base class for extension class decorators.
+    """
 
     def __init__(self):
         self._registrars = {}
@@ -74,7 +76,7 @@ class _ExtensionRegistration(object):
 
     def init(self):
         """
-        Initialize all registrars by calling all registered functions
+        Initialize all registrars by calling all registered functions.
         """
         registered_instances = [cls() for cls in self._registered_classes]
         for name, registrar in self._registrars.items():
@@ -85,13 +87,16 @@ class _ExtensionRegistration(object):
 
 
 class _ParserExtensionRegistration(_ExtensionRegistration):
-    """Parser extensions class decorator"""
+    """
+    Parser extensions class decorator.
+    """
 
     @_registrar
     def presenter_class(self):
         """
         Presentation class registration.
-        Implementing functions can return a single class or a list/tuple of classes
+
+        Implementing functions can return a single class or a list/tuple of classes.
         """
         return []
 
@@ -99,7 +104,8 @@ class _ParserExtensionRegistration(_ExtensionRegistration):
     def specification_package(self):
         """
         Specification package registration.
-        Implementing functions can return a package name or a list/tuple of names
+
+        Implementing functions can return a package name or a list/tuple of names.
         """
         return []
 
@@ -107,7 +113,8 @@ class _ParserExtensionRegistration(_ExtensionRegistration):
     def specification_url(self):
         """
         Specification URL registration.
-        Implementing functions should return a dictionary from names to URLs
+
+        Implementing functions should return a dictionary from names to URLs.
         """
         return {}
 
@@ -115,7 +122,8 @@ class _ParserExtensionRegistration(_ExtensionRegistration):
     def uri_loader_prefix(self):
         """
         URI loader prefix registration.
-        Implementing functions can return a single prefix or a list/tuple of prefixes
+
+        Implementing functions can return a single prefix or a list/tuple of prefixes.
         """
         return collections.StrictList(value_class=basestring)
 
@@ -123,13 +131,15 @@ parser = _ParserExtensionRegistration()
 
 
 class _ProcessExecutorExtensionRegistration(_ExtensionRegistration):
-    """Process executor extension class decorator"""
+    """
+    Process executor extension class decorator.
+    """
 
     @_registrar
     def decorate(self):
         """
         The operation function executed by the process executor will be decorated with the function
-        returned from decorate().
+        returned from ``decorate()``.
         """
         return []
 
@@ -138,7 +148,7 @@ process_executor = _ProcessExecutorExtensionRegistration()
 
 def init():
     """
-    Initialize all registrars by calling all registered functions
+    Initialize all registrars by calling all registered functions.
     """
     parser.init()
     process_executor.init()

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/logger.py
----------------------------------------------------------------------
diff --git a/aria/logger.py b/aria/logger.py
index 0f35752..2ccff25 100644
--- a/aria/logger.py
+++ b/aria/logger.py
@@ -14,8 +14,8 @@
 # limitations under the License.
 
 """
-The ARIA logger module provides mix-ins and functions for logging, supporting multiple backends
-(such as SQL) and consistent formatting.
+Mix-ins and functions for logging, supporting multiple backends (such as SQL) and consistent
+formatting.
 """
 
 import logging
@@ -39,12 +39,11 @@ _base_logger = logging.getLogger('aria')
 
 class LoggerMixin(object):
     """
-    Mixin Logger Class
-    configuration (class members):
+    Provides logging functionality to a class.
 
-    logger_name: logger name [default: <class_name>]
-    logger_level: logger level [default: logging.DEBUG]
-    base_logger: This Mixing will create child logger from this base_logger [default: root logger]
+    :ivar logger_name: logger name; default to the class name
+    :ivar logger_level: logger level; defaults to `logging.DEBUG`
+    :ivar base_logger: child loggers are created from this; defaults to the root logger
     """
     logger_name = None
     logger_level = logging.DEBUG
@@ -67,7 +66,7 @@ class LoggerMixin(object):
             base_logger=logging.getLogger(),
             **kwargs):
         """
-        Set the logger used by the consuming class
+        Set the logger used by the consuming class.
         """
         cls.logger_name = logger_name
         cls.logger_level = logger_level
@@ -87,10 +86,12 @@ class LoggerMixin(object):
 
 def create_logger(logger=_base_logger, handlers=(), **configs):
     """
-
-    :param logging.Logger logger: The logger name [default: aria logger]
-    :param list handlers: The logger handlers
-    :param configs: The logger configurations
+    :param logger: logger name; defaults to ARIA logger
+    :type logger: logging.Logger
+    :param handlers: logger handlers
+    :type handlers: []
+    :param configs: logger configurations
+    :type configs: []
     :return: logger
     """
     logger.handlers = []
@@ -104,7 +105,6 @@ def create_logger(logger=_base_logger, handlers=(), **configs):
 
 def create_console_log_handler(level=logging.DEBUG, formatter=None):
     """
-
     :param level:
     :param formatter:
     :return:
@@ -124,10 +124,9 @@ def create_sqla_log_handler(model, log_cls, execution_id, level=logging.DEBUG):
 
 class _DefaultConsoleFormat(logging.Formatter):
     """
-    _DefaultConsoleFormat class
-    Console logger formatter
-    info level logs format: '%(message)s'
-    every other log level are formatted: '%(levelname)s: %(message)s'
+    Info level log format: ``%(message)s``
+    
+    Every other log level is formatted: ``%(levelname)s: %(message)s``
     """
     def format(self, record):
         try:
@@ -148,7 +147,7 @@ def create_file_log_handler(
         backup_count=10,
         formatter=None):
     """
-    Create a logging.handlers.RotatingFileHandler
+    Create a :class:`logging.handlers.RotatingFileHandler`.
     """
     rotating_file = logging_handlers.RotatingFileHandler(
         filename=file_path,

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/modeling/__init__.py
----------------------------------------------------------------------
diff --git a/aria/modeling/__init__.py b/aria/modeling/__init__.py
index 4ec6b2c..57bc188 100644
--- a/aria/modeling/__init__.py
+++ b/aria/modeling/__init__.py
@@ -14,7 +14,7 @@
 # limitations under the License.
 
 """
-ARIA modeling package
+This package provides an API for modeling ARIA's state and serializing it to storage.
 """
 
 from collections import namedtuple

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/modeling/constraints.py
----------------------------------------------------------------------
diff --git a/aria/modeling/constraints.py b/aria/modeling/constraints.py
index 45b3861..8ed33d5 100644
--- a/aria/modeling/constraints.py
+++ b/aria/modeling/constraints.py
@@ -14,7 +14,7 @@
 # limitations under the License.
 
 """
-ARIA modeling constraints module
+Constraints for the requirements-and-capabilities matching mechanism.
 """
 
 class NodeTemplateConstraint(object):
@@ -26,6 +26,6 @@ class NodeTemplateConstraint(object):
 
     def matches(self, source_node_template, target_node_template):
         """
-        Returns true is the target matches the constraint for the source.
+        Returns ``True`` if the target matches the constraint for the source.
         """
         raise NotImplementedError

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/modeling/exceptions.py
----------------------------------------------------------------------
diff --git a/aria/modeling/exceptions.py b/aria/modeling/exceptions.py
index 19e664a..573efaf 100644
--- a/aria/modeling/exceptions.py
+++ b/aria/modeling/exceptions.py
@@ -14,7 +14,7 @@
 # limitations under the License.
 
 """
-ARIA modeling exceptions module
+Modeling exceptions.
 """
 
 from ..exceptions import AriaException

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/modeling/functions.py
----------------------------------------------------------------------
diff --git a/aria/modeling/functions.py b/aria/modeling/functions.py
index 06f6c32..b764aa8 100644
--- a/aria/modeling/functions.py
+++ b/aria/modeling/functions.py
@@ -14,7 +14,7 @@
 # limitations under the License.
 
 """
-ARIA modeling functions module
+Mechanism for evaluating intrinsic functions.
 """
 
 from ..parser.consumption import ConsumptionContext
@@ -38,10 +38,11 @@ class Function(object):
 
     def __evaluate__(self, container_holder):
         """
-        Evaluates the function if possible. If impossible, raises
-        :class:`CannotEvaluateFunctionException` (do not just return None).
+        Evaluates the function if possible.
 
-        :rtype: Evaluation (or any object with ``value`` and ``final`` properties)
+        :rtype: :class:`Evaluation` (or any object with ``value`` and ``final`` properties)
+        :raises CannotEvaluateFunctionException: if cannot be evaluated at this time (do *not* just
+                                                 return ``None``) 
         """
 
         raise NotImplementedError
@@ -54,6 +55,10 @@ class Function(object):
 class Evaluation(object):
     """
     An evaluated :class:`Function` return value.
+    
+    :ivar value: evaluated value
+    :ivar final: whether the value is final
+    :vartype final: boolean
     """
 
     def __init__(self, value, final=False):
@@ -64,13 +69,13 @@ class Evaluation(object):
 def evaluate(value, container_holder, report_issues=False): # pylint: disable=too-many-branches
     """
     Recursively attempts to call ``__evaluate__``. If an evaluation occurred will return an
-    :class:`Evaluation`, otherwise it will be None. If any evaluation is non-final, then the entire
-    evaluation will also be non-final.
+    :class:`Evaluation`, otherwise it will be ``None``. If any evaluation is non-final, then the
+    entire evaluation will also be non-final.
 
     The ``container_holder`` argument should have three properties: ``container`` should return
     the model that contains the value, ``service`` should return the containing
-    :class:`aria.modeling.models.Service` model or None, and ``service_template`` should return the
-    containing :class:`aria.modeling.models.ServiceTemplate` model or None.
+    :class:`~aria.modeling.models.Service` model or None, and ``service_template`` should return the
+    containing :class:`~aria.modeling.models.ServiceTemplate` model or ``None``.
     """
 
     evaluated = False

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/modeling/mixins.py
----------------------------------------------------------------------
diff --git a/aria/modeling/mixins.py b/aria/modeling/mixins.py
index 134748d..e707f02 100644
--- a/aria/modeling/mixins.py
+++ b/aria/modeling/mixins.py
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-"""'
+"""
 ARIA modeling mix-ins module
 """
 
@@ -49,7 +49,7 @@ class ModelMixin(object):
         """
         Create a dict representation of the model.
 
-        :param suppress_error: If set to ``True``, sets ``None`` to attributes that it's unable to
+        :param suppress_error: if set to ``True``, sets ``None`` to attributes that it's unable to
                                retrieve (e.g., if a relationship wasn't established yet, and so it's
                                impossible to access a property through it)
         """
@@ -84,7 +84,7 @@ class ModelMixin(object):
 
         fields = set(cls._iter_association_proxies())
         fields.update(cls.__table__.columns.keys())
-        return fields - set(getattr(cls, '__private_fields__', []))
+        return fields - set(getattr(cls, '__private_fields__', ()))
 
     @classmethod
     def _iter_association_proxies(cls):
@@ -113,10 +113,10 @@ class ModelIDMixin(object):
 
 class InstanceModelMixin(ModelMixin):
     """
-    Mixin for :class:`ServiceInstance` models.
+    Mix-in for service instance models.
 
-    All models support validation, diagnostic dumping, and representation as
-    raw data (which can be translated into JSON or YAML) via ``as_raw``.
+    All models support validation, diagnostic dumping, and representation as raw data (which can be
+    translated into JSON or YAML) via ``as_raw``.
     """
 
     @property
@@ -135,9 +135,9 @@ class InstanceModelMixin(ModelMixin):
 
 class TemplateModelMixin(InstanceModelMixin):
     """
-    Mixin for :class:`ServiceTemplate` models.
+    Mix-in for service template models.
 
-    All model models can be instantiated into :class:`ServiceInstance` models.
+    All model models can be instantiated into service instance models.
     """
 
     def instantiate(self, container):
@@ -146,16 +146,17 @@ class TemplateModelMixin(InstanceModelMixin):
 
 class ParameterMixin(TemplateModelMixin, caching.HasCachedMethods):                                 #pylint: disable=abstract-method
     """
-    Represents a typed value. The value can contain nested intrinsic functions.
+    Mix-in for typed values. The value can contain nested intrinsic functions.
 
-    This model can be used as the ``container_holder`` argument for :func:`functions.evaluate`.
+    This model can be used as the ``container_holder`` argument for
+    :func:`~aria.modeling.functions.evaluate`.
 
-    :ivar name: Name
+    :ivar name: name
     :vartype name: basestring
-    :ivar type_name: Type name
+    :ivar type_name: type name
     :vartype type_name: basestring
-    :ivar value: Value
-    :ivar description: Description
+    :ivar value: value
+    :ivar description: description
     :vartype description: basestring
     """
 
@@ -185,8 +186,10 @@ class ParameterMixin(TemplateModelMixin, caching.HasCachedMethods):
         """
         The sole owner of this parameter, which is another model that relates to it.
 
-        *All* parameters should have an owner model. In case this property method fails to find
-        it, it will raise a ValueError, which should signify an abnormal, orphaned parameter.
+        *All* parameters should have an owner model.
+
+        :raises exceptions.ValueError: if failed to find an owner, which signifies an abnormal,
+                                       orphaned parameter
         """
 
         # Find first non-null relationship
@@ -208,8 +211,10 @@ class ParameterMixin(TemplateModelMixin, caching.HasCachedMethods):
         The logical container is equivalent to the ``SELF`` keyword used by intrinsic functions in
         TOSCA.
 
-        *All* parameters should have a container model. In case this property method fails to find
-        it, it will raise a ValueError, which should signify an abnormal, orphaned parameter.
+        *All* parameters should have a container model.
+
+        :raises exceptions.ValueError: if failed to find a container model, which signifies an
+                                       abnormal, orphaned parameter
         """
 
         from . import models
@@ -251,7 +256,11 @@ class ParameterMixin(TemplateModelMixin, caching.HasCachedMethods):
     @caching.cachedmethod
     def service(self):
         """
-        The :class:`Service` containing this parameter, or None if not contained in a service.
+        The :class:`~aria.modeling.models.Service` model containing this parameter, or ``None`` if
+        not contained in a service.
+
+        :raises exceptions.ValueError: if failed to find a container model, which signifies an
+                                       abnormal, orphaned parameter
         """
 
         from . import models
@@ -266,8 +275,11 @@ class ParameterMixin(TemplateModelMixin, caching.HasCachedMethods):
     @caching.cachedmethod
     def service_template(self):
         """
-        The :class:`ServiceTemplate` containing this parameter, or None if not contained in a
-        service template.
+        The :class:`~aria.modeling.models.ServiceTemplate` model containing this parameter, or
+        ``None`` if not contained in a service template.
+
+        :raises exceptions.ValueError: if failed to find a container model, which signifies an
+                                       abnormal, orphaned parameter
         """
 
         from . import models

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/modeling/models.py
----------------------------------------------------------------------
diff --git a/aria/modeling/models.py b/aria/modeling/models.py
index d15f791..129b5bb 100644
--- a/aria/modeling/models.py
+++ b/aria/modeling/models.py
@@ -14,7 +14,7 @@
 # limitations under the License.
 
 """
-Modeling models module
+Models.
 """
 
 # pylint: disable=abstract-method

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/modeling/orchestration.py
----------------------------------------------------------------------
diff --git a/aria/modeling/orchestration.py b/aria/modeling/orchestration.py
index bd89ddb..6096fcc 100644
--- a/aria/modeling/orchestration.py
+++ b/aria/modeling/orchestration.py
@@ -157,37 +157,37 @@ class PluginBase(mixins.ModelMixin):
     are archives of one or more `wheels <https://packaging.python.org/distributing/#wheels>`__.
     Most of these fields are indeed extracted from the installed wagon's metadata.
 
-    :ivar archive_name: Filename (not the full path) of the wagon's archive, often with a ".wgn"
+    :ivar archive_name: filename (not the full path) of the wagon's archive, often with a ".wgn"
                         extension
     :vartype archive_name: basestring
-    :ivar distribution: The name of the operating system on which the wagon was installed (e.g.
+    :ivar distribution: name of the operating system on which the wagon was installed (e.g.
                         "ubuntu")
     :vartype distribution: basestring
-    :ivar distribution_release: The release of the operating system on which the wagon was installed
+    :ivar distribution_release: release of the operating system on which the wagon was installed
                                 (e.g. "trusty")
     :vartype distribution_release: basestring
-    :ivar distribution_version: The version of the operating system on which the wagon was installed
+    :ivar distribution_version: version of the operating system on which the wagon was installed
                                 (e.g. "14.04")
     :vartype distribution_version: basestring
-    :ivar package_name: The primary Python package name used when the wagon was installed, which is
-                        one of the wheels in the wagon (e.g. "cloudify-script-plugin")
+    :ivar package_name: primary Python package name used when the wagon was installed, which is one
+                        of the wheels in the wagon (e.g. "cloudify-script-plugin")
     :vartype package_name: basestring
-    :ivar package_source: The full install string for the primary Python package name used when the
+    :ivar package_source: full install string for the primary Python package name used when the
                           wagon was installed (e.g. "cloudify-script-plugin==1.2")
     :vartype package_source: basestring
-    :ivar package_version: The version for the primary Python package name used when the wagon was
+    :ivar package_version: version for the primary Python package name used when the wagon was
                            installed (e.g. "1.2")
     :vartype package_version: basestring
-    :ivar supported_platform: If the wheels are *all* pure Python then this would be "any",
+    :ivar supported_platform: if the wheels are *all* pure Python then this would be "any",
                               otherwise it would be the installed platform name (e.g.
                               "linux_x86_64")
     :vartype supported_platform: basestring
-    :ivar supported_py_versions: The Python versions supported by all the wheels (e.g. ["py26",
+    :ivar supported_py_versions: Python versions supported by all the wheels (e.g. ["py26",
                                  "py27"])
     :vartype supported_py_versions: [basestring]
-    :ivar wheels: The filenames of the wheels archived in the wagon, often with a ".whl" extension
+    :ivar wheels: filenames of the wheels archived in the wagon, often with a ".whl" extension
     :vartype wheels: [basestring]
-    :ivar uploaded_at: Timestamp for when the wagon was installed
+    :ivar uploaded_at: timestamp for when the wagon was installed
     :vartype uploaded_at: basestring
     """
 
@@ -221,34 +221,34 @@ class TaskBase(mixins.ModelMixin):
     Tasks are often based on :class:`Operation`, and thus act on either a :class:`Node` or a
     :class:`Relationship`, however this is not required.
 
-    :ivar node: The node actor (optional)
-    :vartype node: :class:`Node`
-    :ivar relationship: The relationship actor (optional)
-    :vartype relationship: :class:`Relationship`
-    :ivar plugin: The implementing plugin (set to None for default execution plugin)
-    :vartype plugin: :class:`Plugin`
+    :ivar node: node actor (optional)
+    :vartype node: Node
+    :ivar relationship: relationship actor (optional)
+    :vartype relationship: Relationship
+    :ivar plugin: implementing plugin (set to None for default execution plugin)
+    :vartype plugin: Plugin
     :ivar function: Python path to an ``@operation`` function
     :vartype function: basestring
-    :ivar arguments: Arguments that can be used by this task
-    :vartype arguments: {basestring: :class:`Argument`}
-    :ivar max_attempts: Maximum number of retries allowed in case of failure
+    :ivar arguments: arguments that can be used by this task
+    :vartype arguments: {:obj:`basestring`: :class:`Argument`}
+    :ivar max_attempts: maximum number of retries allowed in case of failure
     :vartype max_attempts: int
-    :ivar retry_interval: Interval between retries (in seconds)
+    :ivar retry_interval: interval between retries (in seconds)
     :vartype retry_interval: int
-    :ivar ignore_failure: Set to True to ignore failures
+    :ivar ignore_failure: set to ``True`` to ignore failures
     :vartype ignore_failure: bool
-    :ivar due_at: Timestamp to start the task
+    :ivar due_at: timestamp to start the task
     :vartype due_at: datetime
-    :ivar execution: Assigned execution
-    :vartype execution: :class:`Execution`
-    :ivar status: Current atomic status ('pending', 'retrying', 'sent', 'started', 'success',
+    :ivar execution: assigned execution
+    :vartype execution: Execution
+    :ivar status: current atomic status ('pending', 'retrying', 'sent', 'started', 'success',
                   'failed')
     :vartype status: basestring
-    :ivar started_at: Timestamp for when task started
+    :ivar started_at: timestamp for when task started
     :vartype started_at: datetime
-    :ivar ended_at: Timestamp for when task ended
+    :ivar ended_at: timestamp for when task ended
     :vartype ended_at: datetime
-    :ivar attempts_count: How many attempts occurred
+    :ivar attempts_count: how many attempts occurred
     :vartype attempts_count: int
     """
 

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/modeling/service_common.py
----------------------------------------------------------------------
diff --git a/aria/modeling/service_common.py b/aria/modeling/service_common.py
index 59bcd02..2ba3aa3 100644
--- a/aria/modeling/service_common.py
+++ b/aria/modeling/service_common.py
@@ -37,12 +37,12 @@ from . import relationship
 
 class OutputBase(ParameterMixin):
     """
-    :ivar name: Name
+    :ivar name: name
     :vartype name: basestring
-    :ivar type_name: Type name
+    :ivar type_name: type name
     :vartype type_name: basestring
-    :ivar value: Value
-    :ivar description: Description
+    :ivar value: value
+    :ivar description: human-readable description
     :vartype description: basestring
     """
 
@@ -75,12 +75,12 @@ class OutputBase(ParameterMixin):
 
 class InputBase(ParameterMixin):
     """
-    :ivar name: Name
+    :ivar name: name
     :vartype name: basestring
-    :ivar type_name: Type name
+    :ivar type_name: type name
     :vartype type_name: basestring
-    :ivar value: Value
-    :ivar description: Description
+    :ivar value: value
+    :ivar description: human-readable description
     :vartype description: basestring
     """
 
@@ -157,12 +157,12 @@ class InputBase(ParameterMixin):
 
 class ConfigurationBase(ParameterMixin):
     """
-    :ivar name: Name
+    :ivar name: name
     :vartype name: basestring
-    :ivar type_name: Type name
+    :ivar type_name: type name
     :vartype type_name: basestring
-    :ivar value: Value
-    :ivar description: Description
+    :ivar value: value
+    :ivar description: human-readable description
     :vartype description: basestring
     """
 
@@ -195,12 +195,12 @@ class ConfigurationBase(ParameterMixin):
 
 class PropertyBase(ParameterMixin):
     """
-    :ivar name: Name
+    :ivar name: name
     :vartype name: basestring
-    :ivar type_name: Type name
+    :ivar type_name: type name
     :vartype type_name: basestring
-    :ivar value: Value
-    :ivar description: Description
+    :ivar value: value
+    :ivar description: human-readable description
     :vartype description: basestring
     """
 
@@ -255,6 +255,7 @@ class PropertyBase(ParameterMixin):
     @declared_attr
     def artifact_fk(cls):
         return relationship.foreign_key('artifact', nullable=True)
+
     # endregion
 
     # region many_to_one relationships
@@ -312,12 +313,12 @@ class PropertyBase(ParameterMixin):
 
 class AttributeBase(ParameterMixin):
     """
-    :ivar name: Name
+    :ivar name: name
     :vartype name: basestring
-    :ivar type_name: Type name
+    :ivar type_name: type name
     :vartype type_name: basestring
-    :ivar value: Value
-    :ivar description: Description
+    :ivar value: value
+    :ivar description: human-readable description
     :vartype description: basestring
     """
 
@@ -354,7 +355,7 @@ class TypeBase(InstanceModelMixin):
     """
     Represents a type and its children.
 
-    :ivar name:
+    :ivar name: name
     :vartype name: basestring
     """
 
@@ -466,9 +467,9 @@ class MetadataBase(TemplateModelMixin):
 
     This model is used by both service template and service instance elements.
 
-    :ivar name: Name
+    :ivar name: name
     :vartype name: basestring
-    :ivar value: Value
+    :ivar value: value
     :vartype value: basestring
     """
 

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7ed92d0f/aria/modeling/service_instance.py
----------------------------------------------------------------------
diff --git a/aria/modeling/service_instance.py b/aria/modeling/service_instance.py
index 78ee105..033785d 100644
--- a/aria/modeling/service_instance.py
+++ b/aria/modeling/service_instance.py
@@ -54,39 +54,39 @@ class ServiceBase(InstanceModelMixin):
     You will usually not create it programmatically, but instead instantiate it from a service
     template.
 
-    :ivar name: Name (unique for this ARIA installation)
+    :ivar name: name (unique for this ARIA installation)
     :vartype name: basestring
-    :ivar service_template: Template from which this service was instantiated (optional)
-    :vartype service_template: :class:`ServiceTemplate`
-    :ivar description: Human-readable description
-    :vartype description: string
-    :ivar meta_data: Custom annotations
-    :vartype meta_data: {basestring: :class:`Metadata`}
-    :ivar node: Nodes
-    :vartype node: {basestring: :class:`Node`}
-    :ivar groups: Groups of nodes
-    :vartype groups: {basestring: :class:`Group`}
-    :ivar policies: Policies
-    :vartype policies: {basestring: :class:`Policy`]}
-    :ivar substitution: The entire service can appear as a node
+    :ivar service_template: template from which this service was instantiated (optional)
+    :vartype service_template: ServiceTemplate
+    :ivar description: human-readable description
+    :vartype description: basestring
+    :ivar meta_data: custom annotations
+    :vartype meta_data: {:obj:`basestring`: :class:`Metadata`}
+    :ivar nodes: nodes
+    :vartype nodes: {:obj:`basestring`: :class:`Node`}
+    :ivar groups: groups of nodes
+    :vartype groups: {:obj:`basestring`: :class:`Group`}
+    :ivar policies: policies
+    :vartype policies: {:obj:`basestring`: :class:`Policy`]}
+    :ivar substitution: the entire service can appear as a node
     :vartype substitution: :class:`Substitution`
-    :ivar inputs: Externally provided parameters
-    :vartype inputs: {basestring: :class:`Input`}
-    :ivar outputs: These parameters are filled in after service installation
-    :vartype outputs: {basestring: :class:`Output`}
-    :ivar workflows: Custom workflows that can be performed on the service
-    :vartype workflows: {basestring: :class:`Operation`}
-    :ivar plugins: Plugins used by the service
-    :vartype plugins: {basestring: :class:`Plugin`}
-    :ivar created_at: Creation timestamp
+    :ivar inputs: externally provided parameters
+    :vartype inputs: {:obj:`basestring`: :class:`Input`}
+    :ivar outputs: these parameters are filled in after service installation
+    :vartype outputs: {:obj:`basestring`: :class:`Output`}
+    :ivar workflows: custom workflows that can be performed on the service
+    :vartype workflows: {:obj:`basestring`: :class:`Operation`}
+    :ivar plugins: plugins used by the service
+    :vartype plugins: {:obj:`basestring`: :class:`Plugin`}
+    :ivar created_at: creation timestamp
     :vartype created_at: :class:`datetime.datetime`
-    :ivar updated_at: Update timestamp
+    :ivar updated_at: update timestamp
     :vartype updated_at: :class:`datetime.datetime`
-    :ivar modifications: Modifications of this service
+    :ivar modifications: modifications of this service
     :vartype modifications: [:class:`ServiceModification`]
-    :ivar updates: Updates of this service
+    :ivar updates: updates of this service
     :vartype updates: [:class:`ServiceUpdate`]
-    :ivar executions: Executions on this service
+    :ivar executions: executions on this service
     :vartype executions: [:class:`Execution`]
     """
 
@@ -319,43 +319,43 @@ class NodeBase(InstanceModelMixin):
 
     Nodes may have zero or more :class:`Relationship` instances to other nodes.
 
-    :ivar name: Name (unique for this service)
+    :ivar name: name (unique for this service)
     :vartype name: basestring
-    :ivar node_template: Template from which this node was instantiated (optional)
+    :ivar node_template: template from which this node was instantiated (optional)
     :vartype node_template: :class:`NodeTemplate`
-    :ivar type: Node type
-    :vartype type: :class:`Type`
-    :ivar description: Human-readable description
-    :vartype description: string
-    :ivar properties: Associated parameters
-    :vartype properties: {basestring: :class:`Property`}
-    :ivar interfaces: Bundles of operations
-    :vartype interfaces: {basestring: :class:`Interface`}
-    :ivar artifacts: Associated files
-    :vartype artifacts: {basestring: :class:`Artifact`}
-    :ivar capabilities: Exposed capabilities
-    :vartype capabilities: {basestring: :class:`Capability`}
-    :ivar outbound_relationships: Relationships to other nodes
+    :ivar type: node type
+    :vartype type: Type
+    :ivar description: human-readable description
+    :vartype description: basestring
+    :ivar properties: associated parameters
+    :vartype properties: {:obj:`basestring`: :class:`Property`}
+    :ivar interfaces: bundles of operations
+    :vartype interfaces: {:obj:`basestring`: :class:`Interface`}
+    :ivar artifacts: associated files
+    :vartype artifacts: {:obj:`basestring`: :class:`Artifact`}
+    :ivar capabilities: exposed capabilities
+    :vartype capabilities: {:obj:`basestring`: :class:`Capability`}
+    :ivar outbound_relationships: relationships to other nodes
     :vartype outbound_relationships: [:class:`Relationship`]
-    :ivar inbound_relationships: Relationships from other nodes
+    :ivar inbound_relationships: relationships from other nodes
     :vartype inbound_relationships: [:class:`Relationship`]
-    :ivar host: Host node (can be self)
+    :ivar host: host node (can be self)
     :vartype host: :class:`Node`
-    :ivar state: The state of the node, according to to the TOSCA-defined node states
+    :ivar state: the state of the node, according to to the TOSCA-defined node states
     :vartype state: string
-    :ivar version: Used by `aria.storage.instrumentation`
+    :ivar version: used by :mod:`aria.storage.instrumentation`
     :vartype version: int
-    :ivar service: Containing service
+    :ivar service: containing service
     :vartype service: :class:`Service`
-    :ivar groups: We are a member of these groups
+    :ivar groups: we are a member of these groups
     :vartype groups: [:class:`Group`]
-    :ivar policies: Policies enacted on this node
+    :ivar policies: policies enacted on this node
     :vartype policies: [:class:`Policy`]
-    :ivar substitution_mapping: Our contribution to service substitution
+    :ivar substitution_mapping: our contribution to service substitution
     :vartype substitution_mapping: :class:`SubstitutionMapping`
-    :ivar tasks: Tasks for this node
+    :ivar tasks: tasks for this node
     :vartype tasks: [:class:`Task`]
-    :ivar hosted_tasks: Tasks on this node
+    :ivar hosted_tasks: tasks on this node
     :vartype hosted_tasks: [:class:`Task`]
     """
 
@@ -704,23 +704,23 @@ class GroupBase(InstanceModelMixin):
     """
     Usually an instance of a :class:`GroupTemplate`.
 
-    :ivar name: Name (unique for this service)
+    :ivar name: name (unique for this service)
     :vartype name: basestring
-    :ivar group_template: Template from which this group was instantiated (optional)
+    :ivar group_template: template from which this group was instantiated (optional)
     :vartype group_template: :class:`GroupTemplate`
-    :ivar type: Group type
-    :vartype type: :class:`Type`
-    :ivar description: Human-readable description
-    :vartype description: string
-    :ivar nodes: Members of this group
+    :ivar type: group type
+    :vartype type: Type
+    :ivar description: human-readable description
+    :vartype description: basestring
+    :ivar nodes: members of this group
     :vartype nodes: [:class:`Node`]
-    :ivar properties: Associated parameters
-    :vartype properties: {basestring: :class:`Property`}
-    :ivar interfaces: Bundles of operations
-    :vartype interfaces: {basestring: :class:`Interface`}
-    :ivar service: Containing service
+    :ivar properties: associated parameters
+    :vartype properties: {:obj:`basestring`: :class:`Property`}
+    :ivar interfaces: bundles of operations
+    :vartype interfaces: {:obj:`basestring`: :class:`Interface`}
+    :ivar service: containing service
     :vartype service: :class:`Service`
-    :ivar policies: Policies enacted on this group
+    :ivar policies: policies enacted on this group
     :vartype policies: [:class:`Policy`]
     """
 
@@ -832,21 +832,21 @@ class PolicyBase(InstanceModelMixin):
     """
     Usually an instance of a :class:`PolicyTemplate`.
 
-    :ivar name: Name (unique for this service)
+    :ivar name: name (unique for this service)
     :vartype name: basestring
-    :ivar policy_template: Template from which this policy was instantiated (optional)
+    :ivar policy_template: template from which this policy was instantiated (optional)
     :vartype policy_template: :class:`PolicyTemplate`
-    :ivar type: Policy type
-    :vartype type: :class:`Type`
-    :ivar description: Human-readable description
-    :vartype description: string
-    :ivar nodes: Policy will be enacted on all these nodes
+    :ivar type: policy type
+    :vartype type: Type
+    :ivar description: human-readable description
+    :vartype description: basestring
+    :ivar nodes: policy will be enacted on all these nodes
     :vartype nodes: [:class:`Node`]
-    :ivar groups: Policy will be enacted on all nodes in these groups
+    :ivar groups: policy will be enacted on all nodes in these groups
     :vartype groups: [:class:`Group`]
-    :ivar properties: Associated parameters
-    :vartype properties: {basestring: :class:`Property`}
-    :ivar service: Containing service
+    :ivar properties: associated parameters
+    :vartype properties: {:obj:`basestring`: :class:`Property`}
+    :ivar service: containing service
     :vartype service: :class:`Service`
     """
 
@@ -958,13 +958,13 @@ class SubstitutionBase(InstanceModelMixin):
 
     Usually an instance of a :class:`SubstitutionTemplate`.
 
-    :ivar substitution_template: Template from which this substitution was instantiated (optional)
+    :ivar substitution_template: template from which this substitution was instantiated (optional)
     :vartype substitution_template: :class:`SubstitutionTemplate`
-    :ivar node_type: Exposed node type
+    :ivar node_type: exposed node type
     :vartype node_type: :class:`Type`
-    :ivar mappings: Requirement and capability mappings
-    :vartype mappings: {basestring: :class:`SubstitutionTemplate`}
-    :ivar service: Containing service
+    :ivar mappings: requirement and capability mappings
+    :vartype mappings: {:obj:`basestring`: :class:`SubstitutionTemplate`}
+    :ivar service: containing service
     :vartype service: :class:`Service`
     """
 
@@ -1047,15 +1047,15 @@ class SubstitutionMappingBase(InstanceModelMixin):
 
     Usually an instance of a :class:`SubstitutionTemplate`.
 
-    :ivar name: Exposed capability or requirement name
+    :ivar name: exposed capability or requirement name
     :vartype name: basestring
-    :ivar node: Node
-    :vartype node: :class:`Node`
-    :ivar capability: Capability in the node
+    :ivar node: node
+    :vartype node: Node
+    :ivar capability: capability in the node
     :vartype capability: :class:`Capability`
-    :ivar requirement_template: Requirement template in the node template
+    :ivar requirement_template: requirement template in the node template
     :vartype requirement_template: :class:`RequirementTemplate`
-    :ivar substitution: Containing substitution
+    :ivar substitution: containing substitution
     :vartype substitution: :class:`Substitution`
     """
 
@@ -1156,29 +1156,29 @@ class RelationshipBase(InstanceModelMixin):
 
     Might be an instance of a :class:`RelationshipTemplate`.
 
-    :ivar name: Name (usually the name of the requirement at the source node template)
+    :ivar name: name (usually the name of the requirement at the source node template)
     :vartype name: basestring
-    :ivar relationship_template: Template from which this relationship was instantiated (optional)
+    :ivar relationship_template: template from which this relationship was instantiated (optional)
     :vartype relationship_template: :class:`RelationshipTemplate`
-    :ivar requirement_template: Template from which this relationship was instantiated (optional)
+    :ivar requirement_template: template from which this relationship was instantiated (optional)
     :vartype requirement_template: :class:`RequirementTemplate`
-    :ivar type: Relationship type
-    :vartype type: :class:`Type`
-    :ivar target_capability: Capability at the target node (optional)
+    :ivar type: relationship type
+    :vartype type: Type
+    :ivar target_capability: capability at the target node (optional)
     :vartype target_capability: :class:`Capability`
-    :ivar properties: Associated parameters
-    :vartype properties: {basestring: :class:`Property`}
-    :ivar interfaces: Bundles of operations
-    :vartype interfaces: {basestring: :class:`Interfaces`}
-    :ivar source_position: The position of the relationship in the outbound relationships.
+    :ivar properties: associated parameters
+    :vartype properties: {:obj:`basestring`: :class:`Property`}
+    :ivar interfaces: bundles of operations
+    :vartype interfaces: {:obj:`basestring`: :class:`Interfaces`}
+    :ivar source_position: position of the relationship in the outbound relationships.
     :vartype source_position: int
-    :ivar target_position: The position of the relationship in the inbound relationships.
+    :ivar target_position: position of the relationship in the inbound relationships.
     :vartype target_position: int
-    :ivar source_node: Source node
+    :ivar source_node: source node
     :vartype source_node: :class:`Node`
-    :ivar target_node: Target node
+    :ivar target_node: target node
     :vartype target_node: :class:`Node`
-    :ivar tasks: Tasks for this relationship
+    :ivar tasks: tasks for this relationship
     :vartype tasks: [:class:`Task`]
     """
 
@@ -1346,23 +1346,23 @@ class CapabilityBase(InstanceModelMixin):
 
     :ivar name: Name (unique for the node)
     :vartype name: basestring
-    :ivar capability_template: Template from which this capability was instantiated (optional)
+    :ivar capability_template: template from which this capability was instantiated (optional)
     :vartype capability_template: :class:`capabilityTemplate`
-    :ivar type: Capability type
-    :vartype type: :class:`Type`
-    :ivar min_occurrences: Minimum number of requirement matches required
+    :ivar type: capability type
+    :vartype type: Type
+    :ivar min_occurrences: minimum number of requirement matches required
     :vartype min_occurrences: int
-    :ivar max_occurrences: Maximum number of requirement matches allowed
+    :ivar max_occurrences: maximum number of requirement matches allowed
     :vartype min_occurrences: int
-    :ivar occurrences: Actual number of requirement matches
+    :ivar occurrences: actual number of requirement matches
     :vartype occurrences: int
-    :ivar properties: Associated parameters
-    :vartype properties: {basestring: :class:`Property`}
-    :ivar node: Containing node
-    :vartype node: :class:`Node`
-    :ivar relationship: Available when we are the target of a relationship
+    :ivar properties: associated parameters
+    :vartype properties: {:obj:`basestring`: :class:`Property`}
+    :ivar node: containing node
+    :vartype node: Node
+    :ivar relationship: available when we are the target of a relationship
     :vartype relationship: :class:`Relationship`
-    :ivar substitution_mapping: Our contribution to service substitution
+    :ivar substitution_mapping: our contribution to service substitution
     :vartype substitution_mapping: :class:`SubstitutionMapping`
     """
 
@@ -1473,23 +1473,23 @@ class InterfaceBase(InstanceModelMixin):
 
     Usually an instance of :class:`InterfaceTemplate`.
 
-    :ivar name: Name (unique for the node, group, or relationship)
+    :ivar name: name (unique for the node, group, or relationship)
     :vartype name: basestring
-    :ivar interface_template: Template from which this interface was instantiated (optional)
+    :ivar interface_template: template from which this interface was instantiated (optional)
     :vartype interface_template: :class:`InterfaceTemplate`
-    :ivar type: Interface type
-    :vartype type: :class:`Type`
-    :ivar description: Human-readable description
-    :vartype description: string
-    :ivar inputs: Inputs that can be used by all operations in the interface
-    :vartype inputs: {basestring: :class:`Input`}
-    :ivar operations: Operations
-    :vartype operations: {basestring: :class:`Operation`}
+    :ivar type: interface type
+    :vartype type: Type
+    :ivar description: human-readable description
+    :vartype description: basestring
+    :ivar inputs: inputs that can be used by all operations in the interface
+    :vartype inputs: {:obj:`basestring`: :class:`Input`}
+    :ivar operations: operations
+    :vartype operations: {:obj:`basestring`: :class:`Operation`}
     :ivar node: Containing node
-    :vartype node: :class:`Node`
-    :ivar group: Containing group
+    :vartype node: Node
+    :ivar group: containing group
     :vartype group: :class:`Group`
-    :ivar relationship: Containing relationship
+    :ivar relationship: containing relationship
     :vartype relationship: :class:`Relationship`
     """
 
@@ -1614,40 +1614,40 @@ class OperationBase(InstanceModelMixin):
 
     Might be an instance of :class:`OperationTemplate`.
 
-    :ivar name: Name (unique for the interface or service)
+    :ivar name: name (unique for the interface or service)
     :vartype name: basestring
-    :ivar operation_template: Template from which this operation was instantiated (optional)
+    :ivar operation_template: template from which this operation was instantiated (optional)
     :vartype operation_template: :class:`OperationTemplate`
-    :ivar description: Human-readable description
-    :vartype description: string
-    :ivar relationship_edge: When true specified that the operation is on the relationship's
+    :ivar description: human-readable description
+    :vartype description: basestring
+    :ivar relationship_edge: when ``True`` specifies that the operation is on the relationship's
                              target edge instead of its source (only used by relationship
                              operations)
     :vartype relationship_edge: bool
-    :ivar implementation: Implementation (interpreted by the plugin)
+    :ivar implementation: implementation (interpreted by the plugin)
     :vartype implementation: basestring
-    :ivar dependencies: Dependency strings (interpreted by the plugin)
-    :vartype dependencies: [basestring]
-    :ivar inputs: Input that can be used by this operation
-    :vartype inputs: {basestring: :class:`Input`}
-    :ivar plugin: Associated plugin
-    :vartype plugin: :class:`Plugin`
-    :ivar configurations: Configuration (interpreted by the plugin)
-    :vartype configurations: {basestring, :class:`Configuration`}
-    :ivar function: Name of the operation function
+    :ivar dependencies: dependency strings (interpreted by the plugin)
+    :vartype dependencies: [obj:`basestring`]
+    :ivar inputs: input that can be used by this operation
+    :vartype inputs: {:obj:`basestring`: :class:`Input`}
+    :ivar plugin: associated plugin
+    :vartype plugin: Plugin
+    :ivar configurations: configuration (interpreted by the plugin)
+    :vartype configurations: {obj:`basestring`: :class:`Configuration`}
+    :ivar function: name of the operation function
     :vartype function: basestring
-    :ivar arguments: Arguments to send to the operation function
-    :vartype arguments: {basestring: :class:`Argument`}
-    :ivar executor: Name of executor to run the operation with
+    :ivar arguments: arguments to send to the operation function
+    :vartype arguments: {:obj:`basestring`: :class:`Argument`}
+    :ivar executor: name of executor to run the operation with
     :vartype executor: basestring
-    :ivar max_attempts: Maximum number of attempts allowed in case of failure
+    :ivar max_attempts: maximum number of attempts allowed in case of failure
     :vartype max_attempts: int
-    :ivar retry_interval: Interval between retries (in seconds)
+    :ivar retry_interval: interval between retries (in seconds)
     :vartype retry_interval: int
-    :ivar interface: Containing interface
-    :vartype interface: :class:`Interface`
-    :ivar service: Containing service
-    :vartype service: :class:`Service`
+    :ivar interface: containing interface
+    :vartype interface: Interface
+    :ivar service: containing service
+    :vartype service: Service
     """
 
     __tablename__ = 'operation'
@@ -1833,26 +1833,26 @@ class ArtifactBase(InstanceModelMixin):
 
     Usually an instance of :class:`ArtifactTemplate`.
 
-    :ivar name: Name (unique for the node)
+    :ivar name: name (unique for the node)
     :vartype name: basestring
-    :ivar artifact_template: Template from which this artifact was instantiated (optional)
-    :vartype artifact_template: :class:`ArtifactTemplate`
-    :ivar type: Artifact type
-    :vartype type: :class:`Type`
-    :ivar description: Human-readable description
-    :vartype description: string
-    :ivar source_path: Source path (CSAR or repository)
+    :ivar artifact_template: template from which this artifact was instantiated (optional)
+    :vartype artifact_template: ArtifactTemplate
+    :ivar type: artifact type
+    :vartype type: Type
+    :ivar description: human-readable description
+    :vartype description: basestring
+    :ivar source_path: source path (CSAR or repository)
     :vartype source_path: basestring
-    :ivar target_path: Path at destination machine
+    :ivar target_path: path at destination machine
     :vartype target_path: basestring
-    :ivar repository_url: Repository URL
+    :ivar repository_url: repository URL
     :vartype repository_path: basestring
-    :ivar repository_credential: Credentials for accessing the repository
-    :vartype repository_credential: {basestring: basestring}
-    :ivar properties: Associated parameters
-    :vartype properties: {basestring: :class:`Property`}
-    :ivar node: Containing node
-    :vartype node: :class:`Node`
+    :ivar repository_credential: credentials for accessing the repository
+    :vartype repository_credential: {:obj:`basestring`: :obj:`basestring`}
+    :ivar properties: associated parameters
+    :vartype properties: {:obj:`basestring`: :class:`Property`}
+    :ivar node: containing node
+    :vartype node: Node
     """
 
     __tablename__ = 'artifact'