Metadata-Version: 2.1
Name: datatype-tools
Version: 0.0.3
Summary: Additional methods for Python's immutable data types.
Home-page: https://github.com/edmundpf/datatype_tools
Author: Edmund Pfeil
Author-email: edmundpf@buffalo.edu
License: UNKNOWN
Description: # Data Type Tools
        [![Build Status](https://travis-ci.org/edmundpf/datatype_tools.svg?branch=master)](https://travis-ci.org/edmundpf/datatype_tools)
        > Includes useful helper methods for Python's immutable data types using the *forbiddenfruit* library.
        ## Install
        * `python3 -m pip install datatype-tools`
        ## Usage
        * Import single datatype
        	* `from datatype_tools.lib import Float`
        * Import all datatypes
        	* `from datatype_tools.lib import *`
        ## Dict Tools
        * *sort_by_val*
        	 * Sorts dictionary by values, expects dictionary with a depth of 1
        		 ``` python
        		 >>> obj = {'a': 3, 'b': 1, 'c': 2}
        		 >>> obj.sort_by_val(sort_type='int')
        		 {'b': 1, 'c': 2, 'a': 3}
        		 ```
        	* Arguments
        		* *self*: dictionary
        		* *asc*: boolean (True)
        			* Ascending order when True, Descending when False
        		* *sort_type*: string ('string')
        			* Data Type for sort, includes 'string', 'int', 'float', and 'date' types
        			* Date Type is a string representing a date
        			* Data does not need to match type i.e. a string with an int value '1'
        			* Returns original data type
        		* *date_input*: string ('mdy')
        			* Date input format
        			* i.e. 'ymd', 'mdy', etc.
        	* Returns sorted dict
        * *sort_by_key*
        	* Sorts dictionary by keys, expects dictionary with a depth of 1
        		 ``` python
        		 >>> obj = {'c': 1, 'a': 3, 'b': 2}
        		 >>> obj.sort_by_key(sort_type='string')
        		 {'a': 3, 'b': 2, 'c': 1}
        		 ```	
        	* Arguments
        		* *self*: dictionary
        		* *asc*: boolean (True)
        			* Ascending order when True, Descending when False
        		* *sort_type*: string ('string')
        			* Data Type for sort, includes 'string', 'int', 'float', and 'date' types
        			* Date Type is a string representing a date
        			* Data does not need to match type i.e. a string with an int value '1'
        			* Returns original data type
        		* *date_input*: string ('mdy')
        			* Date input format
        			* i.e. 'ymd', 'mdy', etc.
        	* Returns sorted dict
        * *nested_sort*
        	* Sorts dictionary by nested key value
        		 ``` python
        		 >>> obj = {'a': {'b': {'c': 2}}, 'b': {'b': {'c': 1}}}
        		 >>> obj.nested_sort(nested_args=[{'keys': ['b', 'c'], 'sort_type': 'int'}])
        		 {'b': {'b': {'c': 1}}, 'a': {'b': {'c': 2}}}
        		 ```
        	* Arguments
        		* *self*: dictionary
        		* *asc*: boolean (True)
        			* Ascending order when True, Descending when False
        		* *nested_args*: list
        			* List of sort argument dicts, can include multiple to sort by multiple nested keys respectively
        			* Args
        				* *keys*: list
        					* list of nested keys respectively i.e. ['b', 'c', 'd'] will sort by key ['b']['c']['d']
        				* *sort_type*: string ('string')
        					* Data Type for sort, includes 'string', 'int', 'float', and 'date' types
        					* Date Type is a string representing a date
        					* Data does not need to match type i.e. a string with an int value '1'
        					* Returns original data type
        				* *date_input*: string ('mdy')
        					* Date input format
        					* i.e. 'ymd', 'mdy', etc.
        	* Returns sorted dict
        ## List Tools
        * *sort_by_val*
        	 * Sorts list of dictionaries by values, expects dictionaries with a depth of 1
        		 ``` python
        		 >>> li = [{'a': 3}, {'b': 1}, {'c': 2}]
        		 >>> li.sort_by_val(sort_type='int')
        		 [{'b': 1}, {'c': 2}, {'a': 3}]
        		 ```
        	* Arguments
        		* *self*: list
        		* *asc*: boolean (True)
        			* Ascending order when True, Descending when False
        		* *sort_type*: string ('string')
        			* Data Type for sort, includes 'string', 'int', 'float', and 'date' types
        			* Date Type is a string representing a date
        			* Data does not need to match type i.e. a string with an int value '1'
        			* Returns original data type
        		* *date_input*: string ('mdy')
        			* Date input format
        			* i.e. 'ymd', 'mdy', etc.
        	* Returns sorted list
        * *sort_by_key*
        	* Sorts list of dictionaries by keys, expects dictionaries with a depth of 1
        		 ``` python
        		 >>> li = [{'c': 1}, {'a': 3}, {'b': 2}]
        		 >>> li.sort_by_key(sort_type='string')
        		 [{'a': 3}, {'b': 2}, {'c': 1}]
        		 ```	
        	* Arguments
        		* *self*: list
        		* *asc*: boolean (True)
        			* Ascending order when True, Descending when False
        		* *sort_type*: string ('string')
        			* Data Type for sort, includes 'string', 'int', 'float', and 'date' types
        			* Date Type is a string representing a date
        			* Data does not need to match type i.e. a string with an int value '1'
        			* Returns original data type
        		* *date_input*: string ('mdy')
        			* Date input format
        			* i.e. 'ymd', 'mdy', etc.
        	* Returns sorted list
        * *sort_by_key_val*
        	* Sorts list of dictionaries by specific key value, expects dictionaries with a depth of 1
        		 ``` python
        		 >>> li = [{'a': 1, 'b': 2}, {'a': 2, 'b': 1}]
        		 >>> li.sort_by_key_val(key='b', sort_type='string')
        		 [{'a': 2, 'b': 1}, {'a': 1, 'b': 2}]
        		 ```	
        	* Arguments
        		* *self*: list
        		* *asc*: boolean (True)
        			* Ascending order when True, Descending when False
        		* *sort_type*: string ('string')
        			* Data Type for sort, includes 'string', 'int', 'float', and 'date' types
        			* Date Type is a string representing a date
        			* Data does not need to match type i.e. a string with an int value '1'
        			* Returns original data type
        		* *date_input*: string ('mdy')
        			* Date input format
        			* i.e. 'ymd', 'mdy', etc.
        	* Returns sorted list
        * *nested_sort*
        	* Sorts list of dictionaries by nested key value
        		 ``` python
        		 >>> li = [{'a': {'b': {'c': 2}}}, {'b': {'b': {'c': 1}}}]
        		 >>> li.nested_sort(nested_args=[{'keys': ['b', 'c'], 'sort_type': 'int'}])
        		 [{'b': {'b': {'c': 1}}}, {'a': {'b': {'c': 2}}}]
        		 ```
        	* Arguments
        		* *self*: list
        		* *asc*: boolean (True)
        			* Ascending order when True, Descending when False
        		* *nested_args*: list
        			* List of sort argument dicts, can include multiple to sort by multiple nested keys respectively
        			* Args
        				* *keys*: list
        					* list of nested keys respectively i.e. ['b', 'c', 'd'] will sort by key ['b']['c']['d']
        				* *sort_type*: string ('string')
        					* Data Type for sort, includes 'string', 'int', 'float', and 'date' types
        					* Date Type is a string representing a date
        					* Data does not need to match type i.e. a string with an int value '1'
        					* Returns original data type
        				* *date_input*: string ('mdy')
        					* Date input format
        					* i.e. 'ymd', 'mdy', etc.
        	* Returns sorted list
        ## String Tools
        * *replace_multiple*
        	* Replace multiple substrings or characters in a string with their respective replacements
        		``` python
        		>>> 'The Apple is Red'.replace_multiple({'Apple': 'Grass', 'Red': 'Green'})
        		'The Grass is Green'
        		```
        	* Arguments
        		* *self*: string
        		* *dictionary*: dict
        			* dict keys are the values to replace, and key values will be their respective replacements in the string
        	* Returns string with replacements
        * *format_date*
        	* Formats string representing date in multiple formats
        		``` python
        		>>> '1/01/75'.format_date(date_input='mdy', date_format='mmddyyyy', delimiter='-')
        		'01-01-1975'
        		```
        	* Arguments
        		* *self*: string
        		* *date_input*: string ('mdy')
        			* date input order, i.e. 'mdy' for month, day, year, and 'ymd' for year, month, day
        		* *date_format* string ('mmddyy')
        			* date output format, the number of each letter correspond to date digits, i.e. a date with 'mmddyyyy' will have 4 digits for year while a date with 'mmddyy' will only have 2 digits for year
        		* delimiter: string ('')
        			* delimiter for date output, i.e. '/' yields 01/01/2019
        	* Returns formatted date string
        * *find_nth*
        	* Find nth occurence of substring in string
        		``` python
        		>>> 'apple picking'.find_nth('p', 3)
        		11
        		```
        	* Arguments
        		* *self*: string
        		* *string*: string
        			* substring to search in string
        		* *n*: int
        			* 1-based occurence number of substring to find in string.
        	* Returns int index
        ## Float Tools
        * *round*
        	* Round value to n decimal places (scientific rounding, fixes python rounding errors)
        		``` python
        		>>> 4.055.round(2)
        		4.06
        		>>> 4.054(2)
        		4.05
        		```
        	* Arguments
        		* *self*: float
        		* *places*: int (2)
        			* Number of places to round to
        	* Returns rounded float
        
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
