Skip to main content

Simple utilities for dev work.

Project description

BSD3 License

short

Utility functions for bots. Used in botskeleton (and all the bots that use it) and puckfetcher.

long

These are in the order defined in bottilities.py, which in turn is basically defined by order of creation. Not really organized nicely, sorry.

Methods

ensure_dir(directory)

Create directory if it doesn’t exist.

expand(directory)

Expand ~ to $HOME, and expand other environment variables to their values, in the provided path. Designed for UNIX-based platforms: unclear what will happen on others.

generate_downloader(headers, args, max_per_hour=30)

Produce a callable downloader. Provide headers for URL call, and provide some args (for the rate limiting (see that later in the document)), which will be used to identify this function in rate-limiting. max_per_hour is optional: use it to decide how many times per hour downloads can happen. The default is 30 times per hour. The returned downloader is called as follows:

downloader = generate_downloader({"foo": "bar"}, "an identifier string")
downloader(url=url, dest=dest)

where url is where to download FROM and dest is where to SAVE the file. It will make the directory for the file if it does not exist. A text progress bar is shown during download, and while rate limit is blocking.

max_clamp(val, limit)

Return val if it is less than limit, otherwise return limit.

parse_int_string(int_string)

Given a string like “1 23 4-8 32 1”, return a unique list of those integers in the string, and the integers in the ranges in the string. For this example, the output would be [1, 4, 5, 6, 7, 8, 23, 32]. Non-numbers ignored. Not necessarily sorted

rate_limited(max_per_hour, *args)

A decorator to rate-limit a function (ensures that it runs no more than max_per_hour times per hour by sleeping sometimes). Called like this:

@util.rate_limited(120, name)
def a_function(var1, var2="foo"):

sanitize(filename, platform=None)

Remove disallowed characters from potential filename. Provide platform to sanitize for that platform, otherwise current platform is found and used.

set_up_logging(log_filename="log", verbosity=0)

Set up a logger with reasonable settings. Return it for log calls.

random_line(file_path, encoding=FORCED_ENCODING)

At time of writing, FORCED_ENCODING is “UTF-8”. Refer to code for latest. Return a line from the provided file at random.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

bottilities-1.4.0-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file bottilities-1.4.0-py3-none-any.whl.

File metadata

  • Download URL: bottilities-1.4.0-py3-none-any.whl
  • Upload date:
  • Size: 10.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.8

File hashes

Hashes for bottilities-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 67a90e917c761819b3694803216150b31fc46de4497581f0bfa9fc7a7a8720bb
MD5 c7f7dab948bef78f34a29d82b478e4a3
BLAKE2b-256 6525ec10d63fc234275606d8ea7bd162d333fb7cb8d7001c10575d23fb86b019

See more details on using hashes here.

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