Skip to main content

jblib

Author: Justin Bard

This module was written to minimize the need to write the functions I use often.

INSTALL: python3 -m pip install jblib


The source code can be viewed here: https://github.com/ANamelessDrake/jblib

More of my projects can be found here: http://justbard.com


from jblib import cd

    class cd()

        Example:
            with cd(directory):
                print (os.getcwd())

            print (os.getcwd()) ## Back at the originating directory on exit

from jblib import Color, BgColor, jbcolor, gradient, rainbow, fade, cycle, pulse, border

    Modern Terminal Color Utilities

    CLASSES:
        Color   -- Foreground color and text attribute constants for f-string use
        BgColor -- Background color constants for f-string use

    FUNCTIONS:
        jbcolor(text, fg=None, bg=None, bold=False, dim=False, italic=False,
                underline=False, reverse=False, strikethrough=False)
        gradient(text, start, end, bold=False)
        rainbow(text, bold=False)
        fade(text, start, end, bold=False)
        cycle(text, colors, bold=False)
        pulse(text, start, end, cycles=3, speed=0.05, steps=20, bold=False)
        border(content, title=None, color=None, title_color=None, padding=1,
               vpadding=0, width=None, rounded=False, fullwidth=False, margin=1)

    AVAILABLE COLORS:
        Standard:  BLACK, RED, GREEN, YELLOW, BLUE, PURPLE, TEAL, WHITE
        Bright:    BRIGHT_BLACK, BRIGHT_RED, BRIGHT_GREEN, BRIGHT_YELLOW,
                   BRIGHT_BLUE, BRIGHT_PURPLE, BRIGHT_TEAL, BRIGHT_WHITE
        RGB Named: ORANGE
        Attributes (Color only): BOLD, DIM, ITALIC, UNDERLINE, REVERSE, STRIKETHROUGH
        Reset: OFF / RESET

    EXAMPLES:

        ## Color constants in f-strings
        print(f"{Color.RED}red text{Color.OFF}")
        print(f"{Color.BOLD}{Color.ORANGE}bold orange{Color.OFF}")
        print(f"{BgColor.YELLOW}{Color.BLACK}highlighted{Color.OFF}")

        ## jbcolor() with auto-reset -- named colors or RGB tuples
        print(jbcolor("Error", fg="red", bold=True))
        print(jbcolor("Custom", fg=(128, 0, 255), bg=(0, 0, 0)))
        print(jbcolor("Warning", fg="black", bg="yellow"))

        ## Concatenation works naturally
        msg = "Result: " + jbcolor("PASS", fg="green", bold=True) + " - done"

        ## Gradient -- smooth fade from one color to another
        print(gradient("Hello World", "red", "blue"))
        print(gradient("Smooth", (255, 0, 0), (0, 0, 255), bold=True))

        ## Rainbow -- full spectrum across characters
        print(rainbow("Rainbow Text!"))

        ## Fade -- color to color and back (bounce effect)
        print(fade("Breathing effect", "red", "blue"))

        ## Cycle -- hard switch through a list of colors per character
        print(cycle("Alternating!", ["red", "blue", "green"]))
        print(cycle("Flag", [(255, 0, 0), (255, 255, 255), (0, 0, 255)]))

        ## Pulse -- animated in-place color transition
        pulse("ALERT", "red", "yellow", cycles=5)
        pulse("Loading...", "purple", "teal", cycles=0)  ## Infinite (Ctrl+C to stop)

        ## Border -- wrap content in a Unicode box
        print(border("Hello World", title="Greeting", color="blue"))
        print(border("Spacious", title="Info", color="teal", rounded=True, vpadding=1))
        print(border("Line 1\nLine 2\nLine 3", title="Status", color="green", rounded=True))
        print(border(jbcolor("PASS", fg="green", bold=True), title="Result", color="green"))
        print(border("Full width box", title="Wide", color="blue", fullwidth=True))
        print(border("Custom margin", title="Indented", color="green", fullwidth=True, margin=4))

(Deprecated) Python 3.8 or earlier: from jblib import hilight

(Deprecated) Python 3.9 or later: from jblib import hilightV2

    DEPRECATED: Use Color, BgColor, and jbcolor() instead.

    class hilight(string).color(highlight=True, bold=True)

    EXAMPLE:
        print (hilight("Hello World").red(bold=True))

        Or you could make an object:
            text = hilight("Bar")

            print ("Foo "+text.blue())

        To return the original string:
            print (text.string)

    COLORS:
        red
        green
        yellow
        blue
        purple
        teal
        white

    FUN FACTS:
        * This class is loosely based off the very first bit of python code I ever wrote. It was initially created while teaching myself python.
        * This module was intentionally misspelled to shorten the keystrokes needed during use.

from jblib import convert_module

    Module to convert various data

            def convert_time_from_seconds(seconds_given)
                Converts a seconds into minutes, hours and days.

            def IP2Int(ip)
                Converts a IPv4 address to a interger - This is useful to store IP addresses in databases

            def Int2IP(ipnum)
                Converts a interger back to an IPv4 address

            def urlcode(url, encode=False)
                Wrapper for urllib.parse.quote and urllib.parse.unquote.
                From urllib docs - Replace special characters in string using the %xx escape. Letters, digits, and the characters '_.-' are never quoted. By default, this function is intended for quoting the path section of URL.
                - https://docs.python.org/3.1/library/urllib.parse.html?highlight=urllib#urllib.parse.quote

