Core Deprecator API¶
Deprecator
¶
Deprecator(
name: PackageName | str,
current_version: Version,
*,
pending: type[PerPackagePendingDeprecationWarning],
deprecation: type[PerPackageDeprecationWarning],
expired_warning: type[
PerPackageExpiredDeprecationWarning
],
registry: DeprecatorRegistry | None = None,
)
Source code in deprecator/_deprecator.py
define
¶
define(
message: str,
gone_in: Version | str | None = None,
warn_in: Version | str | None = None,
replace_with: object | None = None,
*,
importable_name: str | None = None,
) -> WarningInstance
Source code in deprecator/_deprecator.py
__iter__
¶
Usage Examples¶
Basic Usage¶
from deprecator import for_package
# Create a deprecator for your package
deprecator = for_package("mypackage")
# Define a deprecation
OLD_FEATURE = deprecator.define(
"old_feature is deprecated, use new_feature instead",
warn_in="2.0.0",
gone_in="3.0.0"
)
With Custom Version¶
from packaging.version import Version
from deprecator import for_package
# Use a specific version for testing
deprecator = for_package("mypackage", Version("1.5.0"))
# Define deprecations based on that version
warning = deprecator.define(
"This will be deprecated",
warn_in="2.0.0",
gone_in="3.0.0"
)
# This will be a PendingDeprecationWarning at version 1.5.0
Accessing Deprecation Details¶
# Iterate over all defined deprecations (Deprecator is iterable)
for deprecation in deprecator:
print(f"Message: {deprecation.message}")
print(f"Warning type: {type(deprecation).__name__}")
# Get the count of defined deprecations
print(f"Total deprecations: {len(deprecator)}")
Version-Based Behavior¶
The Deprecator automatically determines the warning category based on version comparison:
| Condition | Warning Type | Description |
|---|---|---|
current < warn_in |
PendingDeprecationWarning |
Future deprecation (usually hidden) |
warn_in <= current < gone_in |
DeprecationWarning |
Active deprecation |
gone_in <= current |
ExpiredDeprecationWarning |
Should be removed |
Integration with Package Metadata¶
The Deprecator can automatically detect your package version:
# Automatically uses the installed version of 'mypackage'
deprecator = for_package("mypackage")
print(f"Package version: {deprecator.current_version}")
Custom Warning Classes¶
Deprecator creates package-specific warning classes that inherit from the standard Python warning hierarchy:
PerPackagePendingDeprecationWarningPerPackageDeprecationWarningPerPackageExpiredDeprecationWarning
These classes include the package name in their structure for better filtering and identification.