Skip to main content

Python type converter

Project description

TypePigeon

tests codecov build version Anaconda-Server Badge License: GPL v3 style

TypePigeon is a Python type converter focused on converting values between various Python data types.

pip install typepigeon

Features

  • convert values directly from one Python type to another with convert_value()
  • convert values to JSON format with convert_to_json()
  • convert generic aliases (List[str]) to simple collection types ([str]) with guard_generic_alias()

Usage

With TypePigeon, you can convert simple values from one type to another:

convert_value()

import typepigeon

typepigeon.to_type(0.55, str)
'0.55'

typepigeon.to_type(1, float)
1.0

typepigeon.to_type([1], str)
'[1]'

Additionally, you can also cast values into a collection:

import typepigeon

typepigeon.to_type([1, 2.0, '3'], [int])
[1, 2, 3]

typepigeon.to_type('[1, 2, 3]', (int, str, float))
[1, '2', 3.0]

typepigeon.to_type({'a': 2.5, 'b': 4, 3: '18'}, {str: float})
{'a': 2.5, 'b': 4.0, '3': 18.0}

Some commonly-used classes such as datetime and CRS are also supported:

from datetime import datetime, timedelta

from pyproj import CRS
import typepigeon

typepigeon.to_type(datetime(2021, 3, 26), str)
'2021-03-26 00:00:00'

typepigeon.to_type('20210326', datetime)
datetime(2021, 3, 26)

typepigeon.to_type('01:13:20:00', timedelta)
timedelta(days=1, hours=13, minutes=20, seconds=0)

typepigeon.to_type(timedelta(hours=1), str)
'01:00:00.0'

typepigeon.to_type(timedelta(hours=1), int)
3600

typepigeon.to_type(CRS.from_epsg(4326), int)
4326

typepigeon.to_type(CRS.from_epsg(4326), str)
'GEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],CS[ellipsoidal,2],AXIS["geodetic latitude (Lat)",north,ORDER[1],ANGLEUNIT["degree",0.0174532925199433]],AXIS["geodetic longitude (Lon)",east,ORDER[2],ANGLEUNIT["degree",0.0174532925199433]],USAGE[SCOPE["Horizontal component of 3D system."],AREA["World."],BBOX[-90,-180,90,180]],ID["EPSG",4326]]'

typepigeon.to_type(4326, CRS)
CRS.from_epsg(4326)

convert_to_json()

from datetime import datetime

import typepigeon

typepigeon.to_json(5)
5

typepigeon.to_json('5')
'5'

typepigeon.to_json(datetime(2021, 3, 26))
'2021-03-26 00:00:00'

typepigeon.to_json([5, '6', {3: datetime(2021, 3, 27)}])
[5, '6', {3: '2021-03-27 00:00:00'}]

typepigeon.to_json({'test': [5, '6', {3: datetime(2021, 3, 27)}]})
{'test': [5, '6', {3: '2021-03-27 00:00:00'}]}

guard_generic_alias()

import typepigeon.types
from typing import Dict, List, Tuple

import typepigeon

typepigeon.types.subscripted_type(List[str])
[str]

typepigeon.types.subscripted_type(Dict[str, float])
{str: float}

typepigeon.types.subscripted_type({str: (Dict[int, str], str)})
{str: ({int: str}, 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

typepigeon-2.0.1.tar.gz (53.2 kB view details)

Uploaded Source

Built Distribution

typepigeon-2.0.1-py3-none-any.whl (32.0 kB view details)

Uploaded Python 3

File details

Details for the file typepigeon-2.0.1.tar.gz.

File metadata

  • Download URL: typepigeon-2.0.1.tar.gz
  • Upload date:
  • Size: 53.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.16

File hashes

Hashes for typepigeon-2.0.1.tar.gz
Algorithm Hash digest
SHA256 0f23bf8587a5288984bd15650dc22bf5d76125b7e6f0035069ceb46a082d7c0f
MD5 f741e491d628d6e5a2cb47f168a0d7fa
BLAKE2b-256 4bb8d210c14e3098f96d0c4fd65166e287101d6575eb851d2c47116830c969d8

See more details on using hashes here.

File details

Details for the file typepigeon-2.0.1-py3-none-any.whl.

File metadata

  • Download URL: typepigeon-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 32.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.16

File hashes

Hashes for typepigeon-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a4028dcecbfd89e12e62a270eecb25dce3d75e15c6e40db07f45ed735d195b22
MD5 d5307a1ed79c080d94953dcdc9209f3a
BLAKE2b-256 06f2fe0894e0b62cb5bb0de3b34f4826c217af0ddaa26c75994d3370b29183a5

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