Helper for checking variable equivalence by type. Useful for tests.
Project description
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/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for type_comparable-1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4cd6dab5a07379081b0c736689ccc4a1077f9e22238f2dfe322466ff826e0984 |
|
MD5 | b3ca2f633fb45ad5ade4929c2568282b |
|
BLAKE2b-256 | 59f663686fe544fc8b4cbd14b66f903f4b5148a2434dca72f19584082ad5c14d |