Skip to main content

Virtuals

Virtual Python collections over any storage.

Dict, list, set, indexed dict, tree — they look and feel like native Python, but they don't physically exist as in-memory collections. They're virtual: lazy views that compose data structure logic over flat tuple-key storage. Any backend that implements the storage protocol gets every data structure for free.

Like SQLAlchemy for Python collections. No SQL, no specific backend. Define your structure, plug in a store.

PyPI: virtuals-py | Import: virtuals

What It Does

from virtuals import View, Container
from virtuals.storages.mem import InMemoryStorage
from virtuals.codecs import NoOpCodec

storage = InMemoryStorage(codec=NoOpCodec())
storage.open()

with storage.transaction() as tx:
    users = DictView.open_root(tx)
    users["alice"] = {"name": "Alice", "age": 30}
    users["bob"] = {"name": "Bob", "age": 25}

    # Navigate naturally
    for user_id, profile in users.items():
        print(f"{user_id}: {profile['name']}")

# Under the hood: flat KV pairs with tuple keys
# ("users", "alice", "name") -> "Alice"
# ("users", "alice", "age")  -> 30

Three Layers

Layer 1: Storage

Generic tuple-key KV store with lexicographic ordering.

storage.put(("users", "alice", "name"), "Alice")
value = storage.get(("users", "alice", "name"))

Layer 2: Container

Hierarchy and parent-child relationships over flat keys.

container = Container(storage, ("users", "alice"))
container.create()
children = container.children()  # ["name", "age"]

Layer 3: View

Data structure abstractions (dict, list, set) over containers.

users = DictView.open_root(tx)
users["alice"] = "data"

Installation

pip install virtuals-py
pip install virtuals-py[rocksdb]  # with RocksDB backend

Features

  • Virtual collections: Work with dicts, lists, sets over any KV backend
  • Tuple keys: Natural hierarchical addressing with lexicographic ordering
  • Backend agnostic: Works with any ordered KV store (RocksDB, LMDB, in-memory)
  • Observable: Watch for changes at any level of the hierarchy
  • Transactional: Full ACID support when the backend provides it
  • Lazy: Nothing materializes until accessed

License

Apache-2.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

virtuals_py-0.1.5.tar.gz (168.2 kB view details)

Uploaded Source

Built Distribution

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

virtuals_py-0.1.5-py3-none-any.whl (240.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: virtuals_py-0.1.5.tar.gz
  • Upload date:
  • Size: 168.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for virtuals_py-0.1.5.tar.gz
Algorithm Hash digest
SHA256 aa532c28d4313ba0c2b66d212fa95daca572cbcdbb03e5e585132885b613816b
MD5 c5f4e922c0b46742d1619aeab10291db
BLAKE2b-256 036d6f356d5011afa548c88baee01418d192f88e5cfe881866111e42dbc4f0a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for virtuals_py-0.1.5.tar.gz:

Publisher: publish-py.yml on nustackdev/virtuals

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: virtuals_py-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 240.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for virtuals_py-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 95f7864ebc2ba5083a5ee6f05531dd40e367944e2ccb85429483f8abb7ae503b
MD5 f96aad30aefaf18e455e0d3a2491ac32
BLAKE2b-256 9f035f5c907fcc9792fccb98f74da93f73ad75d0173aec586415769d676296fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for virtuals_py-0.1.5-py3-none-any.whl:

Publisher: publish-py.yml on nustackdev/virtuals

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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