typically
Overview
When adding comprehensive type annotations to python projects, you often have to choose where to import identical types.
For instance, you might want to use a TypedDict, so you would naturally import:
from typing import TypedDict
The issue is that now if you use your typed dictionary in a pydantic model, you will get an exception. This is because you actually "should have" imported:
from typing_extensions import TypedDict
There's also types, collections, collections.abc, annotated_types, etc.
This package is intended to create a single source of core types for python projects with very few required dependencies, and maybe at most a few optional ones (eg: pydantic).
Suggested pattern:
import typically as t
Installation
With pip:
pip install typically
Or with uv:
uv add typically
Notes
- Type annotations really shouldn't impose any overhead. Of course, that's possible to avoid, but I'm still aiming to keep the extra import time less than 100 ms. The goal is (maybe) to pack as much commonly used stuff into a single import without incurring overhead.
- All members of
builtinsare explicitly imported in the__init__file, as sometimes one might like to override them, but also be able to access original builtin type. - Various type variables are included. These are always named
T_...where the ellipses is the type the type variable is bound to, if any.
TODO
- Implement paramspec objects for functools caching.
- Add pydantic as submodule, as it imposes overhead and should be optional.
- Add improved decimal type.
Metadata
Release files for typically 0.1.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| typically-0.1.8.tar.gz | 6.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| typically-0.1.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.7 kB
Release files / typically-0.1.8.tar.gz
| Download URL | typically-0.1.8.tar.gz |
|---|---|
| Size | 6.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9d58065f8ce5799109731387cbcb191065ac89ec699b685ae7abb06f5c145ab3
|
|
BLAKE2b-256 checksum How to use checksums |
f7cf996a9fcdf5bb01040b3505cab9ddf1fbdbc04ee72b68711d2c3dfd1191f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.4
|
Release files / typically-0.1.8-py3-none-any.whl
| Download URL | typically-0.1.8-py3-none-any.whl |
|---|---|
| Size | 6.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5c18d275299b971489e72084b4e8a2248716ec0d5ad25fbd7d3ce1a8adff5df9
|
|
BLAKE2b-256 checksum How to use checksums |
74797962867a642d120120b483193beae76b53f53a8d361646c4f431efa1596d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.4
|
Security for typically 0.1.8
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.