Package: pydash
The kitchen sink of Python utility libraries for doing “stuff” in a functional way. Based on theLo-DashJavascript library.NoteLooking for a library that is more memory efficient and better suited for large datasets? Check outfnc! It’s built around generators and iteration and has iteratee-first function signatures.LinksProject:https://github.com/dgilland/pydashDocumentation:http://pydash.readthedocs.orgPyPi:https://pypi.python.org/pypi/pydash/Github Actions:https://github.com/dgilland/pydash/actionsChangelogv7.0.7 (2024-01-27)Fix bug in function wrappers that incorrectly computed the number of arguments the wrapped function could handle. ThanksDeviousStoat!Fix bug inset_where the incorrect object type, list instead of dict, was initialized on class attributes. ThanksDeviousStoat!Drop support for Python 3.7.v7.0.6 (2023-07-29)Fix typing for chaining interface for methods that use varargs. ThanksDeviousStoat!v7.0.5 (2023-07-06)Fix typing forfind_indexandfind_last_indexby allowingpredicateargument to be callback shorthand values. ThanksDeviousStoat!v7.0.4 (2023-06-02)Exclude incompatibletyping-extensionsversion4.6.0from install requirements. Incompatibility was fixed in4.6.1.v7.0.3 (2023-05-04)Fix typing fordifference_by,intersection_by,union_by,uniq_by, andxor_byby allowingiterateeargument to beAny.  ThanksDeviousStoat!v7.0.2 (2023-04-27)Fix issue where usingpyrightas a type checker withreportPrivateUsage=truewould report errors that objects are not exported frompydash. ThanksDeviousStoat!v7.0.1 (2023-04-13)Fix missing install dependency,typing-extensions, for package.v7.0.0 (2023-04-11)Add type annotations to package. Raise an issue for any typing issues athttps://github.com/dgilland/pydash/issues. ThanksDeviousStoat! (breaking change)Change behavior ofto_dictto not usingdict()internally. Previous behavior would be for something liketo_dict([["k","v"],["x","y"]])to return{"k": "v", "x": "y"}(equivalent to callingdict(...)) butto_dict([["k"],["v"],["x"],["y"]])would return{0:["x"],1:["v"],2:["x"],3:["y"]}. The new behavior is to always return iterables as dictionaries with their indexes as keys like{0: ["k","v"],1: ["x","y"]}. This is consistent with how iterable objects are iterated over and means thatto_dictwill have more reliable output. (breaking change)Change behavior ofslugifyto remove single-quotes from output. Instead ofslugify("thecat's meow") =="the-cat's-meow", the new behavior is to return"the-cats-meow". (breaking change)Add support for negative indexes ingetpath keys. Thanksbl4ckst0ne!v6.0.2 (2023-02-23)Only prevent access to object paths containing__globals__or__builtins__instead of all dunder-methods for non-dict/list objects.v6.0.1 (2023-02-20)Fix exception raised due to mishandling of non-string keys in functions likeget()for non-dict/list objects that used integer index references like"[0]".v6.0.0 (2023-01-28)Prevent access to object paths containing dunder-methods in functions likeget()for non-dict/list objects. Attempting to access dunder-methods using get-path keys will raise aKeyError(e.g.get(SomeClass(),'__init__'will raise). Access to dict keys are unaffected (e.g.get({"__init__":True}, "__init__")will returnTrue). (breaking change)Add support for Python 3.11.Drop support for Python 3.6 (breaking change)v5.1.2 (2022-11-30)Remove unnecessary type check and conversion forexceptionsargument inpydash.retry.v5.1.1 (2022-09-23)Add support for Python 3.10.Fix timing assertion issue in test forpydash.delaywhere it could fail on certain environments.v5.1.0 (2021-10-02)Support matches-style callbacks on non-dictionary objects that are compatible withpydash.getin functions likepydash.find.v5.0.2 (2021-07-15)Fix compatibility issue betweenpydash.py_/pydash._andtyping.Protocol+typing.runtime_checkablethat caused an exception to be raised forisinstance(py_, SomeRuntimeCheckableProtocol).v5.0.1 (2021-06-27)Fix bug inmerge_withthat prevented custom iteratee from being used when recursively merging. Thanksweineel!v5.0.0 (2021-03-29)Drop support for Python 2.7. (breaking change)Improve Unicode word splitting in string functions to be inline with Lodash. Thanksmervynlee94! (breaking change)camel_casehuman_casekebab_caselower_casepascal_caseseparator_caseslugifysnake_casestart_caseupper_caseOptimize regular expression constants used inpydash.stringsby pre-compiling them to regular expression pattern objects.v4.9.3 (2021-03-03)Fix regression introduced inv4.8.0that causedmergeandmerge_withto raise an exception when passingNoneas the first argument.v4.9.2 (2020-12-24)Fix regression introduced inv4.9.1that brokepydash.getfor dictionaries and dot-delimited keys that reference integer dict-keys.v4.9.1 (2020-12-14)Fix bug inget/hasthat causeddefaultdictobjects to get populated on key access.v4.9.0 (2020-10-27)Adddefault_to_any. Thanksgonzalonaveira!Fix mishandling of key names containing\.inset_,set_with, andupdate_withwhere the.was not treated as a literal value within the key name. Thankszhaowb!v4.8.0 (2020-06-13)Support attribute based setters likeargparse.Namespaceinset_,set_with,update, andupdate_with.Fix exception inorder_bywhenNoneused as a sort key. Thankselijose55!Fix behavior ofpick_byto return the passed in argument when only one argument given. Previously, an empty dictionary was returned. Thankselijose55!Officially support Python 3.8.v4.7.6 (2019-11-20)Bug FixesFix handling ofSequence,Mapping, andnamedtupletypes ingetso that their attributes aren’t accessed during look-up. Thanksjwilson8767!v4.7.5 (2019-05-21)Bug FixesFix handling of string and byte values inclone_withandclone_deep_withwhen a customizer is used.Fix handling of non-indexable iterables infindandfind_last.v4.7.4 (2018-11-14)Bug FixesRaise an explicit exception inset_,set_with,update, andupdate_withwhen an object cannot be updated due to that object or one of its nested objects not being subscriptable.v4.7.3 (2018-08-07)Bug FixesFix bug inspreadwhere arguments were not being passed to wrapped function properly.v4.7.1 (2018-08-03)New FeaturesModifyto_dictto first try to convert usingdict()before falling back to usingpydash.helpers.iterator().v4.7.0 (2018-07-26)MiscInternal code optimizations.v4.6.1 (2018-07-16)MiscSupport Python 3.7.v4.6.0 (2018-07-10)MiscImprove performance of the following functions for large datasets:duplicatessorted_uniqsorted_uniq_byunionunion_byunion_withuniquniq_byuniq_withxorxor_byxor_withv4.5.0 (2018-03-20)New FeaturesAddjitterargument toretry.v4.4.1 (2018-03-14)New FeaturesAddattemptargument toon_exceptioncallback inretry. New function signature ison_exception(exc, attempt)(previously wason_exception(exc)). All arguments toon_exceptioncallback are now optional.v4.4.0 (2018-03-13)New FeaturesAddretrydecorator that will retry a function multiple times if the function raises an exception.v4.3.3 (2018-03-02)Bug FixesFix regression inv4.3.2introduced by the support added for callable class callbacks that changed the handling of callbacks that could not be inspected. Prior tov4.3.2, these callbacks would default to being passed a single callback argument, but withv4.3.2these callbacks would be passed the full set of callback arguments which could result an exception being raised due to the callback not supporting that many arguments.v4.3.2 (2018-02-06)Bug FixesFix issue indefaults_deepwhere sources with non-dict values would raise an exception due to assumption that object was always a dict.Fix issue incurrywhere too many arguments would be passed to the curried function when evaluating function if too many arguments used in last function call.Workaround issue in Python 2.7 where callable classes used as callbacks were always passed the full count of arguments even when the callable class only accept a subset of arguments.v4.3.1 (2017-12-19)Bug FixesFixset_withso that callable values are not called when being set. This bug also impacted the following functions by proxy:pickpick_byset_transposezip_object_deepv4.3.0 (2017-11-22)New FeaturesAddnest.Wrap non-iterables in a list into_listinstead of raising an exception. Thanksefenka!Addsplit_stringsargument toto_listto control whether strings are coverted to a list (split_strings=True) or wrapped in a list (split_strings=False). Default issplit_strings=True. Thanksefenka!v4.2.1 (2017-09-08)Bug FixesEnsure thatto_pathalways returns alist.Fixgetto work with path values other than just strings, integers, and lists.v4.2.0 (2017-09-08)New FeaturesSupport more iterator “hooks” into_dictso non-iterators that expose anitems(),iteritems(), or has__dict__attributes will be converted using those methods.Support deep paths inomitandomit_by. Thanksbeck3905!Support deep paths inpickandpick_by. Thanksbeck3905!Bug FixesFix missing argument passing to matched function incond.Support passing a single list of pairs incondinstead of just pairs as separate arguments.v4.1.0 (2017-06-09)New FeaturesOfficially support Python 3.6.Addpropertiesfunction that returns list of path values for an object.Addreplace_end.Addreplace_start.Makeiterateesupportproperties-style callback when atupleis passed.Makereplaceacceptfrom_startandfrom_endarguments to limit replacement to start and/or end of string.Bug FixesNonev4.0.4 (2017-05-31)New FeaturesNoneBug FixesImprove performance ofget. Thanksshaunpatterson!v4.0.3 (2017-04-20)New FeaturesNoneBug FixesFix regression ingetwherelistanddictobjects had attributes returned when a key was missing but the key corresponded to an attribute name. For example,pydash.get({},'update')would return{}.update()instead ofNone. Previous behavior was that only item-access was allowed forlistanddictwhich has been restored.Fix regression ininvoke/invoke_mapwhere non-attributes could be invoked. For example,pydash.invoke({'items':lambda: 1}, 'items')would return1instead ofdict_items([('a','items')]). Previous behavior was that only attribute methods could be invoked which has now been restored.v4.0.2 (2017-04-04)New FeaturesNoneBug FixesFix regression inintersection,intersection_by, andintersection_withintroduced inv4.0.0where the a single argument supplied to intersection should return the same argument value instead of an empty list.Backwards-IncompatibilitiesNonev4.0.1 (2017-04-04)New FeaturesMakeproperty_work with deep path strings.Bug FixesRevert removal ofdeep_pluckand rename topluck. Previously,deep_pluckwas removed andmap_was recommended as a replacement. However,deep_pluck(now defined aspluck) functionality is not supported bymap_so the removalpluckwas reverted.Backwards-IncompatibilitiesRemoveproperty_deep(useproperty_).v4.0.0 (2017-04-03)New FeaturesAddassign_with.Addclamp.Addclone_deep_with.Addclone_with.Addcond. Thanksbharadwajyarlagadda!Addconforms.Addconforms_to.Adddefault_to. Thanksbharadwajyarlagadda!Adddifference_by.Adddifference_with.Adddivide. Thanksbharadwajyarlagadda!Addeq. Thanksbharadwajyarlagadda!Addflat_map.Addflat_map_deep.Addflat_map_depth.Addflatten_depth.Addflip. Thanksbharadwajyarlagadda!Addfrom_pairs. Thanksbharadwajyarlagadda!Addintersection_by.Addintersection_with.Addinvert_by.Addinvoke_map.Addis_equal_with. Thanksbharadwajyarlagadda!Addis_match_with.Addis_set. Thanksbharadwajyarlagadda!Addlower_case. Thanksbharadwajyarlagadda!Addlower_first. Thanksbharadwajyarlagadda!Addmax_by.Addmean_by.Addmerge_with.Addmin_by.Addmultiply. Thanksbharadwajyarlagadda!Addnth. Thanksbharadwajyarlagadda!Addnth_arg. Thanksbharadwajyarlagadda!Addomit_by.Addover. Thanksbharadwajyarlagadda!Addover_every. Thanksbharadwajyarlagadda!Addover_some. Thanksbharadwajyarlagadda!Addpick_by.Addpull_all. Thanksbharadwajyarlagadda!Addpull_all_by.Addpull_all_with.Addrange_right. Thanksbharadwajyarlagadda!Addsample_size. Thanksbharadwajyarlagadda!Addset_with.Addsorted_index_by.Addsorted_index_of. Thanksbharadwajyarlagadda!Addsorted_last_index_by.Addsorted_last_index_of.Addsorted_uniq. Thanksbharadwajyarlagadda!Addsorted_uniq_by.Addstub_list. Thanksbharadwajyarlagadda!Addstub_dict. Thanksbharadwajyarlagadda!Addstub_false. Thanksbharadwajyarlagadda!Addstub_string. Thanksbharadwajyarlagadda!Addstub_true. Thanksbharadwajyarlagadda!Addsubtract. Thanksbharadwajyarlagadda!Addsum_by.Addto_integer.Addto_lower. Thanksbharadwajyarlagadda!Addto_path. Thanksbharadwajyarlagadda!Addto_upper. Thanksbharadwajyarlagadda!Addunary.Addunion_by. Thanksbharadwajyarlagadda!Addunion_with. Thanksbharadwajyarlagadda!Adduniq_by.Adduniq_with.Addunset.Addupdate.Addupdate_with.Addupper_case. Thanksbharadwajyarlagadda!Addupper_first. Thanksbharadwajyarlagadda!Addxor_by.Addxor_with.Addzip_object_deep.Make function returned byconstantignore extra arguments when called.Makegetsupport attribute access within path.Makeiterateetreat an integer argument as a string path (i.e.iteratee(1)is equivalent toiteratee('1')for creating a path accessor function).Makeintersectionwork with unhashable types.Makerange_support decrementing whenstartargument is greater thanstopargument.Makexormaintain sort order of supplied arguments.Bug FixesFixfind_last_keyso that it iterates over object in reverse.Backwards-IncompatibilitiesMakeaddonly support two argument addition. (breaking change)Makedifferencereturn duplicate values from first argument and maintain sort order. (breaking change)Makeinvokework on objects instead of collections. Useinvoke_mapfor collections. (breaking change)Makeset_support mixedlist/dictdefaults within a single object based on whether key or index path substrings used. (breaking change)Makeset_modify object in place. (breaking change)Only usemergecallback result if result is notNone. Previously, result from callback (if provided) was used unconditionally. (breaking change)Remove functions: (breaking change)deep_pluck(no alternative) [UPDATE:deep_pluckfunctionality restored aspluckinv4.0.1]mapiter(no alternative)pluck(usemap_)update_path(useupdateorupdate_with)set_path(useset_orset_with)Remove aliases: (breaking change)all_(useevery)any_(usesome)append(usepush)averageandavg(usemeanormean_by)callback(useiteratee)cat(useconcat)collect(usemap_)contains(useincludes)curve(useround_)deep_getandget_path(useget)deep_hasandhas_path(usehas)deep_prop(useproperty_deep)deep_set(useset_)detectandfind_where(usefind)each(usefor_each)each_right(usefor_each_right)escape_re(useescape_reg_exp)explode(usesplit)extend(useassign)first(usehead)foldl(usereduce)foldr(usereduce_right)for_own(usefor_each)for_own_right(usefor_each_right)implode(usejoin)is_bool(useis_boolean)is_int(useis_integer)is_native(useis_builtin)is_num(useis_number)is_plain_object(useis_dict)is_re(useis_reg_exp)js_match(usereg_exp_js_match)js_replace(usereg_exp_js_replace)keys_in(usekeys)moving_averageandmoving_avg(usemoving_mean)object_(usezip_object)pad_left(usepad_start)pad_right(usepad_end)pipe(useflow)pipe_rightandcompose(useflow_right)prop(useproperty_)prop_of(useproperty_of)pow_(usepower)re_replace(usereg_exp_replace)rest(usetail)select(usefilter_)sigma(usestd_deviation)sort_by_allandsort_by_order(useorder_by)trim_left(usetrim_start)trim_right(usetrim_right)trunc(usetruncate)underscore_case(usesnake_case)unique(useuniq)values_in(usevalues)where(usefilter_)Rename functions: (breaking change)deep_map_valuestomap_values_deepdeep_propertytoproperty_deepincludetoincludesindex_bytokey_bymod_argstoover_argsmoving_averagetomoving_meanpairstoto_pairsRemovecallbackargument from: (breaking change)assign. Moved toassign_with.cloneandclone_deep. Moved toclone_withandclone_deep_with.is_match. Moved tois_match_with.max_andmin_. Moved tomax_byandmin_by.omit. Moved toomit_by.pick. Moved topick_by.sorted_index. Moved tosorted_index_by.sum_. Moved tosum_by.uniq/unique. Moved touniq_by.Renamedcallbackargument topredicate: (breaking change)drop_right_whiledrop_whileeveryfilter_findfind_keyfind_lastfind_indexfind_last_indexfind_last_keypartitionrejectremovesometake_right_whiletake_whileRenamedcallbackargument toiteratee: (breaking change)count_byduplicatesfor_eachfor_each_rightfor_infor_in_rightgroup_bykey_bymap_map_keysmap_valuesmap_values_deepmapcatmedianreduce_reduce_rightreductionsreductions_rightsort_bytimestransformunzip_withzip_withzscoreRenamecomparisonargument insorttocomparator.Renameindexandhow_manyarguments insplicetostartandcount.Removemultivalueargument frominvert. Feature moved toinvert_by. (breaking change)v3.4.8 (2017-01-05)Make internal function inspection methods work with Python 3 annotations. Thankstgriesser!v3.4.7 (2016-11-01)Fix bug ingetwhere an iterable default was iterated over instead of being returned when an object path wasn’t found. Thanksurbnjamesmi1!v3.4.6 (2016-10-31)Fix bug ingetwhere casting a string key to integer resulted in an uncaught exception instead of the default value being returned instead. Thanksurbnjamesmi1!v3.4.5 (2016-10-16)Add optionaldefaultparameter tomin_andmax_functions that is used when provided iterable is empty.Fix bug inis_matchwhere comparison between an emptysourceargument returnedNoneinstead ofTrue.v3.4.4 (2016-09-06)Shallow copy each source inassign/extendinstead of deep copying.Callcopy.deepcopyinmergeinstead of the more resource intensiveclone_deep.v3.4.3 (2016-04-07)Fix minor issue in deep path string parsing so that list indexing in paths can be specified asfoo[0][1].barinstead offoo.[0].[1].bar. Both formats are now supported.v3.4.2 (2016-03-24)Fix bug instart_casewhere capitalized characters after the first character of a word where mistakenly cast to lower case.v3.4.1 (2015-11-03)Fix Python 3.5, inspect, and  pytest compatibility issue withpy_chaining object when doctest run onpydash.__init__.py.v3.4.0 (2015-09-22)Optimize callback system for performance.Explicitly store arg count on callback forpydashgenerated callbacks where the arg count is known. This avoids the costlyinspect.getargspeccall.Eliminate usage of costlyguess_builtin_argcountwhich parsed docstrings, and instead only ever pass a single argument to a builtin callback function.Optimizeget/setso that regex parsing is only done when special characters are contained in the path key whereas before, all string paths were parsed.Optimizeis_builtinby checking forBuiltinFunctionTypeinstance and then usingdictlook up table instead of alistlook up.Optimizeis_matchby replacing call tohaswith atry/exceptblock.Optimizepush/appendby using a native loop instead of callback mapping.v3.3.0 (2015-07-23)Addceil.Adddefaults_deep.Addfloor.Addget.Addgt.Addgte.Addis_iterable.Addlt.Addlte.Addmap_keys.Addmethod.Addmethod_of.Addmod_args.Addset_.Addunzip_with.Addzip_with.Makeaddsupport adding two numbers if passed in positionally.Makegetmain definition andget_pathits alias.Makeset_main definition anddeep_setits alias.v3.2.2 (2015-04-29)CatchAttributeErrorinhelpers.get_itemand return default value if set.v3.2.1 (2015-04-29)Fix bug inreduce_rightwhere collection was not reversed correctly.v3.2.0 (2015-03-03)Addsort_by_orderas alias ofsort_by_all.Fixis_matchto not compareobjandsourcetypes usingtypeand instead useisinstancecomparisons exclusively.Makesort_by_allaccept anordersargument for specifying the sort order of each key via booleanTrue(for ascending) andFalse(for descending).Makewordsaccept apatternargument to override the default regex used for splitting words.Makewordshandle single character words better.v3.1.0 (2015-02-28)Addfill.Addin_range.Addmatches_property.Addspread.Addstart_case.Make callbacks supportmatches_propertystyle as[key, value]or(key, value).Make callbacks support shallowpropertystyle callbacks as[key]or(key,).v3.0.0 (2015-02-25)Addary.Addchars.Addchop.Addchop_right.Addclean.Addcommitmethod tochainthat returns a new chain with the computedchain.value()as the initial value of the chain.Addcount_substr.Adddecapitalize.Addduplicates.Addhas_substr.Addhuman_case.Addinsert_substr.Addis_blank.Addis_boolas alias ofis_boolean.Addis_builtin,is_native.Addis_dictas alias ofis_plain_object.Addis_intas alias ofis_integer.Addis_match.Addis_numas alias ofis_number.Addis_tuple.Addjoinas alias ofimplode.Addlines.Addnumber_format.Addpascal_case.Addplantmethod tochainthat returns a cloned chain with a new initial value.Addpredecessor.Addproperty_of,prop_of.Addprune.Addre_replace.Addrearg.Addreplace.Addrunas alias ofchain.value.Addseparator_case.Addseries_phrase.Addseries_phrase_serial.Addslugify.Addsort_by_all.Addstrip_tags.Addsubstr_left.Addsubstr_left_end.Addsubstr_right.Addsubstr_right_end.Addsuccessor.Addswap_case.Addtitle_case.Addtruncateas alias oftrunc.Addto_boolean.Addto_dict,to_plain_object.Addto_number.Addunderscore_caseas alias ofsnake_case.Addunquote.Fixdeep_hasto returnFalsewhenValueErrorraised during path checking.Fixpadso that it doesn’t over pad beyond provided length.Fixtrunc/truncateso that they handle texts shorter than the max string length correctly.Make the following functions work with empty strings andNone: (breaking change) Thanksk7sleeper!camel_casecapitalizecharschopchop_rightclass_casecleancount_substrdecapitalizeends_withjoinjs_replacekebab_caselinesquotere_replacereplaceseries_phraseseries_phrase_serialstarts_withsurroundMake callback invocation have better support for builtin functions and methods. Previously, if one wanted to pass a builtin function or method as a callback, it had to be wrapped in a lambda which limited the number of arguments that would be passed it. For example,_.each([1,2, 3], array.append)would fail and would need to be converted to_.each([1,2, 3], lambda item: array.append(item). That is no longer the case as the non-wrapped method is now supported.Makecapitalizeacceptstrictargument to control whether to convert the rest of the string to lower case or not. Defaults toTrue.Makechainsupport late passing of initialvalueargument.Makechainnot store computedvalue(). (breaking change)Makedrop,drop_right,take, andtake_righthave defaultn=1.Makeis_indexedreturnTruefor tuples.Makepartialandpartial_rightaccept keyword arguments.Makepluckstyle callbacks support deep paths. (breaking change)Makere_replaceaccept non-string arguments.Makesort_byacceptreverseparameter.Makesplicework with strings.Maketo_stringconvertNoneto empty string. (breaking change)Movearrays.jointostrings.join. (breaking change)Renamejoin/implode’s second parameter fromdelimitertoseparator. (breaking change)Renamesplit/explode’s second parameter fromdelimitertoseparator. (breaking change)Reorder function arguments forafterfrom(n, func)to(func, n). (breaking change)Reorder function arguments forbeforefrom(n, func)to(func, n). (breaking change)Reorder function arguments fortimesfrom(n, callback)to(callback, n). (breaking change)Reorder function arguments forjs_matchfrom(reg_exp, text)to(text, reg_exp). (breaking change)Reorder function arguments forjs_replacefrom(reg_exp, text, repl)to(text, reg_exp, repl). (breaking change)Support iteration over class instance properties for non-list, non-dict, and non-iterable objects.v2.4.2 (2015-02-03)Fixremoveso that array is modified after callback iteration.v2.4.1 (2015-01-11)Fixkebab_caseso that it casts string to lower case.v2.4.0 (2015-01-07)Addensure_ends_with. Thanksk7sleeper!Addensure_starts_with. Thanksk7sleeper!Addquote. Thanksk7sleeper!Addsurround. Thanksk7sleeper!v2.3.2 (2014-12-10)Fixmergeandassign/extendso they applyclone_deepto source values before assigning to destination object.Makemergeaccept a callback as a positional argument if it is last.v2.3.1 (2014-12-07)Addpipeandpipe_rightas aliases offlowandflow_right.Fixmergeso that trailing{}or[]don’t overwrite previous source values.Makepy_an alias for_.v2.3.0 (2014-11-10)Supporttypecallbacks (e.g.int,float,str, etc.) by only passing a single callback argument when invoking the callback.Drop official support for Python 3.2. Too many testing dependencies no longer work on it.v2.2.0 (2014-10-28)Addappend.Adddeep_get.Adddeep_has.Adddeep_map_values.Adddeep_set.Adddeep_pluck.Adddeep_property.Addjoin.Addpop.Addpush.Addreverse.Addshift.Addsort.Addsplice.Addunshift.Addurl.Fix bug insnake_casethat resulted in returned string not being converted to lower case.Fix bug in chaining method access test which skipped the actual test.Make_instance alias method access to methods with a trailing underscore in their name. For example,_.map()becomes an alias formap_().Makedeep_propan alias ofdeep_property.Makehaswork with deep paths.Makehas_pathan alias ofdeep_has.Makeget_pathhandle escaping the.delimiter for string keys.Makeget_pathhandle list indexing using strings such as'0.1.2'to access'value'in[[0, [0, 0,'value']]].Makeconcatan alias ofcat.v2.1.0 (2014-09-17)Addadd,sum_.Addaverage,avg,mean.Addmapiter.Addmedian.Addmoving_average,moving_avg.Addpower,pow_.Addround_,curve.Addscale.Addslope.Addstd_deviation,sigma.Addtranspose.Addvariance.Addzscore.v2.0.0 (2014-09-11)Add_instance that supports both method chaining and module method calling.Addcat.Addconjoin.Adddeburr.Adddisjoin.Addexplode.Addflatten_deep.Addflow.Addflow_right.Addget_path.Addhas_path.Addimplode.Addintercalate.Addinterleave.Addintersperse.Addis_associative.Addis_even.Addis_float.Addis_decreasing.Addis_increasing.Addis_indexed.Addis_instance_of.Addis_integer.Addis_json.Addis_monotone.Addis_negative.Addis_odd.Addis_positive.Addis_strictly_decreasing.Addis_strictly_increasing.Addis_zero.Additerated.Addjs_match.Addjs_replace.Addjuxtapose.Addmapcat.Addreductions.Addreductions_right.Addrename_keys.Addset_path.Addsplit_at.Addthru.Addto_string.Addupdate_path.Addwords.Make callback function calling adapt to argspec of given callback function. If, for example, the full callback signature is(item, index, obj)but the passed in callback only supports(item), then onlyitemwill be passed in when callback is invoked. Previously, callbacks had to support all arguments or implement star-args.Makechainlazy and only compute the final value whenvaluecalled.Makecomposean alias offlow_right.Makeflattenshallow by default, remove callback option, and addis_deepoption. (breaking change)Makeis_numberreturnFalsefor booleanTrueandFalse. (breaking change)Makeinvertacceptmultivalueargument.Makeresultacceptdefaultargument.Makeslice_accept optionalstartandendarguments.Move files inpydash/api/topydash/. (breaking change)Move predicate functions frompydash.api.objectstopydash.api.predicates. (breaking change)Renamecreate_callbacktoiteratee. (breaking change)Renamefunctionstocallablesin order to allowfunctions.pyto exist at the root of the pydash module folder. (breaking change)Renameprivateutility function_iter_callbacktoitercallback. (breaking change)Renameprivateutility function_iter_list_callbacktoiterlist_callback. (breaking change)Renameprivateutility function_iter_dict_callbacktoiterdict_callback. (breaking change)Renameprivateutility function_iteratetoiterator. (breaking change)Renameprivateutility function_iter_dicttoiterdict. (breaking change)Renameprivateutility function_iter_listtoiterlist. (breaking change)Renameprivateutility function_iter_uniquetoiterunique. (breaking change)Renameprivateutility function_get_itemtogetitem. (breaking change)Renameprivateutility function_set_itemtosetitem. (breaking change)Renameprivateutility function_deprecatedtodeprecated. (breaking change)Undeprecatetailand make alias ofrest.v1.1.0 (2014-08-19)Addattempt.Addbefore.Addcamel_case.Addcapitalize.Addchunk.Addcurry_right.Adddrop_right.Adddrop_right_while.Adddrop_while.Addends_with.Addescape_reg_expandescape_re.Addis_error.Addis_reg_expandis_re.Addkebab_case.Addkeys_inas alias ofkeys.Addnegate.Addpad.Addpad_left.Addpad_right.Addpartition.Addpull_at.Addrepeat.Addslice_.Addsnake_case.Addsorted_last_index.Addstarts_with.Addtake_right.Addtake_right_while.Addtake_while.Addtrim.Addtrim_left.Addtrim_right.Addtrunc.Addvalues_inas alias ofvalues.Createpydash.api.stringsmodule.Deprecatetail.Modifydropto acceptnargument and remove as alias ofrest.Modifytaketo acceptnargument and remove as alias offirst.Moveescapeandunescapefrompydash.api.utilitiestopydash.api.strings. (breaking change)Moverange_frompydash.api.arraystopydash.api.utilities. (breaking change)v1.0.0 (2014-08-05)Add Python 2.6 and Python 3 support.Addafter.Addassignandextend. Thanksnathancahill!Addcallbackandcreate_callback.Addchain.Addclone.Addclone_deep.Addcompose.Addconstant.Addcount_by. Thanksnathancahill!Addcurry.Adddebounce.Adddefaults. Thanksnathancahill!Adddelay.Addescape.Addfind_key. Thanksnathancahill!Addfind_last. Thanksnathancahill!Addfind_last_index. Thanksnathancahill!Addfind_last_key. Thanksnathancahill!Addfor_each. Thanksnathancahill!Addfor_each_right. Thanksnathancahill!Addfor_in. Thanksnathancahill!Addfor_in_right. Thanksnathancahill!Addfor_own. Thanksnathancahill!Addfor_own_right. Thanksnathancahill!Addfunctions_andmethods. Thanksnathancahill!Addgroup_by. Thanksnathancahill!Addhas. Thanksnathancahill!Addindex_by. Thanksnathancahill!Addidentity.Addinject.Addinvert.Addinvoke. Thanksnathancahill!Addis_list. Thanksnathancahill!Addis_boolean. Thanksnathancahill!Addis_empty. Thanksnathancahill!Addis_equal.Addis_function. Thanksnathancahill!Addis_none. Thanksnathancahill!Addis_number. Thanksnathancahill!Addis_object.Addis_plain_object.Addis_string. Thanksnathancahill!Addkeys.Addmap_values.Addmatches.Addmax_. Thanksnathancahill!Addmemoize.Addmerge.Addmin_. Thanksnathancahill!Addnoop.Addnow.Addomit.Addonce.Addpairs.Addparse_int.Addpartial.Addpartial_right.Addpick.Addproperty_andprop.Addpull. Thanksnathancahill!Addrandom.Addreduce_andfoldl.Addreduce_rightandfoldr.Addreject. Thanksnathancahill!Addremove.Addresult.Addsample.Addshuffle.Addsize.Addsort_by. Thanksnathancahill!Addtap.Addthrottle.Addtimes.Addtransform.Addto_list. Thanksnathancahill!Addunescape.Addunique_id.Addvalues.Addwrap.Addxor.v0.0.0 (2014-07-22)Addall_.Addany_.Addat.Addbisect_left.Addcollect.Addcollections.Addcompact.Addcontains.Adddetect.Adddifference.Adddrop.Addeach.Addeach_right.Addevery.Addfilter_.Addfind.Addfind_index.Addfind_where.Addfirst.Addflatten.Addhead.Addinclude.Addindex_of.Addinitial.Addintersection.Addlast.Addlast_index_of.Addmap_.Addobject_.Addpluck.Addrange_.Addrest.Addselect.Addsome.Addsorted_index.Addtail.Addtake.Addunion.Adduniq.Addunique.Addunzip.Addwhere.Addwithout.Addzip_.Addzip_object.MIT LicenseCopyright (c) 2020 Derrick GillandPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.