text: # -*- coding: utf-8 -*-
  '''
  General documentation architecture:
  
  Home
  Index
  
  - Getting started
      Guide to SciANN model
      Guide to Functional
      FAQ
  
  - SciModels
      About SciANN models
          explain when one should use Sequential or functional API
          explain compilation step
          explain weight saving, weight loading
          explain serialization, deserialization
      Sequential
      Model (functional API)
  
  - Functionals
      About SciANN functionals
          explain common functional operations: get_weights, set_weights, get_config
          explain input_shape
          explain usage on non-Keras tensors
      Variables
      Fields
      Functionals 
  
  Operations
  Constraints 
  
  '''
  from sciann import utils
  from sciann.functionals.mlp_functional import MLPFunctional
  from sciann import Variable
  from sciann import Field
  from sciann import SciModel
  from sciann import constraints
  from sciann import utils
  from sciann import Parameter
  
  
  EXCLUDE = {
      'Constraint'
  }
  
  PAGES = [
      {
          'page': 'scimodels.md',
          'classes': [
              SciModel
          ],
          'methods': [
              SciModel.train,
              SciModel.predict,
              SciModel.loss_functions,
          ]
      },
      {
          'page': 'functionals.md',
          'classes': [
              MLPFunctional,
              Variable,
              Field,
              Parameter,
          ],
          'methods': [
              MLPFunctional.eval,
              MLPFunctional.get_weights,
              MLPFunctional.set_weights,
              MLPFunctional.reinitialize_weights,
              MLPFunctional.count_params,
              MLPFunctional.set_trainable,
              MLPFunctional.split,
          ]
      },
      {
          'page': 'variables.md',
          'classes': [
              Variable
          ]
      },
      {
          'page': 'fields.md',
          'classes': [
              Field
          ]
      },
      {
          'page': 'constraints.md',
          'classes': [
              constraints.Data,
              constraints.PDE,
              constraints.Tie
          ]
      },
      {
          'page': 'utils.md',
          'methods': [
              utils.math.grad,
              utils.math.diag_grad,
              utils.math.div,
              utils.math.radial_basis,
              utils.math.sin,
              utils.math.asin,
              utils.math.cos,
              utils.math.acos,
              utils.math.tan,
              utils.math.atan,
              utils.math.tanh,
              utils.math.exp,
              utils.math.pow,
              utils.math.add,
              utils.math.sub,
              utils.math.mul,
              utils.math.div,
          ],
      },
  ]
  
  ROOT = 'https://sciann.com/'
  
  template_np_implementation = """# Numpy implementation
  
      ```python
  {{code}}
      ```
  """
  
  template_hidden_np_implementation = """# Numpy implementation
  
      <details>
      <summary>Show the Numpy implementation</summary>
  
      ```python
  {{code}}
      ```
  
      </details>
  """
  