Metadata-Version: 2.1
Name: MonkeyScope
Version: 0.1.3
Summary: Distribution Stats & Timer for Testing Non-deterministic Value Generators
Home-page: https://sharpdesigndigital.com
Author: Robert Sharp
Author-email: webmaster@sharpdesigndigital.com
License: Free for non-commercial use
Description: # MonkeyScope Beta
        Distribution Timer for Non-deterministic Value Generators
        
        ### Sister Projects:
        - Fortuna: Collection of abstractions to make custom random value generators. https://pypi.org/project/Fortuna/
        - Pyewacket: Complete drop-in replacement for the Python3 random module. https://pypi.org/project/Pyewacket/
        - RNG: Python3 API for the C++ Random Library. https://pypi.org/project/RNG/
        
        Support these and other random projects: https://www.patreon.com/brokencode
        
        ### Quick Install
        ``` 
        $ pip install MonkeyScope
        $ python3
        >>> import MonkeyScope ...
        ```
        
        ### Installation may require the following:
        - Python 3.7 or later.
        - Cython: `pip install Cython`
        - Python3 developer environment, setuptools etc.
        - Modern C++17 Compiler and Standard Library.
        
        ---
        
        ## MonkeyScope Specifications
        - `MonkeyScope.distribution_timer(func: staticmethod, *args, **kwargs) -> None`
            - Logger for the statistical analysis of non-deterministic output.
            - @param func :: function, method or lambda to analyze. `func(*args, **kwargs)`
            - @optional_kw num_cycles=10000 :: Total number of samples to use for analysis.
            - @optional_kw post_processor=None :: Used to scale a large set of data into a smaller set of groupings for better visualization of the data, esp. useful for distributions of floats. For many functions in quick_test(), math.floor() is used, for others round() is more appropriate. For more complex post processing - lambdas work nicely. Post processing only affects the distribution, the statistics and performance results are unaffected.
        - `MonkeyScope.distribution(func: staticmethod, *args, **kwargs) -> None`
            - Stats and distribution.
        - `MonkeyScope.timer(func: staticmethod, *args, **kwargs) -> None`
            - Just the function timer.
        
        ## MonkeyScope Terminal Example
        ```
        $ python3
        Python 3.7.3
        >>> import MonkeyScope
        >>> import random
        >>> MonkeyScope.timer(random.randrange, -10000, 10000, 2)
        Typical Timing: 1594 ± 34 ns
        
        ```
        ### MonkeyScope Script Example
        ```python
        import MonkeyScope
        import random
        
        
        MonkeyScope.distribution_timer(random.randint, 1, 10)
        MonkeyScope.distribution_timer(random.randrange, 1, 10)
        MonkeyScope.distribution_timer(random.randrange, 1, 10, 2)
        ```
        ### Typical Script Output
        ```
        Output Analysis: Random.randint(1, 10)
        Typical Timing: 1375 ± 32 ns
        Statistics of 1024 samples:
         Minimum: 1
         Median: 6
         Maximum: 10
         Mean: 5.5185546875
         Std Deviation: 2.8455943311882343
        Distribution of 102400 samples:
         1: 10.1171875%
         2: 9.943359375%
         3: 9.9541015625%
         4: 9.8916015625%
         5: 10.1318359375%
         6: 10.0361328125%
         7: 9.8681640625%
         8: 10.16796875%
         9: 9.9052734375%
         10: 9.984375%
        
        Output Analysis: Random.randrange(1, 10)
        Typical Timing: 1219 ± 35 ns
        Statistics of 1024 samples:
         Minimum: 1
         Median: 5
         Maximum: 9
         Mean: 4.9609375
         Std Deviation: 2.531992268646342
        Distribution of 102400 samples:
         1: 11.0205078125%
         2: 11.2080078125%
         3: 11.16015625%
         4: 11.08203125%
         5: 11.1484375%
         6: 11.0791015625%
         7: 11.1923828125%
         8: 10.9375%
         9: 11.171875%
        
        Output Analysis: Random.randrange(1, 10, 2)
        Typical Timing: 1532 ± 36 ns
        Statistics of 1024 samples:
         Minimum: 1
         Median: 5
         Maximum: 9
         Mean: 5.029296875
         Std Deviation: 2.8123316447928097
        Distribution of 102400 samples:
         1: 19.984375%
         3: 19.931640625%
         5: 20.1552734375%
         7: 19.93359375%
         9: 19.9951171875%
        
        ```
        
        ### ToDo List:
        0. Improve Documentation
        1. Concoct Examples
        2. Derive Tests
        3. Refactor Inception
        
        
        ### Development Log:
        
        ##### MonkeyScope Beta 0.1.3
        - Continued Development
        
        ##### MonkeyScope Beta 0.1.2
        - Renamed to MonkeyScope
        
        ##### MonkeyTimer Beta 0.0.2
        - Changed to c++ compiler
        
        ##### MonkeyTimer Beta 0.0.1
        - Initial Project Setup
        
Keywords: MonkeyScope,distribution tests,function timer,performance testing,statistical analysis
Platform: Darwin
Platform: Linux
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Cython
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: POSIX :: Linux
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires: Cython
Requires-Python: >=3.7
Description-Content-Type: text/markdown
