Version history¶
We will follow Semantic Versions since 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.4.0 (WIP)¶
Features¶
Added FastAPI integration with support for multiple named clients. Install with
pip install 'imgproxykit[fastapi]', #64Added
Client.variantsto build named URLs for one source from a mapping of complete transformations. The returned dictionary preserves variant names, their order, and their key type, including literal string unions, #59
Misc¶
Expanded the user guide and API reference with runnable examples, #62
Added a Variants user guide with reusable transformation sets and typed variant names, plus transformation composition examples. Reworked the README and Getting started around 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