Skip to main content

Python is a not typed language, and runs under the paradigm of first try and then it success or fails. This package allows you to have the capability of apply typing features in last versions of Python, allowing to the developer to have a transparent mechanism to grant that typing annotations are satisfied in the execution time of their programs.

Project description

safetypes package

Python is a non typed language, and runs under the paradigm of first try and then it success or fails. This package allows you to have the capability of apply typing features in last versions of Python, allowing to the developer to have a transparent mechanism to grant that typing annotations are satisfied in the execution time of their programs.

To use this package you only need to add an annotation before a function or method definition:

@safe_types
def my_func(test: str) -> int:
    ...

With this simple line when you run your program the annotation checks:

  1. The test argument satisfies the condition to be a str.
  2. The return value satisfies the condition to be an int.

Also, you can use the Typing package to have multiple types for the same argument or to extend the detail of typing your code::

from typing import Union

@safe_types
def my_func(test: Union[int, float]) -> Union[int, float]:
    ...

With this definition, the annotation checks if test argument and return value are one of two possible types: int and float. Note that not necessarily needs to be the same type in both cases, due to the annotation could not correlate a direct causality between arguments and return types.

If you have optional arguments, like this one:

@safe_types
def my_func(test: str = 'empty') -> None:
    ...

my_func()

Then the test argument is ignored if it is not used when you call the function.

If you want to accept unknown arguments using *args or **kwargs then you can use the non-strict validation as follows:

@safe_types(strict=False)
def my_func(test: str, *args, **kwargs) -> None:
    ...

my_func('yeah!', 'more... yeah!!', yeah='Not enough!!!')

In this case, the argument test will be checked but other parameters passed as additional and unknown arguments will be ignored and not checked.

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

safetypes-0.1rc2.post2.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

safetypes-0.1rc2.post2-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file safetypes-0.1rc2.post2.tar.gz.

File metadata

  • Download URL: safetypes-0.1rc2.post2.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for safetypes-0.1rc2.post2.tar.gz
Algorithm Hash digest
SHA256 f595ac6813015933fe68ab8e19ac325677f718dafa353e117bca0bd2f97b89ce
MD5 9b03b34c9a9449b4827657b91c0b9699
BLAKE2b-256 a7b620b609b6cb2abd9fd173ba5f0739459c7d0b4931c76dc0743e4bf80dc2ec

See more details on using hashes here.

File details

Details for the file safetypes-0.1rc2.post2-py3-none-any.whl.

File metadata

File hashes

Hashes for safetypes-0.1rc2.post2-py3-none-any.whl
Algorithm Hash digest
SHA256 687ec842b0e62c77b6948ac8819f6c0235e2ef0f039e765e764975857ba78747
MD5 8b8970e649b1b04c0a28fc2371e89b82
BLAKE2b-256 dba3f98319a77bfc623814536e8f7c43464b846a70083135c7b989efd2aa31d3

See more details on using hashes here.

Supported by

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