Package: alexlib
Welcome to alexlibFill your life with one-liners, take your code to artistic level of brevity and readability while simultaneously being more productive by typing less boilerplate lines of code that are needless to say.This package extends many native Python classes to equip you with an uneasy-to-tame power. The major classes extended are:listis  extended toListForget thatforloops exist, because with this class,forloops are implicitly used to apply a function to all items.
Inevitably while programming, one will encounter objects of the same type and you will be struggling to get a tough grab on them.Listis a powerful structure that put at your disposal a grip, so tough, that the objects you have at hand start behaving like one object. Behaviour is ala-JavaScript implementation offorEachmethod of Arrays.dictis  extended toStruct.Combines the power of dot notation like classes and key access like dictionaries.pathlib.Pathis  extended toPPobjects are incredibly powerful for parsing paths,nomore than one line of code is required to doanyoperation. Take a shufti at this:path = tb.P("dataset/type1/meta/images/file3.ext")
>> path[0]  # allows indexing!
P("dataset")
>> path[-1]  # nifty!
P("file3.ext")
>> path[2:-1]  # even slicing!
P("meta/images/file3.ext")This and much more, is only on top of the indespensiblepathlib.Pathfunctionalities.Additionally, the package provides many other new classes, e.g.ReadandSave. Together withP, they provide comprehensible support for file management. Life cannot get easier with those. Every class inherits attributes that allow saving and loading in one line.Furthermore, those classes are inextricably connected. For example, globbing a pathPobject returns aListobject. You can move back and forth betweenListandStructandDataFramewith one method, and so on.InstallIn the commandline:pip install alexlib.Being a thin extension on top of almost pure Python, you need to worrynotabout your venv, the package is not aggressive in requirements, it installs itself peacefully, never interfere with your other packages. If you do not havenumpy,matplotlibandpandas, it simply throwsImportErrorat runtime, that's it.Getting StartedThat's as easy as taking candy from a baby; whenever you start a Python file, preface it with following in order to unleash the library:import alexlib.toolbox as tbA Taste of PowerSuppose you want to know how many lines of code in your repository. The procedure is to glob all.pyfiles recursively, read string code, split each one of them by lines, count the lines, add up everything from all strings of code.To achieve this, all you need is an eminently readable one-liner.tb.P.cwd().search("*.py", r=True).read_text().split('\n').apply(len).to_numpy().sum()How does this make perfect sense?searchreturnsListofPpath objectsread_textis aPmethod, but it is being run againstListobject. Behind the scenes,responsible black magicfails to find such a method inListand realizes it is a method of items inside the list, so it runs it against them and thus read all files and containerize them in anotherListobject and returns it.A similar story applies tosplitwhich is a method of strings in Python.Next,applyis a method ofList. Sure enough, it lives up to its apt name and applies the passed functionlento all items in the list and returns anotherListobject that contains the results..to_numpy()convertsListtonumpyarray, then.sumis a method ofnumpy, which gives the final result.Methods naming convention likeapplyandto_numpyare inspired from the popularpandaslibrary, resulting in almost non-existing learning curve.Friendly interactive tutorial.Please refer toHereon the main git repo.Full docs:ClickHereAuthorAlex Al-Saffar.email