pyfrozen

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
<FrozenDict(frozen=False, {'key_1': 'value_1'})>
>>> fd.freeze()
>>> fd
<FrozenDict(frozen=True, {'key_1': 'value_1'})>
>>> fd['key_1'] = 'value_2'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
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
<FrozenDict(frozen=True, {'key_1': 'value_1'})>
>>>
>>> fl = FrozenList()
>>> fl.extend(['value_1', 'value_2'])
>>> fl
<FrozenList(frozen=False, ['value_1', 'value_2'])>
>>> fl.freeze()
>>> fl.pop()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
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
<FrozenList(frozen=True, ['value_1', 'value_2'])>
>>>
Contributing
To work on the pyfrozen codebase, you'll want to clone the project locally and install the required dependencies via poetry:
$ 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
License
pyfrozen is licensed under the MIT license. See the license file for details.
Metadata
Release files for pyfrozen 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyfrozen-0.2.0.tar.gz | 3.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyfrozen-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.6 kB
Release files / pyfrozen-0.2.0.tar.gz
| Download URL | pyfrozen-0.2.0.tar.gz |
|---|---|
| Size | 3.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
71eddeeae3b66a7049c7949a16fc1193e75b64d9c9945ca9dc0abd3a8646c3a2
|
|
BLAKE2b-256 checksum How to use checksums |
3e23381781a9288d54caeca6720b6ff158415a348978b242310f35c44a4c34d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / pyfrozen-0.2.0-py3-none-any.whl
| Download URL | pyfrozen-0.2.0-py3-none-any.whl |
|---|---|
| Size | 6.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
eacb087b93d035aee9cfffd9872c662543be354b2c08b21a623d3f59b74d1005
|
|
BLAKE2b-256 checksum How to use checksums |
aed579742346f869d2528e36bb9e34ceafbbf19c8a9242a1c868854dc2488413
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |