Package: fastutils
fastutilsCollection of simple utils.InstallpipinstallfastutilsTested With Python2.73.33.43.53.63.73.83.93.103.11Installed utilsfastutils.aesutilsAES_BLOCK_SIZEdecryptdecrypt_and_base64decodedecrypt_and_safeb64decodedecrypt_and_unhexlifyencryptencrypt_and_base64encodeencrypt_and_hexlifyencrypt_and_safeb64encodeget_aes_modeget_md5_keyget_mysql_aes_keyget_padding_remove_methodget_raw_aes_keyget_sha1prng_keypadding_ansix923padding_iso10126padding_pkcs5remove_padding_ansix923remove_padding_iso10126remove_padding_pkcs5fastutils.cacheutilsReqIdCachecacheget_cached_valuesimple_cachefastutils.cipherutilsAesCipherAesCtrCipherAesGcmCipherBase64EncoderCipherBaseDecryptFailedEncoderBaseHexlifyEncoderIvCipherIvfCipherMappingCipherMysqlAesCipherRawDataEncoderRawKeyAesCipherRsaCipherS12CipherS1CipherS2CipherSafeBase64EncoderUtf8Encoderaes_padding_ansix923aes_padding_iso10126aes_padding_pkcs5get_aes_modemd5_keymysql_aes_keysha1prng_keyfastutils.dictutilsHttpHeadersDictObjectattrgetorsetattrsetchangechangesdeep_mergedifffix_objectignore_none_itemprefix_keyselectto_objecttouchupdatefastutils.fsutilsTemporaryFilecopyexpandfile_content_replacefilecopyfirst_exists_fileget_application_config_filepathget_application_config_pathsget_safe_filenameget_size_deviationget_size_displayget_swap_filenameget_temp_workspaceget_unit_sizeinfoload_application_configmkdirmovepathjoinreadfilerenamermsafe_writesize_unit_namessize_unit_upper_limittouchtreecopywritefastutils.funcutilsBunchCallableChainableProxycall_with_injectchainclasspropertyget_all_builtin_exceptionsget_builtins_dictget_class_nameget_default_valuesget_inject_paramsget_method_helpget_method_signatureinspectis_a_classisclassmcall_with_injectsignaturetry_again_on_errorfastutils.hashutilsBase64ResultEncoderBlake2BHexlifyPasswordHashBlake2BPbkdf2PasswordHashBlake2BPbkdf2PasswordHashColonBlake2BSimplePasswordHashBlake2BSimpleSaltPasswordHashBlake2SHexlifyPasswordHashBlake2SPbkdf2PasswordHashBlake2SPbkdf2PasswordHashColonBlake2SSimplePasswordHashBlake2SSimpleSaltPasswordHashDigestResultEncoderHexlifyPasswordHashBaseHexlifyResultEncoderMd5HexlifyPasswordHashMd5Pbkdf2PasswordHashMd5Pbkdf2PasswordHashColonMd5SimplePasswordHashMd5SimpleSaltPasswordHashPasswordHashMethodBasePasswordHashMethodNotSupportErrorPbkdf2PasswordHashBaseResultEncoderBaseSha1HexlifyPasswordHashSha1Pbkdf2PasswordHashSha1Pbkdf2PasswordHashColonSha1SimplePasswordHashSha1SimpleSaltPasswordHashSha224HexlifyPasswordHashSha224Pbkdf2PasswordHashSha224Pbkdf2PasswordHashColonSha224SimplePasswordHashSha224SimpleSaltPasswordHashSha256HexlifyPasswordHashSha256Pbkdf2PasswordHashSha256Pbkdf2PasswordHashColonSha256SimplePasswordHashSha256SimpleSaltPasswordHashSha384HexlifyPasswordHashSha384Pbkdf2PasswordHashSha384Pbkdf2PasswordHashColonSha384SimplePasswordHashSha384SimpleSaltPasswordHashSha3_224HexlifyPasswordHashSha3_224Pbkdf2PasswordHashSha3_224Pbkdf2PasswordHashColonSha3_224SimplePasswordHashSha3_224SimpleSaltPasswordHashSha3_256HexlifyPasswordHashSha3_256Pbkdf2PasswordHashSha3_256Pbkdf2PasswordHashColonSha3_256SimplePasswordHashSha3_256SimpleSaltPasswordHashSha3_384HexlifyPasswordHashSha3_384Pbkdf2PasswordHashSha3_384Pbkdf2PasswordHashColonSha3_384SimplePasswordHashSha3_384SimpleSaltPasswordHashSha3_512HexlifyPasswordHashSha3_512Pbkdf2PasswordHashSha3_512Pbkdf2PasswordHashColonSha3_512SimplePasswordHashSha3_512SimpleSaltPasswordHashSha512HexlifyPasswordHashSha512Pbkdf2PasswordHashSha512Pbkdf2PasswordHashColonSha512SimplePasswordHashSha512SimpleSaltPasswordHashShaHexlifyPasswordHashShaPbkdf2PasswordHashShaPbkdf2PasswordHashColonShaSimplePasswordHashShaSimpleSaltPasswordHashSimplePasswordHashBaseSimpleSaltPasswordHashBaseSm3HexlifyPasswordHashSm3Pbkdf2PasswordHashSm3Pbkdf2PasswordHashColonSm3SimplePasswordHashSm3SimpleSaltPasswordHashXxh128HexlifyPasswordHashXxh128Pbkdf2PasswordHashXxh128Pbkdf2PasswordHashColonXxh128SimplePasswordHashXxh128SimpleSaltPasswordHashXxh32HexlifyPasswordHashXxh32Pbkdf2PasswordHashXxh32Pbkdf2PasswordHashColonXxh32SimplePasswordHashXxh32SimpleSaltPasswordHashXxh64HexlifyPasswordHashXxh64Pbkdf2PasswordHashXxh64Pbkdf2PasswordHashColonXxh64SimplePasswordHashXxh64SimpleSaltPasswordHashalgorithms_availableget_blake2bget_blake2b_base64get_blake2b_digestget_blake2b_hexdigestget_blake2sget_blake2s_base64get_blake2s_digestget_blake2s_hexdigestget_file_blake2bget_file_blake2b_base64get_file_blake2b_digestget_file_blake2b_hexdigestget_file_blake2sget_file_blake2s_base64get_file_blake2s_digestget_file_blake2s_hexdigestget_file_hashget_file_hash_base64get_file_hash_hexdigestget_file_hash_resultget_file_md5get_file_md5_base64get_file_md5_digestget_file_md5_hexdigestget_file_shaget_file_sha1get_file_sha1_base64get_file_sha1_digestget_file_sha1_hexdigestget_file_sha224get_file_sha224_base64get_file_sha224_digestget_file_sha224_hexdigestget_file_sha256get_file_sha256_base64get_file_sha256_digestget_file_sha256_hexdigestget_file_sha384get_file_sha384_base64get_file_sha384_digestget_file_sha384_hexdigestget_file_sha3_224get_file_sha3_224_base64get_file_sha3_224_digestget_file_sha3_224_hexdigestget_file_sha3_256get_file_sha3_256_base64get_file_sha3_256_digestget_file_sha3_256_hexdigestget_file_sha3_384get_file_sha3_384_base64get_file_sha3_384_digestget_file_sha3_384_hexdigestget_file_sha3_512get_file_sha3_512_base64get_file_sha3_512_digestget_file_sha3_512_hexdigestget_file_sha512get_file_sha512_base64get_file_sha512_digestget_file_sha512_hexdigestget_file_sha_base64get_file_sha_digestget_file_sha_hexdigestget_file_sm3get_file_sm3_base64get_file_sm3_digestget_file_sm3_hexdigestget_file_xxh128get_file_xxh128_base64get_file_xxh128_digestget_file_xxh128_hexdigestget_file_xxh32get_file_xxh32_base64get_file_xxh32_digestget_file_xxh32_hexdigestget_file_xxh64get_file_xxh64_base64get_file_xxh64_digestget_file_xxh64_hexdigestget_hashget_hash_base64get_hash_hexdigestget_hash_resultget_md5get_md5_base64get_md5_digestget_md5_hexdigestget_password_hashget_password_hash_methodsget_pbkdf2_blake2bget_pbkdf2_blake2sget_pbkdf2_hmacget_pbkdf2_md5get_pbkdf2_shaget_pbkdf2_sha1get_pbkdf2_sha224get_pbkdf2_sha256get_pbkdf2_sha384get_pbkdf2_sha3_224get_pbkdf2_sha3_256get_pbkdf2_sha3_384get_pbkdf2_sha3_512get_pbkdf2_sha512get_pbkdf2_sm3get_pbkdf2_xxh128get_pbkdf2_xxh32get_pbkdf2_xxh64get_salted_hash_base64get_shaget_sha1get_sha1_base64get_sha1_digestget_sha1_hexdigestget_sha224get_sha224_base64get_sha224_digestget_sha224_hexdigestget_sha256get_sha256_base64get_sha256_digestget_sha256_hexdigestget_sha384get_sha384_base64get_sha384_digestget_sha384_hexdigestget_sha3_224get_sha3_224_base64get_sha3_224_digestget_sha3_224_hexdigestget_sha3_256get_sha3_256_base64get_sha3_256_digestget_sha3_256_hexdigestget_sha3_384get_sha3_384_base64get_sha3_384_digestget_sha3_384_hexdigestget_sha3_512get_sha3_512_base64get_sha3_512_digestget_sha3_512_hexdigestget_sha512get_sha512_base64get_sha512_digestget_sha512_hexdigestget_sha_base64get_sha_digestget_sha_hexdigestget_sm3get_sm3_base64get_sm3_digestget_sm3_hexdigestget_xxh128get_xxh128_base64get_xxh128_digestget_xxh128_hexdigestget_xxh32get_xxh32_base64get_xxh32_digestget_xxh32_hexdigestget_xxh64get_xxh64_base64get_xxh64_digestget_xxh64_hexdigestis_the_same_hash_methodmethod_loadnewpbkdf2_hmacregister_hexlify_password_hashregister_password_hash_methodregister_pbkdf2_password_hashregister_simple_password_hashregister_simple_salt_password_hashsetup_hash_method_loadervalidate_password_hashvalidate_pbkdf2_blake2bvalidate_pbkdf2_blake2svalidate_pbkdf2_hmacvalidate_pbkdf2_md5validate_pbkdf2_shavalidate_pbkdf2_sha1validate_pbkdf2_sha224validate_pbkdf2_sha256validate_pbkdf2_sha384validate_pbkdf2_sha3_224validate_pbkdf2_sha3_256validate_pbkdf2_sha3_384validate_pbkdf2_sha3_512validate_pbkdf2_sha512validate_pbkdf2_sm3validate_pbkdf2_xxh128validate_pbkdf2_xxh32validate_pbkdf2_xxh64fastutils.httputilsdownloadget_sitenameget_url_filenameget_url_save_pathget_urlinfourlparsefastutils.imageutilsget_base64imageget_image_bytesparse_base64imageresizeresize_to_fixed_heightresize_to_fixed_widthfastutils.jsonutilsSimpleJsonEncodermake_simple_json_encoderregister_global_encodersimple_json_dumpsfastutils.listutilsappend_newchunkclean_nonecomparecompare_executefirstgroupignore_none_elementint_list_to_bytesis_orderedlist2dictpadreplacetopological_sorttopological_testuniquefastutils.logutilsget_console_handlerget_file_handlerget_simple_configsetupfastutils.msgpackutilsEmptyMsgDataMsgMsgDecryptFailedWrongMsgTypedumpsloadsfastutils.nameutilsget_last_namesget_random_nameget_suggest_first_namesguess_lastnameguess_surnamefastutils.numericutils_infinitybinary_decomposebytes2intsdecimal_change_basefloat_splitfrom_bytesget_float_partinfinityint2bytesints2bytesis_infinityninfinitypinfinityfastutils.pinyinutilsto_pinyinfastutils.randomutilsLcg31RandomRandomUuidGeneratorchoicesget_password_seed32uuid1uuid3uuid4uuid5fastutils.rsautilsdecryptencryptexport_keyget_hash_methodload_private_keyload_public_keyload_public_key_from_private_keynewkeyssignverifyfastutils.strutilsBAIBASE64_CHARSHEXLIFY_CHARSQIANSHIStrUtilsURLSAFEB64_CHARSWANYIbinarifybytes2intscamelcaptital_numberchar_force_to_intchunkcleancombinationscombinations2decodabledefault_cn_digitsdefault_cn_float_placesdefault_cn_negativedefault_cn_placesdefault_cn_yuandefault_encodingdefault_encodingsdefault_quotesdefault_random_string_choicesdo_cleanencodableforce_floatforce_intforce_numbericforce_type_toformat_with_mappingget_all_substringsget_base64imageget_image_byteshtml_element_css_appendint2bytesints2bytesis_base64_decodableis_chinese_characteris_hex_digitsis_str_composed_by_the_choicesis_unhexlifiableis_urlsafeb64_decodableis_uuidjoin_linesno_mappingnone_to_empty_stringparse_base64imagerandom_stringremove_prefixremove_suffixreversesimple_cn_yuansimplesplitsmart_get_binary_datasplitsplit2str_composed_bystringlist_appendstrip_stringsubstringstext_display_lengthtext_display_shortenunbinarifyunquotewholestripfastutils.sysutilsdefault_timeout_killexecute_scriptget_current_thread_idget_daemon_application_pidget_node_ipget_random_script_nameget_worker_idget_worker_infopsutil_timeout_killfastutils.threadutilsConcurrentLimitJobQueueCounterFutureJobExecuteTimeoutJobQueueJobResultNotSetLoopIdleServiceServiceStopServiceTerminateSimpleConsumerSimpleProducerSimpleProducerConsumerServerSimpleServerStartOnTerminatedServicefastutils.treeutilsSimpleRouterTreebuild_treeprint_treeprint_tree_callbacktree_walkfastutils.typingutilsNumberSTRING_ENCODINGSregister_global_castersmart_castHelpSee pydoc for help.python3 -m pydoc -b # start pydocUsage Examplesfastutils.strutils.chunkfrom fastutils import strutils

