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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for safetypes-0.1rc2.post4.tar.gz
Algorithm Hash digest
SHA256 37df9a14c76ecc0be611756a11105ec9e03c88c43abc8acc9703f5698ebfc9b9
MD5 b0fdea0a4ed719e74b6b1b3c17f7bd20
BLAKE2b-256 2733f56f031617f970814047c738e9a6531cef5bd2d18f0b9b74ec8029e22789

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for safetypes-0.1rc2.post4-py3-none-any.whl
Algorithm Hash digest
SHA256 a0b47b0cfbf8ec64b43c62bd94ae65c48782140fefa46032c5ff28682fece439
MD5 5fb921a3ab2c885061e96d928993cde9
BLAKE2b-256 be55cef7473723ec09f365c70e4b65a03a5f5213519fcd33ee068cac3af27671

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