Version history¶
We will follow Semantic Versioning starting with the 1.0.0 release.
While in Development Status :: 3 - Alpha - we will break
all the things without any notices.
After Development Status :: 4 - Beta we will still break things
but with a deprecation period.
0.5.0 WIP¶
Features¶
Added
Client(source_encoding='plain')to generate URLs with percent-encoded sources and imgproxy’s/plain/marker. Base64 remains the default, #106Added
Gravityfactories to configure crop positioning without using protocol codes, #104Added
Transform.extend()to create a new transformation with additional typed options and scalar keyword arguments, preserving the original, #103Added
Option.short_namewith documented processing option aliases andClient(use_short_options=True)to use them in URLs. Full names remain the default; options without a separate alias inheritNone, #79Added Django REST Framework integration with read-only serializer fields for image URLs and named variants. Reuses Django settings, transformations, and source resolution. Supports source strings and model file fields. Install with
pip install 'imgproxykit[drf]', #77
Breaking changes¶
PathSerializernow requires thesource_encodingkeyword-only argument. Custom path serializer constructors must accept it. Pass'base64'to retain the previous source URL representation, #106Renamed
arguments_separatortoargument_separator, andunsigned_signaturetounsigned_markerinClient, its serializer and signer components, and Django client settings. Update keyword arguments, Django settings, and custom component constructors to use the new names, #102Removed
imgproxykit.types.OptionType. Processing option names now usestr, allowing custom options to define their own protocol names, #79PathSerializernow requires theuse_short_optionskeyword-only argument, #80
0.4.0¶
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 with
pip install 'imgproxykit[django]', #66Added FastAPI integration with support for multiple named clients. Install with
pip install 'imgproxykit[fastapi]', #64Added
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 the README and Getting started to focus on local sources and named variants, #59
0.3.0¶
Breaking changes¶
Configuration defaults now live only in
Client. Direct construction ofPathSerializerrequiresarguments_separator;UrlSignerrequireskey,salt,signature_size, andunsigned_signature. Passkey=Noneandsalt=Nonefor unsigned signing.Clientdefaults are unchanged, #57Presetnow takes preset names as positional arguments, soPreset('thumbnail', 'watermarked')replacesPreset(names=('thumbnail', 'watermarked')). Supplied names keep their order, #27Added
arguments_separatorparameter toClientandPathSerializerto 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
0.2.1¶
Breaking changes¶
Replaced the
presetsargument ofClient.urlandPathBuilderwith thePresetoption, which can be combined with other processing options inTransform, #12Removed the
formatargument ofClient.url, theoutput_formatargument 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 #18Transformnow accepts option instances as positional arguments instead of anoptionstuple. ReplaceTransform(options=(Resize(width=300), Quality(85)))withTransform(Resize(width=300), Quality(85)), #14Removed
imgproxykit.builders.PathBuilder, useimgproxykit.serialization.PathSerializerinstead. RenamedClient.path_builder_clstoClient.path_serializer_clsRenamed
imgproxykit.signing.URLSignertoUrlSignerandClient.signer_clstoClient.url_signer_cls, #15Removed
imgproxykit.types.EMPTY. Omitted option arguments, signing credentials, and transforms now default toNone. UseNoneinstead ofEMPTYwhen explicitly omitting a valueProcessing 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, #19Custom options must now define
nameas a class attribute instead of_name
Features¶
Added
unsigned_signatureparameter toClientandUrlSignerto customize the unsigned URL marker, defaults tounsafe, #6Added
signature_sizeparameter toClientandUrlSignerto truncate signatures to matchIMGPROXY_SIGNATURE_SIZE, #6Added scalar keyword arguments to
Transform, likeTransform(width=300, quality=85, format='webp'). They are appended after positional options in keyword order, #20Added
ScalarOptionbase class for single-value options. Subclasses are registered by processing option name and can be constructed withScalarOption.from_kwarg, #20All single-value options now accept positional values, like
Blur(2)andRotate(90), #14Added
Option.validatehook, called when an option is constructed, for custom argument validationProcessing option classes can now be subclassed
Added
tytype checking to local checks and CI, #22
Bugfixes¶
Fixed northwest and southwest position codes in
PositionandWatermarkPosition: usenoweandsoweinstead 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, and
README.md, #7Reworked documentation with the Sphinx Material theme, a new home page, Getting started, and user guides for clients, transformations, and processing options. Added linted, type-checked Python examples with pytest doctests, #23
Version 0.1.0¶
Initial release