In [33]: strutils.chunk('hello', 3)
Out[33]: ['hel', 'lo']

In [34]: strutils.chunk('hello', 6)
Out[34]: ['hello']

In [35]: strutils.chunk('hello', 5)
Out[35]: ['hello']fastutils.strutils.get_all_substringsfrom fastutils import strutils

In [4]: strutils.get_all_substrings('a')
Out[4]: {'a'}

In [5]: strutils.get_all_substrings('ab')
Out[5]: {'a', 'ab', 'b'}

In [6]: strutils.get_all_substrings('abc')
Out[6]: {'a', 'ab', 'abc', 'b', 'bc', 'c'}

In [7]: strutils.get_all_substrings('abcd')
Out[7]: {'a', 'ab', 'abc', 'abcd', 'b', 'bc', 'bcd', 'c', 'cd', 'd'}fastutils.listutils.list2dictIn [1]: from fastutils import listutils

In [2]: listutils.list2dict([1,2,3], ['a', 'b'])
Out[2]: {'a': 1, 'b': 2}

In [3]: listutils.list2dict([1,2,3], ['a', 'b', 'c'])
Out[3]: {'a': 1, 'b': 2, 'c': 3}

In [4]: listutils.list2dict([1,2,3], ['a', 'b', 'c', 'd'])
Out[4]: {'a': 1, 'b': 2, 'c': 3, 'd': None}fastutils.listutils.compare_executeExample 1from fastutils import listutils

