Open-source
- Chocolatey
- OpenShell (successor of ClassicShell)
- Clink
- Notepad++
- 7zip
- Rufus
- AutoHotkey
- KeePass [^mono]
Open-source
# SPDX-FileCopyrightText: 2024 geisserml <geisserml@gmail.com> | |
# SPDX-License-Identifier: MPL-2.0 | |
from string import ascii_uppercase as ALPHABET | |
N_CHARS, ORD_A = 26, 65 # len(ALPHABET), ord("A") | |
def idx_to_label(i): | |
count, remainder = divmod(i, N_CHARS) | |
char = ALPHABET[remainder] # chr(remainder + ORD_A) |
# SPDX-FileCopyrightText: 2024 geisserml <geisserml@gmail.com> | |
# SPDX-License-Identifier: Apache-2.0 OR BSD-3-Clause OR MPL-2.0 | |
import sys | |
import importlib.util | |
def v1_deferred_import(modpath): | |
# FIXME If modpath points to a submodule (e.g. PIL.Image), the parent module will be loaded immediately when this function is called. What's more, non-deferred imports of the submodule will break. This seems to be a nasty limitation of the importlib APIs used here. | |
# SPDX-FileCopyrightText: 2024 geisserml <geisserml@gmail.com> | |
# SPDX-FileCopyrightText: 2024 James R. Barlow <james@purplerock.ca> | |
# SPDX-License-Identifier: MPL-2.0 | |
# Initial code derived from ocrmypdf/_exec/ghostscript.py | |
# Note that Ghostscript is AGPL-licensed. However, we are calling it via subprocess here, so not sure whether copyleft would actually apply. | |
# See also https://www.gnu.org/licenses/gpl-faq.en.html#MereAggregation | |
import io | |
import os |
# SPDX-FileCopyrightText: 2024 geisserml <geisserml@gmail.com> | |
# SPDX-License-Identifier: MPL-2.0 | |
# Note that (py)mupdf is AGPL-licensed, so this code is altogether affected by copyleft | |
import PIL.Image | |
import fitz as pymupdf | |
def invoke_pymupdf(filepath, index, scale=4, rotation=0, password=None): |
# SPDX-FileCopyrightText: 2024 geisserml <geisserml@gmail.com> | |
# SPDX-License-Identifier: MPL-2.0 | |
# Note that Poppler is GPL-licensed, so this code is altogether affected by copyleft | |
import io | |
import PIL.Image | |
from popplerqt5 import Poppler | |
from PyQt5.QtCore import QByteArray, QBuffer |
# SPDX-FileCopyrightText: 2024 geisserml <geisserml@gmail.com> | |
# SPDX-License-Identifier: MPL-2.0 | |
# Note that Poppler is GPL-licensed, so this code is altogether affected by copyleft | |
import PIL.Image | |
import poppler # python-poppler | |
from poppler.cpp.page_renderer import render_hint | |
def _translate_rotation(rotation): |
# SPDX-FileCopyrightText: 2024 geisserml <geisserml@gmail.com> | |
# SPDX-License-Identifier: MPL-2.0 | |
# Note that Poppler is GPL-licensed, so this code is altogether affected by copyleft | |
import math | |
from pathlib import Path | |
import PIL.Image | |
import cairo | |
import gi |
# SPDX-FileCopyrightText: 2024 geisserml <geisserml@gmail.com> | |
# SPDX-License-Identifier: MPL-2.0 | |
# Sophisticated parser for a page number spec mini-language | |
# Technically, this might be a use case for some parser generator like pyparsing or PLY, but this is a manual implementation based on common string operations. | |
__all__ = ["parse_pagenums"] | |
import re | |
import logging |
# SPDX-FileCopyrightText: 2024 geisserml <geisserml@gmail.com> | |
# SPDX-License-Identifier: Apache-2.0 OR BSD-3-Clause | |
import sys | |
import argparse | |
if sys.version_info >= (3, 9): | |
from argparse import BooleanOptionalAction | |
else: |