About
Module allows to compare variables not only by value but by type too.
Quick example:
from typing import Any
from type_comparable import make_type_comparable
response = {
'id': 144233,
'date_create': '2020-01-25T17:31:33.910803',
'important_data': 'important data',
'other_data': 'other data',
'inner_data': {
'field a': 'value a',
'field d': 'value b'
},
'line': [1, 'some text', 3]
}
assert make_type_comparable(response) == {
'id': int, # <-- will compare by type int
'date_create': str, # < -- will compare by type str
'important_data': 'important data', # <-- exact match as is
'other_data': Any, # <-- allow any data,
'inner_date': { # <-- also work with nested dictionaries
'field a': str,
'field b': 'value b'
}
'line': [int, Any, 3] # <- check elements in array
}
# if you don't want wrap left variable (response) if can wrap right:
assert response == make_type_comparable(...)
Very useful for tests by pytest.
Support types
Comparable types (which can be passed to make_type_comparable()):
int
bool
str
list
dict
other
Types for comparison:
all python builtin (int, str, bool, list, dict, etc.)
object and typing.Any - mean any type but not None
typing.Optional - mean any type and None. Optional[int] now not supported
Also you can try to use with your custom types but without guaranteed (verify manually before use in product)
Know issues
Wrapped None is not None :-(
>> make_type_comparable(None) is None
False
# use equal
>> make_type_comparable(None) == None
True
Install
From PyPi:
$ pip install type_comparable
From local:
# update setuptools
$ pip install 'setuptools >= 30.4'
# do install
$ make install
# or
$ pip install .
Development
Prepare and activate virtual environment like:
$ python3 -m venv .env
# for bash
$ source .env/bin/activate
# for fish
$ . .env/bin/activate.fish
Update pre-install dependencies:
$ pip install 'setuptools >= 30.4'
Install:
$ make install_dev
# or
$ pip install --editable .[develop]
Run tests:
$ make test
# or
$ pytest tests/
Release files for type-comparable 1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| type_comparable-1.tar.gz | 4.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| type_comparable-1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 9.6 kB
Release files / type_comparable-1.tar.gz
| Download URL | type_comparable-1.tar.gz |
|---|---|
| Size | 4.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
778bb71d4d81c5834513dbabb3513e458930a321a04b106e3b7641395c8612e3
|
|
BLAKE2b-256 checksum How to use checksums |
379bc0e2d3d6afe110db28d3a1850b1a93c11e8fc5014759d570c73ae1815e3b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
|
Release files / type_comparable-1-py3-none-any.whl
| Download URL | type_comparable-1-py3-none-any.whl |
|---|---|
| Size | 4.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4cd6dab5a07379081b0c736689ccc4a1077f9e22238f2dfe322466ff826e0984
|
|
BLAKE2b-256 checksum How to use checksums |
59f663686fe544fc8b4cbd14b66f903f4b5148a2434dca72f19584082ad5c14d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
|