Typehints with documentation.
Project description
IntelliType
IntelliType is a Python library that provides enhanced type annotations with custom structure and validation capabilities. It combines the power of static type hinting with runtime type checking and validation, while ensuring full intellisense support.
Features
- Enhanced type annotations with full intellisense support
- Runtime type checking and validation
- Integration with Pydantic for robust data validation
- Support for custom metadata in type definitions
Installation
You can install IntelliType using pip:
pip install crimson-intelli-type
Quick Start
Here's a simple example of how to use IntelliType:
from typing import List, Generic, TypeVar
from crimson.intelli_type import IntelliType
T = TypeVar('T')
class IntList(IntelliType, Generic[T], annotation = List[int]):
pass
# This will pass and provide full intellisense support
valid_list: IntList[List[int]] = IntList.type_safe([1, 2, 3])
# This will raise a validation error
invalid_list: IntList[List[int]] = IntList.type_safe(["a", "b", "c"])
Advanced Usage
Styles
IntelliType offers flexibility in how you define your custom types. Here are the common patterns:
-
Standard Style: This is the most common way to define an IntelliType class.
class CustomType(IntelliType, List[int], Generic[T]): pass
or
class CustomType(IntelliType, Generic[T], List[int]): pass
Both of these styles work identically. The order of
Generic[T]
doesn't affect the functionality. -
Annotation Style: For types that can't be used as bases (such as
Union
orbool
), set_annotation
directly.class CustomType(IntelliType, Generic[T]): _annotation = Union[str, bool]
This style is safer and more flexible when dealing with complex types.
-
Custom Metadata Style: IntelliType supports adding custom metadata to your type definitions.
class CustomType(IntelliType, List[int], Generic[T]): pass # Usage my_var: CustomType[List[int], "This is custom metadata"] = ...
The metadata can be accessed later if needed, providing additional information about the type.
Why use Generic[T]?
Including Generic[T]
in your IntelliType class definition is crucial for proper intellisense support. It allows your IDE to provide accurate type hints and autocompletion, enhancing your development experience and catching potential type errors early.
Examples
AutoPydantic
I used IntelliType to add type hints to AutoPydantic. The custom types are imported from another script. In the current script, you can easily access the type information by hovering over the variables.
DeepLearning
Please check out the example in the link below. When using IntelliType, we don't write docstrings for attributes in the function documentation. Instead, arguments are individually documented, and their docstrings are reused throughout the code. This allows you to focus the function's documentation solely on describing its purpose and behavior.
Reusability
One of the biggest advantages of IntelliType is its reusability. Many arguments are often used across different functions. Traditionally, you would need to write the docstring for these arguments repeatedly.
The worst-case scenario is when you've written docstrings in multiple places and can't remember where they all are. When you modify one of your arguments, you'd need to edit all the related docstrings. However, with IntelliType, the information for your arguments is used consistently, allowing you to manage your package more cleanly and reliably.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for crimson_intelli_type-0.2.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e01b6d74f7789ecab629d05e991f30c1302b5956af2f0ba0c240390302df5de |
|
MD5 | b9e7b660d29a4c9ba9b1537c1c0261bc |
|
BLAKE2b-256 | 1657913470462370a4a2e2fbe85e8f75d28e1f2829eb4c7251b44c8d3824113e |
Hashes for crimson_intelli_type-0.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bc6a409d344a327c0f7e012759fcfd5d93cbe85f5ea561f632772476d365f5ba |
|
MD5 | 190a3db8f92638017d5922af60079bf6 |
|
BLAKE2b-256 | cec54495445005f0d802cb87a8b2f0dae4f1b9e0486bbfdb4236fe181214b394 |