Skip to main content

Functional dependency paradigm

Project description

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.

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.1.2.tar.gz (6.9 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.1.2-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for microenv-0.1.2.tar.gz
Algorithm Hash digest
SHA256 196d0ae5aa2c7315ac01ed898a1da6049aeb415d3c213f4704bfb2c2a6c200ee
MD5 eede986e1eedb302d404198e51f55411
BLAKE2b-256 8c2685a1c9fec437392802dfeace8a4a04768d41ef8b48ed5cf878f6910e7a15

See more details on using hashes here.

File details

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

File metadata

  • Download URL: microenv-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 4.3 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.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 75c56a0e424697bc8a5becccc5306cffd189d0a8df7b70679687ecbe60949606
MD5 74ee1bb73080421650a4aaea1a849c87
BLAKE2b-256 52fdfb60e9535743103755ab498e4ce4ac17c82b5a2251351cb859f167fe5a13

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