https://github.com/gr1n/pyfrozen
Set of collections with ability to freeze their items
https://github.com/gr1n/pyfrozen
collection freeze frozen frozendict frozenlist
Last synced: 12 months ago
JSON representation
Set of collections with ability to freeze their items
- Host: GitHub
- URL: https://github.com/gr1n/pyfrozen
- Owner: Gr1N
- License: mit
- Created: 2018-06-04T20:50:42.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2018-11-23T13:41:21.000Z (over 7 years ago)
- Last Synced: 2025-05-23T05:13:54.397Z (about 1 year ago)
- Topics: collection, freeze, frozen, frozendict, frozenlist
- Language: Python
- Homepage: https://pypi.org/project/pyfrozen/
- Size: 18.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# pyfrozen [](https://travis-ci.org/Gr1N/pyfrozen) [](https://codecov.io/gh/Gr1N/pyfrozen) [](https://github.com/ambv/black)
Set of collections with ability to freeze their items.
## Installation
$ pip install pyfrozen
## Usage
>>> from pyfrozen import FrozenDict, FrozenList
>>>
>>> fd = FrozenDict()
>>> fd['key_1'] = 'value_1'
>>> fd
>>> fd.freeze()
>>> fd
>>> fd['key_1'] = 'value_2'
Traceback (most recent call last):
File "", line 1, in
File "/pyfrozen/pyfrozen/frozendict.py", line 23, in __setitem__
self.assert_frozen()
File "/pyfrozen/pyfrozen/frozendict.py", line 45, in assert_frozen
raise RuntimeError('Cannot modify frozen dict')
RuntimeError: Cannot modify frozen dict
>>> fd
>>>
>>> fl = FrozenList()
>>> fl.extend(['value_1', 'value_2'])
>>> fl
>>> fl.freeze()
>>> fl.pop()
Traceback (most recent call last):
File "", line 1, in
File "/lib/python3.6/_collections_abc.py", line 997, in pop
del self[index]
File "/pyfrozen/pyfrozen/frozenlist.py", line 29, in __delitem__
self.assert_frozen()
File "/pyfrozen/pyfrozen/frozenlist.py", line 56, in assert_frozen
raise RuntimeError('Cannot modify frozen list')
RuntimeError: Cannot modify frozen list
>>> fl
>>>
## Contributing
To work on the `pyfrozen` codebase, you'll want to clone the project locally and install the required dependencies via [poetry](https://poetry.eustace.io):
$ git clone git@github.com:Gr1N/pyfrozen.git
$ poetry install
To run tests and linters use command below:
$ poetry run tox
If you want to run only tests or linters you can explicitly specify which test environment you want to run, e.g.:
$ poetry run tox -e py37-tests
## TODO
- [ ] Implement all collections using [Cython](http://cython.org)
## License
`pyfrozen` is licensed under the MIT license. See the license file for details.