Skip to main content

AttrDictX

PyPI License

Overview

AttrDictX is a lightweight Python package that allows seamless access to dictionary values as if they were class attributes. This package offers an elegant and dependency-free solution, enhancing code legibility and ease of use.

Unlike traditional dictionary access (random_dict["key"]), AttrDictX simplifies the process (random_dict.key), saving three characters per access. Additionally, it supports nested dictionaries and is free of any dependency-related errors, addressing limitations present in other packages like attrdict.

Installation

To install attrdictx, you can use pip:

pip install attrdictx

Alternatively, you may just copy & paste the following source code to use this package:

class AttrDictX(dict):
    def __init__(self, *args, **kwargs):
        super(AttrDictX, self).__init__(*args, **kwargs)
        for key, value in self.items():
            if isinstance(value, dict):
                self[key] = AttrDictX(value)

    def __getattr__(self, name):
        if name in self:
            return self[name]
        raise AttributeError(f"'AttrDictX' object has no attribute '{name}'")

    def __setattr__(self, name, value):
        self[name] = value

Usage

After importing the AttrDictX class (when import AttrDict also works), you can create an instance from your dictionary and access values like class attributes.

from attrdictx import AttrDictX

# Example: configuration for a random web app
config = {
    'database': {
        'host': 'localhost',
        'port': 5432,
        'username': 'my_user',
        'password': 'my_password'
    },
    'api_keys': {
        'weather_api': 'abc123def456',
        'news_api': 'xyz789'
    },
    'cache_enabled': True
}

# Create an AttrDictX instance from the configuration dictionary
app_config = AttrDictX(config)

# Accessing configuration settings with recursive attributes
print(app_config.cache_enabled)
# => True

print(app_config.api_keys.weather_api)
# => abc123def456

Contributions

We welcome contributions from the community to improve and expand AttrDictX. If you encounter any issues, have suggestions, or want to contribute code, feel free to open an issue or submit a pull request on our GitHub repository: https://github.com/kyo-takano/AttrDictX

License

AttrDictX is released under the MIT License.

Release files for attrdictx 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for attrdictx 0.1.0
File Size Uploaded
attrdictx-0.1.0.tar.gz 2.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for attrdictx 0.1.0
File Interpreter ABI Platform
attrdictx-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 6.5 kB

Release files / attrdictx-0.1.0.tar.gz

Download URL attrdictx-0.1.0.tar.gz
Size 2.7 kB
Tags Source
SHA-256 checksum
How to use checksums
43c2c92b0c15a2c2b33abfc99402f631d075c3190f99fb9dd2443c830521fca8
BLAKE2b-256 checksum
How to use checksums
aba7ecb6301108c4f57d8153233ef57cd1421d7f2708640f41f50e04c4f7a965
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.2

Release files / attrdictx-0.1.0-py3-none-any.whl

Download URL attrdictx-0.1.0-py3-none-any.whl
Size 3.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6adb9f2335c7ac5b8c92b875844329bd44601088e1d19c0e629ad4925ea7aa27
BLAKE2b-256 checksum
How to use checksums
cbeb081edbbc67f0509294ab47c613586b114a58a20cb3e3af27ed475bc80a11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.2

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page