Skip to main content

lagoon

Concise layer on top of subprocess, similar to sh project.

This README is auto-generated, see project wiki for details.

Commands

dirpile

Using OverlayFS create a merged view of the given (read only) dirs plus a (writable) temporary dir, print its path, and stay running until stdin is closed. The first given directory is the lowest in the pile (this is unlike the lowerdir mount option). This program requires root and is designed to be invoked via sudo.

API

dkrcache

NORMAL

Accept normal outcomes.

ABRUPT

Accept abrupt outcomes.

ALWAYS

Accept all outcomes.

NEVER

Do not accept any outcome.

ExpensiveTask Objects

class ExpensiveTask()

Arbitrary task accelerated by Docker cache.

__init__
def __init__(context, discriminator, task)

Create a task keyed by context directory and discriminator string.

run
def run(force=NEVER, cache=NORMAL)

Run the task, where force can be used to ignore a cached outcome, and cache can be used to deny caching an outcome.

dkrcache.util

ContextStream Objects

class ContextStream()

Fully customisable docker build context.

open
@classmethod
@contextmanager
def open(cls, dockerstdin)

Attach to the given stdin of docker build, which should have been given - as context.

put
def put(name, path)

Add the given path as the given archive name.

putstream
def putstream(name, stream)

Add the given stream as the given archive name.

mkdir
def mkdir(name)

Create a directory in the context.

iidfile
@contextmanager
def iidfile()

Context manager yielding an object with args to pass to docker build, and a read function to get the image ID.

lagoon.binary

Like lagoon.text module but ProgramHandle objects are in binary mode.

lagoon.program

Program Objects

class Program()

Normally import an instance from lagoon.text or lagoon.binary module instead of instantiating manually.

text
@classmethod
def text(cls, path)

Return text mode ProgramHandle for the executable at the given path.

binary
@classmethod
def binary(cls, path)

Return binary mode ProgramHandle for executable at given path.

ProgramHandle Objects

class ProgramHandle(Parabject)

__getattr__
def __getattr__(name)

Add argument, where underscore means dash.

__getitem__
def __getitem__(key)

Apply a style, e.g. partial to suppress execution or print to send stdout to console.

__call__
def __call__(*args, **kwargs)

Run program in foreground with additional args. Accepts many subprocess kwargs. Use partial style to suppress execution, e.g. before running in background. Otherwise return CompletedProcess, or one of its fields if the rest are redirected, or None if all fields redirected.

__enter__
def __enter__()

Start program in background yielding the Popen object, or one of its fields if the rest are redirected.

NOEOL Objects

@singleton
class NOEOL()

Style to strip trailing newlines from stdout, in the same way as shell does.

ONELINE
def ONELINE(text)

Style to assert exactly one line of output, using splitlines.

lagoon.sic.binary

Commands with an underscore already in their name, binary mode.

lagoon.sic.text

Commands with an underscore already in their name, text mode.

lagoon.terminal

lagoon.text

Text mode instances of ProgramHandle for every executable, with dash translated to underscore e.g. from lagoon.text import pkg_config for pkg-config.

lagoon.url

lagoon.util

atomic
@contextmanager
def atomic(path)

Context manager yielding a temporary Path for atomic write to the given path. Parent directories are created automatically. Also suitable for making a symlink atomically. Leaves the given path unchanged if an exception happens.

threadlocalproperty Objects

class threadlocalproperty()

Like property but each thread has its own per-object values.

__init__
def __init__(defaultfactory)

The defaultfactory should return the initial value per object (per thread).

mapcm
@contextmanager
def mapcm(f, obj)

Invoke obj as a context manager, apply f to its yielded value, and yield that. For example apply Path to the string yielded by TemporaryDirectory().

stripansi
def stripansi(text)

Remove ANSI control sequences from the given text, to make it black and white.

HarnessCase Objects

class HarnessCase(TestCase)

Enter context managers in setUp and exit them in tearDown.

harness
def harness()

Must yield exactly once.

wrappercli
def wrappercli()

Same as sys.argv[1:] if -- is present there, otherwise -- is prepended. This is for sending all options to a wrapped command by default.

multifork

screen

GNU Screen interface, smoothing over its many gotchas.

stuffablescreen
def stuffablescreen(doublequotekey)

Return text mode ProgramHandle for screen, with the given environment variable set to double quote.

Stuff Objects

class Stuff()

__init__
def __init__(session, window, doublequotekey)

Target the given screen session and window, using the given environment variable for double quote.

__call__
def __call__(text)

Send the given text so that it is received literally.

eof
def eof()

Send EOF, may have no effect if not at the start of a line.

Metadata

Release files for lagoon 63

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

Source distribution (sdist)

Source distribution for lagoon 63
File Size Uploaded Provenance Actions
lagoon-63.tar.gz 18.3 kB Without provenance Details for lagoon-63.tar.gz

Built distribution (wheel)

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

Total release size: 38.0 kB

Release files / lagoon-63.tar.gz

Download URL lagoon-63.tar.gz
Size 18.3 kB
Tags Source
SHA-256 checksum
How to use checksums
efaab9cc46abe17242d6c7e4f957cb97b4687469c324ec97b99ad700e514c970
BLAKE2b-256 checksum
How to use checksums
fd2e5b470b6e95131fc2f85c22844758d68aa98a3b5ca808b7b0a973cf9c84e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.12

Release files / lagoon-63-py3-none-any.whl

Download URL lagoon-63-py3-none-any.whl
Size 19.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a964768fb999ece34f74d9907bc20cb4dd9d4f5e84eee1656781121df871093f
BLAKE2b-256 checksum
How to use checksums
2edfccd6a13bd9a0013ad000699906c40a548bb1ac1bfd86a10b80d10ef66b64
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.12

Security for lagoon 63

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

63 This release

2 release files No provenance

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