Metadata-Version: 2.1
Name: generallibrary
Version: 2.5.5
Summary: Random useful code categorized into modules.
Home-page: https://github.com/ManderaGeneral/generallibrary
Author: Rickard "Mandera" Abraham
License: MIT
Platform: UNKNOWN
Classifier: Operating System :: Microsoft :: Windows :: Windows 7
Classifier: Operating System :: Microsoft :: Windows :: Windows 10
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: License :: OSI Approved :: MIT License
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >= 3.8, < 3.10
Description-Content-Type: text/markdown
Requires-Dist: packaging
Requires-Dist: pyperclip
Requires-Dist: pandas
Requires-Dist: tabulate
Provides-Extra: full


[![PyPI version shields.io](https://img.shields.io/pypi/v/generallibrary.svg)](https://pypi.org/project/generallibrary/)
[![PyPI pyversions](https://img.shields.io/pypi/pyversions/generallibrary.svg)](https://pypi.python.org/pypi/generallibrary/)
[![Generic badge](https://img.shields.io/badge/platforms-Windows%20|%20Ubuntu%20|%20MacOS-blue.svg)](https://shields.io/)
[![workflow Actions Status](https://github.com/ManderaGeneral/generallibrary/workflows/workflow/badge.svg)](https://github.com/ManderaGeneral/generallibrary/actions)
[![Total alerts](https://img.shields.io/lgtm/alerts/g/ManderaGeneral/generallibrary.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/ManderaGeneral/generallibrary/alerts/)

# Package: generallibrary
Random useful code categorized into modules.

## Installation
```
pip install generallibrary
```

## Attributes of module generallibrary
| Module    | Name                                                    | Type     | Attributes   | Explanation                                                                                   |
|:----------|:--------------------------------------------------------|:---------|:-------------|:----------------------------------------------------------------------------------------------|
| code      | [CodeGen](#Attributes-of-class-CodeGen)                 | class    | 4            | Tool to help with printing code line by line.                                                 |
| code      | args_to_attrs                                           | function |              | Print code for a dunder init method to store all arguments as attributes.                     |
| code      | attributes_to_markdown                                    | function |              | Convert attributes of a given obj to a readme string recursively.                             |
| code      | clipboard_copy                                          | function |              | Copy a string to clipboard.                                                                   |
| code      | clipboard_get                                           | function |              | Get clipboard string.                                                                         |
| code      | debug                                                   | function |              | Easily call eval() on an arbitrary amount of evaluation strings.                              |
| code      | print_link                                              | function |              | Print a link in PyCharm to a line in file.                                                    |
| code      | print_link_to_obj                                       | function |              | Print a link in PyCharm to a module, function, class, method or property.                     |
| diagram   | [TreeDiagram](#Attributes-of-class-TreeDiagram)         | class    | 18           | Saveable tree diagram with optional storage.                                                  |
| functions | EmptyContext                                            | class    |              | Class for an empty context manager.                                                           |
| functions | [Operators](#Attributes-of-class-Operators)             | class    | 2            | Automatic operator definitions for classes.                                                   |
| functions | [SigInfo](#Attributes-of-class-SigInfo)                 | class    | 21           | Handles a callable along with it's parameters.                                                |
| functions | calculate                                               | function |              | Automatically fills variables of a formula in a string then evaluates it.                     |
| functions | classproperty                                           | class    |              | Just like @property but for a class method.                                                   |
| functions | deco_cache                                              | function |              | Enable caching for a method or function.                                                      |
| functions | deco_cast_parameters                                    | function |              | Decorator to make sure `path` parameter is a Path.                                            |
| functions | deco_default_self_args                                  | function |              | As an alternative to setting each and every parameter's default value to `None` for a method. |
| functions | defaults                                                | function |              | Set default values of a given dictionary, option to overwrite None values.                    |
| iterables | [SortedList](#Attributes-of-class-SortedList)           | class    | 2            | Controls a sorted list in ascending order.                                                    |
| iterables | addToDictInDict                                         | function |              | Add a key-value argument to a dict inside a dict, automatically creates dict.                 |
| iterables | addToListInDict                                         | function |              | Add a value to a list inside a dictionary, automatically creates list.                        |
| iterables | combine                                                 | function |              | Create a list of dicts containing every unique combination from given object (Can be tuples). |
| iterables | depth                                                   | function |              | Get depth of an object by recursively checking the first value.                               |
| iterables | dictFirstValue                                          | function |              | Get first 'random' value of a dictionary or None.                                             |
| iterables | exclusive                                               | function |              | Returns a new dictionary without keys.                                                        |
| iterables | getFreeIndex                                            | function |              | Get the first free integer index of dictionary starting at 0.                                 |
| iterables | getIterable                                             | function |              | Returns the iterable values of a tuple, list or dict. Otherwise `False`.                      |
| iterables | getRows                                                 | function |              | Get rows as lists in list from a tuple, list or dict (where it discards keys).                |
| iterables | inclusive                                               | function |              | Returns a new dictionary without keys not in keys.                                            |
| iterables | isIterable                                              | function |              | See if an obj is a tuple, list or dict.                                                       |
| iterables | iterFirstValue                                          | function |              | Get first 'random' value of an iterable or None.                                              |
| iterables | joinWithStr                                             | function |              | Like str.join() but it casts the values to strings first, also takes dict.                    |
| iterables | remove_duplicates                                       | function |              | Remove all duplicates in a list.                                                              |
| iterables | uniqueObjInList                                         | function |              | Controls whether a unique object should be present in a list.                                 |
| object    | attributes                                              | function |              | Get attributes from a Module or Class with a lot of optional flags for filtering.             |
| object    | getsize                                                 | function |              | Get a sum of sizes from an object and it's members in bytes.                                  |
| object    | initBases                                               | function |              | Decorator function for class to automatically initalize all inherited classes.                |
| time      | [Timer](#Attributes-of-class-Timer)                     | class    | 3            | Callable class to easily time things and print.                                               |
| time      | sleep                                                   | function |              | Normal sleep function from time package.                                                      |
| types     | [HierarchyStorer](#Attributes-of-class-HierarchyStorer) | class    | 1            | A metaclass that automatically stores references to all inheriters.                           |
| types     | getBaseClassNames                                       | function |              | Get all base classes from an object's class.                                                  |
| types     | getBaseClasses                                          | function |              | Get all base classes from an object's class.                                                  |
| types     | hasMethod                                               | function |              | Return whether an object has a specific callabale attribute.                                  |
| types     | strToDynamicType                                        | function |              | Try to convert a string to bool, None, int or float.                                          |
| types     | typeChecker                                             | function |              | Check type(s) of an object.                                                                   |
| values    | clamp                                                   | function |              | Return clamped value between minimum and maximum.                                             |
| values    | confineTo                                               | function |              | Confine this value, but unlike clamp it subtracts diff * n to create an 'infinite' effect.    |
| values    | doubleRectify                                           | function |              | Return 0 if it's between min and max, otherwise it returns difference from edge of range.     |
| values    | inrange                                                 | function |              | Return whether value is between minimum and maximum.                                          |
| values    | rectify                                                 | function |              | Return 0 if it's below threshold, otherwise difference.                                       |
| values    | sign                                                    | function |              | Get sign value based on threshold that defaults to 0.                                         |
| versions  | [VerInfo](#Attributes-of-class-VerInfo)                 | class    | 23           | Get version info regarding current Python, OS and conditional functionalities.                |
| versions  | get_installed_packages                                  | function |              | Get a list of all installed packages as strings.                                              |
| versions  | package_is_installed                                    | function |              | Returns whether a package is installed.                                                       |


#### Attributes of class CodeGen
| Module   | Name     | Type     | Explanation                                                                  |
|:---------|:---------|:---------|:-----------------------------------------------------------------------------|
|          | indent   | variable | Variable of type 'str'.                                                      |
| code     | add      | method   | Add a new line.                                                              |
| code     | generate | method   | Generate a list of formatted code lines by iterating stored _Line instances. |
| code     | print    | method   | Generate and print copyable code.                                            |


#### Attributes of class HierarchyStorer
| Module   | Name   | Type     | Explanation                           |
|:---------|:-------|:---------|:--------------------------------------|
|          | mro    | variable | Variable of type 'method_descriptor'. |


#### Attributes of class Operators
| Module    | Name                    | Type     | Explanation                                      |
|:----------|:------------------------|:---------|:-------------------------------------------------|
|           | comparisons             | variable | Variable of type 'dict'.                         |
| functions | deco_define_comparisons | method   | Define all comparision operators for this class. |


#### Attributes of class SigInfo
| Module    | Name                           | Type     | Explanation                                                                                   |
|:----------|:-------------------------------|:---------|:----------------------------------------------------------------------------------------------|
| functions | callableObject                 | property | Propertize to protect but still have public.                                                  |
| functions | class_from_callable            | method   | Return class that owns given method, or given callable from initiating SigInfo.               |
| functions | defaults                       | property | Get dict of default values.                                                                   |
| functions | getIndexFromName               | method   | Get index from name if name exists, else None.                                                |
| functions | leadingArgNames                | property | Get names leading args that don't have default value.                                         |
| functions | names                          | property | Get list of parameter names.                                                                  |
| functions | namesRequired                  | property | Get list of parameter that have to be defined, i.e. non-packed without default value.         |
| functions | namesWithoutDefaults           | property | Get list of parameter names except those ones that have a default value.                      |
| functions | namesWithoutPacked             | property | Get list of parameter names except *args or **kwargs.                                         |
| functions | packedArgs                     | property | Return a list of values in packed args parameter, empty list if there are no packed args.     |
| functions | packedArgsName                 | property | Get name of packed *args or None.                                                             |
| functions | packedKwargs                   | property | Return a dict of values in packed kwargs parameter, empty dict if there are no packed kwargs. |
| functions | packedKwargsName               | property | Get name of packed *kwargs or None.                                                           |
| functions | parameters                     | property | Get list of inspect parameter objects.                                                        |
| functions | positionalArgNames             | property | Get list of parameter names that CAN take a positional argument.                              |
| functions | positionalOnlyArgNames         | property | Get list of parameter names that can ONLY take a positional argument.                         |
| functions | positionalOnlyOppositeArgNames | property | Get list of parameter names that CAN take a keyword argument.                                 |
| functions | positionalOppositeArgNames     | property | Get list of parameter names that can ONLY take a keyword argument.                            |
| functions | positional_extra               | property | Get a list of the positional parameter names, including self or cls.                          |
| functions | unpackedArgs                   | property | Extract a list of all positional ONLY parameters for callable.                                |
| functions | unpackedKwargs                 | property | Extract a dict of key words that callable can take.                                           |


#### Attributes of class SortedList
| Module    | Name   | Type   | Explanation                      |
|:----------|:-------|:-------|:---------------------------------|
| iterables | add    | method | Add objects to sorted list.      |
| iterables | remove | method | Remove objects from sorted list. |


#### Attributes of class Timer
| Module   | Name    | Type   | Explanation                                          |
|:---------|:--------|:-------|:-----------------------------------------------------|
| time     | print   | method | Print seconds passed.                                |
| time     | reset   | method | Reset and start timer.                               |
| time     | seconds | method | Get seconds passed since timer started or was reset. |


#### Attributes of class TreeDiagram
| Module   | Name               | Type     | Explanation                                                           |
|:---------|:-------------------|:---------|:----------------------------------------------------------------------|
|          | data_keys          | variable | Variable of type 'list'.                                              |
| diagram  | all_parents        | method   | Get a list of all parents recursively.                                |
| diagram  | copy_to            | method   | Copy this Node along with it's children by using save and load.       |
| diagram  | data_keys_add      | method   | Define what attributes to keep track of automatically in __setattr__. |
| diagram  | get_children       | method   | Get a list of all children this Node has.                             |
| diagram  | get_parent         | method   | Get this Node's parent.                                               |
| diagram  | hook_add_child     | method   | New child hook.                                                       |
| diagram  | hook_create_post   | method   | Post-creation hook.                                                   |
| diagram  | hook_create_pre    | method   | Pre-creation hook.                                                    |
| diagram  | hook_lose_child    | method   | Lost child hook.                                                      |
| diagram  | hook_lose_parent   | method   | Lost parent hook.                                                     |
| diagram  | hook_new_parent    | method   | New parent hook.                                                      |
| diagram  | hook_remove        | method   | Remove hook.                                                          |
| diagram  | hook_set_attribute | method   | Attribute set hook.                                                   |
| diagram  | load               | method   | Create a new Tree from a dictionary save.                             |
| diagram  | remove             | method   | Remove this Node.                                                     |
| diagram  | save               | method   | Recursively save by returning a new dictionary.                       |
| diagram  | set_parent         | method   | Set a new parent for this Node.                                       |


#### Attributes of class VerInfo
| Module   | Name                 | Type     | Explanation                                                                                  |
|:---------|:---------------------|:---------|:---------------------------------------------------------------------------------------------|
| versions | caseSensitive        | property | Get whether current OS is case sensitive.                                                    |
| versions | java                 | property | Get whether running on Java.                                                                 |
| versions | linux                | property | Get whether running on Linux.                                                                |
| versions | mac                  | property | Get whether running on Mac.                                                                  |
| versions | os                   | property | Return name of running operating system.                                                     |
| versions | pathDelimiter        | property | Get current OS's path delimiter.                                                             |
| versions | pathRootHasColon     | property | Get whether current OS defines path root with a colon in the first part.                     |
| versions | pathRootIsDelimiter  | property | Get whether current OS defines path root as a starting delimiter.                            |
| versions | positionalArgument   | property | Get whether current python version supports positional arguments.                            |
| versions | pythonAlpha          | property | Return whether release level is 'alpha'.                                                     |
| versions | pythonBeta           | property | Return whether release level is 'beta'.                                                      |
| versions | pythonCandidate      | property | Return whether release level is 'candidate'.                                                 |
| versions | pythonFinal          | property | Return whether release level is 'final'.                                                     |
| versions | pythonMajor          | property | Return first digit of python version.                                                        |
| versions | pythonMicro          | property | Return third digit of python version.                                                        |
| versions | pythonMinor          | property | Return second digit of python version.                                                       |
| versions | pythonReleaseKeyword | property | Return keyword for release level such as 'a', 'b', 'rc' or '' for final.                     |
| versions | pythonReleaseLevel   | property | Return release level of python version.                                                      |
| versions | pythonSerial         | property | Return serial number of python version. I think it's only used for non-final release levels. |
| versions | pythonSerialString   | property | Return serial number of python version as a string, should be empty if it's 0.               |
| versions | pythonString         | property | Return python version as '3.8.5' or '3.8.5a4' if alpha release 4.                            |
| versions | pythonVersion        | property | Returns a PythonVersion object that can be used to compare directly to an int, float or str. |
| versions | windows              | property | Get whether running on Windows.                                                              |

## Usage example
```python
from generallibrary import clamp
print(clamp(-3.2, -1, 1))
# >>> -1
```

## Releases
#### generallibrary 2.1
 * Added properties to `VerInfo()` for conditional functionalities
     * caseSensitive
     * positionalArgument
     * pathDelimiter
     * pathRootIsDelimiter
     * pathRootHasColon

#### generallibrary 2.0
 * Put all features inside `__init__.py` to make importing easier
 * Added Operators
 * Added VerInfo
 * Added SigInfo
 * Changed addToListInDict to allow *args and returns entire dict
 * Added addToDictInDict
 * Added initCaller decorator
 * Added includeObject parameter to getBaseClasses
 * Added includeDefaulted parameter to getSignatureNames
 * Added combine
 * Added uniqueObjInList

## Todo
 * Redo iterables.py, namely getIterable() and isIterable(), it's a mess
 * Handle local and pre-releases for versions.VerInfo
 * Make SigInfo's callableObject changeable and store all variables when setting them
 * DuckTyping class for versions.py
 * PackageVersion class for versions.py
 * Change getLocalFeaturesAsMD to allow cls or even obj and also *args.

[Go to installation](#Installation)

