Making Python even more convenient by extending list and dict and pathlib and more.
Project description
Welcome to alexlib
Fill 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:
-
list
is extended toList
- Forget that
for
loops exist, because with this class,for
loops 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.List
is 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 offorEach
method of Arrays.
- Forget that
-
dict
is extended toStruct
.- Combines the power of dot notation like classes and key access like dictionaries.
-
pathlib.Path
is extended toP
P
objects are incredibly powerful for parsing paths, no more than one line of code is required to do any operation. 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 indespensible
pathlib.Path
functionalities. -
Additionally, the package provides many other new classes, e.g.
Read
andSave
. 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 path P
object returns a List
object. You can move back and forth between List
and Struct
and DataFrame
with one method, and so on.
Install
In the commandline:
pip install alexlib
.
Being a thin extension on top of almost pure Python, you need to worry not about your venv, the package is not aggressive in requirements, it installs itself peacefully, never interfere with your other packages. If you do not have numpy
, matplotlib
and pandas
, it simply throws ImportError
at runtime, that's it.
Getting Started
That'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 tb
A Taste of Power
Suppose you want to know how many lines of code in your repository. The procedure is to glob all .py
files 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?
search
returnsList
ofP
path objectsread_text
is aP
method, but it is being run againstList
object. Behind the scenes, responsible black magic fails to find such a method inList
and 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 anotherList
object and returns it.- A similar story applies to
split
which is a method of strings in Python. - Next,
apply
is a method ofList
. Sure enough, it lives up to its apt name and applies the passed functionlen
to all items in the list and returns anotherList
object that contains the results. .to_numpy()
convertsList
tonumpy
array, then.sum
is a method ofnumpy
, which gives the final result.
Methods naming convention like apply
and to_numpy
are inspired from the popular pandas
library, resulting in almost non-existing learning curve.
Friendly interactive tutorial.
Please refer to Here on the main git repo.
Full docs:
Click Here
Author
Alex Al-Saffar. email
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file alexlib-1.9.0.tar.gz
.
File metadata
- Download URL: alexlib-1.9.0.tar.gz
- Upload date:
- Size: 50.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0.post20201207 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 67843ca29270e1a31845d54f2cfc0916f5a36aff4277f11d97944fe74ff88aa1 |
|
MD5 | 5e647d540ba67b655ca8bf60ad0c5631 |
|
BLAKE2b-256 | f5d04ae9f0b3695b3c0b12e0b3de78dfd0e48dcc4155fb5d324ef42ce830c5f4 |
File details
Details for the file alexlib-1.9.0-py3-none-any.whl
.
File metadata
- Download URL: alexlib-1.9.0-py3-none-any.whl
- Upload date:
- Size: 50.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0.post20201207 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb465beea4de0b3d1f1214f71165ec4e0053fb0c5ecb4c32510fe9dd57955ccf |
|
MD5 | 1e00b0fbd79aa56bb98d88b2f49e0bf3 |
|
BLAKE2b-256 | 1fd4e9a2b9a9a643f38de5e74482230a049ff1fed33256a79fb209dce32a2f41 |