old_list = [1,2,3]
new_list = [2,3,4]

created, deleted, changed = listutils.compare_execute(
      old_data=old_list,
      new_data=new_list,
      create_callback=lambda key, data: data,
      delete_callback=lambda key, instance: instance,
      change_callback=lambda key, instance, data: instance,
      old_key=lambda x: x
)
assert created == [4]
assert deleted == [1]
assert changed == [2, 3]Example 2from fastutils import listutils

old_list = [1,2,3]
new_list = [3,4,5]

def do_create(key, data):
   if data > 4:
         return data
   else:
         return None

def do_delete(key, instance):
   if instance > 1:
         return instance
   else:
         return None

def do_change(key, instance, data):
   return None

created, deleted, changed = listutils.compare_execute(
   old_data=old_list,
   new_data=new_list,
   create_callback=do_create,
   delete_callback=do_delete,
   change_callback=do_change,
   old_key=lambda x: x
)
assert created == [5]
assert deleted == [2]
assert changed == []Releasesv0.43.4Fix rsautils.load_public_key in py2.7.Add log_to_console and log_to_file option in logutils.get_simple_config.v0.43.3Improve rsautils.load_public_key to load NON-PEM public key.v0.43.2Improve rsautils.load_private_key to load NON-PEM private key.v0.43.1Unit test problems fix.Add cipherutils.AesCtrCipher.Add cipherutils.AesGcmCipher.v0.43.0Doc Update.Add python_requires in setup.Fix sysutils.get_worker_info problem in docker env.v0.42.14Add fastutils.listutils.compare_execute.Add fastutils.dictutils.Object.fix to fix the Object instance if you added a dict thing to the Objects' list/dict item.v0.42.13Add fastutils.strutils.get_all_substrings.Add fastutils.listutils.list2dict.v0.42.11Fix fastutils.cipherutils.CipherBase incompatibility problem.v0.43.9doc update.v0.42.8Fix threadutils.Counter incr/decr result value duplicate problem.v0.42.7Fix logutils formatter missing problem.v0.42.6Add filelike-methods for fsutils.TemporaryFile.v0.42.5Add TemporaryFile.open and TemporaryFile.close methods.v0.42.4Change rsautils.encrypt default envelope method to PKCS1_OAEP, and rsautils.decrypt support both PKCS1_OAEP and PKCS1_v1_5 methods.Add rsautils.sign and resautils.verify methods.v0.42.3Add console_handler_class and file_handler_class parameters for function logutils.get_simple_config.Add simple and simple_json formatter in logutils.get_simple_config.v0.42.2Add sysutils.get_worker_info.Fix logutils' implicit imports problem.Fix funcutils.classproperty.v0.42.1Fix logutils problem.v0.42.0Add msgpackutils.Fix problem in nameutils.v0.41.1Fix numericutils.get_float_part problem.v0.41.0cipherutils changes.Fix license_files missing problem.v0.40.2Add cipherutils.raw_aes_key.Add cipherutils.get_aes_mode.v0.40.0Add listutils.chunk.New threadutils.Fix dictutils.Object.v0.39.8fsutils.TemporaryFile add auto delete.dictutils.changes can return changed keys.dictutils.change can control do update or not.dictutils.change add ignore_empty_value support.v0.39.7Fix strutils.force_byte, strutils.force_text.v0.39.6Fix encode_datetime problem.v0.39.5Add field name while failed to do typing cast.v0.39.4Add more default jsonutils encoders.v0.39.1Fix logutils.setup default config for windows.v0.39.0Change logutils.setup parameter name.Fix bizerror.BizError encoding problem in jsonutils.v0.38.2Add timeutils.TimeService.v0.37.11Fix fsutils.write.v0.37.10fsutils.readfile add default params. The default value will be returned if the target file is not exists.Add dictutils.diff function.Force folder create in fsutils.write.Make sure log folder exists in logutils.setup.Add sysutils.execute_script.v0.37.3Add PyYAML deps in requirements.txt.v0.37.2SimpleProducerConsumerServerBase.on_consume_error function add new parameter: task.Fix threadutils problems. Many changes are made.v0.37.0Add fsutils.load_application_config.v0.36.2Add fsutils.TemporaryFileAdd threadutils.SimpleProducerConsumerServer and fix problems in ServiceCore.v0.35.0strutils.is_uuid add allow_bad_characters parameter, default to False. For some old bad application using '815f5ecb-eg07-43af-8de2-87d3898093b5' as UUID.Add nameutils.guess_surname.Add fsutils.get_size_deviation, fsutils.get_unit_size and fsutils.get_size_display.v0.34.0Add sysutils.get_daemon_application_pid.Add httputils.v0.33.0Add fsutils.infoAdd strutils.encodable and strutils.decodablev0.32.0Add funcutils.try_again_on_error.v0.31.0Add fsutils.expands.Add fsutils.get_application_config_filepath.v0.30.1Add cipherutils result_encoders' typing tips.v0.30.0Add strutils.stringlist_append.Add strutils.html_element_css_append.Add strutils.split2.Add strutils.remove_prefix.Add strutils.remove_suffix.Change strutils.split("", [","]) returns [] instead of [""].Add cipherutils.MysqlAesCipher.Add listutils.topological_sort.Add nameutils.v0.29.0Use pypinyin module instead of dragonmapper.Replace the result lve to lue.v0.28.2Fix dictutils.update, so that it can works on anything.v0.28.1Add default parameter to fsutils.first_exists_file.v0.28.0Add fsutils.first_exists_file.Add fsutils.expand.Add listutils.first.v0.27.0Add lower_first parameter for strutils.camel.Add dictutils.prefix_key.Add sysutils.get_worker_id.v0.26.0Add treeutils.build_tree from list.Add treeutils.walk_tree.Add treeutils.print_tree.Add fsutils.touch.v0.25.0Add strutils.is_uuid.Add typingutils.cast_uuid.v0.24.2fsutils.file_content_replace add ignore_errors parameter.v0.24.1typingutils.cast_xxx treat empty string as None.randomutils.UuidGenerator.next add parameter n, so that it can generate n uuids. If n==1, returns a UUID instance, and if n>1, returns a list of UUIDs.v0.24.0Add strutils.unquote.v0.23.0Add funcutils.get_default_values.Add funcutils.chain.v0.22.0Add none-dict support in dictutils.change and dictutils.changes.Add strutils.format_with_mapping.v0.21.0Add listutils.compare(old_set, new_set).Add dictutils.change(object_instance, data_dict, object_key, dict_key=None) -> bool.Add dictutils.changes(object_instance, data_dict, keys) -> bool:Change listutils.replace, turn the default value of parameter inplace from True to False.Fix Object instance problems.v0.20.0Add strutils.clean and change strutils.camel.Add dictutils.to_object.Add pinyinutils.v0.19.0Add fsutils.filecopy and fsutils.treecopy. Tips: fsutils.copy combines the function of filecopy and treecopy, if the src is a file then use filecopy, and if the src is a folder then use treecopy.Fix problem in fsutils.copy.v0.18.0Add strutils.camel.v0.17.0Add fsutils.file_content_replace.Add fsutils.move.Change fsutils.rename's behavior.Change fsutils.copy's behavior.v0.16.0Add fsutils.v0.15.2Add hostname, seed1, seed4 in domain_template of randomutils.UuidGenerator.v0.15.1Add incr-lock for counter incr in randomutils.UuidGenerator.v0.15.0Add randomutils.UuidGenerator.v0.14.0Add strutils.substrings.Add strutils.combinations.Add cipherutils.Utf8Encoder.Add cipherutils.S1Cipher.Add cipherutils.S2Cipher.Add funcutils.classpropertyWARN: Change a cipherutils.CipherBase's parameter name from encoder to result_encoder.v0.13.4Use new algorithm to improve randomutils.shuffle's performance.v0.13.3Add randomutils.shuffle.Change randomutils.randint parameters from (max, min=0) to (a, b=None).v0.13.2Add listutils.group.Add rsautils.export_key. And rsautils use Crypto.PublicKey.RSA for the base engine.v0.13.1Add strutils.force_float and strutils.force_numeric.Add typingutils.cast_numeric support.v0.13.0IvfCihper accept integer value when float_digits=0.Fix IvfCihper deviation problem which is caused by wrong module used in decrypt.IvfCihper use new algorithm in computing module and max_value,so that result encrypted by version v0.12.0 can not decrypted by version v0.13.0.v0.12.0Add IvfCihper for float number encrypt and decrypt. The output of IvfCipher.encrypt is string.v0.11.1Use class instead of raw api for s12 and iv ciphers. It's can avoid many times in generating seeds.v0.11.0Add cipherutils.Add strutils.binarify and strutils.unbinarify.Add randomutils.Random.Change aesutils functions' return type. Note: use cipherutils instead.v0.10.1Add bizerror dependency.v0.10.0Add strutils.is_chinese_character to test if the character is a chinese character.Add cacheutils.get_cached_value to get or set cached value.v0.9.0Add listutils.append_new to append new value and only new value to the list.v0.8.0Add strutils.smart_get_binary_data.Add rsautils.v0.7.0Add hashutils.get_file_hash.Add extra install requires for python 2.x.Add imageutils.parse_base64image and imageutils.get_image_bytes.Fix jsonutils.make_simple_json_encoder ignore bases problem.v0.6.0Add imageutils, add imageutils.get_base64image to make base64 image that can be rendered by web browser.Add imageutils.resize to scale image size.Add Image-Object-Encode support in jsonutils.Add threadutils, add threadutils.Service to simplify long-run-service programming.Raise bizerror.MissingParameter error in funcutils.get_inject_params while missing required parameter.v0.5.4Fix hashutils.get_hash_hexdigest and hashutils.get_hash_base64 problem.v0.5.3Using typingutils.smart_cast in funcutils.get_inject_params.v0.5.2Add unit test cases for typingutils.Fix cast_list, do strip for every element in comma-separated-list.Fix base64 import missing in typingutils.v0.5.1Add typingutils.cast_str.v0.5.0Set library property in get_encoder in jsonutils.Add typingutils.v0.4.0Add jsonutils, provides simple json encoder register system.v0.3.2Fix problems for python 2.7.Fix name error of funcutils.v0.3.1Fix problem casued by str.isascii() which is new from python 3.7.v0.3.0Add listutils.unique to remove duplicated elements from the list.Add listutils.replace to replace element value in thelist with new_value in collection of map.v0.2.0Add functuils.get_inject_params to smartly choose parameters from candidates by determine with the function's signature.Add functuils.call_with_inject to smartly call the function by smartly choose parameters.v0.1.1Add strutils.wholestrip function, use to remove all white spaces in text.Fix strutils.is_urlsafeb64_decodable, strutils.is_base64_decodable and strutils.is_unhexlifiable functions, that have problem to test text contains whitespaces.v0.1.0Add simple utils about operations of aes, dict, hash, list and str.