Skip to content
View EpicStuff's full-sized avatar

Highlights

  • Pro
Block or Report

Block or report EpicStuff

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
EpicStuff/README.md

EpicStuff

A few (currently only 3) somewhat useful (Epic) python objects/functions (Stuff)

Installation

pip install epicstuff

Bar

Makes using nested progress bars from rich.progress easier

  • Example:

basically replaces

from rich.progress import Progress

with Progress() as progress:
	task = progress.add_task("task", total=100)
	for i in range(100):
		sub_task = progress.add_task("subtask", total=100)
		for j in range(100):
			time.sleep(0.01)  # some task

			progress.update(sub_task, advance=1)

		progress.remove_task(sub_task)
		progress.update(task, advance=1)

with

from epicstuff import Bar

with Bar() as bar:
	for i in bar(range(100)):
		for j in bar(range(100), transient=True):
			time.sleep(0.01)  # some task

with minor extra features (fancier default bar)

Dict

Lets you access a dictionary's keys as attributes

new version

Simpler than Bar (and faster i think) and with more features (basically only recursive conversion) than jdict (and without some of the "extra" stuff)

  • Example:
from epicstuff import Dict

d = Dict({"a": 1, "b": {"c": 2, "d": 3}})

print(d.b.c)  # 2

old version

"Wraps" a target instead of converting it into a (new) Dict object. Useful for when your "target" is say, a CommentedMap and you don't want to loose the comments

  • Example:
from epicstuff import Dict

d = Dict({"a": 1, "b": {"c": 2, "d": 3}}, _convert=False)  # ignore the unexpected-keyword-arg warning

# d._t points to the original dictionary

print(d.b)  # {'c': 2, 'd': 3}

downsides: currently no recursive "wrapping" and is "messier" than the new Dict in VSCode debugger

Timer

a simple timer to time execution of code a code segment

  • Example:
from epicstuff import timer

with timer():
	pass  # some code

# outputs: Time elapsed: 0.0 seconds
# message can be changed by passing a string with {} to timer

TODO:

  • when doing bar in bar with the second bar being transient, make so that the dots continue from where the previous bar left off
  • implement auto transient for bar in bar
  • add and implement simple=False for .Bar.track()

Stuff:

  • Note to self:
    • "self install" using pip install -U -e .
    • build by running python -m build then twine upload dist/*

Pinned

  1. MangaRock-2.0 MangaRock-2.0 Public

    The spiritual successor to MangaRock

    Python 1

  2. EpicStuff EpicStuff Public

    A few somewhat useful (Epic) python objects/functions (Stuff)

    Python 1

  3. AO3_custom_sort_and_filter AO3_custom_sort_and_filter Public

    HTML 1

  4. Lemmit Lemmit Public

    "Fork"ed from https://gitlab.com/sab_from_earth/lemmit

    HTML