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.5.tar.gz (6.6 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.5-py3-none-any.whl (4.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: microenv-0.1.5.tar.gz
  • Upload date:
  • Size: 6.6 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.5.tar.gz
Algorithm Hash digest
SHA256 a5f4e3aab2831666878735a0a9bd651702d8ac6b6fcedf4db666145f7e1d0009
MD5 0aeeb282744b147c34093b78e877a6a9
BLAKE2b-256 0521c10c38ed67e16b33826f22b40572d770964c6fdd5c0d5f8b6c6472431803

See more details on using hashes here.

File details

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

File metadata

  • Download URL: microenv-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 4.2 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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 20e0647561660a1f5414b64bd93911eba43080c9de99a9e0780e6deb69a518e5
MD5 5f314a2329f801a4ba4d5f2f7ec4174f
BLAKE2b-256 b30c552e85f4fa5c39e98ada96f2874ae5090ba4e3668e7fa3751721c4ece495

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