Skip to main content

A Python dict that supports attribute-style access as well as hierarchical keys, JSON serialization, ZIP compression, and more.

Project description

objict

objict is a Python library that extends the standard dictionary to allow attribute-style access, hierarchical keys, and additional functionalities like JSON/XML serialization, delta comparison, and more. It's inspired by the uberdict library.

Installation

To install objict, use the following pip command:

pip install pyobjict

Features

  • Attribute Access: Access dictionary values using dot notation (e.g., d.key).
  • Hierarchical Keys: Seamlessly handle nested dictionary structures with keys like a.b.c.
  • Serialization: Convert to/from JSON, XML, and ZIP formats.
  • File Operations: Read from and write to files conveniently.
  • Delta Comparison: Compute differences between two objicts.
  • Resilient Missing Keys: Returns None instead of raising an error for missing attributes.
  • Type Safety and Conversion: Supports type-safe fetching of values.

Basic Usage

from objict import objict

# Creating an objict
d1 = objict(name="John", age=24)
print(d1.name)  # Output: John
print(d1["age"])  # Output: 24

# Adding new attributes
d1.gender = "male"
print(d1.gender)  # Output: male

# Nested objict
d2 = objict(user=d1)
print(d2.user.name)  # Output: John

Advanced Usage

Hierarchical Keys

d3 = objict()
d3.set("address.street", "123 Elm St")
print(d3.address.street)  # Output: 123 Elm St

Serialization

JSON

json_data = d1.to_json(as_string=True, pretty=True)
print(json_data)

XML

xml_data = d1.to_xml()
print(xml_data)

ZIP Compression

zip_data = d1.to_zip(as_string=True)

File Operations

d1.save("data.json")
d3 = objict.from_file("data.json")
print(d3)  # Reconstructed objict from file

Delta Comparison

d4 = objict(name="John", age=25)
changes = d1.changes(d4)
print(changes)  # Output: {'age': 25}

Type Safety and Conversion

dob = d1.get_typed("dob", typed=datetime.datetime)

Handling Missing Keys and Defaults

print(d1.unknown_key)  # Output: None

d1.setdefault("country", "USA")
print(d1.country)  # Output: USA

Utility Methods

  • to_json(): Convert objict to JSON.
  • to_xml(): Convert objict to XML.
  • to_zip(): Compress objict.
  • from_json(json_string): Create objict from JSON.
  • from_file(path): Load objict from a file.
  • copy(shallow=True): Create a copy of the objict.
  • extend(*args, **kwargs): Merge another dictionary into this objict.

Conclusion

objict is a versatile tool for developers who want more flexible dictionary operations in Python. Whether you're dealing with nested data, performing file I/O, or converting data formats, objict simplifies these tasks with a clean and Pythonic interface.

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

pyobjict-2.0.1.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

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

pyobjict-2.0.1-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file pyobjict-2.0.1.tar.gz.

File metadata

  • Download URL: pyobjict-2.0.1.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.10.16 Darwin/24.4.0

File hashes

Hashes for pyobjict-2.0.1.tar.gz
Algorithm Hash digest
SHA256 cc649f768cbc0c0c570b0853d4b933f4c50825da509fea9f4740211fb9f365b7
MD5 7de5704204e9c73098f8dadedbd7fe9b
BLAKE2b-256 8f869cabd2eea8878f0eed4e2ba3a45e10ea8c0b5019a0d38098a50e5d31f7c7

See more details on using hashes here.

File details

Details for the file pyobjict-2.0.1-py3-none-any.whl.

File metadata

  • Download URL: pyobjict-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.10.16 Darwin/24.4.0

File hashes

Hashes for pyobjict-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8091183c9e36fdddc5fbcff06eb1155641ea53d3654529cdea2ee38bf5f93c82
MD5 0311f745e779c5fc0002e4b7c4b06244
BLAKE2b-256 e91f8f0b611ed9146a3932f2a1d792092526bd63157f0ce0491757fcd7d4a124

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