Skip to main content

a few somewhat useful objects

Project description

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(dict(), _convert=False)  # ignore the unexpected-keyword-arg warning

# d._t points to the original dictionary

d.x = 1

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/*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

epicstuff-0.1.7.tar.gz (18.1 kB view hashes)

Uploaded Source

Built Distribution

epicstuff-0.1.7-py3-none-any.whl (18.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page