from jblib import HTMLgen

        Basic HTML generator
        02/09/2019

        class HTMLgen(head=False, tail=False, lang="en", docType="html")

        FUNCTIONS:
            title(self, title, scripts=None, css=None)
            body.add(content)
            tag(tag, content=False, close=True, cssclass=None)
            image(src, alt=None, srcset=None, height=None, width=None, style=None, cssclass=None)
            br() <-- Returns a </ br> tag
            div(cssclass) <-- Not yet implemented
            table() -- Class Object
                table.add_row()
                table.produce_table()

        EXAMPLE:
            page = HTMLgen(True, True)
            page.title("This is the page Title", scripts="foo.js bar.js", css="styles.css nav.css")
            page.body.add(page.image("images/frontpage.jpg", width="100%"))
            page.body.add(page.tag("h1", "This is a header line"))
            page.body.add("This is another line")

            ## Creating a table
            test_table = HTMLgen.table()
            test_table.add_row(["column data 1", "column data 2", "column data 3"])
            test_table.add_row(["column data 4", "column data 5", "column data 6"])

            ## And finally we add the table to the rest of the page
            page.body.add(test_table.produce_table())


            page.return_html()

            ```
                <!DOCTYPE html>
                <html lang="en>
                    <head>
                        <title>This is the page Title</title>
                        <link rel="stylesheet" href="styles.css">
                        <link rel="stylesheet" href="nav.css">
                        <script src="foo.js"></script>
                        <script src="bar.js"></script>
                    </head>
                <body>
                    <img src="images/frontpage.jpg" width="100%">
                    <h1>This is a header line</h1>
                    This is another line
                   	<table>
                        <tr>
                            <td>column data 1</td><td>column data 2</td><td>column data 3</td>
                        </tr>
                        <tr>
                            <td>column data 4</td><td>column data 5</td><td>column data 6</td>
                        </tr>

                    </table>

                </body>
                </html>
            ```

from jblib import progress_bar

    Progress Bar
    02/25/2019

    FUNCTIONS:
        progress_bar(progress, barLength=50, text_field="Progress")

    EXAMPLE:
        counter = 0
        for i in range(100):
            counter += 1
            i = counter/100
            progress_bar(i, 50)
            sleep(0.1)

    Progress: [#########################-------------------------] 50.0%

from jblib import colored_progress_bar

    Colored Progress Bar
    10/10/2023

    FUNCTIONS:
        colored_progress_bar(progress, barLength=50, text_field="Progress")

    EXAMPLE:
        counter = 0
        for i in range(100):
            counter += 1
            i = counter/100
            colored_progress_bar(i, 50)
            sleep(0.1)

    Progress: [#########################-------------------------] 50.0%

from jblib import StreamToLogger

    DESCRIPTION:
        Fake file-like stream object that redirects writes to a logger instance.

    CLASS:
        StreamToLogger(object)
    EXAMPLE:
        if log_enabled: ## If true, all standard output and standard error to the console will be disabled
            # create logger
            logging.basicConfig(format='%(asctime)s - %(message)s', datefmt='%Y%m%d %H:%M:%S', filename=log_file)
            logger = logging.getLogger(__name__)
            logger.setLevel(logging.DEBUG)

            logger.propagate = False
            fh = logging.FileHandler(log_file, "a")
            fh.setLevel(logging.DEBUG)
            formatter = logging.Formatter(fmt='%(asctime)s - %(message)s', datefmt='%Y%m%d %H:%M:%S')
            fh.setFormatter(formatter)
            logger.addHandler(fh)
            keep_fds = [fh.stream.fileno()]

            stdout_logger = logging.getLogger('STDOUT')
            sl = StreamToLogger(stdout_logger, logging.INFO)
            sys.stdout = sl

            stderr_logger = logging.getLogger('STDERR')
            sle = StreamToLogger(stderr_logger, logging.ERROR)
            sys.stderr = sle

from jblib import build_date_array

    Build Date Arrays
    02/27/2019

    FUNCTIONS:
        build_date_array(days=1, start_date=str(datetime.date.today()), date_format='%Y-%m-%d', mon=True, tues=True, wed=True, thur=True, fri=True, sat=True, sun=True, weekend=True):

    EXAMPLE:
        dates = build_date_array(days=7, weekend=False)
        dates
            ['2019-02-27', '2019-02-28', '2019-03-01', '2019-03-02', '2019-03-03', '2019-03-05', '2019-03-06']

Release files for jblib 1.11.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jblib 1.11.0
File Size Uploaded
jblib-1.11.0.tar.gz 19.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jblib 1.11.0
File Interpreter ABI Platform
jblib-1.11.0-py3-none-any.whl Python 3 none any Details

Total release size:38.1 kB

Release files / jblib-1.11.0.tar.gz

Download URL jblib-1.11.0.tar.gz
Size 19.3 kB
Tags Source
SHA-256 checksum
How to use checksums
fedf92f3f9895321f15edaf4561b5ad491ceca8fea3615230e87b62892b39e54
BLAKE2b-256 checksum
How to use checksums
15b9128f2c1179db68d1b34195efd377f38a5441c119987830274bd449309f55
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.11

Release files / jblib-1.11.0-py3-none-any.whl

Download URL jblib-1.11.0-py3-none-any.whl
Size 18.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f343593222cdab22debf270357023018c80d1ce6b1cb062b1c50eef80e2b7043
BLAKE2b-256 checksum
How to use checksums
577d0a339ee2f20ee45f7e43b89fb604c48459f0ee9941b487a258eb46921db1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.11
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page