From ebc6f671972507fd046a56bc3c1d427451ad6155 Mon Sep 17 00:00:00 2001 From: Kieran W <41634689+FredHappyface@users.noreply.github.com> Date: Sun, 16 Feb 2025 13:20:15 +0000 Subject: [PATCH] update pre-commit to work with safety --- .gitignore | 4 +- .pre-commit-config.yaml | 38 +++++-- documentation/reference/README.md | 2 +- documentation/reference/tstickers/cli.md | 15 +-- documentation/reference/tstickers/convert.md | 31 +----- documentation/reference/tstickers/index.md | 2 +- .../tstickers/{downloader.md => manager.md} | 101 ++++++++++-------- pyproject.toml | 1 + requirements.txt | 28 +++-- 9 files changed, 115 insertions(+), 107 deletions(-) rename documentation/reference/tstickers/{downloader.md => manager.md} (56%) diff --git a/.gitignore b/.gitignore index 220fcd7..00fb18e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,12 @@ downloads/ env* -requirements_optional.txt tests/data sticker*.txt sorted perf.py /*.tgs -/test_* -poetry.lock +uv.lock # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0d1fe2b..ed6ae7d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,24 +1,46 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.3.3 + rev: v0.9.6 hooks: - id: ruff args: [ --fix ] - id: ruff-format - repo: https://github.com/RobertCraigie/pyright-python - rev: v1.1.354 + rev: v1.1.394 hooks: - id: pyright - - repo: https://github.com/Lucas-C/pre-commit-hooks-safety - rev: v1.3.3 + - repo: local hooks: - - id: python-safety-dependencies-check - files: pyproject.toml + - id: generate requirements + name: generate requirements + entry: uv export --no-hashes --no-dev -o requirements.txt + language: system + pass_filenames: false + - id: safety + name: safety + entry: uv run safety + language: system + pass_filenames: false + - id: make docs + name: make docs + entry: uv run handsdown --cleanup -o documentation/reference + language: system + pass_filenames: false + - id: build package + name: build package + entry: uv build + language: system + pass_filenames: false + - id: pytest + name: pytest + entry: uv run pytest + language: system + pass_filenames: false - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.5.0 + rev: v5.0.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer @@ -35,7 +57,7 @@ repos: - id: mixed-line-ending - repo: https://github.com/boidolr/pre-commit-images - rev: v1.5.2 + rev: v1.8.4 hooks: - id: optimize-jpg - id: optimize-png diff --git a/documentation/reference/README.md b/documentation/reference/README.md index ae2e320..7a9ecea 100644 --- a/documentation/reference/README.md +++ b/documentation/reference/README.md @@ -11,4 +11,4 @@ A full list of `Tstickers` project modules. - [Convert](tstickers/convert.md#convert) - [Convert Pyrlottie](tstickers/convert_pyrlottie.md#convert-pyrlottie) - [Convert Rlottie Python](tstickers/convert_rlottie_python.md#convert-rlottie-python) - - [Downloader](tstickers/downloader.md#downloader) + - [Manager](tstickers/manager.md#manager) diff --git a/documentation/reference/tstickers/cli.md b/documentation/reference/tstickers/cli.md index 79b2efa..de330e2 100644 --- a/documentation/reference/tstickers/cli.md +++ b/documentation/reference/tstickers/cli.md @@ -6,11 +6,10 @@ - [Cli](#cli) - [cli](#cli) - - [is_library_installed](#is_library_installed) ## cli -[Show source in cli.py:22](../../../tstickers/cli.py#L22) +[Show source in cli.py:18](../../../tstickers/cli.py#L18) Cli entry point. @@ -18,16 +17,4 @@ Cli entry point. ```python def cli() -> None: ... -``` - - - -## is_library_installed - -[Show source in cli.py:18](../../../tstickers/cli.py#L18) - -#### Signature - -```python -def is_library_installed(library_name: str) -> bool: ... ``` \ No newline at end of file diff --git a/documentation/reference/tstickers/convert.md b/documentation/reference/tstickers/convert.md index ea88124..fd73ac7 100644 --- a/documentation/reference/tstickers/convert.md +++ b/documentation/reference/tstickers/convert.md @@ -6,7 +6,6 @@ - [Convert](#convert) - [Backend](#backend) - - [assure_dir_exists](#assure_dir_exists) - [convertAnimated](#convertanimated) - [convertAnimatedFunc](#convertanimatedfunc) - [convertStatic](#convertstatic) @@ -26,33 +25,9 @@ class Backend(IntEnum): ... -## assure_dir_exists - -[Show source in convert.py:38](../../../tstickers/convert.py#L38) - -Make the directory if it does not exist. - -#### Arguments - ----- - - `parts` *Path* - path parts - -#### Returns - -------- - - `Path` - the full path - -#### Signature - -```python -def assure_dir_exists(*parts: Path | str) -> Path: ... -``` - - - ## convertAnimated -[Show source in convert.py:106](../../../tstickers/convert.py#L106) +[Show source in convert.py:90](../../../tstickers/convert.py#L90) Convert animated stickers to webp, gif and png. @@ -110,7 +85,7 @@ def convertAnimatedFunc( ## convertStatic -[Show source in convert.py:75](../../../tstickers/convert.py#L75) +[Show source in convert.py:58](../../../tstickers/convert.py#L58) Convert static stickers to png and gif. @@ -135,7 +110,7 @@ def convertStatic(swd: Path, threads: int = 4) -> int: ... ## convertWithPIL -[Show source in convert.py:55](../../../tstickers/convert.py#L55) +[Show source in convert.py:38](../../../tstickers/convert.py#L38) Convert the webp file to png. diff --git a/documentation/reference/tstickers/index.md b/documentation/reference/tstickers/index.md index 7ed33ad..cb29f28 100644 --- a/documentation/reference/tstickers/index.md +++ b/documentation/reference/tstickers/index.md @@ -15,4 +15,4 @@ - [Convert](./convert.md) - [Convert Pyrlottie](./convert_pyrlottie.md) - [Convert Rlottie Python](./convert_rlottie_python.md) -- [Downloader](./downloader.md) \ No newline at end of file +- [Manager](./manager.md) \ No newline at end of file diff --git a/documentation/reference/tstickers/downloader.md b/documentation/reference/tstickers/manager.md similarity index 56% rename from documentation/reference/tstickers/downloader.md rename to documentation/reference/tstickers/manager.md index e628ca8..f715fa6 100644 --- a/documentation/reference/tstickers/downloader.md +++ b/documentation/reference/tstickers/manager.md @@ -1,43 +1,54 @@ -# Downloader +# Manager -[Tstickers Index](../README.md#tstickers-index) / [Tstickers](./index.md#tstickers) / Downloader +[Tstickers Index](../README.md#tstickers-index) / [Tstickers](./index.md#tstickers) / Manager -> Auto-generated documentation for [tstickers.downloader](../../../tstickers/downloader.py) module. +> Auto-generated documentation for [tstickers.manager](../../../tstickers/manager.py) module. -- [Downloader](#downloader) +- [Manager](#manager) - [Sticker](#sticker) + - [Sticker().__repr__](#sticker()__repr__) - [Sticker().emojiName](#sticker()emojiname) - - [StickerDownloader](#stickerdownloader) - - [StickerDownloader().convertPack](#stickerdownloader()convertpack) - - [StickerDownloader().doAPIReq](#stickerdownloader()doapireq) - - [StickerDownloader().downloadPack](#stickerdownloader()downloadpack) - - [StickerDownloader().downloadSticker](#stickerdownloader()downloadsticker) - - [StickerDownloader().getPack](#stickerdownloader()getpack) - - [StickerDownloader().getSticker](#stickerdownloader()getsticker) + - [StickerManager](#stickermanager) + - [StickerManager().convertPack](#stickermanager()convertpack) + - [StickerManager().doAPIReq](#stickermanager()doapireq) + - [StickerManager().downloadPack](#stickermanager()downloadpack) + - [StickerManager().downloadSticker](#stickermanager()downloadsticker) + - [StickerManager().getPack](#stickermanager()getpack) + - [StickerManager().getSticker](#stickermanager()getsticker) - [demojize](#demojize) ## Sticker -[Show source in downloader.py:54](../../../tstickers/downloader.py#L54) +[Show source in manager.py:56](../../../tstickers/manager.py#L56) Sticker instance attributes. #### Signature ```python -class Sticker: - def __init__( - self, - name: str = "None", - link: str = "None", - emoji: str = "😀", - fileType: str = "webp", - ) -> None: ... +class Sticker: ... +``` + +### Sticker().__repr__ + +[Show source in manager.py:64](../../../tstickers/manager.py#L64) + +Get Sticker representation in the form . + +#### Returns + +Type: *str* +representation + +#### Signature + +```python +def __repr__(self) -> str: ... ``` ### Sticker().emojiName -[Show source in downloader.py:72](../../../tstickers/downloader.py#L72) +[Show source in manager.py:71](../../../tstickers/manager.py#L71) Get the emoji as a string. @@ -49,27 +60,24 @@ def emojiName(self) -> str: ... -## StickerDownloader +## StickerManager -[Show source in downloader.py:77](../../../tstickers/downloader.py#L77) +[Show source in manager.py:76](../../../tstickers/manager.py#L76) -The StickerDownloader sets up the api and makes requests. +The StickerManager sets up the api and makes requests. #### Signature ```python -class StickerDownloader: +class StickerManager: def __init__( - self, - token: str, - session: caching.CachedSession | None = None, - multithreading: int = 4, + self, token: str, session: caching.CachedSession | None = None, threads: int = 4 ) -> None: ... ``` -### StickerDownloader().convertPack +### StickerManager().convertPack -[Show source in downloader.py:239](../../../tstickers/downloader.py#L239) +[Show source in manager.py:256](../../../tstickers/manager.py#L256) Convert the webp to gif and png; tgs to gif, webp (webp_animated) and png. @@ -82,6 +90,7 @@ Convert the webp to gif and png; tgs to gif, webp (webp_animated) and png. - `scale` *float, optional* - upscale/ downscale the images produced. Intended for optimisation with a quality trade-off. Defaults to 1. - `noCache` *bool, optional* - set to true to disable cache. Defaults to False. + - `backend` *Backend* - select the backend to use to convert animated stickers #### Signature @@ -100,9 +109,9 @@ def convertPack( - [Backend](./convert.md#backend) -### StickerDownloader().doAPIReq +### StickerManager().doAPIReq -[Show source in downloader.py:98](../../../tstickers/downloader.py#L98) +[Show source in manager.py:107](../../../tstickers/manager.py#L107) Use the telegram api. @@ -128,16 +137,16 @@ Use the telegram api. def doAPIReq(self, function: str, params: dict[Any, Any]) -> dict[Any, Any] | None: ... ``` -### StickerDownloader().downloadPack +### StickerManager().downloadPack -[Show source in downloader.py:201](../../../tstickers/downloader.py#L201) +[Show source in manager.py:210](../../../tstickers/manager.py#L210) Download a sticker pack. #### Arguments ---- - pack (dict[str, Any]): dictionary representing a sticker pack + - `packName` *str* - name of the pack #### Returns @@ -147,12 +156,12 @@ Download a sticker pack. #### Signature ```python -def downloadPack(self, pack: dict[str, Any]) -> bool: ... +def downloadPack(self, packName: str) -> bool: ... ``` -### StickerDownloader().downloadSticker +### StickerManager().downloadSticker -[Show source in downloader.py:186](../../../tstickers/downloader.py#L186) +[Show source in manager.py:195](../../../tstickers/manager.py#L195) Download a sticker from the server. @@ -173,9 +182,9 @@ Download a sticker from the server. def downloadSticker(self, path: Path, link: str) -> int: ... ``` -### StickerDownloader().getPack +### StickerManager().getPack -[Show source in downloader.py:152](../../../tstickers/downloader.py#L152) +[Show source in manager.py:161](../../../tstickers/manager.py#L161) Get a list of File objects. @@ -195,16 +204,16 @@ Get a list of File objects. def getPack(self, packName: str) -> dict[str, Any] | None: ... ``` -### StickerDownloader().getSticker +### StickerManager().getSticker -[Show source in downloader.py:129](../../../tstickers/downloader.py#L129) +[Show source in manager.py:138](../../../tstickers/manager.py#L138) Get sticker info from the server. #### Arguments ---- - fileData (dict[Any, Any]): sticker id + fileData (dict[str, Any]): sticker id #### Returns @@ -214,7 +223,7 @@ Get sticker info from the server. #### Signature ```python -def getSticker(self, fileData: dict[Any, Any]) -> Sticker: ... +def getSticker(self, fileData: dict[str, Any]) -> Sticker: ... ``` #### See also @@ -225,7 +234,7 @@ def getSticker(self, fileData: dict[Any, Any]) -> Sticker: ... ## demojize -[Show source in downloader.py:21](../../../tstickers/downloader.py#L21) +[Show source in manager.py:22](../../../tstickers/manager.py#L22) Similar to the emoji.demojize function. diff --git a/pyproject.toml b/pyproject.toml index fc79f60..455e9be 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -44,6 +44,7 @@ dev = [ "pyright>=1.1.394", "pytest>=8.3.4", "ruff>=0.9.6", + "safety>=3.3.0", ] [tool.ruff] diff --git a/requirements.txt b/requirements.txt index b432a99..b3455e6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,22 @@ -Pillow<11,>=10.4.0 -emoji<3,>=2.12.1 -loguru<2,>=0.7.2 -pyrlottie<2026,>=2024.0.1 -requests-cache<2,>=1.2.1 -requests<3,>=2.32.3 +# This file was autogenerated by uv via the following command: +# uv export --no-hashes --no-dev -o requirements.txt +-e . +attrs==23.2.0 +cattrs==24.1.2 +certifi==2025.1.31 +charset-normalizer==3.4.1 +colorama==0.4.6 ; sys_platform == 'win32' +emoji==2.14.1 +exceptiongroup==1.2.2 ; python_full_version < '3.11' +idna==3.10 +loguru==0.7.3 +pillow==10.4.0 +platformdirs==4.3.6 +requests==2.32.3 +requests-cache==1.2.1 +rlottie-python==1.3.6 +six==1.17.0 +typing-extensions==4.12.2 ; python_full_version < '3.11' +url-normalize==1.4.3 +urllib3==2.3.0 +win32-setctime==1.2.0 ; sys_platform == 'win32'