Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

frozndict

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

frozndict

frozndict is a memory efficient immutable dictionary.

  • 1.0.11
  • PyPI
  • Socket score

Maintainers
1

========= frozndict

.. image:: https://img.shields.io/badge/License-GPLv3-blue.svg :target: https://github.com/Harmouch101/frozndict/blob/main/LICENSE :alt: License

.. image:: https://img.shields.io/pypi/v/frozndict.svg :target: https://pypi.org/project/frozndict/ :alt: pypi version

.. image:: https://img.shields.io/github/repo-size/Harmouch101/frozndict :target: https://github.com/Harmouch101/frozndict/ :alt: Repo Size

.. image:: https://circleci.com/gh/Harmouch101/frozndict/tree/main.svg?style=svg :target: https://circleci.com/gh/Harmouch101/frozndict/tree/main :alt: Circle ci Build Status

.. image:: https://raw.githubusercontent.com/harmouch101/frozndict/main/assets/pydoc.png :target: https://github.com/Harmouch101/frozndict/ :alt: Banner

frozndict is a python package that acts as an alternative to frozenset, but for dictionaries.

🛠️ Requirements

frozndict requires Python 3.9 or above.

To install Python 3.9, I recommend using pyenv_.

.. code-block:: bash

install pyenv

git clone https://github.com/pyenv/pyenv ~/.pyenv

setup pyenv (you should also put these three lines in .bashrc or similar)

if you are using zsh

cat << EOF >> ~/.zshrc

pyenv config

export PATH="${HOME}/.pyenv/bin:${PATH}" export PYENV_ROOT="${HOME}/.pyenv" eval "$(pyenv init -)" EOF

or if you using the default bash shell, do this instead:

cat << EOF >> ~/.bashrc

pyenv config

export PATH="${HOME}/.pyenv/bin:${PATH}" export PYENV_ROOT="${HOME}/.pyenv" eval "$(pyenv init -)" EOF

Close and open a new shell session

install Python 3.9.10

pyenv install 3.9.10

make it available globally

pyenv global system 3.9.10

To manage the Python 3.9 virtualenv, I recommend using poetry_.

.. code-block:: bash

install poetry

curl -sSL https://install.python-poetry.org | python3 - poetry --version Poetry version 1.1.13

Having the python executable in your PATH, you can use it:

poetry env use 3.9.10

However, you are most likely to get the following issue:

Creating virtualenv frozndict-dxc671ba-py3.9 in ~/.cache/pypoetry/virtualenvs

ModuleNotFoundError

No module named 'virtualenv.seed.via_app_data'

at :973 in _find_and_load_unlocked

To resolve it, you need to reinstall virtualenv through pip

sudo apt remove --purge python3-virtualenv virtualenv python3 -m pip install -U virtualenv

Now, you can just use the minor Python version in this case:

poetry env use 3.9.10 Using virtualenv: ~/.cache/pypoetry/virtualenvs/frozndict-dxc671ba-py3.9

🚨 Installation

With :code:pip:

.. code-block:: console

python3.9 -m pip install frozndict

With pipx_:

.. code-block:: console

python3.9 -m pip install --user pipx pipx install --python python3.9 frozndict

🚸 Usage

.. code-block:: python3

from frozndict import frozendict

Empty immutable immutable dictionary.

frozen_dict = frozendict({}) frozendict({})

Non empty immutable immutable dictionary.

frozen_dict = frozendict({"Greetings": "Hello World!"}) frozen_dict frozendict({'Greetings': 'Hello World!'})

Get an item.

frozen_dict["Greetings"] 'Hello World!'

Copy a dictionary.

frozen_dict_copy = frozen_dict.copy() frozen_dict_copy {'Greetings': 'Hello World!'}

Nested dictionary.

frozen_dict_copy = frozendict({'x': 3, 'y': 4, 'z': {'a': 0, 'b': [3,1,{4,1},[5,9]]}}, c= 1) print(a.pretty_repr()) frozendict({ x: 3, y: 4, z: { a: 0, b: [3, 1, {1, 4}, [5, 9]], }, c: 1, })

Create an immutable dictionary using fromkeys method.

frozen_dict = frozendict.fromkeys(["x", "y"], "5") frozen_dict frozendict({'x': '5', 'y': '5'})

Test uniqueness: frozendict(a=1,b=2) == frozendict(b=2,a=1)

set([frozendict(a=1,b=2), frozendict(a=5), frozendict(b=2,a=1)]) {frozendict({'a': 5}), frozendict({'a': 1, 'b': 2})}

🚀 Similar Projects Comparaison

This project is similar to frozendict_ created by Marco Sulla_.

.. code-block:: python3

from frozndict import frozendict as myfrozendict from frozendict import frozendict

create instances

my_frozen_dict = myfrozendict({'x': 3, 'y': 4, 'z': {'a': 0, 'b': [3,1,{4,1},[5,9]]}}, c= 1) frozen_dict = frozendict({'x': 3, 'y': 4, 'z': {'a': 0, 'b': [3,1,{4,1},[5,9]]}}, c= 1) dict = dict({'x': 3, 'y': 4, 'z': {'a': 0, 'b': [3,1,{4,1},[5,9]]}}, c= 1)

comparaison

import sys tuple(map(sys.getsizeof, [frozen_dict, my_frozen_dict, dict])) (248, 240, 232)

Notice :code:my_frozen_dict takes less space in memory than :code:frozen_dict!

🎉 Credits

The following projects were used to build and test :code:frozndict.

  • python_
  • poetry_
  • pytest_
  • flake8_
  • coverage_
  • rstcheck_
  • mypy_
  • pytestcov_
  • tox_
  • isort_
  • black_
  • precommit_

👋 Contribute

If you are looking for a way to contribute to the project, please refer to the Guideline_.

📝 License

This program and the accompanying materials are made available under the terms and conditions of the GNU GENERAL PUBLIC LICENSE_.

.. _GNU GENERAL PUBLIC LICENSE: http://www.gnu.org/licenses/ .. _frozendict: https://pypi.org/project/frozendict/ .. _Marco Sulla: https://github.com/Marco-Sulla .. _Guideline: https://github.com/Harmouch101/frozndict/blob/main/CONTRIBUTING.rst .. _pyenv: https://github.com/pyenv/pyenv .. _poetry: https://github.com/python-poetry/poetry .. _pipx: https://github.com/pypa/pipx .. _python: https://www.python.org/ .. _pytest: https://docs.pytest.org/en/7.1.x/ .. _flake8: https://flake8.pycqa.org/en/latest/ .. _coverage: https://coverage.readthedocs.io/en/6.3.2/ .. _rstcheck: https://pypi.org/project/rstcheck/ .. _mypy: https://mypy.readthedocs.io/en/stable/ .. _pytestcov: https://pytest-cov.readthedocs.io/en/latest/ .. _tox: https://tox.wiki/en/latest/ .. _isort: https://github.com/PyCQA/isort .. _black: https://black.readthedocs.io/en/stable/ .. _precommit: https://pre-commit.com/

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

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc