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.tar.gz (6.7 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-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: safetypes-0.1rc2.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.9

File hashes

Hashes for safetypes-0.1rc2.tar.gz
Algorithm Hash digest
SHA256 3042dbe70633c76861ef9b60fce69c36fdfbb533ca1024461d29fecec6e4f871
MD5 0505a9f8bed0aa7ab94ba3a7055e0314
BLAKE2b-256 b191e0d7b69d317d964759d27b7f2ad6013b7edd25479954105e8ece4e00fc1c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: safetypes-0.1rc2-py3-none-any.whl
  • Upload date:
  • Size: 6.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.9

File hashes

Hashes for safetypes-0.1rc2-py3-none-any.whl
Algorithm Hash digest
SHA256 957cf20116521aeaf69010746250f51cf2740217f5314ea476b12b6a89b979c5
MD5 3e31ccd242a6275cfede5c864b20de6e
BLAKE2b-256 48f8ac5546d1ba9bd5c848810735eb865261bfd357ce77d23369b92488fed627

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