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

Uploaded Python 3

File details

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

File metadata

  • Download URL: safetypes-0.1rc2.post1.tar.gz
  • Upload date:
  • Size: 6.8 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.post1.tar.gz
Algorithm Hash digest
SHA256 bd54251fa37bfcb0e9ae16785fc0e7ab2b85ff37789e37c8cbd0ee75340dafa3
MD5 712b8f63b5fb47bdf3a786708753e11f
BLAKE2b-256 0d7f7c03b8d65b2ce6cf3af354fb366d691cdc4128803f6717a68145e9e397f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for safetypes-0.1rc2.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 7bb7b24f96dee9980570b4e055d0f6617b03ce02a10c50298897dfa1c002ef21
MD5 ff11aee79e3855f69d2a64b1470db7d3
BLAKE2b-256 482224b1226a296554db7a533978f73863c5501cdf5735c5efe99fb40923d9e5

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