Skip to main content

Functional dependency paradigm

Project description

microenv

PyPI version GitHub release 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.

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

microenv-0.0.5.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

microenv-0.0.5-py3-none-any.whl (3.4 kB view details)

Uploaded Python 3

File details

Details for the file microenv-0.0.5.tar.gz.

File metadata

  • Download URL: microenv-0.0.5.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for microenv-0.0.5.tar.gz
Algorithm Hash digest
SHA256 5cf1a5d984a9a3bec1a3f8f70d530071a99699445f295a837e3b4dd879ab5580
MD5 f989e53e7919253919e5c822b76626d4
BLAKE2b-256 0bda82c58a71a6e79fab1720e8437c88d69fa3175e68b4f66c208a60e0977f25

See more details on using hashes here.

File details

Details for the file microenv-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: microenv-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 3.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for microenv-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 fbe65fdeb279e71abd3f8041affc96fc253fb4eeda739257328c40d76c8cd778
MD5 7c3fcab07d02f86721b25b5d9dff1443
BLAKE2b-256 f2f81f78b2c5cbb3c2420e164deb61505a4797fc0d99bbc967df25fbe4f1db17

See more details on using hashes here.

Supported by

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