Skip to main content

microenv

PyPI version License

A minimal Python environment abstraction with privacy controls and async “next” subscriptions.

Installation

pip install microenv

or

python -m pip install microenv

or

python3 -m pip install microenv

Quickstart

import asyncio
from microenv import microenv

# Define initial data and optional descriptor
data = {"public": 1, "secret": "s3cr3t"}
descriptor = {
    "children": [
        {"key": "public", "type": "number"},
        {"key": "secret", "type": "string", "private": True},
    ]
}

# Create the environment
env = microenv(obj=data, descriptor=descriptor)
face = env.face

# Basic get / set via the face
print(face.public)         # → 1
face.public = 42
print(env.data["public"])  # → 42

# Privacy: direct .secret bypasses privacy checks on the face
print(face.secret)         # → "s3cr3t"
face.secret = "new!"
print(env.data["secret"])  # → "new!"

# Async “next” subscription: await the next update to a key
async def wait_for_update():
    fut = env.get("public", next_=True)
    print("waiting for next public…")
    val = await fut
    print("new public value:", val)

# Schedule waiter and then update
loop = asyncio.get_event_loop()
loop.create_task(wait_for_update())
loop.call_soon(lambda: setattr(face, "public", 99))
loop.run_forever()

API

  • microenv(obj: dict, descriptor: dict = None) → MicroEnv
    • env.face : proxy for getting/setting properties.
    • env.get(key, caller=None, next_=False) : synchronous read or, if next_=True, a Future resolving on next set.
    • env.set(key, value, caller=None) : update a property, resolving any pending “next” futures.

License

This project is licensed under the MIT License.
See LICENSE for details.

Release files for microenv 0.1.5

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

Source distribution (sdist)

Source distribution for microenv 0.1.5
File Size Uploaded
microenv-0.1.5.tar.gz 6.6 kB Details

Built distribution (wheel)

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

Total release size: 10.8 kB

Release files / microenv-0.1.5.tar.gz

Download URL microenv-0.1.5.tar.gz
Size 6.6 kB
Tags Source
SHA-256 checksum
How to use checksums
a5f4e3aab2831666878735a0a9bd651702d8ac6b6fcedf4db666145f7e1d0009
BLAKE2b-256 checksum
How to use checksums
0521c10c38ed67e16b33826f22b40572d770964c6fdd5c0d5f8b6c6472431803
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.2

Release files / microenv-0.1.5-py3-none-any.whl

Download URL microenv-0.1.5-py3-none-any.whl
Size 4.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
20e0647561660a1f5414b64bd93911eba43080c9de99a9e0780e6deb69a518e5
BLAKE2b-256 checksum
How to use checksums
b30c552e85f4fa5c39e98ada96f2874ae5090ba4e3668e7fa3751721c4ece495
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.2

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

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