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 2.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-2.1.tar.gz | 7.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| type_comparable-2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.4 kB
Release files / type_comparable-2.1.tar.gz
| Download URL | type_comparable-2.1.tar.gz |
|---|---|
| Size | 7.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
26e7e6d0057d1ea4039724d5f223486b628efc28033b4a9ca53a79c42138facd
|
|
BLAKE2b-256 checksum How to use checksums |
2eb73af8fe9a3e34d840525d887652e90c15e927451769a540dd9d115bcd324a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.13.1
|
Release files / type_comparable-2.1-py3-none-any.whl
| Download URL | type_comparable-2.1-py3-none-any.whl |
|---|---|
| Size | 4.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
92f66713083b94f3cea69311d934b871c426f15394e5951834b2becfc4f6df47
|
|
BLAKE2b-256 checksum How to use checksums |
4f79791fbf3b5d8a00daeb2f7412d248d9d21e6c19f62dc5a675cc3c5db614a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.13.1
|