# philosophy ## classes - compositional - only init manipulates the object - no inheretance - functions return a clone of the object with primary data object cloned and manipulated ## other - heavy inference from type hints - library-ize everything - thin CLI wrapper as stand alone file - pyproject setup only - deveopment branch with pyenv to source into shell for development - data oriented with classes being simplest data conainers with helper functions ## imports Files with an _prefix_ underscore are, by convention, imported in `__init__.py`. For example, ```python from ._rgb_ import * ``` This will import all of the functions from `_rgb_` into the module’s name space. So If `_rgb_` contains a function `interpolatePoint` you can reference it by `PythonModuleDemo._rgb_.interpolatePoint` or more simply `PythonModuleDemo.interpolatePoint`. Since this module is intended to provide a swath of functionality I wanted to provide the user with the simplest method of access. The reason all files end with a _suffix_ underscore is to avoid any name collisions with python standard Library. For instance I have a file called `_math_.py`. If it were only called `math.py` it would collide with python standard Library when doing `import math`. # import time ```bash λ timeRepeat.py - -c 500 -- python -c '' 0.021840 λ timeRepeat.py - -c 500 -- python -c 'import defl' 0.161801 λ python -c 'print(0.161801/0.021840)' 7.4084706959706965 ```