fix(deps): update dependency pypdfium2 to v5 #2766
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^4.30.0->^5.0.0Release Notes
pypdfium2-team/pypdfium2 (pypdfium2)
v5.1.0Compare Source
Changes (Release 5.1.0)
Summary (pypdfium2)
textpage.get_textobj(),PdfTextObjandPdfFont.These helpers currently just cover font info and object-level text extraction, but may be extended in the future.
For objects of type
FPDF_PAGEOBJ_TEXT,PdfPage.get_objects()and thePdfObjectconstructor will now returnPdfTextObjrather than justPdfObjectinstances.Thanks to Mykola Skrynnyk for the initial proposal.
musllinuxtag from1_2to1_1. This was erroneously incremented shortly before5.0.0, but the pdfium-binaries do still run onmusllinux_1_1, probably because they're statically linked.build_toolchained: Significant portability enhancements. Should now work on Linux CPUs that are unhandled/incomplete upstream (e.g.aarch64). Also, building on Windows arm64 natively may now work. Added ability to cross-compileppc64lefromx86_64. Removed--use-syslibsoption (usebuild_nativeinstead).build_native: Fixed Python 3.6/3.7 compatibility. Added--no-libclang-rtoption.BUILD_LICENSES/sub-directories. Added extra licenses for DLLs pulled in by auditwheel. This concerns sourcebuilds/cibuildwheel only. The wheels on PyPI are unaffected.sbuild.yamlworkflow. This does not impact releases, which still use the pdfium-binaries.Use an arm64 host (GHA
ubuntu-24.04-arm) for armv7l builds, which is much faster than with anx86_64host. Added armv7l manylinux target (previously just musllinux).This does not impact releases yet, but it may in the future.
macos-13tomacos-15-intel.pypdfium2 commit log
Commits between
5.0.0and5.1.0(latest commit first):46afdae[autorelease main] update 5.1.0d6d1ea5build_toolchained: set config var regardless of sync1054d12Update RTD build host0c2eef0build_toolchained: update comment346bba0build_toolchained: use PORTABLE_MODE on musllinux and androidedad47emain.yaml: add ref to upload-artifact bug24aea3cUpdate changelog again6bc04d3main.yaml: propagate py_version28639a5Add a comment5c93651Readme: update sourcebuild section49404d2Fix reuse lint7cb5bc0Fix bootstrap_ninja()b4f2bc6Extract non-split-related work from PR #394d839e2eDefer _get_local_bin()6be8ad0build_toolchained: in PORTABLE_MODE, use bootstrap_buildtools()6fb248bMake bootstrap_gn target dir portable1613353Add proper ninja/gn bootstrapping functions6ec44e2Avoid setup-just action where we can0cd1f73Update changelog again5fc9bb0sbuild_one: fix artifact naming if target_os is set3998f82pdfium-binaries/android: bump to android_23a645230sbuild.yaml: attempt adding android buildsc739b22build_toolchained: continuea86826fbuild_toolchained: limit PORTABLE_MODE to Linux for now2c8bd51sbuild_one: dropjustdependency1bcc02aUpdate changelogf60248cchores: fixjust check, rename some patchesd9f66f0build_toolchained: more portability fixes9d32e5fsbuild.yaml: test build_toolchained.py on native arm64 runnerf54247cFurther build_toolchained improvements45c8084build_toolchained.py: add ppc64le cross-comp ability2d8e00bImprove portability of build_toolchained.py3eb8204Remove build_toolchained --syslibs from CI4c1038bbuild_native: add option to disable libclang_rt dependencyc345690Readme: somewhat update licenses sectionf5bff20Add extra licenses for cibuildwheel builds (#390)5159278Clarify and update changelog7e849deMerge pull request #392 from pypdfium2-team/font_helpers17c8412Parametrize font helpers test51d0adfAdd draft font helpersa816bfeUpdate REUSE.toml, fix typo in pyproject.tomlda3b4f5Make GN patch less invasive2e3d2baFactor out cloning utility for cibw gn bootstrap4b4e344cibw i686: try to improve GN bootstrapfef5d24Move patches9e0e53fcibw: fix manylinux_i686 target5bd0d31Drop emulated musllinux_armv7l target0e74a4ccibw: retry armv7l with newer imagee5f2212Comment out manylinux_armv7l againbcad837Yet another attempt at cibw/manylinux_armv7l0c7bde8cibw/pyproject.toml nits4b6f2dccibw/pyproject.toml: deduplicate symlinks (#389)8d6f6adcibw: give up on manylinux_armv7l for now767e3a5cibw: have another go at armv7lf06a078cibw: try to fix manylinux_{i686,armv7l}9d56c4aRearrange cibw.yaml2dbde32autorelease.py: style nite7ca107utils/get_gcc_prefix: handle armv8l as well2ea9a28cibw: say ubuntu-latest instead of ubuntu-24.046f1245aautorelease: make sure GH release notes stay below limits1060a86Readme: make python setup deps slightly clearer55a94e8Changelog73c1a96Update macos-13 to macos-15-intel (fixes #388)d3beb16Fix up previous commit009f11aRe-suspend trigger_main schedule after all605d765Minor cleanups94b02c1setup/build_native: python < 3.8 compat1f457d4build(deps): bump actions/upload-artifact from 4 to 577f0697build(deps): bump actions/download-artifact from 5 to 68aa2658Fix inclusion of BUILD_LICENSES sub-directoriesc74b8f4Further changelog tweak1c50fb3Changelog markdown rendering fixa3f2a9fmain.yaml/test: install auditwheel only on linuxe26769aPost-release chores, reinstall schedulePDFium commit log
Commits between
7483and7529(latest commit first):c2e74df91Add FPDF_SYSFONTINFO version 2 for per-request font matching99e950ba7Remove CFX_Face::GetRec() callers from CFGAS_FontMgr917797d28Add CFX_Face::HasFaceRec()a3cc2e30eRemove FXFT_Get_Glyph_* macrosce3baac0fRename "pFace" instances to "face"2a230b8e7Fix decoding of JBIG2 files with more than four referred-to segments2de46c603Remove redundant jbig2 test files503710a3dRename "pStreamAcc" instances to "stream_acc"57baefcd1Make Skia corpus tests pass for Mac ARM64 with macOS 155f97789beMake Skia pixel tests pass for Mac ARM64 with macOS 15bcd8f224dTeach suppressor.py about mac_arm and mac_x861861f24aeConsolidate CFX_Face::Open() callers1a275e49aUpdate test corpus revisiondbfa29d16Fix progressive unoptimized decoding of JBIG2 generic region with template 14d3dc1bd8Update some Skia test expectations for Mac ARM64 with macOS 1561b3d09ebFix various pylint warnings in testing/tools/*.pyf2de80031Auto-format testing/tools/*.pya4c4d0ad1Fix reading refine-one symbols in huffman symbol dictionaries using refinementdebf26bdcLimit bitmap memory usage in PDFiumFuzzerHelper450290147Roll third_party/freetype/src/36f917c..fc9cc50(17 commits)c81783ef3Roll third_party/freetype/src/e969f52..36f917c(3 commits)1d67846a1Roll Catapult from67287c8to5b6dfc9(37 revisions)2bf421a5eRoll Depot Tools from3008b57to6f83fce(79 revisions)89bb8a241Roll Code Coverage fromef6864eto9e4876d(1 revision)06df1a295Remove reference to third_party/instrumented_librariesd7fbd2ca8Update test expectations for Mac ARM64 with macOS 15f49889b9cRegenerate jbig2-mmr.in0f689aaa2Rename "iIndex" instances to "index"728097ea0Delete CFX_Face::ClearExternalStream()bebe89931Remove dead code in xfa/fwl/cfwl_notedriver.cpp2fbebb9efEnable new unsafe-buffers diagnostic for PDFium.0ca246f33Fix another CHECK() failure in CXFA_Document::DataMerge_CopyContainer()0b9f84147Rename "pContext" instances to "context" or "ctx"8ace2bfc6Change pdfium_fuzzer_helper.cc to render with different bitmap formatsd83e98eb1Use more spans in pdfium_fuzzer_helper.cc53d474a8eRoll third_party/freetype/src/d3668e0..e969f52(6 commits)5e6ead329[rust png] Makelibpng-dependent targets conditional.dffbe9888Consolidate the determination code for font stylesb3b74b1d1Roll build, third_party/rust, clang, and tools/rustee0ba679aRoll abseil-cpp, buildtools, and libc++bb669b8f8Roll goldctl from93cc2a2to53e5aa3a61bc59beRoll Zlib from85f05b0to5aa6173(1 revision)7f43fd792[rust png] Support using Rust-based PNG codec in XFA implementation.4d80852fdUpdate siso_version to0915813db3687db7Revert "Add debugging data to help diagnose a hang in fread()"e3387c5b1Roll third_party/libc++abi/src/f7f5a32..a02fa00(4 commits)95856f11bRoll third_party/libunwind/src/6dc2f29..14b9dee(10 commits)4cb6688caRoll third_party/llvm-libc/src/dba78cf..006672b(52 commits)a9cd189c6Update reclient_version to re_client_version:0.185.0.db415f21-gomaipab7975e18Roll third_party/icu/1b2e3e8..f27805b(6 commits)526366fa4Roll v8/7f18b53..dd1717b(325 commits)3f8887d82Update gn_version to07d3c6fad29c35beRoll third_party/googletest/src/9df216c..b2b9072(10 commits)797447805Roll third_party/fp16/src/b372061..3d2de18(5 commits)639553c55Roll third_party/skia/479696a..a1ff58d(61 commits; 6 trivial rolls)ded86ac62Roll third_party/clang-format/script/1549a8d..c2725e0(20 commits)5bbc12ff9Roll base/allocator/partition_allocator/e3fec0a..2f4069f(9 commits)d4c2dadd7[rust png] Un-nestProgressiveDecoderIface::Context.b73d6847a[rust png] Stop usingSkXPS...PngHelpers.hfrom PDFium.b4b1cfd4dMove all FT_Load_Glyph calls into CFX_Face for consistency89afb3340Remove dead code: CPWL_Edit::CutText()048a19460Remove dead code: CPWL_Edit::{Copy,Paste}Text()216862ba4[rust png] IntroduceProgressiveDecoder::PngReadMoreData.8f655643d[rust png] Deduplicate cleanup/return logic inPngContinueDecode.b4937e9b4[rust png] Devirtualize all methods ofProgressiveDecoderIface.3077cfa5aRoll libpng fromdc2507eto84d6766(4 revisions)f5c376f93[rust png] Stop using hungarian (dwFoo/pFoo) inReadMoreData.553e531de[rust png] Add explicitPngFinishedDecodingcallback.c890df130[rust png] Remove unusedProgressiveDecoder::src_pass_number_field.e136238ea[rust png] Use new overload ofSkXPS::MakeDocument.d2c50ffd0Roll third_party/skia/89a8bc5..479696a(104 commits; 20 trivial rolls)96a2bccf5[rust png] Removepassparameter fromPngReadHeader.47dbb620e[rust png] AddProgressiveDecoderTestunit test for a simple PNG.dfba959aeUpdate bug IDs in TODOs in testing/SUPPRESSIONS and related test filesfa63d2782Refactor CPDFSDK_PageView::OnKeyDown()4aa3b725cUpgrade libtiff from 4.7.0 to 4.7.1b2e300abaRemove deprecated Skia SkPath API usage82125ddb8[rust png] Decode PNGs directly intodevice_bitmap_.a8cba1c40[rust png]span-ify return type ofPngAskScanlineBuf.c6dac1b25[rust png] Removecomponents_countand "bpc" fromPngReadHeader.4c93f9f22[rust png] Remove obsoletePngDecoderDelegate::DecodedColorType.f0f8a099a[rust png] Checkdevice_bitmap's format is alwayskBgrafor PNGs.9ab3b8992[rust png] Removescanline_size_field.dd778d389[rust png] Deduplicate code into a newGetScanlineSizemethod.923d946a1Add crbug.com links to TODOs in testing/SUPPRESSIONSv5.0.0Compare Source
Changes (Release 5.0.0)
Summary (pypdfium2)
API changes
PdfDocument.render()(see deprecation rationale in v4.25 changelog). Instead, usePdfPage.render()with a loop or process pool.PdfBitmap.get_info()andPdfBitmapInfo, which existed mainly on behalf of data transfer withPdfDocument.render(). Instead, take the info from thePdfBitmapobject directly. (If using an adapter that copies, you may want to store the relevant info in variables to avoid holding a reference to the original buffer.)PdfBitmap.fill_rect(): Changed argument order. Thecolorparameter now goes first.PdfBitmap.to_numpy(): If the bitmap is single-channel (grayscale), use a 2d shape to avoid needlessly wrapping each pixel value in a list.PdfBitmap.from_pil(): Removedrecopyparameter.PdfObject.get_pos()to.get_bounds().PdfImage.get_size()to.get_px_size().PdfImage.extract(): Removedfb_renderoption because it does not fit in this API. If the image's rendered bitmap is desired, use.get_bitmap(render=True)in the first place.PdfDocument.get_toc(): ReplacedPdfOutlineItemnamedtuple with method-oriented wrapper classesPdfBookmarkandPdfDest, so callers may retrieve only the properties they actually need. This is closer to pdfium's original API and exposes the underlying raw objects. Provides signed count as-is rather than splitting inn_kidsandis_closed. Also distinguishes betweendest is Noneand a dest with unknown mode.PdfMatrix.mirror()parametersv, htoinvert_x, invert_y, as the terms horizontal/vertical flip commonly refer to the transformation applied, not the axis around which is being flipped (i.e. the previousvmeant flipping around the Y axis, which is vertical, but the resulting transform is inverting the X coordinates and thus actually horizontal). No behavior change if you did not use keyword arguments.PdfTextPage.get_text_range(): Removed implicit translation of default calls to.get_text_bounded(), as pdfium revertedFPDFText_GetText()to UCS-2, which resolves the allocation concern. However, callers are encouraged to explicitly use.get_text_bounded()for full Unicode support.V_PYPDFIUM2, V_LIBPDFIUM, V_BUILDNAME, V_PDFIUM_IS_V8, V_LIBPDFIUM_FULLin favor ofPYPDFIUM_INFO, PDFIUM_INFO.Improvements and new features
PdfPosConvandPdfBitmap.get_posconv(page)helper for bidirectional translation between page and bitmap coordinates.PdfObject.get_quad_points()to get the corner points of an image or text object.PdfPage.flatten()(previously semi-private_flatten()), after having found out how to correctly use it. Added check and updated docs accordingly.PdfImage.get_bitmap(render=True), addedscale_to_originaloption (defaults to True) to temporarily scale the image to its native pixel size. This should improve output quality and make the API substantially more useful. Thanks to Lei Zhang for the suggestion.PdfDocument, so it can be used in awith-statement, because opening from a file path binds a file descriptor (usually on the C side), which should be released explicitly, given OS limits.err_codeis now assigned to thePdfiumErrorinstance so callers may programmatically handle the error subtype. This addresses {issue}308.PdfPage.render(), added a new optionmaybe_alphato use a pixel format with alpha channel if page content has transparency, as rendering to a non-alpha bitmap is inefficient with PDFium in this case. Therefore, it is recommended to set this option to True if dynamic (page-dependent) pixel format selection is acceptable. Alternatively, you might want to use only BGRA viaforce_bitmap_format=pypdfium2.raw.FPDFBitmap_BGRA(at the cost of occupying more memory compared to BGR).PdfBitmap.new_*()methods, avoid use of.from_raw(), and instead call the constructor directly, as most parameters are already known on the caller side when creating a bitmap.PdfPage.remove_obj()is now aware of objects nested in Form XObjects, and will use the new pdfium APIFPDFFormObj_RemoveObject()in that case. Correspondingly, a.containerattribute has been added toPdfObject, which points to the parent Form XObject, or None if the object is not nested.--invert-lightness --exclude-imagespost-processing options to render with selective lightness inversion. This may be useful to achieve a "dark theme" for light PDFs while preserving different colors, but goes at the cost of performance. (PDFium also provides a color scheme option, but this only allows you to set colors for certain object types, which are then forced on all instances of the type in question. This may flatten different colors into one, leading to a loss of visual information.)bool(ptr)rather thanptr is None.PdfDocument.save(), changed default offlagsfromFPDF_NO_INCREMENTALto0, as suggested by an upstream maintainer.(type * size).from_address(addressof(first_ptr.contents))instead ofcast(first_ptr, POINTER(type * size)).contents). Thanks to Richard Hundt for the bug report, {issue}346. The root issue (ctypes using an unbounded cache in the first place) has been fixed recently in Python3.14. See below for a list of APIs that were affected:_buffer_reader/_buffer_writerunder the hood (PdfDocumentcreated from byte stream input,PdfImage.load_jpeg(),PdfDocument.save()).PdfBitmap.from_raw()rsp.PdfBitmap._get_buffer()and their internal callers (PdfBitmapmakersnew_foreignandnew_foreign_simple,PdfImage.get_bitmap())..from_address(...)instead.ctypes._reset_cache()can work around this issue.Platforms
Android
arm64_v8a,armeabi_v7a,x86_64,x86and iOSarm64device andarm64,x86_64simulators are now handled in setup and should implicitly download the right pdfium-binaries. Provided on a best effort basis, and largely untested. Testers/feedback welcome.arm64_v8aand maybearmeabi_v7awheels, but we do not intend to provide wheels for simulators.)wojiushixiaobaifor providing the initial workflow and helpful pointers.Setup
emplace.pyis run, we now pin the pdfium version by default. This is to prevent possible API breakage when pypdfium2 is installed from source. It should also make thegitdependency optional on default setup.update.pyandcraft.pycontinue to default to the latest pdfium-binaries version.pdfium-binariesnow use GitHub's new "immutable releases" feature and offer GitHub build provenance attestations, for enhanced supply chain safety. Many thanks to Benoit Blanchon and GitHub team. Conversely,update.pynow exposes a--verifyoption to mandate checking the attestation, which is enabled in our release workflow. Otherwise, verification will be automatically enabled if theghdependency is installed.build_native.py). This has been inspired by thelibpdfiumCOPR /libpdfium-nojsAUR recipes. Thanks to the respective packagers for showing how to do this. By default, this will use the GCC compiler, but Clang should also work if you set up some symlinks. As of this writing, both passes on our Ubuntu x84_64/arm64 CI.pdfium-binaries, setup now looks for system/libreoffice pdfium. If this is not available either,build_native.pywill be triggered. This can also be requested explicitly by settingPDFIUM_PLATFORMtofallback,system-searchorbuild-native.PDFIUM_PLATFORM. Added propersystemstaging directory. Refactored integration of caller-provided data files to avoid ambiguity. See the updated Readme for details.sourcebuild.pytobuild_toolchained.py.build_toolchained.py --update, avoid callinggclient revertandgclient sync, because this seems to sync twice, which is slow. Instead, call onlygclient syncwith-D --reset.pdfium-binaries, read the full version from theVERSIONfile embedded in the tarballs. This avoids a potentially expensivegit ls-remotecall to get Chromium tags.GIVEN_FULLVERandIGNORE_FULLVERenv vars to manually set or skip the full version for other targets.LicenseRef-PdfiumThirdPartywithBUILD_LICENSES/directory.PDFIUM_BINDINGS=referenceinto account on sourcebuild as well. Automatically fall back to reference bindings if ctypesgen is not installed (except on CI).PDFIUM_PLATFORM=sourcebuild, forward the platform tag determined bybdist_wheel's wrapper, rather than using the underlyingsysconfig.get_platform()directly. This may provide more accurate results, e.g. on macOS._get_libc_ver(). Instead, call it only on Linux. A negative side effect of calling this unconditionally is that, on non-Linux platforms, an empty string may be returned, in which case the musllinux handler would be reached, which uses non-public API and isn't meant to be called on other platforms (though it seems to have passed).Project
./runfile with ajustfile. Note that the runfile previously did not fail fast and propagate errors, which is potentially dangerous for a release workflow. This had been fixed on the runfile in v5.0.0b1 before introducing the justfile.tests_old/back intotests/..reuse/dep5to more visibleREUSE.toml. Removed non-standard.reuse/dep5-wheel.>6635(effectively>=6638), due to new errchecks.conda/directory, to avoid polluting the main setup code.pypdfium2 commit log
Commits between
5.0.0b2and5.0.0(latest commit first):5ab1b3c[autorelease main] update 5.0.06e2b804workflows/trigger_main.yaml: fix dispatch7beb515Clean up weird inconsistency in PdfPage.get_objects() code814ab5bPdfPage.render() docs: fix an oversight8bfd58eFix windows cross-compilation targets (closes #382)baedbdfAttempt to fix windows sourcebuilde4acf83Comment cleanups6ba3e07Issue template nitsebde88fReadme: add another individual to Thanks section3ae2758build_native: add full explanation for siso.patch casefb47d39text extraction: ack CRLF line breaks081463eupdate.py: tighten import5a85f3eFlatten setupsrc/pypdfium2_setup to just setupsrc/a4caaf5Actually drop the boilerplate and use local importsdaf5ec9boilerplate: avoid bloating sys.pathf43b6b8Further move verification logic to _verify.py14cc046verify: move error handling to caller side683c8ceverify: use authenticated verification if available2a54c74Outsource verification to an own file3e17eddMake verification less likely to fail setup5f0853dReadme nitcca1255update.py: IWYU: json29dd119update.py: accelerate verification of multiple artifactsefd837cTokenless attestation verification5d74436Register post_pdfium pin4312508readme: ack required gh version934264fMigrate fromslsa-verifiertogh attestation verify3a697c2Readme: add wojiushixiaobai to Thanks sectiond93975cbuild(deps): bump actions/setup-python from 5 to 6374ad8bSourcebuild workflow refactoring (#377)dc858fedocs/conf.py: fix code blocks in markdown admonitions76a1f69Cross-compilation instructions & code adaptionsfa08ac4continue on readme7e6ea05readme nitb63376fCorrections around mac deployment target5990c3dUpdate changelog to reflect immutable releases0cb7eb5Various small corrections/improvements5ca822agh_pages: comment outrm -rf .doctrees/aa17444build(deps): bump actions/upload-pages-artifact from 3 to 492f304dbuild(deps): bump actions/checkout from 4 to 583d3d03Addarsymlink to Readme as well5576d6creadme: update cibuildwheel sectionddd168ecibuildwheel mac/windows (#375)4d5f58bbuild_toolchained: bump mac_deployment_target to 11b1c9709sourcebuild-native: add patch for musllinux ppc64le1df9569Add missing emulated specifiers for s390x and ppc64lee48e3f0cibw: change SPDX infobfefa3bcibw-one: improve job named0eb525cibw-one: fix workflow_dispatch block5523e0bcibuildwheel, continued (#374)f5c1e8bbuild(deps): bump actions/checkout from 4 to 547da6dacibuildwheel-related work (#369)9701b0ebuild(deps): bump actions/download-artifact from 4 to 55d4f312conda.yaml: try to unify "Build package" step8a339a5workflows: prefer env vars over templates in commands573d630readme: comment out badgefbd8f3bRefactor lazy imports implementation3569fb6Rename use_bgra_on_transparency to maybe_alpha5d574a3build_native nitsa8be9cfreadme: add nv-ingest to popular dependentsc59411bdocs/conf.py: actually comment out rst_prolog entirely29138c0readme/dev: add missing push step07bc3a9docs/conf.py: ignore changelog on beta release46cd411docs/conf.py: fix nasty or-expression blunder622e10eReinstate conda_raw release schedulePDFium commit log
Commits between
7323and7483(latest commit first):7a0db5a38Add a script for converting pdf files to .in formateaebc130dFix undo/redo when typing over selected texte0b782b23Test all of the cases of typing into an edit box564cdec37[rust png] UseSkDynamicMemoryWStream::detachAsVectormethod.b377bab56Roll build, clang, and rust536f60ee2Roll third_party/skia/57866d8..89a8bc5(76 commits; 12 trivial rolls)f219a975cIgnore cmd+tab shortcuts in FORM_OnKeyDownd22ddc087Don't block edit shortcuts in CXFA_FFField::OnKeyDownb53313721Don't block edit shortcuts in CPWL_Edit::OnKeyDown6334ac2f5Test edit shortcut handling in FORM_OnKeyDown()90a5b27be[rust png] Replacesrc_color_typewithcomponents_count.532da19dcRenamebpctobits_per_component(also renamecomponents).d24f1d804MaConfiguration
📅 Schedule: Branch creation - "every weekend" in timezone US/Eastern, Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.