Skip to main content

Leaf is a small (just two .py files) on-demand hierachical filesystem database.

Project description

LEAF

Leaf is a small (just two .py files) on-demand hierachical filesystem database.

Install

pip install leaf-BasedLabs

Example usage

import os
import shutil

from leaf import DirectoryObject, FileObject

root_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'files')
os.mkdir(root_dir)

root = DirectoryObject(root_dir)
directory: DirectoryObject = root.add_directory('test')
print(os.path.isdir(os.path.join(root_dir, 'test'))) # True

f1: FileObject = directory.add_file('first_file.json')
f2: FileObject = directory.add_file('second_file.json')
print(os.path.isfile(os.path.join(root_dir, 'test', 'first_file.json'))) # True

# Find a file recursively
f3: FileObject | None = root.first_or_default(lambda o: o.name == 'first_file.json', recursive=True)
print(f1 == f3) # True

# Get children
for children in directory.children:
    print(children)
# FILE: D:\PycharmProjects\leaf\leaf\src\files\test\first_file.json
# FILE: D:\PycharmProjects\leaf\leaf\src\files\test\second_file.json

# Get descendants
for desc in root.descendants:
    print(desc)
# DIRECTORY: D:\PycharmProjects\leaf\leaf\src\files\test
# FILE: D:\PycharmProjects\leaf\leaf\src\files\test\first_file.json
# FILE: D:\PycharmProjects\leaf\leaf\src\files\test\second_file.json

# Write contents
f1.write_string('hello')
print(f1.read_string())
# hello

shutil.rmtree(root_dir)

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

leaf_BasedLabs-0.0.3.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

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

leaf_BasedLabs-0.0.3-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file leaf_BasedLabs-0.0.3.tar.gz.

File metadata

  • Download URL: leaf_BasedLabs-0.0.3.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.1

File hashes

Hashes for leaf_BasedLabs-0.0.3.tar.gz
Algorithm Hash digest
SHA256 f3a3505c089eb6ca1138b2327f4c70fdae01db74e9cd550ff95bbacc9cb0d39e
MD5 db8b54820cce9bf0c56e3273ca03bcaf
BLAKE2b-256 79c074b20e8f0a492bd122d90b48115e27d9c36a5b5391575f9c95a5e9c584e8

See more details on using hashes here.

File details

Details for the file leaf_BasedLabs-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: leaf_BasedLabs-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.1

File hashes

Hashes for leaf_BasedLabs-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 993521de5eb3c5419a2619afcd39eaf25eaa3141870a40e3cae843294396f334
MD5 1e7fa7e7190e4d08b22187383d42ff11
BLAKE2b-256 33112ef8a0c78c8799d4b8c54e795bede5bdafbff9d05d34e682f9e854a14474

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