Socket
Socket
Sign inDemoInstall

immutable-config

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

immutable-config

Create immutable namedtuple from dict


Maintainers
1

=========== Readme File

.. image:: https://app.travis-ci.com/dduraipandian/immutable.svg?token=HYyTsSU9ynxiqecjxoc5&branch=main :target: https://travis-ci.com/dduraipandian/immutable :alt: Travis CI

.. image:: https://codecov.io/gh/dduraipandian/immutable/branch/main/graph/badge.svg :target: https://codecov.io/gh/dduraipandian/immutable :alt: codecov test coverage

.. image:: https://img.shields.io/badge/License-MIT-blue.svg :target: https://opensource.org/licenses/MIT :alt: MIT License

Immutable

.. inclusion-marker-do-not-remove-start

Immutable library helps to convert python dictionary to namedtuples and converting values to immutable datastructure recursively. Namedtuples, by default, are immutable. You can't modify them. But If you have nested data structures, you can still modify them.

Immutable library tries to provides a function to convert them immutable and creates namedtuple from the converted dict.

Dict -> MappingProxyType

List -> Tuple

Set -> Frozenset

UseCase

When "global variables as configuration" should be shared across the project, library will help to make config immutable.

.. inclusion-marker-do-not-remove-end

.. topic:: How to install

.. code-block:: html

    pip install immutable

.. topic:: Requirements

Python 3.6 and above

Code Example

.. code-block:: python

from immutable.immutable import immutable

LOGGING = {
    'formatters': {
        'verbose': {
            'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}',
            'style': '{',
        },
        'simple': {
            'format': '{levelname} {message}',
            'style': '{',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['console'],
            'propagate': True,
        },
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': False,
        },
        'myproject.custom': {
            'handlers': {'console', 'mail_admins'},
            'level': 'INFO',
            'filters': ['special']
        }
    }
}

config = immutable('LoggingConfig', LOGGING, only_const=False, recursive=True)

Options

only_const (default = False)

It will create namedtuple from all dictionary keys. When it is set to :code:True, it will only create namedtuple from :code:constants (all caps variables).

recursive (default = False)

Only first level of key-vales are immuted, when it is set to :code:False. When it is set to :code:True, all the key-values are traversed and converted to immutable.

clone (default = True)

Clone the given dictionary and mutates it. deepcopy is a costly operation when dictionary is to many levels of nested with basic python data structure (list, tuple, set, dict).

Setting it to :code:False will improve the performance, but it will mutate the data given to immutable function. So use :code:False, when you do not need to access the data after making it immutable.

properties

Immutable function takes all the key from data given and creates namedtuple from that. If you want to create namedtuple with selected keys, you can pass properties :code:iterable to filter from data.

License

This project is licensed under the MIT License - see the LICENSE <LICENSE>_ file for details

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc