# Source code for ixpeobssim.utils.codestyle

```#!/usr/bin/env python
#
# Copyright (C) 2015, the ixpeobssim team.                              *
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

from __future__ import print_function, division

"""Small fake module to illustrate the basic coding guidelines and the use
of docstrings for sphinx.

See `PEP 0008 <https://www.python.org/dev/peps/pep-0008/>`_ for more details.
(And note that the module name is short, descriptive, and all lowercase).
Also note we use the Napoleon sphinx extension with the Numpy style.
"""

# One import per line, all at the top of the module.
import math

"""The electron mass---this is a global constant, and all uppercase.
"""
ELECTRON_MASS = 0.510998910 # MeV

[docs]
def square(x):
"""Return the square of x.

Args
----
x : number or array
The input x value (can be either a numeric type or an array).

Returns
-------
float
The square of the input value

Examples
--------
>>> x = 3.
>>> y = square(x)
>>> print(y)

Note
----
Yes, this is a pretty dumb function, but watch out for the use of doctrings.
"""
return math.pow(x, 2.)

[docs]
class xSampleClass:

"""An example class, doing nothing useful.

Args
----
name : string
The instance name.
description : string
An optional description.

Examples
--------
>>> from codestyle import xSampleClass
>>> c1 = xSampleClass('hello')
>>> c2 = xSampleClass('world!')
>>> print(c1 + c2)
"""

def __init__(self, name, description=None):
"""Constructor.

Note there are no spaces around the `=` sign for the default parameter
value.
"""
self.name = name
self.description = description

"""Implementation of the `+` operator.

This is just concatenating the string representation of the two
"""
return self.__class__('%s %s' % (self, other))

def __str__(self):
"""String formatting.
"""
return self.name

if __name__ == '__main__':
c1 = xSampleClass('hello')
c2 = xSampleClass('world!')
print(c1 + c2)
```