Repository navigation
Releases: kondratevdev/imgproxykit
Releases · kondratevdev/imgproxykit
Release list
v0.4.0
What's Changed
Features
- Added Django integration to configure clients through Django settings
and generate image URLs and named variants with Python shortcuts
and template tags. Supports model file fields, reusable named
transformations, and custom source resolvers.
Install withpip install 'imgproxykit[django]', #66 - Added FastAPI integration with support for multiple named clients.
Install withpip install 'imgproxykit[fastapi]', #64 - Added
Client.variantsto generate named image URLs for a single source
from a mapping of complete transformations. The returned dictionary
preserves the names, order, and types of variant keys,
including literal string unions, #59
Misc
- Added runnable examples to the user guide and API reference, #62
- Added a Variants guide covering reusable transformation sets and typed
variant names, with examples of transformation composition.
Updated theREADMEandGetting startedto focus on local sources
and named variants, #59
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's Changed
Breaking changes
- Configuration defaults now live only in
Client. Direct construction of
PathSerializerrequiresarguments_separator;UrlSignerrequires
key,salt,signature_size, andunsigned_signature.
Passkey=Noneandsalt=Nonefor unsigned signing.Clientdefaults
are unchanged, #57 Presetnow takes preset names as positional arguments, so
Preset('thumbnail', 'watermarked')replaces
Preset(names=('thumbnail', 'watermarked')). Supplied names keep their
order, #27- Added
arguments_separatorparameter toClientandPathSerializer
to matchIMGPROXY_ARGUMENTS_SEPARATOR, defaults to:.
Clientnow passes it topath_serializer_cls, so custom path serializer
constructors must accept this keyword argument, #26
Misc
- Switched documentation to Sphinx-Immaterial with built-in tabs,
highlighted API signatures, and streamlined navigation, #58 - Added issue and pull request templates, an AI policy,
and updated contribution guidelines, #56 - Clarified source and imgproxy URLs with consistent naming across
documentation examples. Expanded type documentation and added links
to the API reference and imgproxy settings, #54
New Contributors
- @sobolevn made their first contribution in #33
- @tyza66 made their first contribution in #37
- @Peopl3s made their first contribution in #40
Full Changelog: v0.2.1...v0.3.0
v0.2.1
What's Changed
Breaking changes
- Replaced the
presetsargument ofClient.urlandPathBuilder
with thePresetoption, which can be combined with other
processing options inTransform, #12 - Removed the
formatargument ofClient.url, theoutput_format
argument ofPathBuilder, and theTransform.formatattribute.
UseTransform(Format('webp'))orTransform(format='webp')instead.
Output formats are now serialized as processing options,
likeformat:webp, instead of source URL extensions, #12 and #18 Transformnow accepts option instances as positional arguments
instead of anoptionstuple. Replace
Transform(options=(Resize(width=300), Quality(85)))
withTransform(Resize(width=300), Quality(85)), #14- Removed
imgproxykit.builders.PathBuilder, use
imgproxykit.serialization.PathSerializerinstead.
RenamedClient.path_builder_clstoClient.path_serializer_cls - Renamed
imgproxykit.signing.URLSignertoUrlSigner
andClient.signer_clstoClient.url_signer_cls, #15 - Removed
imgproxykit.types.EMPTY. Omitted option arguments,
signing credentials, and transforms now default toNone.
UseNoneinstead ofEMPTYwhen explicitly omitting a value - Processing options now use full imgproxy names, like
resize,
width, andquality, instead ofrs,w, andq.
This changes generated URLs and their signatures.
OptionTypenow lists full names as well, #19 - Custom options must now define
nameas a class attribute
instead of_name
Features
- Added
unsigned_signatureparameter toClientandUrlSigner
to customize the unsigned URL marker, defaults tounsafe, #6 - Added
signature_sizeparameter toClientandUrlSigner
to truncate signatures to matchIMGPROXY_SIGNATURE_SIZE, #6 - Added scalar keyword arguments to
Transform, like
Transform(width=300, quality=85, format='webp').
They are appended after positional options in keyword order, #20 - Added
ScalarOptionbase class for single-value options.
Subclasses are registered by processing option name and can be
constructed withScalarOption.from_kwarg, #20 - All single-value options now accept positional values,
likeBlur(2)andRotate(90), #14 - Added
Option.validatehook, called when an option is constructed,
for custom argument validation - Processing option classes can now be subclassed
- Added
tytype checking to local checks and CI, #22
Bugfixes
- Fixed northwest and southwest position codes in
Position
andWatermarkPosition: usenoweandsowe
instead of the invalidnowandsow
Misc
- Added API Reference documentation for the public API, #5
- Added integration tests against an imgproxy server using Docker,
covering processing options, presets, signing, and source URLs - Expanded unit tests and enabled doctests for docstrings,
documentation, andREADME.md, #7
Full Changelog: v0.1.0...v0.2.1
v0.1.0
What's Changed
Initial release of imgproxykit — a typed Python toolkit for building imgproxy URLs.
- Immutable, reusable image transforms.
- Typed processing options for resizing, cropping, quality, watermarks, and more.
- Output format selection, including WebP and AVIF.
- Support for server-side presets.
- Automatic URL signing with an imgproxy key and salt.
- Python 3.12+ support.
New Contributors
- @dependabot[bot] made their first contribution in #4
Full Changelog: https://github.com/kondratevdev/imgproxykit/commits/v0.1.0