Skip to main content

Add a short description here!

Project description

describe-variable

Describe variables in python. Most useful for complex dicts or arrays.

Motivation: Provide simple methods that describe variables (mainly dicts) and allows to find small differences in highly nested objects.

Install:

pip install describe-variable

Example

from describe_variable import describe, diff

d1 = {
    "type": "FeatureCollection",
    "features": [
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                    "coordinates": [102.0, 0.5]
            },
            "properties": {
                "prop0": "value0"
            }
        },
        {
            "type": "Feature",
            "geometry": {
                "type": "LineString",
                "coordinates": [
                    [102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0]
                ]
            },
            "properties": {
                "prop0": "value0",
                "prop1": 0.0
            }
        },
        {
            "type": "Feature",
            "geometry": {
                "type": "Polygon",
                "coordinates": [
                    [
                        [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],
                        [100.0, 1.0], [100.0, 0.0]
                    ]
                ]
            },
            "properties": {
                "prop0": "value0",
                "prop1": {"this": "that"}
            }
        }
    ]
}

d2 = {
    "type": "FeatureCollectio",
    "features": [
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                    "coordinates": [102.0, 0.5]
            },
            "properties": {
                "prop0": "value0"
            }
        },
        {
            "type": "Feature",
            "geometry": {
                "type": "LineString",
                "coordinates": [
                    [102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0]
                ]
            },
            "properties": {
                "prop0": "value0",
                "prop1": 0.1
            }
        },
        {
            "type": "Feature",
            "geometry": {
                "type": "Polygn",
                "coordinates": [
                    [
                        [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],
                        [100.0, 1.0], [100.0, 0.0]
                    ]
                ]
            },
            "properties": {
                "prop0": "value0",
                "prop1": {"this": "that"}
            }
        }
    ]
}

describe(d1, 3)
#     type: dict, size: 2, components: mixed
#     type -> FeatureCollection, type: str
#     features -> type: list, size: 3, components: dict
#         0 -> type: dict, size: 3, components: mixed
#             type -> Feature, type: str
#             geometry -> type: dict, size: 2, components: mixed
#             properties -> type: dict, size: 1, components: str
#         1 -> type: dict, size: 3, components: mixed
#             type -> Feature, type: str
#             geometry -> type: dict, size: 2, components: mixed
#             properties -> type: dict, size: 2, components: mixed
#         2 -> type: dict, size: 3, components: mixed
#             type -> Feature, type: str
#             geometry -> type: dict, size: 2, components: mixed
#             properties -> type: dict, size: 2, components: mixed

diff(d1, d2, 4)

#       type: dict, size: 2, components: mixed
# -     type -> FeatureCollection, type: str
# ?                             -
# +     type -> FeatureCollectio, type: str
#       features -> type: list, size: 3, components: dict
#           0 -> type: dict, size: 3, components: mixed
#               type -> Feature, type: str
#               geometry -> type: dict, size: 2, components: mixed
#                   type -> Point, type: str
#                   coordinates -> type: list, size: 2, components: float
#               properties -> type: dict, size: 1, components: str
#                   prop0 -> value0, type: str
#           1 -> type: dict, size: 3, components: mixed
#               type -> Feature, type: str
#               geometry -> type: dict, size: 2, components: mixed
#                   type -> LineString, type: str
#                   coordinates -> type: list, size: 4, components: list
#               properties -> type: dict, size: 2, components: mixed
#                   prop0 -> value0, type: str
# -                 prop1 -> 0.0, type: float
# ?                            ^
# +                 prop1 -> 0.1, type: float
# ?                            ^
#           2 -> type: dict, size: 3, components: mixed
#               type -> Feature, type: str
#               geometry -> type: dict, size: 2, components: mixed
# -                 type -> Polygon, type: str
# ?                              -
# +                 type -> Polygn, type: str
#                   coordinates -> type: list, size: 1, components: list
#               properties -> type: dict, size: 2, components: mixed
#                   prop0 -> value0, type: str
#                   prop1 -> type: dict, size: 1, components: str

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

describe-variable-0.1.3.tar.gz (15.0 kB view details)

Uploaded Source

File details

Details for the file describe-variable-0.1.3.tar.gz.

File metadata

  • Download URL: describe-variable-0.1.3.tar.gz
  • Upload date:
  • Size: 15.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.3

File hashes

Hashes for describe-variable-0.1.3.tar.gz
Algorithm Hash digest
SHA256 5090c90e19d1a908adef878363bc10729b5e80218b242aa7c51881eeb2faf0b1
MD5 7f2182789c30cdfb4a742d28a5b83392
BLAKE2b-256 5cc911814126d548dd41f681b1250f8a8e073a8e0c1fde244005441f4022abac

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page